diff --git a/Changelog.yaml b/Changelog.yaml index ce27e16aa8..a08418e15c 100644 --- a/Changelog.yaml +++ b/Changelog.yaml @@ -4,6 +4,64 @@ # for important features/bug fixes. # Also, each release can have new and improved recipes. +- version: 0.7.14 + date: 2010-08-13 + + new features: + - title: "Device drivers for the: Teclast K-5, Samsung SNE-60 and Samsung i7500" + + - title: "When showing cover browser in a separate window, remember the last used window size" + + - title: "Add keyboard shortcuts to show/hide the Tag Browser, Book details and Cover Browser panels. Hover your mouse over the buttons that toggle them to see the shortcuts." + + - title: "Calibre library: When the case of title or author is changed, automatically rename the folders to reflect the new case, even on case insensitive filesystems" + + - title: "Metadata download: If downloaded title or author is all upper case, automatically fix the case" + + - title: "Add method to add books by ISBN. Click the arrow next to Add Books to add from a list of ISBNs." + tickets: [6327] + + - title: "Allow editing of tweaks via Preferences->Advanced" + + - title: "Add button to the manage authors dialog to automatically reset all author sort values" + + bug fixes: + - title: "Fix regression in 0.7.13 that broke changing libraries" + + - title: "MOBI Output: When processing an input document that specifies non-existant files in the OPF guide, don't crash." + tickets: [6490] + + - title: "E-book viewer: When opening consecutive documents in the same viewer, show the correct title in the titlebar" + + - title: "Set screen size to 540x718 in Kobo output profile" + + - title: "Dont allow calibredb to create custom columns with invalid labels." + tickets: [6487] + + - title: "Fix preference to 'search as you type' not working" + + - title: "iTunes driver: Fixed bug in PDF file name searching after adding to iTunes database (Windows only)" + + - title: "Displaying HTML comments: Do not start a new paragraph at the period in words like Ph.D" + tickets: [6462] + + - title: "Respect restriction in effect when refreshing book list" + + - title: "Fix drives being reversed for softrooted nook" + + + new recipes: + - title: "Yahoo News, Skeptical Enquirer and Skeptic" + author: Startson17 + + - title: "Bolivian newspapers" + author: Darko Miletic + + improved recipes: + - Esquire + - Big Oven + - NSPM + - version: 0.7.13 date: 2010-08-06 diff --git a/resources/images/news/futurismic.png b/resources/images/news/futurismic.png new file mode 100644 index 0000000000..1f5870e847 Binary files /dev/null and b/resources/images/news/futurismic.png differ diff --git a/resources/recipes/elpais_impreso.recipe b/resources/recipes/elpais_impreso.recipe index b30db0707a..bba3bda217 100644 --- a/resources/recipes/elpais_impreso.recipe +++ b/resources/recipes/elpais_impreso.recipe @@ -9,9 +9,9 @@ from calibre import strftime from calibre.web.feeds.news import BasicNewsRecipe class ElPaisImpresa(BasicNewsRecipe): - title = 'El País - edicion impresa' + title = u'El Pa\xeds - edicion impresa' __author__ = 'Darko Miletic' - description = 'el periodico global en Español' + description = u'el periodico global en Espa\xf1ol' publisher = 'EDICIONES EL PAIS, S.L.' category = 'news, politics,Spain,actualidad,noticias,informacion,videos,fotografias,audios,graficos,nacional,internacional,deportes,economia,tecnologia,cultura,gente,television,sociedad,opinion,blogs,foros,chats,encuestas,entrevistas,participacion' no_stylesheets = True @@ -32,10 +32,10 @@ class ElPaisImpresa(BasicNewsRecipe): feeds = [ (u'Internacional' , index + u'internacional/' ) - ,(u'España' , index + u'espana/' ) + ,(u'Espa\xf1a' , index + u'espana/' ) ,(u'Economia' , index + u'economia/' ) ,(u'Opinion' , index + u'opinion/' ) - ,(u'Viñetas' , index + u'vineta/' ) + ,(u'Vi\xf1etas' , index + u'vineta/' ) ,(u'Sociedad' , index + u'sociedad/' ) ,(u'Cultura' , index + u'cultura/' ) ,(u'Tendencias' , index + u'tendencias/' ) diff --git a/resources/recipes/esquire.recipe b/resources/recipes/esquire.recipe index d9c189b473..f559f5a6cf 100644 --- a/resources/recipes/esquire.recipe +++ b/resources/recipes/esquire.recipe @@ -5,7 +5,6 @@ __copyright__ = '2009-2010, Darko Miletic ' www.esquire.com ''' -from calibre import strftime from calibre.web.feeds.news import BasicNewsRecipe class Esquire(BasicNewsRecipe): @@ -20,8 +19,8 @@ class Esquire(BasicNewsRecipe): encoding = 'cp1250' use_embedded_content = False language = 'en' - publication_type = 'magazine' - masthead_url = 'http://www.esquire.com/cm/shared/site_images/print_this/esquire_logo.gif' + publication_type = 'magazine' + masthead_url = 'http://www.esquire.com/cm/shared/site_images/print_this/esquire_logo.gif' conversion_options = { 'comment' : description @@ -33,7 +32,7 @@ class Esquire(BasicNewsRecipe): keep_only_tags = [dict(name='div', attrs={'id':['article_header','article_content']})] remove_tags = [dict(name=['object','link','embed','iframe','base'])] remove_attributes = ['width','height'] - + feeds = [ (u'Style' , u'http://www.esquire.com/style/rss/' ) ,(u'Women' , u'http://www.esquire.com/women/rss/' ) diff --git a/resources/recipes/futurismic.recipe b/resources/recipes/futurismic.recipe new file mode 100644 index 0000000000..e02d2c280b --- /dev/null +++ b/resources/recipes/futurismic.recipe @@ -0,0 +1,38 @@ + +__license__ = 'GPL v3' +__copyright__ = '2010, Darko Miletic ' +''' +futurismic.com +''' + +from calibre.web.feeds.news import BasicNewsRecipe + +class Futurismic(BasicNewsRecipe): + title = 'Futurismic' + __author__ = 'Darko Miletic' + description = 'Near-future science fiction and fact since 2001' + oldest_article = 15 + max_articles_per_feed = 100 + language = 'en' + encoding = 'utf-8' + no_stylesheets = True + use_embedded_content = False + publication_type = 'blog' + extra_css = ' body{font-family: Arial,Verdana,sans-serif} ' + + conversion_options = { + 'comment' : description + , 'tags' : 'blog, sf' + , 'publisher': 'Futurismic' + , 'language' : language + } + + remove_attributes = ['width','height'] + keep_only_tags = [dict(attrs={'class':['post','commentlist']})] + remove_tags = [dict(attrs={'class':['sociable','feedback','tagwords']})] + feeds = [(u'Posts', u'http://feeds2.feedburner.com/futurismic_feed')] + + def preprocess_html(self, soup): + return self.adeify_images(soup) + + diff --git a/resources/recipes/go_comics.recipe b/resources/recipes/go_comics.recipe new file mode 100644 index 0000000000..b98b628942 --- /dev/null +++ b/resources/recipes/go_comics.recipe @@ -0,0 +1,348 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' +__copyright__ = 'Copyright 2010 Starson17' +''' +www.gocomics.com +''' +from calibre.web.feeds.news import BasicNewsRecipe +import mechanize + +class GoComics(BasicNewsRecipe): + title = 'GoComics' + __author__ = 'Starson17' + __version__ = '1.02' + __date__ = '14 August 2010' + description = u'200+ Comics - Customize for more days/comics: Defaults to 7 days, 25 comics - 20 general, 5 editorial.' + category = 'news, comics' + language = 'en' + use_embedded_content= False + no_stylesheets = True + remove_javascript = True + cover_url = 'http://paulbuckley14059.files.wordpress.com/2008/06/calvin-and-hobbes.jpg' + + ####### USER PREFERENCES - COMICS, IMAGE SIZE AND NUMBER OF COMICS TO RETRIEVE ######## + # num_comics_to_get - I've tried up to 99 on Calvin&Hobbes + num_comics_to_get = 7 + # comic_size 300 is small, 600 is medium, 900 is large, 1500 is extra-large + comic_size = 900 + # CHOOSE COMIC STRIPS BELOW - REMOVE COMMENT '# ' FROM IN FRONT OF DESIRED STRIPS + # Please do not overload their servers by selecting all comics and 1000 strips from each! + + conversion_options = {'linearize_tables' : True + , 'comment' : description + , 'tags' : category + , 'language' : language + } + + keep_only_tags = [dict(name='div', attrs={'class':['feature','banner']}), + ] + + remove_tags = [dict(name='a', attrs={'class':['beginning','prev','cal','next','newest']}), + dict(name='div', attrs={'class':['tag-wrapper']}), + dict(name='ul', attrs={'class':['share-nav','feature-nav']}), + ] + + def get_browser(self): + br = BasicNewsRecipe.get_browser(self) + cookies = mechanize.CookieJar() + br = mechanize.build_opener(mechanize.HTTPCookieProcessor(cookies)) + br.addheaders = [('Referer','http://www.gocomics.com/')] + return br + + def parse_index(self): + feeds = [] + for title, url in [ + ######## COMICS - GENERAL ######## + (u"2 Cows and a Chicken", u"http://www.gocomics.com/2cowsandachicken"), + # (u"9 to 5", u"http://www.gocomics.com/9to5"), + # (u"The Academia Waltz", u"http://www.gocomics.com/academiawaltz"), + # (u"Adam@Home", u"http://www.gocomics.com/adamathome"), + # (u"Agnes", u"http://www.gocomics.com/agnes"), + # (u"Andy Capp", u"http://www.gocomics.com/andycapp"), + # (u"Animal Crackers", u"http://www.gocomics.com/animalcrackers"), + # (u"Annie", u"http://www.gocomics.com/annie"), + (u"The Argyle Sweater", u"http://www.gocomics.com/theargylesweater"), + # (u"Ask Shagg", u"http://www.gocomics.com/askshagg"), + (u"B.C.", u"http://www.gocomics.com/bc"), + # (u"Back in the Day", u"http://www.gocomics.com/backintheday"), + # (u"Bad Reporter", u"http://www.gocomics.com/badreporter"), + # (u"Baldo", u"http://www.gocomics.com/baldo"), + # (u"Ballard Street", u"http://www.gocomics.com/ballardstreet"), + # (u"Barkeater Lake", u"http://www.gocomics.com/barkeaterlake"), + # (u"The Barn", u"http://www.gocomics.com/thebarn"), + # (u"Basic Instructions", u"http://www.gocomics.com/basicinstructions"), + # (u"Bewley", u"http://www.gocomics.com/bewley"), + # (u"Big Top", u"http://www.gocomics.com/bigtop"), + # (u"Biographic", u"http://www.gocomics.com/biographic"), + (u"Birdbrains", u"http://www.gocomics.com/birdbrains"), + # (u"Bleeker: The Rechargeable Dog", u"http://www.gocomics.com/bleeker"), + # (u"Bliss", u"http://www.gocomics.com/bliss"), + (u"Bloom County", u"http://www.gocomics.com/bloomcounty"), + # (u"Bo Nanas", u"http://www.gocomics.com/bonanas"), + # (u"Bob the Squirrel", u"http://www.gocomics.com/bobthesquirrel"), + # (u"The Boiling Point", u"http://www.gocomics.com/theboilingpoint"), + # (u"Boomerangs", u"http://www.gocomics.com/boomerangs"), + # (u"The Boondocks", u"http://www.gocomics.com/boondocks"), + # (u"Bottomliners", u"http://www.gocomics.com/bottomliners"), + # (u"Bound and Gagged", u"http://www.gocomics.com/boundandgagged"), + # (u"Brainwaves", u"http://www.gocomics.com/brainwaves"), + # (u"Brenda Starr", u"http://www.gocomics.com/brendastarr"), + # (u"Brewster Rockit", u"http://www.gocomics.com/brewsterrockit"), + # (u"Broom Hilda", u"http://www.gocomics.com/broomhilda"), + (u"Calvin and Hobbes", u"http://www.gocomics.com/calvinandhobbes"), + # (u"Candorville", u"http://www.gocomics.com/candorville"), + # (u"Cathy", u"http://www.gocomics.com/cathy"), + # (u"C'est la Vie", u"http://www.gocomics.com/cestlavie"), + # (u"Chuckle Bros", u"http://www.gocomics.com/chucklebros"), + # (u"Citizen Dog", u"http://www.gocomics.com/citizendog"), + # (u"The City", u"http://www.gocomics.com/thecity"), + # (u"Cleats", u"http://www.gocomics.com/cleats"), + # (u"Close to Home", u"http://www.gocomics.com/closetohome"), + # (u"Compu-toon", u"http://www.gocomics.com/compu-toon"), + # (u"Cornered", u"http://www.gocomics.com/cornered"), + (u"Cul de Sac", u"http://www.gocomics.com/culdesac"), + # (u"Daddy's Home", u"http://www.gocomics.com/daddyshome"), + # (u"Deep Cover", u"http://www.gocomics.com/deepcover"), + # (u"Dick Tracy", u"http://www.gocomics.com/dicktracy"), + # (u"The Dinette Set", u"http://www.gocomics.com/dinetteset"), + # (u"Dog Eat Doug", u"http://www.gocomics.com/dogeatdoug"), + # (u"Domestic Abuse", u"http://www.gocomics.com/domesticabuse"), + # (u"Doodles", u"http://www.gocomics.com/doodles"), + (u"Doonesbury", u"http://www.gocomics.com/doonesbury"), + # (u"The Doozies", u"http://www.gocomics.com/thedoozies"), + # (u"The Duplex", u"http://www.gocomics.com/duplex"), + # (u"Eek!", u"http://www.gocomics.com/eek"), + # (u"The Elderberries", u"http://www.gocomics.com/theelderberries"), + # (u"Flight Deck", u"http://www.gocomics.com/flightdeck"), + # (u"Flo and Friends", u"http://www.gocomics.com/floandfriends"), + # (u"The Flying McCoys", u"http://www.gocomics.com/theflyingmccoys"), + (u"For Better or For Worse", u"http://www.gocomics.com/forbetterorforworse"), + # (u"For Heaven's Sake", u"http://www.gocomics.com/forheavenssake"), + # (u"Fort Knox", u"http://www.gocomics.com/fortknox"), + # (u"FoxTrot", u"http://www.gocomics.com/foxtrot"), + (u"FoxTrot Classics", u"http://www.gocomics.com/foxtrotclassics"), + # (u"Frank & Ernest", u"http://www.gocomics.com/frankandernest"), + # (u"Fred Basset", u"http://www.gocomics.com/fredbasset"), + # (u"Free Range", u"http://www.gocomics.com/freerange"), + # (u"Frog Applause", u"http://www.gocomics.com/frogapplause"), + # (u"The Fusco Brothers", u"http://www.gocomics.com/thefuscobrothers"), + (u"Garfield", u"http://www.gocomics.com/garfield"), + # (u"Garfield Minus Garfield", u"http://www.gocomics.com/garfieldminusgarfield"), + # (u"Gasoline Alley", u"http://www.gocomics.com/gasolinealley"), + # (u"Gil Thorp", u"http://www.gocomics.com/gilthorp"), + # (u"Ginger Meggs", u"http://www.gocomics.com/gingermeggs"), + # (u"Girls & Sports", u"http://www.gocomics.com/girlsandsports"), + # (u"Haiku Ewe", u"http://www.gocomics.com/haikuewe"), + # (u"Heart of the City", u"http://www.gocomics.com/heartofthecity"), + # (u"Heathcliff", u"http://www.gocomics.com/heathcliff"), + # (u"Herb and Jamaal", u"http://www.gocomics.com/herbandjamaal"), + # (u"Home and Away", u"http://www.gocomics.com/homeandaway"), + # (u"Housebroken", u"http://www.gocomics.com/housebroken"), + # (u"Hubert and Abby", u"http://www.gocomics.com/hubertandabby"), + # (u"Imagine This", u"http://www.gocomics.com/imaginethis"), + # (u"In the Bleachers", u"http://www.gocomics.com/inthebleachers"), + # (u"In the Sticks", u"http://www.gocomics.com/inthesticks"), + # (u"Ink Pen", u"http://www.gocomics.com/inkpen"), + # (u"It's All About You", u"http://www.gocomics.com/itsallaboutyou"), + # (u"Joe Vanilla", u"http://www.gocomics.com/joevanilla"), + # (u"La Cucaracha", u"http://www.gocomics.com/lacucaracha"), + # (u"Last Kiss", u"http://www.gocomics.com/lastkiss"), + # (u"Legend of Bill", u"http://www.gocomics.com/legendofbill"), + # (u"Liberty Meadows", u"http://www.gocomics.com/libertymeadows"), + (u"Lio", u"http://www.gocomics.com/lio"), + # (u"Little Dog Lost", u"http://www.gocomics.com/littledoglost"), + # (u"Little Otto", u"http://www.gocomics.com/littleotto"), + # (u"Loose Parts", u"http://www.gocomics.com/looseparts"), + # (u"Love Is...", u"http://www.gocomics.com/loveis"), + # (u"Maintaining", u"http://www.gocomics.com/maintaining"), + # (u"The Meaning of Lila", u"http://www.gocomics.com/meaningoflila"), + # (u"Middle-Aged White Guy", u"http://www.gocomics.com/middleagedwhiteguy"), + # (u"The Middletons", u"http://www.gocomics.com/themiddletons"), + # (u"Momma", u"http://www.gocomics.com/momma"), + # (u"Mutt & Jeff", u"http://www.gocomics.com/muttandjeff"), + # (u"Mythtickle", u"http://www.gocomics.com/mythtickle"), + # (u"Nest Heads", u"http://www.gocomics.com/nestheads"), + # (u"NEUROTICA", u"http://www.gocomics.com/neurotica"), + (u"New Adventures of Queen Victoria", u"http://www.gocomics.com/thenewadventuresofqueenvictoria"), + (u"Non Sequitur", u"http://www.gocomics.com/nonsequitur"), + # (u"The Norm", u"http://www.gocomics.com/thenorm"), + # (u"On A Claire Day", u"http://www.gocomics.com/onaclaireday"), + # (u"One Big Happy", u"http://www.gocomics.com/onebighappy"), + # (u"The Other Coast", u"http://www.gocomics.com/theothercoast"), + # (u"Out of the Gene Pool Re-Runs", u"http://www.gocomics.com/outofthegenepool"), + # (u"Overboard", u"http://www.gocomics.com/overboard"), + # (u"Pibgorn", u"http://www.gocomics.com/pibgorn"), + # (u"Pibgorn Sketches", u"http://www.gocomics.com/pibgornsketches"), + (u"Pickles", u"http://www.gocomics.com/pickles"), + # (u"Pinkerton", u"http://www.gocomics.com/pinkerton"), + # (u"Pluggers", u"http://www.gocomics.com/pluggers"), + (u"Pooch Cafe", u"http://www.gocomics.com/poochcafe"), + # (u"PreTeena", u"http://www.gocomics.com/preteena"), + # (u"The Quigmans", u"http://www.gocomics.com/thequigmans"), + # (u"Rabbits Against Magic", u"http://www.gocomics.com/rabbitsagainstmagic"), + (u"Real Life Adventures", u"http://www.gocomics.com/reallifeadventures"), + # (u"Red and Rover", u"http://www.gocomics.com/redandrover"), + # (u"Red Meat", u"http://www.gocomics.com/redmeat"), + # (u"Reynolds Unwrapped", u"http://www.gocomics.com/reynoldsunwrapped"), + # (u"Ronaldinho Gaucho", u"http://www.gocomics.com/ronaldinhogaucho"), + # (u"Rubes", u"http://www.gocomics.com/rubes"), + # (u"Scary Gary", u"http://www.gocomics.com/scarygary"), + (u"Shoe", u"http://www.gocomics.com/shoe"), + # (u"Shoecabbage", u"http://www.gocomics.com/shoecabbage"), + # (u"Skin Horse", u"http://www.gocomics.com/skinhorse"), + # (u"Slowpoke", u"http://www.gocomics.com/slowpoke"), + # (u"Speed Bump", u"http://www.gocomics.com/speedbump"), + # (u"State of the Union", u"http://www.gocomics.com/stateoftheunion"), + (u"Stone Soup", u"http://www.gocomics.com/stonesoup"), + # (u"Strange Brew", u"http://www.gocomics.com/strangebrew"), + # (u"Sylvia", u"http://www.gocomics.com/sylvia"), + # (u"Tank McNamara", u"http://www.gocomics.com/tankmcnamara"), + # (u"Tiny Sepuku", u"http://www.gocomics.com/tinysepuku"), + # (u"TOBY", u"http://www.gocomics.com/toby"), + # (u"Tom the Dancing Bug", u"http://www.gocomics.com/tomthedancingbug"), + # (u"Too Much Coffee Man", u"http://www.gocomics.com/toomuchcoffeeman"), + # (u"W.T. Duck", u"http://www.gocomics.com/wtduck"), + # (u"Watch Your Head", u"http://www.gocomics.com/watchyourhead"), + # (u"Wee Pals", u"http://www.gocomics.com/weepals"), + # (u"Winnie the Pooh", u"http://www.gocomics.com/winniethepooh"), + (u"Wizard of Id", u"http://www.gocomics.com/wizardofid"), + # (u"Working It Out", u"http://www.gocomics.com/workingitout"), + # (u"Yenny", u"http://www.gocomics.com/yenny"), + # (u"Zack Hill", u"http://www.gocomics.com/zackhill"), + (u"Ziggy", u"http://www.gocomics.com/ziggy"), + ######## COMICS - EDITORIAL ######## + ("Lalo Alcaraz","http://www.gocomics.com/laloalcaraz"), + ("Nick Anderson","http://www.gocomics.com/nickanderson"), + ("Chuck Asay","http://www.gocomics.com/chuckasay"), + ("Tony Auth","http://www.gocomics.com/tonyauth"), + ("Donna Barstow","http://www.gocomics.com/donnabarstow"), + # ("Bruce Beattie","http://www.gocomics.com/brucebeattie"), + # ("Clay Bennett","http://www.gocomics.com/claybennett"), + # ("Lisa Benson","http://www.gocomics.com/lisabenson"), + # ("Steve Benson","http://www.gocomics.com/stevebenson"), + # ("Chip Bok","http://www.gocomics.com/chipbok"), + # ("Steve Breen","http://www.gocomics.com/stevebreen"), + # ("Chris Britt","http://www.gocomics.com/chrisbritt"), + # ("Stuart Carlson","http://www.gocomics.com/stuartcarlson"), + # ("Ken Catalino","http://www.gocomics.com/kencatalino"), + # ("Paul Conrad","http://www.gocomics.com/paulconrad"), + # ("Jeff Danziger","http://www.gocomics.com/jeffdanziger"), + # ("Matt Davies","http://www.gocomics.com/mattdavies"), + # ("John Deering","http://www.gocomics.com/johndeering"), + # ("Bob Gorrell","http://www.gocomics.com/bobgorrell"), + # ("Walt Handelsman","http://www.gocomics.com/walthandelsman"), + # ("Clay Jones","http://www.gocomics.com/clayjones"), + # ("Kevin Kallaugher","http://www.gocomics.com/kevinkallaugher"), + # ("Steve Kelley","http://www.gocomics.com/stevekelley"), + # ("Dick Locher","http://www.gocomics.com/dicklocher"), + # ("Chan Lowe","http://www.gocomics.com/chanlowe"), + # ("Mike Luckovich","http://www.gocomics.com/mikeluckovich"), + # ("Gary Markstein","http://www.gocomics.com/garymarkstein"), + # ("Glenn McCoy","http://www.gocomics.com/glennmccoy"), + # ("Jim Morin","http://www.gocomics.com/jimmorin"), + # ("Jack Ohman","http://www.gocomics.com/jackohman"), + # ("Pat Oliphant","http://www.gocomics.com/patoliphant"), + # ("Joel Pett","http://www.gocomics.com/joelpett"), + # ("Ted Rall","http://www.gocomics.com/tedrall"), + # ("Michael Ramirez","http://www.gocomics.com/michaelramirez"), + # ("Marshall Ramsey","http://www.gocomics.com/marshallramsey"), + # ("Steve Sack","http://www.gocomics.com/stevesack"), + # ("Ben Sargent","http://www.gocomics.com/bensargent"), + # ("Drew Sheneman","http://www.gocomics.com/drewsheneman"), + # ("John Sherffius","http://www.gocomics.com/johnsherffius"), + # ("Small World","http://www.gocomics.com/smallworld"), + # ("Scott Stantis","http://www.gocomics.com/scottstantis"), + # ("Wayne Stayskal","http://www.gocomics.com/waynestayskal"), + # ("Dana Summers","http://www.gocomics.com/danasummers"), + # ("Paul Szep","http://www.gocomics.com/paulszep"), + # ("Mike Thompson","http://www.gocomics.com/mikethompson"), + # ("Tom Toles","http://www.gocomics.com/tomtoles"), + # ("Gary Varvel","http://www.gocomics.com/garyvarvel"), + # ("ViewsAfrica","http://www.gocomics.com/viewsafrica"), + # ("ViewsAmerica","http://www.gocomics.com/viewsamerica"), + # ("ViewsAsia","http://www.gocomics.com/viewsasia"), + # ("ViewsBusiness","http://www.gocomics.com/viewsbusiness"), + # ("ViewsEurope","http://www.gocomics.com/viewseurope"), + # ("ViewsLatinAmerica","http://www.gocomics.com/viewslatinamerica"), + # ("ViewsMidEast","http://www.gocomics.com/viewsmideast"), + # ("Views of the World","http://www.gocomics.com/viewsoftheworld"), + # ("Kerry Waghorn","http://www.gocomics.com/facesinthenews"), + # ("Dan Wasserman","http://www.gocomics.com/danwasserman"), + # ("Signe Wilkinson","http://www.gocomics.com/signewilkinson"), + # ("Wit of the World","http://www.gocomics.com/witoftheworld"), + # ("Don Wright","http://www.gocomics.com/donwright"), + ]: + articles = self.make_links(url) + if articles: + feeds.append((title, articles)) + return feeds + + def make_links(self, url): + title = 'Temp' + current_articles = [] + pages = range(1, self.num_comics_to_get+1) + for page in pages: + page_soup = self.index_to_soup(url) + if page_soup: + try: + strip_title = page_soup.h1.a.string + except: + strip_title = 'Error - no page_soup.h1.a.string' + try: + date_title = page_soup.find('ul', attrs={'class': 'feature-nav'}).li.string + except: + date_title = 'Error - no page_soup.h1.li.string' + title = strip_title + ' - ' + date_title + for i in range(2): + try: + strip_url_date = page_soup.h1.a['href'] + break #success - this is normal exit + except: + continue #try to get strip_url_date again + continue # give up on this strip date + for i in range(2): + try: + prev_strip_url_date = page_soup.find('a', attrs={'class': 'prev'})['href'] + break #success - this is normal exit + except: + continue #try to get prev_strip_url_date again + continue # give up on this prev strip date + if strip_url_date: + page_url = 'http://www.gocomics.com' + strip_url_date + else: + continue + if prev_strip_url_date: + prev_page_url = 'http://www.gocomics.com' + prev_strip_url_date + else: + continue + current_articles.append({'title': title, 'url': page_url, 'description':'', 'date':''}) + url = prev_page_url + current_articles.reverse() + return current_articles + + def preprocess_html(self, soup): + if soup.title: + title_string = soup.title.string.strip() + _cd = title_string.split(',',1)[1] + comic_date = ' '.join(_cd.split(' ', 4)[0:-1]) + if soup.h1.span: + artist = soup.h1.span.string + soup.h1.span.string.replaceWith(comic_date + artist) + feature_item = soup.find('p',attrs={'class':'feature_item'}) + if feature_item.a: + a_tag = feature_item.a + a_href = a_tag["href"] + img_tag = a_tag.img + img_tag["src"] = a_href + img_tag["width"] = self.comic_size + img_tag["height"] = None + return self.adeify_images(soup) + + extra_css = ''' + h1{font-family:Arial,Helvetica,sans-serif; font-weight:bold;font-size:large;} + h2{font-family:Arial,Helvetica,sans-serif; font-weight:normal;font-size:small;} + img {max-width:100%; min-width:100%;} + p{font-family:Arial,Helvetica,sans-serif;font-size:small;} + body{font-family:Helvetica,Arial,sans-serif;font-size:small;} + ''' diff --git a/resources/recipes/theeconomictimes_india.recipe b/resources/recipes/theeconomictimes_india.recipe index 8756e08e66..5fef377f6e 100644 --- a/resources/recipes/theeconomictimes_india.recipe +++ b/resources/recipes/theeconomictimes_india.recipe @@ -1,13 +1,10 @@ -#!/usr/bin/env python - __license__ = 'GPL v3' -__copyright__ = '2008-2009, Darko Miletic ' +__copyright__ = '2008-2010, Darko Miletic ' ''' economictimes.indiatimes.com ''' from calibre.web.feeds.news import BasicNewsRecipe -from calibre.ebooks.BeautifulSoup import Tag class TheEconomicTimes(BasicNewsRecipe): title = 'The Economic Times India' @@ -21,18 +18,21 @@ class TheEconomicTimes(BasicNewsRecipe): use_embedded_content = False simultaneous_downloads = 1 encoding = 'utf-8' - lang = 'en-IN' - language = 'en_IN' - - - html2lrf_options = [ - '--comment', description - , '--category', category - , '--publisher', publisher - , '--ignore-tables' - ] - - html2epub_options = 'publisher="' + publisher + '"\ncomments="' + description + '"\ntags="' + category + '"\nlinearize_tables=True' + language = 'en_IN' + publication_type = 'newspaper' + masthead_url = 'http://economictimes.indiatimes.com/photo/2676871.cms' + extra_css = """ body{font-family: Arial,Helvetica,sans-serif} + .heading1{font-size: xx-large; font-weight: bold} """ + + conversion_options = { + 'comment' : description + , 'tags' : category + , 'publisher' : publisher + , 'language' : language + } + + keep_only_tags = [dict(attrs={'class':['heading1','headingnext','Normal']})] + remove_tags = [dict(name=['object','link','embed','iframe','base','table','meta'])] feeds = [(u'All articles', u'http://economictimes.indiatimes.com/rssfeedsdefault.cms')] @@ -47,11 +47,6 @@ class TheEconomicTimes(BasicNewsRecipe): return rurl def preprocess_html(self, soup): - soup.html['xml:lang'] = self.lang - soup.html['lang'] = self.lang - mlang = Tag(soup,'meta',[("http-equiv","Content-Language"),("content",self.lang)]) - mcharset = Tag(soup,'meta',[("http-equiv","Content-Type"),("content","text/html; charset=utf-8")]) - soup.head.insert(0,mlang) - soup.head.insert(1,mcharset) + for item in soup.findAll(style=True): + del item['style'] return self.adeify_images(soup) - diff --git a/setup/installer/cx_Freeze/HISTORY.txt b/setup/installer/cx_Freeze/HISTORY.txt deleted file mode 100644 index acf9ad0dfe..0000000000 --- a/setup/installer/cx_Freeze/HISTORY.txt +++ /dev/null @@ -1,244 +0,0 @@ -Changes from 4.0 to 4.0.1 - 1) Added support for Python 2.6. On Windows a manifest file is now required - because of the switch to using the new Microsoft C runtime. - 2) Ensure that hooks are run for builtin modules. - -Changes from 4.0b1 to 4.0 - 1) Added support for copying files to the target directory. - 2) Added support for a hook that runs when a module is missing. - 3) Added support for binary path includes as well as excludes; use sequences - rather than dictionaries as a more convenient API; exclude the standard - locations for 32-bit and 64-bit libaries in multi-architecture systems. - 4) Added support for searching zip files (egg files) for modules. - 5) Added support for handling system exit exceptions similarly to what Python - does itself as requested by Sylvain. - 6) Added code to wait for threads to shut down like the normal Python - interpreter does. Thanks to Mariano Disanzo for discovering this - discrepancy. - 7) Hooks added or modified based on feedback from many people. - 8) Don't include the version name in the display name of the MSI. - 9) Use the OS dependent path normalization routines rather than simply use the - lowercase value as on Unix case is important; thanks to Artie Eoff for - pointing this out. -10) Include a version attribute in the cx_Freeze package and display it in the - output for the --version option to the script. -11) Include build instructions as requested by Norbert Sebok. -12) Add support for copying files when modules are included which require data - files to operate properly; add support for copying the necessary files for - the Tkinter and matplotlib modules. -13) Handle deferred imports recursively as needed; ensure that from lists do - not automatically indicate that they are part of the module or the deferred - import processing doesn't actually work! -14) Handle the situation where a module imports everything from a package and - the __all__ variable has been defined but the package has not actually - imported everything in the __all__ variable during initialization. -15) Modified license text to more closely match the Python Software Foundation - license as was intended. -16) Added sample script for freezing an application using matplotlib. -17) Renamed freeze to cxfreeze to avoid conflict with another package that uses - that executable as requested by Siegfried Gevatter. - -Changes from 3.0.3 to 4.0b1 - 1) Added support for placing modules in library.zip or in a separate zip file - for each executable that is produced. - 2) Added support for copying binary dependent files (DLLs and shared - libraries) - 3) Added support for including all submodules in a package - 4) Added support for including icons in Windows executables - 5) Added support for constants module which can be used for determining - certain build constants at runtime - 6) Added support for relative imports available in Python 2.5 and up - 7) Added support for building Windows installers (Python 2.5 and up) and - RPM packages - 8) Added support for distutils configuration scripts - 9) Added support for hooks which can force inclusion or exclusion of modules - when certain modules are included -10) Added documentation and samples -11) Added setup.py for building the cx_Freeze package instead of a script - used to build only the frozen bases -12) FreezePython renamed to a script called freeze in the Python distribution -13) On Linux and other platforms that support it set LD_RUN_PATH to include - the directory in which the executable is located - -Changes from 3.0.2 to 3.0.3 - 1) In Common.c, used MAXPATHLEN defined in the Python OS independent include - file rather than the PATH_MAX define which is OS dependent and is not - available on IRIX as noted by Andrew Jones. - 2) In the initscript ConsoleSetLibPath.py, added lines from initscript - Console.py that should have been there since the only difference between - that script and this one is the automatic re-execution of the executable. - 3) Added an explicit "import encodings" to the initscripts in order to handle - Unicode encodings a little better. Thanks to Ralf Schmitt for pointing out - the problem and its solution. - 4) Generated a meaningful name for the extension loader script so that it is - clear which particular extension module is being loaded when an exception - is being raised. - 5) In MakeFrozenBases.py, use distutils to figure out a few more - platform-dependent linker flags as suggested by Ralf Schmitt. - -Changes from 3.0.1 to 3.0.2 - 1) Add support for compressing the byte code in the zip files that are - produced. - 2) Add better support for the win32com package as requested by Barry Scott. - 3) Prevent deletion of target file if it happens to be identical to the - source file. - 4) Include additional flags for local modifications to a Python build as - suggested by Benjamin Rutt. - 5) Expanded instructions for building cx_Freeze from source based on a - suggestion from Gregg Lind. - 6) Fix typo in help string. - -Changes from 3.0 to 3.0.1 - 1) Added option --default-path which is used to specify the path used when - finding modules. This is particularly useful when performing cross - compilations (such as for building a frozen executable for Windows CE). - 2) Added option --shared-lib-name which can be used to specify the name of - the shared library (DLL) implementing the Python runtime that is required - for the frozen executable to work. This option is also particularly useful - when cross compiling since the normal method for determining this - information cannot be used. - 3) Added option --zip-include which allows for additional files to be added - to the zip file that contains the modules that implement the Python - script. Thanks to Barray Warsaw for providing the initial patch. - 4) Added support for handling read-only files properly. Thanks to Peter - Grayson for pointing out the problem and providing a solution. - 5) Added support for a frozen executable to be a symbolic link. Thanks to - Robert Kiendl for providing the initial patch. - 6) Enhanced the support for running a frozen executable that uses an existing - Python installation to locate modules it requires. This is primarily of - use for embedding Python where the interface is C but the ability to run - from source is still desired. - 7) Modified the documentation to indicate that building from source on - Windows currently requires the mingw compiler (http://www.mingw.org). - 8) Workaround the problem in Python 2.3 (fixed in Python 2.4) which causes a - broken module to be left in sys.modules if an ImportError takes place - during the execution of the code in that module. Thanks to Roger Binns - for pointing this out. - -Changes from 3.0 beta3 to 3.0 - 1) Ensure that ldd is only run on extension modules. - 2) Allow for using a compiler other than gcc for building the frozen base - executables by setting the environment variable CC. - 3) Ensure that the import lock is not held while executing the main script; - otherwise, attempts to import a module within a thread will hang that - thread as noted by Roger Binns. - 4) Added support for replacing the paths in all frozen modules with something - else (so that for example the path of the machine on which the freezing - was done is not displayed in tracebacks) - -Changes from 3.0 beta2 to 3.0 beta3 - 1) Explicitly include the warnings module so that at runtime warnings are - suppressed as when running Python normally. - 2) Improve the extension loader so that an ImportError is raised when the - dynamic module is not located; otherwise an error about missing attributes - is raised instead. - 3) Extension loaders are only created when copying dependencies since the - normal module should be loadable in the situation where a Python - installation is available. - 4) Added support for Python 2.4. - 5) Fixed the dependency checking for wxPython to be a little more - intelligent. - -Changes from 3.0 beta1 to 3.0 beta2 - 1) Fix issues with locating the initscripts and bases relative to the - directory in which the executable was started. - 2) Added new base executable ConsoleKeepPath which is used when an existing - Python installation is required (such as for FreezePython itself). - 3) Forced the existence of a Python installation to be ignored when using the - standard Console base executable. - 4) Remove the existing file when copying dependent files; otherwise, an error - is raised when attempting to overwrite read-only files. - 5) Added option -O (or -OO) to FreezePython to set the optimization used when - generating bytecode. - -Changes from 2.2 to 3.0 beta1 - 1) cx_Freeze now requires Python 2.3 or higher since it takes advantage of - the ability of Python 2.3 and higher to import modules from zip files. - This makes the freezing process considerably simpler and also allows for - the execution of multiple frozen packages (such as found in COM servers or - shared libraries) without requiring modification to the Python modules. - 2) All external dependencies have been removed. cx_Freeze now only requires - a standard Python distribution to do its work. - 3) Added the ability to define the initialization scripts that cx_Freeze uses - on startup of the frozen program. Previously, these scripts were written - in C and could not easily be changed; now they are written in Python and - can be found in the initscripts directory (and chosen with the - new --init-script option to FreezePython). - 4) The base executable ConsoleSetLibPath has been removed and replaced with - the initscript ConsoleSetLibPath. - 5) Removed base executables for Win32 services and Win32 COM servers. This - functionality will be restored in the future but it is not currently in a - state that is ready for release. If this functionality is required, please - use py2exe or contact me for my work in progress. - 6) The attribute sys.frozen is now set so that more recent pywin32 modules - work as expected when frozen. - 7) Added option --include-path to FreezePython to allow overriding of - sys.path without modifying the environment variable PYTHONPATH. - 8) Added option --target-dir/--install-dir to specify the directory in which - the frozen executable and its dependencies will be placed. - 9) Removed the option --shared-lib since it was used for building shared - libraries and can be managed with the initscript SharedLib.py. -10) MakeFrozenBases.py now checks the platform specific include directory as - requested by Michael Partridge. - - -Changes from 2.1 to 2.2 - 1) Add option (--ext-list-file) to FreezePython to write the list of - extensions copied to the installation directory to a file. This option is - useful in cases where multiple builds are performed into the same - installation directory. - 2) Pass the arguments on the command line through to Win32 GUI applications. - Thanks to Michael Porter for pointing this out. - 3) Link directly against the python DLL when building the frozen bases on - Windows, thus eliminating the need for building an import library. - 4) Force sys.path to include the directory in which the script to be frozen - is found. - 5) Make sure that the installation directory exists before attempting to - copy the target binary into it. - 6) The Win32GUI base has been modified to display fatal errors in message - boxes, rather than printing errors to stderr, since on Windows the - standard file IO handles are all closed. - -Changes from 2.0 to 2.1 - 1) Remove dependency on Python 2.2. Thanks to Paul Moore for not only - pointing it out but providing patches. - 2) Set up the list of frozen modules in advance, rather than doing it after - Python is initialized so that implicit imports done by Python can be - satisfied. The bug in Python 2.3 that demonstrated this issue has been - fixed in the first release candidate. Thanks to Thomas Heller for pointing - out the obvious in this instance! - 3) Added additional base executable (ConsoleSetLibPath) to support setting - the LD_LIBRARY_PATH variable on Unix platforms and restarting the - executable to put the new setting into effect. This is primarily of use - in distributing wxPython applications on Unix where the shared library - has an embedded RPATH value which can cause problems. - 4) Small improvements of documentation based on feedback from several people. - 5) Print information about the files written or copied during the freezing - process. - 6) Do not copy extensions when freezing if the path is being overridden since - it is expected that a full Python installation is available to the target - users of the frozen binary. - 7) Provide meaningful error message when the wxPython library cannot be - found during the freezing process. - -Changes from 1.1 to 2.0 - 1) Added support for in process (DLL) COM servers using PythonCOM. - 2) Ensured that the frozen flag is set prior to determining the full path for - the program in order to avoid warnings about Python not being found on - some platforms. - 3) Added include file and resource file to the source tree to avoid the - dependency on the Wine message compiler for Win32 builds. - 4) Dropped the option --copy-extensions; this now happens automatically since - the resulting binary is useless without them. - 5) Added a sample for building a Win32 service. - 6) Make use of improved modules from Python 2.3 (which function under 2.2) - -Changes from 1.0 to 1.1 - 1) Fixed import error with C extensions in packages; thanks to Thomas Heller - for pointing out the solution to this problem. - 2) Added options to FreezePython to allow for the inclusion of modules which - will not be found by the module finder (--include-modules) and the - exclusion of modules which will be found by the module finder but should - not be included (--exclude-modules). - 3) Fixed typo in README.txt. - diff --git a/setup/installer/cx_Freeze/LICENSE.txt b/setup/installer/cx_Freeze/LICENSE.txt deleted file mode 100644 index cb9ee05a8a..0000000000 --- a/setup/installer/cx_Freeze/LICENSE.txt +++ /dev/null @@ -1,53 +0,0 @@ -Copyright © 2007-2008, Colt Engineering, Edmonton, Alberta, Canada. -Copyright © 2001-2006, Computronix (Canada) Ltd., Edmonton, Alberta, Canada. -All rights reserved. - -NOTE: this license is derived from the Python Software Foundation License -which can be found at http://www.python.org/psf/license - -License for cx_Freeze 4.0.1 ---------------------------- - -1. This LICENSE AGREEMENT is between the copyright holders and the Individual - or Organization ("Licensee") accessing and otherwise using cx_Freeze - software in source or binary form and its associated documentation. - -2. Subject to the terms and conditions of this License Agreement, the - copyright holders hereby grant Licensee a nonexclusive, royalty-free, - world-wide license to reproduce, analyze, test, perform and/or display - publicly, prepare derivative works, distribute, and otherwise use cx_Freeze - alone or in any derivative version, provided, however, that this License - Agreement and this notice of copyright are retained in cx_Freeze alone or in - any derivative version prepared by Licensee. - -3. In the event Licensee prepares a derivative work that is based on or - incorporates cx_Freeze or any part thereof, and wants to make the derivative - work available to others as provided herein, then Licensee hereby agrees to - include in any such work a brief summary of the changes made to cx_Freeze. - -4. The copyright holders are making cx_Freeze available to Licensee on an - "AS IS" basis. THE COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, - EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, THE COPYRIGHT - HOLDERS MAKE NO AND DISCLAIM ANY REPRESENTATION OR WARRANTY OF - MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF - CX_FREEZE WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. - -5. THE COPYRIGHT HOLDERS SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF - CX_FREEZE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS - A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING CX_FREEZE, OR ANY - DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. - -6. This License Agreement will automatically terminate upon a material breach - of its terms and conditions. - -7. Nothing in this License Agreement shall be deemed to create any relationship - of agency, partnership, or joint venture between the copyright holders and - Licensee. This License Agreement does not grant permission to use - copyright holder's trademarks or trade name in a trademark sense to endorse - or promote products or services of Licensee, or any third party. - -8. By copying, installing or otherwise using cx_Freeze, Licensee agrees to be - bound by the terms and conditions of this License Agreement. - -Computronix® is a registered trademark of Computronix (Canada) Ltd. - diff --git a/setup/installer/cx_Freeze/MANIFEST.in b/setup/installer/cx_Freeze/MANIFEST.in deleted file mode 100644 index 2348a66973..0000000000 --- a/setup/installer/cx_Freeze/MANIFEST.in +++ /dev/null @@ -1,6 +0,0 @@ -include MANIFEST.in -include *.txt -recursive-include doc *.html -recursive-include initscripts *.py -recursive-include samples *.py -recursive-include source *.c *.rc diff --git a/setup/installer/cx_Freeze/PKG-INFO b/setup/installer/cx_Freeze/PKG-INFO deleted file mode 100644 index aa53b57914..0000000000 --- a/setup/installer/cx_Freeze/PKG-INFO +++ /dev/null @@ -1,22 +0,0 @@ -Metadata-Version: 1.0 -Name: cx_Freeze -Version: 4.0.1 -Summary: create standalone executables from Python scripts -Home-page: http://cx-freeze.sourceforge.net -Author: Anthony Tuininga -Author-email: anthony.tuininga@gmail.com -License: Python Software Foundation License -Description: create standalone executables from Python scripts -Keywords: freeze -Platform: UNKNOWN -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: Python Software Foundation License -Classifier: Natural Language :: English -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: C -Classifier: Programming Language :: Python -Classifier: Topic :: Software Development :: Build Tools -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Classifier: Topic :: System :: Software Distribution -Classifier: Topic :: Utilities diff --git a/setup/installer/cx_Freeze/README.txt b/setup/installer/cx_Freeze/README.txt deleted file mode 100644 index 1ac67dc749..0000000000 --- a/setup/installer/cx_Freeze/README.txt +++ /dev/null @@ -1,12 +0,0 @@ -Please see cx_Freeze.html for documentation on how to use cx_Freeze. - -To build: - -python setup.py build -python setup.py install - -On Windows I have used the MinGW compiler (http://www.mingw.org) - -python setup.py build --compiler=mingw32 -python setup.py build --compiler=mingw32 install - diff --git a/setup/installer/cx_Freeze/cx_Freeze/__init__.py b/setup/installer/cx_Freeze/cx_Freeze/__init__.py deleted file mode 100644 index 545883eb3e..0000000000 --- a/setup/installer/cx_Freeze/cx_Freeze/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -version = "4.0.1" - -import sys -from dist import * -if sys.platform == "win32" and sys.version_info[:2] >= (2, 5): - from windist import * -from finder import * -from freezer import * -from main import * - -del dist -del finder -del freezer - diff --git a/setup/installer/cx_Freeze/cx_Freeze/dist.py b/setup/installer/cx_Freeze/cx_Freeze/dist.py deleted file mode 100644 index c2af2ac623..0000000000 --- a/setup/installer/cx_Freeze/cx_Freeze/dist.py +++ /dev/null @@ -1,279 +0,0 @@ -import distutils.command.bdist_rpm -import distutils.command.build -import distutils.command.install -import distutils.core -import distutils.dir_util -import distutils.dist -import distutils.util -import distutils.version -import os -import sys - -import cx_Freeze - -__all__ = [ "bdist_rpm", "build", "build_exe", "install", "install_exe", - "setup" ] - -class Distribution(distutils.dist.Distribution): - - def __init__(self, attrs): - self.executables = [] - distutils.dist.Distribution.__init__(self, attrs) - - -class bdist_rpm(distutils.command.bdist_rpm.bdist_rpm): - - def finalize_options(self): - distutils.command.bdist_rpm.bdist_rpm.finalize_options(self) - self.use_rpm_opt_flags = 1 - - def _make_spec_file(self): - contents = distutils.command.bdist_rpm.bdist_rpm._make_spec_file(self) - return [c for c in contents if c != 'BuildArch: noarch'] - - -class build(distutils.command.build.build): - user_options = distutils.command.build.build.user_options + [ - ('build-exe=', None, 'build directory for executables') - ] - - def get_sub_commands(self): - subCommands = distutils.command.build.build.get_sub_commands(self) - if self.distribution.executables: - subCommands.append("build_exe") - return subCommands - - def initialize_options(self): - distutils.command.build.build.initialize_options(self) - self.build_exe = None - - def finalize_options(self): - distutils.command.build.build.finalize_options(self) - if self.build_exe is None: - dirName = "exe.%s-%s" % \ - (distutils.util.get_platform(), sys.version[0:3]) - self.build_exe = os.path.join(self.build_base, dirName) - - -class build_exe(distutils.core.Command): - description = "build executables from Python scripts" - user_options = [ - ('build-exe=', 'b', - 'directory for built executables'), - ('optimize=', 'O', - 'optimization level: -O1 for "python -O", ' - '-O2 for "python -OO" and -O0 to disable [default: -O0]'), - ('excludes=', 'e', - 'comma-separated list of modules to exclude'), - ('includes=', 'i', - 'comma-separated list of modules to include'), - ('packages=', 'p', - 'comma-separated list of packages to include'), - ('replace-paths=', None, - 'comma-separated list of paths to replace in included modules'), - ('path=', None, - 'comma-separated list of paths to search'), - ('init-script=', 'i', - 'name of script to use during initialization'), - ('base=', None, - 'name of base executable to use'), - ('compressed', 'c', - 'create a compressed zipfile'), - ('copy-dependent-files', None, - 'copy all dependent files'), - ('create-shared-zip', None, - 'create a shared zip file containing shared modules'), - ('append-script-to-exe', None, - 'append the script module to the exe'), - ('include-in-shared-zip', None, - 'include the script module in the shared zip file'), - ('icon', None, - 'include the icon along with the frozen executable(s)'), - ('constants=', None, - 'comma-separated list of constants to include'), - ('include-files=', 'f', - 'list of tuples of additional files to include in distribution'), - ('bin-includes', None, - 'list of names of files to include when determining dependencies'), - ('bin-excludes', None, - 'list of names of files to exclude when determining dependencies') - ] - boolean_options = ["compressed", "copy_dependent_files", - "create_shared_zip", "append_script_to_exe", - "include_in_shared_zip"] - - def _normalize(self, attrName): - value = getattr(self, attrName) - if value is None: - normalizedValue = [] - elif isinstance(value, basestring): - normalizedValue = value.split() - else: - normalizedValue = list(value) - setattr(self, attrName, normalizedValue) - - def initialize_options(self): - self.optimize = 0 - self.build_exe = None - self.excludes = [] - self.includes = [] - self.packages = [] - self.replace_paths = [] - self.compressed = None - self.copy_dependent_files = None - self.init_script = None - self.base = None - self.path = None - self.create_shared_zip = None - self.append_script_to_exe = None - self.include_in_shared_zip = None - self.icon = None - self.constants = [] - self.include_files = [] - self.bin_excludes = [] - self.bin_includes = [] - - def finalize_options(self): - self.set_undefined_options('build', ('build_exe', 'build_exe')) - self.optimize = int(self.optimize) - self._normalize("excludes") - self._normalize("includes") - self._normalize("packages") - self._normalize("constants") - - def run(self): - metadata = self.distribution.metadata - constantsModule = cx_Freeze.ConstantsModule(metadata.version) - for constant in self.constants: - parts = constant.split("=") - if len(parts) == 1: - name = constant - value = None - else: - name, stringValue = parts - value = eval(stringValue) - constantsModule.values[name] = value - freezer = cx_Freeze.Freezer(self.distribution.executables, - [constantsModule], self.includes, self.excludes, self.packages, - self.replace_paths, self.compressed, self.optimize, - self.copy_dependent_files, self.init_script, self.base, - self.path, self.create_shared_zip, self.append_script_to_exe, - self.include_in_shared_zip, self.build_exe, icon = self.icon, - includeFiles = self.include_files, - binIncludes = self.bin_includes, - binExcludes = self.bin_excludes) - freezer.Freeze() - - -class install(distutils.command.install.install): - user_options = distutils.command.install.install.user_options + [ - ('install-exe=', None, - 'installation directory for executables') - ] - - def expand_dirs(self): - distutils.command.install.install.expand_dirs(self) - self._expand_attrs(['install_exe']) - - def get_sub_commands(self): - subCommands = distutils.command.install.install.get_sub_commands(self) - if self.distribution.executables: - subCommands.append("install_exe") - return [s for s in subCommands if s != "install_egg_info"] - - def initialize_options(self): - distutils.command.install.install.initialize_options(self) - self.install_exe = None - - def finalize_options(self): - if self.prefix is None and sys.platform == "win32": - import _winreg - key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, - r"Software\Microsoft\Windows\CurrentVersion") - prefix = str(_winreg.QueryValueEx(key, "ProgramFilesDir")[0]) - metadata = self.distribution.metadata - dirName = "%s-%s" % (metadata.name, metadata.version) - self.prefix = "%s/%s" % (prefix, dirName) - distutils.command.install.install.finalize_options(self) - self.convert_paths('exe') - if self.root is not None: - self.change_roots('exe') - - def select_scheme(self, name): - distutils.command.install.install.select_scheme(self, name) - if self.install_exe is None: - if sys.platform == "win32": - self.install_exe = '$base' - else: - metadata = self.distribution.metadata - dirName = "%s-%s" % (metadata.name, metadata.version) - self.install_exe = '$base/lib/%s' % dirName - - -class install_exe(distutils.core.Command): - description = "install executables built from Python scripts" - user_options = [ - ('install-dir=', 'd', 'directory to install executables to'), - ('build-dir=', 'b', 'build directory (where to install from)'), - ('force', 'f', 'force installation (overwrite existing files)'), - ('skip-build', None, 'skip the build steps') - ] - - def initialize_options(self): - self.install_dir = None - self.force = 0 - self.build_dir = None - self.skip_build = None - - def finalize_options(self): - self.set_undefined_options('build', ('build_exe', 'build_dir')) - self.set_undefined_options('install', - ('install_exe', 'install_dir'), - ('force', 'force'), - ('skip_build', 'skip_build')) - - def run(self): - if not self.skip_build: - self.run_command('build_exe') - self.outfiles = self.copy_tree(self.build_dir, self.install_dir) - if sys.platform != "win32": - baseDir = os.path.dirname(os.path.dirname(self.install_dir)) - binDir = os.path.join(baseDir, "bin") - if not os.path.exists(binDir): - os.makedirs(binDir) - sourceDir = os.path.join("..", self.install_dir[len(baseDir) + 1:]) - for executable in self.distribution.executables: - name = os.path.basename(executable.targetName) - source = os.path.join(sourceDir, name) - target = os.path.join(binDir, name) - if os.path.exists(target): - os.unlink(target) - os.symlink(source, target) - self.outfiles.append(target) - - def get_inputs(self): - return self.distribution.executables or [] - - def get_outputs(self): - return self.outfiles or [] - - -def _AddCommandClass(commandClasses, name, cls): - if name not in commandClasses: - commandClasses[name] = cls - - -def setup(**attrs): - attrs["distclass"] = Distribution - commandClasses = attrs.setdefault("cmdclass", {}) - if sys.platform == "win32": - if sys.version_info[:2] >= (2, 5): - _AddCommandClass(commandClasses, "bdist_msi", cx_Freeze.bdist_msi) - else: - _AddCommandClass(commandClasses, "bdist_rpm", cx_Freeze.bdist_rpm) - _AddCommandClass(commandClasses, "build", build) - _AddCommandClass(commandClasses, "build_exe", build_exe) - _AddCommandClass(commandClasses, "install", install) - _AddCommandClass(commandClasses, "install_exe", install_exe) - distutils.core.setup(**attrs) - diff --git a/setup/installer/cx_Freeze/cx_Freeze/finder.py b/setup/installer/cx_Freeze/cx_Freeze/finder.py deleted file mode 100644 index f815db97be..0000000000 --- a/setup/installer/cx_Freeze/cx_Freeze/finder.py +++ /dev/null @@ -1,455 +0,0 @@ -""" -Base class for finding modules. -""" - -import dis -import imp -import marshal -import new -import opcode -import os -import sys -import zipfile - -import cx_Freeze.hooks - -BUILD_LIST = opcode.opmap["BUILD_LIST"] -INPLACE_ADD = opcode.opmap["INPLACE_ADD"] -LOAD_CONST = opcode.opmap["LOAD_CONST"] -IMPORT_NAME = opcode.opmap["IMPORT_NAME"] -IMPORT_FROM = opcode.opmap["IMPORT_FROM"] -STORE_NAME = opcode.opmap["STORE_NAME"] -STORE_GLOBAL = opcode.opmap["STORE_GLOBAL"] -STORE_OPS = (STORE_NAME, STORE_GLOBAL) - -__all__ = [ "Module", "ModuleFinder" ] - -class ModuleFinder(object): - - def __init__(self, includeFiles, excludes, path, replacePaths): - self.includeFiles = includeFiles - self.excludes = dict.fromkeys(excludes) - self.replacePaths = replacePaths - self.path = path or sys.path - self.modules = [] - self.aliases = {} - self._modules = dict.fromkeys(excludes) - self._builtinModules = dict.fromkeys(sys.builtin_module_names) - self._badModules = {} - self._zipFileEntries = {} - self._zipFiles = {} - cx_Freeze.hooks.initialize(self) - - def _AddModule(self, name): - """Add a module to the list of modules but if one is already found, - then return it instead; this is done so that packages can be - handled properly.""" - module = self._modules.get(name) - if module is None: - module = self._modules[name] = Module(name) - self.modules.append(module) - if name in self._badModules: - del self._badModules[name] - return module - - def _DetermineParent(self, caller): - """Determine the parent to use when searching packages.""" - if caller is not None: - if caller.path is not None: - return caller - return self._GetParentByName(caller.name) - - def _EnsureFromList(self, caller, packageModule, fromList, - deferredImports): - """Ensure that the from list is satisfied. This is only necessary for - package modules. If the caller is the package itself, actually - attempt to import right then since it must be a submodule; otherwise - defer until after all global names are defined in order to avoid - spurious complaints about missing modules.""" - if caller is not packageModule: - deferredImports.append((packageModule, fromList)) - else: - if fromList == ("*",): - fromList = packageModule.allNames - for name in fromList: - if name in packageModule.globalNames: - continue - subModuleName = "%s.%s" % (packageModule.name, name) - self._ImportModule(subModuleName, deferredImports, caller) - - def _FindModule(self, name, path): - try: - return imp.find_module(name, path) - except ImportError: - if not path: - path = [] - for location in path: - if name in self._zipFileEntries: - break - if location in self._zipFiles: - continue - if os.path.isdir(location) or not zipfile.is_zipfile(location): - self._zipFiles[location] = None - continue - zip = zipfile.ZipFile(location) - for archiveName in zip.namelist(): - baseName, ext = os.path.splitext(archiveName) - if ext not in ('.pyc', '.pyo'): - continue - moduleName = ".".join(baseName.split("/")) - if moduleName in self._zipFileEntries: - continue - self._zipFileEntries[moduleName] = (zip, archiveName) - self._zipFiles[location] = None - info = self._zipFileEntries.get(name) - if info is not None: - zip, archiveName = info - fp = zip.read(archiveName) - info = (".pyc", "rb", imp.PY_COMPILED) - return fp, os.path.join(zip.filename, archiveName), info - raise - - def _GetParentByName(self, name): - """Return the parent module given the name of a module.""" - pos = name.rfind(".") - if pos > 0: - parentName = name[:pos] - return self._modules[parentName] - - def _ImportAllSubModules(self, module, deferredImports, recursive = True): - """Import all sub modules to the given package.""" - suffixes = dict.fromkeys([s[0] for s in imp.get_suffixes()]) - for dir in module.path: - try: - fileNames = os.listdir(dir) - except os.error: - continue - for fileName in fileNames: - name, ext = os.path.splitext(fileName) - if ext not in suffixes: - continue - if name == "__init__": - continue - subModuleName = "%s.%s" % (module.name, name) - subModule, returnError = \ - self._InternalImportModule(subModuleName, - deferredImports) - if returnError and subModule is None: - raise ImportError, "No module named %s" % subModuleName - module.globalNames[name] = None - if subModule.path and recursive: - self._ImportAllSubModules(subModule, deferredImports, - recursive) - - def _ImportDeferredImports(self, deferredImports): - """Import any sub modules that were deferred, if applicable.""" - while deferredImports: - newDeferredImports = [] - for packageModule, subModuleNames in deferredImports: - self._EnsureFromList(packageModule, packageModule, - subModuleNames, newDeferredImports) - deferredImports = newDeferredImports - - def _ImportModule(self, name, deferredImports, caller = None, - relativeImportIndex = 0): - """Attempt to find the named module and return it or None if no module - by that name could be found.""" - - # absolute import (available in Python 2.5 and up) - # the name given is the only name that will be searched - if relativeImportIndex == 0: - module, returnError = self._InternalImportModule(name, - deferredImports) - - # old style relative import (only possibility in Python 2.4 and prior) - # the name given is tried in all parents until a match is found and if - # no match is found, the global namespace is searched - elif relativeImportIndex < 0: - parent = self._DetermineParent(caller) - while parent is not None: - fullName = "%s.%s" % (parent.name, name) - module, returnError = self._InternalImportModule(fullName, - deferredImports) - if module is not None: - parent.globalNames[name] = None - return module - parent = self._GetParentByName(parent.name) - module, returnError = self._InternalImportModule(name, - deferredImports) - - # new style relative import (available in Python 2.5 and up) - # the index indicates how many levels to traverse and only that level - # is searched for the named module - elif relativeImportIndex > 0: - parent = caller - if parent.path is not None: - relativeImportIndex -= 1 - while parent is not None and relativeImportIndex > 0: - parent = self._GetParentByName(parent.name) - relativeImportIndex -= 1 - if parent is None: - module = None - returnError = True - elif not name: - module = parent - else: - name = "%s.%s" % (parent.name, name) - module, returnError = self._InternalImportModule(name, - deferredImports) - - # if module not found, track that fact - if module is None: - if caller is None: - raise ImportError, "No module named %s" % name - self._RunHook("missing", name, caller) - if returnError and name not in caller.ignoreNames: - callers = self._badModules.setdefault(name, {}) - callers[caller.name] = None - - return module - - def _InternalImportModule(self, name, deferredImports): - """Internal method used for importing a module which assumes that the - name given is an absolute name. None is returned if the module - cannot be found.""" - try: - return self._modules[name], False - except KeyError: - pass - if name in self._builtinModules: - module = self._AddModule(name) - self._RunHook("load", module.name, module) - return module, False - pos = name.rfind(".") - if pos < 0: - path = self.path - searchName = name - parentModule = None - else: - parentName = name[:pos] - parentModule, returnError = \ - self._InternalImportModule(parentName, deferredImports) - if parentModule is None: - return None, returnError - path = parentModule.path - searchName = name[pos + 1:] - if name in self.aliases: - actualName = self.aliases[name] - module, returnError = \ - self._InternalImportModule(actualName, deferredImports) - self._modules[name] = module - return module, returnError - try: - fp, path, info = self._FindModule(searchName, path) - except ImportError: - self._modules[name] = None - return None, True - module = self._LoadModule(name, fp, path, info, deferredImports, - parentModule) - return module, False - - def _LoadModule(self, name, fp, path, info, deferredImports, - parent = None): - """Load the module, given the information acquired by the finder.""" - suffix, mode, type = info - if type == imp.PKG_DIRECTORY: - return self._LoadPackage(name, path, parent, deferredImports) - module = self._AddModule(name) - module.file = path - module.parent = parent - if type == imp.PY_SOURCE: - module.code = compile(fp.read() + "\n", path, "exec") - elif type == imp.PY_COMPILED: - if isinstance(fp, str): - magic = fp[:4] - else: - magic = fp.read(4) - if magic != imp.get_magic(): - raise ImportError, "Bad magic number in %s" % path - if isinstance(fp, str): - module.code = marshal.loads(fp[8:]) - module.inZipFile = True - else: - fp.read(4) - module.code = marshal.load(fp) - self._RunHook("load", module.name, module) - if module.code is not None: - if self.replacePaths: - topLevelModule = module - while topLevelModule.parent is not None: - topLevelModule = topLevelModule.parent - module.code = self._ReplacePathsInCode(topLevelModule, - module.code) - self._ScanCode(module.code, module, deferredImports) - return module - - def _LoadPackage(self, name, path, parent, deferredImports): - """Load the package, given its name and path.""" - module = self._AddModule(name) - module.path = [path] - fp, path, info = imp.find_module("__init__", module.path) - self._LoadModule(name, fp, path, info, deferredImports, parent) - return module - - def _ReplacePathsInCode(self, topLevelModule, co): - """Replace paths in the code as directed, returning a new code object - with the modified paths in place.""" - origFileName = newFileName = os.path.normpath(co.co_filename) - for searchValue, replaceValue in self.replacePaths: - if searchValue == "*": - searchValue = os.path.dirname(topLevelModule.file) - if topLevelModule.path: - searchValue = os.path.dirname(searchValue) - if searchValue: - searchValue = searchValue + os.pathsep - elif not origFileName.startswith(searchValue): - continue - newFileName = replaceValue + origFileName[len(searchValue):] - break - constants = list(co.co_consts) - for i, value in enumerate(constants): - if isinstance(value, type(co)): - constants[i] = self._ReplacePathsInCode(topLevelModule, value) - return new.code(co.co_argcount, co.co_nlocals, co.co_stacksize, - co.co_flags, co.co_code, tuple(constants), co.co_names, - co.co_varnames, newFileName, co.co_name, co.co_firstlineno, - co.co_lnotab, co.co_freevars, co.co_cellvars) - - def _RunHook(self, hookName, moduleName, *args): - """Run hook for the given module if one is present.""" - name = "%s_%s" % (hookName, moduleName.replace(".", "_")) - method = getattr(cx_Freeze.hooks, name, None) - if method is not None: - method(self, *args) - - def _ScanCode(self, co, module, deferredImports): - """Scan code, looking for imported modules and keeping track of the - constants that have been created in order to better tell which - modules are truly missing.""" - opIndex = 0 - arguments = [] - code = co.co_code - numOps = len(code) - while opIndex < numOps: - op = ord(code[opIndex]) - opIndex += 1 - if op >= dis.HAVE_ARGUMENT: - opArg = ord(code[opIndex]) + ord(code[opIndex + 1]) * 256 - opIndex += 2 - if op == LOAD_CONST: - arguments.append(co.co_consts[opArg]) - elif op == IMPORT_NAME: - name = co.co_names[opArg] - if len(arguments) == 2: - relativeImportIndex, fromList = arguments - else: - relativeImportIndex = -1 - fromList, = arguments - if name not in module.excludeNames: - subModule = self._ImportModule(name, deferredImports, - module, relativeImportIndex) - if subModule is not None: - module.globalNames.update(subModule.globalNames) - if fromList and subModule.path is not None: - self._EnsureFromList(module, subModule, fromList, - deferredImports) - elif op == IMPORT_FROM: - opIndex += 3 - elif op not in (BUILD_LIST, INPLACE_ADD): - if op in STORE_OPS: - name = co.co_names[opArg] - if name == "__all__": - module.allNames.extend(arguments) - module.globalNames[name] = None - arguments = [] - for constant in co.co_consts: - if isinstance(constant, type(co)): - self._ScanCode(constant, module, deferredImports) - - def AddAlias(self, name, aliasFor): - """Add an alias for a particular module; when an attempt is made to - import a module using the alias name, import the actual name - instead.""" - self.aliases[name] = aliasFor - - def ExcludeModule(self, name): - """Exclude the named module from the resulting frozen executable.""" - self.excludes[name] = None - self._modules[name] = None - - def IncludeFile(self, path, moduleName = None): - """Include the named file as a module in the frozen executable.""" - name, ext = os.path.splitext(os.path.basename(path)) - if moduleName is None: - moduleName = name - info = (ext, "r", imp.PY_SOURCE) - deferredImports = [] - module = self._LoadModule(moduleName, file(path, "U"), path, info, - deferredImports) - self._ImportDeferredImports(deferredImports) - return module - - def IncludeFiles(self, sourcePath, targetPath): - """Include the files in the given directory in the target build.""" - self.includeFiles.append((sourcePath, targetPath)) - - def IncludeModule(self, name): - """Include the named module in the frozen executable.""" - deferredImports = [] - module = self._ImportModule(name, deferredImports) - self._ImportDeferredImports(deferredImports) - return module - - def IncludePackage(self, name): - """Include the named package and any submodules in the frozen - executable.""" - deferredImports = [] - module = self._ImportModule(name, deferredImports) - if module.path: - self._ImportAllSubModules(module, deferredImports) - self._ImportDeferredImports(deferredImports) - return module - - def ReportMissingModules(self): - if self._badModules: - print "Missing modules:" - names = self._badModules.keys() - names.sort() - for name in names: - callers = self._badModules[name].keys() - callers.sort() - print "?", name, "imported from", ", ".join(callers) - print - - -class Module(object): - - def __init__(self, name): - self.name = name - self.file = None - self.path = None - self.code = None - self.parent = None - self.globalNames = {} - self.excludeNames = {} - self.ignoreNames = {} - self.allNames = [] - self.inZipFile = False - - def __repr__(self): - parts = ["name=%s" % repr(self.name)] - if self.file is not None: - parts.append("file=%s" % repr(self.file)) - if self.path is not None: - parts.append("path=%s" % repr(self.path)) - return "" % ", ".join(parts) - - def AddGlobalName(self, name): - self.globalNames[name] = None - - def ExcludeName(self, name): - self.excludeNames[name] = None - - def IgnoreName(self, name): - self.ignoreNames[name] = None - diff --git a/setup/installer/cx_Freeze/cx_Freeze/freezer.py b/setup/installer/cx_Freeze/cx_Freeze/freezer.py deleted file mode 100644 index e0739e8a4e..0000000000 --- a/setup/installer/cx_Freeze/cx_Freeze/freezer.py +++ /dev/null @@ -1,550 +0,0 @@ -""" -Base class for freezing scripts into executables. -""" - -import datetime -import distutils.sysconfig -import imp -import marshal -import os -import shutil -import socket -import stat -import struct -import sys -import time -import zipfile - -import cx_Freeze -import cx_Freeze.util - -__all__ = [ "ConfigError", "ConstantsModule", "Executable", "Freezer" ] - -if sys.platform == "win32": - pythonDll = "python%s%s.dll" % sys.version_info[:2] - GLOBAL_BIN_PATH_EXCLUDES = [cx_Freeze.util.GetSystemDir()] - GLOBAL_BIN_INCLUDES = [ - pythonDll, - "gdiplus.dll", - "mfc71.dll", - "msvcp71.dll", - "msvcr71.dll" - ] - GLOBAL_BIN_EXCLUDES = [ - "comctl32.dll", - "oci.dll", - "cx_Logging.pyd" - ] -else: - extension = distutils.sysconfig.get_config_var("SO") - pythonSharedLib = "libpython%s.%s%s" % \ - (sys.version_info[:2] + (extension,)) - GLOBAL_BIN_INCLUDES = [pythonSharedLib] - GLOBAL_BIN_EXCLUDES = [ - "libclntsh.so", - "libwtc9.so" - ] - GLOBAL_BIN_PATH_EXCLUDES = ["/lib", "/lib32", "/lib64", "/usr/lib", - "/usr/lib32", "/usr/lib64"] - - -# NOTE: the try: except: block in this code is not necessary under Python 2.4 -# and higher and can be removed once support for Python 2.3 is no longer needed -EXTENSION_LOADER_SOURCE = \ -""" -import imp, os, sys - -found = False -for p in sys.path: - if not os.path.isdir(p): - continue - f = os.path.join(p, "%s") - if not os.path.exists(f): - continue - try: - m = imp.load_dynamic(__name__, f) - except ImportError: - del sys.modules[__name__] - raise - sys.modules[__name__] = m - found = True - break -if not found: - del sys.modules[__name__] - raise ImportError, "No module named %%s" %% __name__ -""" - - -class Freezer(object): - - def __init__(self, executables, constantsModules = [], includes = [], - excludes = [], packages = [], replacePaths = [], compress = None, - optimizeFlag = 0, copyDependentFiles = None, initScript = None, - base = None, path = None, createLibraryZip = None, - appendScriptToExe = None, appendScriptToLibrary = None, - targetDir = None, binIncludes = [], binExcludes = [], - binPathIncludes = [], binPathExcludes = [], icon = None, - includeFiles = []): - self.executables = executables - self.constantsModules = constantsModules - self.includes = includes - self.excludes = excludes - self.packages = packages - self.replacePaths = replacePaths - self.compress = compress - self.optimizeFlag = optimizeFlag - self.copyDependentFiles = copyDependentFiles - self.initScript = initScript - self.base = base - self.path = path - self.createLibraryZip = createLibraryZip - self.appendScriptToExe = appendScriptToExe - self.appendScriptToLibrary = appendScriptToLibrary - self.targetDir = targetDir - self.binIncludes = [os.path.normcase(n) \ - for n in GLOBAL_BIN_INCLUDES + binIncludes] - self.binExcludes = [os.path.normcase(n) \ - for n in GLOBAL_BIN_EXCLUDES + binExcludes] - self.binPathIncludes = [os.path.normcase(n) for n in binPathIncludes] - self.binPathExcludes = [os.path.normcase(n) \ - for n in GLOBAL_BIN_PATH_EXCLUDES + binPathExcludes] - self.icon = icon - self.includeFiles = includeFiles - self._VerifyConfiguration() - - def _CopyFile(self, source, target, copyDependentFiles, - includeMode = False): - normalizedSource = os.path.normcase(os.path.normpath(source)) - normalizedTarget = os.path.normcase(os.path.normpath(target)) - if normalizedTarget in self.filesCopied: - return - if normalizedSource == normalizedTarget: - return - self._RemoveFile(target) - targetDir = os.path.dirname(target) - self._CreateDirectory(targetDir) - print "copying", source, "->", target - shutil.copyfile(source, target) - if includeMode: - shutil.copymode(source, target) - self.filesCopied[normalizedTarget] = None - if copyDependentFiles: - for source in self._GetDependentFiles(source): - target = os.path.join(targetDir, os.path.basename(source)) - self._CopyFile(source, target, copyDependentFiles) - - def _CreateDirectory(self, path): - if not os.path.isdir(path): - print "creating directory", path - os.makedirs(path) - - def _FreezeExecutable(self, exe): - if self.createLibraryZip: - finder = self.finder - else: - finder = self._GetModuleFinder(exe) - if exe.script is None: - scriptModule = None - else: - scriptModule = finder.IncludeFile(exe.script, exe.moduleName) - self._CopyFile(exe.base, exe.targetName, exe.copyDependentFiles, - includeMode = True) - if exe.icon is not None: - if sys.platform == "win32": - cx_Freeze.util.AddIcon(exe.targetName, exe.icon) - else: - targetName = os.path.join(os.path.dirname(exe.targetName), - os.path.basename(exe.icon)) - self._CopyFile(exe.icon, targetName, - copyDependentFiles = False) - if not os.access(exe.targetName, os.W_OK): - mode = os.stat(exe.targetName).st_mode - os.chmod(exe.targetName, mode | stat.S_IWUSR) - if not exe.appendScriptToLibrary: - if exe.appendScriptToExe: - fileName = exe.targetName - else: - baseFileName, ext = os.path.splitext(exe.targetName) - fileName = baseFileName + ".zip" - self._RemoveFile(fileName) - if not self.createLibraryZip and exe.copyDependentFiles: - scriptModule = None - self._WriteModules(fileName, exe.initScript, finder, exe.compress, - exe.copyDependentFiles, scriptModule) - - def _GetBaseFileName(self, argsSource = None): - if argsSource is None: - argsSource = self - name = argsSource.base - if name is None: - if argsSource.copyDependentFiles: - name = "Console" - else: - name = "ConsoleKeepPath" - argsSource.base = self._GetFileName("bases", name) - if argsSource.base is None: - raise ConfigError("no base named %s", name) - - def _GetDependentFiles(self, path): - dependentFiles = self.dependentFiles.get(path) - if dependentFiles is None: - if sys.platform == "win32": - origPath = os.environ["PATH"] - os.environ["PATH"] = origPath + os.pathsep + \ - os.pathsep.join(sys.path) - dependentFiles = cx_Freeze.util.GetDependentFiles(path) - os.environ["PATH"] = origPath - else: - dependentFiles = [] - for line in os.popen('ldd "%s"' % path): - parts = line.strip().split(" => ") - if len(parts) != 2: - continue - dependentFile = parts[1] - if dependentFile == "not found": - print "WARNING: cannot find", parts[0] - continue - pos = dependentFile.find(" (") - if pos >= 0: - dependentFile = dependentFile[:pos].strip() - if dependentFile: - dependentFiles.append(dependentFile) - dependentFiles = self.dependentFiles[path] = \ - [f for f in dependentFiles if self._ShouldCopyFile(f)] - return dependentFiles - - def _GetFileName(self, dir, name): - if os.path.isabs(name): - return name - name = os.path.normcase(name) - fullDir = os.path.join(os.path.dirname(cx_Freeze.__file__), dir) - if os.path.isdir(fullDir): - for fileName in os.listdir(fullDir): - if name == os.path.splitext(os.path.normcase(fileName))[0]: - return os.path.join(fullDir, fileName) - - def _GetInitScriptFileName(self, argsSource = None): - if argsSource is None: - argsSource = self - name = argsSource.initScript - if name is None: - if argsSource.copyDependentFiles: - name = "Console" - else: - name = "ConsoleKeepPath" - argsSource.initScript = self._GetFileName("initscripts", name) - if argsSource.initScript is None: - raise ConfigError("no initscript named %s", name) - - def _GetModuleFinder(self, argsSource = None): - if argsSource is None: - argsSource = self - finder = cx_Freeze.ModuleFinder(self.includeFiles, argsSource.excludes, - argsSource.path, argsSource.replacePaths) - if argsSource.copyDependentFiles: - finder.IncludeModule("imp") - finder.IncludeModule("os") - finder.IncludeModule("sys") - if argsSource.compress: - finder.IncludeModule("zlib") - for name in argsSource.includes: - finder.IncludeModule(name) - for name in argsSource.packages: - finder.IncludePackage(name) - return finder - - def _PrintReport(self, fileName, modules): - print "writing zip file", fileName - print - print " %-25s %s" % ("Name", "File") - print " %-25s %s" % ("----", "----") - for module in modules: - if module.path: - print "P", - else: - print "m", - print "%-25s" % module.name, module.file or "" - print - - def _RemoveFile(self, path): - if os.path.exists(path): - os.chmod(path, 0777) - os.remove(path) - - def _ShouldCopyFile(self, path): - dir, name = os.path.split(os.path.normcase(path)) - parts = name.split(".") - tweaked = False - while True: - if not parts[-1].isdigit(): - break - parts.pop(-1) - tweaked = True - if tweaked: - name = ".".join(parts) - if name in self.binIncludes: - return True - if name in self.binExcludes: - return False - for path in self.binPathIncludes: - if dir.startswith(path): - return True - for path in self.binPathExcludes: - if dir.startswith(path): - return False - return True - - def _VerifyCanAppendToLibrary(self): - if not self.createLibraryZip: - raise ConfigError("script cannot be appended to library zip if " - "one is not being created") - - def _VerifyConfiguration(self): - if self.compress is None: - self.compress = True - if self.copyDependentFiles is None: - self.copyDependentFiles = True - if self.createLibraryZip is None: - self.createLibraryZip = True - if self.appendScriptToExe is None: - self.appendScriptToExe = False - if self.appendScriptToLibrary is None: - self.appendScriptToLibrary = \ - self.createLibraryZip and not self.appendScriptToExe - if self.targetDir is None: - self.targetDir = os.path.abspath("dist") - self._GetInitScriptFileName() - self._GetBaseFileName() - if self.path is None: - self.path = sys.path - if self.appendScriptToLibrary: - self._VerifyCanAppendToLibrary() - for sourceFileName, targetFileName in self.includeFiles: - if not os.path.exists(sourceFileName): - raise ConfigError("cannot find file/directory named %s", - sourceFileName) - if os.path.isabs(targetFileName): - raise ConfigError("target file/directory cannot be absolute") - for executable in self.executables: - executable._VerifyConfiguration(self) - - def _WriteModules(self, fileName, initScript, finder, compress, - copyDependentFiles, scriptModule = None): - initModule = finder.IncludeFile(initScript, "cx_Freeze__init__") - if scriptModule is None: - for module in self.constantsModules: - module.Create(finder) - modules = [m for m in finder.modules \ - if m.name not in self.excludeModules] - else: - modules = [initModule, scriptModule] - self.excludeModules[initModule.name] = None - self.excludeModules[scriptModule.name] = None - itemsToSort = [(m.name, m) for m in modules] - itemsToSort.sort() - modules = [m for n, m in itemsToSort] - self._PrintReport(fileName, modules) - if scriptModule is None: - finder.ReportMissingModules() - targetDir = os.path.dirname(fileName) - self._CreateDirectory(targetDir) - filesToCopy = [] - if os.path.exists(fileName): - mode = "a" - else: - mode = "w" - outFile = zipfile.PyZipFile(fileName, mode, zipfile.ZIP_DEFLATED) - for module in modules: - if module.code is None and module.file is not None: - fileName = os.path.basename(module.file) - baseFileName, ext = os.path.splitext(fileName) - if baseFileName != module.name and module.name != "zlib": - if "." in module.name: - fileName = module.name + ext - generatedFileName = "ExtensionLoader_%s.py" % \ - module.name.replace(".", "_") - module.code = compile(EXTENSION_LOADER_SOURCE % fileName, - generatedFileName, "exec") - target = os.path.join(targetDir, fileName) - filesToCopy.append((module, target)) - if module.code is None: - continue - fileName = "/".join(module.name.split(".")) - if module.path: - fileName += "/__init__" - if module.file is not None and os.path.exists(module.file): - mtime = os.stat(module.file).st_mtime - else: - mtime = time.time() - zipTime = time.localtime(mtime)[:6] - data = imp.get_magic() + struct.pack("" % self.script - - def _VerifyConfiguration(self, freezer): - if self.path is None: - self.path = freezer.path - if self.targetDir is None: - self.targetDir = freezer.targetDir - if self.includes is None: - self.includes = freezer.includes - if self.excludes is None: - self.excludes = freezer.excludes - if self.packages is None: - self.packages = freezer.packages - if self.replacePaths is None: - self.replacePaths = freezer.replacePaths - if self.compress is None: - self.compress = freezer.compress - if self.copyDependentFiles is None: - self.copyDependentFiles = freezer.copyDependentFiles - if self.appendScriptToExe is None: - self.appendScriptToExe = freezer.appendScriptToExe - if self.appendScriptToLibrary is None: - self.appendScriptToLibrary = freezer.appendScriptToLibrary - if self.initScript is None: - self.initScript = freezer.initScript - else: - freezer._GetInitScriptFileName(self) - if self.base is None: - self.base = freezer.base - else: - freezer._GetBaseFileName(self) - if self.appendScriptToLibrary: - freezer._VerifyCanAppendToLibrary() - if self.icon is None: - self.icon = freezer.icon - if self.script is not None: - name, ext = os.path.splitext(os.path.basename(self.script)) - if self.appendScriptToLibrary: - self.moduleName = "%s__main__" % os.path.normcase(name) - else: - self.moduleName = "__main__" - if self.targetName is None: - baseName, ext = os.path.splitext(self.base) - self.targetName = name + ext - self.targetName = os.path.join(self.targetDir, self.targetName) - - -class ConstantsModule(object): - - def __init__(self, releaseString = None, copyright = None, - moduleName = "BUILD_CONSTANTS", timeFormat = "%B %d, %Y %H:%M:%S"): - self.moduleName = moduleName - self.timeFormat = timeFormat - self.values = {} - self.values["BUILD_RELEASE_STRING"] = releaseString - self.values["BUILD_COPYRIGHT"] = copyright - - def Create(self, finder): - """Create the module which consists of declaration statements for each - of the values.""" - today = datetime.datetime.today() - sourceTimestamp = 0 - for module in finder.modules: - if module.file is None: - continue - if module.inZipFile: - continue - if not os.path.exists(module.file): - raise ConfigError("no file named %s", module.file) - timestamp = os.stat(module.file).st_mtime - sourceTimestamp = max(sourceTimestamp, timestamp) - sourceTimestamp = datetime.datetime.fromtimestamp(sourceTimestamp) - self.values["BUILD_TIMESTAMP"] = today.strftime(self.timeFormat) - self.values["BUILD_HOST"] = socket.gethostname().split(".")[0] - self.values["SOURCE_TIMESTAMP"] = \ - sourceTimestamp.strftime(self.timeFormat) - module = finder._AddModule(self.moduleName) - sourceParts = [] - names = self.values.keys() - names.sort() - for name in names: - value = self.values[name] - sourceParts.append("%s = %r" % (name, value)) - source = "\n".join(sourceParts) - module.code = compile(source, "%s.py" % self.moduleName, "exec") - diff --git a/setup/installer/cx_Freeze/cx_Freeze/hooks.py b/setup/installer/cx_Freeze/cx_Freeze/hooks.py deleted file mode 100644 index edc2f78788..0000000000 --- a/setup/installer/cx_Freeze/cx_Freeze/hooks.py +++ /dev/null @@ -1,281 +0,0 @@ -import os -import sys - -def initialize(finder): - """upon initialization of the finder, this routine is called to set up some - automatic exclusions for various platforms.""" - finder.ExcludeModule("FCNTL") - finder.ExcludeModule("os.path") - if os.name == "nt": - finder.ExcludeModule("fcntl") - finder.ExcludeModule("grp") - finder.ExcludeModule("pwd") - finder.ExcludeModule("termios") - else: - finder.ExcludeModule("_winreg") - finder.ExcludeModule("msilib") - finder.ExcludeModule("msvcrt") - finder.ExcludeModule("nt") - if os.name not in ("os2", "ce"): - finder.ExcludeModule("ntpath") - finder.ExcludeModule("nturl2path") - finder.ExcludeModule("pythoncom") - finder.ExcludeModule("pywintypes") - finder.ExcludeModule("winerror") - finder.ExcludeModule("winsound") - finder.ExcludeModule("win32api") - finder.ExcludeModule("win32con") - finder.ExcludeModule("win32event") - finder.ExcludeModule("win32file") - finder.ExcludeModule("win32pdh") - finder.ExcludeModule("win32pipe") - finder.ExcludeModule("win32process") - finder.ExcludeModule("win32security") - finder.ExcludeModule("win32service") - finder.ExcludeModule("wx.activex") - if os.name != "posix": - finder.ExcludeModule("posix") - if os.name != "mac": - finder.ExcludeModule("Carbon") - finder.ExcludeModule("gestalt") - finder.ExcludeModule("ic") - finder.ExcludeModule("mac") - finder.ExcludeModule("MacOS") - finder.ExcludeModule("macpath") - finder.ExcludeModule("macurl2path") - if os.name != "nt": - finder.ExcludeModule("EasyDialogs") - if os.name != "os2": - finder.ExcludeModule("os2") - finder.ExcludeModule("os2emxpath") - finder.ExcludeModule("_emx_link") - if os.name != "ce": - finder.ExcludeModule("ce") - if os.name != "riscos": - finder.ExcludeModule("riscos") - finder.ExcludeModule("riscosenviron") - finder.ExcludeModule("riscospath") - finder.ExcludeModule("rourl2path") - if sys.platform[:4] != "java": - finder.ExcludeModule("java.lang") - finder.ExcludeModule("org.python.core") - - -def load_cElementTree(finder, module): - """the cElementTree module implicitly loads the elementtree.ElementTree - module; make sure this happens.""" - finder.IncludeModule("elementtree.ElementTree") - - -def load_ceODBC(finder, module): - """the ceODBC module implicitly imports both datetime and decimal; make - sure this happens.""" - finder.IncludeModule("datetime") - finder.IncludeModule("decimal") - - -def load_cx_Oracle(finder, module): - """the cx_Oracle module implicitly imports datetime; make sure this - happens.""" - finder.IncludeModule("datetime") - - -def load_docutils_frontend(finder, module): - """The optik module is the old name for the optparse module; ignore the - module if it cannot be found.""" - module.IgnoreName("optik") - - -def load_dummy_threading(finder, module): - """the dummy_threading module plays games with the name of the threading - module for its own purposes; ignore that here""" - finder.ExcludeModule("_dummy_threading") - - -def load_email(finder, module): - """the email package has a bunch of aliases as the submodule names were - all changed to lowercase in Python 2.5; mimic that here.""" - if sys.version_info[:2] >= (2, 5): - for name in ("Charset", "Encoders", "Errors", "FeedParser", - "Generator", "Header", "Iterators", "Message", "Parser", - "Utils", "base64MIME", "quopriMIME"): - finder.AddAlias("email.%s" % name, "email.%s" % name.lower()) - - -def load_ftplib(finder, module): - """the ftplib module attempts to import the SOCKS module; ignore this - module if it cannot be found""" - module.IgnoreName("SOCKS") - - -def load_matplotlib(finder, module): - """the matplotlib module requires data to be found in mpl-data in the - same directory as the frozen executable so oblige it""" - dir = os.path.join(module.path[0], "mpl-data") - finder.IncludeFiles(dir, "mpl-data") - - -def load_matplotlib_numerix(finder, module): - """the numpy.numerix module loads a number of modules dynamically""" - for name in ("ma", "fft", "linear_algebra", "random_array", "mlab"): - finder.IncludeModule("%s.%s" % (module.name, name)) - - -def load_numpy_linalg(finder, module): - """the numpy.linalg module implicitly loads the lapack_lite module; make - sure this happens""" - finder.IncludeModule("numpy.linalg.lapack_lite") - - -def load_pty(finder, module): - """The sgi module is not needed for this module to function.""" - module.IgnoreName("sgi") - - -def load_pythoncom(finder, module): - """the pythoncom module is actually contained in a DLL but since those - cannot be loaded directly in Python 2.5 and higher a special module is - used to perform that task; simply use that technique directly to - determine the name of the DLL and ensure it is included as a normal - extension; also load the pywintypes module which is implicitly - loaded.""" - import pythoncom - module.file = pythoncom.__file__ - module.code = None - finder.IncludeModule("pywintypes") - - -def load_pywintypes(finder, module): - """the pywintypes module is actually contained in a DLL but since those - cannot be loaded directly in Python 2.5 and higher a special module is - used to perform that task; simply use that technique directly to - determine the name of the DLL and ensure it is included as a normal - extension.""" - import pywintypes - module.file = pywintypes.__file__ - module.code = None - - -def load_PyQt4_Qt(finder, module): - """the PyQt4.Qt module is an extension module which imports a number of - other modules and injects their namespace into its own. It seems a - foolish way of doing things but perhaps there is some hidden advantage - to this technique over pure Python; ignore the absence of some of - the modules since not every installation includes all of them.""" - finder.IncludeModule("PyQt4.QtCore") - finder.IncludeModule("PyQt4.QtGui") - finder.IncludeModule("sip") - for name in ("PyQt4.QtSvg", "PyQt4.Qsci", "PyQt4.QtAssistant", - "PyQt4.QtNetwork", "PyQt4.QtOpenGL", "PyQt4.QtScript", "PyQt4._qt", - "PyQt4.QtSql", "PyQt4.QtSvg", "PyQt4.QtTest", "PyQt4.QtXml"): - try: - finder.IncludeModule(name) - except ImportError: - pass - - -def load_Tkinter(finder, module): - """the Tkinter module has data files that are required to be loaded so - ensure that they are copied into the directory that is expected at - runtime.""" - import Tkinter - import _tkinter - tk = _tkinter.create() - tclDir = os.path.dirname(tk.call("info", "library")) - tclSourceDir = os.path.join(tclDir, "tcl%s" % _tkinter.TCL_VERSION) - tkSourceDir = os.path.join(tclDir, "tk%s" % _tkinter.TK_VERSION) - finder.IncludeFiles(tclSourceDir, "tcl") - finder.IncludeFiles(tkSourceDir, "tk") - - -def load_tempfile(finder, module): - """the tempfile module attempts to load the fcntl and thread modules but - continues if these modules cannot be found; ignore these modules if they - cannot be found.""" - module.IgnoreName("fcntl") - module.IgnoreName("thread") - - -def load_time(finder, module): - """the time module implicitly loads _strptime; make sure this happens.""" - finder.IncludeModule("_strptime") - - -def load_win32api(finder, module): - """the win32api module implicitly loads the pywintypes module; make sure - this happens.""" - finder.IncludeModule("pywintypes") - - -def load_win32com(finder, module): - """the win32com package manipulates its search path at runtime to include - the sibling directory called win32comext; simulate that by changing the - search path in a similar fashion here.""" - baseDir = os.path.dirname(os.path.dirname(module.file)) - module.path.append(os.path.join(baseDir, "win32comext")) - - -def load_win32file(finder, module): - """the win32api module implicitly loads the pywintypes module; make sure - this happens.""" - finder.IncludeModule("pywintypes") - - -def load_xml(finder, module): - """the builtin xml package attempts to load the _xmlplus module to see if - that module should take its role instead; ignore the failure to find - this module, though.""" - module.IgnoreName("_xmlplus") - - -def load_xml_etree_cElementTree(finder, module): - """the xml.etree.cElementTree module implicitly loads the - xml.etree.ElementTree module; make sure this happens.""" - finder.IncludeModule("xml.etree.ElementTree") - -def load_IPython(finder, module): - ipy = os.path.join(os.path.dirname(module.file), 'Extensions') - extensions = set([]) - for m in os.listdir(ipy): - extensions.add(os.path.splitext(m)[0]) - extensions.remove('__init__') - for m in extensions: - finder.IncludeModule('IPython.Extensions.'+m) - -def load_lxml(finder, module): - finder.IncludeModule('lxml._elementpath') - -def load_cherrypy(finder, module): - finder.IncludeModule('cherrypy.lib.encoding') - -def missing_cElementTree(finder, caller): - """the cElementTree has been incorporated into the standard library in - Python 2.5 so ignore its absence if it cannot found.""" - if sys.version_info[:2] >= (2, 5): - caller.IgnoreName("cElementTree") - - -def missing_EasyDialogs(finder, caller): - """the EasyDialogs module is not normally present on Windows but it also - may be so instead of excluding it completely, ignore it if it can't be - found""" - if sys.platform == "win32": - caller.IgnoreName("EasyDialogs") - - -def missing_readline(finder, caller): - """the readline module is not normally present on Windows but it also may - be so instead of excluding it completely, ignore it if it can't be - found""" - if sys.platform == "win32": - caller.IgnoreName("readline") - - -def missing_xml_etree(finder, caller): - """the xml.etree package is new for Python 2.5 but it is common practice - to use a try..except.. block in order to support versions earlier than - Python 2.5 transparently; ignore the absence of the package in this - situation.""" - if sys.version_info[:2] < (2, 5): - caller.IgnoreName("xml.etree") - diff --git a/setup/installer/cx_Freeze/cx_Freeze/main.py b/setup/installer/cx_Freeze/cx_Freeze/main.py deleted file mode 100644 index 1704c598d2..0000000000 --- a/setup/installer/cx_Freeze/cx_Freeze/main.py +++ /dev/null @@ -1,171 +0,0 @@ -import optparse -import os -import shutil -import stat -import sys - -import cx_Freeze - -__all__ = ["main"] - -USAGE = \ -""" -%prog [options] [SCRIPT] - -Freeze a Python script and all of its referenced modules to a base -executable which can then be distributed without requiring a Python -installation.""" - -VERSION = \ -""" -%%prog %s -Copyright (c) 2007-2008 Colt Engineering. All rights reserved. -Copyright (c) 2001-2006 Computronix Corporation. All rights reserved.""" % \ - cx_Freeze.version - - -def ParseCommandLine(): - parser = optparse.OptionParser(version = VERSION.strip(), - usage = USAGE.strip()) - parser.add_option("-O", - action = "count", - default = 0, - dest = "optimized", - help = "optimize generated bytecode as per PYTHONOPTIMIZE; " - "use -OO in order to remove doc strings") - parser.add_option("-c", "--compress", - action = "store_true", - dest = "compress", - help = "compress byte code in zip files") - parser.add_option("--base-name", - dest = "baseName", - metavar = "NAME", - help = "file on which to base the target file; if the name of the " - "file is not an absolute file name, the subdirectory bases " - "(rooted in the directory in which the freezer is found) " - "will be searched for a file matching the name") - parser.add_option("--init-script", - dest = "initScript", - metavar = "NAME", - help = "script which will be executed upon startup; if the name " - "of the file is not an absolute file name, the " - "subdirectory initscripts (rooted in the directory in " - "which the cx_Freeze package is found) will be searched " - "for a file matching the name") - parser.add_option("--target-dir", "--install-dir", - dest = "targetDir", - metavar = "DIR", - help = "the directory in which to place the target file and " - "any dependent files") - parser.add_option("--target-name", - dest = "targetName", - metavar = "NAME", - help = "the name of the file to create instead of the base name " - "of the script and the extension of the base binary") - parser.add_option("--no-copy-deps", - dest = "copyDeps", - default = True, - action = "store_false", - help = "do not copy the dependent files (extensions, shared " - "libraries, etc.) to the target directory; this also " - "modifies the default init script to ConsoleKeepPath.py " - "and means that the target executable requires a Python " - "installation to execute properly") - parser.add_option("--default-path", - action = "append", - dest = "defaultPath", - metavar = "DIRS", - help = "list of paths separated by the standard path separator " - "for the platform which will be used to initialize " - "sys.path prior to running the module finder") - parser.add_option("--include-path", - action = "append", - dest = "includePath", - metavar = "DIRS", - help = "list of paths separated by the standard path separator " - "for the platform which will be used to modify sys.path " - "prior to running the module finder") - parser.add_option("--replace-paths", - dest = "replacePaths", - metavar = "DIRECTIVES", - help = "replace all the paths in modules found in the given paths " - "with the given replacement string; multiple values are " - "separated by the standard path separator and each value " - "is of the form path=replacement_string; path can be * " - "which means all paths not already specified") - parser.add_option("--include-modules", - dest = "includeModules", - metavar = "NAMES", - help = "comma separated list of modules to include") - parser.add_option("--exclude-modules", - dest = "excludeModules", - metavar = "NAMES", - help = "comma separated list of modules to exclude") - parser.add_option("--ext-list-file", - dest = "extListFile", - metavar = "NAME", - help = "name of file in which to place the list of dependent files " - "which were copied into the target directory") - parser.add_option("-z", "--zip-include", - dest = "zipIncludes", - action = "append", - default = [], - metavar = "SPEC", - help = "name of file to add to the zip file or a specification of " - "the form name=arcname which will specify the archive name " - "to use; multiple --zip-include arguments can be used") - options, args = parser.parse_args() - if len(args) == 0: - options.script = None - elif len(args) == 1: - options.script, = args - else: - parser.error("only one script can be specified") - if not args and options.includeModules is None and options.copyDeps: - parser.error("script or a list of modules must be specified") - if not args and options.targetName is None: - parser.error("script or a target name must be specified") - if options.excludeModules: - options.excludeModules = options.excludeModules.split(",") - else: - options.excludeModules = [] - if options.includeModules: - options.includeModules = options.includeModules.split(",") - else: - options.includeModules = [] - replacePaths = [] - if options.replacePaths: - for directive in options.replacePaths.split(os.pathsep): - fromPath, replacement = directive.split("=") - replacePaths.append((fromPath, replacement)) - options.replacePaths = replacePaths - if options.defaultPath is not None: - sys.path = [p for mp in options.defaultPath \ - for p in mp.split(os.pathsep)] - if options.includePath is not None: - paths = [p for mp in options.includePath for p in mp.split(os.pathsep)] - sys.path = paths + sys.path - if options.script is not None: - sys.path.insert(0, os.path.dirname(options.script)) - return options - - -def main(): - options = ParseCommandLine() - executables = [cx_Freeze.Executable(options.script, - targetName = options.targetName)] - freezer = cx_Freeze.Freezer(executables, - includes = options.includeModules, - excludes = options.excludeModules, - replacePaths = options.replacePaths, - compress = options.compress, - optimizeFlag = options.optimized, - copyDependentFiles = options.copyDeps, - initScript = options.initScript, - base = options.baseName, - path = None, - createLibraryZip = False, - appendScriptToExe = True, - targetDir = options.targetDir) - freezer.Freeze() - diff --git a/setup/installer/cx_Freeze/cx_Freeze/windist.py b/setup/installer/cx_Freeze/cx_Freeze/windist.py deleted file mode 100644 index 51af544771..0000000000 --- a/setup/installer/cx_Freeze/cx_Freeze/windist.py +++ /dev/null @@ -1,337 +0,0 @@ -import distutils.command.bdist_msi -import msilib -import os - -__all__ = [ "bdist_msi" ] - -# force the remove existing products action to happen first since Windows -# installer appears to be braindead and doesn't handle files shared between -# different "products" very well -sequence = msilib.sequence.InstallExecuteSequence -for index, info in enumerate(sequence): - if info[0] == u'RemoveExistingProducts': - sequence[index] = (info[0], info[1], 1450) - - -class bdist_msi(distutils.command.bdist_msi.bdist_msi): - user_options = distutils.command.bdist_msi.bdist_msi.user_options + [ - ('add-to-path=', None, 'add target dir to PATH environment variable'), - ('upgrade-code=', None, 'upgrade code to use') - ] - x = y = 50 - width = 370 - height = 300 - title = "[ProductName] Setup" - modeless = 1 - modal = 3 - - def add_config(self, fullname): - initialTargetDir = self.get_initial_target_dir(fullname) - if self.add_to_path is None: - self.add_to_path = False - for executable in self.distribution.executables: - if os.path.basename(executable.base).startswith("Console"): - self.add_to_path = True - break - if self.add_to_path: - msilib.add_data(self.db, 'Environment', - [("E_PATH", "Path", r"[~];[TARGETDIR]", "TARGETDIR")]) - msilib.add_data(self.db, 'CustomAction', - [("InitialTargetDir", 256 + 51, "TARGETDIR", initialTargetDir) - ]) - msilib.add_data(self.db, 'InstallExecuteSequence', - [("InitialTargetDir", 'TARGETDIR=""', 401)]) - msilib.add_data(self.db, 'InstallUISequence', - [("PrepareDlg", None, 140), - ("InitialTargetDir", 'TARGETDIR=""', 401), - ("SelectDirectoryDlg", "not Installed", 1230), - ("MaintenanceTypeDlg", - "Installed and not Resume and not Preselected", 1250), - ("ProgressDlg", None, 1280) - ]) - - def add_cancel_dialog(self): - dialog = msilib.Dialog(self.db, "CancelDlg", 50, 10, 260, 85, 3, - self.title, "No", "No", "No") - dialog.text("Text", 48, 15, 194, 30, 3, - "Are you sure you want to cancel [ProductName] installation?") - button = dialog.pushbutton("Yes", 72, 57, 56, 17, 3, "Yes", "No") - button.event("EndDialog", "Exit") - button = dialog.pushbutton("No", 132, 57, 56, 17, 3, "No", "Yes") - button.event("EndDialog", "Return") - - def add_error_dialog(self): - dialog = msilib.Dialog(self.db, "ErrorDlg", 50, 10, 330, 101, 65543, - self.title, "ErrorText", None, None) - dialog.text("ErrorText", 50, 9, 280, 48, 3, "") - for text, x in [("No", 120), ("Yes", 240), ("Abort", 0), - ("Cancel", 42), ("Ignore", 81), ("Ok", 159), ("Retry", 198)]: - button = dialog.pushbutton(text[0], x, 72, 81, 21, 3, text, None) - button.event("EndDialog", "Error%s" % text) - - def add_exit_dialog(self): - dialog = distutils.command.bdist_msi.PyDialog(self.db, "ExitDialog", - self.x, self.y, self.width, self.height, self.modal, - self.title, "Finish", "Finish", "Finish") - dialog.title("Completing the [ProductName] installer") - dialog.back("< Back", "Finish", active = False) - dialog.cancel("Cancel", "Back", active = False) - dialog.text("Description", 15, 235, 320, 20, 0x30003, - "Click the Finish button to exit the installer.") - button = dialog.next("Finish", "Cancel", name = "Finish") - button.event("EndDialog", "Return") - - def add_fatal_error_dialog(self): - dialog = distutils.command.bdist_msi.PyDialog(self.db, "FatalError", - self.x, self.y, self.width, self.height, self.modal, - self.title, "Finish", "Finish", "Finish") - dialog.title("[ProductName] installer ended prematurely") - dialog.back("< Back", "Finish", active = False) - dialog.cancel("Cancel", "Back", active = False) - dialog.text("Description1", 15, 70, 320, 80, 0x30003, - "[ProductName] setup ended prematurely because of an error. " - "Your system has not been modified. To install this program " - "at a later time, please run the installation again.") - dialog.text("Description2", 15, 155, 320, 20, 0x30003, - "Click the Finish button to exit the installer.") - button = dialog.next("Finish", "Cancel", name = "Finish") - button.event("EndDialog", "Exit") - - def add_files_in_use_dialog(self): - dialog = distutils.command.bdist_msi.PyDialog(self.db, "FilesInUse", - self.x, self.y, self.width, self.height, 19, self.title, - "Retry", "Retry", "Retry", bitmap = False) - dialog.text("Title", 15, 6, 200, 15, 0x30003, - r"{\DlgFontBold8}Files in Use") - dialog.text("Description", 20, 23, 280, 20, 0x30003, - "Some files that need to be updated are currently in use.") - dialog.text("Text", 20, 55, 330, 50, 3, - "The following applications are using files that need to be " - "updated by this setup. Close these applications and then " - "click Retry to continue the installation or Cancel to exit " - "it.") - dialog.control("List", "ListBox", 20, 107, 330, 130, 7, - "FileInUseProcess", None, None, None) - button = dialog.back("Exit", "Ignore", name = "Exit") - button.event("EndDialog", "Exit") - button = dialog.next("Ignore", "Retry", name = "Ignore") - button.event("EndDialog", "Ignore") - button = dialog.cancel("Retry", "Exit", name = "Retry") - button.event("EndDialog", "Retry") - - def add_maintenance_type_dialog(self): - dialog = distutils.command.bdist_msi.PyDialog(self.db, - "MaintenanceTypeDlg", self.x, self.y, self.width, self.height, - self.modal, self.title, "Next", "Next", "Cancel") - dialog.title("Welcome to the [ProductName] Setup Wizard") - dialog.text("BodyText", 15, 63, 330, 42, 3, - "Select whether you want to repair or remove [ProductName].") - group = dialog.radiogroup("RepairRadioGroup", 15, 108, 330, 60, 3, - "MaintenanceForm_Action", "", "Next") - group.add("Repair", 0, 18, 300, 17, "&Repair [ProductName]") - group.add("Remove", 0, 36, 300, 17, "Re&move [ProductName]") - dialog.back("< Back", None, active = False) - button = dialog.next("Finish", "Cancel") - button.event("[REINSTALL]", "ALL", - 'MaintenanceForm_Action="Repair"', 5) - button.event("[Progress1]", "Repairing", - 'MaintenanceForm_Action="Repair"', 6) - button.event("[Progress2]", "repairs", - 'MaintenanceForm_Action="Repair"', 7) - button.event("Reinstall", "ALL", - 'MaintenanceForm_Action="Repair"', 8) - button.event("[REMOVE]", "ALL", - 'MaintenanceForm_Action="Remove"', 11) - button.event("[Progress1]", "Removing", - 'MaintenanceForm_Action="Remove"', 12) - button.event("[Progress2]", "removes", - 'MaintenanceForm_Action="Remove"', 13) - button.event("Remove", "ALL", - 'MaintenanceForm_Action="Remove"', 14) - button.event("EndDialog", "Return", - 'MaintenanceForm_Action<>"Change"', 20) - button = dialog.cancel("Cancel", "RepairRadioGroup") - button.event("SpawnDialog", "CancelDlg") - - def add_prepare_dialog(self): - dialog = distutils.command.bdist_msi.PyDialog(self.db, "PrepareDlg", - self.x, self.y, self.width, self.height, self.modeless, - self.title, "Cancel", "Cancel", "Cancel") - dialog.text("Description", 15, 70, 320, 40, 0x30003, - "Please wait while the installer prepares to guide you through" - "the installation.") - dialog.title("Welcome to the [ProductName] installer") - text = dialog.text("ActionText", 15, 110, 320, 20, 0x30003, - "Pondering...") - text.mapping("ActionText", "Text") - text = dialog.text("ActionData", 15, 135, 320, 30, 0x30003, None) - text.mapping("ActionData", "Text") - dialog.back("Back", None, active = False) - dialog.next("Next", None, active = False) - button = dialog.cancel("Cancel", None) - button.event("SpawnDialog", "CancelDlg") - - def add_progress_dialog(self): - dialog = distutils.command.bdist_msi.PyDialog(self.db, "ProgressDlg", - self.x, self.y, self.width, self.height, self.modeless, - self.title, "Cancel", "Cancel", "Cancel", bitmap = False) - dialog.text("Title", 20, 15, 200, 15, 0x30003, - r"{\DlgFontBold8}[Progress1] [ProductName]") - dialog.text("Text", 35, 65, 300, 30, 3, - "Please wait while the installer [Progress2] [ProductName].") - dialog.text("StatusLabel", 35, 100 ,35, 20, 3, "Status:") - text = dialog.text("ActionText", 70, 100, self.width - 70, 20, 3, - "Pondering...") - text.mapping("ActionText", "Text") - control = dialog.control("ProgressBar", "ProgressBar", 35, 120, 300, - 10, 65537, None, "Progress done", None, None) - control.mapping("SetProgress", "Progress") - dialog.back("< Back", "Next", active = False) - dialog.next("Next >", "Cancel", active = False) - button = dialog.cancel("Cancel", "Back") - button.event("SpawnDialog", "CancelDlg") - - def add_properties(self): - metadata = self.distribution.metadata - props = [ - ('DistVersion', metadata.get_version()), - ('DefaultUIFont', 'DlgFont8'), - ('ErrorDialog', 'ErrorDlg'), - ('Progress1', 'Install'), - ('Progress2', 'installs'), - ('MaintenanceForm_Action', 'Repair') - ] - email = metadata.author_email or metadata.maintainer_email - if email: - props.append(("ARPCONTACT", email)) - if metadata.url: - props.append(("ARPURLINFOABOUT", metadata.url)) - if self.upgrade_code is not None: - props.append(("UpgradeCode", self.upgrade_code)) - msilib.add_data(self.db, 'Property', props) - - def add_select_directory_dialog(self): - dialog = distutils.command.bdist_msi.PyDialog(self.db, - "SelectDirectoryDlg", self.x, self.y, self.width, self.height, - self.modal, self.title, "Next", "Next", "Cancel") - dialog.title("Select destination directory") - dialog.back("< Back", None, active = False) - button = dialog.next("Next >", "Cancel") - button.event("SetTargetPath", "TARGETDIR", ordering = 1) - button.event("SpawnWaitDialog", "WaitForCostingDlg", ordering = 2) - button.event("EndDialog", "Return", ordering = 3) - button = dialog.cancel("Cancel", "DirectoryCombo") - button.event("SpawnDialog", "CancelDlg") - dialog.control("DirectoryCombo", "DirectoryCombo", 15, 70, 272, 80, - 393219, "TARGETDIR", None, "DirectoryList", None) - dialog.control("DirectoryList", "DirectoryList", 15, 90, 308, 136, 3, - "TARGETDIR", None, "PathEdit", None) - dialog.control("PathEdit", "PathEdit", 15, 230, 306, 16, 3, - "TARGETDIR", None, "Next", None) - button = dialog.pushbutton("Up", 306, 70, 18, 18, 3, "Up", None) - button.event("DirectoryListUp", "0") - button = dialog.pushbutton("NewDir", 324, 70, 30, 18, 3, "New", None) - button.event("DirectoryListNew", "0") - - def add_text_styles(self): - msilib.add_data(self.db, 'TextStyle', - [("DlgFont8", "Tahoma", 9, None, 0), - ("DlgFontBold8", "Tahoma", 8, None, 1), - ("VerdanaBold10", "Verdana", 10, None, 1), - ("VerdanaRed9", "Verdana", 9, 255, 0) - ]) - - def add_ui(self): - self.add_text_styles() - self.add_error_dialog() - self.add_fatal_error_dialog() - self.add_cancel_dialog() - self.add_exit_dialog() - self.add_user_exit_dialog() - self.add_files_in_use_dialog() - self.add_wait_for_costing_dialog() - self.add_prepare_dialog() - self.add_select_directory_dialog() - self.add_progress_dialog() - self.add_maintenance_type_dialog() - - def add_upgrade_config(self, sversion): - if self.upgrade_code is not None: - msilib.add_data(self.db, 'Upgrade', - [(self.upgrade_code, None, sversion, None, 513, None, - "REMOVEOLDVERSION"), - (self.upgrade_code, sversion, None, None, 257, None, - "REMOVENEWVERSION") - ]) - - def add_user_exit_dialog(self): - dialog = distutils.command.bdist_msi.PyDialog(self.db, "UserExit", - self.x, self.y, self.width, self.height, self.modal, - self.title, "Finish", "Finish", "Finish") - dialog.title("[ProductName] installer was interrupted") - dialog.back("< Back", "Finish", active = False) - dialog.cancel("Cancel", "Back", active = False) - dialog.text("Description1", 15, 70, 320, 80, 0x30003, - "[ProductName] setup was interrupted. Your system has not " - "been modified. To install this program at a later time, " - "please run the installation again.") - dialog.text("Description2", 15, 155, 320, 20, 0x30003, - "Click the Finish button to exit the installer.") - button = dialog.next("Finish", "Cancel", name = "Finish") - button.event("EndDialog", "Exit") - - def add_wait_for_costing_dialog(self): - dialog = msilib.Dialog(self.db, "WaitForCostingDlg", 50, 10, 260, 85, - self.modal, self.title, "Return", "Return", "Return") - dialog.text("Text", 48, 15, 194, 30, 3, - "Please wait while the installer finishes determining your " - "disk space requirements.") - button = dialog.pushbutton("Return", 102, 57, 56, 17, 3, "Return", - None) - button.event("EndDialog", "Exit") - - def get_initial_target_dir(self, fullname): - return r"[ProgramFilesFolder]\%s" % fullname - - def get_installer_filename(self, fullname): - return os.path.join(self.dist_dir, "%s.msi" % fullname) - - def initialize_options(self): - distutils.command.bdist_msi.bdist_msi.initialize_options(self) - self.upgrade_code = None - self.add_to_path = None - - def run(self): - if not self.skip_build: - self.run_command('build') - install = self.reinitialize_command('install', reinit_subcommands = 1) - install.prefix = self.bdist_dir - install.skip_build = self.skip_build - install.warn_dir = 0 - distutils.log.info("installing to %s", self.bdist_dir) - install.ensure_finalized() - install.run() - self.mkpath(self.dist_dir) - fullname = self.distribution.get_fullname() - filename = os.path.abspath(self.get_installer_filename(fullname)) - if os.path.exists(filename): - os.unlink(filename) - metadata = self.distribution.metadata - author = metadata.author or metadata.maintainer or "UNKNOWN" - version = metadata.get_version() - sversion = "%d.%d.%d" % \ - distutils.version.StrictVersion(version).version - self.db = msilib.init_database(filename, msilib.schema, - self.distribution.metadata.name, msilib.gen_uuid(), sversion, - author) - msilib.add_tables(self.db, msilib.sequence) - self.add_properties() - self.add_config(fullname) - self.add_upgrade_config(sversion) - self.add_ui() - self.add_files() - self.db.Commit() - if not self.keep_temp: - distutils.dir_util.remove_tree(self.bdist_dir, - dry_run = self.dry_run) - diff --git a/setup/installer/cx_Freeze/cxfreeze b/setup/installer/cx_Freeze/cxfreeze deleted file mode 100755 index acd6789833..0000000000 --- a/setup/installer/cx_Freeze/cxfreeze +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/python - -from cx_Freeze import main - -main() - diff --git a/setup/installer/cx_Freeze/initscripts/Console.py b/setup/installer/cx_Freeze/initscripts/Console.py deleted file mode 100755 index e10649d722..0000000000 --- a/setup/installer/cx_Freeze/initscripts/Console.py +++ /dev/null @@ -1,35 +0,0 @@ -#------------------------------------------------------------------------------ -# Console.py -# Initialization script for cx_Freeze which manipulates the path so that the -# directory in which the executable is found is searched for extensions but -# no other directory is searched. It also sets the attribute sys.frozen so that -# the Win32 extensions behave as expected. -#------------------------------------------------------------------------------ - -import encodings -import os -import sys -import warnings -import zipimport - -sys.frozen = True -sys.path = sys.path[:4] - -os.environ["TCL_LIBRARY"] = os.path.join(DIR_NAME, "tcl") -os.environ["TK_LIBRARY"] = os.path.join(DIR_NAME, "tk") - -m = __import__("__main__") -importer = zipimport.zipimporter(INITSCRIPT_ZIP_FILE_NAME) -if INITSCRIPT_ZIP_FILE_NAME != SHARED_ZIP_FILE_NAME: - moduleName = m.__name__ -else: - name, ext = os.path.splitext(os.path.basename(os.path.normcase(FILE_NAME))) - moduleName = "%s__main__" % name -code = importer.get_code(moduleName) -exec code in m.__dict__ - -if sys.version_info[:2] >= (2, 5): - module = sys.modules.get("threading") - if module is not None: - module._shutdown() - diff --git a/setup/installer/cx_Freeze/initscripts/ConsoleKeepPath.py b/setup/installer/cx_Freeze/initscripts/ConsoleKeepPath.py deleted file mode 100755 index 60151a1ff6..0000000000 --- a/setup/installer/cx_Freeze/initscripts/ConsoleKeepPath.py +++ /dev/null @@ -1,19 +0,0 @@ -#------------------------------------------------------------------------------ -# ConsoleKeepPath.py -# Initialization script for cx_Freeze which leaves the path alone and does -# not set the sys.frozen attribute. -#------------------------------------------------------------------------------ - -import sys -import zipimport - -m = __import__("__main__") -importer = zipimport.zipimporter(INITSCRIPT_ZIP_FILE_NAME) -code = importer.get_code(m.__name__) -exec code in m.__dict__ - -if sys.version_info[:2] >= (2, 5): - module = sys.modules.get("threading") - if module is not None: - module._shutdown() - diff --git a/setup/installer/cx_Freeze/initscripts/ConsoleSetLibPath.py b/setup/installer/cx_Freeze/initscripts/ConsoleSetLibPath.py deleted file mode 100755 index b558652c0a..0000000000 --- a/setup/installer/cx_Freeze/initscripts/ConsoleSetLibPath.py +++ /dev/null @@ -1,38 +0,0 @@ -#------------------------------------------------------------------------------ -# ConsoleSetLibPath.py -# Initialization script for cx_Freeze which manipulates the path so that the -# directory in which the executable is found is searched for extensions but -# no other directory is searched. The environment variable LD_LIBRARY_PATH is -# manipulated first, however, to ensure that shared libraries found in the -# target directory are found. This requires a restart of the executable because -# the environment variable LD_LIBRARY_PATH is only checked at startup. -#------------------------------------------------------------------------------ - -import encodings -import os -import sys -import warnings -import zipimport - -paths = os.environ.get("LD_LIBRARY_PATH", "").split(os.pathsep) -if DIR_NAME not in paths: - paths.insert(0, DIR_NAME) - os.environ["LD_LIBRARY_PATH"] = os.pathsep.join(paths) - os.execv(sys.executable, sys.argv) - -sys.frozen = True -sys.path = sys.path[:4] - -os.environ["TCL_LIBRARY"] = os.path.join(DIR_NAME, "tcl") -os.environ["TK_LIBRARY"] = os.path.join(DIR_NAME, "tk") - -m = __import__("__main__") -importer = zipimport.zipimporter(INITSCRIPT_ZIP_FILE_NAME) -code = importer.get_code(m.__name__) -exec code in m.__dict__ - -if sys.version_info[:2] >= (2, 5): - module = sys.modules.get("threading") - if module is not None: - module._shutdown() - diff --git a/setup/installer/cx_Freeze/initscripts/SharedLib.py b/setup/installer/cx_Freeze/initscripts/SharedLib.py deleted file mode 100755 index 0445367010..0000000000 --- a/setup/installer/cx_Freeze/initscripts/SharedLib.py +++ /dev/null @@ -1,20 +0,0 @@ -#------------------------------------------------------------------------------ -# SharedLib.py -# Initialization script for cx_Freeze which behaves similarly to the one for -# console based applications but must handle the case where Python has already -# been initialized and another DLL of this kind has been loaded. As such it -# does not block the path unless sys.frozen is not already set. -#------------------------------------------------------------------------------ - -import encodings -import os -import sys -import warnings - -if not hasattr(sys, "frozen"): - sys.frozen = True - sys.path = sys.path[:4] - -os.environ["TCL_LIBRARY"] = os.path.join(DIR_NAME, "tcl") -os.environ["TK_LIBRARY"] = os.path.join(DIR_NAME, "tk") - diff --git a/setup/installer/cx_Freeze/initscripts/SharedLibSource.py b/setup/installer/cx_Freeze/initscripts/SharedLibSource.py deleted file mode 100755 index 3edae93694..0000000000 --- a/setup/installer/cx_Freeze/initscripts/SharedLibSource.py +++ /dev/null @@ -1,23 +0,0 @@ -#------------------------------------------------------------------------------ -# SharedLibSource.py -# Initialization script for cx_Freeze which imports the site module (as per -# normal processing of a Python script) and then searches for a file with the -# same name as the shared library but with the extension .pth. The entries in -# this file are used to modify the path to use for subsequent imports. -#------------------------------------------------------------------------------ - -import os -import sys -import warnings - -# the site module must be imported for normal behavior to take place; it is -# done dynamically so that cx_Freeze will not add all modules referenced by -# the site module to the frozen executable -__import__("site") - -# now locate the pth file to modify the path appropriately -baseName, ext = os.path.splitext(FILE_NAME) -pathFileName = baseName + ".pth" -sys.path = [s.strip() for s in file(pathFileName).read().splitlines()] + \ - sys.path - diff --git a/setup/installer/cx_Freeze/samples/advanced/advanced_1.py b/setup/installer/cx_Freeze/samples/advanced/advanced_1.py deleted file mode 100644 index 2f1b68bceb..0000000000 --- a/setup/installer/cx_Freeze/samples/advanced/advanced_1.py +++ /dev/null @@ -1,7 +0,0 @@ -import sys - -print "Hello from cx_Freeze Advanced #1" -print - -module = __import__("testfreeze_1") - diff --git a/setup/installer/cx_Freeze/samples/advanced/advanced_2.py b/setup/installer/cx_Freeze/samples/advanced/advanced_2.py deleted file mode 100644 index 1a6fe37e62..0000000000 --- a/setup/installer/cx_Freeze/samples/advanced/advanced_2.py +++ /dev/null @@ -1,7 +0,0 @@ -import sys - -print "Hello from cx_Freeze Advanced #2" -print - -module = __import__("testfreeze_2") - diff --git a/setup/installer/cx_Freeze/samples/advanced/modules/testfreeze_1.py b/setup/installer/cx_Freeze/samples/advanced/modules/testfreeze_1.py deleted file mode 100644 index 6157b72a69..0000000000 --- a/setup/installer/cx_Freeze/samples/advanced/modules/testfreeze_1.py +++ /dev/null @@ -1 +0,0 @@ -print "Test freeze module #1" diff --git a/setup/installer/cx_Freeze/samples/advanced/modules/testfreeze_2.py b/setup/installer/cx_Freeze/samples/advanced/modules/testfreeze_2.py deleted file mode 100644 index ca133a7d58..0000000000 --- a/setup/installer/cx_Freeze/samples/advanced/modules/testfreeze_2.py +++ /dev/null @@ -1 +0,0 @@ -print "Test freeze module #2" diff --git a/setup/installer/cx_Freeze/samples/advanced/setup.py b/setup/installer/cx_Freeze/samples/advanced/setup.py deleted file mode 100644 index 3a79cf23af..0000000000 --- a/setup/installer/cx_Freeze/samples/advanced/setup.py +++ /dev/null @@ -1,31 +0,0 @@ -# An advanced setup script to create multiple executables and demonstrate a few -# of the features available to setup scripts -# -# hello.py is a very simple "Hello, world" type script which also displays the -# environment in which the script runs -# -# Run the build process by running the command 'python setup.py build' -# -# If everything works well you should find a subdirectory in the build -# subdirectory that contains the files needed to run the script without Python - -import sys -from cx_Freeze import setup, Executable - -executables = [ - Executable("advanced_1.py"), - Executable("advanced_2.py") -] - -buildOptions = dict( - compressed = True, - includes = ["testfreeze_1", "testfreeze_2"], - path = sys.path + ["modules"]) - -setup( - name = "advanced_cx_Freeze_sample", - version = "0.1", - description = "Advanced sample cx_Freeze script", - options = dict(build_exe = buildOptions), - executables = executables) - diff --git a/setup/installer/cx_Freeze/samples/matplotlib/setup.py b/setup/installer/cx_Freeze/samples/matplotlib/setup.py deleted file mode 100644 index 54bd97fc3f..0000000000 --- a/setup/installer/cx_Freeze/samples/matplotlib/setup.py +++ /dev/null @@ -1,27 +0,0 @@ -# A simple setup script to create an executable using matplotlib. -# -# test_matplotlib.py is a very simple matplotlib application that demonstrates -# its use. -# -# Run the build process by running the command 'python setup.py build' -# -# If everything works well you should find a subdirectory in the build -# subdirectory that contains the files needed to run the application - -import cx_Freeze -import sys - -base = None -if sys.platform == "win32": - base = "Win32GUI" - -executables = [ - cx_Freeze.Executable("test_matplotlib.py", base = base) -] - -cx_Freeze.setup( - name = "test_matplotlib", - version = "0.1", - description = "Sample matplotlib script", - executables = executables) - diff --git a/setup/installer/cx_Freeze/samples/matplotlib/test_matplotlib.py b/setup/installer/cx_Freeze/samples/matplotlib/test_matplotlib.py deleted file mode 100644 index 2029845ca5..0000000000 --- a/setup/installer/cx_Freeze/samples/matplotlib/test_matplotlib.py +++ /dev/null @@ -1,48 +0,0 @@ -from numpy import arange, sin, pi -import matplotlib -matplotlib.use('WXAgg') -from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas -from matplotlib.backends.backend_wx import NavigationToolbar2Wx -from matplotlib.figure import Figure -from wx import * - -class CanvasFrame(Frame): - def __init__(self): - Frame.__init__(self,None,-1, 'CanvasFrame',size=(550,350)) - self.SetBackgroundColour(NamedColor("WHITE")) - self.figure = Figure() - self.axes = self.figure.add_subplot(111) - t = arange(0.0,3.0,0.01) - s = sin(2*pi*t) - self.axes.plot(t,s) - self.canvas = FigureCanvas(self, -1, self.figure) - self.sizer = BoxSizer(VERTICAL) - self.sizer.Add(self.canvas, 1, LEFT | TOP | GROW) - self.SetSizerAndFit(self.sizer) - self.add_toolbar() - - def add_toolbar(self): - self.toolbar = NavigationToolbar2Wx(self.canvas) - self.toolbar.Realize() - if Platform == '__WXMAC__': - self.SetToolBar(self.toolbar) - else: - tw, th = self.toolbar.GetSizeTuple() - fw, fh = self.canvas.GetSizeTuple() - self.toolbar.SetSize(Size(fw, th)) - self.sizer.Add(self.toolbar, 0, LEFT | EXPAND) - self.toolbar.update() - - def OnPaint(self, event): - self.canvas.draw() - -class App(App): - def OnInit(self): - 'Create the main window and insert the custom frame' - frame = CanvasFrame() - frame.Show(True) - return True - -app = App(0) -app.MainLoop() - diff --git a/setup/installer/cx_Freeze/samples/relimport/pkg1/__init__.py b/setup/installer/cx_Freeze/samples/relimport/pkg1/__init__.py deleted file mode 100644 index 5a170fd2dd..0000000000 --- a/setup/installer/cx_Freeze/samples/relimport/pkg1/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -print "importing pkg1" -from . import sub1 -from . import pkg2 diff --git a/setup/installer/cx_Freeze/samples/relimport/pkg1/pkg2/__init__.py b/setup/installer/cx_Freeze/samples/relimport/pkg1/pkg2/__init__.py deleted file mode 100644 index 71e0b1fbe6..0000000000 --- a/setup/installer/cx_Freeze/samples/relimport/pkg1/pkg2/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -print "importing pkg1.pkg2" -from . import sub3 -from .. import sub4 diff --git a/setup/installer/cx_Freeze/samples/relimport/pkg1/pkg2/sub3.py b/setup/installer/cx_Freeze/samples/relimport/pkg1/pkg2/sub3.py deleted file mode 100644 index 1719aadb41..0000000000 --- a/setup/installer/cx_Freeze/samples/relimport/pkg1/pkg2/sub3.py +++ /dev/null @@ -1,3 +0,0 @@ -print "importing pkg1.pkg2.sub3" -from . import sub5 -from .. import sub6 diff --git a/setup/installer/cx_Freeze/samples/relimport/pkg1/pkg2/sub5.py b/setup/installer/cx_Freeze/samples/relimport/pkg1/pkg2/sub5.py deleted file mode 100644 index 1c91b8fa23..0000000000 --- a/setup/installer/cx_Freeze/samples/relimport/pkg1/pkg2/sub5.py +++ /dev/null @@ -1 +0,0 @@ -print "importing pkg1.pkg2.sub5" diff --git a/setup/installer/cx_Freeze/samples/relimport/pkg1/sub1.py b/setup/installer/cx_Freeze/samples/relimport/pkg1/sub1.py deleted file mode 100644 index 514bd88a87..0000000000 --- a/setup/installer/cx_Freeze/samples/relimport/pkg1/sub1.py +++ /dev/null @@ -1,2 +0,0 @@ -print "importing pkg1.sub1" -from . import sub2 diff --git a/setup/installer/cx_Freeze/samples/relimport/pkg1/sub2.py b/setup/installer/cx_Freeze/samples/relimport/pkg1/sub2.py deleted file mode 100644 index 63a0838b25..0000000000 --- a/setup/installer/cx_Freeze/samples/relimport/pkg1/sub2.py +++ /dev/null @@ -1 +0,0 @@ -print "importing pkg1.sub2" diff --git a/setup/installer/cx_Freeze/samples/relimport/pkg1/sub4.py b/setup/installer/cx_Freeze/samples/relimport/pkg1/sub4.py deleted file mode 100644 index 3a8e760e43..0000000000 --- a/setup/installer/cx_Freeze/samples/relimport/pkg1/sub4.py +++ /dev/null @@ -1 +0,0 @@ -print 'importing pkg1.sub4' diff --git a/setup/installer/cx_Freeze/samples/relimport/pkg1/sub6.py b/setup/installer/cx_Freeze/samples/relimport/pkg1/sub6.py deleted file mode 100644 index 1e7d7955d6..0000000000 --- a/setup/installer/cx_Freeze/samples/relimport/pkg1/sub6.py +++ /dev/null @@ -1 +0,0 @@ -print "importing pkg1.sub6" diff --git a/setup/installer/cx_Freeze/samples/relimport/relimport.py b/setup/installer/cx_Freeze/samples/relimport/relimport.py deleted file mode 100644 index 39cb50c91d..0000000000 --- a/setup/installer/cx_Freeze/samples/relimport/relimport.py +++ /dev/null @@ -1 +0,0 @@ -import pkg1 diff --git a/setup/installer/cx_Freeze/samples/relimport/setup.py b/setup/installer/cx_Freeze/samples/relimport/setup.py deleted file mode 100644 index b8b3f3853b..0000000000 --- a/setup/installer/cx_Freeze/samples/relimport/setup.py +++ /dev/null @@ -1,16 +0,0 @@ -# relimport.py is a very simple script that tests importing using relative -# imports (available in Python 2.5 and up) -# -# Run the build process by running the command 'python setup.py build' -# -# If everything works well you should find a subdirectory in the build -# subdirectory that contains the files needed to run the script without Python - -from cx_Freeze import setup, Executable - -setup( - name = "relimport", - version = "0.1", - description = "Sample cx_Freeze script for relative imports", - executables = [Executable("relimport.py")]) - diff --git a/setup/installer/cx_Freeze/samples/simple/hello.py b/setup/installer/cx_Freeze/samples/simple/hello.py deleted file mode 100644 index 0fb32405bc..0000000000 --- a/setup/installer/cx_Freeze/samples/simple/hello.py +++ /dev/null @@ -1,19 +0,0 @@ -import sys - -print "Hello from cx_Freeze" -print - -print "sys.executable", sys.executable -print "sys.prefix", sys.prefix -print - -print "ARGUMENTS:" -for a in sys.argv: - print a -print - -print "PATH:" -for p in sys.path: - print p -print - diff --git a/setup/installer/cx_Freeze/samples/simple/setup.py b/setup/installer/cx_Freeze/samples/simple/setup.py deleted file mode 100644 index 25de838b10..0000000000 --- a/setup/installer/cx_Freeze/samples/simple/setup.py +++ /dev/null @@ -1,18 +0,0 @@ -# A very simple setup script to create a single executable -# -# hello.py is a very simple "Hello, world" type script which also displays the -# environment in which the script runs -# -# Run the build process by running the command 'python setup.py build' -# -# If everything works well you should find a subdirectory in the build -# subdirectory that contains the files needed to run the script without Python - -from cx_Freeze import setup, Executable - -setup( - name = "hello", - version = "0.1", - description = "Sample cx_Freeze script", - executables = [Executable("hello.py")]) - diff --git a/setup/installer/cx_Freeze/samples/wx/setup.py b/setup/installer/cx_Freeze/samples/wx/setup.py deleted file mode 100644 index 9412996859..0000000000 --- a/setup/installer/cx_Freeze/samples/wx/setup.py +++ /dev/null @@ -1,25 +0,0 @@ -# A simple setup script to create an executable running wxPython. This also -# demonstrates the method for creating a Windows executable that does not have -# an associated console. -# -# wxapp.py is a very simple "Hello, world" type wxPython application -# -# Run the build process by running the command 'python setup.py build' -# -# If everything works well you should find a subdirectory in the build -# subdirectory that contains the files needed to run the application - -import sys - -from cx_Freeze import setup, Executable - -base = None -if sys.platform == "win32": - base = "Win32GUI" - -setup( - name = "hello", - version = "0.1", - description = "Sample cx_Freeze wxPython script", - executables = [Executable("wxapp.py", base = base)]) - diff --git a/setup/installer/cx_Freeze/samples/wx/wxapp.py b/setup/installer/cx_Freeze/samples/wx/wxapp.py deleted file mode 100644 index 7baa90b8d1..0000000000 --- a/setup/installer/cx_Freeze/samples/wx/wxapp.py +++ /dev/null @@ -1,42 +0,0 @@ -import wx - -class Frame(wx.Frame): - - def __init__(self): - wx.Frame.__init__(self, parent = None, title = "Hello from cx_Freeze") - panel = wx.Panel(self) - closeMeButton = wx.Button(panel, -1, "Close Me") - wx.EVT_BUTTON(self, closeMeButton.GetId(), self.OnCloseMe) - wx.EVT_CLOSE(self, self.OnCloseWindow) - pushMeButton = wx.Button(panel, -1, "Push Me") - wx.EVT_BUTTON(self, pushMeButton.GetId(), self.OnPushMe) - sizer = wx.BoxSizer(wx.HORIZONTAL) - sizer.Add(closeMeButton, flag = wx.ALL, border = 20) - sizer.Add(pushMeButton, flag = wx.ALL, border = 20) - panel.SetSizer(sizer) - topSizer = wx.BoxSizer(wx.VERTICAL) - topSizer.Add(panel, flag = wx.ALL | wx.EXPAND) - topSizer.Fit(self) - - def OnCloseMe(self, event): - self.Close(True) - - def OnPushMe(self, event): - 1 / 0 - - def OnCloseWindow(self, event): - self.Destroy() - - -class App(wx.App): - - def OnInit(self): - frame = Frame() - frame.Show(True) - self.SetTopWindow(frame) - return True - - -app = App(1) -app.MainLoop() - diff --git a/setup/installer/cx_Freeze/setup.py b/setup/installer/cx_Freeze/setup.py deleted file mode 100755 index b51453aa7a..0000000000 --- a/setup/installer/cx_Freeze/setup.py +++ /dev/null @@ -1,197 +0,0 @@ -""" -Distutils script for cx_Freeze. -""" - -import distutils.command.bdist_rpm -import distutils.command.build_ext -import distutils.command.build_scripts -import distutils.command.install -import distutils.command.install_data -import distutils.sysconfig -import os -import sys - -from distutils.core import setup -from distutils.extension import Extension - -class bdist_rpm(distutils.command.bdist_rpm.bdist_rpm): - - # rpm automatically byte compiles all Python files in a package but we - # don't want that to happen for initscripts and samples so we tell it to - # ignore those files - def _make_spec_file(self): - specFile = distutils.command.bdist_rpm.bdist_rpm._make_spec_file(self) - specFile.insert(0, "%define _unpackaged_files_terminate_build 0%{nil}") - return specFile - - def run(self): - distutils.command.bdist_rpm.bdist_rpm.run(self) - specFile = os.path.join(self.rpm_base, "SPECS", - "%s.spec" % self.distribution.get_name()) - queryFormat = "%{name}-%{version}-%{release}.%{arch}.rpm" - command = "rpm -q --qf '%s' --specfile %s" % (queryFormat, specFile) - origFileName = os.popen(command).read() - parts = origFileName.split("-") - parts.insert(2, "py%s%s" % sys.version_info[:2]) - newFileName = "-".join(parts) - self.move_file(os.path.join("dist", origFileName), - os.path.join("dist", newFileName)) - - -class build_ext(distutils.command.build_ext.build_ext): - - def build_extension(self, ext): - if ext.name.find("bases") < 0: - distutils.command.build_ext.build_ext.build_extension(self, ext) - return - os.environ["LD_RUN_PATH"] = "${ORIGIN}:${ORIGIN}/../lib" - objects = self.compiler.compile(ext.sources, - output_dir = self.build_temp, - include_dirs = ext.include_dirs, - debug = self.debug, - depends = ext.depends) - fileName = os.path.splitext(self.get_ext_filename(ext.name))[0] - fullName = os.path.join(self.build_lib, fileName) - libraryDirs = ext.library_dirs or [] - libraries = self.get_libraries(ext) - extraArgs = ext.extra_link_args or [] - if sys.platform != "win32": - vars = distutils.sysconfig.get_config_vars() - libraryDirs.append(vars["LIBPL"]) - libraries.append("python%s.%s" % sys.version_info[:2]) - if vars["LINKFORSHARED"]: - extraArgs.extend(vars["LINKFORSHARED"].split()) - if vars["LIBS"]: - extraArgs.extend(vars["LIBS"].split()) - if vars["LIBM"]: - extraArgs.append(vars["LIBM"]) - if vars["BASEMODLIBS"]: - extraArgs.extend(vars["BASEMODLIBS"].split()) - if vars["LOCALMODLIBS"]: - extraArgs.extend(vars["LOCALMODLIBS"].split()) - extraArgs.append("-s") - self.compiler.link_executable(objects, fullName, - libraries = libraries, - library_dirs = libraryDirs, - runtime_library_dirs = ext.runtime_library_dirs, - extra_postargs = extraArgs, - debug = self.debug) - - def get_ext_filename(self, name): - fileName = distutils.command.build_ext.build_ext.get_ext_filename(self, - name) - if name.find("bases") < 0: - return fileName - ext = self.compiler.exe_extension or "" - return os.path.splitext(fileName)[0] + ext - - -class build_scripts(distutils.command.build_scripts.build_scripts): - - def copy_scripts(self): - distutils.command.build_scripts.build_scripts.copy_scripts(self) - if sys.platform == "win32": - for script in self.scripts: - batFileName = os.path.join(self.build_dir, script + ".bat") - fullScriptName = r"%s\Scripts\%s" % \ - (os.path.dirname(sys.executable), script) - command = "%s %s %%1 %%2 %%3 %%4 %%5 %%6 %%7 %%8 %%9" % \ - (sys.executable, fullScriptName) - file(batFileName, "w").write("@echo off\n\n%s" % command) - - -class install(distutils.command.install.install): - - def get_sub_commands(self): - subCommands = distutils.command.install.install.get_sub_commands(self) - subCommands.append("install_packagedata") - return subCommands - - -class install_packagedata(distutils.command.install_data.install_data): - - def run(self): - installCommand = self.get_finalized_command("install") - installDir = getattr(installCommand, "install_lib") - sourceDirs = ["samples", "initscripts"] - while sourceDirs: - sourceDir = sourceDirs.pop(0) - targetDir = os.path.join(installDir, "cx_Freeze", sourceDir) - self.mkpath(targetDir) - for name in os.listdir(sourceDir): - if name == "build" or name.startswith("."): - continue - fullSourceName = os.path.join(sourceDir, name) - if os.path.isdir(fullSourceName): - sourceDirs.append(fullSourceName) - else: - fullTargetName = os.path.join(targetDir, name) - self.copy_file(fullSourceName, fullTargetName) - self.outfiles.append(fullTargetName) - - -commandClasses = dict( - build_ext = build_ext, - build_scripts = build_scripts, - bdist_rpm = bdist_rpm, - install = install, - install_packagedata = install_packagedata) - -if sys.platform == "win32": - libraries = ["imagehlp"] -else: - libraries = [] -utilModule = Extension("cx_Freeze.util", ["source/util.c"], - libraries = libraries) -depends = ["source/bases/Common.c"] -if sys.platform == "win32": - if sys.version_info[:2] >= (2, 6): - extraSources = ["source/bases/manifest.rc"] - else: - extraSources = ["source/bases/dummy.rc"] -else: - extraSources = [] -console = Extension("cx_Freeze.bases.Console", - ["source/bases/Console.c"] + extraSources, depends = depends) -consoleKeepPath = Extension("cx_Freeze.bases.ConsoleKeepPath", - ["source/bases/ConsoleKeepPath.c"] + extraSources, depends = depends) -extensions = [utilModule, console, consoleKeepPath] -if sys.platform == "win32": - gui = Extension("cx_Freeze.bases.Win32GUI", - ["source/bases/Win32GUI.c"] + extraSources, - depends = depends, extra_link_args = ["-mwindows"]) - extensions.append(gui) - -docFiles = "LICENSE.txt README.txt HISTORY.txt doc/cx_Freeze.html" - -classifiers = [ - "Development Status :: 5 - Production/Stable", - "Intended Audience :: Developers", - "License :: OSI Approved :: Python Software Foundation License", - "Natural Language :: English", - "Operating System :: OS Independent", - "Programming Language :: C", - "Programming Language :: Python", - "Topic :: Software Development :: Build Tools", - "Topic :: Software Development :: Libraries :: Python Modules", - "Topic :: System :: Software Distribution", - "Topic :: Utilities" -] - -setup(name = "cx_Freeze", - description = "create standalone executables from Python scripts", - long_description = "create standalone executables from Python scripts", - version = "4.0.1", - cmdclass = commandClasses, - options = dict(bdist_rpm = dict(doc_files = docFiles), - install = dict(optimize = 1)), - ext_modules = extensions, - packages = ['cx_Freeze'], - maintainer="Anthony Tuininga", - maintainer_email="anthony.tuininga@gmail.com", - url = "http://cx-freeze.sourceforge.net", - scripts = ["cxfreeze"], - classifiers = classifiers, - keywords = "freeze", - license = "Python Software Foundation License") - diff --git a/setup/installer/cx_Freeze/source/bases/Common.c b/setup/installer/cx_Freeze/source/bases/Common.c deleted file mode 100644 index ce1e137ebb..0000000000 --- a/setup/installer/cx_Freeze/source/bases/Common.c +++ /dev/null @@ -1,262 +0,0 @@ -//----------------------------------------------------------------------------- -// Common.c -// Routines which are common to running frozen executables. -//----------------------------------------------------------------------------- - -#include -#include -#include - -// global variables (used for simplicity) -static PyObject *g_FileName = NULL; -static PyObject *g_DirName = NULL; -static PyObject *g_ExclusiveZipFileName = NULL; -static PyObject *g_SharedZipFileName = NULL; -static PyObject *g_InitScriptZipFileName = NULL; - -//----------------------------------------------------------------------------- -// GetDirName() -// Return the directory name of the given path. -//----------------------------------------------------------------------------- -static int GetDirName( - const char *path, // path to calculate dir name for - PyObject **dirName) // directory name (OUT) -{ - int i; - - for (i = strlen(path); i > 0 && path[i] != SEP; --i); - *dirName = PyString_FromStringAndSize(path, i); - if (!*dirName) - return FatalError("cannot create string for directory name"); - return 0; -} - - -//----------------------------------------------------------------------------- -// SetExecutableName() -// Set the script to execute and calculate the directory in which the -// executable is found as well as the exclusive (only for this executable) and -// shared zip file names. -//----------------------------------------------------------------------------- -static int SetExecutableName( - const char *fileName) // script to execute -{ - char temp[MAXPATHLEN + 12], *ptr; -#ifndef WIN32 - char linkData[MAXPATHLEN + 1]; - struct stat statData; - size_t linkSize, i; - PyObject *dirName; -#endif - - // store file name - g_FileName = PyString_FromString(fileName); - if (!g_FileName) - return FatalError("cannot create string for file name"); - -#ifndef WIN32 - for (i = 0; i < 25; i++) { - if (lstat(fileName, &statData) < 0) { - PyErr_SetFromErrnoWithFilename(PyExc_OSError, (char*) fileName); - return FatalError("unable to stat file"); - } - if (!S_ISLNK(statData.st_mode)) - break; - linkSize = readlink(fileName, linkData, sizeof(linkData)); - if (linkSize < 0) { - PyErr_SetFromErrnoWithFilename(PyExc_OSError, (char*) fileName); - return FatalError("unable to stat file"); - } - if (linkData[0] == '/') { - Py_DECREF(g_FileName); - g_FileName = PyString_FromStringAndSize(linkData, linkSize); - } else { - if (GetDirName(PyString_AS_STRING(g_FileName), &dirName) < 0) - return -1; - if (PyString_GET_SIZE(dirName) + linkSize + 1 > MAXPATHLEN) { - Py_DECREF(dirName); - return FatalError("cannot dereference link, path too large"); - } - strcpy(temp, PyString_AS_STRING(dirName)); - strcat(temp, "/"); - strcat(temp, linkData); - Py_DECREF(g_FileName); - g_FileName = PyString_FromString(temp); - } - if (!g_FileName) - return FatalError("cannot create string for linked file name"); - fileName = PyString_AS_STRING(g_FileName); - } -#endif - - // calculate and store directory name - if (GetDirName(fileName, &g_DirName) < 0) - return -1; - - // calculate and store exclusive zip file name - strcpy(temp, fileName); - ptr = temp + strlen(temp) - 1; - while (ptr > temp && *ptr != SEP && *ptr != '.') - ptr--; - if (*ptr == '.') - *ptr = '\0'; - strcat(temp, ".zip"); - g_ExclusiveZipFileName = PyString_FromString(temp); - if (!g_ExclusiveZipFileName) - return FatalError("cannot create string for exclusive zip file name"); - - // calculate and store shared zip file name - strcpy(temp, PyString_AS_STRING(g_DirName)); - ptr = temp + strlen(temp); - *ptr++ = SEP; - strcpy(ptr, "library.zip"); - g_SharedZipFileName = PyString_FromString(temp); - if (!g_SharedZipFileName) - return FatalError("cannot create string for shared zip file name"); - - return 0; -} - - -//----------------------------------------------------------------------------- -// SetPathToSearch() -// Set the path to search. This includes the file (for those situations where -// a zip file is attached to the executable itself), the directory where the -// executable is found (to search for extensions), the exclusive zip file -// name and the shared zip file name. -//----------------------------------------------------------------------------- -static int SetPathToSearch(void) -{ - PyObject *pathList; - - pathList = PySys_GetObject("path"); - if (!pathList) - return FatalError("cannot acquire sys.path"); - if (PyList_Insert(pathList, 0, g_FileName) < 0) - return FatalError("cannot insert file name into sys.path"); - if (PyList_Insert(pathList, 1, g_DirName) < 0) - return FatalError("cannot insert directory name into sys.path"); - if (PyList_Insert(pathList, 2, g_ExclusiveZipFileName) < 0) - return FatalError("cannot insert exclusive zip name into sys.path"); - if (PyList_Insert(pathList, 3, g_SharedZipFileName) < 0) - return FatalError("cannot insert shared zip name into sys.path"); - return 0; -} - - -//----------------------------------------------------------------------------- -// GetImporterHelper() -// Helper which is used to locate the importer for the initscript. -//----------------------------------------------------------------------------- -static PyObject *GetImporterHelper( - PyObject *module, // zipimport module - PyObject *fileName) // name of file to search -{ - PyObject *importer; - - importer = PyObject_CallMethod(module, "zipimporter", "O", fileName); - if (importer) - g_InitScriptZipFileName = fileName; - else - PyErr_Clear(); - return importer; -} - - -//----------------------------------------------------------------------------- -// GetImporter() -// Return the importer which will be used for importing the initialization -// script. The executable itself is searched first, followed by the exclusive -// zip file and finally by the shared zip file. -//----------------------------------------------------------------------------- -static int GetImporter( - PyObject **importer) // importer (OUT) -{ - PyObject *module; - - module = PyImport_ImportModule("zipimport"); - if (!module) - return FatalError("cannot import zipimport module"); - *importer = GetImporterHelper(module, g_FileName); - if (!*importer) { - *importer = GetImporterHelper(module, g_ExclusiveZipFileName); - if (!*importer) - *importer = GetImporterHelper(module, g_SharedZipFileName); - } - Py_DECREF(module); - if (!*importer) - return FatalError("cannot get zipimporter instance"); - return 0; -} - - -//----------------------------------------------------------------------------- -// PopulateInitScriptDict() -// Return the dictionary used by the initialization script. -//----------------------------------------------------------------------------- -static int PopulateInitScriptDict( - PyObject *dict) // dictionary to populate -{ - if (!dict) - return FatalError("unable to create temporary dictionary"); - if (PyDict_SetItemString(dict, "__builtins__", PyEval_GetBuiltins()) < 0) - return FatalError("unable to set __builtins__"); - if (PyDict_SetItemString(dict, "FILE_NAME", g_FileName) < 0) - return FatalError("unable to set FILE_NAME"); - if (PyDict_SetItemString(dict, "DIR_NAME", g_DirName) < 0) - return FatalError("unable to set DIR_NAME"); - if (PyDict_SetItemString(dict, "EXCLUSIVE_ZIP_FILE_NAME", - g_ExclusiveZipFileName) < 0) - return FatalError("unable to set EXCLUSIVE_ZIP_FILE_NAME"); - if (PyDict_SetItemString(dict, "SHARED_ZIP_FILE_NAME", - g_SharedZipFileName) < 0) - return FatalError("unable to set SHARED_ZIP_FILE_NAME"); - if (PyDict_SetItemString(dict, "INITSCRIPT_ZIP_FILE_NAME", - g_InitScriptZipFileName) < 0) - return FatalError("unable to set INITSCRIPT_ZIP_FILE_NAME"); - return 0; -} - - - - -//----------------------------------------------------------------------------- -// ExecuteScript() -// Execute the script found within the file. -//----------------------------------------------------------------------------- -static int ExecuteScript( - const char *fileName) // name of file containing Python code -{ - PyObject *importer, *dict, *code, *temp; - - if (SetExecutableName(fileName) < 0) - return -1; - if (SetPathToSearch() < 0) - return -1; - importer = NULL; - if (GetImporter(&importer) < 0) - return -1; - - // create and populate dictionary for initscript module - dict = PyDict_New(); - if (PopulateInitScriptDict(dict) < 0) { - Py_XDECREF(dict); - Py_DECREF(importer); - return -1; - } - - // locate and execute script - code = PyObject_CallMethod(importer, "get_code", "s", "cx_Freeze__init__"); - Py_DECREF(importer); - if (!code) - return FatalError("unable to locate initialization module"); - temp = PyEval_EvalCode( (PyCodeObject*) code, dict, dict); - Py_DECREF(code); - Py_DECREF(dict); - if (!temp) - return FatalScriptError(); - Py_DECREF(temp); - - return 0; -} - diff --git a/setup/installer/cx_Freeze/source/bases/Console.c b/setup/installer/cx_Freeze/source/bases/Console.c deleted file mode 100644 index d6a8a515a0..0000000000 --- a/setup/installer/cx_Freeze/source/bases/Console.c +++ /dev/null @@ -1,72 +0,0 @@ -//----------------------------------------------------------------------------- -// Console.c -// Main routine for frozen programs which run in a console. -//----------------------------------------------------------------------------- - -#include -#ifdef __WIN32__ -#include -#endif - -//----------------------------------------------------------------------------- -// FatalError() -// Prints a fatal error. -//----------------------------------------------------------------------------- -static int FatalError( - const char *message) // message to print -{ - PyErr_Print(); - Py_FatalError(message); - return -1; -} - - -//----------------------------------------------------------------------------- -// FatalScriptError() -// Prints a fatal error in the initialization script. -//----------------------------------------------------------------------------- -static int FatalScriptError(void) -{ - PyErr_Print(); - return -1; -} - - -#include "Common.c" - - -//----------------------------------------------------------------------------- -// main() -// Main routine for frozen programs. -//----------------------------------------------------------------------------- -int main(int argc, char **argv) -{ - const char *fileName; - char *encoding; - - // initialize Python - Py_NoSiteFlag = 1; - Py_FrozenFlag = 1; - Py_IgnoreEnvironmentFlag = 1; - - encoding = getenv("PYTHONIOENCODING"); - if (encoding != NULL) { - Py_FileSystemDefaultEncoding = strndup(encoding, 100); - } - - Py_SetPythonHome(""); - Py_SetProgramName(argv[0]); - fileName = Py_GetProgramFullPath(); - - Py_Initialize(); - PySys_SetArgv(argc, argv); - - - // do the work - if (ExecuteScript(fileName) < 0) - return 1; - - Py_Finalize(); - return 0; -} - diff --git a/setup/installer/cx_Freeze/source/bases/ConsoleKeepPath.c b/setup/installer/cx_Freeze/source/bases/ConsoleKeepPath.c deleted file mode 100644 index 3ad00f8488..0000000000 --- a/setup/installer/cx_Freeze/source/bases/ConsoleKeepPath.c +++ /dev/null @@ -1,60 +0,0 @@ -//----------------------------------------------------------------------------- -// ConsoleKeepPath.c -// Main routine for frozen programs which need a Python installation to do -// their work. -//----------------------------------------------------------------------------- - -#include -#ifdef __WIN32__ -#include -#endif - -//----------------------------------------------------------------------------- -// FatalError() -// Prints a fatal error. -//----------------------------------------------------------------------------- -static int FatalError( - const char *message) // message to print -{ - PyErr_Print(); - Py_FatalError(message); - return -1; -} - - -//----------------------------------------------------------------------------- -// FatalScriptError() -// Prints a fatal error in the initialization script. -//----------------------------------------------------------------------------- -static int FatalScriptError(void) -{ - PyErr_Print(); - return -1; -} - - -#include "Common.c" - - -//----------------------------------------------------------------------------- -// main() -// Main routine for frozen programs. -//----------------------------------------------------------------------------- -int main(int argc, char **argv) -{ - const char *fileName; - - // initialize Python - Py_SetProgramName(argv[0]); - fileName = Py_GetProgramFullPath(); - Py_Initialize(); - PySys_SetArgv(argc, argv); - - // do the work - if (ExecuteScript(fileName) < 0) - return 1; - - Py_Finalize(); - return 0; -} - diff --git a/setup/installer/cx_Freeze/source/bases/Win32GUI.c b/setup/installer/cx_Freeze/source/bases/Win32GUI.c deleted file mode 100644 index f5bbe74dba..0000000000 --- a/setup/installer/cx_Freeze/source/bases/Win32GUI.c +++ /dev/null @@ -1,242 +0,0 @@ -//----------------------------------------------------------------------------- -// Win32GUI.c -// Main routine for frozen programs written for the Win32 GUI subsystem. -//----------------------------------------------------------------------------- - -#include -#include - -//----------------------------------------------------------------------------- -// FatalError() -// Handle a fatal error. -//----------------------------------------------------------------------------- -static int FatalError( - char *a_Message) // message to display -{ - MessageBox(NULL, a_Message, "cx_Freeze Fatal Error", MB_ICONERROR); - Py_Finalize(); - return -1; -} - - -//----------------------------------------------------------------------------- -// StringifyObject() -// Stringify a Python object. -//----------------------------------------------------------------------------- -static char *StringifyObject( - PyObject *object, // object to stringify - PyObject **stringRep) // string representation -{ - if (object) { - *stringRep = PyObject_Str(object); - if (*stringRep) - return PyString_AS_STRING(*stringRep); - return "Unable to stringify"; - } - - // object is NULL - *stringRep = NULL; - return "None"; -} - - -//----------------------------------------------------------------------------- -// FatalPythonErrorNoTraceback() -// Handle a fatal Python error without traceback. -//----------------------------------------------------------------------------- -static int FatalPythonErrorNoTraceback( - PyObject *origType, // exception type - PyObject *origValue, // exception value - char *message) // message to display -{ - PyObject *typeStrRep, *valueStrRep, *origTypeStrRep, *origValueStrRep; - char *totalMessage, *typeStr, *valueStr, *origTypeStr, *origValueStr; - PyObject *type, *value, *traceback; - int totalMessageLength; - char *messageFormat; - - // fetch error and string representations of the error - PyErr_Fetch(&type, &value, &traceback); - origTypeStr = StringifyObject(origType, &origTypeStrRep); - origValueStr = StringifyObject(origValue, &origValueStrRep); - typeStr = StringifyObject(type, &typeStrRep); - valueStr = StringifyObject(value, &valueStrRep); - - // fill out the message to be displayed - messageFormat = "Type: %s\nValue: %s\nOther Type: %s\nOtherValue: %s\n%s"; - totalMessageLength = strlen(origTypeStr) + strlen(origValueStr) + - strlen(typeStr) + strlen(valueStr) + strlen(message) + - strlen(messageFormat) + 1; - totalMessage = malloc(totalMessageLength); - if (!totalMessage) - return FatalError("Out of memory!"); - sprintf(totalMessage, messageFormat, typeStr, valueStr, origTypeStr, - origValueStr, message); - - // display the message - MessageBox(NULL, totalMessage, - "cx_Freeze: Python error in main script (traceback unavailable)", - MB_ICONERROR); - free(totalMessage); - return -1; -} - - -//----------------------------------------------------------------------------- -// ArgumentValue() -// Return a suitable argument value by replacing NULL with Py_None. -//----------------------------------------------------------------------------- -static PyObject *ArgumentValue( - PyObject *object) // argument to massage -{ - if (object) { - Py_INCREF(object); - return object; - } - Py_INCREF(Py_None); - return Py_None; -} - - -//----------------------------------------------------------------------------- -// HandleSystemExitException() -// Handles a system exit exception differently. If an integer value is passed -// through then that becomes the exit value; otherwise the string value of the -// value passed through is displayed in a message box. -//----------------------------------------------------------------------------- -static void HandleSystemExitException() -{ - PyObject *type, *value, *traceback, *valueStr; - int exitCode = 0; - char *message; - - PyErr_Fetch(&type, &value, &traceback); - if (PyInstance_Check(value)) { - PyObject *code = PyObject_GetAttrString(value, "code"); - if (code) { - Py_DECREF(value); - value = code; - if (value == Py_None) - Py_Exit(0); - } - } - if (PyInt_Check(value)) - exitCode = PyInt_AsLong(value); - else { - message = StringifyObject(value, &valueStr); - MessageBox(NULL, message, "cx_Freeze: Application Terminated", - MB_ICONERROR); - Py_XDECREF(valueStr); - exitCode = 1; - } - Py_Exit(exitCode); -} - - -//----------------------------------------------------------------------------- -// FatalScriptError() -// Handle a fatal Python error with traceback. -//----------------------------------------------------------------------------- -static int FatalScriptError() -{ - PyObject *type, *value, *traceback, *argsTuple, *module, *method, *result; - int tracebackLength, i; - char *tracebackStr; - - // if a system exception, handle it specially - if (PyErr_ExceptionMatches(PyExc_SystemExit)) - HandleSystemExitException(); - - // get the exception details - PyErr_Fetch(&type, &value, &traceback); - - // import the traceback module - module = PyImport_ImportModule("traceback"); - if (!module) - return FatalPythonErrorNoTraceback(type, value, - "Cannot import traceback module."); - - // get the format_exception method - method = PyObject_GetAttrString(module, "format_exception"); - Py_DECREF(module); - if (!method) - return FatalPythonErrorNoTraceback(type, value, - "Cannot get format_exception method."); - - // create a tuple for the arguments - argsTuple = PyTuple_New(3); - if (!argsTuple) { - Py_DECREF(method); - return FatalPythonErrorNoTraceback(type, value, - "Cannot create arguments tuple for traceback."); - } - PyTuple_SET_ITEM(argsTuple, 0, ArgumentValue(type)); - PyTuple_SET_ITEM(argsTuple, 1, ArgumentValue(value)); - PyTuple_SET_ITEM(argsTuple, 2, ArgumentValue(traceback)); - - // call the format_exception method - result = PyObject_CallObject(method, argsTuple); - Py_DECREF(method); - Py_DECREF(argsTuple); - if (!result) - return FatalPythonErrorNoTraceback(type, value, - "Failed calling format_exception method."); - - // determine length of string representation of formatted traceback - tracebackLength = 1; - for (i = 0; i < PyList_GET_SIZE(result); i++) - tracebackLength += PyString_GET_SIZE(PyList_GET_ITEM(result, i)); - - // create a string representation of the formatted traceback - tracebackStr = malloc(tracebackLength); - if (!tracebackStr) { - Py_DECREF(result); - return FatalError("Out of memory!"); - } - tracebackStr[0] = '\0'; - for (i = 0; i < PyList_GET_SIZE(result); i++) - strcat(tracebackStr, PyString_AS_STRING(PyList_GET_ITEM(result, i))); - Py_DECREF(result); - - // bring up the error - MessageBox(NULL, tracebackStr, "cx_Freeze: Python error in main script", - MB_ICONERROR); - Py_Finalize(); - return 1; -} - - -#include "Common.c" - - -//----------------------------------------------------------------------------- -// WinMain() -// Main routine for the executable in Windows. -//----------------------------------------------------------------------------- -int WINAPI WinMain( - HINSTANCE instance, // handle to application - HINSTANCE prevInstance, // previous handle to application - LPSTR commandLine, // command line - int showFlag) // show flag -{ - const char *fileName; - - // initialize Python - Py_NoSiteFlag = 1; - Py_FrozenFlag = 1; - Py_IgnoreEnvironmentFlag = 1; - Py_SetPythonHome(""); - Py_SetProgramName(__argv[0]); - fileName = Py_GetProgramFullPath(); - Py_Initialize(); - PySys_SetArgv(__argc, __argv); - - // do the work - if (ExecuteScript(fileName) < 0) - return 1; - - // terminate Python - Py_Finalize(); - return 0; -} - diff --git a/setup/installer/cx_Freeze/source/bases/dummy.rc b/setup/installer/cx_Freeze/source/bases/dummy.rc deleted file mode 100644 index 5c1fa1a194..0000000000 --- a/setup/installer/cx_Freeze/source/bases/dummy.rc +++ /dev/null @@ -1,5 +0,0 @@ -STRINGTABLE -{ - 1, "Just to ensure that buggy EndUpdateResource doesn't fall over." -} - diff --git a/setup/installer/cx_Freeze/source/bases/manifest.rc b/setup/installer/cx_Freeze/source/bases/manifest.rc deleted file mode 100644 index 2b7ee27ab5..0000000000 --- a/setup/installer/cx_Freeze/source/bases/manifest.rc +++ /dev/null @@ -1,3 +0,0 @@ -#include "dummy.rc" - -1 24 source/bases/manifest.txt diff --git a/setup/installer/cx_Freeze/source/util.c b/setup/installer/cx_Freeze/source/util.c deleted file mode 100644 index 1c8eb0c0ca..0000000000 --- a/setup/installer/cx_Freeze/source/util.c +++ /dev/null @@ -1,418 +0,0 @@ -//----------------------------------------------------------------------------- -// util.c -// Shared library for use by cx_Freeze. -//----------------------------------------------------------------------------- - -#include - -#ifdef WIN32 -#include -#include - -#pragma pack(2) - -typedef struct { - BYTE bWidth; // Width, in pixels, of the image - BYTE bHeight; // Height, in pixels, of the image - BYTE bColorCount; // Number of colors in image - BYTE bReserved; // Reserved ( must be 0) - WORD wPlanes; // Color Planes - WORD wBitCount; // Bits per pixel - DWORD dwBytesInRes; // How many bytes in this resource? - DWORD dwImageOffset; // Where in the file is this image? -} ICONDIRENTRY; - -typedef struct { - WORD idReserved; // Reserved (must be 0) - WORD idType; // Resource Type (1 for icons) - WORD idCount; // How many images? - ICONDIRENTRY idEntries[0]; // An entry for each image -} ICONDIR; - -typedef struct { - BYTE bWidth; // Width, in pixels, of the image - BYTE bHeight; // Height, in pixels, of the image - BYTE bColorCount; // Number of colors in image - BYTE bReserved; // Reserved ( must be 0) - WORD wPlanes; // Color Planes - WORD wBitCount; // Bits per pixel - DWORD dwBytesInRes; // How many bytes in this resource? - WORD nID; // resource ID -} GRPICONDIRENTRY; - -typedef struct { - WORD idReserved; // Reserved (must be 0) - WORD idType; // Resource Type (1 for icons) - WORD idCount; // How many images? - GRPICONDIRENTRY idEntries[0]; // An entry for each image -} GRPICONDIR; -#endif - -//----------------------------------------------------------------------------- -// Globals -//----------------------------------------------------------------------------- -#ifdef WIN32 -static PyObject *g_BindErrorException = NULL; -static PyObject *g_ImageNames = NULL; -#endif - - -#ifdef WIN32 -//----------------------------------------------------------------------------- -// BindStatusRoutine() -// Called by BindImageEx() at various points. This is used to determine the -// dependency tree which is later examined by cx_Freeze. -//----------------------------------------------------------------------------- -static BOOL __stdcall BindStatusRoutine( - IMAGEHLP_STATUS_REASON reason, // reason called - PSTR imageName, // name of image being examined - PSTR dllName, // name of DLL - ULONG virtualAddress, // computed virtual address - ULONG parameter) // parameter (value depends on reason) -{ - char fileName[MAX_PATH + 1]; - - switch (reason) { - case BindImportModule: - if (!SearchPath(NULL, dllName, NULL, sizeof(fileName), fileName, - NULL)) - return FALSE; - Py_INCREF(Py_None); - if (PyDict_SetItemString(g_ImageNames, fileName, Py_None) < 0) - return FALSE; - break; - default: - break; - } - return TRUE; -} - - -//----------------------------------------------------------------------------- -// GetFileData() -// Return the data for the given file. -//----------------------------------------------------------------------------- -static int GetFileData( - const char *fileName, // name of file to read - char **data) // pointer to data (OUT) -{ - DWORD numberOfBytesRead, dataSize; - HANDLE file; - - file = CreateFile(fileName, GENERIC_READ, FILE_SHARE_READ, NULL, - OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); - if (file == INVALID_HANDLE_VALUE) - return -1; - dataSize = GetFileSize(file, NULL); - if (dataSize == INVALID_FILE_SIZE) { - CloseHandle(file); - return -1; - } - *data = PyMem_Malloc(dataSize); - if (!*data) { - CloseHandle(file); - return -1; - } - if (!ReadFile(file, *data, dataSize, &numberOfBytesRead, NULL)) { - CloseHandle(file); - return -1; - } - CloseHandle(file); - return 0; -} - - -//----------------------------------------------------------------------------- -// CreateGroupIconResource() -// Return the group icon resource given the icon file data. -//----------------------------------------------------------------------------- -static GRPICONDIR *CreateGroupIconResource( - ICONDIR *iconDir, // icon information - DWORD *resourceSize) // size of resource (OUT) -{ - GRPICONDIR *groupIconDir; - int i; - - *resourceSize = sizeof(GRPICONDIR) + - sizeof(GRPICONDIRENTRY) * iconDir->idCount; - groupIconDir = PyMem_Malloc(*resourceSize); - if (!groupIconDir) - return NULL; - groupIconDir->idReserved = iconDir->idReserved; - groupIconDir->idType = iconDir->idType; - groupIconDir->idCount = iconDir->idCount; - for (i = 0; i < iconDir->idCount; i++) { - groupIconDir->idEntries[i].bWidth = iconDir->idEntries[i].bWidth; - groupIconDir->idEntries[i].bHeight = iconDir->idEntries[i].bHeight; - groupIconDir->idEntries[i].bColorCount = - iconDir->idEntries[i].bColorCount; - groupIconDir->idEntries[i].bReserved = iconDir->idEntries[i].bReserved; - groupIconDir->idEntries[i].wPlanes = iconDir->idEntries[i].wPlanes; - groupIconDir->idEntries[i].wBitCount = iconDir->idEntries[i].wBitCount; - groupIconDir->idEntries[i].dwBytesInRes = - iconDir->idEntries[i].dwBytesInRes; - groupIconDir->idEntries[i].nID = i + 1; - } - - return groupIconDir; -} - - -//----------------------------------------------------------------------------- -// ExtAddIcon() -// Add the icon as a resource to the specified file. -//----------------------------------------------------------------------------- -static PyObject *ExtAddIcon( - PyObject *self, // passthrough argument - PyObject *args) // arguments -{ - char *executableName, *iconName, *data, *iconData; - GRPICONDIR *groupIconDir; - DWORD resourceSize; - ICONDIR *iconDir; - BOOL succeeded; - HANDLE handle; - int i; - - if (!PyArg_ParseTuple(args, "ss", &executableName, &iconName)) - return NULL; - - // begin updating the executable - handle = BeginUpdateResource(executableName, FALSE); - if (!handle) { - PyErr_SetExcFromWindowsErrWithFilename(PyExc_WindowsError, - GetLastError(), executableName); - return NULL; - } - - // first attempt to get the data from the icon file - data = NULL; - succeeded = TRUE; - groupIconDir = NULL; - if (GetFileData(iconName, &data) < 0) - succeeded = FALSE; - iconDir = (ICONDIR*) data; - - // next, attempt to add a group icon resource - if (succeeded) { - groupIconDir = CreateGroupIconResource(iconDir, &resourceSize); - if (groupIconDir) - succeeded = UpdateResource(handle, RT_GROUP_ICON, - MAKEINTRESOURCE(1), - MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), - groupIconDir, resourceSize); - else succeeded = FALSE; - } - - // next, add each icon as a resource - if (succeeded) { - for (i = 0; i < iconDir->idCount; i++) { - iconData = &data[iconDir->idEntries[i].dwImageOffset]; - resourceSize = iconDir->idEntries[i].dwBytesInRes; - succeeded = UpdateResource(handle, RT_ICON, MAKEINTRESOURCE(i + 1), - MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), iconData, - resourceSize); - if (!succeeded) - break; - } - } - - // finish writing the resource (or discarding the changes upon an error) - if (!EndUpdateResource(handle, !succeeded)) { - if (succeeded) { - succeeded = FALSE; - PyErr_SetExcFromWindowsErrWithFilename(PyExc_WindowsError, - GetLastError(), executableName); - } - } - - // clean up - if (groupIconDir) - PyMem_Free(groupIconDir); - if (data) - PyMem_Free(data); - if (!succeeded) - return NULL; - - Py_INCREF(Py_None); - return Py_None; -} - - -//----------------------------------------------------------------------------- -// ExtBeginUpdateResource() -// Wrapper for BeginUpdateResource(). -//----------------------------------------------------------------------------- -static PyObject *ExtBeginUpdateResource( - PyObject *self, // passthrough argument - PyObject *args) // arguments -{ - BOOL deleteExistingResources; - char *fileName; - HANDLE handle; - - deleteExistingResources = TRUE; - if (!PyArg_ParseTuple(args, "s|i", &fileName, &deleteExistingResources)) - return NULL; - handle = BeginUpdateResource(fileName, deleteExistingResources); - if (!handle) { - PyErr_SetExcFromWindowsErrWithFilename(PyExc_WindowsError, - GetLastError(), fileName); - return NULL; - } - return PyInt_FromLong((long) handle); -} - - -//----------------------------------------------------------------------------- -// ExtUpdateResource() -// Wrapper for UpdateResource(). -//----------------------------------------------------------------------------- -static PyObject *ExtUpdateResource( - PyObject *self, // passthrough argument - PyObject *args) // arguments -{ - int resourceType, resourceId, resourceDataSize; - char *resourceData; - HANDLE handle; - - if (!PyArg_ParseTuple(args, "iiis#", &handle, &resourceType, &resourceId, - &resourceData, &resourceDataSize)) - return NULL; - if (!UpdateResource(handle, MAKEINTRESOURCE(resourceType), - MAKEINTRESOURCE(resourceId), - MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), resourceData, - resourceDataSize)) { - PyErr_SetExcFromWindowsErr(PyExc_WindowsError, GetLastError()); - return NULL; - } - - Py_INCREF(Py_None); - return Py_None; -} - - -//----------------------------------------------------------------------------- -// ExtEndUpdateResource() -// Wrapper for EndUpdateResource(). -//----------------------------------------------------------------------------- -static PyObject *ExtEndUpdateResource( - PyObject *self, // passthrough argument - PyObject *args) // arguments -{ - BOOL discardChanges; - HANDLE handle; - - discardChanges = FALSE; - if (!PyArg_ParseTuple(args, "i|i", &handle, &discardChanges)) - return NULL; - if (!EndUpdateResource(handle, discardChanges)) { - PyErr_SetExcFromWindowsErr(PyExc_WindowsError, GetLastError()); - return NULL; - } - - Py_INCREF(Py_None); - return Py_None; -} - - -//----------------------------------------------------------------------------- -// ExtGetDependentFiles() -// Return a list of files that this file depends on. -//----------------------------------------------------------------------------- -static PyObject *ExtGetDependentFiles( - PyObject *self, // passthrough argument - PyObject *args) // arguments -{ - PyObject *results; - char *imageName; - - if (!PyArg_ParseTuple(args, "s", &imageName)) - return NULL; - g_ImageNames = PyDict_New(); - if (!g_ImageNames) - return NULL; - if (!BindImageEx(BIND_NO_BOUND_IMPORTS | BIND_NO_UPDATE | BIND_ALL_IMAGES, - imageName, NULL, NULL, BindStatusRoutine)) { - Py_DECREF(g_ImageNames); - PyErr_SetExcFromWindowsErrWithFilename(g_BindErrorException, - GetLastError(), imageName); - return NULL; - } - results = PyDict_Keys(g_ImageNames); - Py_DECREF(g_ImageNames); - return results; -} - - -//----------------------------------------------------------------------------- -// ExtGetSystemDir() -// Return the Windows directory (C:\Windows for example). -//----------------------------------------------------------------------------- -static PyObject *ExtGetSystemDir( - PyObject *self, // passthrough argument - PyObject *args) // arguments (ignored) -{ - char dir[MAX_PATH + 1]; - - if (GetSystemDirectory(dir, sizeof(dir))) - return PyString_FromString(dir); - PyErr_SetExcFromWindowsErr(PyExc_RuntimeError, GetLastError()); - return NULL; -} -#endif - - -//----------------------------------------------------------------------------- -// ExtSetOptimizeFlag() -// Set the optimize flag as needed. -//----------------------------------------------------------------------------- -static PyObject *ExtSetOptimizeFlag( - PyObject *self, // passthrough argument - PyObject *args) // arguments -{ - if (!PyArg_ParseTuple(args, "i", &Py_OptimizeFlag)) - return NULL; - Py_INCREF(Py_None); - return Py_None; -} - - -//----------------------------------------------------------------------------- -// Methods -//----------------------------------------------------------------------------- -static PyMethodDef g_ModuleMethods[] = { - { "SetOptimizeFlag", ExtSetOptimizeFlag, METH_VARARGS }, -#ifdef WIN32 - { "BeginUpdateResource", ExtBeginUpdateResource, METH_VARARGS }, - { "UpdateResource", ExtUpdateResource, METH_VARARGS }, - { "EndUpdateResource", ExtEndUpdateResource, METH_VARARGS }, - { "AddIcon", ExtAddIcon, METH_VARARGS }, - { "GetDependentFiles", ExtGetDependentFiles, METH_VARARGS }, - { "GetSystemDir", ExtGetSystemDir, METH_NOARGS }, -#endif - { NULL } -}; - - -//----------------------------------------------------------------------------- -// initutil() -// Initialization routine for the shared libary. -//----------------------------------------------------------------------------- -void initutil(void) -{ - PyObject *module; - - module = Py_InitModule("cx_Freeze.util", g_ModuleMethods); - if (!module) - return; -#ifdef WIN32 - g_BindErrorException = PyErr_NewException("cx_Freeze.util.BindError", - NULL, NULL); - if (!g_BindErrorException) - return; - if (PyModule_AddObject(module, "BindError", g_BindErrorException) < 0) - return; -#endif -} - diff --git a/setup/installer/windows/notes.rst b/setup/installer/windows/notes.rst index e7fef2be80..8f1cc80bb5 100644 --- a/setup/installer/windows/notes.rst +++ b/setup/installer/windows/notes.rst @@ -237,28 +237,10 @@ cp build/podofo/build/src/Release/podofo.exp lib/ cp build/podofo/build/podofo_config.h include/podofo/ cp -r build/podofo/src/* include/podofo/ -The following patch (against 0.8.1) was required to get it to compile: +You have to use >0.8.1 (>= revision 1269) + +The following patch (against -r1269) was required to get it to compile: -Index: src/PdfImage.cpp -=================================================================== ---- src/PdfImage.cpp (revision 1261) -+++ src/PdfImage.cpp (working copy) -@@ -627,7 +627,7 @@ - - long lLen = static_cast(pInfo->rowbytes * height); - char* pBuffer = static_cast(malloc(sizeof(char) * lLen)); -- png_bytep pRows[height]; -+ png_bytepp pRows = static_cast(malloc(sizeof(png_bytep)*height)); - for(int y=0; y(pBuffer + (y * pInfo->rowbytes)); -@@ -672,6 +672,7 @@ - this->SetImageData( width, height, pInfo->bit_depth, &stream ); - - free(pBuffer); -+ free(pRows); - } - #endif // PODOFO_HAVE_PNG_LIB Index: src/PdfFiltersPrivate.cpp =================================================================== diff --git a/src/calibre/__init__.py b/src/calibre/__init__.py index 34801d39ca..16aaab73dd 100644 --- a/src/calibre/__init__.py +++ b/src/calibre/__init__.py @@ -3,7 +3,7 @@ __license__ = 'GPL v3' __copyright__ = '2008, Kovid Goyal ' __docformat__ = 'restructuredtext en' -import sys, os, re, logging, time, mimetypes, \ +import uuid, sys, os, re, logging, time, mimetypes, \ __builtin__, warnings, multiprocessing from urllib import getproxies __builtin__.__dict__['dynamic_property'] = lambda(func): func(None) @@ -23,6 +23,8 @@ from calibre.startup import winutil, winutilerror import mechanize +uuid.uuid4() # Imported before PyQt4 to workaround PyQt4 util-linux conflict on gentoo + if False: winutil, winutilerror, __appname__, islinux, __version__ fcntl, win32event, isfrozen, __author__, terminal_controller diff --git a/src/calibre/constants.py b/src/calibre/constants.py index cf25cff977..f8d6253912 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.7.13' +__version__ = '0.7.14' __author__ = "Kovid Goyal " import re diff --git a/src/calibre/customize/__init__.py b/src/calibre/customize/__init__.py index 1348da5e5a..88c9324239 100644 --- a/src/calibre/customize/__init__.py +++ b/src/calibre/customize/__init__.py @@ -351,3 +351,12 @@ class CatalogPlugin(Plugin): # Default implementation does nothing raise NotImplementedError('CatalogPlugin.generate_catalog() default ' 'method, should be overridden in subclass') + +class InterfaceActionBase(Plugin): + + supported_platforms = ['windows', 'osx', 'linux'] + author = 'Kovid Goyal' + type = _('User Interface Action') + can_be_disabled = False + + actual_plugin = None diff --git a/src/calibre/customize/builtins.py b/src/calibre/customize/builtins.py index 998bfa7b1e..cd2896f232 100644 --- a/src/calibre/customize/builtins.py +++ b/src/calibre/customize/builtins.py @@ -574,3 +574,92 @@ plugins += [x for x in list(locals().values()) if isinstance(x, type) and \ plugins += [x for x in list(locals().values()) if isinstance(x, type) and \ x.__name__.endswith('MetadataWriter')] plugins += input_profiles + output_profiles + +from calibre.customize import InterfaceActionBase + +class ActionAdd(InterfaceActionBase): + name = 'Add Books' + actual_plugin = 'calibre.gui2.actions.add:AddAction' + +class ActionFetchAnnotations(InterfaceActionBase): + name = 'Fetch Annotations' + actual_plugin = 'calibre.gui2.actions.annotate:FetchAnnotationsAction' + +class ActionGenerateCatalog(InterfaceActionBase): + name = 'Generate Catalog' + actual_plugin = 'calibre.gui2.actions.catalog:GenerateCatalogAction' + +class ActionConvert(InterfaceActionBase): + name = 'Convert Books' + actual_plugin = 'calibre.gui2.actions.convert:ConvertAction' + +class ActionDelete(InterfaceActionBase): + name = 'Remove Books' + actual_plugin = 'calibre.gui2.actions.delete:DeleteAction' + +class ActionEditMetadata(InterfaceActionBase): + name = 'Edit Metadata' + actual_plugin = 'calibre.gui2.actions.edit_metadata:EditMetadataAction' + +class ActionView(InterfaceActionBase): + name = 'View' + actual_plugin = 'calibre.gui2.actions.view:ViewAction' + +class ActionFetchNews(InterfaceActionBase): + name = 'Fetch News' + actual_plugin = 'calibre.gui2.actions.fetch_news:FetchNewsAction' + +class ActionSaveToDisk(InterfaceActionBase): + name = 'Save To Disk' + actual_plugin = 'calibre.gui2.actions.save_to_disk:SaveToDiskAction' + +class ActionShowBookDetails(InterfaceActionBase): + name = 'Show Book Details' + actual_plugin = 'calibre.gui2.actions.show_book_details:ShowBookDetailsAction' + +class ActionRestart(InterfaceActionBase): + name = 'Restart' + actual_plugin = 'calibre.gui2.actions.restart:RestartAction' + +class ActionOpenFolder(InterfaceActionBase): + name = 'Open Folder' + actual_plugin = 'calibre.gui2.actions.open:OpenFolderAction' + +class ActionSendToDevice(InterfaceActionBase): + name = 'Send To Device' + actual_plugin = 'calibre.gui2.actions.device:SendToDeviceAction' + +class ActionConnectShare(InterfaceActionBase): + name = 'Connect Share' + actual_plugin = 'calibre.gui2.actions.device:ConnectShareAction' + +class ActionHelp(InterfaceActionBase): + name = 'Help' + actual_plugin = 'calibre.gui2.actions.help:HelpAction' + +class ActionPreferences(InterfaceActionBase): + name = 'Preferences' + actual_plugin = 'calibre.gui2.actions.preferences:PreferencesAction' + +class ActionSimilarBooks(InterfaceActionBase): + name = 'Similar Books' + actual_plugin = 'calibre.gui2.actions.similar_books:SimilarBooksAction' + +class ActionChooseLibrary(InterfaceActionBase): + name = 'Choose Library' + actual_plugin = 'calibre.gui2.actions.choose_library:ChooseLibraryAction' + +class ActionAddToLibrary(InterfaceActionBase): + name = 'Add To Library' + actual_plugin = 'calibre.gui2.actions.add_to_library:AddToLibraryAction' + +class ActionEditCollections(InterfaceActionBase): + name = 'Edit Collections' + actual_plugin = 'calibre.gui2.actions.edit_collections:EditCollectionsAction' + +plugins += [ActionAdd, ActionFetchAnnotations, ActionGenerateCatalog, + ActionConvert, ActionDelete, ActionEditMetadata, ActionView, + ActionFetchNews, ActionSaveToDisk, ActionShowBookDetails, + ActionRestart, ActionOpenFolder, ActionConnectShare, + ActionSendToDevice, ActionHelp, ActionPreferences, ActionSimilarBooks, + ActionAddToLibrary, ActionEditCollections, ActionChooseLibrary] diff --git a/src/calibre/customize/conversion.py b/src/calibre/customize/conversion.py index e98f34273f..72c067747d 100644 --- a/src/calibre/customize/conversion.py +++ b/src/calibre/customize/conversion.py @@ -112,6 +112,10 @@ class InputFormatPlugin(Plugin): #: convenience method, :meth:`get_image_collection`. is_image_collection = False + #: Number of CPU cores used by this plugin + #: A value of -1 means that it uses all available cores + core_usage = 1 + #: If set to True, the input plugin will perform special processing #: to make its output suitable for viewing for_viewer = False diff --git a/src/calibre/customize/profiles.py b/src/calibre/customize/profiles.py index 85eae21b8d..1563f764ca 100644 --- a/src/calibre/customize/profiles.py +++ b/src/calibre/customize/profiles.py @@ -426,7 +426,7 @@ class KoboReaderOutput(OutputProfile): description = _('This profile is intended for the Kobo Reader.') - screen_size = (590, 775) + screen_size = (540, 718) comic_screen_size = (540, 718) dpi = 168.451 fbase = 12 diff --git a/src/calibre/customize/ui.py b/src/calibre/customize/ui.py index 7b70bfbb4b..b720964c92 100644 --- a/src/calibre/customize/ui.py +++ b/src/calibre/customize/ui.py @@ -6,7 +6,8 @@ import os, shutil, traceback, functools, sys, re from contextlib import closing from calibre.customize import Plugin, CatalogPlugin, FileTypePlugin, \ - MetadataReaderPlugin, MetadataWriterPlugin + MetadataReaderPlugin, MetadataWriterPlugin, \ + InterfaceActionBase as InterfaceAction from calibre.customize.conversion import InputFormatPlugin, OutputFormatPlugin from calibre.customize.profiles import InputProfile, OutputProfile from calibre.customize.builtins import plugins as builtin_plugins @@ -19,7 +20,6 @@ from calibre.utils.config import make_config_dir, Config, ConfigProxy, \ plugin_dir, OptionParser, prefs from calibre.ebooks.epub.fix import ePubFixer - platform = 'linux' if iswindows: platform = 'windows' @@ -246,6 +246,17 @@ def cover_sources(): # }}} +# Interface Actions # {{{ + +def interface_actions(): + customization = config['plugin_customization'] + for plugin in _initialized_plugins: + if isinstance(plugin, InterfaceAction): + if not is_disabled(plugin): + plugin.site_customization = customization.get(plugin.name, '') + yield plugin +# }}} + # Metadata read/write {{{ _metadata_readers = {} _metadata_writers = {} diff --git a/src/calibre/devices/android/driver.py b/src/calibre/devices/android/driver.py index a7b9fdea0f..951ed66e72 100644 --- a/src/calibre/devices/android/driver.py +++ b/src/calibre/devices/android/driver.py @@ -33,7 +33,9 @@ class ANDROID(USBMS): # Samsung 0x04e8 : { 0x681d : [0x0222, 0x0400], - 0x681c : [0x0222, 0x0224, 0x0400]}, + 0x681c : [0x0222, 0x0224, 0x0400], + 0x6640 : [0x0100], + }, # Acer 0x502 : { 0x3203 : [0x0100]}, @@ -44,7 +46,7 @@ class ANDROID(USBMS): # Eken? 0x040d : { 0x0851 : [0x0001]}, } - EBOOK_DIR_MAIN = ['wordplayer/calibretransfer', 'eBooks/import', 'Books'] + EBOOK_DIR_MAIN = ['eBooks/import', 'wordplayer/calibretransfer', 'Books'] EXTRA_CUSTOMIZATION_MESSAGE = _('Comma separated list of directories to ' 'send e-books to on the device. The first one that exists will ' 'be used') @@ -54,9 +56,9 @@ class ANDROID(USBMS): 'GT-I5700', 'SAMSUNG', 'DELL', 'LINUX'] WINDOWS_MAIN_MEM = ['ANDROID_PHONE', 'A855', 'A853', 'INC.NEXUS_ONE', '__UMS_COMPOSITE', '_MB200', 'MASS_STORAGE', '_-_CARD', - 'GT-I9000', 'FILE-STOR_GADGET', 'SGH-T959'] + 'GT-I9000', 'FILE-STOR_GADGET', 'SGH-T959', 'SAMSUNG_ANDROID'] WINDOWS_CARD_A_MEM = ['ANDROID_PHONE', 'GT-I9000_CARD', - 'FILE-STOR_GADGET', 'SGH-T959'] + 'FILE-STOR_GADGET', 'SGH-T959', 'SAMSUNG_ANDROID'] OSX_MAIN_MEM = 'HTC Android Phone Media' diff --git a/src/calibre/devices/scanner.py b/src/calibre/devices/scanner.py index 6547334b8f..380dcb7440 100644 --- a/src/calibre/devices/scanner.py +++ b/src/calibre/devices/scanner.py @@ -56,6 +56,8 @@ class WinPNPScanner(object): def drive_order(self, pnp_id): order = 0 match = re.search(r'REV_.*?&(\d+)#', pnp_id) + if match is None: + match = re.search(r'REV_.*?&(\d+)', pnp_id) if match is not None: order = int(match.group(1)) return order diff --git a/src/calibre/devices/sne/driver.py b/src/calibre/devices/sne/driver.py index 802ae43eaa..0ccac13245 100644 --- a/src/calibre/devices/sne/driver.py +++ b/src/calibre/devices/sne/driver.py @@ -20,20 +20,19 @@ class SNE(USBMS): # Ordered list of supported formats # Be sure these have an entry in calibre.devices.mime - FORMATS = ['epub', 'txt'] + FORMATS = ['epub', 'pdf', 'txt'] VENDOR_ID = [0x04e8] - PRODUCT_ID = [0x2051] + PRODUCT_ID = [0x2051, 0x2053] BCD = [0x0323] - VENDOR_NAME = '' - #WINDOWS_MAIN_MEM = 'MASS_STORAGE' - #WINDOWS_CARD_A_MEM = 'MASS_STORAGE' + VENDOR_NAME = 'SAMSUNG' + WINDOWS_MAIN_MEM = WINDOWS_CARD_A_MEM = 'SNE-60' MAIN_MEMORY_VOLUME_LABEL = 'SNE Main Memory' STORAGE_CARD_VOLUME_LABEL = 'SNE Storage Card' - EBOOK_DIR_MAIN = 'Book' + EBOOK_DIR_MAIN = 'Books' SUPPORTS_SUB_DIRS = True diff --git a/src/calibre/devices/teclast/driver.py b/src/calibre/devices/teclast/driver.py index 1701696fad..0c60a367cf 100644 --- a/src/calibre/devices/teclast/driver.py +++ b/src/calibre/devices/teclast/driver.py @@ -6,9 +6,9 @@ from calibre.devices.usbms.driver import USBMS class TECLAST_K3(USBMS): - name = 'Teclast K3 Device Interface' - gui_name = 'K3' - description = _('Communicate with the Teclast K3 reader.') + name = 'Teclast K3/K5 Device Interface' + gui_name = 'K3/K5' + description = _('Communicate with the Teclast K3/K5 reader.') author = 'Kovid Goyal' supported_platforms = ['windows', 'osx', 'linux'] @@ -17,11 +17,10 @@ class TECLAST_K3(USBMS): VENDOR_ID = [0x071b] PRODUCT_ID = [0x3203] - BCD = [0x0000] + BCD = [0x0000, 0x0100] VENDOR_NAME = 'TECLAST' - WINDOWS_MAIN_MEM = 'DIGITAL_PLAYER' - WINDOWS_CARD_A_MEM = 'DIGITAL_PLAYER' + WINDOWS_MAIN_MEM = WINDOWS_CARD_A_MEM = ['DIGITAL_PLAYER', 'TL-K5'] MAIN_MEMORY_VOLUME_LABEL = 'K3 Main Memory' STORAGE_CARD_VOLUME_LABEL = 'K3 Storage Card' diff --git a/src/calibre/ebooks/comic/input.py b/src/calibre/ebooks/comic/input.py index bfc6ff30ca..23f5906a53 100755 --- a/src/calibre/ebooks/comic/input.py +++ b/src/calibre/ebooks/comic/input.py @@ -163,8 +163,12 @@ class PageProcessor(list): wand.quantize(self.opts.colors) dest = '%d_%d.%s'%(self.num, i, self.opts.output_format) dest = os.path.join(self.dest, dest) - wand.save(dest+'8') - os.rename(dest+'8', dest) + if dest.lower().endswith('.png'): + dest += '8' + wand.save(dest) + if dest.endswith('8'): + dest = dest[:-1] + os.rename(dest+'8', dest) self.append(dest) def render_pages(tasks, dest, opts, notification=lambda x, y: x): @@ -247,6 +251,7 @@ class ComicInput(InputFormatPlugin): description = 'Optimize comic files (.cbz, .cbr, .cbc) for viewing on portable devices' file_types = set(['cbz', 'cbr', 'cbc']) is_image_collection = True + core_usage = -1 options = set([ OptionRecommendation(name='colors', recommended_value=256, diff --git a/src/calibre/ebooks/mobi/writer.py b/src/calibre/ebooks/mobi/writer.py index ca5256b430..10f1ee32d6 100644 --- a/src/calibre/ebooks/mobi/writer.py +++ b/src/calibre/ebooks/mobi/writer.py @@ -185,7 +185,7 @@ class Serializer(object): buffer.write('') for ref in self.oeb.guide.values(): path = urldefrag(ref.href)[0] - if hrefs[path].media_type not in OEB_DOCS: + if path not in hrefs or hrefs[path].media_type not in OEB_DOCS: continue buffer.write(''), mi, 'x.bookmark', create_dirs=False) - path_map[id] = dict(path=a_path, fmts=get_formats(id)) - return path_map + If two :class:`InterfaceAction` objects have the same name, the one with higher + priority takes precedence. - device = self.device_manager.device + Sub-classes should implement the :meth:`genesis`, :meth:`library_moved`, + :meth:`location_selected` :meth:`shutting_down` + and :meth:`initialization_complete` methods. - if self.current_view() is not self.library_view: - return error_dialog(self, _('Use library only'), - _('User annotations generated from main library only'), - show=True) - db = self.library_view.model().db + Once initialized, this plugin has access to the main calibre GUI via the + :attr:`gui` member. You can access other plugins by name, for example:: - # Get the list of ids - ids = get_ids_from_selected_rows() - if not ids: - return error_dialog(self, _('No books selected'), - _('No books selected to fetch annotations from'), - show=True) + self.gui.iactions['Save To Disk'] - # Map ids to paths - path_map = generate_annotation_paths(ids, db, device) + The QAction specified by :attr:`action_spec` is automatically create and + made available as ``self.qaction``. - # Dispatch to devices.kindle.driver.get_annotations() - self.device_manager.annotations(Dispatcher(self.annotations_fetched), - path_map) + ''' - def annotations_fetched(self, job): - from calibre.devices.usbms.device import Device - from calibre.ebooks.metadata import MetaInformation - from calibre.gui2.dialogs.progress import ProgressDialog - from calibre.library.cli import do_add_format + #: The plugin name. If two plugins with the same name are present, the one + #: with higher priority takes precedence. + name = 'Implement me' - class Updater(QThread): + #: The plugin priority. If two plugins with the same name are present, the one + #: with higher priority takes precedence. + priority = 1 - update_progress = pyqtSignal(int) - update_done = pyqtSignal() - FINISHED_READING_PCT_THRESHOLD = 96 + #: The menu popup type for when this plugin is added to a toolbar + popup_type = QToolButton.MenuButtonPopup - def __init__(self, parent, db, annotation_map, done_callback): - QThread.__init__(self, parent) - self.db = db - self.pd = ProgressDialog(_('Merging user annotations into database'), '', - 0, len(job.result), parent=parent) + #: Whether this action should be auto repeated when its shortcut + #: key is held down. + auto_repeat = False - self.am = annotation_map - self.done_callback = done_callback - self.connect(self.pd, SIGNAL('canceled()'), self.canceled) - self.pd.setModal(True) - self.pd.show() - self.update_progress.connect(self.pd.set_value, - type=Qt.QueuedConnection) - self.update_done.connect(self.pd.hide, type=Qt.QueuedConnection) + #: Of the form: (text, icon_path, tooltip, keyboard shortcut) + #: icon, tooltip and keyboard shortcut can be None + #: shortcut must be a translated string if not None + action_spec = ('text', 'icon', None, None) - def generate_annotation_html(self, bookmark): - # Returns
...
- last_read_location = bookmark.last_read_location - timestamp = datetime.datetime.utcfromtimestamp(bookmark.timestamp) - percent_read = bookmark.percent_read + def __init__(self, parent, site_customization): + QObject.__init__(self, parent) + self.setObjectName(self.name) + self.gui = parent + self.site_customization = site_customization - ka_soup = BeautifulSoup() - dtc = 0 - divTag = Tag(ka_soup,'div') - divTag['class'] = 'user_annotations' + def do_genesis(self): + self.Dispatcher = partial(Dispatcher, parent=self) + self.create_action() + self.gui.addAction(self.qaction) + self.genesis() - # Add the last-read location - spanTag = Tag(ka_soup, 'span') - spanTag['style'] = 'font-weight:bold' - if bookmark.book_format == 'pdf': - spanTag.insert(0,NavigableString( - _("%s
Last Page Read: %d (%d%%)") % \ - (strftime(u'%x', timestamp.timetuple()), - last_read_location, - percent_read))) - else: - spanTag.insert(0,NavigableString( - _("%s
Last Page Read: Location %d (%d%%)") % \ - (strftime(u'%x', timestamp.timetuple()), - last_read_location, - percent_read))) - - divTag.insert(dtc, spanTag) - dtc += 1 - divTag.insert(dtc, Tag(ka_soup,'br')) - dtc += 1 - - if bookmark.user_notes: - user_notes = bookmark.user_notes - annotations = [] - - # Add the annotations sorted by location - # Italicize highlighted text - for location in sorted(user_notes): - if user_notes[location]['text']: - annotations.append( - _('Location %d • %s
%s
') % \ - (user_notes[location]['displayed_location'], - user_notes[location]['type'], - user_notes[location]['text'] if \ - user_notes[location]['type'] == 'Note' else \ - '%s' % user_notes[location]['text'])) - else: - if bookmark.book_format == 'pdf': - annotations.append( - _('Page %d • %s
') % \ - (user_notes[location]['displayed_location'], - user_notes[location]['type'])) - else: - annotations.append( - _('Location %d • %s
') % \ - (user_notes[location]['displayed_location'], - user_notes[location]['type'])) - - for annotation in annotations: - divTag.insert(dtc, annotation) - dtc += 1 - - ka_soup.insert(0,divTag) - return ka_soup - - def mark_book_as_read(self,id): - read_tag = gprefs.get('catalog_epub_mobi_read_tag') - if read_tag: - self.db.set_tags(id, [read_tag], append=True) - - def canceled(self): - self.pd.hide() - - def run(self): - ignore_tags = set(['Catalog','Clippings']) - for (i, id) in enumerate(self.am): - bm = Device.UserAnnotation(self.am[id][0],self.am[id][1]) - if bm.type == 'kindle_bookmark': - mi = self.db.get_metadata(id, index_is_id=True) - user_notes_soup = self.generate_annotation_html(bm.value) - if mi.comments: - a_offset = mi.comments.find('
') - ad_offset = mi.comments.find('
') - - if a_offset >= 0: - mi.comments = mi.comments[:a_offset] - if ad_offset >= 0: - mi.comments = mi.comments[:ad_offset] - if set(mi.tags).intersection(ignore_tags): - continue - if mi.comments: - hrTag = Tag(user_notes_soup,'hr') - hrTag['class'] = 'annotations_divider' - user_notes_soup.insert(0,hrTag) - - mi.comments += user_notes_soup.prettify() - else: - mi.comments = unicode(user_notes_soup.prettify()) - # Update library comments - self.db.set_comment(id, mi.comments) - - # Update 'read' tag except for Catalogs/Clippings - if bm.value.percent_read >= self.FINISHED_READING_PCT_THRESHOLD: - if not set(mi.tags).intersection(ignore_tags): - self.mark_book_as_read(id) - - # Add bookmark file to id - self.db.add_format_with_hooks(id, bm.value.bookmark_extension, - bm.value.path, index_is_id=True) - self.update_progress.emit(i) - elif bm.type == 'kindle_clippings': - # Find 'My Clippings' author=Kindle in database, or add - last_update = 'Last modified %s' % strftime(u'%x %X',bm.value['timestamp'].timetuple()) - mc_id = list(db.data.parse('title:"My Clippings"')) - if mc_id: - do_add_format(self.db, mc_id[0], 'TXT', bm.value['path']) - mi = self.db.get_metadata(mc_id[0], index_is_id=True) - mi.comments = last_update - self.db.set_metadata(mc_id[0], mi) - else: - mi = MetaInformation('My Clippings', authors = ['Kindle']) - mi.tags = ['Clippings'] - mi.comments = last_update - self.db.add_books([bm.value['path']], ['txt'], [mi]) - - self.update_done.emit() - self.done_callback(self.am.keys()) - - if not job.result: return - - if self.current_view() is not self.library_view: - return error_dialog(self, _('Use library only'), - _('User annotations generated from main library only'), - show=True) - db = self.library_view.model().db - - self.__annotation_updater = Updater(self, db, job.result, - Dispatcher(self.library_view.model().refresh_ids)) - self.__annotation_updater.start() - - # }}} - -class AddAction(object): # {{{ - - def __init__(self): - self._add_filesystem_book = Dispatcher(self.__add_filesystem_book) - - def add_recursive(self, single): - root = choose_dir(self, 'recursive book import root dir dialog', - 'Select root folder') - if not root: - return - from calibre.gui2.add import Adder - self._adder = Adder(self, - self.library_view.model().db, - Dispatcher(self._files_added), spare_server=self.spare_server) - self._adder.add_recursive(root, single) - - def add_recursive_single(self, *args): - ''' - Add books from the local filesystem to either the library or the device - recursively assuming one book per folder. - ''' - self.add_recursive(True) - - def add_recursive_multiple(self, *args): - ''' - Add books from the local filesystem to either the library or the device - recursively assuming multiple books per folder. - ''' - self.add_recursive(False) - - def add_empty(self, *args): - ''' - Add an empty book item to the library. This does not import any formats - from a book file. - ''' - num, ok = QInputDialog.getInt(self, _('How many empty books?'), - _('How many empty books should be added?'), 1, 1, 100) - if ok: - from calibre.ebooks.metadata import MetaInformation - for x in xrange(num): - self.library_view.model().db.import_book(MetaInformation(None), []) - self.library_view.model().books_added(num) - - def add_isbns(self, isbns): - from calibre.ebooks.metadata import MetaInformation - ids = set([]) - for x in isbns: - mi = MetaInformation(None) - mi.isbn = x - ids.add(self.library_view.model().db.import_book(mi, [])) - self.library_view.model().books_added(len(isbns)) - self.do_download_metadata(ids) - - - def files_dropped(self, paths): - to_device = self.stack.currentIndex() != 0 - self._add_books(paths, to_device) - - def files_dropped_on_book(self, event, paths): - accept = False - if self.current_view() is not self.library_view: - return - db = self.library_view.model().db - current_idx = self.library_view.currentIndex() - if not current_idx.isValid(): return - cid = db.id(current_idx.row()) - for path in paths: - ext = os.path.splitext(path)[1].lower() - if ext: - ext = ext[1:] - if ext in IMAGE_EXTENSIONS: - pmap = QPixmap() - pmap.load(path) - if not pmap.isNull(): - accept = True - db.set_cover(cid, pmap) - elif ext in BOOK_EXTENSIONS: - db.add_format_with_hooks(cid, ext, path, index_is_id=True) - accept = True - if accept: - event.accept() - self.library_view.model().current_changed(current_idx, current_idx) - - def __add_filesystem_book(self, paths, allow_device=True): - if isinstance(paths, basestring): - paths = [paths] - books = [path for path in map(os.path.abspath, paths) if os.access(path, - os.R_OK)] - - if books: - to_device = allow_device and self.stack.currentIndex() != 0 - self._add_books(books, to_device) - if to_device: - self.status_bar.show_message(\ - _('Uploading books to device.'), 2000) - - - def add_filesystem_book(self, paths, allow_device=True): - self._add_filesystem_book(paths, allow_device=allow_device) - - def add_from_isbn(self, *args): - from calibre.gui2.dialogs.add_from_isbn import AddFromISBN - d = AddFromISBN(self) - if d.exec_() == d.Accepted: - self.add_isbns(d.isbns) - - def add_books(self, *args): - ''' - Add books from the local filesystem to either the library or the device. - ''' - filters = [ - (_('Books'), BOOK_EXTENSIONS), - (_('EPUB Books'), ['epub']), - (_('LRF Books'), ['lrf']), - (_('HTML Books'), ['htm', 'html', 'xhtm', 'xhtml']), - (_('LIT Books'), ['lit']), - (_('MOBI Books'), ['mobi', 'prc', 'azw']), - (_('Topaz books'), ['tpz','azw1']), - (_('Text books'), ['txt', 'rtf']), - (_('PDF Books'), ['pdf']), - (_('Comics'), ['cbz', 'cbr', 'cbc']), - (_('Archives'), ['zip', 'rar']), - ] - to_device = self.stack.currentIndex() != 0 - if to_device: - filters = [(_('Supported books'), self.device_manager.device.FORMATS)] - - books = choose_files(self, 'add books dialog dir', 'Select books', - filters=filters) - if not books: - return - self._add_books(books, to_device) - - def _add_books(self, paths, to_device, on_card=None): - if on_card is None: - on_card = 'carda' if self.stack.currentIndex() == 2 else 'cardb' if self.stack.currentIndex() == 3 else None - if not paths: - return - from calibre.gui2.add import Adder - self.__adder_func = partial(self._files_added, on_card=on_card) - self._adder = Adder(self, - None if to_device else self.library_view.model().db, - Dispatcher(self.__adder_func), spare_server=self.spare_server) - self._adder.add(paths) - - def _files_added(self, paths=[], names=[], infos=[], on_card=None): - if paths: - self.upload_books(paths, - list(map(ascii_filename, names)), - infos, on_card=on_card) - self.status_bar.show_message( - _('Uploading books to device.'), 2000) - if getattr(self._adder, 'number_of_books_added', 0) > 0: - self.library_view.model().books_added(self._adder.number_of_books_added) - if hasattr(self, 'db_images'): - self.db_images.reset() - if getattr(self._adder, 'merged_books', False): - books = u'\n'.join([x if isinstance(x, unicode) else - x.decode(preferred_encoding, 'replace') for x in - self._adder.merged_books]) - info_dialog(self, _('Merged some books'), - _('Some duplicates were found and merged into the ' - 'following existing books:'), det_msg=books, show=True) - if getattr(self._adder, 'critical', None): - det_msg = [] - for name, log in self._adder.critical.items(): - if isinstance(name, str): - name = name.decode(filesystem_encoding, 'replace') - det_msg.append(name+'\n'+log) - - warning_dialog(self, _('Failed to read metadata'), - _('Failed to read metadata from the following')+':', - det_msg='\n\n'.join(det_msg), show=True) - - if hasattr(self._adder, 'cleanup'): - self._adder.cleanup() - self._adder = None - - def _add_from_device_adder(self, paths=[], names=[], infos=[], - on_card=None, model=None): - self._files_added(paths, names, infos, on_card=on_card) - # set the in-library flags, and as a consequence send the library's - # metadata for this book to the device. This sets the uuid to the - # correct value. - self.set_books_in_library(booklists=[model.db], reset=True) - model.reset() - - def add_books_from_device(self, view): - rows = view.selectionModel().selectedRows() - if not rows or len(rows) == 0: - d = error_dialog(self, _('Add to library'), _('No book selected')) - d.exec_() - return - paths = [p for p in view._model.paths(rows) if p is not None] - ve = self.device_manager.device.VIRTUAL_BOOK_EXTENSIONS - def ext(x): - ans = os.path.splitext(x)[1] - ans = ans[1:] if len(ans) > 1 else ans - return ans.lower() - remove = set([p for p in paths if ext(p) in ve]) - if remove: - paths = [p for p in paths if p not in remove] - info_dialog(self, _('Not Implemented'), - _('The following books are virtual and cannot be added' - ' to the calibre library:'), '\n'.join(remove), - show=True) - if not paths: - return - if not paths or len(paths) == 0: - d = error_dialog(self, _('Add to library'), _('No book files found')) - d.exec_() - return - from calibre.gui2.add import Adder - self.__adder_func = partial(self._add_from_device_adder, on_card=None, - model=view._model) - self._adder = Adder(self, self.library_view.model().db, - Dispatcher(self.__adder_func), spare_server=self.spare_server) - self._adder.add(paths) - - # }}} - -class DeleteAction(object): # {{{ - - def _get_selected_formats(self, msg): - from calibre.gui2.dialogs.select_formats import SelectFormats - fmts = self.library_view.model().db.all_formats() - d = SelectFormats([x.lower() for x in fmts], msg, parent=self) - if d.exec_() != d.Accepted: - return None - return d.selected_formats - - def _get_selected_ids(self, err_title=_('Cannot delete')): - rows = self.library_view.selectionModel().selectedRows() - if not rows or len(rows) == 0: - d = error_dialog(self, err_title, _('No book selected')) - d.exec_() - return set([]) - return set(map(self.library_view.model().id, rows)) - - def delete_selected_formats(self, *args): - ids = self._get_selected_ids() - if not ids: - return - fmts = self._get_selected_formats( - _('Choose formats to be deleted')) - if not fmts: - return - for id in ids: - for fmt in fmts: - self.library_view.model().db.remove_format(id, fmt, - index_is_id=True, notify=False) - self.library_view.model().refresh_ids(ids) - self.library_view.model().current_changed(self.library_view.currentIndex(), - self.library_view.currentIndex()) - if ids: - self.tags_view.recount() - - def delete_all_but_selected_formats(self, *args): - ids = self._get_selected_ids() - if not ids: - return - fmts = self._get_selected_formats( - '

'+_('Choose formats not to be deleted')) - if fmts is None: - return - for id in ids: - bfmts = self.library_view.model().db.formats(id, index_is_id=True) - if bfmts is None: - continue - bfmts = set([x.lower() for x in bfmts.split(',')]) - rfmts = bfmts - set(fmts) - for fmt in rfmts: - self.library_view.model().db.remove_format(id, fmt, - index_is_id=True, notify=False) - self.library_view.model().refresh_ids(ids) - self.library_view.model().current_changed(self.library_view.currentIndex(), - self.library_view.currentIndex()) - if ids: - self.tags_view.recount() - - def remove_matching_books_from_device(self, *args): - if not self.device_manager.is_device_connected: - d = error_dialog(self, _('Cannot delete books'), - _('No device is connected')) - d.exec_() - return - ids = self._get_selected_ids() - if not ids: - #_get_selected_ids shows a dialog box if nothing is selected, so we - #do not need to show one here - return - to_delete = {} - some_to_delete = False - for model,name in ((self.memory_view.model(), _('Main memory')), - (self.card_a_view.model(), _('Storage Card A')), - (self.card_b_view.model(), _('Storage Card B'))): - to_delete[name] = (model, model.paths_for_db_ids(ids)) - if len(to_delete[name][1]) > 0: - some_to_delete = True - if not some_to_delete: - d = error_dialog(self, _('No books to delete'), - _('None of the selected books are on the device')) - d.exec_() - return - d = DeleteMatchingFromDeviceDialog(self, to_delete) - if d.exec_(): - paths = {} - ids = {} - for (model, id, path) in d.result: - if model not in paths: - paths[model] = [] - ids[model] = [] - paths[model].append(path) - ids[model].append(id) - for model in paths: - job = self.remove_paths(paths[model]) - self.delete_memory[job] = (paths[model], model) - model.mark_for_deletion(job, ids[model], rows_are_ids=True) - self.status_bar.show_message(_('Deleting books from device.'), 1000) - - def delete_covers(self, *args): - ids = self._get_selected_ids() - if not ids: - return - for id in ids: - self.library_view.model().db.remove_cover(id) - self.library_view.model().refresh_ids(ids) - self.library_view.model().current_changed(self.library_view.currentIndex(), - self.library_view.currentIndex()) - - def delete_books(self, *args): - ''' - Delete selected books from device or library. - ''' - view = self.current_view() - rows = view.selectionModel().selectedRows() - if not rows or len(rows) == 0: - return - if self.stack.currentIndex() == 0: - if not confirm('

'+_('The selected books will be ' - 'permanently deleted and the files ' - 'removed from your computer. Are you sure?') - +'

', 'library_delete_books', self): - return - ci = view.currentIndex() - row = None - if ci.isValid(): - row = ci.row() - ids_deleted = view.model().delete_books(rows) - for v in (self.memory_view, self.card_a_view, self.card_b_view): - if v is None: - continue - v.model().clear_ondevice(ids_deleted) - if row is not None: - ci = view.model().index(row, 0) - if ci.isValid(): - view.set_current_row(row) + def create_action(self, spec=None, attr='qaction'): + if spec is None: + spec = self.action_spec + text, icon, tooltip, shortcut = spec + if icon is not None: + action = QAction(QIcon(I(icon)), text, self.gui) else: - if not confirm('

'+_('The selected books will be ' - 'permanently deleted ' - 'from your device. Are you sure?') - +'

', 'device_delete_books', self): - return - if self.stack.currentIndex() == 1: - view = self.memory_view - elif self.stack.currentIndex() == 2: - view = self.card_a_view - else: - view = self.card_b_view - paths = view.model().paths(rows) - job = self.remove_paths(paths) - self.delete_memory[job] = (paths, view.model()) - view.model().mark_for_deletion(job, rows) - self.status_bar.show_message(_('Deleting books from device.'), 1000) + action = QAction(text, self.gui) + action.setAutoRepeat(self.auto_repeat) + text = tooltip if tooltip else text + action.setToolTip(text) + action.setStatusTip(text) + action.setWhatsThis(text) + action.setAutoRepeat(False) + if shortcut: + action.setShortcut(shortcut) + setattr(self, attr, action) + return action - # }}} - -class EditMetadataAction(object): # {{{ - - def download_metadata(self, checked, covers=True, set_metadata=True, - set_social_metadata=None): - rows = self.library_view.selectionModel().selectedRows() - if not rows or len(rows) == 0: - d = error_dialog(self, _('Cannot download metadata'), - _('No books selected')) - d.exec_() - return - db = self.library_view.model().db - ids = [db.id(row.row()) for row in rows] - self.do_download_metadata(ids, covers=covers, - set_metadata=set_metadata, - set_social_metadata=set_social_metadata) - - def do_download_metadata(self, ids, covers=True, set_metadata=True, - set_social_metadata=None): - db = self.library_view.model().db - if set_social_metadata is None: - get_social_metadata = config['get_social_metadata'] - else: - get_social_metadata = set_social_metadata - from calibre.gui2.metadata import DownloadMetadata - self._download_book_metadata = DownloadMetadata(db, ids, - get_covers=covers, set_metadata=set_metadata, - get_social_metadata=get_social_metadata) - self._download_book_metadata.start() - if set_social_metadata is not None and set_social_metadata: - x = _('social metadata') - else: - x = _('covers') if covers and not set_metadata else _('metadata') - self.progress_indicator.start( - _('Downloading %s for %d book(s)')%(x, len(ids))) - self._book_metadata_download_check = QTimer(self) - self.connect(self._book_metadata_download_check, - SIGNAL('timeout()'), self.book_metadata_download_check, - Qt.QueuedConnection) - self._book_metadata_download_check.start(100) - - def book_metadata_download_check(self): - if self._download_book_metadata.is_alive(): - return - self._book_metadata_download_check.stop() - self.progress_indicator.stop() - cr = self.library_view.currentIndex().row() - x = self._download_book_metadata - self._download_book_metadata = None - if x.exception is None: - self.library_view.model().refresh_ids( - x.updated, cr) - if self.cover_flow: - self.cover_flow.dataChanged() - if x.failures: - details = ['%s: %s'%(title, reason) for title, - reason in x.failures.values()] - details = '%s\n'%('\n'.join(details)) - warning_dialog(self, _('Failed to download some metadata'), - _('Failed to download metadata for the following:'), - det_msg=details).exec_() - else: - err = _('Failed to download metadata:') - error_dialog(self, _('Error'), err, det_msg=x.tb).exec_() - - - def edit_metadata(self, checked, bulk=None): + def genesis(self): ''' - Edit metadata of selected books in library. + Setup this plugin. Only called once during initialization. self.gui is + available. The action secified by :attr:`action_spec` is available as + ``self.qaction``. ''' - rows = self.library_view.selectionModel().selectedRows() - previous = self.library_view.currentIndex() - if not rows or len(rows) == 0: - d = error_dialog(self, _('Cannot edit metadata'), - _('No books selected')) - d.exec_() - return + pass - if bulk or (bulk is None and len(rows) > 1): - return self.edit_bulk_metadata(checked) - - def accepted(id): - self.library_view.model().refresh_ids([id]) - - for row in rows: - self._metadata_view_id = self.library_view.model().db.id(row.row()) - d = MetadataSingleDialog(self, row.row(), - self.library_view.model().db, - accepted_callback=accepted, - cancel_all=rows.index(row) < len(rows)-1) - self.connect(d, SIGNAL('view_format(PyQt_PyObject)'), - self.metadata_view_format) - d.exec_() - if d.cancel_all: - break - if rows: - current = self.library_view.currentIndex() - m = self.library_view.model() - if self.cover_flow: - self.cover_flow.dataChanged() - m.current_changed(current, previous) - self.tags_view.recount() - - def edit_bulk_metadata(self, checked): + def location_selected(self, loc): ''' - Edit metadata of selected books in library in bulk. + Called whenever the book list being displayed in calibre changes. + Currently values for loc are: ``library, main, card and cardb``. + + This method should enable/disable this action and its sub actions as + appropriate for the location. ''' - rows = [r.row() for r in \ - self.library_view.selectionModel().selectedRows()] - if not rows or len(rows) == 0: - d = error_dialog(self, _('Cannot edit metadata'), - _('No books selected')) - d.exec_() - return - if MetadataBulkDialog(self, rows, - self.library_view.model().db).changed: - self.library_view.model().resort(reset=False) - self.library_view.model().research() - self.tags_view.recount() - if self.cover_flow: - self.cover_flow.dataChanged() + pass - # Merge books {{{ - def merge_books(self, safe_merge=False): + def library_changed(self, db): ''' - Merge selected books in library. + Called whenever the current library is changed. + + :param db: The LibraryDatabase corresponding to the current library. ''' - if self.stack.currentIndex() != 0: - return - rows = self.library_view.selectionModel().selectedRows() - if not rows or len(rows) == 0: - return error_dialog(self, _('Cannot merge books'), - _('No books selected'), show=True) - if len(rows) < 2: - return error_dialog(self, _('Cannot merge books'), - _('At least two books must be selected for merging'), - show=True) - dest_id, src_books, src_ids = self.books_to_merge(rows) - if safe_merge: - if not confirm('

'+_( - 'All book formats and metadata from the selected books ' - 'will be added to the first selected book.

' - 'The second and subsequently selected books will not ' - 'be deleted or changed.

' - 'Please confirm you want to proceed.') - +'

', 'merge_books_safe', self): - return - self.add_formats(dest_id, src_books) - self.merge_metadata(dest_id, src_ids) - else: - if not confirm('

'+_( - 'All book formats and metadata from the selected books will be merged ' - 'into the first selected book.

' - 'After merger the second and ' - 'subsequently selected books will be deleted.

' - 'All book formats of the first selected book will be kept ' - 'and any duplicate formats in the second and subsequently selected books ' - 'will be permanently deleted from your computer.

' - 'Are you sure you want to proceed?') - +'

', 'merge_books', self): - return - if len(rows)>5: - if not confirm('

'+_('You are about to merge more than 5 books. ' - 'Are you sure you want to proceed?') - +'

', 'merge_too_many_books', self): - return - self.add_formats(dest_id, src_books) - self.merge_metadata(dest_id, src_ids) - self.delete_books_after_merge(src_ids) - # leave the selection highlight on first selected book - dest_row = rows[0].row() - for row in rows: - if row.row() < rows[0].row(): - dest_row -= 1 - ci = self.library_view.model().index(dest_row, 0) - if ci.isValid(): - self.library_view.setCurrentIndex(ci) - - def add_formats(self, dest_id, src_books, replace=False): - for src_book in src_books: - if src_book: - fmt = os.path.splitext(src_book)[-1].replace('.', '').upper() - with open(src_book, 'rb') as f: - self.library_view.model().db.add_format(dest_id, fmt, f, index_is_id=True, - notify=False, replace=replace) - - def books_to_merge(self, rows): - src_books = [] - src_ids = [] - m = self.library_view.model() - for i, row in enumerate(rows): - id_ = m.id(row) - if i == 0: - dest_id = id_ - else: - src_ids.append(id_) - dbfmts = m.db.formats(id_, index_is_id=True) - if dbfmts: - for fmt in dbfmts.split(','): - src_books.append(m.db.format_abspath(id_, fmt, - index_is_id=True)) - return [dest_id, src_books, src_ids] - - def delete_books_after_merge(self, ids_to_delete): - self.library_view.model().delete_books_by_id(ids_to_delete) - - def merge_metadata(self, dest_id, src_ids): - db = self.library_view.model().db - dest_mi = db.get_metadata(dest_id, index_is_id=True, get_cover=True) - orig_dest_comments = dest_mi.comments - for src_id in src_ids: - src_mi = db.get_metadata(src_id, index_is_id=True, get_cover=True) - if src_mi.comments and orig_dest_comments != src_mi.comments: - if not dest_mi.comments: - dest_mi.comments = src_mi.comments - else: - dest_mi.comments = unicode(dest_mi.comments) + u'\n\n' + unicode(src_mi.comments) - if src_mi.title and (not dest_mi.title or - dest_mi.title == _('Unknown')): - dest_mi.title = src_mi.title - if src_mi.title and (not dest_mi.authors or dest_mi.authors[0] == - _('Unknown')): - dest_mi.authors = src_mi.authors - dest_mi.author_sort = src_mi.author_sort - if src_mi.tags: - if not dest_mi.tags: - dest_mi.tags = src_mi.tags - else: - dest_mi.tags.extend(src_mi.tags) - if src_mi.cover and not dest_mi.cover: - dest_mi.cover = src_mi.cover - if not dest_mi.publisher: - dest_mi.publisher = src_mi.publisher - if not dest_mi.rating: - dest_mi.rating = src_mi.rating - if not dest_mi.series: - dest_mi.series = src_mi.series - dest_mi.series_index = src_mi.series_index - db.set_metadata(dest_id, dest_mi, ignore_errors=False) - - for key in db.field_metadata: #loop thru all defined fields - if db.field_metadata[key]['is_custom']: - colnum = db.field_metadata[key]['colnum'] - # Get orig_dest_comments before it gets changed - if db.field_metadata[key]['datatype'] == 'comments': - orig_dest_value = db.get_custom(dest_id, num=colnum, index_is_id=True) - for src_id in src_ids: - dest_value = db.get_custom(dest_id, num=colnum, index_is_id=True) - src_value = db.get_custom(src_id, num=colnum, index_is_id=True) - if db.field_metadata[key]['datatype'] == 'comments': - if src_value and src_value != orig_dest_value: - if not dest_value: - db.set_custom(dest_id, src_value, num=colnum) - else: - dest_value = unicode(dest_value) + u'\n\n' + unicode(src_value) - db.set_custom(dest_id, dest_value, num=colnum) - if db.field_metadata[key]['datatype'] in \ - ('bool', 'int', 'float', 'rating', 'datetime') \ - and not dest_value: - db.set_custom(dest_id, src_value, num=colnum) - if db.field_metadata[key]['datatype'] == 'series' \ - and not dest_value: - if src_value: - src_index = db.get_custom_extra(src_id, num=colnum, index_is_id=True) - db.set_custom(dest_id, src_value, num=colnum, extra=src_index) - if db.field_metadata[key]['datatype'] == 'text' \ - and not db.field_metadata[key]['is_multiple'] \ - and not dest_value: - db.set_custom(dest_id, src_value, num=colnum) - if db.field_metadata[key]['datatype'] == 'text' \ - and db.field_metadata[key]['is_multiple']: - if src_value: - if not dest_value: - dest_value = src_value - else: - dest_value.extend(src_value) - db.set_custom(dest_id, dest_value, num=colnum) - # }}} - - def edit_device_collections(self, view, oncard=None): - model = view.model() - result = model.get_collections_with_ids() - compare = (lambda x,y:cmp(x.lower(), y.lower())) - d = TagListEditor(self, tag_to_match=None, data=result, compare=compare) - d.exec_() - if d.result() == d.Accepted: - to_rename = d.to_rename # dict of new text to old ids - to_delete = d.to_delete # list of ids - for text in to_rename: - for old_id in to_rename[text]: - model.rename_collection(old_id, new_name=unicode(text)) - for item in to_delete: - model.delete_collection_using_id(item) - self.upload_collections(model.db, view=view, oncard=oncard) - view.reset() - - # }}} - -class SaveToDiskAction(object): # {{{ - - def save_single_format_to_disk(self, checked): - self.save_to_disk(checked, False, prefs['output_format']) - - def save_specific_format_disk(self, fmt): - self.save_to_disk(False, False, fmt) - - def save_to_single_dir(self, checked): - self.save_to_disk(checked, True) - - def save_single_fmt_to_single_dir(self, *args): - self.save_to_disk(False, single_dir=True, - single_format=prefs['output_format']) - - def save_to_disk(self, checked, single_dir=False, single_format=None): - rows = self.current_view().selectionModel().selectedRows() - if not rows or len(rows) == 0: - return error_dialog(self, _('Cannot save to disk'), - _('No books selected'), show=True) - path = choose_dir(self, 'save to disk dialog', - _('Choose destination directory')) - if not path: - return - dpath = os.path.abspath(path).replace('/', os.sep) - lpath = self.library_view.model().db.library_path.replace('/', os.sep) - if dpath.startswith(lpath): - return error_dialog(self, _('Not allowed'), - _('You are trying to save files into the calibre ' - 'library. This can cause corruption of your ' - 'library. Save to disk is meant to export ' - 'files from your calibre library elsewhere.'), show=True) - - if self.current_view() is self.library_view: - from calibre.gui2.add import Saver - from calibre.library.save_to_disk import config - opts = config().parse() - if single_format is not None: - opts.formats = single_format - # Special case for Kindle annotation files - if single_format.lower() in ['mbp','pdr','tan']: - opts.to_lowercase = False - opts.save_cover = False - opts.write_opf = False - opts.template = opts.send_template - if single_dir: - opts.template = opts.template.split('/')[-1].strip() - if not opts.template: - opts.template = '{title} - {authors}' - self._saver = Saver(self, self.library_view.model().db, - Dispatcher(self._books_saved), rows, path, opts, - spare_server=self.spare_server) - - else: - paths = self.current_view().model().paths(rows) - self.device_manager.save_books( - Dispatcher(self.books_saved), paths, path) - - - def _books_saved(self, path, failures, error): - self._saver = None - if error: - return error_dialog(self, _('Error while saving'), - _('There was an error while saving.'), - error, show=True) - if failures: - failures = [u'%s\n\t%s'% - (title, '\n\t'.join(err.splitlines())) for title, err in - failures] - - warning_dialog(self, _('Could not save some books'), - _('Could not save some books') + ', ' + - _('Click the show details button to see which ones.'), - u'\n\n'.join(failures), show=True) - open_local_file(path) - - def books_saved(self, job): - if job.failed: - return self.device_job_exception(job) - - # }}} - -class GenerateCatalogAction(object): # {{{ - - def generate_catalog(self): - rows = self.library_view.selectionModel().selectedRows() - if not rows or len(rows) < 2: - rows = xrange(self.library_view.model().rowCount(QModelIndex())) - ids = map(self.library_view.model().id, rows) - - dbspec = None - if not ids: - return error_dialog(self, _('No books selected'), - _('No books selected to generate catalog for'), - show=True) - - # Calling gui2.tools:generate_catalog() - ret = generate_catalog(self, dbspec, ids, self.device_manager.device) - if ret is None: - return - - func, args, desc, out, sync, title = ret - - fmt = os.path.splitext(out)[1][1:].upper() - job = self.job_manager.run_job( - Dispatcher(self.catalog_generated), func, args=args, - description=desc) - job.catalog_file_path = out - job.fmt = fmt - job.catalog_sync, job.catalog_title = sync, title - self.status_bar.show_message(_('Generating %s catalog...')%fmt) - - def catalog_generated(self, job): - if job.result: - # Search terms nulled catalog results - return error_dialog(self, _('No books found'), - _("No books to catalog\nCheck exclude tags"), - show=True) - if job.failed: - return self.job_exception(job) - id = self.library_view.model().add_catalog(job.catalog_file_path, job.catalog_title) - self.library_view.model().reset() - if job.catalog_sync: - sync = dynamic.get('catalogs_to_be_synced', set([])) - sync.add(id) - dynamic.set('catalogs_to_be_synced', sync) - self.status_bar.show_message(_('Catalog generated.'), 3000) - self.sync_catalogs() - if job.fmt not in ['EPUB','MOBI']: - export_dir = choose_dir(self, _('Export Catalog Directory'), - _('Select destination for %s.%s') % (job.catalog_title, job.fmt.lower())) - if export_dir: - destination = os.path.join(export_dir, '%s.%s' % (job.catalog_title, job.fmt.lower())) - shutil.copyfile(job.catalog_file_path, destination) - - # }}} - -class FetchNewsAction(object): # {{{ - - def download_scheduled_recipe(self, arg): - func, args, desc, fmt, temp_files = \ - fetch_scheduled_recipe(arg) - job = self.job_manager.run_job( - Dispatcher(self.scheduled_recipe_fetched), func, args=args, - description=desc) - self.conversion_jobs[job] = (temp_files, fmt, arg) - self.status_bar.show_message(_('Fetching news from ')+arg['title'], 2000) - - def scheduled_recipe_fetched(self, job): - temp_files, fmt, arg = self.conversion_jobs.pop(job) - pt = temp_files[0] - if job.failed: - self.scheduler.recipe_download_failed(arg) - return self.job_exception(job) - id = self.library_view.model().add_news(pt.name, arg) - self.library_view.model().reset() - sync = dynamic.get('news_to_be_synced', set([])) - sync.add(id) - dynamic.set('news_to_be_synced', sync) - self.scheduler.recipe_downloaded(arg) - self.status_bar.show_message(arg['title'] + _(' fetched.'), 3000) - self.email_news(id) - self.sync_news() - - # }}} - -class ConvertAction(object): # {{{ - - def auto_convert(self, book_ids, on_card, format): - previous = self.library_view.currentIndex() - rows = [x.row() for x in \ - self.library_view.selectionModel().selectedRows()] - jobs, changed, bad = convert_single_ebook(self, self.library_view.model().db, book_ids, True, format) - if jobs == []: return - self.queue_convert_jobs(jobs, changed, bad, rows, previous, - self.book_auto_converted, extra_job_args=[on_card]) - - def auto_convert_mail(self, to, fmts, delete_from_library, book_ids, format): - previous = self.library_view.currentIndex() - rows = [x.row() for x in \ - self.library_view.selectionModel().selectedRows()] - jobs, changed, bad = convert_single_ebook(self, self.library_view.model().db, book_ids, True, format) - if jobs == []: return - self.queue_convert_jobs(jobs, changed, bad, rows, previous, - self.book_auto_converted_mail, - extra_job_args=[delete_from_library, to, fmts]) - - def auto_convert_news(self, book_ids, format): - previous = self.library_view.currentIndex() - rows = [x.row() for x in \ - self.library_view.selectionModel().selectedRows()] - jobs, changed, bad = convert_single_ebook(self, self.library_view.model().db, book_ids, True, format) - if jobs == []: return - self.queue_convert_jobs(jobs, changed, bad, rows, previous, - self.book_auto_converted_news) - - def auto_convert_catalogs(self, book_ids, format): - previous = self.library_view.currentIndex() - rows = [x.row() for x in \ - self.library_view.selectionModel().selectedRows()] - jobs, changed, bad = convert_single_ebook(self, self.library_view.model().db, book_ids, True, format) - if jobs == []: return - self.queue_convert_jobs(jobs, changed, bad, rows, previous, - self.book_auto_converted_catalogs) - - def get_books_for_conversion(self): - rows = [r.row() for r in \ - self.library_view.selectionModel().selectedRows()] - if not rows or len(rows) == 0: - d = error_dialog(self, _('Cannot convert'), - _('No books selected')) - d.exec_() - return None - return [self.library_view.model().db.id(r) for r in rows] - - def convert_ebook(self, checked, bulk=None): - book_ids = self.get_books_for_conversion() - if book_ids is None: return - previous = self.library_view.currentIndex() - rows = [x.row() for x in \ - self.library_view.selectionModel().selectedRows()] - num = 0 - if bulk or (bulk is None and len(book_ids) > 1): - self.__bulk_queue = convert_bulk_ebook(self, self.queue_convert_jobs, - self.library_view.model().db, book_ids, - out_format=prefs['output_format'], args=(rows, previous, - self.book_converted)) - if self.__bulk_queue is None: - return - num = len(self.__bulk_queue.book_ids) - else: - jobs, changed, bad = convert_single_ebook(self, - self.library_view.model().db, book_ids, out_format=prefs['output_format']) - self.queue_convert_jobs(jobs, changed, bad, rows, previous, - self.book_converted) - num = len(jobs) - - if num > 0: - self.status_bar.show_message(_('Starting conversion of %d book(s)') % - num, 2000) - - def queue_convert_jobs(self, jobs, changed, bad, rows, previous, - converted_func, extra_job_args=[]): - for func, args, desc, fmt, id, temp_files in jobs: - if id not in bad: - job = self.job_manager.run_job(Dispatcher(converted_func), - func, args=args, description=desc) - args = [temp_files, fmt, id]+extra_job_args - self.conversion_jobs[job] = tuple(args) - - if changed: - self.library_view.model().refresh_rows(rows) - current = self.library_view.currentIndex() - self.library_view.model().current_changed(current, previous) - - def book_auto_converted(self, job): - temp_files, fmt, book_id, on_card = self.conversion_jobs[job] - self.book_converted(job) - self.sync_to_device(on_card, False, specific_format=fmt, send_ids=[book_id], do_auto_convert=False) - - def book_auto_converted_mail(self, job): - temp_files, fmt, book_id, delete_from_library, to, fmts = self.conversion_jobs[job] - self.book_converted(job) - self.send_by_mail(to, fmts, delete_from_library, specific_format=fmt, send_ids=[book_id], do_auto_convert=False) - - def book_auto_converted_news(self, job): - temp_files, fmt, book_id = self.conversion_jobs[job] - self.book_converted(job) - self.sync_news(send_ids=[book_id], do_auto_convert=False) - - def book_auto_converted_catalogs(self, job): - temp_files, fmt, book_id = self.conversion_jobs[job] - self.book_converted(job) - self.sync_catalogs(send_ids=[book_id], do_auto_convert=False) - - def book_converted(self, job): - temp_files, fmt, book_id = self.conversion_jobs.pop(job)[:3] - try: - if job.failed: - self.job_exception(job) - return - data = open(temp_files[-1].name, 'rb') - self.library_view.model().db.add_format(book_id, \ - fmt, data, index_is_id=True) - data.close() - self.status_bar.show_message(job.description + \ - (' completed'), 2000) - finally: - for f in temp_files: - try: - if os.path.exists(f.name): - os.remove(f.name) - except: - pass - self.tags_view.recount() - if self.current_view() is self.library_view: - current = self.library_view.currentIndex() - self.library_view.model().current_changed(current, QModelIndex()) - - # }}} - -class ViewAction(object): # {{{ - - def view_format(self, row, format): - fmt_path = self.library_view.model().db.format_abspath(row, format) - if fmt_path: - self._view_file(fmt_path) - - def view_format_by_id(self, id_, format): - fmt_path = self.library_view.model().db.format_abspath(id_, format, - index_is_id=True) - if fmt_path: - self._view_file(fmt_path) - - def metadata_view_format(self, fmt): - fmt_path = self.library_view.model().db.\ - format_abspath(self._metadata_view_id, - fmt, index_is_id=True) - if fmt_path: - self._view_file(fmt_path) - - - def book_downloaded_for_viewing(self, job): - if job.failed: - self.device_job_exception(job) - return - self._view_file(job.result) - - def _launch_viewer(self, name=None, viewer='ebook-viewer', internal=True): - self.setCursor(Qt.BusyCursor) - try: - if internal: - args = [viewer] - if isosx and 'ebook' in viewer: - args.append('--raise-window') - if name is not None: - args.append(name) - self.job_manager.launch_gui_app(viewer, - kwargs=dict(args=args)) - else: - open_local_file(name) - time.sleep(2) # User feedback - finally: - self.unsetCursor() - - def _view_file(self, name): - ext = os.path.splitext(name)[1].upper().replace('.', '') - viewer = 'lrfviewer' if ext == 'LRF' else 'ebook-viewer' - internal = ext in config['internally_viewed_formats'] - self._launch_viewer(name, viewer, internal) - - def view_specific_format(self, triggered): - rows = self.library_view.selectionModel().selectedRows() - if not rows or len(rows) == 0: - d = error_dialog(self, _('Cannot view'), _('No book selected')) - d.exec_() - return - - row = rows[0].row() - formats = self.library_view.model().db.formats(row).upper().split(',') - d = ChooseFormatDialog(self, _('Choose the format to view'), formats) - if d.exec_() == QDialog.Accepted: - format = d.format() - self.view_format(row, format) - - def _view_check(self, num, max_=3): - if num <= max_: - return True - return question_dialog(self, _('Multiple Books Selected'), - _('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 started the process ' - 'cannot be stopped until complete. Do you wish to continue?' - ) % num) - - def view_folder(self, *args): - rows = self.current_view().selectionModel().selectedRows() - if not rows or len(rows) == 0: - d = error_dialog(self, _('Cannot open folder'), - _('No book selected')) - d.exec_() - return - if not self._view_check(len(rows)): - return - for row in rows: - path = self.library_view.model().db.abspath(row.row()) - open_local_file(path) - - def view_folder_for_id(self, id_): - path = self.library_view.model().db.abspath(id_, index_is_id=True) - open_local_file(path) - - def view_book(self, triggered): - rows = self.current_view().selectionModel().selectedRows() - self._view_books(rows) - - def view_specific_book(self, index): - self._view_books([index]) - - def _view_books(self, rows): - if not rows or len(rows) == 0: - self._launch_viewer() - return - - if not self._view_check(len(rows)): - return - - if self.current_view() is self.library_view: - for row in rows: - if hasattr(row, 'row'): - row = row.row() - - formats = self.library_view.model().db.formats(row) - title = self.library_view.model().db.title(row) - if not formats: - error_dialog(self, _('Cannot view'), - _('%s has no available formats.')%(title,), show=True) - continue - - formats = formats.upper().split(',') - - - in_prefs = False - for format in prefs['input_format_order']: - if format in formats: - in_prefs = True - self.view_format(row, format) - break - if not in_prefs: - self.view_format(row, formats[0]) - else: - paths = self.current_view().model().paths(rows) - for path in paths: - pt = PersistentTemporaryFile('_viewer_'+\ - os.path.splitext(path)[1]) - self.persistent_files.append(pt) - pt.close() - self.device_manager.view_book(\ - Dispatcher(self.book_downloaded_for_viewing), - path, pt.name) - - # }}} - + pass + + def initialization_complete(self): + ''' + Called once per action when the initialization of the main GUI is + completed. + ''' + pass + + def shutting_down(self): + ''' + Called once per plugin when the main GUI is in the process of shutting + down. Release any used resources, but try not to block the shutdown for + long periods of time. + + :return: False to halt the shutdown. You are responsible for telling + the user why the shutdown was halted. + ''' + return True diff --git a/src/calibre/gui2/actions/add.py b/src/calibre/gui2/actions/add.py new file mode 100644 index 0000000000..deb03021c5 --- /dev/null +++ b/src/calibre/gui2/actions/add.py @@ -0,0 +1,266 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai + +__license__ = 'GPL v3' +__copyright__ = '2010, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +import os +from functools import partial + +from PyQt4.Qt import QInputDialog, QPixmap, QMenu + + +from calibre.gui2 import error_dialog, choose_files, \ + choose_dir, warning_dialog, info_dialog +from calibre.gui2.widgets import IMAGE_EXTENSIONS +from calibre.ebooks import BOOK_EXTENSIONS +from calibre.utils.filenames import ascii_filename +from calibre.constants import preferred_encoding, filesystem_encoding +from calibre.gui2.actions import InterfaceAction + +class AddAction(InterfaceAction): + + name = 'Add Books' + action_spec = (_('Add books'), 'add_book.svg', None, _('A')) + + def genesis(self): + self._add_filesystem_book = self.Dispatcher(self.__add_filesystem_book) + self.add_menu = QMenu() + self.add_menu.addAction(_('Add books from a single directory'), + self.add_books) + self.add_menu.addAction(_('Add books from directories, including ' + 'sub-directories (One book per directory, assumes every ebook ' + 'file is the same book in a different format)'), + self.add_recursive_single) + self.add_menu.addAction(_('Add books from directories, including ' + 'sub directories (Multiple books per directory, assumes every ' + 'ebook file is a different book)'), self.add_recursive_multiple) + self.add_menu.addSeparator() + self.add_menu.addAction(_('Add Empty book. (Book entry with no ' + 'formats)'), self.add_empty) + self.add_menu.addAction(_('Add from ISBN'), self.add_from_isbn) + self.qaction.setMenu(self.add_menu) + self.qaction.triggered.connect(self.add_books) + + def location_selected(self, loc): + enabled = loc == 'library' + for action in list(self.add_menu.actions())[1:]: + action.setEnabled(enabled) + + def add_recursive(self, single): + root = choose_dir(self.gui, 'recursive book import root dir dialog', + 'Select root folder') + if not root: + return + from calibre.gui2.add import Adder + self._adder = Adder(self.gui, + self.gui.library_view.model().db, + self.Dispatcher(self._files_added), spare_server=self.gui.spare_server) + self._adder.add_recursive(root, single) + + def add_recursive_single(self, *args): + ''' + Add books from the local filesystem to either the library or the device + recursively assuming one book per folder. + ''' + self.add_recursive(True) + + def add_recursive_multiple(self, *args): + ''' + Add books from the local filesystem to either the library or the device + recursively assuming multiple books per folder. + ''' + self.add_recursive(False) + + def add_empty(self, *args): + ''' + Add an empty book item to the library. This does not import any formats + from a book file. + ''' + num, ok = QInputDialog.getInt(self.gui, _('How many empty books?'), + _('How many empty books should be added?'), 1, 1, 100) + if ok: + from calibre.ebooks.metadata import MetaInformation + for x in xrange(num): + self.gui.library_view.model().db.import_book(MetaInformation(None), []) + self.gui.library_view.model().books_added(num) + + def add_isbns(self, isbns): + from calibre.ebooks.metadata import MetaInformation + ids = set([]) + for x in isbns: + mi = MetaInformation(None) + mi.isbn = x + ids.add(self.gui.library_view.model().db.import_book(mi, [])) + self.gui.library_view.model().books_added(len(isbns)) + self.gui.iactions['Edit Metadata'].do_download_metadata(ids) + + + def files_dropped(self, paths): + to_device = self.gui.stack.currentIndex() != 0 + self._add_books(paths, to_device) + + def files_dropped_on_book(self, event, paths): + accept = False + if self.gui.current_view() is not self.gui.library_view: + return + db = self.gui.library_view.model().db + current_idx = self.gui.library_view.currentIndex() + if not current_idx.isValid(): return + cid = db.id(current_idx.row()) + for path in paths: + ext = os.path.splitext(path)[1].lower() + if ext: + ext = ext[1:] + if ext in IMAGE_EXTENSIONS: + pmap = QPixmap() + pmap.load(path) + if not pmap.isNull(): + accept = True + db.set_cover(cid, pmap) + elif ext in BOOK_EXTENSIONS: + db.add_format_with_hooks(cid, ext, path, index_is_id=True) + accept = True + if accept: + event.accept() + self.gui.library_view.model().current_changed(current_idx, current_idx) + + def __add_filesystem_book(self, paths, allow_device=True): + if isinstance(paths, basestring): + paths = [paths] + books = [path for path in map(os.path.abspath, paths) if os.access(path, + os.R_OK)] + + if books: + to_device = allow_device and self.gui.stack.currentIndex() != 0 + self._add_books(books, to_device) + if to_device: + self.gui.status_bar.show_message(\ + _('Uploading books to device.'), 2000) + + + def add_filesystem_book(self, paths, allow_device=True): + self._add_filesystem_book(paths, allow_device=allow_device) + + def add_from_isbn(self, *args): + from calibre.gui2.dialogs.add_from_isbn import AddFromISBN + d = AddFromISBN(self.gui) + if d.exec_() == d.Accepted: + self.add_isbns(d.isbns) + + def add_books(self, *args): + ''' + Add books from the local filesystem to either the library or the device. + ''' + filters = [ + (_('Books'), BOOK_EXTENSIONS), + (_('EPUB Books'), ['epub']), + (_('LRF Books'), ['lrf']), + (_('HTML Books'), ['htm', 'html', 'xhtm', 'xhtml']), + (_('LIT Books'), ['lit']), + (_('MOBI Books'), ['mobi', 'prc', 'azw']), + (_('Topaz books'), ['tpz','azw1']), + (_('Text books'), ['txt', 'rtf']), + (_('PDF Books'), ['pdf']), + (_('Comics'), ['cbz', 'cbr', 'cbc']), + (_('Archives'), ['zip', 'rar']), + ] + to_device = self.gui.stack.currentIndex() != 0 + if to_device: + filters = [(_('Supported books'), self.gui.device_manager.device.FORMATS)] + + books = choose_files(self.gui, 'add books dialog dir', 'Select books', + filters=filters) + if not books: + return + self._add_books(books, to_device) + + def _add_books(self, paths, to_device, on_card=None): + if on_card is None: + on_card = 'carda' if self.gui.stack.currentIndex() == 2 else \ + 'cardb' if self.gui.stack.currentIndex() == 3 else None + if not paths: + return + from calibre.gui2.add import Adder + self.__adder_func = partial(self._files_added, on_card=on_card) + self._adder = Adder(self.gui, + None if to_device else self.gui.library_view.model().db, + self.Dispatcher(self.__adder_func), spare_server=self.gui.spare_server) + self._adder.add(paths) + + def _files_added(self, paths=[], names=[], infos=[], on_card=None): + if paths: + self.gui.upload_books(paths, + list(map(ascii_filename, names)), + infos, on_card=on_card) + self.gui.status_bar.show_message( + _('Uploading books to device.'), 2000) + if getattr(self._adder, 'number_of_books_added', 0) > 0: + self.gui.library_view.model().books_added(self._adder.number_of_books_added) + if hasattr(self.gui, 'db_images'): + self.gui.db_images.reset() + if getattr(self._adder, 'merged_books', False): + books = u'\n'.join([x if isinstance(x, unicode) else + x.decode(preferred_encoding, 'replace') for x in + self._adder.merged_books]) + info_dialog(self.gui, _('Merged some books'), + _('Some duplicates were found and merged into the ' + 'following existing books:'), det_msg=books, show=True) + if getattr(self._adder, 'critical', None): + det_msg = [] + for name, log in self._adder.critical.items(): + if isinstance(name, str): + name = name.decode(filesystem_encoding, 'replace') + det_msg.append(name+'\n'+log) + + warning_dialog(self.gui, _('Failed to read metadata'), + _('Failed to read metadata from the following')+':', + det_msg='\n\n'.join(det_msg), show=True) + + if hasattr(self._adder, 'cleanup'): + self._adder.cleanup() + self._adder = None + + def _add_from_device_adder(self, paths=[], names=[], infos=[], + on_card=None, model=None): + self._files_added(paths, names, infos, on_card=on_card) + # set the in-library flags, and as a consequence send the library's + # metadata for this book to the device. This sets the uuid to the + # correct value. + self.gui.set_books_in_library(booklists=[model.db], reset=True) + model.reset() + + def add_books_from_device(self, view): + rows = view.selectionModel().selectedRows() + if not rows or len(rows) == 0: + d = error_dialog(self.gui, _('Add to library'), _('No book selected')) + d.exec_() + return + paths = [p for p in view._model.paths(rows) if p is not None] + ve = self.gui.device_manager.device.VIRTUAL_BOOK_EXTENSIONS + def ext(x): + ans = os.path.splitext(x)[1] + ans = ans[1:] if len(ans) > 1 else ans + return ans.lower() + remove = set([p for p in paths if ext(p) in ve]) + if remove: + paths = [p for p in paths if p not in remove] + info_dialog(self.gui, _('Not Implemented'), + _('The following books are virtual and cannot be added' + ' to the calibre library:'), '\n'.join(remove), + show=True) + if not paths: + return + if not paths or len(paths) == 0: + d = error_dialog(self.gui, _('Add to library'), _('No book files found')) + d.exec_() + return + from calibre.gui2.add import Adder + self.__adder_func = partial(self._add_from_device_adder, on_card=None, + model=view._model) + self._adder = Adder(self.gui, self.gui.library_view.model().db, + self.Dispatcher(self.__adder_func), spare_server=self.gui.spare_server) + self._adder.add(paths) + + diff --git a/src/calibre/gui2/actions/add_to_library.py b/src/calibre/gui2/actions/add_to_library.py new file mode 100644 index 0000000000..b2d1091dbb --- /dev/null +++ b/src/calibre/gui2/actions/add_to_library.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai + +__license__ = 'GPL v3' +__copyright__ = '2010, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +from calibre.gui2.actions import InterfaceAction + +class AddToLibraryAction(InterfaceAction): + + name = 'Add To Library' + action_spec = (_('Add books to library'), 'add_book.svg', None, None) + + def location_selected(self, loc): + enabled = loc != 'library' + self.qaction.setEnabled(enabled) + self.qaction.triggered.connect(self.add_books_to_library) + + def add_books_to_library(self, *args): + self.gui.iactions['Add Books'].add_books_from_device( + self.gui.current_view()) diff --git a/src/calibre/gui2/actions/annotate.py b/src/calibre/gui2/actions/annotate.py new file mode 100644 index 0000000000..5356d63e98 --- /dev/null +++ b/src/calibre/gui2/actions/annotate.py @@ -0,0 +1,244 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai + +__license__ = 'GPL v3' +__copyright__ = '2010, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +import os, datetime + +from PyQt4.Qt import pyqtSignal, QModelIndex, QThread, Qt + +from calibre.gui2 import error_dialog, gprefs +from calibre.ebooks.BeautifulSoup import BeautifulSoup, Tag, NavigableString +from calibre import strftime +from calibre.gui2.actions import InterfaceAction + +class FetchAnnotationsAction(InterfaceAction): + + name = 'Fetch Annotations' + action_spec = (_('Fetch annotations (experimental)'), None, None, None) + + def genesis(self): + pass + + def fetch_annotations(self, *args): + # Generate a path_map from selected ids + def get_ids_from_selected_rows(): + rows = self.gui.library_view.selectionModel().selectedRows() + if not rows or len(rows) < 2: + rows = xrange(self.gui.library_view.model().rowCount(QModelIndex())) + ids = map(self.gui.library_view.model().id, rows) + return ids + + def get_formats(id): + formats = db.formats(id, index_is_id=True) + fmts = [] + if formats: + for format in formats.split(','): + fmts.append(format.lower()) + return fmts + + def generate_annotation_paths(ids, db, device): + # Generate path templates + # Individual storage mount points scanned/resolved in driver.get_annotations() + path_map = {} + for id in ids: + mi = db.get_metadata(id, index_is_id=True) + a_path = device.create_upload_path(os.path.abspath('/'), mi, 'x.bookmark', create_dirs=False) + path_map[id] = dict(path=a_path, fmts=get_formats(id)) + return path_map + + device = self.gui.device_manager.device + + if self.gui.current_view() is not self.gui.library_view: + return error_dialog(self.gui, _('Use library only'), + _('User annotations generated from main library only'), + show=True) + db = self.gui.library_view.model().db + + # Get the list of ids + ids = get_ids_from_selected_rows() + if not ids: + return error_dialog(self.gui, _('No books selected'), + _('No books selected to fetch annotations from'), + show=True) + + # Map ids to paths + path_map = generate_annotation_paths(ids, db, device) + + # Dispatch to devices.kindle.driver.get_annotations() + self.gui.device_manager.annotations(self.Dispatcher(self.annotations_fetched), + path_map) + + def annotations_fetched(self, job): + from calibre.devices.usbms.device import Device + from calibre.ebooks.metadata import MetaInformation + from calibre.gui2.dialogs.progress import ProgressDialog + from calibre.library.cli import do_add_format + + class Updater(QThread): # {{{ + + update_progress = pyqtSignal(int) + update_done = pyqtSignal() + FINISHED_READING_PCT_THRESHOLD = 96 + + def __init__(self, parent, db, annotation_map, done_callback): + QThread.__init__(self, parent) + self.db = db + self.pd = ProgressDialog(_('Merging user annotations into database'), '', + 0, len(job.result), parent=parent) + + self.am = annotation_map + self.done_callback = done_callback + self.pd.canceled_signal.connect(self.canceled) + self.pd.setModal(True) + self.pd.show() + self.update_progress.connect(self.pd.set_value, + type=Qt.QueuedConnection) + self.update_done.connect(self.pd.hide, type=Qt.QueuedConnection) + + def generate_annotation_html(self, bookmark): + # Returns
...
+ last_read_location = bookmark.last_read_location + timestamp = datetime.datetime.utcfromtimestamp(bookmark.timestamp) + percent_read = bookmark.percent_read + + ka_soup = BeautifulSoup() + dtc = 0 + divTag = Tag(ka_soup,'div') + divTag['class'] = 'user_annotations' + + # Add the last-read location + spanTag = Tag(ka_soup, 'span') + spanTag['style'] = 'font-weight:bold' + if bookmark.book_format == 'pdf': + spanTag.insert(0,NavigableString( + _("%s
Last Page Read: %d (%d%%)") % \ + (strftime(u'%x', timestamp.timetuple()), + last_read_location, + percent_read))) + else: + spanTag.insert(0,NavigableString( + _("%s
Last Page Read: Location %d (%d%%)") % \ + (strftime(u'%x', timestamp.timetuple()), + last_read_location, + percent_read))) + + divTag.insert(dtc, spanTag) + dtc += 1 + divTag.insert(dtc, Tag(ka_soup,'br')) + dtc += 1 + + if bookmark.user_notes: + user_notes = bookmark.user_notes + annotations = [] + + # Add the annotations sorted by location + # Italicize highlighted text + for location in sorted(user_notes): + if user_notes[location]['text']: + annotations.append( + _('Location %d • %s
%s
') % \ + (user_notes[location]['displayed_location'], + user_notes[location]['type'], + user_notes[location]['text'] if \ + user_notes[location]['type'] == 'Note' else \ + '%s' % user_notes[location]['text'])) + else: + if bookmark.book_format == 'pdf': + annotations.append( + _('Page %d • %s
') % \ + (user_notes[location]['displayed_location'], + user_notes[location]['type'])) + else: + annotations.append( + _('Location %d • %s
') % \ + (user_notes[location]['displayed_location'], + user_notes[location]['type'])) + + for annotation in annotations: + divTag.insert(dtc, annotation) + dtc += 1 + + ka_soup.insert(0,divTag) + return ka_soup + + def mark_book_as_read(self,id): + read_tag = gprefs.get('catalog_epub_mobi_read_tag') + if read_tag: + self.db.set_tags(id, [read_tag], append=True) + + def canceled(self): + self.pd.hide() + + def run(self): + ignore_tags = set(['Catalog','Clippings']) + for (i, id) in enumerate(self.am): + bm = Device.UserAnnotation(self.am[id][0],self.am[id][1]) + if bm.type == 'kindle_bookmark': + mi = self.db.get_metadata(id, index_is_id=True) + user_notes_soup = self.generate_annotation_html(bm.value) + if mi.comments: + a_offset = mi.comments.find('
') + ad_offset = mi.comments.find('
') + + if a_offset >= 0: + mi.comments = mi.comments[:a_offset] + if ad_offset >= 0: + mi.comments = mi.comments[:ad_offset] + if set(mi.tags).intersection(ignore_tags): + continue + if mi.comments: + hrTag = Tag(user_notes_soup,'hr') + hrTag['class'] = 'annotations_divider' + user_notes_soup.insert(0,hrTag) + + mi.comments += user_notes_soup.prettify() + else: + mi.comments = unicode(user_notes_soup.prettify()) + # Update library comments + self.db.set_comment(id, mi.comments) + + # Update 'read' tag except for Catalogs/Clippings + if bm.value.percent_read >= self.FINISHED_READING_PCT_THRESHOLD: + if not set(mi.tags).intersection(ignore_tags): + self.mark_book_as_read(id) + + # Add bookmark file to id + self.db.add_format_with_hooks(id, bm.value.bookmark_extension, + bm.value.path, index_is_id=True) + self.update_progress.emit(i) + elif bm.type == 'kindle_clippings': + # Find 'My Clippings' author=Kindle in database, or add + last_update = 'Last modified %s' % strftime(u'%x %X',bm.value['timestamp'].timetuple()) + mc_id = list(db.data.parse('title:"My Clippings"')) + if mc_id: + do_add_format(self.db, mc_id[0], 'TXT', bm.value['path']) + mi = self.db.get_metadata(mc_id[0], index_is_id=True) + mi.comments = last_update + self.db.set_metadata(mc_id[0], mi) + else: + mi = MetaInformation('My Clippings', authors = ['Kindle']) + mi.tags = ['Clippings'] + mi.comments = last_update + self.db.add_books([bm.value['path']], ['txt'], [mi]) + + self.update_done.emit() + self.done_callback(self.am.keys()) + + # }}} + + if not job.result: return + + if self.gui.current_view() is not self.gui.library_view: + return error_dialog(self.gui, _('Use library only'), + _('User annotations generated from main library only'), + show=True) + db = self.gui.library_view.model().db + + self.__annotation_updater = Updater(self.gui, db, job.result, + self.Dispatcher(self.gui.library_view.model().refresh_ids)) + self.__annotation_updater.start() + + diff --git a/src/calibre/gui2/actions/catalog.py b/src/calibre/gui2/actions/catalog.py new file mode 100644 index 0000000000..6807d7717e --- /dev/null +++ b/src/calibre/gui2/actions/catalog.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai + +__license__ = 'GPL v3' +__copyright__ = '2010, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +import os, shutil + +from PyQt4.Qt import QModelIndex + +from calibre.gui2 import error_dialog, choose_dir +from calibre.gui2.tools import generate_catalog +from calibre.utils.config import dynamic +from calibre.gui2.actions import InterfaceAction + +class GenerateCatalogAction(InterfaceAction): + + name = 'Generate Catalog' + action_spec = (_('Create catalog of books in your calibre library'), None, None, None) + + def generate_catalog(self): + rows = self.gui.library_view.selectionModel().selectedRows() + if not rows or len(rows) < 2: + rows = xrange(self.gui.library_view.model().rowCount(QModelIndex())) + ids = map(self.gui.library_view.model().id, rows) + + dbspec = None + if not ids: + return error_dialog(self.gui, _('No books selected'), + _('No books selected to generate catalog for'), + show=True) + + # Calling gui2.tools:generate_catalog() + ret = generate_catalog(self.gui, dbspec, ids, self.gui.device_manager.device) + if ret is None: + return + + func, args, desc, out, sync, title = ret + + fmt = os.path.splitext(out)[1][1:].upper() + job = self.gui.job_manager.run_job( + self.Dispatcher(self.catalog_generated), func, args=args, + description=desc) + job.catalog_file_path = out + job.fmt = fmt + job.catalog_sync, job.catalog_title = sync, title + self.gui.status_bar.show_message(_('Generating %s catalog...')%fmt) + + def catalog_generated(self, job): + if job.result: + # Search terms nulled catalog results + return error_dialog(self.gui, _('No books found'), + _("No books to catalog\nCheck exclude tags"), + show=True) + if job.failed: + return self.gui.job_exception(job) + id = self.gui.library_view.model().add_catalog(job.catalog_file_path, job.catalog_title) + self.gui.library_view.model().reset() + if job.catalog_sync: + sync = dynamic.get('catalogs_to_be_synced', set([])) + sync.add(id) + dynamic.set('catalogs_to_be_synced', sync) + self.gui.status_bar.show_message(_('Catalog generated.'), 3000) + self.gui.sync_catalogs() + if job.fmt not in ['EPUB','MOBI']: + export_dir = choose_dir(self.gui, _('Export Catalog Directory'), + _('Select destination for %s.%s') % (job.catalog_title, job.fmt.lower())) + if export_dir: + destination = os.path.join(export_dir, '%s.%s' % (job.catalog_title, job.fmt.lower())) + shutil.copyfile(job.catalog_file_path, destination) + + diff --git a/src/calibre/gui2/actions/choose_library.py b/src/calibre/gui2/actions/choose_library.py new file mode 100644 index 0000000000..7bdbcf748a --- /dev/null +++ b/src/calibre/gui2/actions/choose_library.py @@ -0,0 +1,172 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai + +__license__ = 'GPL v3' +__copyright__ = '2010, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +import os +from functools import partial + +from PyQt4.Qt import QMenu + +from calibre import isbytestring +from calibre.constants import filesystem_encoding +from calibre.utils.config import prefs +from calibre.gui2 import gprefs, warning_dialog +from calibre.gui2.actions import InterfaceAction + +class LibraryUsageStats(object): + + def __init__(self): + self.stats = {} + self.read_stats() + + def read_stats(self): + stats = gprefs.get('library_usage_stats', {}) + self.stats = stats + + def write_stats(self): + locs = list(self.stats.keys()) + locs.sort(cmp=lambda x, y: cmp(self.stats[x], self.stats[y]), + reverse=True) + for key in locs[15:]: + self.stats.pop(key) + gprefs.set('library_usage_stats', self.stats) + + def remove(self, location): + self.stats.pop(location, None) + self.write_stats() + + def canonicalize_path(self, lpath): + if isbytestring(lpath): + lpath = lpath.decode(filesystem_encoding) + lpath = lpath.replace(os.sep, '/') + return lpath + + def library_used(self, db): + lpath = self.canonicalize_path(db.library_path) + if lpath not in self.stats: + self.stats[lpath] = 0 + self.stats[lpath] += 1 + self.write_stats() + + def locations(self, db): + lpath = self.canonicalize_path(db.library_path) + locs = list(self.stats.keys()) + if lpath in locs: + locs.remove(lpath) + locs.sort(cmp=lambda x, y: cmp(self.stats[x], self.stats[y]), + reverse=True) + for loc in locs: + yield self.pretty(loc), loc + + def pretty(self, loc): + if loc.endswith('/'): + loc = loc[:-1] + return loc.split('/')[-1] + + +class ChooseLibraryAction(InterfaceAction): + + name = 'Choose Library' + action_spec = (_('%d books'), 'lt.png', + _('Choose calibre library to work with'), None) + + def genesis(self): + self.count_changed(0) + self.qaction.triggered.connect(self.choose_library) + + self.stats = LibraryUsageStats() + self.create_action(spec=(_('Switch to library...'), 'lt.png', None, + None), attr='action_choose') + self.action_choose.triggered.connect(self.choose_library) + self.choose_menu = QMenu(self.gui) + self.choose_menu.addAction(self.action_choose) + self.qaction.setMenu(self.choose_menu) + + self.quick_menu = QMenu(_('Quick switch')) + self.quick_menu_action = self.choose_menu.addMenu(self.quick_menu) + self.qs_separator = self.choose_menu.addSeparator() + self.switch_actions = [] + for i in range(5): + ac = self.create_action(spec=('', None, None, None), + attr='switch_action%d'%i) + self.switch_actions.append(ac) + ac.setVisible(False) + ac.triggered.connect(partial(self.qs_requested, i)) + self.choose_menu.addAction(ac) + + def library_name(self): + db = self.gui.library_view.model().db + path = db.library_path + if isbytestring(path): + path = path.decode(filesystem_encoding) + path = path.replace(os.sep, '/') + return self.stats.pretty(path) + + def library_changed(self, db): + self.stats.library_used(db) + self.build_menus() + + def initialization_complete(self): + self.library_changed(self.gui.library_view.model().db) + + def build_menus(self): + db = self.gui.library_view.model().db + locations = list(self.stats.locations(db)) + for ac in self.switch_actions: + ac.setVisible(False) + self.quick_menu.clear() + self.qs_locations = [i[1] for i in locations] + for name, loc in locations: + self.quick_menu.addAction(name, partial(self.switch_requested, + loc)) + + for i, x in enumerate(locations[:len(self.switch_actions)]): + name, loc = x + ac = self.switch_actions[i] + ac.setText(name) + ac.setVisible(True) + + self.quick_menu_action.setVisible(bool(locations)) + + + def location_selected(self, loc): + enabled = loc == 'library' + self.qaction.setEnabled(enabled) + + def switch_requested(self, location): + loc = location.replace('/', os.sep) + exists = self.gui.library_view.model().db.exists_at(loc) + if not exists: + warning_dialog(self.gui, _('No library found'), + _('No existing calibre library was found at %s.' + ' It will be removed from the list of known' + ' libraries.')%loc, show=True) + self.stats.remove(location) + self.build_menus() + return + + prefs['library_path'] = loc + self.gui.library_moved(loc) + + def qs_requested(self, idx, *args): + self.switch_requested(self.qs_locations[idx]) + + def count_changed(self, new_count): + text = self.action_spec[0]%new_count + a = self.qaction + a.setText(text) + tooltip = self.action_spec[2] + '\n\n' + text + a.setToolTip(tooltip) + a.setStatusTip(tooltip) + a.setWhatsThis(tooltip) + + def choose_library(self, *args): + from calibre.gui2.dialogs.choose_library import ChooseLibrary + db = self.gui.library_view.model().db + c = ChooseLibrary(db, self.gui.library_moved, self.gui) + c.exec_() + + diff --git a/src/calibre/gui2/actions/convert.py b/src/calibre/gui2/actions/convert.py new file mode 100644 index 0000000000..ef8a8688c5 --- /dev/null +++ b/src/calibre/gui2/actions/convert.py @@ -0,0 +1,183 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai + +__license__ = 'GPL v3' +__copyright__ = '2010, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +import os +from functools import partial + +from PyQt4.Qt import QModelIndex, QMenu + +from calibre.gui2 import error_dialog, Dispatcher +from calibre.gui2.tools import convert_single_ebook, convert_bulk_ebook +from calibre.utils.config import prefs +from calibre.gui2.actions import InterfaceAction +from calibre.customize.ui import plugin_for_input_format + +class ConvertAction(InterfaceAction): + + name = 'Convert Books' + action_spec = (_('Convert books'), 'convert.svg', None, _('C')) + + def genesis(self): + cm = QMenu() + cm.addAction(_('Convert individually'), partial(self.convert_ebook, + False, bulk=False)) + cm.addAction(_('Bulk convert'), + partial(self.convert_ebook, False, bulk=True)) + cm.addSeparator() + ac = cm.addAction( + _('Create catalog of books in your calibre library')) + ac.triggered.connect(self.gui.iactions['Generate Catalog'].generate_catalog) + self.qaction.setMenu(cm) + self.qaction.triggered.connect(self.convert_ebook) + self.convert_menu = cm + self.conversion_jobs = {} + + def location_selected(self, loc): + enabled = loc == 'library' + self.qaction.setEnabled(enabled) + + def auto_convert(self, book_ids, on_card, format): + previous = self.gui.library_view.currentIndex() + rows = [x.row() for x in \ + self.gui.library_view.selectionModel().selectedRows()] + jobs, changed, bad = convert_single_ebook(self.gui, self.gui.library_view.model().db, book_ids, True, format) + if jobs == []: return + self.queue_convert_jobs(jobs, changed, bad, rows, previous, + self.book_auto_converted, extra_job_args=[on_card]) + + def auto_convert_mail(self, to, fmts, delete_from_library, book_ids, format): + previous = self.gui.library_view.currentIndex() + rows = [x.row() for x in \ + self.gui.library_view.selectionModel().selectedRows()] + jobs, changed, bad = convert_single_ebook(self.gui, self.gui.library_view.model().db, book_ids, True, format) + if jobs == []: return + self.queue_convert_jobs(jobs, changed, bad, rows, previous, + self.book_auto_converted_mail, + extra_job_args=[delete_from_library, to, fmts]) + + def auto_convert_news(self, book_ids, format): + previous = self.gui.library_view.currentIndex() + rows = [x.row() for x in \ + self.gui.library_view.selectionModel().selectedRows()] + jobs, changed, bad = convert_single_ebook(self.gui, self.gui.library_view.model().db, book_ids, True, format) + if jobs == []: return + self.queue_convert_jobs(jobs, changed, bad, rows, previous, + self.book_auto_converted_news) + + def auto_convert_catalogs(self, book_ids, format): + previous = self.gui.library_view.currentIndex() + rows = [x.row() for x in \ + self.gui.library_view.selectionModel().selectedRows()] + jobs, changed, bad = convert_single_ebook(self.gui, self.gui.library_view.model().db, book_ids, True, format) + if jobs == []: return + self.queue_convert_jobs(jobs, changed, bad, rows, previous, + self.book_auto_converted_catalogs) + + def get_books_for_conversion(self): + rows = [r.row() for r in \ + self.gui.library_view.selectionModel().selectedRows()] + if not rows or len(rows) == 0: + d = error_dialog(self.gui, _('Cannot convert'), + _('No books selected')) + d.exec_() + return None + return [self.gui.library_view.model().db.id(r) for r in rows] + + def convert_ebook(self, checked, bulk=None): + book_ids = self.get_books_for_conversion() + if book_ids is None: return + previous = self.gui.library_view.currentIndex() + rows = [x.row() for x in \ + self.gui.library_view.selectionModel().selectedRows()] + num = 0 + if bulk or (bulk is None and len(book_ids) > 1): + self.__bulk_queue = convert_bulk_ebook(self.gui, self.queue_convert_jobs, + self.gui.library_view.model().db, book_ids, + out_format=prefs['output_format'], args=(rows, previous, + self.book_converted)) + if self.__bulk_queue is None: + return + num = len(self.__bulk_queue.book_ids) + else: + jobs, changed, bad = convert_single_ebook(self.gui, + self.gui.library_view.model().db, book_ids, out_format=prefs['output_format']) + self.queue_convert_jobs(jobs, changed, bad, rows, previous, + self.book_converted) + num = len(jobs) + + if num > 0: + self.gui.status_bar.show_message(_('Starting conversion of %d book(s)') % + num, 2000) + + def queue_convert_jobs(self, jobs, changed, bad, rows, previous, + converted_func, extra_job_args=[]): + for func, args, desc, fmt, id, temp_files in jobs: + input_file = args[0] + input_fmt = os.path.splitext(input_file)[1] + core_usage = 1 + if input_fmt: + input_fmt = input_fmt[1:] + plugin = plugin_for_input_format(input_fmt) + if plugin is not None: + core_usage = plugin.core_usage + + if id not in bad: + job = self.gui.job_manager.run_job(Dispatcher(converted_func), + func, args=args, description=desc, + core_usage=core_usage) + args = [temp_files, fmt, id]+extra_job_args + self.conversion_jobs[job] = tuple(args) + + if changed: + self.gui.library_view.model().refresh_rows(rows) + current = self.gui.library_view.currentIndex() + self.gui.library_view.model().current_changed(current, previous) + + def book_auto_converted(self, job): + temp_files, fmt, book_id, on_card = self.conversion_jobs[job] + self.book_converted(job) + self.gui.sync_to_device(on_card, False, specific_format=fmt, send_ids=[book_id], do_auto_convert=False) + + def book_auto_converted_mail(self, job): + temp_files, fmt, book_id, delete_from_library, to, fmts = self.conversion_jobs[job] + self.book_converted(job) + self.gui.send_by_mail(to, fmts, delete_from_library, specific_format=fmt, send_ids=[book_id], do_auto_convert=False) + + def book_auto_converted_news(self, job): + temp_files, fmt, book_id = self.conversion_jobs[job] + self.book_converted(job) + self.gui.sync_news(send_ids=[book_id], do_auto_convert=False) + + def book_auto_converted_catalogs(self, job): + temp_files, fmt, book_id = self.conversion_jobs[job] + self.book_converted(job) + self.gui.sync_catalogs(send_ids=[book_id], do_auto_convert=False) + + def book_converted(self, job): + temp_files, fmt, book_id = self.conversion_jobs.pop(job)[:3] + try: + if job.failed: + self.gui.job_exception(job) + return + data = open(temp_files[-1].name, 'rb') + self.gui.library_view.model().db.add_format(book_id, \ + fmt, data, index_is_id=True) + data.close() + self.gui.status_bar.show_message(job.description + \ + (' completed'), 2000) + finally: + for f in temp_files: + try: + if os.path.exists(f.name): + os.remove(f.name) + except: + pass + self.gui.tags_view.recount() + if self.gui.current_view() is self.gui.library_view: + current = self.gui.library_view.currentIndex() + self.gui.library_view.model().current_changed(current, QModelIndex()) + diff --git a/src/calibre/gui2/actions/delete.py b/src/calibre/gui2/actions/delete.py new file mode 100644 index 0000000000..e0f3ae4d65 --- /dev/null +++ b/src/calibre/gui2/actions/delete.py @@ -0,0 +1,195 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai + +__license__ = 'GPL v3' +__copyright__ = '2010, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +from PyQt4.Qt import QMenu + +from calibre.gui2 import error_dialog +from calibre.gui2.dialogs.delete_matching_from_device import DeleteMatchingFromDeviceDialog +from calibre.gui2.dialogs.confirm_delete import confirm +from calibre.gui2.actions import InterfaceAction + +class DeleteAction(InterfaceAction): + + name = 'Remove Books' + action_spec = (_('Remove books'), 'trash.svg', None, _('Del')) + + def genesis(self): + self.qaction.triggered.connect(self.delete_books) + self.delete_menu = QMenu() + self.delete_menu.addAction(_('Remove selected books'), self.delete_books) + self.delete_menu.addAction( + _('Remove files of a specific format from selected books..'), + self.delete_selected_formats) + self.delete_menu.addAction( + _('Remove all formats from selected books, except...'), + self.delete_all_but_selected_formats) + self.delete_menu.addAction( + _('Remove covers from selected books'), self.delete_covers) + self.delete_menu.addSeparator() + self.delete_menu.addAction( + _('Remove matching books from device'), + self.remove_matching_books_from_device) + self.qaction.setMenu(self.delete_menu) + self.delete_memory = {} + + def location_selected(self, loc): + enabled = loc == 'library' + for action in list(self.delete_menu.actions())[1:]: + action.setEnabled(enabled) + + def _get_selected_formats(self, msg): + from calibre.gui2.dialogs.select_formats import SelectFormats + fmts = self.gui.library_view.model().db.all_formats() + d = SelectFormats([x.lower() for x in fmts], msg, parent=self.gui) + if d.exec_() != d.Accepted: + return None + return d.selected_formats + + def _get_selected_ids(self, err_title=_('Cannot delete')): + rows = self.gui.library_view.selectionModel().selectedRows() + if not rows or len(rows) == 0: + d = error_dialog(self.gui, err_title, _('No book selected')) + d.exec_() + return set([]) + return set(map(self.gui.library_view.model().id, rows)) + + def delete_selected_formats(self, *args): + ids = self._get_selected_ids() + if not ids: + return + fmts = self._get_selected_formats( + _('Choose formats to be deleted')) + if not fmts: + return + for id in ids: + for fmt in fmts: + self.gui.library_view.model().db.remove_format(id, fmt, + index_is_id=True, notify=False) + self.gui.library_view.model().refresh_ids(ids) + self.gui.library_view.model().current_changed(self.gui.library_view.currentIndex(), + self.gui.library_view.currentIndex()) + if ids: + self.gui.tags_view.recount() + + def delete_all_but_selected_formats(self, *args): + ids = self._get_selected_ids() + if not ids: + return + fmts = self._get_selected_formats( + '

'+_('Choose formats not to be deleted')) + if fmts is None: + return + for id in ids: + bfmts = self.gui.library_view.model().db.formats(id, index_is_id=True) + if bfmts is None: + continue + bfmts = set([x.lower() for x in bfmts.split(',')]) + rfmts = bfmts - set(fmts) + for fmt in rfmts: + self.gui.library_view.model().db.remove_format(id, fmt, + index_is_id=True, notify=False) + self.gui.library_view.model().refresh_ids(ids) + self.gui.library_view.model().current_changed(self.gui.library_view.currentIndex(), + self.gui.library_view.currentIndex()) + if ids: + self.gui.tags_view.recount() + + def remove_matching_books_from_device(self, *args): + if not self.gui.device_manager.is_device_connected: + d = error_dialog(self.gui, _('Cannot delete books'), + _('No device is connected')) + d.exec_() + return + ids = self._get_selected_ids() + if not ids: + #_get_selected_ids shows a dialog box if nothing is selected, so we + #do not need to show one here + return + to_delete = {} + some_to_delete = False + for model,name in ((self.gui.memory_view.model(), _('Main memory')), + (self.gui.card_a_view.model(), _('Storage Card A')), + (self.gui.card_b_view.model(), _('Storage Card B'))): + to_delete[name] = (model, model.paths_for_db_ids(ids)) + if len(to_delete[name][1]) > 0: + some_to_delete = True + if not some_to_delete: + d = error_dialog(self.gui, _('No books to delete'), + _('None of the selected books are on the device')) + d.exec_() + return + d = DeleteMatchingFromDeviceDialog(self.gui, to_delete) + if d.exec_(): + paths = {} + ids = {} + for (model, id, path) in d.result: + if model not in paths: + paths[model] = [] + ids[model] = [] + paths[model].append(path) + ids[model].append(id) + for model in paths: + job = self.gui.remove_paths(paths[model]) + self.delete_memory[job] = (paths[model], model) + model.mark_for_deletion(job, ids[model], rows_are_ids=True) + self.gui.status_bar.show_message(_('Deleting books from device.'), 1000) + + def delete_covers(self, *args): + ids = self._get_selected_ids() + if not ids: + return + for id in ids: + self.gui.library_view.model().db.remove_cover(id) + self.gui.library_view.model().refresh_ids(ids) + self.gui.library_view.model().current_changed(self.gui.library_view.currentIndex(), + self.gui.library_view.currentIndex()) + + def delete_books(self, *args): + ''' + Delete selected books from device or library. + ''' + view = self.gui.current_view() + rows = view.selectionModel().selectedRows() + if not rows or len(rows) == 0: + return + if self.gui.stack.currentIndex() == 0: + if not confirm('

'+_('The selected books will be ' + 'permanently deleted and the files ' + 'removed from your computer. Are you sure?') + +'

', 'library_delete_books', self.gui): + return + ci = view.currentIndex() + row = None + if ci.isValid(): + row = ci.row() + ids_deleted = view.model().delete_books(rows) + for v in (self.gui.memory_view, self.gui.card_a_view, self.gui.card_b_view): + if v is None: + continue + v.model().clear_ondevice(ids_deleted) + if row is not None: + ci = view.model().index(row, 0) + if ci.isValid(): + view.set_current_row(row) + else: + if not confirm('

'+_('The selected books will be ' + 'permanently deleted ' + 'from your device. Are you sure?') + +'

', 'device_delete_books', self.gui): + return + if self.gui.stack.currentIndex() == 1: + view = self.gui.memory_view + elif self.gui.stack.currentIndex() == 2: + view = self.gui.card_a_view + else: + view = self.gui.card_b_view + paths = view.model().paths(rows) + job = self.gui.remove_paths(paths) + self.delete_memory[job] = (paths, view.model()) + view.model().mark_for_deletion(job, rows) + self.gui.status_bar.show_message(_('Deleting books from device.'), 1000) + diff --git a/src/calibre/gui2/actions/device.py b/src/calibre/gui2/actions/device.py new file mode 100644 index 0000000000..f8b2e751f1 --- /dev/null +++ b/src/calibre/gui2/actions/device.py @@ -0,0 +1,146 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai + +__license__ = 'GPL v3' +__copyright__ = '2010, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +from functools import partial + +from PyQt4.Qt import QToolButton, QMenu, pyqtSignal, QIcon + +from calibre.gui2.actions import InterfaceAction +from calibre.utils.smtp import config as email_config +from calibre.constants import iswindows, isosx + +class ShareConnMenu(QMenu): # {{{ + + connect_to_folder = pyqtSignal() + connect_to_itunes = pyqtSignal() + config_email = pyqtSignal() + toggle_server = pyqtSignal() + + def __init__(self, parent=None): + QMenu.__init__(self, parent) + mitem = self.addAction(QIcon(I('devices/folder.svg')), _('Connect to folder')) + mitem.setEnabled(True) + mitem.triggered.connect(lambda x : self.connect_to_folder.emit()) + self.connect_to_folder_action = mitem + mitem = self.addAction(QIcon(I('devices/itunes.png')), + _('Connect to iTunes')) + mitem.setEnabled(True) + mitem.triggered.connect(lambda x : self.connect_to_itunes.emit()) + self.connect_to_itunes_action = mitem + if not (iswindows or isosx): + mitem.setVisible(False) + self.addSeparator() + self.toggle_server_action = \ + self.addAction(QIcon(I('network-server.svg')), + _('Start Content Server')) + self.toggle_server_action.triggered.connect(lambda x: + self.toggle_server.emit()) + self.addSeparator() + + self.email_actions = [] + + def server_state_changed(self, running): + text = _('Start Content Server') + if running: + text = _('Stop Content Server') + self.toggle_server_action.setText(text) + + def build_email_entries(self, sync_menu): + from calibre.gui2.device import DeviceAction + for ac in self.email_actions: + self.removeAction(ac) + self.email_actions = [] + self.memory = [] + opts = email_config().parse() + if opts.accounts: + self.email_to_menu = QMenu(_('Email to')+'...', self) + keys = sorted(opts.accounts.keys()) + for account in keys: + formats, auto, default = opts.accounts[account] + dest = 'mail:'+account+';'+formats + action1 = DeviceAction(dest, False, False, I('mail.svg'), + _('Email to')+' '+account) + action2 = DeviceAction(dest, True, False, I('mail.svg'), + _('Email to')+' '+account+ _(' and delete from library')) + map(self.email_to_menu.addAction, (action1, action2)) + map(self.memory.append, (action1, action2)) + if default: + map(self.addAction, (action1, action2)) + map(self.email_actions.append, (action1, action2)) + self.email_to_menu.addSeparator() + action1.a_s.connect(sync_menu.action_triggered) + action2.a_s.connect(sync_menu.action_triggered) + ac = self.addMenu(self.email_to_menu) + self.email_actions.append(ac) + else: + ac = self.addAction(_('Setup email based sharing of books')) + self.email_actions.append(ac) + ac.triggered.connect(self.setup_email) + + def setup_email(self, *args): + self.config_email.emit() + + def set_state(self, device_connected): + self.connect_to_folder_action.setEnabled(not device_connected) + self.connect_to_itunes_action.setEnabled(not device_connected) + + +# }}} + +class SendToDeviceAction(InterfaceAction): + + name = 'Send To Device' + action_spec = (_('Send to device'), 'sync.svg', None, _('D')) + + def genesis(self): + self.qaction.triggered.connect(self.do_sync) + self.gui.create_device_menu() + + def location_selected(self, loc): + enabled = loc == 'library' + self.qaction.setEnabled(enabled) + + def do_sync(self, *args): + self.gui._sync_action_triggered() + + +class ConnectShareAction(InterfaceAction): + + name = 'Connect Share' + action_spec = (_('Connect/share'), 'connect_share.svg', None, None) + popup_type = QToolButton.InstantPopup + + def genesis(self): + self.share_conn_menu = ShareConnMenu(self.gui) + self.share_conn_menu.toggle_server.connect(self.toggle_content_server) + self.share_conn_menu.config_email.connect(partial( + self.gui.iactions['Preferences'].do_config, + initial_category='email')) + self.qaction.setMenu(self.share_conn_menu) + self.share_conn_menu.connect_to_folder.connect(self.gui.connect_to_folder) + self.share_conn_menu.connect_to_itunes.connect(self.gui.connect_to_itunes) + + def location_selected(self, loc): + enabled = loc == 'library' + self.qaction.setEnabled(enabled) + + def set_state(self, device_connected): + self.share_conn_menu.set_state(device_connected) + + def build_email_entries(self): + m = self.gui.iactions['Send To Device'].qaction.menu() + self.share_conn_menu.build_email_entries(m) + + def content_server_state_changed(self, running): + self.share_conn_menu.server_state_changed(running) + + def toggle_content_server(self): + if self.gui.content_server is None: + self.gui.start_content_server() + else: + self.gui.content_server.exit() + self.gui.content_server = None diff --git a/src/calibre/gui2/actions/edit_collections.py b/src/calibre/gui2/actions/edit_collections.py new file mode 100644 index 0000000000..8f13b012e2 --- /dev/null +++ b/src/calibre/gui2/actions/edit_collections.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai + +__license__ = 'GPL v3' +__copyright__ = '2010, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +from calibre.gui2.actions import InterfaceAction + +class EditCollectionsAction(InterfaceAction): + + name = 'Edit Collections' + action_spec = (_('Manage collections'), None, None, None) + + def location_selected(self, loc): + enabled = loc != 'library' + self.qaction.setEnabled(enabled) + self.qaction.triggered.connect(self.edit_collections) + + def edit_collections(self, *args): + oncard = None + cv = self.gui.current_view() + if cv is self.gui.card_a_view: + oncard = 'carda' + if cv is self.gui.card_b_view: + oncard = 'cardb' + self.gui.iactions['Edit Metadata'].edit_device_collections(cv, + oncard=oncard) + diff --git a/src/calibre/gui2/actions/edit_metadata.py b/src/calibre/gui2/actions/edit_metadata.py new file mode 100644 index 0000000000..05b4bdf7fc --- /dev/null +++ b/src/calibre/gui2/actions/edit_metadata.py @@ -0,0 +1,359 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai + +__license__ = 'GPL v3' +__copyright__ = '2010, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +import os +from functools import partial + +from PyQt4.Qt import Qt, QTimer, QMenu + +from calibre.gui2 import error_dialog, config, warning_dialog +from calibre.gui2.dialogs.metadata_single import MetadataSingleDialog +from calibre.gui2.dialogs.metadata_bulk import MetadataBulkDialog +from calibre.gui2.dialogs.confirm_delete import confirm +from calibre.gui2.dialogs.tag_list_editor import TagListEditor +from calibre.gui2.actions import InterfaceAction + +class EditMetadataAction(InterfaceAction): + + name = 'Edit Metadata' + action_spec = (_('Edit metadata'), 'edit_input.svg', None, _('E')) + + def genesis(self): + self.create_action(spec=(_('Merge book records'), 'merge_books.svg', + None, _('M')), attr='action_merge') + md = QMenu() + md.addAction(_('Edit metadata individually'), + partial(self.edit_metadata, False, bulk=False)) + md.addSeparator() + md.addAction(_('Edit metadata in bulk'), + partial(self.edit_metadata, False, bulk=True)) + md.addSeparator() + md.addAction(_('Download metadata and covers'), + partial(self.download_metadata, False, covers=True), + Qt.ControlModifier+Qt.Key_D) + md.addAction(_('Download only metadata'), + partial(self.download_metadata, False, covers=False)) + md.addAction(_('Download only covers'), + partial(self.download_metadata, False, covers=True, + set_metadata=False, set_social_metadata=False)) + md.addAction(_('Download only social metadata'), + partial(self.download_metadata, False, covers=False, + set_metadata=False, set_social_metadata=True)) + self.metadata_menu = md + + mb = QMenu() + mb.addAction(_('Merge into first selected book - delete others'), + self.merge_books) + mb.addSeparator() + mb.addAction(_('Merge into first selected book - keep others'), + partial(self.merge_books, safe_merge=True)) + self.merge_menu = mb + self.action_merge.setMenu(mb) + md.addSeparator() + md.addAction(self.action_merge) + + self.qaction.triggered.connect(self.edit_metadata) + self.qaction.setMenu(md) + self.action_merge.triggered.connect(self.merge_books) + + def location_selected(self, loc): + enabled = loc == 'library' + self.qaction.setEnabled(enabled) + self.action_merge.setEnabled(enabled) + + def download_metadata(self, checked, covers=True, set_metadata=True, + set_social_metadata=None): + rows = self.gui.library_view.selectionModel().selectedRows() + if not rows or len(rows) == 0: + d = error_dialog(self.gui, _('Cannot download metadata'), + _('No books selected')) + d.exec_() + return + db = self.gui.library_view.model().db + ids = [db.id(row.row()) for row in rows] + self.do_download_metadata(ids, covers=covers, + set_metadata=set_metadata, + set_social_metadata=set_social_metadata) + + def do_download_metadata(self, ids, covers=True, set_metadata=True, + set_social_metadata=None): + db = self.gui.library_view.model().db + if set_social_metadata is None: + get_social_metadata = config['get_social_metadata'] + else: + get_social_metadata = set_social_metadata + from calibre.gui2.metadata import DownloadMetadata + self._download_book_metadata = DownloadMetadata(db, ids, + get_covers=covers, set_metadata=set_metadata, + get_social_metadata=get_social_metadata) + self._download_book_metadata.start() + if set_social_metadata is not None and set_social_metadata: + x = _('social metadata') + else: + x = _('covers') if covers and not set_metadata else _('metadata') + self.gui.progress_indicator.start( + _('Downloading %s for %d book(s)')%(x, len(ids))) + self._book_metadata_download_check = QTimer(self.gui) + self._book_metadata_download_check.timeout.connect(self.book_metadata_download_check, + type=Qt.QueuedConnection) + self._book_metadata_download_check.start(100) + + def book_metadata_download_check(self): + if self._download_book_metadata.is_alive(): + return + self._book_metadata_download_check.stop() + self.gui.progress_indicator.stop() + cr = self.gui.library_view.currentIndex().row() + x = self._download_book_metadata + self._download_book_metadata = None + if x.exception is None: + self.gui.library_view.model().refresh_ids( + x.updated, cr) + if self.gui.cover_flow: + self.gui.cover_flow.dataChanged() + if x.failures: + details = ['%s: %s'%(title, reason) for title, + reason in x.failures.values()] + details = '%s\n'%('\n'.join(details)) + warning_dialog(self.gui, _('Failed to download some metadata'), + _('Failed to download metadata for the following:'), + det_msg=details).exec_() + else: + err = _('Failed to download metadata:') + error_dialog(self.gui, _('Error'), err, det_msg=x.tb).exec_() + + + def edit_metadata(self, checked, bulk=None): + ''' + Edit metadata of selected books in library. + ''' + rows = self.gui.library_view.selectionModel().selectedRows() + previous = self.gui.library_view.currentIndex() + if not rows or len(rows) == 0: + d = error_dialog(self.gui, _('Cannot edit metadata'), + _('No books selected')) + d.exec_() + return + + if bulk or (bulk is None and len(rows) > 1): + return self.edit_bulk_metadata(checked) + + def accepted(id): + self.gui.library_view.model().refresh_ids([id]) + + for row in rows: + self.gui.iactions['View'].metadata_view_id = self.gui.library_view.model().db.id(row.row()) + d = MetadataSingleDialog(self.gui, row.row(), + self.gui.library_view.model().db, + accepted_callback=accepted, + cancel_all=rows.index(row) < len(rows)-1) + d.view_format.connect(self.gui.iactions['View'].metadata_view_format) + d.exec_() + if d.cancel_all: + break + if rows: + current = self.gui.library_view.currentIndex() + m = self.gui.library_view.model() + if self.gui.cover_flow: + self.gui.cover_flow.dataChanged() + m.current_changed(current, previous) + self.gui.tags_view.recount() + + def edit_bulk_metadata(self, checked): + ''' + Edit metadata of selected books in library in bulk. + ''' + rows = [r.row() for r in \ + self.gui.library_view.selectionModel().selectedRows()] + if not rows or len(rows) == 0: + d = error_dialog(self.gui, _('Cannot edit metadata'), + _('No books selected')) + d.exec_() + return + if MetadataBulkDialog(self.gui, rows, + self.gui.library_view.model().db).changed: + self.gui.library_view.model().resort(reset=False) + self.gui.library_view.model().research() + self.gui.tags_view.recount() + if self.gui.cover_flow: + self.gui.cover_flow.dataChanged() + + # Merge books {{{ + def merge_books(self, safe_merge=False): + ''' + Merge selected books in library. + ''' + if self.gui.stack.currentIndex() != 0: + return + rows = self.gui.library_view.selectionModel().selectedRows() + if not rows or len(rows) == 0: + return error_dialog(self.gui, _('Cannot merge books'), + _('No books selected'), show=True) + if len(rows) < 2: + return error_dialog(self.gui, _('Cannot merge books'), + _('At least two books must be selected for merging'), + show=True) + dest_id, src_books, src_ids = self.books_to_merge(rows) + if safe_merge: + if not confirm('

'+_( + 'All book formats and metadata from the selected books ' + 'will be added to the first selected book.

' + 'The second and subsequently selected books will not ' + 'be deleted or changed.

' + 'Please confirm you want to proceed.') + +'

', 'merge_books_safe', self.gui): + return + self.add_formats(dest_id, src_books) + self.merge_metadata(dest_id, src_ids) + else: + if not confirm('

'+_( + 'All book formats and metadata from the selected books will be merged ' + 'into the first selected book.

' + 'After merger the second and ' + 'subsequently selected books will be deleted.

' + 'All book formats of the first selected book will be kept ' + 'and any duplicate formats in the second and subsequently selected books ' + 'will be permanently deleted from your computer.

' + 'Are you sure you want to proceed?') + +'

', 'merge_books', self.gui): + return + if len(rows)>5: + if not confirm('

'+_('You are about to merge more than 5 books. ' + 'Are you sure you want to proceed?') + +'

', 'merge_too_many_books', self.gui): + return + self.add_formats(dest_id, src_books) + self.merge_metadata(dest_id, src_ids) + self.delete_books_after_merge(src_ids) + # leave the selection highlight on first selected book + dest_row = rows[0].row() + for row in rows: + if row.row() < rows[0].row(): + dest_row -= 1 + ci = self.gui.library_view.model().index(dest_row, 0) + if ci.isValid(): + self.gui.library_view.setCurrentIndex(ci) + + def add_formats(self, dest_id, src_books, replace=False): + for src_book in src_books: + if src_book: + fmt = os.path.splitext(src_book)[-1].replace('.', '').upper() + with open(src_book, 'rb') as f: + self.gui.library_view.model().db.add_format(dest_id, fmt, f, index_is_id=True, + notify=False, replace=replace) + + def books_to_merge(self, rows): + src_books = [] + src_ids = [] + m = self.gui.library_view.model() + for i, row in enumerate(rows): + id_ = m.id(row) + if i == 0: + dest_id = id_ + else: + src_ids.append(id_) + dbfmts = m.db.formats(id_, index_is_id=True) + if dbfmts: + for fmt in dbfmts.split(','): + src_books.append(m.db.format_abspath(id_, fmt, + index_is_id=True)) + return [dest_id, src_books, src_ids] + + def delete_books_after_merge(self, ids_to_delete): + self.gui.library_view.model().delete_books_by_id(ids_to_delete) + + def merge_metadata(self, dest_id, src_ids): + db = self.gui.library_view.model().db + dest_mi = db.get_metadata(dest_id, index_is_id=True, get_cover=True) + orig_dest_comments = dest_mi.comments + for src_id in src_ids: + src_mi = db.get_metadata(src_id, index_is_id=True, get_cover=True) + if src_mi.comments and orig_dest_comments != src_mi.comments: + if not dest_mi.comments: + dest_mi.comments = src_mi.comments + else: + dest_mi.comments = unicode(dest_mi.comments) + u'\n\n' + unicode(src_mi.comments) + if src_mi.title and (not dest_mi.title or + dest_mi.title == _('Unknown')): + dest_mi.title = src_mi.title + if src_mi.title and (not dest_mi.authors or dest_mi.authors[0] == + _('Unknown')): + dest_mi.authors = src_mi.authors + dest_mi.author_sort = src_mi.author_sort + if src_mi.tags: + if not dest_mi.tags: + dest_mi.tags = src_mi.tags + else: + dest_mi.tags.extend(src_mi.tags) + if src_mi.cover and not dest_mi.cover: + dest_mi.cover = src_mi.cover + if not dest_mi.publisher: + dest_mi.publisher = src_mi.publisher + if not dest_mi.rating: + dest_mi.rating = src_mi.rating + if not dest_mi.series: + dest_mi.series = src_mi.series + dest_mi.series_index = src_mi.series_index + db.set_metadata(dest_id, dest_mi, ignore_errors=False) + + for key in db.field_metadata: #loop thru all defined fields + if db.field_metadata[key]['is_custom']: + colnum = db.field_metadata[key]['colnum'] + # Get orig_dest_comments before it gets changed + if db.field_metadata[key]['datatype'] == 'comments': + orig_dest_value = db.get_custom(dest_id, num=colnum, index_is_id=True) + for src_id in src_ids: + dest_value = db.get_custom(dest_id, num=colnum, index_is_id=True) + src_value = db.get_custom(src_id, num=colnum, index_is_id=True) + if db.field_metadata[key]['datatype'] == 'comments': + if src_value and src_value != orig_dest_value: + if not dest_value: + db.set_custom(dest_id, src_value, num=colnum) + else: + dest_value = unicode(dest_value) + u'\n\n' + unicode(src_value) + db.set_custom(dest_id, dest_value, num=colnum) + if db.field_metadata[key]['datatype'] in \ + ('bool', 'int', 'float', 'rating', 'datetime') \ + and not dest_value: + db.set_custom(dest_id, src_value, num=colnum) + if db.field_metadata[key]['datatype'] == 'series' \ + and not dest_value: + if src_value: + src_index = db.get_custom_extra(src_id, num=colnum, index_is_id=True) + db.set_custom(dest_id, src_value, num=colnum, extra=src_index) + if db.field_metadata[key]['datatype'] == 'text' \ + and not db.field_metadata[key]['is_multiple'] \ + and not dest_value: + db.set_custom(dest_id, src_value, num=colnum) + if db.field_metadata[key]['datatype'] == 'text' \ + and db.field_metadata[key]['is_multiple']: + if src_value: + if not dest_value: + dest_value = src_value + else: + dest_value.extend(src_value) + db.set_custom(dest_id, dest_value, num=colnum) + # }}} + + def edit_device_collections(self, view, oncard=None): + model = view.model() + result = model.get_collections_with_ids() + compare = (lambda x,y:cmp(x.lower(), y.lower())) + d = TagListEditor(self.gui, tag_to_match=None, data=result, compare=compare) + d.exec_() + if d.result() == d.Accepted: + to_rename = d.to_rename # dict of new text to old ids + to_delete = d.to_delete # list of ids + for text in to_rename: + for old_id in to_rename[text]: + model.rename_collection(old_id, new_name=unicode(text)) + for item in to_delete: + model.delete_collection_using_id(item) + self.gui.upload_collections(model.db, view=view, oncard=oncard) + view.reset() + + diff --git a/src/calibre/gui2/actions/fetch_news.py b/src/calibre/gui2/actions/fetch_news.py new file mode 100644 index 0000000000..b2893e0834 --- /dev/null +++ b/src/calibre/gui2/actions/fetch_news.py @@ -0,0 +1,71 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai + +__license__ = 'GPL v3' +__copyright__ = '2010, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +from PyQt4.Qt import Qt + +from calibre.gui2 import Dispatcher +from calibre.gui2.tools import fetch_scheduled_recipe +from calibre.utils.config import dynamic +from calibre.gui2.actions import InterfaceAction + +class FetchNewsAction(InterfaceAction): + + name = 'Fetch News' + action_spec = (_('Fetch news'), 'news.svg', None, _('F')) + + def location_selected(self, loc): + enabled = loc == 'library' + self.qaction.setEnabled(enabled) + + def genesis(self): + self.conversion_jobs = {} + + def init_scheduler(self, db): + from calibre.gui2.dialogs.scheduler import Scheduler + self.scheduler = Scheduler(self.gui, db) + self.scheduler.start_recipe_fetch.connect(self.download_scheduled_recipe, type=Qt.QueuedConnection) + self.qaction.setMenu(self.scheduler.news_menu) + self.qaction.triggered.connect( + self.scheduler.show_dialog) + + def library_changed(self, db): + self.scheduler.database_changed(db) + + def initialization_complete(self): + self.connect_scheduler() + + def connect_scheduler(self): + self.scheduler.delete_old_news.connect( + self.gui.library_view.model().delete_books_by_id, + type=Qt.QueuedConnection) + + def download_scheduled_recipe(self, arg): + func, args, desc, fmt, temp_files = \ + fetch_scheduled_recipe(arg) + job = self.gui.job_manager.run_job( + Dispatcher(self.scheduled_recipe_fetched), func, args=args, + description=desc) + self.conversion_jobs[job] = (temp_files, fmt, arg) + self.gui.status_bar.show_message(_('Fetching news from ')+arg['title'], 2000) + + def scheduled_recipe_fetched(self, job): + temp_files, fmt, arg = self.conversion_jobs.pop(job) + pt = temp_files[0] + if job.failed: + self.scheduler.recipe_download_failed(arg) + return self.gui.job_exception(job) + id = self.gui.library_view.model().add_news(pt.name, arg) + self.gui.library_view.model().reset() + sync = dynamic.get('news_to_be_synced', set([])) + sync.add(id) + dynamic.set('news_to_be_synced', sync) + self.scheduler.recipe_downloaded(arg) + self.gui.status_bar.show_message(arg['title'] + _(' fetched.'), 3000) + self.gui.email_news(id) + self.gui.sync_news() + + diff --git a/src/calibre/gui2/actions/help.py b/src/calibre/gui2/actions/help.py new file mode 100644 index 0000000000..0c6b257b80 --- /dev/null +++ b/src/calibre/gui2/actions/help.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai + +__license__ = 'GPL v3' +__copyright__ = '2010, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +from PyQt4.Qt import QUrl + +from calibre.gui2 import open_url +from calibre.gui2.actions import InterfaceAction + +class HelpAction(InterfaceAction): + + name = 'Help' + action_spec = (_('Help'), 'help.svg', _('Browse the calibre User Manual'), _('F1'),) + + def genesis(self): + self.qaction.triggered.connect(self.show_help) + + def show_help(self, *args): + open_url(QUrl('http://calibre-ebook.com/user_manual')) + + + diff --git a/src/calibre/gui2/actions/open.py b/src/calibre/gui2/actions/open.py new file mode 100644 index 0000000000..40fc6372b7 --- /dev/null +++ b/src/calibre/gui2/actions/open.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai + +__license__ = 'GPL v3' +__copyright__ = '2010, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + + +from calibre.gui2.actions import InterfaceAction + +class OpenFolderAction(InterfaceAction): + + name = 'Open Folder' + action_spec = (_('Open containing folder'), 'document_open.svg', None, + _('O')) + + def genesis(self): + self.qaction.triggered.connect(self.gui.iactions['View'].view_folder) + + def location_selected(self, loc): + enabled = loc == 'library' + self.qaction.setEnabled(enabled) + + diff --git a/src/calibre/gui2/actions/preferences.py b/src/calibre/gui2/actions/preferences.py new file mode 100644 index 0000000000..d047e51dac --- /dev/null +++ b/src/calibre/gui2/actions/preferences.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai + +__license__ = 'GPL v3' +__copyright__ = '2010, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +from PyQt4.Qt import QIcon, QMenu + +from calibre.gui2.actions import InterfaceAction +from calibre.gui2.dialogs.config import ConfigDialog +from calibre.gui2 import error_dialog, config + +class PreferencesAction(InterfaceAction): + + name = 'Preferences' + action_spec = (_('Preferences'), 'config.svg', None, _('Ctrl+P')) + + def genesis(self): + pm = QMenu() + pm.addAction(QIcon(I('config.svg')), _('Preferences'), self.do_config) + pm.addAction(QIcon(I('wizard.svg')), _('Run welcome wizard'), + self.gui.run_wizard) + self.qaction.setMenu(pm) + self.preferences_menu = pm + for x in (self.gui.preferences_action, self.qaction): + x.triggered.connect(self.do_config) + + + def do_config(self, checked=False, initial_category='general'): + if self.gui.job_manager.has_jobs(): + d = error_dialog(self.gui, _('Cannot configure'), + _('Cannot configure while there are running jobs.')) + d.exec_() + return + if self.gui.must_restart_before_config: + d = error_dialog(self.gui, _('Cannot configure'), + _('Cannot configure before calibre is restarted.')) + d.exec_() + return + d = ConfigDialog(self.gui, self.gui.library_view, + server=self.gui.content_server, initial_category=initial_category) + + d.exec_() + self.gui.content_server = d.server + if self.gui.content_server is not None: + self.gui.content_server.state_callback = \ + self.Dispatcher(self.gui.iactions['Connect Share'].content_server_state_changed) + self.gui.content_server.state_callback(self.gui.content_server.is_running) + + if d.result() == d.Accepted: + self.gui.search.search_as_you_type(config['search_as_you_type']) + self.gui.tags_view.set_new_model() # in case columns changed + self.gui.iactions['Save To Disk'].reread_prefs() + self.gui.tags_view.recount() + self.gui.create_device_menu() + self.gui.set_device_menu_items_state(bool(self.gui.device_connected)) + self.gui.tool_bar.apply_settings() + + + diff --git a/src/calibre/gui2/actions/restart.py b/src/calibre/gui2/actions/restart.py new file mode 100644 index 0000000000..be940fa32e --- /dev/null +++ b/src/calibre/gui2/actions/restart.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai + +__license__ = 'GPL v3' +__copyright__ = '2010, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + + +from calibre.gui2.actions import InterfaceAction + +class RestartAction(InterfaceAction): + + name = 'Restart' + action_spec = (_('&Restart'), None, None, _('Ctrl+R')) + + def genesis(self): + self.qaction.triggered.connect(self.restart) + + def restart(self, *args): + self.gui.quit(restart=True) + + diff --git a/src/calibre/gui2/actions/save_to_disk.py b/src/calibre/gui2/actions/save_to_disk.py new file mode 100644 index 0000000000..fcd7c4e332 --- /dev/null +++ b/src/calibre/gui2/actions/save_to_disk.py @@ -0,0 +1,153 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai + +__license__ = 'GPL v3' +__copyright__ = '2010, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +import os +from functools import partial + +from PyQt4.Qt import QMenu, pyqtSignal + +from calibre.utils.config import prefs +from calibre.gui2 import error_dialog, Dispatcher, \ + choose_dir, warning_dialog, open_local_file +from calibre.gui2.actions import InterfaceAction +from calibre.ebooks import BOOK_EXTENSIONS + +class SaveMenu(QMenu): # {{{ + + save_fmt = pyqtSignal(object) + + def __init__(self, parent): + QMenu.__init__(self, _('Save single format to disk...'), parent) + for ext in sorted(BOOK_EXTENSIONS): + action = self.addAction(ext.upper()) + setattr(self, 'do_'+ext, partial(self.do, ext)) + action.triggered.connect( + getattr(self, 'do_'+ext)) + + def do(self, ext, *args): + self.save_fmt.emit(ext) + +# }}} + + +class SaveToDiskAction(InterfaceAction): + + name = "Save To Disk" + action_spec = (_('Save to disk'), 'save.svg', None, _('S')) + + def genesis(self): + self.qaction.triggered.connect(self.save_to_disk) + self.save_menu = QMenu() + self.save_menu.addAction(_('Save to disk'), partial(self.save_to_disk, + False)) + self.save_menu.addAction(_('Save to disk in a single directory'), + partial(self.save_to_single_dir, False)) + self.save_menu.addAction(_('Save only %s format to disk')% + prefs['output_format'].upper(), + partial(self.save_single_format_to_disk, False)) + self.save_menu.addAction( + _('Save only %s format to disk in a single directory')% + prefs['output_format'].upper(), + partial(self.save_single_fmt_to_single_dir, False)) + self.save_sub_menu = SaveMenu(self.gui) + self.save_sub_menu_action = self.save_menu.addMenu(self.save_sub_menu) + self.save_sub_menu.save_fmt.connect(self.save_specific_format_disk) + self.qaction.setMenu(self.save_menu) + + def location_selected(self, loc): + enabled = loc == 'library' + for action in list(self.save_menu.actions())[1:]: + action.setEnabled(enabled) + + def reread_prefs(self): + self.save_menu.actions()[2].setText( + _('Save only %s format to disk')% + prefs['output_format'].upper()) + self.save_menu.actions()[3].setText( + _('Save only %s format to disk in a single directory')% + prefs['output_format'].upper()) + + def save_single_format_to_disk(self, checked): + self.save_to_disk(checked, False, prefs['output_format']) + + def save_specific_format_disk(self, fmt): + self.save_to_disk(False, False, fmt) + + def save_to_single_dir(self, checked): + self.save_to_disk(checked, True) + + def save_single_fmt_to_single_dir(self, *args): + self.save_to_disk(False, single_dir=True, + single_format=prefs['output_format']) + + def save_to_disk(self, checked, single_dir=False, single_format=None): + rows = self.gui.current_view().selectionModel().selectedRows() + if not rows or len(rows) == 0: + return error_dialog(self.gui, _('Cannot save to disk'), + _('No books selected'), show=True) + path = choose_dir(self.gui, 'save to disk dialog', + _('Choose destination directory')) + if not path: + return + dpath = os.path.abspath(path).replace('/', os.sep)+os.sep + lpath = self.gui.library_view.model().db.library_path.replace('/', + os.sep)+os.sep + if dpath.startswith(lpath): + return error_dialog(self.gui, _('Not allowed'), + _('You are trying to save files into the calibre ' + 'library. This can cause corruption of your ' + 'library. Save to disk is meant to export ' + 'files from your calibre library elsewhere.'), show=True) + + if self.gui.current_view() is self.gui.library_view: + from calibre.gui2.add import Saver + from calibre.library.save_to_disk import config + opts = config().parse() + if single_format is not None: + opts.formats = single_format + # Special case for Kindle annotation files + if single_format.lower() in ['mbp','pdr','tan']: + opts.to_lowercase = False + opts.save_cover = False + opts.write_opf = False + opts.template = opts.send_template + if single_dir: + opts.template = opts.template.split('/')[-1].strip() + if not opts.template: + opts.template = '{title} - {authors}' + self._saver = Saver(self.gui, self.gui.library_view.model().db, + Dispatcher(self._books_saved), rows, path, opts, + spare_server=self.gui.spare_server) + + else: + paths = self.gui.current_view().model().paths(rows) + self.gui.device_manager.save_books( + Dispatcher(self.books_saved), paths, path) + + + def _books_saved(self, path, failures, error): + self._saver = None + if error: + return error_dialog(self.gui, _('Error while saving'), + _('There was an error while saving.'), + error, show=True) + if failures: + failures = [u'%s\n\t%s'% + (title, '\n\t'.join(err.splitlines())) for title, err in + failures] + + warning_dialog(self.gui, _('Could not save some books'), + _('Could not save some books') + ', ' + + _('Click the show details button to see which ones.'), + u'\n\n'.join(failures), show=True) + open_local_file(path) + + def books_saved(self, job): + if job.failed: + return self.gui.device_job_exception(job) + + diff --git a/src/calibre/gui2/actions/show_book_details.py b/src/calibre/gui2/actions/show_book_details.py new file mode 100644 index 0000000000..06c63714a7 --- /dev/null +++ b/src/calibre/gui2/actions/show_book_details.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai + +__license__ = 'GPL v3' +__copyright__ = '2010, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + + +from calibre.gui2.actions import InterfaceAction +from calibre.gui2.dialogs.book_info import BookInfo +from calibre.gui2 import error_dialog + +class ShowBookDetailsAction(InterfaceAction): + + name = 'Show Book Details' + action_spec = (_('Show book details'), 'dialog_information.svg', None, + _('I')) + + def genesis(self): + self.qaction.triggered.connect(self.show_book_info) + + def show_book_info(self, *args): + if self.gui.current_view() is not self.gui.library_view: + error_dialog(self.gui, _('No detailed info available'), + _('No detailed information is available for books ' + 'on the device.')).exec_() + return + index = self.gui.library_view.currentIndex() + if index.isValid(): + BookInfo(self.gui, self.gui.library_view, index).show() + diff --git a/src/calibre/gui2/actions/similar_books.py b/src/calibre/gui2/actions/similar_books.py new file mode 100644 index 0000000000..5ce74fd2dc --- /dev/null +++ b/src/calibre/gui2/actions/similar_books.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai + +__license__ = 'GPL v3' +__copyright__ = '2010, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +from functools import partial + +from PyQt4.Qt import QMenu + +from calibre.gui2.actions import InterfaceAction + +class SimilarBooksAction(InterfaceAction): + + name = 'Similar Books' + action_spec = (_('Similar books...'), None, None, None) + + def genesis(self): + m = QMenu(self.gui) + for text, icon, target, shortcut in [ + (_('Books by same author'), 'user_profile.svg', 'authors', _('Alt+A')), + (_('Books in this series'), 'books_in_series.svg', 'series', _('Alt+S')), + (_('Books by this publisher'), 'publisher.png', 'publisher', _('Alt+P')), + (_('Books with the same tags'), 'tags.svg', 'tag', _('Alt+T')),]: + ac = self.create_action(spec=(text, icon, None, shortcut), + attr=target) + m.addAction(ac) + m.triggered.connect(partial(self.show_similar_books, target)) + self.qaction.setMenu(m) + self.similar_menu = m + + def show_similar_books(self, type, *args): + search, join = [], ' ' + idx = self.gui.library_view.currentIndex() + if not idx.isValid(): + return + row = idx.row() + if type == 'series': + series = idx.model().db.series(row) + if series: + search = ['series:"'+series+'"'] + elif type == 'publisher': + publisher = idx.model().db.publisher(row) + if publisher: + search = ['publisher:"'+publisher+'"'] + elif type == 'tag': + tags = idx.model().db.tags(row) + if tags: + search = ['tag:"='+t+'"' for t in tags.split(',')] + elif type in ('author', 'authors'): + authors = idx.model().db.authors(row) + if authors: + search = ['author:"='+a.strip().replace('|', ',')+'"' \ + for a in authors.split(',')] + join = ' or ' + if search: + self.gui.search.set_search_string(join.join(search)) + + diff --git a/src/calibre/gui2/actions/view.py b/src/calibre/gui2/actions/view.py new file mode 100644 index 0000000000..22592be2fe --- /dev/null +++ b/src/calibre/gui2/actions/view.py @@ -0,0 +1,181 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai + +__license__ = 'GPL v3' +__copyright__ = '2010, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +import os, time +from functools import partial + +from PyQt4.Qt import Qt, QMenu + +from calibre.constants import isosx +from calibre.gui2 import error_dialog, Dispatcher, question_dialog, config, \ + open_local_file +from calibre.gui2.dialogs.choose_format import ChooseFormatDialog +from calibre.utils.config import prefs +from calibre.ptempfile import PersistentTemporaryFile +from calibre.gui2.actions import InterfaceAction + +class ViewAction(InterfaceAction): + + name = 'View' + action_spec = (_('View'), 'view.svg', None, _('V')) + + def genesis(self): + self.persistent_files = [] + self.metadata_view_id = None + self.qaction.triggered.connect(self.view_book) + self.view_menu = QMenu() + self.view_menu.addAction(_('View'), partial(self.view_book, False)) + ac = self.view_menu.addAction(_('View specific format')) + ac.setShortcut((Qt.ControlModifier if isosx else Qt.AltModifier)+Qt.Key_V) + self.qaction.setMenu(self.view_menu) + ac.triggered.connect(self.view_specific_format, type=Qt.QueuedConnection) + + + def location_selected(self, loc): + enabled = loc == 'library' + for action in list(self.view_menu.actions())[1:]: + action.setEnabled(enabled) + + def view_format(self, row, format): + fmt_path = self.gui.library_view.model().db.format_abspath(row, format) + if fmt_path: + self._view_file(fmt_path) + + def view_format_by_id(self, id_, format): + fmt_path = self.gui.library_view.model().db.format_abspath(id_, format, + index_is_id=True) + if fmt_path: + self._view_file(fmt_path) + + def metadata_view_format(self, fmt): + fmt_path = self.gui.library_view.model().db.\ + format_abspath(self.metadata_view_id, + fmt, index_is_id=True) + if fmt_path: + self._view_file(fmt_path) + + + def book_downloaded_for_viewing(self, job): + if job.failed: + self.gui.device_job_exception(job) + return + self._view_file(job.result) + + def _launch_viewer(self, name=None, viewer='ebook-viewer', internal=True): + self.gui.setCursor(Qt.BusyCursor) + try: + if internal: + args = [viewer] + if isosx and 'ebook' in viewer: + args.append('--raise-window') + if name is not None: + args.append(name) + self.gui.job_manager.launch_gui_app(viewer, + kwargs=dict(args=args)) + else: + open_local_file(name) + time.sleep(2) # User feedback + finally: + self.gui.unsetCursor() + + def _view_file(self, name): + ext = os.path.splitext(name)[1].upper().replace('.', '') + viewer = 'lrfviewer' if ext == 'LRF' else 'ebook-viewer' + internal = ext in config['internally_viewed_formats'] + self._launch_viewer(name, viewer, internal) + + def view_specific_format(self, triggered): + rows = self.gui.library_view.selectionModel().selectedRows() + if not rows or len(rows) == 0: + d = error_dialog(self.gui, _('Cannot view'), _('No book selected')) + d.exec_() + return + + row = rows[0].row() + formats = self.gui.library_view.model().db.formats(row).upper().split(',') + d = ChooseFormatDialog(self.gui, _('Choose the format to view'), formats) + if d.exec_() == d.Accepted: + format = d.format() + self.view_format(row, format) + + def _view_check(self, num, max_=3): + if num <= max_: + return True + return question_dialog(self.gui, _('Multiple Books Selected'), + _('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 started the process ' + 'cannot be stopped until complete. Do you wish to continue?' + ) % num) + + def view_folder(self, *args): + rows = self.gui.current_view().selectionModel().selectedRows() + if not rows or len(rows) == 0: + d = error_dialog(self.gui, _('Cannot open folder'), + _('No book selected')) + d.exec_() + return + if not self._view_check(len(rows)): + return + for row in rows: + path = self.gui.library_view.model().db.abspath(row.row()) + open_local_file(path) + + def view_folder_for_id(self, id_): + path = self.gui.library_view.model().db.abspath(id_, index_is_id=True) + open_local_file(path) + + def view_book(self, triggered): + rows = self.gui.current_view().selectionModel().selectedRows() + self._view_books(rows) + + def view_specific_book(self, index): + self._view_books([index]) + + def _view_books(self, rows): + if not rows or len(rows) == 0: + self._launch_viewer() + return + + if not self._view_check(len(rows)): + return + + if self.gui.current_view() is self.gui.library_view: + for row in rows: + if hasattr(row, 'row'): + row = row.row() + + formats = self.gui.library_view.model().db.formats(row) + title = self.gui.library_view.model().db.title(row) + if not formats: + error_dialog(self.gui, _('Cannot view'), + _('%s has no available formats.')%(title,), show=True) + continue + + formats = formats.upper().split(',') + + + in_prefs = False + for format in prefs['input_format_order']: + if format in formats: + in_prefs = True + self.view_format(row, format) + break + if not in_prefs: + self.view_format(row, formats[0]) + else: + paths = self.gui.current_view().model().paths(rows) + for path in paths: + pt = PersistentTemporaryFile('_viewer_'+\ + os.path.splitext(path)[1]) + self.persistent_files.append(pt) + pt.close() + self.gui.device_manager.view_book(\ + Dispatcher(self.book_downloaded_for_viewing), + path, pt.name) + + diff --git a/src/calibre/gui2/add.py b/src/calibre/gui2/add.py index 74f5a2148e..04d60525f1 100644 --- a/src/calibre/gui2/add.py +++ b/src/calibre/gui2/add.py @@ -443,7 +443,7 @@ class Saver(QObject): from calibre.ebooks.metadata.worker import SaveWorker self.worker = SaveWorker(self.rq, db, self.ids, path, self.opts, spare_server=self.spare_server) - self.connect(self.pd, SIGNAL('canceled()'), self.canceled) + self.pd.canceled_signal.connect(self.canceled) self.timer = QTimer(self) self.connect(self.timer, SIGNAL('timeout()'), self.update) self.timer.start(200) diff --git a/src/calibre/gui2/convert/__init__.py b/src/calibre/gui2/convert/__init__.py index 437741d685..c8f8733899 100644 --- a/src/calibre/gui2/convert/__init__.py +++ b/src/calibre/gui2/convert/__init__.py @@ -16,18 +16,39 @@ from calibre.ebooks.conversion.config import load_defaults, \ save_defaults as save_defaults_, \ load_specifics, GuiRecommendations from calibre import prepare_string_for_xml +from calibre.customize.ui import plugin_for_input_format + +def config_widget_for_input_plugin(plugin): + name = plugin.name.lower().replace(' ', '_') + try: + return __import__('calibre.gui2.convert.'+name, + fromlist=[1]).PluginWidget + except ImportError: + pass + +def bulk_defaults_for_input_format(fmt): + plugin = plugin_for_input_format(fmt) + if plugin is not None: + w = config_widget_for_input_plugin(plugin) + if w is not None: + return load_defaults(w.COMMIT_NAME) + return {} + + class Widget(QWidget): TITLE = _('Unknown') ICON = I('config.svg') HELP = '' + COMMIT_NAME = None - def __init__(self, parent, name, options): + def __init__(self, parent, options): QWidget.__init__(self, parent) self.setupUi(self) self._options = options - self._name = name + self._name = self.commit_name = self.COMMIT_NAME + assert self._name is not None self._icon = QIcon(self.ICON) for name in self._options: if not hasattr(self, 'opt_'+name): @@ -58,7 +79,7 @@ class Widget(QWidget): def commit_options(self, save_defaults=False): recs = self.create_recommendations() if save_defaults: - save_defaults_(self._name, recs) + save_defaults_(self.commit_name, recs) return recs def create_recommendations(self): diff --git a/src/calibre/gui2/convert/comic_input.py b/src/calibre/gui2/convert/comic_input.py index 25c39fe138..c2b6bfffaa 100644 --- a/src/calibre/gui2/convert/comic_input.py +++ b/src/calibre/gui2/convert/comic_input.py @@ -14,9 +14,10 @@ class PluginWidget(Widget, Ui_Form): TITLE = _('Comic Input') HELP = _('Options specific to')+' comic '+_('input') + COMMIT_NAME = 'comic_input' def __init__(self, parent, get_option, get_help, db=None, book_id=None): - Widget.__init__(self, parent, 'comic_input', + Widget.__init__(self, parent, ['colors', 'dont_normalize', 'keep_aspect_ratio', 'right2left', 'despeckle', 'no_sort', 'no_process', 'landscape', 'dont_sharpen', 'disable_trim', 'wide', 'output_format', diff --git a/src/calibre/gui2/convert/debug.py b/src/calibre/gui2/convert/debug.py index 78fac42df8..6fd1975443 100644 --- a/src/calibre/gui2/convert/debug.py +++ b/src/calibre/gui2/convert/debug.py @@ -19,9 +19,10 @@ class DebugWidget(Widget, Ui_Form): TITLE = _('Debug') ICON = I('debug.svg') HELP = _('Debug the conversion process.') + COMMIT_NAME = 'debug' def __init__(self, parent, get_option, get_help, db=None, book_id=None): - Widget.__init__(self, parent, 'debug', + Widget.__init__(self, parent, ['debug_pipeline'] ) self.db, self.book_id = db, book_id diff --git a/src/calibre/gui2/convert/epub_output.py b/src/calibre/gui2/convert/epub_output.py index 8130b00273..2d1fcdfcd8 100644 --- a/src/calibre/gui2/convert/epub_output.py +++ b/src/calibre/gui2/convert/epub_output.py @@ -14,9 +14,10 @@ class PluginWidget(Widget, Ui_Form): TITLE = _('EPUB Output') HELP = _('Options specific to')+' EPUB '+_('output') + COMMIT_NAME = 'epub_output' def __init__(self, parent, get_option, get_help, db=None, book_id=None): - Widget.__init__(self, parent, 'epub_output', + Widget.__init__(self, parent, ['dont_split_on_page_breaks', 'flow_size', 'no_default_epub_cover', 'no_svg_cover', 'preserve_cover_aspect_ratio',] diff --git a/src/calibre/gui2/convert/fb2_input.py b/src/calibre/gui2/convert/fb2_input.py index 6f950e7663..702f87754f 100644 --- a/src/calibre/gui2/convert/fb2_input.py +++ b/src/calibre/gui2/convert/fb2_input.py @@ -11,9 +11,10 @@ class PluginWidget(Widget, Ui_Form): TITLE = _('FB2 Input') HELP = _('Options specific to')+' FB2 '+_('input') + COMMIT_NAME = 'fb2_input' def __init__(self, parent, get_option, get_help, db=None, book_id=None): - Widget.__init__(self, parent, 'fb2_input', + Widget.__init__(self, parent, ['no_inline_fb2_toc']) self.db, self.book_id = db, book_id self.initialize_options(get_option, get_help, db, book_id) diff --git a/src/calibre/gui2/convert/fb2_output.py b/src/calibre/gui2/convert/fb2_output.py index 76d4c56af3..55c708c2a4 100644 --- a/src/calibre/gui2/convert/fb2_output.py +++ b/src/calibre/gui2/convert/fb2_output.py @@ -13,8 +13,9 @@ class PluginWidget(Widget, Ui_Form): TITLE = _('FB2 Output') HELP = _('Options specific to')+' FB2 '+_('output') + COMMIT_NAME = 'fb2_output' def __init__(self, parent, get_option, get_help, db=None, book_id=None): - Widget.__init__(self, parent, 'fb2_output', ['inline_toc']) + Widget.__init__(self, parent, ['inline_toc']) self.db, self.book_id = db, book_id self.initialize_options(get_option, get_help, db, book_id) diff --git a/src/calibre/gui2/convert/look_and_feel.py b/src/calibre/gui2/convert/look_and_feel.py index 793d170a13..c5f579fc9e 100644 --- a/src/calibre/gui2/convert/look_and_feel.py +++ b/src/calibre/gui2/convert/look_and_feel.py @@ -16,9 +16,10 @@ class LookAndFeelWidget(Widget, Ui_Form): TITLE = _('Look & Feel') ICON = I('lookfeel.svg') HELP = _('Control the look and feel of the output') + COMMIT_NAME = 'look_and_feel' def __init__(self, parent, get_option, get_help, db=None, book_id=None): - Widget.__init__(self, parent, 'look_and_feel', + Widget.__init__(self, parent, ['change_justification', 'extra_css', 'base_font_size', 'font_size_mapping', 'line_height', 'linearize_tables', diff --git a/src/calibre/gui2/convert/lrf_output.py b/src/calibre/gui2/convert/lrf_output.py index b0ddc3dadb..1b4f1acad3 100644 --- a/src/calibre/gui2/convert/lrf_output.py +++ b/src/calibre/gui2/convert/lrf_output.py @@ -18,9 +18,10 @@ class PluginWidget(Widget, Ui_Form): TITLE = _('LRF Output') HELP = _('Options specific to')+' LRF '+_('output') + COMMIT_NAME = 'lrf_output' def __init__(self, parent, get_option, get_help, db=None, book_id=None): - Widget.__init__(self, parent, 'lrf_output', + Widget.__init__(self, parent, ['wordspace', 'header', 'header_format', 'minimum_indent', 'serif_family', 'render_tables_as_images', 'sans_family', 'mono_family', diff --git a/src/calibre/gui2/convert/metadata.py b/src/calibre/gui2/convert/metadata.py index cb5b99c525..daabd6226a 100644 --- a/src/calibre/gui2/convert/metadata.py +++ b/src/calibre/gui2/convert/metadata.py @@ -42,9 +42,10 @@ class MetadataWidget(Widget, Ui_Form): ICON = I('dialog_information.svg') HELP = _('Set the metadata. The output file will contain as much of this ' 'metadata as possible.') + COMMIT_NAME = 'metadata' def __init__(self, parent, get_option, get_help, db=None, book_id=None): - Widget.__init__(self, parent, 'metadata', ['prefer_metadata_cover']) + Widget.__init__(self, parent, ['prefer_metadata_cover']) self.db, self.book_id = db, book_id self.cover_changed = False self.cover_data = None diff --git a/src/calibre/gui2/convert/mobi_output.py b/src/calibre/gui2/convert/mobi_output.py index 396078c48a..7eff3b55a2 100644 --- a/src/calibre/gui2/convert/mobi_output.py +++ b/src/calibre/gui2/convert/mobi_output.py @@ -19,10 +19,10 @@ class PluginWidget(Widget, Ui_Form): TITLE = _('MOBI Output') HELP = _('Options specific to')+' MOBI '+_('output') - + COMMIT_NAME = 'mobi_output' def __init__(self, parent, get_option, get_help, db=None, book_id=None): - Widget.__init__(self, parent, 'mobi_output', + Widget.__init__(self, parent, ['prefer_author_sort', 'rescale_images', 'toc_title', 'dont_compress', 'no_inline_toc', 'masthead_font','personal_doc'] ) diff --git a/src/calibre/gui2/convert/page_setup.py b/src/calibre/gui2/convert/page_setup.py index 9faaf04ecc..e824c18b57 100644 --- a/src/calibre/gui2/convert/page_setup.py +++ b/src/calibre/gui2/convert/page_setup.py @@ -33,9 +33,10 @@ class ProfileModel(QAbstractListModel): class PageSetupWidget(Widget, Ui_Form): TITLE = _('Page Setup') + COMMIT_NAME = 'page_setup' def __init__(self, parent, get_option, get_help, db=None, book_id=None): - Widget.__init__(self, parent, 'page_setup', + Widget.__init__(self, parent, ['margin_top', 'margin_left', 'margin_right', 'margin_bottom', 'input_profile', 'output_profile'] ) diff --git a/src/calibre/gui2/convert/pdb_input.py b/src/calibre/gui2/convert/pdb_input.py index 058f589856..6adc49c3ed 100644 --- a/src/calibre/gui2/convert/pdb_input.py +++ b/src/calibre/gui2/convert/pdb_input.py @@ -11,9 +11,10 @@ class PluginWidget(Widget, Ui_Form): TITLE = _('PDB Input') HELP = _('Options specific to')+' PDB '+_('input') + COMMIT_NAME = 'pdb_input' def __init__(self, parent, get_option, get_help, db=None, book_id=None): - Widget.__init__(self, parent, 'pdb_input', + Widget.__init__(self, parent, ['single_line_paras', 'print_formatted_paras']) self.db, self.book_id = db, book_id self.initialize_options(get_option, get_help, db, book_id) diff --git a/src/calibre/gui2/convert/pdb_output.py b/src/calibre/gui2/convert/pdb_output.py index 220311546c..3f9d9ad3dc 100644 --- a/src/calibre/gui2/convert/pdb_output.py +++ b/src/calibre/gui2/convert/pdb_output.py @@ -15,9 +15,10 @@ class PluginWidget(Widget, Ui_Form): TITLE = _('PDB Output') HELP = _('Options specific to')+' PDB '+_('output') + COMMIT_NAME = 'pdb_output' def __init__(self, parent, get_option, get_help, db=None, book_id=None): - Widget.__init__(self, parent, 'pdb_output', ['format', 'inline_toc']) + Widget.__init__(self, parent, ['format', 'inline_toc']) self.db, self.book_id = db, book_id self.initialize_options(get_option, get_help, db, book_id) diff --git a/src/calibre/gui2/convert/pdf_input.py b/src/calibre/gui2/convert/pdf_input.py index a8cacaa5d9..511091ae85 100644 --- a/src/calibre/gui2/convert/pdf_input.py +++ b/src/calibre/gui2/convert/pdf_input.py @@ -11,9 +11,10 @@ class PluginWidget(Widget, Ui_Form): TITLE = _('PDF Input') HELP = _('Options specific to')+' PDF '+_('input') + COMMIT_NAME = 'pdf_input' def __init__(self, parent, get_option, get_help, db=None, book_id=None): - Widget.__init__(self, parent, 'pdf_input', + Widget.__init__(self, parent, ['no_images', 'unwrap_factor']) self.db, self.book_id = db, book_id self.initialize_options(get_option, get_help, db, book_id) diff --git a/src/calibre/gui2/convert/pdf_output.py b/src/calibre/gui2/convert/pdf_output.py index 1544d3f812..de0a34a508 100644 --- a/src/calibre/gui2/convert/pdf_output.py +++ b/src/calibre/gui2/convert/pdf_output.py @@ -16,9 +16,10 @@ class PluginWidget(Widget, Ui_Form): TITLE = _('PDF Output') HELP = _('Options specific to')+' PDF '+_('output') + COMMIT_NAME = 'pdf_output' def __init__(self, parent, get_option, get_help, db=None, book_id=None): - Widget.__init__(self, parent, 'pdf_output', ['paper_size', + Widget.__init__(self, parent, ['paper_size', 'orientation', 'preserve_cover_aspect_ratio']) self.db, self.book_id = db, book_id self.initialize_options(get_option, get_help, db, book_id) diff --git a/src/calibre/gui2/convert/rb_output.py b/src/calibre/gui2/convert/rb_output.py index 5fb214459f..5f8a961899 100644 --- a/src/calibre/gui2/convert/rb_output.py +++ b/src/calibre/gui2/convert/rb_output.py @@ -13,8 +13,9 @@ class PluginWidget(Widget, Ui_Form): TITLE = _('RB Output') HELP = _('Options specific to')+' RB '+_('output') + COMMIT_NAME = 'rb_output' def __init__(self, parent, get_option, get_help, db=None, book_id=None): - Widget.__init__(self, parent, 'rb_output', ['inline_toc']) + Widget.__init__(self, parent, ['inline_toc']) self.db, self.book_id = db, book_id self.initialize_options(get_option, get_help, db, book_id) diff --git a/src/calibre/gui2/convert/structure_detection.py b/src/calibre/gui2/convert/structure_detection.py index bf360f5315..cc1a16c617 100644 --- a/src/calibre/gui2/convert/structure_detection.py +++ b/src/calibre/gui2/convert/structure_detection.py @@ -18,9 +18,10 @@ class StructureDetectionWidget(Widget, Ui_Form): ICON = I('chapters.svg') HELP = _('Fine tune the detection of chapter headings and ' 'other document structure.') + COMMIT_NAME = 'structure_detection' def __init__(self, parent, get_option, get_help, db=None, book_id=None): - Widget.__init__(self, parent, 'structure_detection', + Widget.__init__(self, parent, ['chapter', 'chapter_mark', 'remove_first_image', 'insert_metadata', 'page_breaks_before', diff --git a/src/calibre/gui2/convert/toc.py b/src/calibre/gui2/convert/toc.py index dddce8d3ef..0908aba576 100644 --- a/src/calibre/gui2/convert/toc.py +++ b/src/calibre/gui2/convert/toc.py @@ -16,9 +16,10 @@ class TOCWidget(Widget, Ui_Form): TITLE = _('Table of\nContents') ICON = I('series.svg') HELP = _('Control the creation/conversion of the Table of Contents.') + COMMIT_NAME = 'toc' def __init__(self, parent, get_option, get_help, db=None, book_id=None): - Widget.__init__(self, parent, 'toc', + Widget.__init__(self, parent, ['level1_toc', 'level2_toc', 'level3_toc', 'toc_threshold', 'max_toc_links', 'no_chapters_in_toc', 'use_auto_toc', 'toc_filter', diff --git a/src/calibre/gui2/convert/txt_input.py b/src/calibre/gui2/convert/txt_input.py index f108bdd7d5..006c06dd00 100644 --- a/src/calibre/gui2/convert/txt_input.py +++ b/src/calibre/gui2/convert/txt_input.py @@ -11,9 +11,10 @@ class PluginWidget(Widget, Ui_Form): TITLE = _('TXT Input') HELP = _('Options specific to')+' TXT '+_('input') + COMMIT_NAME = 'txt_input' def __init__(self, parent, get_option, get_help, db=None, book_id=None): - Widget.__init__(self, parent, 'txt_input', + Widget.__init__(self, parent, ['single_line_paras', 'print_formatted_paras', 'markdown', 'markdown_disable_toc', 'preserve_spaces']) self.db, self.book_id = db, book_id diff --git a/src/calibre/gui2/convert/txt_output.py b/src/calibre/gui2/convert/txt_output.py index b79cd5779c..1accd08485 100644 --- a/src/calibre/gui2/convert/txt_output.py +++ b/src/calibre/gui2/convert/txt_output.py @@ -15,9 +15,10 @@ class PluginWidget(Widget, Ui_Form): TITLE = _('TXT Output') HELP = _('Options specific to')+' TXT '+_('output') + COMMIT_NAME = 'txt_output' def __init__(self, parent, get_option, get_help, db=None, book_id=None): - Widget.__init__(self, parent, 'txt_output', + Widget.__init__(self, parent, ['newline', 'max_line_length', 'force_max_line_length', 'inline_toc']) self.db, self.book_id = db, book_id diff --git a/src/calibre/gui2/cover_flow.py b/src/calibre/gui2/cover_flow.py index c72f53201f..88bbae6c41 100644 --- a/src/calibre/gui2/cover_flow.py +++ b/src/calibre/gui2/cover_flow.py @@ -10,10 +10,10 @@ Module to implement the Cover Flow feature import sys, os, time from PyQt4.Qt import QImage, QSizePolicy, QTimer, QDialog, Qt, QSize, \ - QStackedLayout, QLabel + QStackedLayout, QLabel, QByteArray, pyqtSignal from calibre import plugins -from calibre.gui2 import config, available_height, available_width +from calibre.gui2 import config, available_height, available_width, gprefs pictureflow, pictureflowerror = plugins['pictureflow'] @@ -107,6 +107,28 @@ else: DatabaseImages = None FileSystemImages = None +class CBDialog(QDialog): + + closed = pyqtSignal() + + def __init__(self, parent, cover_flow): + QDialog.__init__(self, parent) + self._layout = QStackedLayout() + self.setLayout(self._layout) + self.setWindowTitle(_('Browse by covers')) + self.layout().addWidget(cover_flow) + + geom = gprefs.get('cover_browser_dialog_geometry', bytearray('')) + geom = QByteArray(geom) + if not self.restoreGeometry(geom): + h, w = available_height()-60, int(available_width()/1.5) + self.resize(w, h) + + def closeEvent(self, *args): + geom = bytearray(self.saveGeometry()) + gprefs['cover_browser_dialog_geometry'] = geom + self.closed.emit() + class CoverFlowMixin(object): def __init__(self): @@ -122,13 +144,15 @@ class CoverFlowMixin(object): self.sync_cf_to_listview) self.db_images = DatabaseImages(self.library_view.model()) self.cover_flow.setImages(self.db_images) - self.cover_flow.itemActivated.connect(self.view_specific_book) + self.cover_flow.itemActivated.connect(self.iactions['View'].view_specific_book) else: self.cover_flow = QLabel('

'+_('Cover browser could not be loaded') +'
'+pictureflowerror) self.cover_flow.setWordWrap(True) if config['separate_cover_flow']: self.cb_splitter.button.clicked.connect(self.toggle_cover_browser) + self.cb_splitter.button.set_state_to_show() + self.cb_splitter.action_toggle.triggered.connect(self.toggle_cover_browser) if CoverFlow is not None: self.cover_flow.stop.connect(self.hide_cover_browser) else: @@ -137,7 +161,7 @@ class CoverFlowMixin(object): self.cover_flow.stop.connect(self.cb_splitter.hide_side_pane) self.cb_splitter.button.toggled.connect(self.cover_browser_toggled) - def toggle_cover_browser(self): + def toggle_cover_browser(self, *args): cbd = getattr(self, 'cb_dialog', None) if cbd is not None: self.hide_cover_browser() @@ -171,25 +195,27 @@ class CoverFlowMixin(object): def show_cover_browser(self): - d = QDialog(self) - ah, aw = available_height(), available_width() - d.resize(int(aw/1.5), ah-60) - d._layout = QStackedLayout() - d.setLayout(d._layout) - d.setWindowTitle(_('Browse by covers')) - d.layout().addWidget(self.cover_flow) + d = CBDialog(self, self.cover_flow) + d.addAction(self.cb_splitter.action_toggle) self.cover_flow.setVisible(True) self.cover_flow.setFocus(Qt.OtherFocusReason) d.show() self.cb_splitter.button.set_state_to_hide() - d.finished.connect(self.cb_splitter.button.set_state_to_show) + d.closed.connect(self.cover_browser_closed) self.cb_dialog = d + self.cb_splitter.button.set_state_to_hide() - def hide_cover_browser(self): + def cover_browser_closed(self, *args): + self.cb_dialog = None + self.cb_splitter.button.set_state_to_show() + + def hide_cover_browser(self, *args): cbd = getattr(self, 'cb_dialog', None) if cbd is not None: cbd.accept() self.cb_dialog = None + self.cb_splitter.button.set_state_to_show() + def sync_cf_to_listview(self, current, previous): if self.cover_flow_sync_flag and self.cover_flow.isVisible() and \ diff --git a/src/calibre/gui2/device.py b/src/calibre/gui2/device.py index 789ae68723..a9beb317a2 100644 --- a/src/calibre/gui2/device.py +++ b/src/calibre/gui2/device.py @@ -608,8 +608,6 @@ class DeviceMixin(object): # {{{ self.device_error_dialog = error_dialog(self, _('Error'), _('Error communicating with device'), ' ') self.device_error_dialog.setModal(Qt.NonModal) - self.share_conn_menu.connect_to_folder.connect(self.connect_to_folder) - self.share_conn_menu.connect_to_itunes.connect(self.connect_to_itunes) self.emailer = Emailer() self.emailer.start() self.device_manager = DeviceManager(Dispatcher(self.device_detected), @@ -647,20 +645,18 @@ class DeviceMixin(object): # {{{ def create_device_menu(self): self._sync_menu = DeviceMenu(self) - self.share_conn_menu.build_email_entries(self._sync_menu) - self.action_sync.setMenu(self._sync_menu) + self.iactions['Send To Device'].qaction.setMenu(self._sync_menu) + self.iactions['Connect Share'].build_email_entries() self.connect(self._sync_menu, SIGNAL('sync(PyQt_PyObject, PyQt_PyObject, PyQt_PyObject)'), self.dispatch_sync_event) - self._sync_menu.fetch_annotations.connect(self.fetch_annotations) + self._sync_menu.fetch_annotations.connect( + self.iactions['Fetch Annotations'].fetch_annotations) self._sync_menu.disconnect_mounted_device.connect(self.disconnect_mounted_device) + self.iactions['Connect Share'].set_state(self.device_connected) if self.device_connected: - self.share_conn_menu.connect_to_folder_action.setEnabled(False) - self.share_conn_menu.connect_to_itunes_action.setEnabled(False) self._sync_menu.disconnect_mounted_device_action.setEnabled(True) else: - self.share_conn_menu.connect_to_folder_action.setEnabled(True) - self.share_conn_menu.connect_to_itunes_action.setEnabled(True) self._sync_menu.disconnect_mounted_device_action.setEnabled(False) def device_job_exception(self, job): @@ -696,17 +692,14 @@ class DeviceMixin(object): # {{{ # Device connected {{{ def set_device_menu_items_state(self, connected): + self.iactions['Connect Share'].set_state(connected) if connected: - self.share_conn_menu.connect_to_folder_action.setEnabled(False) - self.share_conn_menu.connect_to_itunes_action.setEnabled(False) self._sync_menu.disconnect_mounted_device_action.setEnabled(True) self._sync_menu.enable_device_actions(True, self.device_manager.device.card_prefix(), self.device_manager.device) self.eject_action.setEnabled(True) else: - self.share_conn_menu.connect_to_folder_action.setEnabled(True) - self.share_conn_menu.connect_to_itunes_action.setEnabled(True) self._sync_menu.disconnect_mounted_device_action.setEnabled(False) self._sync_menu.enable_device_actions(False) self.eject_action.setEnabled(False) @@ -791,8 +784,9 @@ class DeviceMixin(object): # {{{ self.device_job_exception(job) return - if self.delete_memory.has_key(job): - paths, model = self.delete_memory.pop(job) + dm = self.iactions['Remove Books'].delete_memory + if dm.has_key(job): + paths, model = dm.pop(job) self.device_manager.remove_books_from_metadata(paths, self.booklists()) model.paths_deleted(paths) @@ -924,7 +918,7 @@ class DeviceMixin(object): # {{{ _('Auto convert the following books before sending via ' 'email?'), det_msg=autos, buttons=QMessageBox.Yes|QMessageBox.Cancel): - self.auto_convert_mail(to, fmts, delete_from_library, auto, format) + self.iactions['Convert Books'].auto_convert_mail(to, fmts, delete_from_library, auto, format) if bad: bad = '\n'.join('%s'%(i,) for i in bad) @@ -1026,7 +1020,7 @@ class DeviceMixin(object): # {{{ _('Auto convert the following books before uploading to ' 'the device?'), det_msg=autos, buttons=QMessageBox.Yes|QMessageBox.Cancel): - self.auto_convert_catalogs(auto, format) + self.iactions['Convert Books'].auto_convert_catalogs(auto, format) files = [f for f in files if f is not None] if not files: dynamic.set('catalogs_to_be_synced', set([])) @@ -1088,7 +1082,7 @@ class DeviceMixin(object): # {{{ _('Auto convert the following books before uploading to ' 'the device?'), det_msg=autos, buttons=QMessageBox.Yes|QMessageBox.Cancel): - self.auto_convert_news(auto, format) + self.iactions['Convert Books'].auto_convert_news(auto, format) files = [f for f in files if f is not None] for f in files: f.deleted_after_upload = del_on_upload @@ -1207,7 +1201,7 @@ class DeviceMixin(object): # {{{ _('Auto convert the following books before uploading to ' 'the device?'), det_msg=autos, buttons=QMessageBox.Yes|QMessageBox.Cancel): - self.auto_convert(auto, on_card, format) + self.iactions['Convert Books'].auto_convert(auto, on_card, format) if bad: bad = '\n'.join('%s'%(i,) for i in bad) diff --git a/src/calibre/gui2/dialogs/book_info.py b/src/calibre/gui2/dialogs/book_info.py index 9770ef864f..e085dcc3e2 100644 --- a/src/calibre/gui2/dialogs/book_info.py +++ b/src/calibre/gui2/dialogs/book_info.py @@ -48,11 +48,11 @@ class BookInfo(QDialog, Ui_BookInfo): self.refresh(row) def open_book_path(self, path): - if os.sep in unicode(path): + path = unicode(path) + if os.sep in path: open_local_file(path) else: - format = unicode(path) - path = self.view.model().db.format_abspath(self.current_row, format) + path = self.view.model().db.format_abspath(self.current_row, path) if path is not None: open_local_file(path) diff --git a/src/calibre/gui2/dialogs/book_info.ui b/src/calibre/gui2/dialogs/book_info.ui index 02dae12281..39f9abf3c5 100644 --- a/src/calibre/gui2/dialogs/book_info.ui +++ b/src/calibre/gui2/dialogs/book_info.ui @@ -57,7 +57,7 @@ - Fit &cover to view + Fit &cover within view diff --git a/src/calibre/gui2/dialogs/choose_library.py b/src/calibre/gui2/dialogs/choose_library.py index bf1741cd87..32d45c6043 100644 --- a/src/calibre/gui2/dialogs/choose_library.py +++ b/src/calibre/gui2/dialogs/choose_library.py @@ -80,8 +80,10 @@ class ChooseLibrary(QDialog, Ui_Dialog): return error_dialog(self, _('No location'), _('No location selected'), show=True) loc = os.path.abspath(text) - if not loc or not os.path.exists(loc) or not self.check_action(action, - loc): + if not loc or not os.path.exists(loc) or not os.path.isdir(loc): + return error_dialog(self, _('Bad location'), + _('%s is not an existing folder')%loc, show=True) + if not self.check_action(action, loc): return QDialog.accept(self) self.location.save_history() diff --git a/src/calibre/gui2/dialogs/config/__init__.py b/src/calibre/gui2/dialogs/config/__init__.py index 3073a54774..20c7843aa8 100644 --- a/src/calibre/gui2/dialogs/config/__init__.py +++ b/src/calibre/gui2/dialogs/config/__init__.py @@ -29,6 +29,7 @@ from calibre.customize.ui import initialized_plugins, is_disabled, enable_plugin input_format_plugins, \ output_format_plugins, available_output_formats from calibre.utils.smtp import config as smtp_prefs +from calibre.gui2.convert import config_widget_for_input_plugin from calibre.gui2.convert.look_and_feel import LookAndFeelWidget from calibre.gui2.convert.page_setup import PageSetupWidget from calibre.gui2.convert.structure_detection import StructureDetectionWidget @@ -36,6 +37,7 @@ from calibre.ebooks.conversion.plumber import Plumber from calibre.utils.logging import Log from calibre.gui2.convert.toc import TOCWidget + class ConfigTabs(QTabWidget): def __init__(self, parent): @@ -58,15 +60,10 @@ class ConfigTabs(QTabWidget): self.widgets = [lf, ps, sd, toc] for plugin in input_format_plugins(): - name = plugin.name.lower().replace(' ', '_') - try: - input_widget = __import__('calibre.gui2.convert.'+name, - fromlist=[1]) - pw = input_widget.PluginWidget + pw = config_widget_for_input_plugin(plugin) + if pw is not None: pw.ICON = I('forward.svg') self.widgets.append(widget_factory(pw)) - except ImportError: - continue for plugin in output_format_plugins(): name = plugin.name.lower().replace(' ', '_') diff --git a/src/calibre/gui2/dialogs/metadata_single.py b/src/calibre/gui2/dialogs/metadata_single.py index 6cb351898b..50223923c1 100644 --- a/src/calibre/gui2/dialogs/metadata_single.py +++ b/src/calibre/gui2/dialogs/metadata_single.py @@ -12,7 +12,7 @@ import time import traceback from PyQt4.Qt import SIGNAL, QObject, Qt, QTimer, QThread, QDate, \ - QPixmap, QListWidgetItem, QDialog + QPixmap, QListWidgetItem, QDialog, pyqtSignal from calibre.gui2 import error_dialog, file_icon_provider, dynamic, \ choose_files, choose_images, ResizableDialog, \ @@ -99,6 +99,7 @@ class Format(QListWidgetItem): class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): COVER_FETCH_TIMEOUT = 240 # seconds + view_format = pyqtSignal(object) def do_reset_cover(self, *args): pix = QPixmap(I('default_cover.svg')) @@ -474,7 +475,7 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): def show_format(self, item, *args): fmt = item.ext - self.emit(SIGNAL('view_format(PyQt_PyObject)'), fmt) + self.view_format.emit(fmt) def deduce_author_sort(self): au = unicode(self.authors.text()) diff --git a/src/calibre/gui2/dialogs/progress.py b/src/calibre/gui2/dialogs/progress.py index 91f6edd252..40404050ec 100644 --- a/src/calibre/gui2/dialogs/progress.py +++ b/src/calibre/gui2/dialogs/progress.py @@ -5,12 +5,14 @@ __docformat__ = 'restructuredtext en' '''''' -from PyQt4.Qt import QDialog, SIGNAL, Qt +from PyQt4.Qt import QDialog, pyqtSignal, Qt from calibre.gui2.dialogs.progress_ui import Ui_Dialog class ProgressDialog(QDialog, Ui_Dialog): + canceled_signal = pyqtSignal() + def __init__(self, title, msg='', min=0, max=99, parent=None): QDialog.__init__(self, parent) self.setupUi(self) @@ -23,7 +25,7 @@ class ProgressDialog(QDialog, Ui_Dialog): self.bar.setValue(min) self.canceled = False - self.connect(self.button_box, SIGNAL('rejected()'), self._canceled) + self.button_box.rejected.connect(self._canceled) def set_msg(self, msg=''): self.message.setText(msg) @@ -50,7 +52,7 @@ class ProgressDialog(QDialog, Ui_Dialog): self.canceled = True self.button_box.setDisabled(True) self.title.setText(_('Aborting...')) - self.emit(SIGNAL('canceled()')) + self.canceled_signal.emit() def keyPressEvent(self, ev): if ev.key() == Qt.Key_Escape: diff --git a/src/calibre/gui2/init.py b/src/calibre/gui2/init.py index a3ae5b77aa..73de77b13b 100644 --- a/src/calibre/gui2/init.py +++ b/src/calibre/gui2/init.py @@ -7,7 +7,7 @@ __docformat__ = 'restructuredtext en' import functools, sys, os -from PyQt4.Qt import QMenu, Qt, QStackedWidget, \ +from PyQt4.Qt import Qt, QStackedWidget, QMenu, \ QSize, QSizePolicy, QStatusBar, QLabel, QFont from calibre.utils.config import prefs @@ -27,69 +27,35 @@ def partial(*args, **kwargs): _keep_refs.append(ans) return ans +LIBRARY_CONTEXT_MENU = ( + 'Edit Metadata', 'Send To Device', 'Save To Disk', 'Connect Share', None, + 'Convert Books', 'View', 'Open Folder', 'Show Book Details', None, + 'Remove Books', + ) + +DEVICE_CONTEXT_MENU = ('View', 'Save To Disk', None, 'Remove Books', None, + 'Add To Library', 'Edit Collections', + ) + class LibraryViewMixin(object): # {{{ def __init__(self, db): - similar_menu = QMenu(_('Similar books...')) - similar_menu.addAction(self.action_books_by_same_author) - similar_menu.addAction(self.action_books_in_this_series) - similar_menu.addAction(self.action_books_with_the_same_tags) - similar_menu.addAction(self.action_books_by_this_publisher) - self.action_books_by_same_author.setShortcut(Qt.ALT + Qt.Key_A) - self.action_books_in_this_series.setShortcut(Qt.ALT + Qt.Key_S) - self.action_books_by_this_publisher.setShortcut(Qt.ALT + Qt.Key_P) - self.action_books_with_the_same_tags.setShortcut(Qt.ALT+Qt.Key_T) - self.addAction(self.action_books_by_same_author) - self.addAction(self.action_books_by_this_publisher) - self.addAction(self.action_books_in_this_series) - self.addAction(self.action_books_with_the_same_tags) - self.similar_menu = similar_menu - self.action_books_by_same_author.triggered.connect( - partial(self.show_similar_books, 'authors')) - self.action_books_in_this_series.triggered.connect( - partial(self.show_similar_books, 'series')) - self.action_books_with_the_same_tags.triggered.connect( - partial(self.show_similar_books, 'tag')) - self.action_books_by_this_publisher.triggered.connect( - partial(self.show_similar_books, 'publisher')) + lm = QMenu(self) + def populate_menu(m, items): + for what in items: + if what is None: + m.addSeparator() + elif what in self.iactions: + m.addAction(self.iactions[what].qaction) + populate_menu(lm, LIBRARY_CONTEXT_MENU) + dm = QMenu(self) + populate_menu(dm, DEVICE_CONTEXT_MENU) + ec = self.iactions['Edit Collections'].qaction + self.library_view.set_context_menu(lm, ec) + for v in (self.memory_view, self.card_a_view, self.card_b_view): + v.set_context_menu(dm, ec) - self.library_view.set_context_menu(self.action_edit, self.action_sync, - self.action_convert, self.action_view, - self.action_save, - self.action_open_containing_folder, - self.action_show_book_details, - self.action_del, - self.action_conn_share, - add_to_library = None, - edit_device_collections=None, - similar_menu=similar_menu) - add_to_library = (_('Add books to library'), self.add_books_from_device) - - edit_device_collections = (_('Manage collections'), - partial(self.edit_device_collections, oncard=None)) - self.memory_view.set_context_menu(None, None, None, - self.action_view, self.action_save, None, None, - self.action_del, None, - add_to_library=add_to_library, - edit_device_collections=edit_device_collections) - - edit_device_collections = (_('Manage collections'), - partial(self.edit_device_collections, oncard='carda')) - self.card_a_view.set_context_menu(None, None, None, - self.action_view, self.action_save, None, None, - self.action_del, None, - add_to_library=add_to_library, - edit_device_collections=edit_device_collections) - - edit_device_collections = (_('Manage collections'), - partial(self.edit_device_collections, oncard='cardb')) - self.card_b_view.set_context_menu(None, None, None, - self.action_view, self.action_save, None, None, - self.action_del, None, - add_to_library=add_to_library, - edit_device_collections=edit_device_collections) - - self.library_view.files_dropped.connect(self.files_dropped, type=Qt.QueuedConnection) + self.library_view.files_dropped.connect(self.iactions['Add Books'].files_dropped, type=Qt.QueuedConnection) for func, args in [ ('connect_to_search_box', (self.search, self.search_done)), @@ -116,37 +82,10 @@ class LibraryViewMixin(object): # {{{ for view in ('library', 'memory', 'card_a', 'card_b'): view = getattr(self, view+'_view') - view.verticalHeader().sectionDoubleClicked.connect(self.view_specific_book) + view.verticalHeader().sectionDoubleClicked.connect(self.iactions['View'].view_specific_book) - def show_similar_books(self, type, *args): - search, join = [], ' ' - idx = self.library_view.currentIndex() - if not idx.isValid(): - return - row = idx.row() - if type == 'series': - series = idx.model().db.series(row) - if series: - search = ['series:"'+series+'"'] - elif type == 'publisher': - publisher = idx.model().db.publisher(row) - if publisher: - search = ['publisher:"'+publisher+'"'] - elif type == 'tag': - tags = idx.model().db.tags(row) - if tags: - search = ['tag:"='+t+'"' for t in tags.split(',')] - elif type in ('author', 'authors'): - authors = idx.model().db.authors(row) - if authors: - search = ['author:"='+a.strip().replace('|', ',')+'"' \ - for a in authors.split(',')] - join = ' or ' - if search: - self.search.set_search_string(join.join(search)) - def search_done(self, view, ok): if view is self.current_view(): self.search.search_done(ok) @@ -166,7 +105,8 @@ class LibraryWidget(Splitter): # {{{ I('cover_flow.svg'), orientation=orientation, parent=parent, connect_button=not config['separate_cover_flow'], - side_index=idx, initial_side_size=size, initial_show=False) + side_index=idx, initial_side_size=size, initial_show=False, + shortcut=_('Shift+Alt+B')) parent.library_view = BooksView(parent) parent.library_view.setObjectName('library_view') self.addWidget(parent.library_view) @@ -181,7 +121,8 @@ class Stack(QStackedWidget): # {{{ self.tb_widget = TagBrowserWidget(parent) parent.tb_splitter = Splitter('tag_browser_splitter', _('Tag Browser'), I('tags.svg'), - parent=parent, side_index=0, initial_side_size=200) + parent=parent, side_index=0, initial_side_size=200, + shortcut=_('Shift+Alt+T')) parent.tb_splitter.addWidget(self.tb_widget) parent.tb_splitter.addWidget(parent.cb_splitter) parent.tb_splitter.setCollapsible(parent.tb_splitter.other_index, False) @@ -274,7 +215,8 @@ class LayoutMixin(object): # {{{ self.stack = Stack(self) self.bd_splitter = Splitter('book_details_splitter', _('Book Details'), I('book.svg'), - orientation=Qt.Vertical, parent=self, side_index=1) + orientation=Qt.Vertical, parent=self, side_index=1, + shortcut=_('Alt+D')) self.bd_splitter.addWidget(self.stack) self.bd_splitter.addWidget(self.book_details) self.bd_splitter.setCollapsible(self.bd_splitter.other_index, False) @@ -283,7 +225,8 @@ class LayoutMixin(object): # {{{ else: # wide {{{ self.bd_splitter = Splitter('book_details_splitter', _('Book Details'), I('book.svg'), initial_side_size=200, - orientation=Qt.Horizontal, parent=self, side_index=1) + orientation=Qt.Horizontal, parent=self, side_index=1, + shortcut=_('Shift+Alt+D')) self.stack = Stack(self) self.bd_splitter.addWidget(self.stack) self.book_details = BookDetails(True, self) @@ -304,10 +247,10 @@ class LayoutMixin(object): # {{{ def finalize_layout(self): self.status_bar.initialize(self.system_tray_icon) - self.book_details.show_book_info.connect(self.show_book_info) - self.book_details.files_dropped.connect(self.files_dropped_on_book) - self.book_details.open_containing_folder.connect(self.view_folder_for_id) - self.book_details.view_specific_format.connect(self.view_format_by_id) + self.book_details.show_book_info.connect(self.iactions['Show Book Details'].show_book_info) + self.book_details.files_dropped.connect(self.iactions['Add Books'].files_dropped_on_book) + self.book_details.open_containing_folder.connect(self.iactions['View'].view_folder_for_id) + self.book_details.view_specific_format.connect(self.iactions['View'].view_format_by_id) m = self.library_view.model() if m.rowCount(None) > 0: diff --git a/src/calibre/gui2/jobs.py b/src/calibre/gui2/jobs.py index d512409d25..fd23234c8a 100644 --- a/src/calibre/gui2/jobs.py +++ b/src/calibre/gui2/jobs.py @@ -14,7 +14,8 @@ from Queue import Empty, Queue from PyQt4.Qt import QAbstractTableModel, QVariant, QModelIndex, Qt, \ QTimer, pyqtSignal, QIcon, QDialog, QAbstractItemDelegate, QApplication, \ QSize, QStyleOptionProgressBarV2, QString, QStyle, QToolTip, QFrame, \ - QHBoxLayout, QVBoxLayout, QSizePolicy, QLabel, QCoreApplication + QHBoxLayout, QVBoxLayout, QSizePolicy, QLabel, QCoreApplication, QAction, \ + QByteArray from calibre.utils.ipc.server import Server from calibre.utils.ipc.job import ParallelJob @@ -175,6 +176,7 @@ class JobManager(QAbstractTableModel): self.jobs.append(job) self.jobs.sort() self.job_added.emit(len(self.unfinished_jobs())) + self.layoutChanged.emit() def done_jobs(self): return [j for j in self.jobs if j.is_finished] @@ -198,8 +200,9 @@ class JobManager(QAbstractTableModel): return False def run_job(self, done, name, args=[], kwargs={}, - description=''): + description='', core_usage=1): job = ParallelJob(name, description, done, args=args, kwargs=kwargs) + job.core_usage = core_usage self.add_job(job) self.server.add_job(job) return job @@ -279,6 +282,7 @@ class JobsButton(QFrame): self.pi = ProgressIndicator(self, size) self._jobs = QLabel(''+_('Jobs:')+' 0') self._jobs.mouseReleaseEvent = self.mouseReleaseEvent + self.shortcut = _('Shift+Alt+J') if horizontal: self.setLayout(QHBoxLayout()) @@ -295,15 +299,24 @@ class JobsButton(QFrame): self.layout().setMargin(0) self._jobs.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum) self.setCursor(Qt.PointingHandCursor) - self.setToolTip(_('Click to see list of active jobs.')) + b = _('Click to see list of jobs') + self.setToolTip(b + u' (%s)'%self.shortcut) + self.action_toggle = QAction(b, parent) + parent.addAction(self.action_toggle) + self.action_toggle.setShortcut(self.shortcut) + self.action_toggle.triggered.connect(self.toggle) def initialize(self, jobs_dialog, job_manager): self.jobs_dialog = jobs_dialog job_manager.job_added.connect(self.job_added) job_manager.job_done.connect(self.job_done) + self.jobs_dialog.addAction(self.action_toggle) def mouseReleaseEvent(self, event): + self.toggle() + + def toggle(self, *args): if self.jobs_dialog.isVisible(): self.jobs_dialog.hide() else: @@ -363,12 +376,26 @@ class JobsDialog(QDialog, Ui_JobsDialog): self.jobs_view.setItemDelegateForColumn(2, self.pb_delegate) self.jobs_view.doubleClicked.connect(self.show_job_details) self.jobs_view.horizontalHeader().setMovable(True) - state = gprefs.get('jobs view column layout', None) - if state is not None: - try: - self.jobs_view.horizontalHeader().restoreState(bytes(state)) - except: - pass + self.restore_state() + + def restore_state(self): + try: + geom = gprefs.get('jobs_dialog_geometry', bytearray('')) + self.restoreGeometry(QByteArray(geom)) + state = gprefs.get('jobs view column layout', bytearray('')) + self.jobs_view.horizontalHeader().restoreState(QByteArray(state)) + except: + pass + + def save_state(self): + try: + state = bytearray(self.jobs_view.horizontalHeader().saveState()) + gprefs['jobs view column layout'] = state + geom = bytearray(self.saveGeometry()) + gprefs['jobs_dialog_geometry'] = geom + except: + pass + def show_job_details(self, index): row = index.row() @@ -392,9 +419,13 @@ class JobsDialog(QDialog, Ui_JobsDialog): self.model.kill_all_jobs() def closeEvent(self, e): - try: - state = bytearray(self.jobs_view.horizontalHeader().saveState()) - gprefs['jobs view column layout'] = state - except: - pass - e.accept() + self.save_state() + return QDialog.closeEvent(self, e) + + def show(self, *args): + self.restore_state() + return QDialog.show(self, *args) + + def hide(self, *args): + self.save_state() + return QDialog.hide(self, *args) diff --git a/src/calibre/gui2/layout.py b/src/calibre/gui2/layout.py index 8a919c59f5..6c87fe9da3 100644 --- a/src/calibre/gui2/layout.py +++ b/src/calibre/gui2/layout.py @@ -5,42 +5,32 @@ __license__ = 'GPL v3' __copyright__ = '2010, Kovid Goyal ' __docformat__ = 'restructuredtext en' -from operator import attrgetter from functools import partial -from PyQt4.Qt import QIcon, Qt, QWidget, QAction, QToolBar, QSize, \ +from PyQt4.Qt import QIcon, Qt, QWidget, QToolBar, QSize, \ pyqtSignal, QToolButton, \ QObject, QVBoxLayout, QSizePolicy, QLabel, QHBoxLayout, QActionGroup, \ - QMenu, QUrl + QMenu -from calibre.constants import __appname__, isosx +from calibre.constants import __appname__ from calibre.gui2.search_box import SearchBox2, SavedSearchBox from calibre.gui2.throbber import ThrobbingButton -from calibre.gui2 import config, open_url, gprefs +from calibre.gui2 import config, gprefs from calibre.gui2.widgets import ComboBoxWithHelp from calibre import human_readable -from calibre.utils.config import prefs -from calibre.ebooks import BOOK_EXTENSIONS -from calibre.gui2.dialogs.scheduler import Scheduler -from calibre.utils.smtp import config as email_config +TOOLBAR_NO_DEVICE = ( + 'Add Books', 'Edit Metadata', None, 'Convert Books', 'View', None, + 'Choose Library', 'Donate', None, 'Fetch News', 'Save To Disk', + 'Connect Share', None, 'Remove Books', None, 'Help', 'Preferences', + ) -class SaveMenu(QMenu): # {{{ - - save_fmt = pyqtSignal(object) - - def __init__(self, parent): - QMenu.__init__(self, _('Save single format to disk...'), parent) - for ext in sorted(BOOK_EXTENSIONS): - action = self.addAction(ext.upper()) - setattr(self, 'do_'+ext, partial(self.do, ext)) - action.triggered.connect( - getattr(self, 'do_'+ext)) - - def do(self, ext, *args): - self.save_fmt.emit(ext) - -# }}} +TOOLBAR_DEVICE = ( + 'Add Books', 'Edit Metadata', None, 'Convert Books', 'View', + 'Send To Device', None, None, 'Location Manager', None, None, + 'Fetch News', 'Save To Disk', 'Connect Share', None, + 'Remove Books', None, 'Help', 'Preferences', + ) class LocationManager(QObject): # {{{ @@ -221,8 +211,9 @@ class SearchBar(QWidget): # {{{ class ToolBar(QToolBar): # {{{ - def __init__(self, actions, donate, location_manager, parent=None): + def __init__(self, donate, location_manager, parent): QToolBar.__init__(self, parent) + self.gui = parent self.setContextMenuPolicy(Qt.PreventContextMenu) self.setMovable(False) self.setFloatable(False) @@ -232,7 +223,6 @@ class ToolBar(QToolBar): # {{{ self.donate = donate self.apply_settings() - self.all_actions = actions self.location_manager = location_manager self.location_manager.locations_changed.connect(self.build_bar) self.d_widget = QWidget() @@ -258,51 +248,30 @@ class ToolBar(QToolBar): # {{{ def build_bar(self): showing_device = self.location_manager.has_device - order_field = 'device' if showing_device else 'normal' - o = attrgetter(order_field+'_order') - sepvals = [2] if showing_device else [1] - sepvals += [3] - actions = [x for x in self.all_actions if o(x) > -1] - actions.sort(cmp=lambda x,y : cmp(o(x), o(y))) + actions = TOOLBAR_DEVICE if showing_device else TOOLBAR_NO_DEVICE + self.clear() + for what in actions: + if what is None: + self.addSeparator() + elif what == 'Location Manager': + for ac in self.location_manager.available_actions: + self.addAction(ac) + self.setup_tool_button(ac, QToolButton.MenuButtonPopup) + elif what == 'Donate' and config['show_donate_button']: + self.addWidget(self.d_widget) + elif what in self.gui.iactions: + action = self.gui.iactions[what] + self.addAction(action.qaction) + self.setup_tool_button(action.qaction, action.popup_type) - def setup_tool_button(ac): - ch = self.widgetForAction(ac) - ch.setCursor(Qt.PointingHandCursor) - ch.setAutoRaise(True) - if ac.menu() is not None: - name = getattr(ac, 'action_name', None) - ch.setPopupMode(ch.InstantPopup if name == 'conn_share' - else ch.MenuButtonPopup) - - for x in actions: - self.addAction(x) - setup_tool_button(x) - - if x.action_name == 'choose_library': - self.choose_action = x - if showing_device: - self.addSeparator() - for ac in self.location_manager.available_actions: - self.addAction(ac) - setup_tool_button(ac) - self.addSeparator() - self.location_manager.location_library.trigger() - elif config['show_donate_button']: - self.addWidget(self.d_widget) - - for x in actions: - if x.separator_before in sepvals: - self.insertSeparator(x) - - self.choose_action.setVisible(not showing_device) - - def count_changed(self, new_count): - text = _('%d books')%new_count - a = self.choose_action - a.setText(text) - a.setToolTip(_('Choose calibre library to work with') + '\n\n' + text) + def setup_tool_button(self, ac, menu_mode=None): + ch = self.widgetForAction(ac) + ch.setCursor(Qt.PointingHandCursor) + ch.setAutoRaise(True) + if ac.menu() is not None and menu_mode is not None: + ch.setPopupMode(menu_mode) def resizeEvent(self, ev): QToolBar.resizeEvent(self, ev) @@ -321,84 +290,9 @@ class ToolBar(QToolBar): # {{{ # }}} -class Action(QAction): - pass - -class ShareConnMenu(QMenu): # {{{ - - connect_to_folder = pyqtSignal() - connect_to_itunes = pyqtSignal() - config_email = pyqtSignal() - toggle_server = pyqtSignal() - - def __init__(self, parent=None): - QMenu.__init__(self, parent) - mitem = self.addAction(QIcon(I('devices/folder.svg')), _('Connect to folder')) - mitem.setEnabled(True) - mitem.triggered.connect(lambda x : self.connect_to_folder.emit()) - self.connect_to_folder_action = mitem - mitem = self.addAction(QIcon(I('devices/itunes.png')), - _('Connect to iTunes')) - mitem.setEnabled(True) - mitem.triggered.connect(lambda x : self.connect_to_itunes.emit()) - self.connect_to_itunes_action = mitem - self.addSeparator() - self.toggle_server_action = \ - self.addAction(QIcon(I('network-server.svg')), - _('Start Content Server')) - self.toggle_server_action.triggered.connect(lambda x: - self.toggle_server.emit()) - self.addSeparator() - - self.email_actions = [] - - def server_state_changed(self, running): - text = _('Start Content Server') - if running: - text = _('Stop Content Server') - self.toggle_server_action.setText(text) - - def build_email_entries(self, sync_menu): - from calibre.gui2.device import DeviceAction - for ac in self.email_actions: - self.removeAction(ac) - self.email_actions = [] - self.memory = [] - opts = email_config().parse() - if opts.accounts: - self.email_to_menu = QMenu(_('Email to')+'...', self) - keys = sorted(opts.accounts.keys()) - for account in keys: - formats, auto, default = opts.accounts[account] - dest = 'mail:'+account+';'+formats - action1 = DeviceAction(dest, False, False, I('mail.svg'), - _('Email to')+' '+account) - action2 = DeviceAction(dest, True, False, I('mail.svg'), - _('Email to')+' '+account+ _(' and delete from library')) - map(self.email_to_menu.addAction, (action1, action2)) - map(self.memory.append, (action1, action2)) - if default: - map(self.addAction, (action1, action2)) - map(self.email_actions.append, (action1, action2)) - self.email_to_menu.addSeparator() - action1.a_s.connect(sync_menu.action_triggered) - action2.a_s.connect(sync_menu.action_triggered) - ac = self.addMenu(self.email_to_menu) - self.email_actions.append(ac) - else: - ac = self.addAction(_('Setup email based sharing of books')) - self.email_actions.append(ac) - ac.triggered.connect(self.setup_email) - - def setup_email(self, *args): - self.config_email.emit() - -# }}} - class MainWindowMixin(object): def __init__(self, db): - self.device_connected = None self.setObjectName('MainWindow') self.setWindowIcon(QIcon(I('library.png'))) self.setWindowTitle(__appname__) @@ -412,230 +306,18 @@ class MainWindowMixin(object): self.donate_button = ThrobbingButton(self.centralwidget) self.location_manager = LocationManager(self) - self.init_scheduler(db) - all_actions = self.setup_actions() + self.iactions['Fetch News'].init_scheduler(db) self.search_bar = SearchBar(self) - self.tool_bar = ToolBar(all_actions, self.donate_button, + self.tool_bar = ToolBar(self.donate_button, self.location_manager, self) self.addToolBar(Qt.TopToolBarArea, self.tool_bar) - self.tool_bar.choose_action.triggered.connect(self.choose_library) l = self.centralwidget.layout() l.addWidget(self.search_bar) - def init_scheduler(self, db): - self.scheduler = Scheduler(self, db) - self.scheduler.start_recipe_fetch.connect( - self.download_scheduled_recipe, type=Qt.QueuedConnection) - - def read_toolbar_settings(self): - pass - - def choose_library(self, *args): - from calibre.gui2.dialogs.choose_library import ChooseLibrary - db = self.library_view.model().db - c = ChooseLibrary(db, self.library_moved, self) - c.exec_() - - def setup_actions(self): # {{{ - all_actions = [] - - def ac(normal_order, device_order, separator_before, - name, text, icon, shortcut=None, tooltip=None): - action = Action(QIcon(I(icon)), text, self) - action.normal_order = normal_order - action.device_order = device_order - action.separator_before = separator_before - action.action_name = name - text = tooltip if tooltip else text - action.setToolTip(text) - action.setStatusTip(text) - action.setWhatsThis(text) - action.setAutoRepeat(False) - action.setObjectName('action_'+name) - if shortcut: - action.setShortcut(shortcut) - setattr(self, 'action_'+name, action) - all_actions.append(action) - - ac(0, 0, 0, 'add', _('Add books'), 'add_book.svg', _('A')) - ac(1, 1, 0, 'edit', _('Edit metadata'), 'edit_input.svg', _('E')) - ac(2, 2, 3, 'convert', _('Convert books'), 'convert.svg', _('C')) - ac(3, 3, 0, 'view', _('View'), 'view.svg', _('V')) - ac(-1, 4, 0, 'sync', _('Send to device'), 'sync.svg') - ac(5, 5, 3, 'choose_library', _('%d books')%0, 'lt.png', - tooltip=_('Choose calibre library to work with')) - ac(6, 6, 3, 'news', _('Fetch news'), 'news.svg', _('F')) - ac(7, 7, 0, 'save', _('Save to disk'), 'save.svg', _('S')) - ac(8, 8, 0, 'conn_share', _('Connect/share'), 'connect_share.svg') - ac(9, 9, 3, 'del', _('Remove books'), 'trash.svg', _('Del')) - ac(10, 10, 3, 'help', _('Help'), 'help.svg', _('F1'), _("Browse the calibre User Manual")) - ac(11, 11, 0, 'preferences', _('Preferences'), 'config.svg', _('Ctrl+P')) - - ac(-1, -1, 0, 'merge', _('Merge book records'), 'merge_books.svg', _('M')) - ac(-1, -1, 0, 'open_containing_folder', _('Open containing folder'), - 'document_open.svg') - ac(-1, -1, 0, 'show_book_details', _('Show book details'), - 'dialog_information.svg') - ac(-1, -1, 0, 'books_by_same_author', _('Books by same author'), - 'user_profile.svg') - ac(-1, -1, 0, 'books_in_this_series', _('Books in this series'), - 'books_in_series.svg') - ac(-1, -1, 0, 'books_by_this_publisher', _('Books by this publisher'), - 'publisher.png') - ac(-1, -1, 0, 'books_with_the_same_tags', _('Books with the same tags'), - 'tags.svg') - - self.action_news.setMenu(self.scheduler.news_menu) - self.action_news.triggered.connect( - self.scheduler.show_dialog) - self.share_conn_menu = ShareConnMenu(self) - self.share_conn_menu.toggle_server.connect(self.toggle_content_server) - self.share_conn_menu.config_email.connect(partial(self.do_config, - initial_category='email')) - self.action_conn_share.setMenu(self.share_conn_menu) - - self.action_help.triggered.connect(self.show_help) - md = QMenu() - md.addAction(_('Edit metadata individually'), - partial(self.edit_metadata, False, bulk=False)) - md.addSeparator() - md.addAction(_('Edit metadata in bulk'), - partial(self.edit_metadata, False, bulk=True)) - md.addSeparator() - md.addAction(_('Download metadata and covers'), - partial(self.download_metadata, False, covers=True), - Qt.ControlModifier+Qt.Key_D) - md.addAction(_('Download only metadata'), - partial(self.download_metadata, False, covers=False)) - md.addAction(_('Download only covers'), - partial(self.download_metadata, False, covers=True, - set_metadata=False, set_social_metadata=False)) - md.addAction(_('Download only social metadata'), - partial(self.download_metadata, False, covers=False, - set_metadata=False, set_social_metadata=True)) - self.metadata_menu = md - - mb = QMenu() - mb.addAction(_('Merge into first selected book - delete others'), - self.merge_books) - mb.addSeparator() - mb.addAction(_('Merge into first selected book - keep others'), - partial(self.merge_books, safe_merge=True)) - self.merge_menu = mb - self.action_merge.setMenu(mb) - md.addSeparator() - md.addAction(self.action_merge) - - self.add_menu = QMenu() - self.add_menu.addAction(_('Add books from a single directory'), - self.add_books) - self.add_menu.addAction(_('Add books from directories, including ' - 'sub-directories (One book per directory, assumes every ebook ' - 'file is the same book in a different format)'), - self.add_recursive_single) - self.add_menu.addAction(_('Add books from directories, including ' - 'sub directories (Multiple books per directory, assumes every ' - 'ebook file is a different book)'), self.add_recursive_multiple) - self.add_menu.addSeparator() - self.add_menu.addAction(_('Add Empty book. (Book entry with no ' - 'formats)'), self.add_empty) - self.add_menu.addAction(_('Add from ISBN'), self.add_from_isbn) - self.action_add.setMenu(self.add_menu) - self.action_add.triggered.connect(self.add_books) - self.action_del.triggered.connect(self.delete_books) - self.action_edit.triggered.connect(self.edit_metadata) - self.action_merge.triggered.connect(self.merge_books) - - self.action_save.triggered.connect(self.save_to_disk) - self.save_menu = QMenu() - self.save_menu.addAction(_('Save to disk'), partial(self.save_to_disk, - False)) - self.save_menu.addAction(_('Save to disk in a single directory'), - partial(self.save_to_single_dir, False)) - self.save_menu.addAction(_('Save only %s format to disk')% - prefs['output_format'].upper(), - partial(self.save_single_format_to_disk, False)) - self.save_menu.addAction( - _('Save only %s format to disk in a single directory')% - prefs['output_format'].upper(), - partial(self.save_single_fmt_to_single_dir, False)) - self.save_sub_menu = SaveMenu(self) - self.save_menu.addMenu(self.save_sub_menu) - self.save_sub_menu.save_fmt.connect(self.save_specific_format_disk) - - self.action_view.triggered.connect(self.view_book) - self.view_menu = QMenu() - self.view_menu.addAction(_('View'), partial(self.view_book, False)) - ac = self.view_menu.addAction(_('View specific format')) - ac.setShortcut((Qt.ControlModifier if isosx else Qt.AltModifier)+Qt.Key_V) - self.action_view.setMenu(self.view_menu) - ac.triggered.connect(self.view_specific_format, type=Qt.QueuedConnection) - - self.delete_menu = QMenu() - self.delete_menu.addAction(_('Remove selected books'), self.delete_books) - self.delete_menu.addAction( - _('Remove files of a specific format from selected books..'), - self.delete_selected_formats) - self.delete_menu.addAction( - _('Remove all formats from selected books, except...'), - self.delete_all_but_selected_formats) - self.delete_menu.addAction( - _('Remove covers from selected books'), self.delete_covers) - self.delete_menu.addSeparator() - self.delete_menu.addAction( - _('Remove matching books from device'), - self.remove_matching_books_from_device) - self.action_del.setMenu(self.delete_menu) - - self.action_open_containing_folder.setShortcut(Qt.Key_O) - self.addAction(self.action_open_containing_folder) - self.action_open_containing_folder.triggered.connect(self.view_folder) - self.action_sync.setShortcut(Qt.Key_D) - self.action_sync.setEnabled(True) - self.create_device_menu() - self.action_sync.triggered.connect( - self._sync_action_triggered) - - self.action_edit.setMenu(md) - self.action_save.setMenu(self.save_menu) - - cm = QMenu() - cm.addAction(_('Convert individually'), partial(self.convert_ebook, - False, bulk=False)) - cm.addAction(_('Bulk convert'), - partial(self.convert_ebook, False, bulk=True)) - cm.addSeparator() - ac = cm.addAction( - _('Create catalog of books in your calibre library')) - ac.triggered.connect(self.generate_catalog) - self.action_convert.setMenu(cm) - self.action_convert.triggered.connect(self.convert_ebook) - self.convert_menu = cm - - pm = QMenu() - pm.addAction(QIcon(I('config.svg')), _('Preferences'), self.do_config) - pm.addAction(QIcon(I('wizard.svg')), _('Run welcome wizard'), - self.run_wizard) - self.action_preferences.setMenu(pm) - self.preferences_menu = pm - for x in (self.preferences_action, self.action_preferences): - x.triggered.connect(self.do_config) - return all_actions - # }}} - def show_help(self, *args): - open_url(QUrl('http://calibre-ebook.com/user_manual')) - def content_server_state_changed(self, running): - self.share_conn_menu.server_state_changed(running) - def toggle_content_server(self): - if self.content_server is None: - self.start_content_server() - else: - self.content_server.exit() - self.content_server = None diff --git a/src/calibre/gui2/library/views.py b/src/calibre/gui2/library/views.py index 7ccbc027f6..389208fdcd 100644 --- a/src/calibre/gui2/library/views.py +++ b/src/calibre/gui2/library/views.py @@ -389,37 +389,10 @@ class BooksView(QTableView): # {{{ #}}} # Context Menu {{{ - def set_context_menu(self, edit_metadata, send_to_device, convert, view, - save, open_folder, book_details, delete, conn_share, - similar_menu=None, add_to_library=None, - edit_device_collections=None): + def set_context_menu(self, menu, edit_collections_action): self.setContextMenuPolicy(Qt.DefaultContextMenu) - self.context_menu = QMenu(self) - if edit_metadata is not None: - self.context_menu.addAction(edit_metadata) - if send_to_device is not None: - self.context_menu.addAction(send_to_device) - if convert is not None: - self.context_menu.addAction(convert) - if conn_share is not None: - self.context_menu.addAction(conn_share) - self.context_menu.addAction(view) - self.context_menu.addAction(save) - if open_folder is not None: - self.context_menu.addAction(open_folder) - if delete is not None: - self.context_menu.addAction(delete) - if book_details is not None: - self.context_menu.addAction(book_details) - if similar_menu is not None: - self.context_menu.addMenu(similar_menu) - if add_to_library is not None: - func = partial(add_to_library[1], view=self) - self.context_menu.addAction(add_to_library[0], func) - if edit_device_collections is not None: - func = partial(edit_device_collections[1], view=self) - self.edit_collections_menu = \ - self.context_menu.addAction(edit_device_collections[0], func) + self.context_menu = menu + self.edit_collections_action = edit_collections_action def contextMenuEvent(self, event): self.context_menu.popup(event.globalPos()) @@ -528,10 +501,11 @@ class DeviceBooksView(BooksView): # {{{ self.setAcceptDrops(False) def contextMenuEvent(self, event): - self.edit_collections_menu.setVisible( - callable(getattr(self._model.db, 'supports_collections', None)) and \ + edit_collections = callable(getattr(self._model.db, 'supports_collections', None)) and \ self._model.db.supports_collections() and \ - prefs['manage_device_metadata'] == 'manual') + prefs['manage_device_metadata'] == 'manual' + + self.edit_collections_action.setVisible(edit_collections) self.context_menu.popup(event.globalPos()) event.accept() diff --git a/src/calibre/gui2/main.py b/src/calibre/gui2/main.py index ca896fc014..f9d7d80b24 100644 --- a/src/calibre/gui2/main.py +++ b/src/calibre/gui2/main.py @@ -155,7 +155,7 @@ class GuiRunner(QObject): main.initialize(self.library_path, self.db, self.listener, self.actions) if DEBUG: prints('Started up in', time.time() - self.startup_time) - add_filesystem_book = partial(main.add_filesystem_book, allow_device=False) + add_filesystem_book = partial(main.iactions['Add Books'].add_filesystem_book, allow_device=False) sys.excepthook = main.unhandled_exception if len(self.args) > 1: p = os.path.abspath(self.args[1]) diff --git a/src/calibre/gui2/tag_view.py b/src/calibre/gui2/tag_view.py index 1565520ca1..7d2333f58b 100644 --- a/src/calibre/gui2/tag_view.py +++ b/src/calibre/gui2/tag_view.py @@ -78,6 +78,7 @@ class TagsView(QTreeView): # {{{ self.setAnimated(True) self.setHeaderHidden(True) self.setItemDelegate(TagDelegate(self)) + self.made_connections = False def set_database(self, db, tag_match, sort_by): self.hidden_categories = config['tag_browser_hidden_categories'] @@ -90,12 +91,14 @@ class TagsView(QTreeView): # {{{ self.search_restriction = None self.setModel(self._model) self.setContextMenuPolicy(Qt.CustomContextMenu) - self.clicked.connect(self.toggle) - self.customContextMenuRequested.connect(self.show_context_menu) pop = config['sort_tags_by'] self.sort_by.setCurrentIndex(self.db.CATEGORY_SORTS.index(pop)) - self.sort_by.currentIndexChanged.connect(self.sort_changed) - self.refresh_required.connect(self.recount, type=Qt.QueuedConnection) + if not self.made_connections: + self.clicked.connect(self.toggle) + self.customContextMenuRequested.connect(self.show_context_menu) + self.refresh_required.connect(self.recount, type=Qt.QueuedConnection) + self.sort_by.currentIndexChanged.connect(self.sort_changed) + self.made_connections = True db.add_listener(self.database_changed) def database_changed(self, event, ids): diff --git a/src/calibre/gui2/tools.py b/src/calibre/gui2/tools.py index 57839d0ade..caef82ab81 100644 --- a/src/calibre/gui2/tools.py +++ b/src/calibre/gui2/tools.py @@ -22,6 +22,7 @@ from calibre.customize.conversion import OptionRecommendation from calibre.utils.config import prefs from calibre.ebooks.conversion.config import GuiRecommendations, \ load_defaults, load_specifics, save_specifics +from calibre.gui2.convert import bulk_defaults_for_input_format def convert_single_ebook(parent, db, book_ids, auto_conversion=False, out_format=None): changed = False @@ -148,7 +149,7 @@ class QueueBulk(QProgressDialog): temp_files = [] combined_recs = GuiRecommendations() - default_recs = load_defaults('%s_input' % input_format) + default_recs = bulk_defaults_for_input_format(input_format) for key in default_recs: combined_recs[key] = default_recs[key] if self.use_saved_single_settings: @@ -208,7 +209,6 @@ class QueueBulk(QProgressDialog): self.queue(self.jobs, self.changed, self.bad, *self.args) def fetch_scheduled_recipe(arg): - from calibre.ebooks.conversion.config import load_defaults fmt = prefs['output_format'].lower() pt = PersistentTemporaryFile(suffix='_recipe_out.%s'%fmt.lower()) pt.close() diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index 0b1091f848..95cccb72a5 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -15,7 +15,7 @@ from threading import Thread from PyQt4.Qt import Qt, SIGNAL, QTimer, \ QPixmap, QMenu, QIcon, pyqtSignal, \ QDialog, \ - QSystemTrayIcon, QApplication, QKeySequence, QAction, \ + QSystemTrayIcon, QApplication, QKeySequence, \ QMessageBox, QHelpEvent from calibre import prints @@ -23,6 +23,8 @@ from calibre.constants import __appname__, isosx from calibre.ptempfile import PersistentTemporaryFile from calibre.utils.config import prefs, dynamic from calibre.utils.ipc.server import Server +from calibre.library.database2 import LibraryDatabase2 +from calibre.customize.ui import interface_actions from calibre.gui2 import error_dialog, GetMetadata, open_local_file, \ gprefs, max_available_height, config, info_dialog, Dispatcher from calibre.gui2.cover_flow import CoverFlowMixin @@ -32,17 +34,10 @@ from calibre.gui2.main_window import MainWindow from calibre.gui2.layout import MainWindowMixin from calibre.gui2.device import DeviceMixin from calibre.gui2.jobs import JobManager, JobsDialog, JobsButton -from calibre.gui2.dialogs.config import ConfigDialog - -from calibre.gui2.dialogs.book_info import BookInfo -from calibre.library.database2 import LibraryDatabase2 from calibre.gui2.init import LibraryViewMixin, LayoutMixin from calibre.gui2.search_box import SearchBoxMixin, SavedSearchBoxMixin from calibre.gui2.search_restriction_mixin import SearchRestrictionMixin from calibre.gui2.tag_view import TagBrowserMixin -from calibre.gui2.actions import AnnotationsAction, AddAction, DeleteAction, \ - EditMetadataAction, SaveToDiskAction, GenerateCatalogAction, FetchNewsAction, \ - ConvertAction, ViewAction class Listener(Thread): # {{{ @@ -91,16 +86,27 @@ class SystemTrayIcon(QSystemTrayIcon): # {{{ class Main(MainWindow, MainWindowMixin, DeviceMixin, # {{{ TagBrowserMixin, CoverFlowMixin, LibraryViewMixin, SearchBoxMixin, - SavedSearchBoxMixin, SearchRestrictionMixin, LayoutMixin, UpdateMixin, - AnnotationsAction, AddAction, DeleteAction, - EditMetadataAction, SaveToDiskAction, GenerateCatalogAction, FetchNewsAction, - ConvertAction, ViewAction): + SavedSearchBoxMixin, SearchRestrictionMixin, LayoutMixin, UpdateMixin + ): 'The main GUI' def __init__(self, opts, parent=None): MainWindow.__init__(self, opts, parent) self.opts = opts + self.device_connected = None + acmap = {} + for action in interface_actions(): + mod, cls = action.actual_plugin.split(':') + ac = getattr(__import__(mod, fromlist=['1'], level=0), cls)(self, + action.site_customization) + if ac.name in acmap: + if ac.priority >= acmap[ac.name].priority: + acmap[ac.name] = ac + else: + acmap[ac.name] = ac + + self.iactions = acmap def initialize(self, library_path, db, listener, actions): opts = self.opts @@ -119,12 +125,14 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, # {{{ self.another_instance_wants_to_talk) self.check_messages_timer.start(1000) + for ac in self.iactions.values(): + ac.do_genesis() MainWindowMixin.__init__(self, db) # Jobs Button {{{ self.job_manager = JobManager() self.jobs_dialog = JobsDialog(self, self.job_manager) - self.jobs_button = JobsButton(horizontal=True) + self.jobs_button = JobsButton(horizontal=True, parent=self) self.jobs_button.initialize(self.jobs_dialog, self.job_manager) # }}} @@ -140,9 +148,6 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, # {{{ self.verbose = opts.verbose self.get_metadata = GetMetadata() self.upload_memory = {} - self.delete_memory = {} - self.conversion_jobs = {} - self.persistent_files = [] self.metadata_dialogs = [] self.default_thumbnail = None self.tb_wrapper = textwrap.TextWrapper(width=40) @@ -166,22 +171,13 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, # {{{ QIcon(I('eject.svg')), _('&Eject connected device')) self.eject_action.setEnabled(False) self.addAction(self.quit_action) - self.action_restart = QAction(_('&Restart'), self) - self.addAction(self.action_restart) self.system_tray_menu.addAction(self.quit_action) self.quit_action.setShortcut(QKeySequence(Qt.CTRL + Qt.Key_Q)) - self.action_restart.setShortcut(QKeySequence(Qt.CTRL + Qt.Key_R)) - self.action_show_book_details.setShortcut(QKeySequence(Qt.Key_I)) - self.addAction(self.action_show_book_details) self.system_tray_icon.setContextMenu(self.system_tray_menu) 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.connect(self.action_show_book_details, - 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) @@ -209,9 +205,8 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, # {{{ if self.system_tray_icon.isVisible() and opts.start_in_tray: self.hide_windows() - for t in (self.tool_bar, ): - self.library_view.model().count_changed_signal.connect \ - (t.count_changed) + self.library_view.model().count_changed_signal.connect( + self.iactions['Choose Library'].count_changed) if not gprefs.get('quick_start_guide_added', False): from calibre.ebooks.metadata import MetaInformation mi = MetaInformation(_('Calibre Quick Start Guide'), ['John Schember']) @@ -249,22 +244,23 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, # {{{ self.start_content_server() self.keyboard_interrupt.connect(self.quit, type=Qt.QueuedConnection) - AddAction.__init__(self) + self.read_settings() self.finalize_layout() self.donate_button.start_animation() + self.set_window_title() - self.scheduler.delete_old_news.connect( - self.library_view.model().delete_books_by_id, - type=Qt.QueuedConnection) + for ac in self.iactions.values(): + ac.initialization_complete() def start_content_server(self): from calibre.library.server.main import start_threaded_server from calibre.library.server import server_config self.content_server = start_threaded_server( self.library_view.model().db, server_config().parse()) - self.content_server.state_callback = Dispatcher(self.content_server_state_changed) + self.content_server.state_callback = Dispatcher( + self.iactions['Connect Share'].content_server_state_changed) self.content_server.state_callback(True) self.test_server_timer = QTimer.singleShot(10000, self.test_server) @@ -329,7 +325,7 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, # {{{ if len(argv) > 1: path = os.path.abspath(argv[1]) if os.access(path, os.R_OK): - self.add_filesystem_book(path) + self.iactions['Add Books'].add_filesystem_book(path) self.setWindowState(self.windowState() & \ ~Qt.WindowMinimized|Qt.WindowActive) self.show_windows() @@ -356,43 +352,6 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, # {{{ def booklists(self): return self.memory_view.model().db, self.card_a_view.model().db, self.card_b_view.model().db - - def do_config(self, checked=False, initial_category='general'): - if self.job_manager.has_jobs(): - d = error_dialog(self, _('Cannot configure'), - _('Cannot configure while there are running jobs.')) - d.exec_() - return - if self.must_restart_before_config: - d = error_dialog(self, _('Cannot configure'), - _('Cannot configure before calibre is restarted.')) - d.exec_() - return - d = ConfigDialog(self, self.library_view, - server=self.content_server, initial_category=initial_category) - - d.exec_() - self.content_server = d.server - if self.content_server is not None: - self.content_server.state_callback = \ - Dispatcher(self.content_server_state_changed) - self.content_server.state_callback(self.content_server.is_running) - - if d.result() == d.Accepted: - self.read_toolbar_settings() - self.search.search_as_you_type(config['search_as_you_type']) - self.save_menu.actions()[2].setText( - _('Save only %s format to disk')% - prefs['output_format'].upper()) - self.save_menu.actions()[3].setText( - _('Save only %s format to disk in a single directory')% - prefs['output_format'].upper()) - self.tags_view.set_new_model() # in case columns changed - self.tags_view.recount() - self.create_device_menu() - self.set_device_menu_items_state(bool(self.device_connected)) - self.tool_bar.apply_settings() - def library_moved(self, newloc): if newloc is None: return db = LibraryDatabase2(newloc) @@ -407,18 +366,14 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, # {{{ self.saved_search.clear_to_help() self.book_details.reset_info() self.library_view.model().count_changed() - self.scheduler.database_changed(db) prefs['library_path'] = self.library_path + db = self.library_view.model().db + for action in self.iactions.values(): + action.library_changed(db) + self.set_window_title() - def show_book_info(self, *args): - if self.current_view() is not self.library_view: - error_dialog(self, _('No detailed info available'), - _('No detailed information is available for books ' - 'on the device.')).exec_() - return - index = self.library_view.currentIndex() - if index.isValid(): - BookInfo(self, self.library_view, index).show() + def set_window_title(self): + self.setWindowTitle(__appname__ + u' - ||%s||'%self.iactions['Choose Library'].library_name()) def location_selected(self, location): ''' @@ -430,26 +385,12 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, # {{{ for x in ('tb', 'cb'): splitter = getattr(self, x+'_splitter') splitter.button.setEnabled(location == 'library') + for action in self.iactions.values(): + action.location_selected(location) if location == 'library': - self.action_edit.setEnabled(True) - self.action_merge.setEnabled(True) - self.action_convert.setEnabled(True) - self.view_menu.actions()[1].setEnabled(True) - self.action_open_containing_folder.setEnabled(True) - self.action_sync.setEnabled(True) self.search_restriction.setEnabled(True) - for action in list(self.delete_menu.actions())[1:]: - action.setEnabled(True) else: - self.action_edit.setEnabled(False) - self.action_merge.setEnabled(False) - self.action_convert.setEnabled(False) - self.view_menu.actions()[1].setEnabled(False) - self.action_open_containing_folder.setEnabled(False) - self.action_sync.setEnabled(False) self.search_restriction.setEnabled(False) - for action in list(self.delete_menu.actions())[1:]: - action.setEnabled(False) # Reset the view in case something changed while it was invisible self.current_view().reset() self.set_number_of_books_shown() @@ -504,7 +445,6 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, # {{{ geometry = config['main_window_geometry'] if geometry is not None: self.restoreGeometry(geometry) - self.read_toolbar_settings() self.read_layout_settings() def write_settings(self): @@ -512,9 +452,6 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, # {{{ dynamic.set('sort_history', self.library_view.model().sort_history) self.save_layout_state() - def restart(self): - self.quit(restart=True) - def quit(self, checked=True, restart=False): if not self.confirm_quit(): return @@ -577,6 +514,9 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, # {{{ def shutdown(self, write_settings=True): + for action in self.iactions.values(): + if not action.shutting_down(): + return if write_settings: self.write_settings() self.check_messages_timer.stop() diff --git a/src/calibre/gui2/viewer/main.py b/src/calibre/gui2/viewer/main.py index ec88c3f886..32bfdd22ce 100644 --- a/src/calibre/gui2/viewer/main.py +++ b/src/calibre/gui2/viewer/main.py @@ -166,6 +166,7 @@ class EbookViewer(MainWindow, Ui_EbookViewer): def __init__(self, pathtoebook=None, debug_javascript=False): MainWindow.__init__(self, None) self.setupUi(self) + self.base_window_title = unicode(self.windowTitle()) self.iterator = None self.current_page = None self.pending_search = None @@ -602,7 +603,7 @@ class EbookViewer(MainWindow, Ui_EbookViewer): self.toc_model = TOC(self.iterator.toc) self.toc.setModel(self.toc_model) self.current_title = title - self.setWindowTitle(unicode(self.windowTitle())+' - '+title) + self.setWindowTitle(self.base_window_title+' - '+title) self.pos.setMaximum(sum(self.iterator.pages)) self.pos.setSuffix(' / %d'%sum(self.iterator.pages)) self.vertical_scrollbar.setMinimum(100) diff --git a/src/calibre/gui2/widgets.py b/src/calibre/gui2/widgets.py index 994fa4575f..dbb3947d4c 100644 --- a/src/calibre/gui2/widgets.py +++ b/src/calibre/gui2/widgets.py @@ -5,7 +5,7 @@ Miscellaneous widgets used in the GUI ''' import re, os, traceback -from PyQt4.Qt import QIcon, QFont, QLabel, QListWidget, \ +from PyQt4.Qt import QIcon, QFont, QLabel, QListWidget, QAction, \ QListWidgetItem, QTextCharFormat, QApplication, \ QSyntaxHighlighter, QCursor, QColor, QWidget, \ QPixmap, QSplitterHandle, QToolButton, \ @@ -855,7 +855,7 @@ class SplitterHandle(QSplitterHandle): class LayoutButton(QToolButton): - def __init__(self, icon, text, splitter, parent=None): + def __init__(self, icon, text, splitter, parent=None, shortcut=None): QToolButton.__init__(self, parent) self.label = text self.setIcon(QIcon(icon)) @@ -864,18 +864,21 @@ class LayoutButton(QToolButton): self.splitter = splitter splitter.state_changed.connect(self.update_state) self.setCursor(Qt.PointingHandCursor) + self.shortcut = '' + if shortcut: + self.shortcut = shortcut def set_state_to_show(self, *args): self.setChecked(False) label =_('Show') - self.setText(label + ' ' + self.label) + self.setText(label + ' ' + self.label + u' (%s)'%self.shortcut) self.setToolTip(self.text()) self.setStatusTip(self.text()) def set_state_to_hide(self, *args): self.setChecked(True) label = _('Hide') - self.setText(label + ' ' + self.label) + self.setText(label + ' ' + self.label+ u' (%s)'%self.shortcut) self.setToolTip(self.text()) self.setStatusTip(self.text()) @@ -891,7 +894,7 @@ class Splitter(QSplitter): def __init__(self, name, label, icon, initial_show=True, initial_side_size=120, connect_button=True, - orientation=Qt.Horizontal, side_index=0, parent=None): + orientation=Qt.Horizontal, side_index=0, parent=None, shortcut=None): QSplitter.__init__(self, parent) self.resize_timer = QTimer(self) self.resize_timer.setSingleShot(True) @@ -906,10 +909,21 @@ class Splitter(QSplitter): self.initial_side_size = initial_side_size self.initial_show = initial_show self.splitterMoved.connect(self.splitter_moved, type=Qt.QueuedConnection) - self.button = LayoutButton(icon, label, self) + self.button = LayoutButton(icon, label, self, shortcut=shortcut) if connect_button: self.button.clicked.connect(self.double_clicked) + if shortcut is not None: + self.action_toggle = QAction(QIcon(icon), _('Toggle') + ' ' + label, + self) + self.action_toggle.triggered.connect(self.toggle_triggered) + self.action_toggle.setShortcut(shortcut) + if parent is not None: + parent.addAction(self.action_toggle) + + def toggle_triggered(self, *args): + self.toggle_side_pane() + def createHandle(self): return SplitterHandle(self.orientation(), self) @@ -927,7 +941,10 @@ class Splitter(QSplitter): @property def is_side_index_hidden(self): sizes = list(self.sizes()) - return sizes[self.side_index] == 0 + try: + return sizes[self.side_index] == 0 + except IndexError: + return True @property def save_name(self): diff --git a/src/calibre/gui2/wizard/__init__.py b/src/calibre/gui2/wizard/__init__.py index 854733a653..394b919016 100644 --- a/src/calibre/gui2/wizard/__init__.py +++ b/src/calibre/gui2/wizard/__init__.py @@ -61,7 +61,7 @@ class Kindle(Device): output_profile = 'kindle' output_format = 'MOBI' - name = 'Kindle 1 or 2' + name = 'Kindle 1, 2 or 3' manufacturer = 'Amazon' id = 'kindle' diff --git a/src/calibre/libunrar.py b/src/calibre/libunrar.py index 2f44dcdf4e..5dc66eaa36 100644 --- a/src/calibre/libunrar.py +++ b/src/calibre/libunrar.py @@ -239,7 +239,7 @@ def _extract_member(path, match, name): PFCode = _libunrar.RARProcessFileW(arc_data, RAR_EXTRACT, None, None) if PFCode != 0: raise UnRARException(_interpret_process_file_error(PFCode)) - abspath = os.path.abspath(*file_name.split('/')) + abspath = os.path.abspath(os.path.join(*file_name.split('/'))) return abspath else: PFCode = _libunrar.RARProcessFileW(arc_data, RAR_SKIP, None, None) diff --git a/src/calibre/manual/plugins.rst b/src/calibre/manual/plugins.rst index 26e544d766..8b6919db90 100644 --- a/src/calibre/manual/plugins.rst +++ b/src/calibre/manual/plugins.rst @@ -157,4 +157,11 @@ The base class for such devices is :class:`calibre.devices.usbms.driver.USBMS`. :members: :member-order: bysource +User Interface Actions +-------------------------- + +.. autoclass:: calibre.gui2.actions.InterfaceAction + :show-inheritance: + :members: + :member-order: bysource diff --git a/src/calibre/trac/bzr_commit_plugin.py b/src/calibre/trac/bzr_commit_plugin.py index 5ec6e8f7e8..c39131cccb 100644 --- a/src/calibre/trac/bzr_commit_plugin.py +++ b/src/calibre/trac/bzr_commit_plugin.py @@ -26,18 +26,18 @@ import bzrlib class cmd_commit(_cmd_commit): - + @classmethod def trac_url(self, username, password, url): - return url.replace('//', '//%s:%s@'%(username, password))+'/login/xmlrpc' - + return url.replace('//', '//%s:%s@'%(username, password))+'/login/xmlrpc' + def get_trac_summary(self, bug, url): print 'Getting bug summary for bug #%s'%bug, server = xmlrpclib.ServerProxy(url) attributes = server.ticket.get(int(bug))[-1] print attributes['summary'] return attributes['summary'] - + def expand_bug(self, msg, nick, config, bug_tracker, type='trac'): prefix = '%s_%s_'%(type, nick) username = config.get_user_option(prefix+'username') @@ -55,10 +55,10 @@ class cmd_commit(_cmd_commit): url = self.trac_url(username, password, bug_tracker) summary = self.get_trac_summary(bug, url) if summary: - msg = msg.replace('#%s'%bug, '#%s (%s)'%(bug, summary)) + msg = msg.replace('#%s'%bug, '#%s (%s)'%(bug, summary)) return msg, bug, url, action - - + + def get_bugtracker(self, basedir, type='trac'): config = os.path.join(basedir, '.bzr', 'branch', 'branch.conf') bugtracker, nick = None, None @@ -69,16 +69,16 @@ class cmd_commit(_cmd_commit): nick, bugtracker = match.group(1), match.group(2) break return nick, bugtracker - + def expand_message(self, msg, tree): nick, bugtracker = self.get_bugtracker(tree.basedir, type='trac') if not bugtracker: return msg config = branch.Branch.open(tree.basedir).get_config() msg, bug, url, action = self.expand_bug(msg, nick, config, bugtracker) - + return msg, bug, url, action, nick, config - + def run(self, message=None, file=None, verbose=False, selected_list=None, unchanged=False, strict=False, local=False, fixes=None, author=None, show_diff=False, exclude=None): @@ -89,18 +89,18 @@ class cmd_commit(_cmd_commit): self.expand_message(message, tree_files(selected_list)[0]) except ValueError: pass - + if nick and bug and not fixes: fixes = [nick+':'+bug] - - ret = _cmd_commit.run(self, message=message, file=file, verbose=verbose, + + ret = _cmd_commit.run(self, message=message, file=file, verbose=verbose, selected_list=selected_list, unchanged=unchanged, - strict=strict, local=local, fixes=fixes, + strict=strict, local=local, fixes=fixes, author=author, show_diff=show_diff, exclude=exclude) if message and bug and action and nick and config: self.close_bug(bug, action, url, config) return ret - + def close_bug(self, bug, action, url, config): print 'Closing bug #%s'% bug nick = config.get_nickname() @@ -110,8 +110,8 @@ class cmd_commit(_cmd_commit): action = action+'ed' msg = '%s in branch %s. %s'%(action, nick, suffix) server = xmlrpclib.ServerProxy(url) - server.ticket.update(int(bug), msg, - {'status':'closed', 'resolution':'fixed'}, + server.ticket.update(int(bug), msg, + {'status':'closed', 'resolution':'fixed'}, False) - -bzrlib.commands.register_command(cmd_commit) \ No newline at end of file + +bzrlib.commands.register_command(cmd_commit) diff --git a/src/calibre/translations/ar.po b/src/calibre/translations/ar.po index c3c5a0d307..3df48f782f 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-07-31 01:57+0000\n" -"PO-Revision-Date: 2010-07-30 21:06+0000\n" +"POT-Creation-Date: 2010-08-07 01:39+0000\n" +"PO-Revision-Date: 2010-08-06 22:33+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-07-31 03:35+0000\n" +"X-Launchpad-Export-Date: 2010-08-08 03:40+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -32,7 +32,7 @@ msgstr "لا ÙŠÙØ¹Ù„ شيءً" #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 #: /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/comic/input.py:402 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:70 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:72 #: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:335 @@ -40,16 +40,16 @@ msgstr "لا ÙŠÙØ¹Ù„ شيءً" #: /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:235 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:278 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:281 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:397 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:236 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:279 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:282 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:398 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:20 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:21 #: /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/fetch.py:333 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:332 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:36 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 @@ -100,12 +100,12 @@ msgstr "لا ÙŠÙØ¹Ù„ شيءً" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 #: /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:240 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:242 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:234 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:236 #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:287 #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:294 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:812 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:815 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:826 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:829 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:172 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:179 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:22 @@ -119,14 +119,14 @@ msgstr "لا ÙŠÙØ¹Ù„ شيءً" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:492 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:512 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:173 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:362 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:382 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1060 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:87 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:96 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:185 #: /home/kovid/work/calibre/src/calibre/library/cli.py:213 #: /home/kovid/work/calibre/src/calibre/library/database.py:913 @@ -137,7 +137,7 @@ msgstr "لا ÙŠÙØ¹Ù„ شيءً" #: /home/kovid/work/calibre/src/calibre/library/database2.py:1646 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1648 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1770 -#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:268 +#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:199 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:134 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:137 #: /home/kovid/work/calibre/src/calibre/library/server/xml.py:68 @@ -283,7 +283,7 @@ msgstr "" "وثيقة الإدخال." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:57 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:412 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:414 msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "" @@ -295,62 +295,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:447 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:449 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:477 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:479 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:488 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:490 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:501 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:503 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:513 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:515 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:521 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:523 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:534 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:536 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:545 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:547 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:580 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:584 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:593 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:597 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:607 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:611 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:621 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:625 msgid "This profile is intended for the B&N Nook." msgstr "مل٠التعري٠هذا يستخدم مع B&N Nook ." @@ -367,24 +367,24 @@ msgstr "" "مل٠التعري٠هذا يحاول تقديم Ø§ÙØªØ±Ø§Ø¶Ø§Øª عاقلة Ùˆ Ù…Ùيدة إذا كنت ترغب ÙÙŠ إصدار " "وثيقة للقراءة ÙÙŠ جهاز الكمبيوتر أو على مجموعة من الأجهزة." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:257 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:259 msgid "" "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:425 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:427 msgid "This profile is intended for the Kobo Reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:438 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:440 msgid "This profile is intended for the SONY PRS-300." msgstr "مل٠التعري٠هذا يستخدم مع سوني PRS-300 ." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:456 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:458 msgid "This profile is intended for the 5-inch JetBook." msgstr "مل٠التعري٠هذا يستخدم مع الخمسة بوصة JetBook ." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:465 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:467 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." @@ -392,39 +392,39 @@ msgstr "" "مل٠التعري٠هذا يستخدم مع سوني خط إنتاج PRS . الـ500/505/700 الخ ØŒ ÙÙŠ وضع " "Ø£Ùقي.غالباً Ù…Ùيد للكاريكاتيرات." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:563 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:566 msgid "This profile is intended for the Amazon Kindle DX." msgstr "مل٠التعري٠هذا يستخدم مع Amazon Kindle DX" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:32 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:33 msgid "Installed plugins" msgstr "ملحقات مثبتة" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:33 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:34 msgid "Mapping for filetype plugins" msgstr "تعيين لملحقات أنواع Ø§Ù„Ù…Ù„ÙØ§Øª" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:34 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:35 msgid "Local plugin customization" msgstr "تخصيص الملحقات المحلية" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:35 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:36 msgid "Disabled plugins" msgstr "ملحقات معطلة" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:36 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:37 msgid "Enabled plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:84 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:85 msgid "No valid plugin found in " msgstr "لا يجد ملحق صالح " -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:468 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:478 msgid "Initialization of plugin %s failed with traceback:" msgstr "ÙØ´Ù„ استهلال الملحق %s مع Ø§Ù‚ØªÙØ§Ø¡ الأثر:" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:501 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:511 msgid "" " %prog options\n" "\n" @@ -436,29 +436,29 @@ msgstr "" " المقدرة على التخصيص بتحميل الملحقات الخارجية .\n" " " -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:507 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:517 msgid "Add a plugin by specifying the path to the zip file containing it." msgstr "Ø¥Ø¶Ø§ÙØ© ملحق يتخصيص مسار إلى مل٠zip الذي يحتويه." -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:509 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:519 msgid "Remove a custom plugin by name. Has no effect on builtin plugins" msgstr "حذ٠الملحق المخصص عن طريق اسمه. لا يؤثر على الملحقات المضمنة" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:511 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:521 msgid "" "Customize plugin. Specify name of plugin and customization string separated " "by a comma." msgstr "تخصيص الملحق . حدد اسم الملحق وسلسلة التخصيص ÙˆÙØ±Ù‚هما Ø¨ÙØ§ØµÙ„Ø©." -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:513 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:523 msgid "List all installed plugins" msgstr "قائمة كل الملحقات المثبتة" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:515 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:525 msgid "Enable the named plugin" msgstr "تمكين الملحق المسمى" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:517 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:527 msgid "Disable the named plugin" msgstr "تعطيل الملحق المسمى" @@ -466,13 +466,13 @@ msgstr "تعطيل الملحق المسمى" msgid "Communicate with Android phones." msgstr "التواصل مع هوات٠أندرويد ." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:47 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:48 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:89 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:90 msgid "Communicate with S60 phones." msgstr "" @@ -681,10 +681,10 @@ msgstr "التواصل مع القارئ الكتاب الاليكترونى Kin msgid "Communicate with the Kobo Reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:51 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:54 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:57 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:159 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:53 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:56 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:59 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:161 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:68 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:71 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:74 @@ -694,32 +694,33 @@ msgstr "" msgid "Getting list of books on device..." msgstr "يجري إحصاء قائمة كتب من الجهاز..." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:219 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:263 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:221 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:265 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:253 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:271 msgid "Removing books from device..." msgstr "يجري حذ٠الكتب من الجهاز..." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:267 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:274 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:269 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:276 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:278 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:283 msgid "Removing books from device metadata listing..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:279 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:313 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:281 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:315 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:217 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:247 msgid "Adding books to device metadata listing..." msgstr "Ø¥Ø¶Ø§ÙØ© كتب لقائمة البيانات الوصÙية للجهاز ..." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:364 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:366 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:441 msgid "Not Implemented" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:365 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:367 msgid "" "\".kobo\" files do not exist on the device as books instead, they are rows " "in the sqlite database. Currently they cannot be exported or viewed." @@ -733,18 +734,14 @@ msgstr "الإتصال مع جهاز البالم بري" msgid "Communicate with the Booq Avant" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:57 +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:58 msgid "Communicate with the Sweex MM300" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:77 +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:78 msgid "Communicate with the Pandigital Novel" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:103 -msgid "Communicate with the Promedia eBook reader" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:17 msgid "Communicate with the Nokia 770 internet tablet." msgstr "التواصل مع نوكيا 770" @@ -986,15 +983,15 @@ msgstr "تحديد هوية الكتاب" msgid "Set font delta" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:201 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:178 msgid "Rendered %s" msgstr "تم تصوير %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:204 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:181 msgid "Failed %s" msgstr "ÙØ´Ù„ %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:261 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:235 msgid "" "Failed to process comic: \n" "\n" @@ -1004,44 +1001,44 @@ msgstr "" "\n" "%s ." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:279 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:253 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/calibre/src/calibre/ebooks/comic/input.py:257 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/calibre/src/calibre/ebooks/comic/input.py:260 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/calibre/src/calibre/ebooks/comic/input.py:262 msgid "Disable sharpening." msgstr "تعطيل التشحيذ." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:290 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:264 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/calibre/src/calibre/ebooks/comic/input.py:267 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/calibre/src/calibre/ebooks/comic/input.py:269 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/calibre/src/calibre/ebooks/comic/input.py:272 msgid "" "Used for right-to-left publications like manga. Causes landscape pages to be " "split into portrait pages from right to left." @@ -1049,13 +1046,13 @@ msgstr "" "تستخدم لمنشورات يمين إلى يسار مثل المانغا اليابانية، إلخ. يتسبب بتقسيم صور " "عرضية إلى صور طولية من اليمين إلى اليسار." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:302 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:276 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/calibre/src/calibre/ebooks/comic/input.py:279 msgid "" "Don't sort the files found in the comic alphabetically by name. Instead use " "the order they were added to the comic." @@ -1063,23 +1060,23 @@ msgstr "" "لا ترتّب Ù…Ù„ÙØ§Øª موجودة ÙÙŠ الرسومات أبجدياً، بل استخدم الترتيب المستخدم ÙÙŠ " "الرسومات." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:309 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283 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/calibre/src/calibre/ebooks/comic/input.py:287 msgid "Apply no processing to the image" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:315 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:289 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/calibre/src/calibre/ebooks/comic/input.py:426 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:437 msgid "Page" msgstr "ØµÙØ­Ø©" @@ -1881,7 +1878,7 @@ msgstr "ضم أسرة الخطوط أحادية القياس" msgid "Comic" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:396 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:397 #: /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 @@ -1890,11 +1887,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:887 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:543 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:550 msgid "Title" msgstr "العنوان" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:397 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:398 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:364 @@ -1902,18 +1899,18 @@ msgstr "العنوان" msgid "Author(s)" msgstr "المؤل٠أو المؤلÙون" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:398 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:399 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:61 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:72 msgid "Publisher" msgstr "الناشر" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:399 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:400 #: /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:400 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:401 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:35 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:211 @@ -1925,7 +1922,7 @@ msgstr "المنتج" msgid "Comments" msgstr "التعليقات" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:408 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:409 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:27 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:73 @@ -1935,7 +1932,7 @@ msgstr "التعليقات" msgid "Tags" msgstr "الوسوم" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:410 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:411 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:26 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:74 @@ -1945,22 +1942,22 @@ msgstr "الوسوم" msgid "Series" msgstr "السلسلة" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:411 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:412 msgid "Language" msgstr "اللغة" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:413 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:414 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 msgid "Timestamp" msgstr "ختم التوقيت" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:415 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:416 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:70 msgid "Published" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:417 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:418 msgid "Rights" msgstr "" @@ -2067,10 +2064,40 @@ msgstr "تم Ø­ÙØ¸ الغلا٠ÙÙŠ" msgid "No cover found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:15 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:27 msgid "Cover download" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:79 +msgid "Download covers from openlibrary.org" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:107 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:136 +msgid "ISBN: %s not found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:117 +msgid "Download covers from librarything.com" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:128 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:68 +msgid "LibraryThing.com timed out. Try again later." +msgstr "LibraryThing.com لم يرد. حاول لاحقاً." + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:135 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:75 +msgid "" +"Could not fetch cover as server is experiencing high load. Please try again " +"later." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:139 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:79 +msgid "LibraryThing.com server error. Try again later." +msgstr "خطأ ÙÙŠ خادم LibraryThing.com. حاول لاحقاً." + #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/douban.py:42 msgid "Downloads metadata from Douban.com" msgstr "" @@ -2147,24 +2174,10 @@ msgstr "العنوان الذي تريد البحث عنه." msgid "The publisher of the book to search for." msgstr "الناشر الذي تريد البحث عنه." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:68 -msgid "LibraryThing.com timed out. Try again later." -msgstr "LibraryThing.com لم يرد. حاول لاحقاً." - -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:75 -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:76 msgid " not found." msgstr " لم يوجد." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:79 -msgid "LibraryThing.com server error. Try again later." -msgstr "خطأ ÙÙŠ خادم LibraryThing.com. حاول لاحقاً." - #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:86 msgid "" "\n" @@ -2574,7 +2587,7 @@ msgid "" "Specify the character encoding of the output document. The default is cp1252." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:200 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:194 msgid "" "This RTF file has a feature calibre does not support. Convert it to HTML " "first and then try it.\n" @@ -2747,7 +2760,7 @@ msgid "Disable UI animations" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:476 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:479 msgid "Copied" msgstr "" @@ -2759,7 +2772,7 @@ msgstr "" msgid "Copy to Clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:396 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:397 msgid "Choose Files" msgstr "" @@ -2774,13 +2787,13 @@ msgid "User annotations generated from main library only" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:609 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:668 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:705 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:726 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:911 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:976 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1094 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:682 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:719 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:740 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:925 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:998 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1116 msgid "No books selected" msgstr "" @@ -2826,7 +2839,7 @@ msgid "Uploading books to device." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions.py:350 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:164 msgid "Books" msgstr "كتب" @@ -2892,115 +2905,120 @@ msgid "Failed to read metadata from the following" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions.py:429 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:434 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:448 msgid "Add to library" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions.py:429 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:459 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1238 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1263 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:473 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1260 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1285 msgid "No book selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:434 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:442 +msgid "" +"The following books are virtual and cannot be added to the calibre library:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:448 msgid "No book files found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:456 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:470 msgid "Cannot delete" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:483 msgid "Choose formats to be deleted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:487 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:501 msgid "Choose formats not to be deleted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:521 msgid "Cannot delete books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:522 msgid "No device is connected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:518 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:532 msgid "Main memory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:519 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:533 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:430 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:439 msgid "Storage Card A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:520 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:534 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:432 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:441 msgid "Storage Card B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:525 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:539 msgid "No books to delete" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:540 msgid "None of the selected books are on the device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:543 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:598 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:612 msgid "Deleting books from device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:564 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:578 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/actions.py:583 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:597 msgid "" "The selected books will be permanently deleted from your device. Are " "you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:622 msgid "Cannot download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:624 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:638 msgid "social metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:626 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:640 msgid "covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:626 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:640 msgid "metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:628 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:642 msgid "Downloading %s for %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:652 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:666 msgid "Failed to download some metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:653 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:667 msgid "Failed to download metadata for the following:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:656 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:670 msgid "Failed to download metadata:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:657 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:671 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:602 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:550 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:962 @@ -3008,21 +3026,21 @@ msgstr "" msgid "Error" msgstr "خطأ" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:667 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:704 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:681 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:718 msgid "Cannot edit metadata" msgstr "لا يمكن تحرير الميتاداتا" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:725 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:728 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:739 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:742 msgid "Cannot merge books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:729 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:743 msgid "At least two books must be selected for merging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:733 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:747 msgid "" "All book formats and metadata from the selected books will be added to the " "first selected book.

The second and subsequently selected " @@ -3030,7 +3048,7 @@ msgid "" "proceed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:744 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:758 msgid "" "All book formats and metadata from the selected books will be merged into " "the first selected book.

After merger the second and " @@ -3040,99 +3058,111 @@ msgid "" "from your computer.

Are you sure you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:756 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:770 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/actions.py:910 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:924 msgid "Cannot save to disk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:913 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:927 msgid "Choose destination directory" msgstr "إختيار دليل الوجهة" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:946 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:933 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:566 +msgid "Not allowed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:934 +msgid "" +"You are tying to save files into the calibre library. This can cause " +"corruption of your library. Save to disk is meant to export files from your " +"calibre library elsewhere." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:968 msgid "Error while saving" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:947 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:969 msgid "There was an error while saving." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:954 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:955 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:976 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:977 msgid "Could not save some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:956 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:978 msgid "Click the show details button to see which ones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:977 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:999 msgid "No books selected to generate catalog for" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:994 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1016 msgid "Generating %s catalog..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:999 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1021 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:264 msgid "No books found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1000 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1022 msgid "" "No books to catalog\n" "Check exclude tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1010 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1032 msgid "Catalog generated." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1013 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1035 msgid "Export Catalog Directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1014 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1036 msgid "Select destination for %s.%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1030 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1052 msgid "Fetching news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1044 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1066 msgid " fetched." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1093 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1115 msgid "Cannot convert" msgstr "لا يمكن تحويله" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1122 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1144 msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1238 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1299 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1260 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1321 msgid "Cannot view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1244 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1266 #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77 msgid "Choose the format to view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1252 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1274 msgid "Multiple Books Selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1253 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1275 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 " @@ -3140,11 +3170,11 @@ msgid "" "continue?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1262 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1284 msgid "Cannot open folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1300 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1322 msgid "%s has no available formats." msgstr "" @@ -3240,7 +3270,7 @@ 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/finish_ui.py:41 #: /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 @@ -3302,14 +3332,14 @@ 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:571 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:614 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:365 -#: /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:390 -#: /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:394 +#: /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:384 +#: /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:397 #: /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:404 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:406 #: /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 @@ -3985,38 +4015,38 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:164 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:111 msgid "Choose cover for " msgstr "إختار الغلا٠لـ " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:171 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:118 msgid "Cannot read" msgstr "لا يمكن القراءة" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:119 msgid "You do not have permission to read the file: " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:127 msgid "Error reading file" msgstr "خطأ ÙÙŠ قراءة الملÙ" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:181 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:128 msgid "

There was an error reading from file:
" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:188 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:136 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:396 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:401 msgid "Book Cover" msgstr "غلا٠الكتاب" @@ -4025,28 +4055,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:397 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:402 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:398 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:403 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:357 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362 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:358 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:363 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:158 -#: /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:366 msgid "&Author(s): " msgstr "ال&مؤلÙ: " @@ -4062,18 +4092,18 @@ 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:167 -#: /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:375 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:371 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376 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:169 -#: /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:377 msgid "" "Tags categorize the book. This is particularly useful while searching. " "

They can be any words or phrases, separated by commas." @@ -4083,7 +4113,7 @@ 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:174 -#: /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:380 msgid "&Series:" msgstr "&سلسلات:" @@ -4091,13 +4121,13 @@ msgstr "&سلسلات:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:182 #: /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:376 -#: /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:381 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:382 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:382 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:387 msgid "Book " msgstr "الكتاب " @@ -4915,6 +4945,14 @@ msgstr "" msgid "The folder %s is not empty. Please choose an empty folder" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:80 +msgid "No location" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:80 +msgid "No location selected" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:66 msgid "Choose your calibre library" msgstr "" @@ -5696,7 +5734,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:69 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:889 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:542 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:549 msgid "Date" msgstr "تاريخ" @@ -6025,21 +6063,21 @@ msgid "Author s&ort: " msgstr "" #: /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:363 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:368 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:162 -#: /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:371 msgid "&Rating:" 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:164 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:368 +#: /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 msgid "Rating of this book. 0-5 stars" msgstr "" @@ -6048,7 +6086,7 @@ msgid "No change" msgstr "" #: /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:369 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374 msgid " stars" msgstr " نجمة" @@ -6058,8 +6096,8 @@ msgstr "" #: /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:373 -#: /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:378 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:379 msgid "Open Tag Editor" msgstr "ÙØªØ­ محرر الوسوم" @@ -6099,214 +6137,237 @@ 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:403 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:410 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:404 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:411 msgid "&Custom metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:94 msgid "Last modified: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:135 msgid "Not a valid picture" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:150 +msgid "Specify title and author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:151 +msgid "You must specify a title and author before generating a cover" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:163 msgid "Choose formats for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:194 msgid "No permission" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:195 msgid "You do not have permission to read the following files:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:203 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:223 msgid "No format selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:234 msgid "Could not read metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:235 msgid "Could not read metadata from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:264 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:270 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:289 msgid "Could not read cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:265 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:284 msgid "Could not read cover from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:271 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:290 msgid "The cover in the %s format is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:327 msgid "Abort the editing of all remaining books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:445 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:465 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:470 msgid "This ISBN number is valid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:453 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:473 msgid "This ISBN number is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:552 msgid "Cannot use tag editor" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:553 msgid "The tags editor cannot be used if you have modified the tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:573 msgid "Downloading cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:565 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:570 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:576 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:585 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:590 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:596 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:601 msgid "Cannot fetch cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:566 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:577 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:586 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:602 msgid "Could not fetch cover.
" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:567 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:587 msgid "The download timed out." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:571 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:591 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:583 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:603 +msgid "" +"For the error message from each cover source, click Show details below." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:610 msgid "Bad cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:584 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:611 msgid "The cover is not a valid picture" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:617 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:644 msgid "There were errors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:618 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:645 msgid "There were errors downloading social metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:647 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:674 msgid "Cannot fetch metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:648 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:675 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:723 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:750 msgid "Permission denied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:724 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:751 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:355 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360 msgid "Edit Meta Information" msgstr "تحرير معلومات الميتا" -#: /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:361 msgid "Meta information" msgstr "معلومات الميتا" -#: /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 msgid "Swap the author and title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367 msgid "Author S&ort: " msgstr "" -#: /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:369 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:378 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:383 msgid "Remove unused series (Series that have no books)" msgstr "حذ٠سلسلات غير مستخدمة (سلسلات التي لا تحتوي على كتب)" -#: /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:385 msgid "IS&BN:" msgstr "IS&BN:" -#: /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:386 msgid "Publishe&d:" 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:389 msgid "dd MMM yyyy" 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:390 msgid "&Date:" 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:391 msgid "&Comments" 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:392 msgid "&Fetch metadata from server" 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:393 msgid "Available Formats" msgstr "التهيئات Ø§Ù„Ù…ØªÙˆÙØ±Ø©" -#: /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:394 msgid "Add a new format for this book to the database" msgstr "" -#: /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:396 msgid "Remove the selected formats for this book from the database." msgstr "حذ٠التهيئات المختارة لهذا الكتاب من قاعدة البيانات." -#: /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 msgid "Set the cover for the book from the selected format" msgstr "" -#: /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:400 msgid "Update metadata from the metadata in the selected format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:400 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:405 msgid "Reset cover to default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:407 msgid "Download &cover" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:408 +msgid "Generate a default cover based on the title and author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:409 +msgid "&Generate cover" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:56 msgid "Password needed" msgstr "" @@ -7568,10 +7629,6 @@ msgstr "" msgid "Restore default layout" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:566 -msgid "Not allowed" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:567 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " @@ -7669,7 +7726,7 @@ msgid "Do not check for updates" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:595 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:598 msgid "Calibre Library" msgstr "" @@ -7787,11 +7844,11 @@ msgstr "" msgid "ERROR: Unhandled exception" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:93 msgid "Book has neither title nor ISBN" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:119 msgid "No matches found for this book" msgstr "" @@ -8616,60 +8673,60 @@ msgstr "" msgid "Hide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:367 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:370 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:371 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:374 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:373 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:376 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:450 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:453 msgid "Moving library..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:466 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:467 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:470 msgid "Failed to move library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:524 msgid "Invalid database" msgstr "قاعدة البيانات غير صالحة" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:525 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:533 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:536 msgid "Could not move library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:587 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:590 msgid "Select location for books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:662 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:665 msgid "welcome wizard" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:49 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:50 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:42 @@ -8677,7 +8734,7 @@ msgid "Welcome to calibre" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:50 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:43 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:43 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:51 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:43 @@ -8698,19 +8755,19 @@ msgstr "" msgid "&Devices" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:44 msgid "" "

Congratulations!

You have successfully setup calibre. Press the %s " "button to apply your settings." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:45 msgid "" "

Demo videos

Videos demonstrating the various features of calibre are " "available online." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:46 msgid "" "

User Manual

A User Manual is also available online." @@ -9595,7 +9652,7 @@ msgstr "" msgid "Replace whitespace with underscores." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:258 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:263 msgid "Requested formats not available" msgstr "" @@ -9687,7 +9744,7 @@ msgstr "" msgid "Books sorted by " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:542 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:549 msgid "Newest" msgstr "" @@ -9925,67 +9982,67 @@ msgid "" "Do not download latest version of builtin recipes from the calibre server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:47 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:46 msgid "Unknown News Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:610 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:609 msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:709 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:708 msgid "Download finished" msgstr "تم التنزيل" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:711 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:710 msgid "Failed to download the following articles:" msgstr "ÙØ´Ù„ تنزيل المقالات التالية:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:717 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:716 msgid "Failed to download parts of the following articles:" msgstr "ÙØ´Ù„ تنزيل أجزاء من المقالات التالية:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:719 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:718 msgid " from " msgstr " من " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:721 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:720 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:810 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:809 msgid "Could not fetch article. Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:831 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:830 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:836 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:835 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:842 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:841 msgid "Trying to download cover..." msgstr "محاولة تنزيل الغلاÙ..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:844 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:843 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:925 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:924 msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:941 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:940 msgid "Feeds downloaded to %s" msgstr "تم تنزيل التلقيم إلى %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:951 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:950 msgid "Could not download cover: %s" msgstr "لم يتمكّن من تنزيل الغلاÙ: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:963 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:962 msgid "Downloading cover from %s" msgstr "يتم تنزيل الغلا٠من %s" @@ -9993,29 +10050,29 @@ msgstr "يتم تنزيل الغلا٠من %s" msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1193 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1172 msgid "Untitled Article" msgstr "مقالة بدون عنوان" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1264 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1243 msgid "Article downloaded: %s" msgstr "المقالة منزّلة: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1275 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1254 msgid "Article download failed: %s" msgstr "ÙØ´Ù„ تنزيل المقالة: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1292 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1271 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1439 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1418 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:1455 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1434 msgid "" "You do not have permission to download this issue. Either your subscription " "has expired or you have exceeded the maximum allowed downloads for today." diff --git a/src/calibre/translations/ca.po b/src/calibre/translations/ca.po index db0cb4b9a6..548dfc0254 100644 --- a/src/calibre/translations/ca.po +++ b/src/calibre/translations/ca.po @@ -10,14 +10,14 @@ msgid "" msgstr "" "Project-Id-Version: ca\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-07-31 01:57+0000\n" -"PO-Revision-Date: 2010-07-30 21:18+0000\n" +"POT-Creation-Date: 2010-08-07 01:39+0000\n" +"PO-Revision-Date: 2010-08-06 23:15+0000\n" "Last-Translator: Kovid Goyal \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-31 03:36+0000\n" +"X-Launchpad-Export-Date: 2010-08-08 03:40+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -35,7 +35,7 @@ msgstr "No en fa absolutament res" #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 #: /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/comic/input.py:402 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:70 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:72 #: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:335 @@ -43,16 +43,16 @@ msgstr "No en fa absolutament res" #: /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:235 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:278 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:281 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:397 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:236 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:279 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:282 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:398 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:20 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:21 #: /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/fetch.py:333 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:332 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:36 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 @@ -103,12 +103,12 @@ msgstr "No en fa absolutament res" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 #: /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:240 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:242 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:234 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:236 #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:287 #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:294 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:812 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:815 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:826 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:829 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:172 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:179 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:22 @@ -122,14 +122,14 @@ msgstr "No en fa absolutament res" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:492 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:512 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:173 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:362 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:382 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1060 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:87 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:96 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:185 #: /home/kovid/work/calibre/src/calibre/library/cli.py:213 #: /home/kovid/work/calibre/src/calibre/library/database.py:913 @@ -140,7 +140,7 @@ msgstr "No en fa absolutament res" #: /home/kovid/work/calibre/src/calibre/library/database2.py:1646 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1648 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1770 -#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:268 +#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:199 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:134 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:137 #: /home/kovid/work/calibre/src/calibre/library/server/xml.py:68 @@ -289,7 +289,7 @@ msgstr "" "sabeu res del document d'entrada." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:57 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:412 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:414 msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "" @@ -301,62 +301,62 @@ msgid "This profile is intended for the SONY PRS 300." msgstr "Aquest perfil és adient per al SONY PRS-300." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:78 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:447 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:449 msgid "This profile is intended for the SONY PRS-900." msgstr "Aquest perfil és adient per al SONY PRS-900." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:86 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:477 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:479 msgid "This profile is intended for the Microsoft Reader." msgstr "Aquest perfil és adient per al Microsoft Reader." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:97 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:488 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:490 msgid "This profile is intended for the Mobipocket books." msgstr "Aquest perfil és adient per a llibres Mobipocket." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:110 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:501 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:503 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "Aquest perfil és adient per al Hanlin V3 i els seus clons." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:122 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:513 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:515 msgid "This profile is intended for the Hanlin V5 and its clones." msgstr "Aquest perfil és adient per al Hanlin V5 i els seus clons." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:132 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:521 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:523 msgid "This profile is intended for the Cybook G3." msgstr "Aquest perfil és adient per al Cybook G3." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:145 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:534 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:536 msgid "This profile is intended for the Cybook Opus." msgstr "Aquest perfil és adient per al Cybook Opus" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:157 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:545 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:547 msgid "This profile is intended for the Amazon Kindle." msgstr "Aquest perfil és adient per a l'Amazon Kindle." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:169 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:580 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:584 msgid "This profile is intended for the Irex Illiad." msgstr "Aquest perfil és adient per a l'Irex Illiad" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:181 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:593 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:597 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "Aquest perfil és adient per al IRex Digital Reader 1000." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:194 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:607 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:611 msgid "This profile is intended for the IRex Digital Reader 800." msgstr "Aquest perfil és adient per al IRex Digital Reader 800." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:206 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:621 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:625 msgid "This profile is intended for the B&N Nook." msgstr "Aquest perfil és adient per al B&N Nook." @@ -374,25 +374,25 @@ msgstr "" "si voleu generar un document que es pugui llegir en un PC o en un conjunt " "ampli de dispositius diferents." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:257 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:259 msgid "" "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "" "Destinats als dispositius d'IPAD i similars amb una resolució de 768x1024" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:425 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:427 msgid "This profile is intended for the Kobo Reader." msgstr "Aquest perfil és adient per al lector Kobo Reader." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:438 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:440 msgid "This profile is intended for the SONY PRS-300." msgstr "Aquest perfil és adient per al SONY PRS-300." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:456 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:458 msgid "This profile is intended for the 5-inch JetBook." msgstr "Aquest perfil és adient per al 5-inch JetBook" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:465 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:467 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." @@ -400,39 +400,39 @@ msgstr "" "Aquest perfil és adient per al la línia PRS de SONY. Els models 500/505/700, " "etc., en mode apaïsat. Sobretot és útil per als còmics." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:563 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:566 msgid "This profile is intended for the Amazon Kindle DX." msgstr "Aquest perfil és adient per a l'Amazon Kindle DX." -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:32 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:33 msgid "Installed plugins" msgstr "Connectors instal·lats" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:33 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:34 msgid "Mapping for filetype plugins" msgstr "Associació per a connectors de tipus de fitxers" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:34 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:35 msgid "Local plugin customization" msgstr "Personalització del connector local" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:35 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:36 msgid "Disabled plugins" msgstr "Connectors inhabilitats" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:36 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:37 msgid "Enabled plugins" msgstr "Connectors permesos" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:84 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:85 msgid "No valid plugin found in " msgstr "No s'ha trobat cap connector vàlid a " -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:468 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:478 msgid "Initialization of plugin %s failed with traceback:" msgstr "No s'ha pogut inicialitzar el connector %s i s'ha generat la traça:" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:501 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:511 msgid "" " %prog options\n" "\n" @@ -444,18 +444,18 @@ msgstr "" " Personalitzeu el calibre carregant connectors externs.\n" " " -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:507 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:517 msgid "Add a plugin by specifying the path to the zip file containing it." msgstr "" "Afegeix un connector especificiant el camí al fitxer ZIP que el conté" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:509 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:519 msgid "Remove a custom plugin by name. Has no effect on builtin plugins" msgstr "" "Suprimeix un connector personalitzat per nom. No té cap efecte als " "complements integrats" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:511 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:521 msgid "" "Customize plugin. Specify name of plugin and customization string separated " "by a comma." @@ -463,15 +463,15 @@ msgstr "" "Personalitza el connector. Especifiqueu el nom del connector i el text que " "desitgeu, separats per una coma." -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:513 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:523 msgid "List all installed plugins" msgstr "Fes una llista amb tots els connectors instal·lats" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:515 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:525 msgid "Enable the named plugin" msgstr "Habilita el connector anomenat" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:517 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:527 msgid "Disable the named plugin" msgstr "Inhabilita el connector anomenat" @@ -479,7 +479,7 @@ msgstr "Inhabilita el connector anomenat" msgid "Communicate with Android phones." msgstr "Estableix comunicació amb telèfons Android" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:47 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:48 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" @@ -488,7 +488,7 @@ msgstr "" "dispositiu. S'usarà el primer directori del llistat que ja existeixi al " "dispositiu" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:89 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:90 msgid "Communicate with S60 phones." msgstr "Estableix comunicació amb els telèfons S60." @@ -719,10 +719,10 @@ msgstr "Estableix comunicació amb el lector de llibres electrònics Kindle DX" msgid "Communicate with the Kobo Reader" msgstr "Comunica amb el lector Kobo Reader" -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:51 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:54 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:57 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:159 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:53 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:56 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:59 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:161 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:68 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:71 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:74 @@ -732,32 +732,33 @@ msgstr "Comunica amb el lector Kobo Reader" msgid "Getting list of books on device..." msgstr "S'està obtenint el llistat de llibres disponibles al dispositiu..." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:219 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:263 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:221 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:265 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:253 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:271 msgid "Removing books from device..." msgstr "S'estan suprimint els llibres del dispositiu..." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:267 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:274 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:269 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:276 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:278 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:283 msgid "Removing books from device metadata listing..." msgstr "S'estan suprimint llibres del llistat de metadades del dispositiu..." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:279 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:313 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:281 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:315 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:217 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:247 msgid "Adding books to device metadata listing..." msgstr "S'estan afegint llibres al llistat de metadades del dispositiu..." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:364 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:366 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:441 msgid "Not Implemented" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:365 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:367 msgid "" "\".kobo\" files do not exist on the device as books instead, they are rows " "in the sqlite database. Currently they cannot be exported or viewed." @@ -771,18 +772,14 @@ msgstr "Comunica amb el Palm Pre" msgid "Communicate with the Booq Avant" msgstr "Comunicar-se amb Booq Avant" -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:57 +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:58 msgid "Communicate with the Sweex MM300" msgstr "Comunicar-se amb el Sweex MM300" -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:77 +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:78 msgid "Communicate with the Pandigital Novel" msgstr "Comunicar-se amb el Pandigital Novel" -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:103 -msgid "Communicate with the Promedia eBook reader" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:17 msgid "Communicate with the Nokia 770 internet tablet." msgstr "Estableix comunicació amb la tauleta d'Internet Nokia 770." @@ -1029,15 +1026,15 @@ msgstr "Indiqueu l'ID (identificador) del llibre" msgid "Set font delta" msgstr "Indiqueu la font delta" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:201 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:178 msgid "Rendered %s" msgstr "%s renderitzat" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:204 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:181 msgid "Failed %s" msgstr "%s ha fallat" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:261 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:235 msgid "" "Failed to process comic: \n" "\n" @@ -1047,7 +1044,7 @@ msgstr "" "\n" "%s" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:279 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:253 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 " @@ -1057,24 +1054,24 @@ msgstr "" "defecte: %default. Valors inferiors a 256 podrien causar textos difuminats " "en el vostre dispositiu si esteu creant còmics en format EPUB." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:257 msgid "" "Disable normalize (improve contrast) color range for pictures. Default: False" msgstr "" "Inhabilita la normalització (millora del contrast) del balanç de colors per " "a les imatges . Per defecte: Desactivat" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:286 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:260 msgid "Maintain picture aspect ratio. Default is to fill the screen." msgstr "" "Conserva la proporció d'aspecte de la imatge. El valor predeterminat és " "emplenar la pantalla." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:262 msgid "Disable sharpening." msgstr "Inhabilita l'afinament." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:290 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:264 msgid "" "Disable trimming of comic pages. For some comics, trimming might remove " "content as well as borders." @@ -1082,11 +1079,11 @@ msgstr "" "Inhabilita el retallament de pàgines de còmic. Per alguns còmics, el " "retallament podria eliminar el contingut a més de les vores." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:293 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:267 msgid "Don't split landscape images into two portrait images" msgstr "No divideixis les imatges apaïsades en dues imatges verticals" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:295 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:269 msgid "" "Keep aspect ratio and scale image using screen height as image width for " "viewing in landscape mode." @@ -1094,7 +1091,7 @@ msgstr "" "Conserva la relació d'aspecte i escala la imatge fent servir l'alçada de la " "pantalla com ample de la imatge, per a veure-la en mode apaïsat" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:298 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:272 msgid "" "Used for right-to-left publications like manga. Causes landscape pages to be " "split into portrait pages from right to left." @@ -1103,7 +1100,7 @@ msgstr "" "pàgines apaïsades siguin separades en pàgines verticals orientades de dreta " "a esquerra." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:302 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:276 msgid "" "Enable Despeckle. Reduces speckle noise. May greatly increase processing " "time." @@ -1111,7 +1108,7 @@ msgstr "" "Habilita l'eliminació dels pics. Redueix el soroll, en forma de pics. Pot " "incrementar molt el temps de processament." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:305 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:279 msgid "" "Don't sort the files found in the comic alphabetically by name. Instead use " "the order they were added to the comic." @@ -1119,7 +1116,7 @@ msgstr "" "No ordenis alfabèticament els arxius trobats al còmic. Empra l'ordre en el " "qual hi foren afegits al còmic." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:309 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283 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 " @@ -1129,16 +1126,16 @@ msgstr "" "Podeu experimentar quin format us proporciona la millor relació mida-aspecte " "al vostre dispositiu." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:313 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:287 msgid "Apply no processing to the image" msgstr "No processis les imatges." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:315 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:289 msgid "Do not convert the image to grayscale (black and white)" msgstr "No converteixis a escala de grisos (blanc i negre)." -#: /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/calibre/src/calibre/ebooks/comic/input.py:426 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:437 msgid "Page" msgstr "Pàgina" @@ -2148,7 +2145,7 @@ msgstr "Famí­lia de lletres monoespaiades per a incrustar." msgid "Comic" msgstr "Còmic" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:396 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:397 #: /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 @@ -2157,11 +2154,11 @@ msgstr "Còmic" #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:887 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:543 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:550 msgid "Title" msgstr "Tí­tol" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:397 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:398 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:364 @@ -2169,18 +2166,18 @@ msgstr "Tí­tol" msgid "Author(s)" msgstr "Autor(s)" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:398 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:399 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:61 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:72 msgid "Publisher" msgstr "Editorial" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:399 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:400 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:49 msgid "Producer" msgstr "Productor" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:400 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:401 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:35 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:211 @@ -2192,7 +2189,7 @@ msgstr "Productor" msgid "Comments" msgstr "Comentaris" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:408 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:409 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:27 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:73 @@ -2202,7 +2199,7 @@ msgstr "Comentaris" msgid "Tags" msgstr "Etiquetes" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:410 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:411 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:26 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:74 @@ -2212,22 +2209,22 @@ msgstr "Etiquetes" msgid "Series" msgstr "Sèries" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:411 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:412 msgid "Language" msgstr "Llengua" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:413 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:414 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 msgid "Timestamp" msgstr "Marca de temps" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:415 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:416 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:70 msgid "Published" msgstr "Publicat" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:417 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:418 msgid "Rights" msgstr "Drets" @@ -2358,10 +2355,42 @@ msgstr "Portada desada a" msgid "No cover found" msgstr "No s'ha trobat cap caràtula" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:15 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:27 msgid "Cover download" msgstr "Caràtula descarregada." +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:79 +msgid "Download covers from openlibrary.org" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:107 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:136 +msgid "ISBN: %s not found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:117 +msgid "Download covers from librarything.com" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:128 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:68 +msgid "LibraryThing.com timed out. Try again later." +msgstr "LibraryThing.com ha esgotat el temps. Provi-ho de nou més tard." + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:135 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:75 +msgid "" +"Could not fetch cover as server is experiencing high load. Please try again " +"later." +msgstr "" +"No s'ha pogut aconseguir la caràtula, el servidor està experimentant una " +"càrrega molt alta. Si us plau, provi-ho de nou més tard." + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:139 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:79 +msgid "LibraryThing.com server error. Try again later." +msgstr "Error al servidor LibraryThing.com. Provi-ho de nou més tard." + #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/douban.py:42 msgid "Downloads metadata from Douban.com" msgstr "Descarrega metainformació des de Douban.com" @@ -2453,26 +2482,10 @@ msgstr "El títol del llibre el qual vostè ha cercat." msgid "The publisher of the book to search for." msgstr "L'editor del llibre el qual vostè ha cercat." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:68 -msgid "LibraryThing.com timed out. Try again later." -msgstr "LibraryThing.com ha esgotat el temps. Provi-ho de nou més tard." - -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:75 -msgid "" -"Could not fetch cover as server is experiencing high load. Please try again " -"later." -msgstr "" -"No s'ha pogut aconseguir la caràtula, el servidor està experimentant una " -"càrrega molt alta. Si us plau, provi-ho de nou més tard." - #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:76 msgid " not found." msgstr " no trobat." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:79 -msgid "LibraryThing.com server error. Try again later." -msgstr "Error al servidor LibraryThing.com. Provi-ho de nou més tard." - #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:86 msgid "" "\n" @@ -2529,7 +2542,7 @@ msgstr "Tots els articles" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:259 msgid "This is an Amazon Topaz book. It cannot be processed." -msgstr "" +msgstr "Aquest és un llibre Amazon Topaz. No es pot processar" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1400 msgid "Title Page" @@ -2905,7 +2918,7 @@ msgid "" "Specify the character encoding of the output document. The default is cp1252." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:200 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:194 msgid "" "This RTF file has a feature calibre does not support. Convert it to HTML " "first and then try it.\n" @@ -3080,7 +3093,7 @@ msgid "Disable UI animations" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:476 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:479 msgid "Copied" msgstr "Copiat" @@ -3092,7 +3105,7 @@ msgstr "Copia" msgid "Copy to Clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:396 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:397 msgid "Choose Files" msgstr "Escull fitxers" @@ -3107,13 +3120,13 @@ msgid "User annotations generated from main library only" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:609 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:668 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:705 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:726 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:911 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:976 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1094 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:682 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:719 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:740 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:925 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:998 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1116 msgid "No books selected" msgstr "Cap llibre seleccionat" @@ -3159,7 +3172,7 @@ msgid "Uploading books to device." msgstr "Pujant llibres a l'aparell." #: /home/kovid/work/calibre/src/calibre/gui2/actions.py:350 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:164 msgid "Books" msgstr "Llibres" @@ -3225,115 +3238,120 @@ msgid "Failed to read metadata from the following" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions.py:429 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:434 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:448 msgid "Add to library" -msgstr "" +msgstr "Afegeix a la biblioteca" #: /home/kovid/work/calibre/src/calibre/gui2/actions.py:429 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:459 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1238 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1263 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:473 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1260 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1285 msgid "No book selected" msgstr "Cap llibre seleccionat" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:434 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:442 +msgid "" +"The following books are virtual and cannot be added to the calibre library:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:448 msgid "No book files found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:456 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:470 msgid "Cannot delete" -msgstr "" +msgstr "No puc esborrar" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:483 msgid "Choose formats to be deleted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:487 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:501 msgid "Choose formats not to be deleted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:521 msgid "Cannot delete books" msgstr "No puc esborrar llibres" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:522 msgid "No device is connected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:518 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:532 msgid "Main memory" msgstr "Memòria principal" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:519 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:533 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:430 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:439 msgid "Storage Card A" msgstr "Tarja de memòria A" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:520 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:534 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:432 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:441 msgid "Storage Card B" msgstr "Tarja de memòria B" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:525 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:539 msgid "No books to delete" msgstr "Cap llibre per esborrar" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:540 msgid "None of the selected books are on the device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:543 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:598 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:612 msgid "Deleting books from device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:564 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:578 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/actions.py:583 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:597 msgid "" "The selected books will be permanently deleted from your device. Are " "you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:622 msgid "Cannot download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:624 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:638 msgid "social metadata" -msgstr "" +msgstr "Metadades socials" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:626 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:640 msgid "covers" msgstr "portades" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:626 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:640 msgid "metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:628 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:642 msgid "Downloading %s for %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:652 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:666 msgid "Failed to download some metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:653 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:667 msgid "Failed to download metadata for the following:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:656 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:670 msgid "Failed to download metadata:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:657 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:671 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:602 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:550 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:962 @@ -3341,21 +3359,21 @@ msgstr "" msgid "Error" msgstr "Error" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:667 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:704 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:681 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:718 msgid "Cannot edit metadata" msgstr "No puc editar les meta-dades" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:725 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:728 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:739 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:742 msgid "Cannot merge books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:729 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:743 msgid "At least two books must be selected for merging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:733 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:747 msgid "" "All book formats and metadata from the selected books will be added to the " "first selected book.

The second and subsequently selected " @@ -3363,7 +3381,7 @@ msgid "" "proceed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:744 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:758 msgid "" "All book formats and metadata from the selected books will be merged into " "the first selected book.

After merger the second and " @@ -3373,99 +3391,111 @@ msgid "" "from your computer.

Are you sure you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:756 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:770 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/actions.py:910 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:924 msgid "Cannot save to disk" msgstr "No puc desar al disc" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:913 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:927 msgid "Choose destination directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:946 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:933 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:566 +msgid "Not allowed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:934 +msgid "" +"You are tying to save files into the calibre library. This can cause " +"corruption of your library. Save to disk is meant to export files from your " +"calibre library elsewhere." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:968 msgid "Error while saving" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:947 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:969 msgid "There was an error while saving." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:954 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:955 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:976 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:977 msgid "Could not save some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:956 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:978 msgid "Click the show details button to see which ones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:977 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:999 msgid "No books selected to generate catalog for" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:994 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1016 msgid "Generating %s catalog..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:999 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1021 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:264 msgid "No books found" msgstr "No trobo llibres" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1000 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1022 msgid "" "No books to catalog\n" "Check exclude tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1010 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1032 msgid "Catalog generated." msgstr "Catàleg generat" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1013 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1035 msgid "Export Catalog Directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1014 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1036 msgid "Select destination for %s.%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1030 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1052 msgid "Fetching news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1044 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1066 msgid " fetched." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1093 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1115 msgid "Cannot convert" msgstr "No puc convertir-lo" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1122 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1144 msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1238 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1299 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1260 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1321 msgid "Cannot view" msgstr "No puc mostrar-lo" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1244 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1266 #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77 msgid "Choose the format to view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1252 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1274 msgid "Multiple Books Selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1253 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1275 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 " @@ -3473,11 +3503,11 @@ msgid "" "continue?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1262 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1284 msgid "Cannot open folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1300 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1322 msgid "%s has no available formats." msgstr "" @@ -3573,7 +3603,7 @@ 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/finish_ui.py:41 #: /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 @@ -3635,14 +3665,14 @@ 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:571 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:614 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:365 -#: /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:390 -#: /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:394 +#: /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:384 +#: /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:397 #: /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:404 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:406 #: /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 @@ -3830,7 +3860,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:88 msgid "ignore" -msgstr "" +msgstr "ignora" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:89 msgid "backslashreplace" @@ -3846,7 +3876,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:92 msgid "misc" -msgstr "" +msgstr "misc" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:93 msgid "book" @@ -3884,7 +3914,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/database2.py:1493 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1511 msgid "Catalog" -msgstr "" +msgstr "Catàleg" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:69 msgid "'Don't include this book' tag:" @@ -3953,7 +3983,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:13 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:13 msgid "input" -msgstr "" +msgstr "entrada" #: /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 @@ -4168,7 +4198,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:114 msgid "0.0 pt" -msgstr "" +msgstr "0.0 pt" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:16 msgid "Look & Feel" @@ -4180,7 +4210,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:30 msgid "Original" -msgstr "" +msgstr "Original" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:31 msgid "Left align" @@ -4318,38 +4348,38 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:164 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:111 msgid "Choose cover for " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:171 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:118 msgid "Cannot read" msgstr "No pot llegir-se" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:119 msgid "You do not have permission to read the file: " msgstr "No tens permissos per a llegir l'arxiu: " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:127 msgid "Error reading file" msgstr "Error llegint l'arxiu" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:181 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:128 msgid "

There was an error reading from file:
" msgstr "

Error llegint de l'arxiu:
" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:188 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:136 msgid " is not a valid picture" msgstr " no és una imatge vàlida" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:167 -#: /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:401 msgid "Book Cover" msgstr "Coberta" @@ -4358,28 +4388,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:397 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:402 msgid "Change &cover image:" msgstr "Canvia la imatge de la &coberta:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:170 -#: /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:403 msgid "Browse for an image to use as the cover of this book." msgstr "Cerca una imatge per a utilitzar com a coberta d'aquest llibre." #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172 -#: /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:362 msgid "&Title: " msgstr "&Tí­tol: " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:173 -#: /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:363 msgid "Change the title of this book" msgstr "Canvia el tí­tol del llibre" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:174 #: /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:361 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:366 msgid "&Author(s): " msgstr "&Autor(s): " @@ -4396,18 +4426,18 @@ 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:167 -#: /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:375 msgid "&Publisher: " msgstr "&Editorial: " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:178 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376 msgid "Ta&gs: " msgstr "Etique&tes: " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:179 #: /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:372 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:377 msgid "" "Tags categorize the book. This is particularly useful while searching. " "

They can be any words or phrases, separated by commas." @@ -4417,7 +4447,7 @@ 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:174 -#: /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:380 msgid "&Series:" msgstr "&Sèries:" @@ -4425,13 +4455,13 @@ msgstr "&Sèries:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:182 #: /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:376 -#: /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:381 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:382 msgid "List of known series. You can add new series." msgstr "Llistat de sèries conegudes. Podeu afegir-hi de noves." #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:183 -#: /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:387 msgid "Book " msgstr "Llibre " @@ -4596,7 +4626,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:171 msgid "Convert" -msgstr "" +msgstr "Converteix" #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:196 msgid "Options specific to the input format." @@ -4790,7 +4820,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:69 msgid "*" -msgstr "" +msgstr "*" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:70 msgid "a" @@ -4989,7 +5019,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:428 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:437 msgid "Main Memory" -msgstr "" +msgstr "Memòria principal" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:448 msgid "Send and delete from library" @@ -5076,7 +5106,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:873 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:181 msgid "by" -msgstr "" +msgstr "per" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:874 msgid "in the %s format." @@ -5118,7 +5148,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:978 msgid "News:" -msgstr "" +msgstr "Notícies:" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:979 msgid "Attached is the" @@ -5251,6 +5281,14 @@ msgstr "" msgid "The folder %s is not empty. Please choose an empty folder" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:80 +msgid "No location" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:80 +msgid "No location selected" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:66 msgid "Choose your calibre library" msgstr "" @@ -6030,7 +6068,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:69 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:889 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:542 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:549 msgid "Date" msgstr "Data" @@ -6359,7 +6397,7 @@ msgid "Author s&ort: " msgstr "" #: /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:363 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:368 msgid "" "Specify how the author(s) of this book should be sorted. For example Charles " "Dickens should be sorted as Dickens, Charles." @@ -6368,14 +6406,14 @@ msgstr "" "exemple,ordena Vicent A. Estellés com a Estellés, Vicent A." #: /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:366 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371 msgid "&Rating:" msgstr "&Valoració:" #: /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:367 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:368 +#: /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 msgid "Rating of this book. 0-5 stars" msgstr "Valora aquest llibre: 0-5 estreles" @@ -6384,7 +6422,7 @@ msgid "No change" msgstr "" #: /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:369 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374 msgid " stars" msgstr " estreles" @@ -6394,8 +6432,8 @@ msgstr "" #: /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:373 -#: /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:378 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:379 msgid "Open Tag Editor" msgstr "" @@ -6435,215 +6473,238 @@ 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:403 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:410 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:404 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:411 msgid "&Custom metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:94 msgid "Last modified: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:135 msgid "Not a valid picture" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:150 +msgid "Specify title and author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:151 +msgid "You must specify a title and author before generating a cover" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:163 msgid "Choose formats for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:194 msgid "No permission" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:195 msgid "You do not have permission to read the following files:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:203 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:223 msgid "No format selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:234 msgid "Could not read metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:235 msgid "Could not read metadata from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:264 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:270 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:289 msgid "Could not read cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:265 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:284 msgid "Could not read cover from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:271 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:290 msgid "The cover in the %s format is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:327 msgid "Abort the editing of all remaining books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:445 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:465 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:470 msgid "This ISBN number is valid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:453 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:473 msgid "This ISBN number is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:552 msgid "Cannot use tag editor" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:553 msgid "The tags editor cannot be used if you have modified the tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:573 msgid "Downloading cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:565 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:570 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:576 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:585 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:590 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:596 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:601 msgid "Cannot fetch cover" msgstr "No puc aconseguir la coberta" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:566 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:577 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:586 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:602 msgid "Could not fetch cover.
" msgstr "No puc aconseguir la coberta.
" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:567 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:587 msgid "The download timed out." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:571 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:591 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:583 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:603 +msgid "" +"For the error message from each cover source, click Show details below." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:610 msgid "Bad cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:584 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:611 msgid "The cover is not a valid picture" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:617 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:644 msgid "There were errors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:618 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:645 msgid "There were errors downloading social metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:647 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:674 msgid "Cannot fetch metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:648 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:675 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:723 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:750 msgid "Permission denied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:724 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:751 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:355 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360 msgid "Edit Meta Information" msgstr "Edita la meta-informació" -#: /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:361 msgid "Meta information" msgstr "Meta-informació" -#: /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 msgid "Swap the author and title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367 msgid "Author S&ort: " msgstr "&Ordena autors: " -#: /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:369 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:378 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:383 msgid "Remove unused series (Series that have no books)" msgstr "" -#: /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:385 msgid "IS&BN:" msgstr "IS&BN:" -#: /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:386 msgid "Publishe&d:" 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:389 msgid "dd MMM yyyy" 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:390 msgid "&Date:" 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:391 msgid "&Comments" 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:392 msgid "&Fetch metadata from server" 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:393 msgid "Available Formats" msgstr "Formats disponibles" -#: /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:394 msgid "Add a new format for this book to the database" msgstr "Afegir un nou format per a aquest llibre a la base de dades" -#: /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:396 msgid "Remove the selected formats for this book from the database." msgstr "" "Elimina els formats seleccionats per a aquest llibre de la base de dades." -#: /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 msgid "Set the cover for the book from the selected format" msgstr "" -#: /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:400 msgid "Update metadata from the metadata in the selected format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:400 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:405 msgid "Reset cover to default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:407 msgid "Download &cover" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:408 +msgid "Generate a default cover based on the title and author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:409 +msgid "&Generate cover" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:56 msgid "Password needed" msgstr "Es necessita una contrasenya." @@ -7615,7 +7676,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:464 msgid "Convert books" -msgstr "" +msgstr "Converteix llibres" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:465 msgid "V" @@ -7669,7 +7730,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:473 msgid "Help" -msgstr "" +msgstr "Ajuda" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:474 msgid "Ctrl+P" @@ -7900,10 +7961,6 @@ msgstr "" msgid "Restore default layout" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:566 -msgid "Not allowed" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:567 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " @@ -8001,7 +8058,7 @@ msgid "Do not check for updates" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:595 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:598 msgid "Calibre Library" msgstr "" @@ -8119,11 +8176,11 @@ msgstr "" msgid "ERROR: Unhandled exception" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:93 msgid "Book has neither title nor ISBN" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:119 msgid "No matches found for this book" msgstr "" @@ -8131,7 +8188,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:254 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:554 msgid "Search" -msgstr "" +msgstr "Cerca" #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:306 msgid "The selected search will be permanently deleted. Are you sure?" @@ -8151,7 +8208,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/search_restriction_mixin.py:10 msgid "Restrict to" -msgstr "" +msgstr "Restringit a" #: /home/kovid/work/calibre/src/calibre/gui2/search_restriction_mixin.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/search_restriction_mixin.py:55 @@ -8181,7 +8238,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:131 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 msgid " or " -msgstr "" +msgstr " o " #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:69 @@ -8228,7 +8285,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:190 msgid "Rename '%s'" -msgstr "" +msgstr "Reanomena '%s'" #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:194 msgid "Edit sort for '%s'" @@ -8263,7 +8320,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:432 #: /home/kovid/work/calibre/src/calibre/library/database2.py:291 msgid "Searches" -msgstr "" +msgstr "Cerques" #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:510 msgid "Duplicate search name" @@ -8666,7 +8723,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:455 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:138 msgid "Go to..." -msgstr "" +msgstr "Vés a..." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:467 msgid "Next Section" @@ -8726,19 +8783,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:36 msgid "Scroll down" -msgstr "" +msgstr "Desplaça avall" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:39 msgid "Scroll up" -msgstr "" +msgstr "Desplaça amunt" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:42 msgid "Scroll left" -msgstr "" +msgstr "Desplaça a l'esquerra" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:45 msgid "Scroll right" -msgstr "" +msgstr "Desplaça a la dreta" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:115 msgid "Book format" @@ -8758,7 +8815,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:268 msgid "Print Preview" -msgstr "" +msgstr "Vista prèvia d'impressió" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:299 msgid "Connecting to dict.org to lookup: %s…" @@ -8774,7 +8831,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:418 msgid "Add bookmark" -msgstr "" +msgstr "Afegeix un nou marcador" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:418 msgid "Enter title for bookmark:" @@ -8810,7 +8867,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:591 msgid "Could not open ebook" -msgstr "" +msgstr "No s'ha pogut obrir l'ebook" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:665 msgid "Options to control the ebook viewer" @@ -8846,15 +8903,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:190 msgid "Next page" -msgstr "" +msgstr "Pàgina següent" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:191 msgid "Previous page" -msgstr "" +msgstr "Pàgina anterior" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:192 msgid "Font size larger" -msgstr "" +msgstr "Grandària de lletra base més gran:" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 msgid "Font size smaller" @@ -8890,11 +8947,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205 msgid "Print" -msgstr "" +msgstr "Imprimeix" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:206 msgid "Find previous" -msgstr "" +msgstr "Troba l' anterior" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:207 msgid "Find previous occurrence" @@ -8946,62 +9003,62 @@ msgstr "Mostra" #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:877 msgid "Hide" -msgstr "" +msgstr "Amaga" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:367 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:370 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:371 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:374 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:373 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:376 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:450 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:453 msgid "Moving library..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:466 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:467 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:470 msgid "Failed to move library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:524 msgid "Invalid database" -msgstr "" +msgstr "Base de dades no vàlida" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:525 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:533 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:536 msgid "Could not move library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:587 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:590 msgid "Select location for books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:662 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:665 msgid "welcome wizard" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:49 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:50 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:42 @@ -9009,7 +9066,7 @@ msgid "Welcome to calibre" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:50 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:43 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:43 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:51 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:43 @@ -9030,19 +9087,19 @@ msgstr "" msgid "&Devices" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:44 msgid "" "

Congratulations!

You have successfully setup calibre. Press the %s " "button to apply your settings." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:45 msgid "" "

Demo videos

Videos demonstrating the various features of calibre are " "available online." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:46 msgid "" "

User Manual

A User Manual is also available online." @@ -9073,7 +9130,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:54 msgid "&Change" -msgstr "" +msgstr "&Canvia" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:55 msgid "" @@ -9194,7 +9251,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:127 msgid "Use Gmail" -msgstr "" +msgstr "Fes servir Gmail" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:128 msgid "&Test email" @@ -9776,7 +9833,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/database2.py:566 msgid "Main" -msgstr "" +msgstr "Inici" #: /home/kovid/work/calibre/src/calibre/library/database2.py:1796 msgid "

Migrating old database to ebook library in %s

" @@ -9808,11 +9865,11 @@ msgstr "Classificació" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:24 msgid "The title" -msgstr "" +msgstr "El títol" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:25 msgid "The authors" -msgstr "" +msgstr "Els autors" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:26 msgid "" @@ -9822,7 +9879,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:28 msgid "The tags" -msgstr "" +msgstr "Les etiquetes" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:29 msgid "The series" @@ -9844,11 +9901,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:35 msgid "The publisher" -msgstr "" +msgstr "L'editorial" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:36 msgid "The date" -msgstr "" +msgstr "La data" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:37 msgid "The published date" @@ -9924,7 +9981,7 @@ msgstr "" msgid "Replace whitespace with underscores." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:258 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:263 msgid "Requested formats not available" msgstr "" @@ -10006,7 +10063,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:231 msgid "Books in your library" -msgstr "" +msgstr "LLibres a la teva biblioteca" #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:237 msgid "By " @@ -10014,9 +10071,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:238 msgid "Books sorted by " -msgstr "" +msgstr "Llibres ordenats per " -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:542 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:549 msgid "Newest" msgstr "" @@ -10068,7 +10125,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/config.py:681 msgid "Read metadata from files" -msgstr "" +msgstr "Llegeix metadades dels fitxers" #: /home/kovid/work/calibre/src/calibre/utils/config.py:683 msgid "The priority of worker processes" @@ -10096,27 +10153,27 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:43 msgid "Waiting..." -msgstr "" +msgstr "Esperant..." #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:51 msgid "Stopped" -msgstr "" +msgstr "Aturat" #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 msgid "Finished" -msgstr "" +msgstr "Finalitzat" #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:75 msgid "Working..." -msgstr "" +msgstr "Treballant..." #: /home/kovid/work/calibre/src/calibre/utils/localization.py:95 msgid "Brazilian Portuguese" -msgstr "" +msgstr "Portuguès de Canadà" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:96 msgid "English (UK)" -msgstr "" +msgstr "Anglès (UK)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:97 msgid "Simplified Chinese" @@ -10136,59 +10193,59 @@ msgstr "Anglès" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:101 msgid "English (Australia)" -msgstr "" +msgstr "Anglès (Austràlia)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:102 msgid "English (New Zealand)" -msgstr "" +msgstr "Anglès (Nova Zelanda)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:103 msgid "English (Canada)" -msgstr "" +msgstr "Anglès (Canadà)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:104 msgid "English (India)" -msgstr "" +msgstr "Anglès (Ãndia)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:105 msgid "English (Thailand)" -msgstr "" +msgstr "Anglès (Tailàndia)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:106 msgid "English (Cyprus)" -msgstr "" +msgstr "Anglès (Xipre)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:107 msgid "English (Pakistan)" -msgstr "" +msgstr "Anglès (Paquistan)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:108 msgid "English (Israel)" -msgstr "" +msgstr "Anglès (Israel)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:109 msgid "English (Singapore)" -msgstr "" +msgstr "Anglès (Singapur)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:110 msgid "English (Yemen)" -msgstr "" +msgstr "Anglès (Iemen)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:111 msgid "English (Ireland)" -msgstr "" +msgstr "Anglès (Irlanda)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:112 msgid "English (China)" -msgstr "" +msgstr "Anglès (Xina)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:113 msgid "Spanish (Paraguay)" -msgstr "" +msgstr "Espanyol (Paraguai)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:114 msgid "German (AT)" -msgstr "" +msgstr "Alemany (AT)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:115 msgid "Dutch (NL)" @@ -10254,67 +10311,67 @@ msgid "" "Do not download latest version of builtin recipes from the calibre server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:47 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:46 msgid "Unknown News Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:610 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:609 msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:709 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:708 msgid "Download finished" msgstr "S'ha finalitzat la baixada" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:711 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:710 msgid "Failed to download the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:717 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:716 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:719 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:718 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:721 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:720 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:810 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:809 msgid "Could not fetch article. Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:831 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:830 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:836 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:835 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:842 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:841 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:844 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:843 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:925 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:924 msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:941 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:940 msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:951 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:950 msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:963 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:962 msgid "Downloading cover from %s" msgstr "" @@ -10322,29 +10379,29 @@ msgstr "" msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1193 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1172 msgid "Untitled Article" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1264 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1243 msgid "Article downloaded: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1275 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1254 msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1292 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1271 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1439 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1418 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:1455 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1434 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." @@ -10352,7 +10409,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:47 msgid "You" -msgstr "" +msgstr "Tu" #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:73 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:82 diff --git a/src/calibre/translations/calibre.pot b/src/calibre/translations/calibre.pot index 9b967343b4..ed1b0044d2 100644 --- a/src/calibre/translations/calibre.pot +++ b/src/calibre/translations/calibre.pot @@ -4,9 +4,9 @@ # msgid "" msgstr "" -"Project-Id-Version: calibre 0.7.13\n" -"POT-Creation-Date: 2010-08-10 18:33+MDT\n" -"PO-Revision-Date: 2010-08-10 18:33+MDT\n" +"Project-Id-Version: calibre 0.7.14\n" +"POT-Creation-Date: 2010-08-14 23:17+MDT\n" +"PO-Revision-Date: 2010-08-14 23:17+MDT\n" "Last-Translator: Automatically generated\n" "Language-Team: LANGUAGE\n" "MIME-Version: 1.0\n" @@ -15,371 +15,375 @@ msgstr "" "Generated-By: pygettext.py 1.5\n" -#: /home/kovid/work/trunk/src/calibre/customize/__init__.py:43 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 msgid "Does absolutely nothing" msgstr "" -#: /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:75 -#: /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/sony_cache.py:506 -#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:405 -#: /home/kovid/work/trunk/src/calibre/ebooks/chm/input.py:97 -#: /home/kovid/work/trunk/src/calibre/ebooks/chm/input.py:100 -#: /home/kovid/work/trunk/src/calibre/ebooks/chm/metadata.py:56 -#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:402 -#: /home/kovid/work/trunk/src/calibre/ebooks/fb2/input.py:70 -#: /home/kovid/work/trunk/src/calibre/ebooks/fb2/input.py:72 -#: /home/kovid/work/trunk/src/calibre/ebooks/html/input.py:335 -#: /home/kovid/work/trunk/src/calibre/ebooks/html/input.py:338 -#: /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:236 -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:279 -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:282 -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:398 -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/book/base.py:20 -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/book/base.py:21 -#: /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/fetch.py:332 -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/meta.py:36 -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/meta.py:64 -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/meta.py:66 -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/meta.py:123 -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/meta.py:125 -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/opf2.py:945 -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/opf2.py:1057 -#: /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:39 -#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/reader.py:65 -#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/reader.py:78 -#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/reader.py:119 -#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/reader.py:153 -#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/reader.py:611 -#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/reader.py:817 -#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/reader.py:819 -#: /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:911 -#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:916 -#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:982 -#: /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:234 -#: /home/kovid/work/trunk/src/calibre/ebooks/rtf/input.py:236 -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:287 -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:294 -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:826 -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:829 -#: /home/kovid/work/trunk/src/calibre/gui2/add.py:172 -#: /home/kovid/work/trunk/src/calibre/gui2/add.py:179 -#: /home/kovid/work/trunk/src/calibre/gui2/convert/__init__.py:22 -#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:110 -#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:135 -#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:137 -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:868 -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:877 -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1162 -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1165 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comicconf.py:47 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:120 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:155 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:512 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:173 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:362 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:382 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:882 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:1060 -#: /home/kovid/work/trunk/src/calibre/gui2/metadata.py:91 -#: /home/kovid/work/trunk/src/calibre/gui2/metadata.py:96 -#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:185 -#: /home/kovid/work/trunk/src/calibre/library/cli.py:213 -#: /home/kovid/work/trunk/src/calibre/library/database.py:913 -#: /home/kovid/work/trunk/src/calibre/library/database2.py:358 -#: /home/kovid/work/trunk/src/calibre/library/database2.py:370 -#: /home/kovid/work/trunk/src/calibre/library/database2.py:979 -#: /home/kovid/work/trunk/src/calibre/library/database2.py:1048 -#: /home/kovid/work/trunk/src/calibre/library/database2.py:1649 -#: /home/kovid/work/trunk/src/calibre/library/database2.py:1651 -#: /home/kovid/work/trunk/src/calibre/library/database2.py:1773 -#: /home/kovid/work/trunk/src/calibre/library/server/mobile.py:199 -#: /home/kovid/work/trunk/src/calibre/library/server/opds.py:134 -#: /home/kovid/work/trunk/src/calibre/library/server/opds.py:137 -#: /home/kovid/work/trunk/src/calibre/library/server/xml.py:68 -#: /home/kovid/work/trunk/src/calibre/utils/localization.py:117 -#: /home/kovid/work/trunk/src/calibre/utils/podofo/__init__.py:46 -#: /home/kovid/work/trunk/src/calibre/utils/podofo/__init__.py:64 -#: /home/kovid/work/trunk/src/calibre/utils/podofo/__init__.py:78 -#: /home/kovid/work/trunk/src/calibre/web/feeds/recipes/collection.py:47 -#: /home/kovid/work/trunk/src/calibre/web/feeds/recipes/collection.py:50 +#: /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:75 +#: /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/sony_cache.py:506 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:405 +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:56 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:407 +#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:70 +#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:72 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:335 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:338 +#: /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:236 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:279 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:282 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:398 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:20 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:21 +#: /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/fetch.py:333 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:36 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:123 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:125 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:945 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1057 +#: /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:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:65 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:78 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:119 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:153 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:611 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:817 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:819 +#: /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:911 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:916 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:982 +#: /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:97 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:98 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:234 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:236 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:281 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:284 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:41 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:862 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:871 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1156 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1159 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:513 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1060 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:186 +#: /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:358 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:370 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1001 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1070 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1671 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1673 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1796 +#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:199 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:134 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:137 +#: /home/kovid/work/calibre/src/calibre/library/server/xml.py:68 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:117 +#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:46 +#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:64 +#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:78 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:47 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:50 msgid "Unknown" msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/__init__.py:64 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:64 msgid "Base" msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/__init__.py:172 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:172 msgid "File type" msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/__init__.py:206 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:206 msgid "Metadata reader" msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/__init__.py:235 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:235 msgid "Metadata writer" msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/__init__.py:263 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:263 msgid "Catalog generator" msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:16 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:359 +msgid "User Interface Action" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:16 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 library." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:52 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:52 msgid "Character encoding for the input HTML files. Common choices include: cp1252, latin1, iso-8859-1 and utf-8." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:59 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:59 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 file to the library." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:93 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:93 msgid "Extract cover from comic files" msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:120 -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:131 -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:143 -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:153 -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:163 -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:174 -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:184 -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:194 -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:204 -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:214 -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:224 -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:235 -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:246 -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:258 -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:279 -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:290 -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:300 -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:310 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:120 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:131 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:143 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:153 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:163 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:174 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:184 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:194 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:204 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:214 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:224 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:235 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:246 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:258 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:279 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:290 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:300 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:310 msgid "Read metadata from %s files" msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:269 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:269 msgid "Read metadata from ebooks in RAR archives" msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:321 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:321 msgid "Read metadata from ebooks in ZIP archives" msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:334 -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:344 -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:354 -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:376 -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:387 -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:397 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:334 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:344 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:354 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:376 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:387 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:397 msgid "Set metadata in %s files" msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:365 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:365 msgid "Set metadata from %s files" msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/conversion.py:102 +#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:102 msgid "Conversion Input" msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/conversion.py:125 +#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:129 msgid "Specify the character encoding of the input document. If set this option will override any encoding declared by the document itself. Particularly useful for documents that do not declare an encoding or that have erroneous encoding declarations." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/conversion.py:237 +#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:241 msgid "Conversion Output" msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/conversion.py:251 +#: /home/kovid/work/calibre/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." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:45 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:45 msgid "Input profile" msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:49 +#: /home/kovid/work/calibre/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." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:57 -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:414 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:57 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:414 msgid "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:69 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:69 msgid "This profile is intended for the SONY PRS 300." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:78 -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:449 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:78 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:449 msgid "This profile is intended for the SONY PRS-900." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:86 -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:479 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:86 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:479 msgid "This profile is intended for the Microsoft Reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:97 -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:490 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:97 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:490 msgid "This profile is intended for the Mobipocket books." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:110 -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:503 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:110 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:503 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:122 -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:515 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:122 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:515 msgid "This profile is intended for the Hanlin V5 and its clones." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:132 -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:523 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:132 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:523 msgid "This profile is intended for the Cybook G3." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:145 -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:536 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:145 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:536 msgid "This profile is intended for the Cybook Opus." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:157 -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:547 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:157 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:547 msgid "This profile is intended for the Amazon Kindle." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:169 -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:584 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:169 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:584 msgid "This profile is intended for the Irex Illiad." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:181 -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:597 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:181 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:597 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:194 -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:611 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:194 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:611 msgid "This profile is intended for the IRex Digital Reader 800." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:206 -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:625 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:206 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:625 msgid "This profile is intended for the B&N Nook." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:228 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:228 msgid "Output profile" msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:232 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:232 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 devices." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:259 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:259 msgid "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:427 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:427 msgid "This profile is intended for the Kobo Reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:440 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:440 msgid "This profile is intended for the SONY PRS-300." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:458 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:458 msgid "This profile is intended for the 5-inch JetBook." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:467 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:467 msgid "This profile is intended for the SONY PRS line. The 500/505/700 etc, in landscape mode. Mainly useful for comics." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:566 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:566 msgid "This profile is intended for the Amazon Kindle DX." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/ui.py:33 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:33 msgid "Installed plugins" msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/ui.py:34 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:34 msgid "Mapping for filetype plugins" msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/ui.py:35 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:35 msgid "Local plugin customization" msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/ui.py:36 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:36 msgid "Disabled plugins" msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/ui.py:37 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:37 msgid "Enabled plugins" msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/ui.py:85 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:85 msgid "No valid plugin found in " msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/ui.py:478 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:489 msgid "Initialization of plugin %s failed with traceback:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/ui.py:511 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:522 msgid "" " %prog options\n" "\n" @@ -387,608 +391,608 @@ msgid "" " " msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/ui.py:517 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:528 msgid "Add a plugin by specifying the path to the zip file containing it." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/ui.py:519 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:530 msgid "Remove a custom plugin by name. Has no effect on builtin plugins" msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/ui.py:521 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:532 msgid "Customize plugin. Specify name of plugin and customization string separated by a comma." msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/ui.py:523 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:534 msgid "List all installed plugins" msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/ui.py:525 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:536 msgid "Enable the named plugin" msgstr "" -#: /home/kovid/work/trunk/src/calibre/customize/ui.py:527 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:538 msgid "Disable the named plugin" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/android/driver.py:13 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:13 msgid "Communicate with Android phones." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/android/driver.py:48 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:50 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/trunk/src/calibre/devices/android/driver.py:90 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:92 msgid "Communicate with S60 phones." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:87 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:87 msgid "Communicate with iTunes/iBooks." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:93 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:93 msgid "Apple device detected, launching iTunes, please wait ..." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:246 -#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:249 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:246 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:249 msgid "Updating device metadata listing..." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:323 -#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:362 -#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:921 -#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:957 -#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:2822 -#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:2861 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:323 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:362 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:921 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:957 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2822 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2861 msgid "%d of %d" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:369 -#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:962 -#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:2867 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:369 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:962 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2867 msgid "finished" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:544 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:544 msgid "Use Series as Category in iTunes/iBooks" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:546 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:546 msgid "Cache covers from iTunes/iBooks" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:558 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:558 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/trunk/src/calibre/devices/apple/driver.py:886 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:886 msgid "" "Some cover art could not be converted.\n" "Click 'Show Details' for a list." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:2491 -#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:817 -#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:823 -#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:851 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:244 -#: /home/kovid/work/trunk/src/calibre/library/database2.py:187 -#: /home/kovid/work/trunk/src/calibre/library/database2.py:200 -#: /home/kovid/work/trunk/src/calibre/library/database2.py:1533 -#: /home/kovid/work/trunk/src/calibre/library/field_metadata.py:132 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2491 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:817 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:823 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:851 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:244 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:187 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:200 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1555 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:132 msgid "News" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:2729 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2729 msgid "Communicate with iTunes." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/binatone/driver.py:17 +#: /home/kovid/work/calibre/src/calibre/devices/binatone/driver.py:17 msgid "Communicate with the Binatone Readme eBook reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/blackberry/driver.py:13 +#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:13 msgid "Communicate with the Blackberry smart phone." msgstr "" -#: /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 +#: /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 msgid "Kovid Goyal" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/cybook/driver.py:22 +#: /home/kovid/work/calibre/src/calibre/devices/cybook/driver.py:22 msgid "Communicate with the Cybook Gen 3 / Opus eBook reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/eb600/driver.py:24 +#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:24 msgid "Communicate with the EB600 eBook reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/eb600/driver.py:193 +#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:193 msgid "Communicate with the Astak Mentor EB600" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/eb600/driver.py:216 +#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:216 msgid "Communicate with the PocketBook 301 reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/edge/driver.py:17 +#: /home/kovid/work/calibre/src/calibre/devices/edge/driver.py:17 msgid "Entourage Edge" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/edge/driver.py:18 +#: /home/kovid/work/calibre/src/calibre/devices/edge/driver.py:18 msgid "Communicate with the Entourage Edge." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/eslick/driver.py:16 +#: /home/kovid/work/calibre/src/calibre/devices/eslick/driver.py:16 msgid "Communicate with the ESlick eBook reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/eslick/driver.py:49 +#: /home/kovid/work/calibre/src/calibre/devices/eslick/driver.py:49 msgid "Communicate with the Sigmatek eBook reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/folder_device/driver.py:16 -#: /home/kovid/work/trunk/src/calibre/devices/folder_device/driver.py:30 +#: /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/trunk/src/calibre/devices/folder_device/driver.py:26 -#: /home/kovid/work/trunk/src/calibre/devices/interface.py:14 +#: /home/kovid/work/calibre/src/calibre/devices/folder_device/driver.py:26 +#: /home/kovid/work/calibre/src/calibre/devices/interface.py:14 msgid "Device Interface" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/hanlin/driver.py:19 +#: /home/kovid/work/calibre/src/calibre/devices/hanlin/driver.py:19 msgid "Communicate with Hanlin V3 eBook readers." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/hanlin/driver.py:87 +#: /home/kovid/work/calibre/src/calibre/devices/hanlin/driver.py:87 msgid "Communicate with Hanlin V5 eBook readers." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/hanlin/driver.py:106 +#: /home/kovid/work/calibre/src/calibre/devices/hanlin/driver.py:106 msgid "Communicate with the BOOX eBook reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/hanlin/driver.py:123 +#: /home/kovid/work/calibre/src/calibre/devices/hanlin/driver.py:123 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/trunk/src/calibre/devices/hanvon/driver.py:18 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:18 msgid "Communicate with the Hanvon N520 eBook reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/hanvon/driver.py:40 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:40 msgid "Communicate with The Book reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/hanvon/driver.py:52 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:52 msgid "Communicate with the SpringDesign Alex eBook reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/hanvon/driver.py:68 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:68 msgid "Communicate with the Azbooka" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/hanvon/driver.py:81 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:81 msgid "Communicate with the Elonex EB 511 eBook reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/iliad/driver.py:16 +#: /home/kovid/work/calibre/src/calibre/devices/iliad/driver.py:16 msgid "Communicate with the IRex Iliad eBook reader." msgstr "" -#: /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:42 +#: /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:42 msgid "John Schember" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/irexdr/driver.py:16 +#: /home/kovid/work/calibre/src/calibre/devices/irexdr/driver.py:16 msgid "Communicate with the IRex Digital Reader 1000 eBook reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/irexdr/driver.py:42 +#: /home/kovid/work/calibre/src/calibre/devices/irexdr/driver.py:42 msgid "Communicate with the IRex Digital Reader 800" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/iriver/driver.py:15 +#: /home/kovid/work/calibre/src/calibre/devices/iriver/driver.py:15 msgid "Communicate with the Iriver Story reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/jetbook/driver.py:20 +#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:20 msgid "Communicate with the JetBook eBook reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/jetbook/driver.py:86 +#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:86 msgid "Communicate with the MiBuk Wolder reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/kindle/driver.py:42 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:42 msgid "Communicate with the Kindle eBook reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/kindle/driver.py:169 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:169 msgid "Communicate with the Kindle 2 eBook reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/kindle/driver.py:210 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:210 msgid "Communicate with the Kindle DX eBook reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:22 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:22 msgid "Communicate with the Kobo Reader" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:53 -#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:56 -#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:59 -#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:161 -#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:68 -#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:71 -#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:74 -#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:136 -#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:143 -#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:166 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:53 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:56 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:59 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:161 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:68 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:71 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:74 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:136 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:143 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:166 msgid "Getting list of books on device..." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:221 -#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:265 -#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:253 -#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:271 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:221 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:265 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:253 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:271 msgid "Removing books from device..." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:269 -#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:276 -#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:278 -#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:283 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:269 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:276 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:278 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:283 msgid "Removing books from device metadata listing..." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:281 -#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:315 -#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:217 -#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:247 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:281 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:315 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:217 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:247 msgid "Adding books to device metadata listing..." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:366 -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:441 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:366 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:249 msgid "Not Implemented" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:367 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:367 msgid "\".kobo\" files do not exist on the device as books instead, they are rows in the sqlite database. Currently they cannot be exported or viewed." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/misc.py:17 +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:17 msgid "Communicate with the Palm Pre" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/misc.py:37 +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:37 msgid "Communicate with the Booq Avant" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/misc.py:58 +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:58 msgid "Communicate with the Sweex MM300" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/misc.py:78 +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:78 msgid "Communicate with the Pandigital Novel" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/nokia/driver.py:17 +#: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:17 msgid "Communicate with the Nokia 770 internet tablet." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/nokia/driver.py:40 +#: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:40 msgid "Communicate with the Nokia 810 internet tablet." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/nokia/driver.py:74 +#: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:74 msgid "Communicate with the Nokia E52" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/nook/driver.py:20 +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:20 msgid "The Nook" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/nook/driver.py:21 +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:21 msgid "Communicate with the Nook eBook reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/nuut2/driver.py:17 +#: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/prs500/driver.py:89 +#: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:89 msgid "Communicate with the Sony PRS-500 eBook reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/prs505/driver.py:22 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:22 msgid "Communicate with all the Sony eBook readers." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/prs505/driver.py:61 +#: /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: " msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/prs505/sony_cache.py:144 -#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/transforms/structure.py:68 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:144 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:68 msgid "Unnamed" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/sne/driver.py:17 +#: /home/kovid/work/calibre/src/calibre/devices/sne/driver.py:17 msgid "Communicate with the Samsung SNE eBook reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/teclast/driver.py:11 -msgid "Communicate with the Teclast K3 reader." +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:11 +msgid "Communicate with the Teclast K3/K5 reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/teclast/driver.py:37 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:36 msgid "Communicate with the Newsmy reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/teclast/driver.py:49 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:48 msgid "Communicate with the iPapyrus reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:255 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:255 msgid "Unable to detect the %s disk drive. Try rebooting." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:435 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:435 msgid "Unable to detect the %s mount point. Try rebooting." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:500 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:500 msgid "Unable to detect the %s disk drive." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:593 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:593 msgid "Could not find mount helper: %s." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:605 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:605 msgid "Unable to detect the %s disk drive. Your kernel is probably exporting a deprecated version of SYSFS." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:613 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:613 msgid "Unable to mount main memory (Error code: %d)" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:750 -#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:752 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:750 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:752 msgid "The reader has no storage card in this slot." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:754 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:754 msgid "Selected slot: %s is not supported." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:783 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:783 msgid "There is insufficient free space in main memory" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:785 -#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:787 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:785 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:787 msgid "There is insufficient free space on the storage card" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/usbms/deviceconfig.py:12 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:12 msgid "Configure Device" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/usbms/deviceconfig.py:37 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:37 msgid "settings for device drivers" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/usbms/deviceconfig.py:39 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:39 msgid "Ordered list of formats the device will accept" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/usbms/deviceconfig.py:41 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:41 msgid "Place files in sub directories if the device supports them" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/usbms/deviceconfig.py:43 -#: /home/kovid/work/trunk/src/calibre/gui2/device_drivers/configwidget_ui.py:81 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:81 msgid "Read metadata from files on device" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/usbms/deviceconfig.py:45 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:45 msgid "Use author sort instead of author" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/usbms/deviceconfig.py:47 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:47 msgid "Template to control how books are saved" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/usbms/deviceconfig.py:50 -#: /home/kovid/work/trunk/src/calibre/gui2/device_drivers/configwidget_ui.py:84 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:84 msgid "Extra customization" msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:41 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:41 msgid "Communicate with an eBook reader." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:57 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:57 msgid "Get device information..." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:194 -#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:196 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:194 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:196 msgid "Transferring books to device..." msgstr "" -#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:314 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:314 msgid "Sending metadata to device..." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:41 msgid "%prog [options] mybook.chm" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:42 +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:42 msgid "Output directory. Defaults to current directory" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:45 -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:589 +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:45 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:589 msgid "Set the book title" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:47 -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:591 +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:47 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:591 msgid "Set sort key for the title" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:49 -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:593 +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:49 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:593 msgid "Set the author" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:51 -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:595 +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:51 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:595 msgid "Set sort key for the author" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:53 -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:597 +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:53 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:597 msgid "The category this book belongs to. E.g.: History" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:56 -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:600 +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:56 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:600 msgid "Path to a graphic that will be set as this files' thumbnail" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:59 +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:59 msgid "Path to a txt file containing a comment." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:62 -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:607 +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:62 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:607 msgid "Extract thumbnail from LRF file" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:63 -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:608 +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:63 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:608 msgid "Set the publisher" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:64 -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:609 +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:64 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:609 msgid "Set the book classification" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:65 -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:610 +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:65 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:610 msgid "Set the book creator" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:66 -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:611 +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:66 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:611 msgid "Set the book producer" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:68 -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:613 +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:68 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/chm/reader.py:70 -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:615 +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:70 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:615 msgid "Set book ID" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:72 +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:72 msgid "Set font delta" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:178 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:182 msgid "Rendered %s" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:181 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:185 msgid "Failed %s" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:235 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:239 msgid "" "Failed to process comic: \n" "\n" "%s" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:253 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:258 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/trunk/src/calibre/ebooks/comic/input.py:257 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:262 msgid "Disable normalize (improve contrast) color range for pictures. Default: False" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:260 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:265 msgid "Maintain picture aspect ratio. Default is to fill the screen." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:262 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:267 msgid "Disable sharpening." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:264 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:269 msgid "Disable trimming of comic pages. For some comics, trimming might remove content as well as borders." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:267 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:272 msgid "Don't split landscape images into two portrait images" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:269 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:274 msgid "Keep aspect ratio and scale image using screen height as image width for viewing in landscape mode." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:272 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:277 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/trunk/src/calibre/ebooks/comic/input.py:276 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281 msgid "Enable Despeckle. Reduces speckle noise. May greatly increase processing time." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:279 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:284 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/trunk/src/calibre/ebooks/comic/input.py:283 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288 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/trunk/src/calibre/ebooks/comic/input.py:287 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:292 msgid "Apply no processing to the image" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:289 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:294 msgid "Do not convert the image to grayscale (black and white)" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:426 -#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:437 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:431 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:442 msgid "Page" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/cli.py:19 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:19 msgid "" "input_file output_file [options]\n" "\n" @@ -1003,321 +1007,321 @@ msgid "" "For full documentation of the conversion system see\n" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/cli.py:97 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:97 msgid "INPUT OPTIONS" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/cli.py:98 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:98 msgid "Options to control the processing of the input %s file" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 msgid "OUTPUT OPTIONS" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/cli.py:105 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:105 msgid "Options to control the processing of the output %s" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/cli.py:119 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:119 msgid "Options to control the look and feel of the output" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/cli.py:135 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:135 msgid "Control auto-detection of document structure." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/cli.py:145 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/conversion/cli.py:155 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:155 msgid "Options to set metadata in the output" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/cli.py:158 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:158 msgid "Options to help with debugging the conversion" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/cli.py:183 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:183 msgid "List builtin recipes" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/cli.py:256 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:256 msgid "Output saved to" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:95 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:95 msgid "Level of verbosity. Specify multiple times for greater verbosity." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:102 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/conversion/plumber.py:111 +#: /home/kovid/work/calibre/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. For example resolution dependent lengths (i.e. lengths in pixels). Choices are:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:122 +#: /home/kovid/work/calibre/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 cases, an output profile is required to produce documents that will work on a device. For example EPUB on the SONY reader. Choices are:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:133 +#: /home/kovid/work/calibre/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 fonts in the output bigger and vice versa. By default, the base font size is chosen based on the output profile you chose." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:143 +#: /home/kovid/work/calibre/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-large, with the final size being for huge fonts. The font rescaling algorithm uses these sizes to intelligently rescale fonts. The default is to use a mapping based on the output profile you chose." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:155 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:155 msgid "Disable all rescaling of font sizes." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:162 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/conversion/plumber.py:170 +#: /home/kovid/work/calibre/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 page and other artifacts. This option will extract the content from the tables and present it in a linear fashion." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:180 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/conversion/plumber.py:189 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/conversion/plumber.py:197 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/conversion/plumber.py:205 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/conversion/plumber.py:213 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:213 msgid "Don't add auto-detected chapters to the Table of Contents." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:220 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/conversion/plumber.py:227 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/conversion/plumber.py:235 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/conversion/plumber.py:246 +#: /home/kovid/work/calibre/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 \"part\" as chapter titles as well as any tags that have class=\"chapter\". The expression used must evaluate to a list of elements. To disable chapter detection, use the expression \"/\". See the XPath Tutorial in the calibre User Manual for further help on using this feature." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:260 +#: /home/kovid/work/calibre/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 chapters. A value of \"none\" will disable chapter marking and a value of \"both\" will use both page breaks and lines to mark chapters." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:270 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/conversion/plumber.py:279 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:279 msgid "An XPath expression. Page breaks are inserted before the specified elements." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:285 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/conversion/plumber.py:290 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/conversion/plumber.py:295 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/conversion/plumber.py:300 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/conversion/plumber.py:306 +#: /home/kovid/work/calibre/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 \"justify\" converts all unjustified text to justified. A value of \"original\" (the default) does not change justification in the source file. Note that only some output formats support justification." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:316 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/conversion/plumber.py:323 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/conversion/plumber.py:330 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/conversion/plumber.py:336 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/conversion/plumber.py:343 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/conversion/plumber.py:351 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/conversion/plumber.py:359 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/conversion/plumber.py:367 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:367 msgid "Use a regular expression to try and remove the header." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:374 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:374 msgid "The regular expression to use to remove the header." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:380 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:380 msgid "Use a regular expression to try and remove the footer." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:387 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:387 msgid "The regular expression to use to remove the footer." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:394 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/conversion/plumber.py:401 +#: /home/kovid/work/calibre/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 will replace \"%s\" with \"Mikhail Gorbachiov\". Also, note that in cases where there are multiple representations of a character (characters shared by Chinese and Japanese for instance) the representation used by the largest number of people will be used (Chinese in the previous example)." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:416 +#: /home/kovid/work/calibre/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 not have support for ligatures in their default fonts, so they are unlikely to render correctly. By default, calibre will turn a ligature into the corresponding pair of normal characters. This option will preserve them instead." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:428 -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:38 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:428 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:38 msgid "Set the title." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:432 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:432 msgid "Set the authors. Multiple authors should be separated by ampersands." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:437 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:437 msgid "The version of the title to be used for sorting. " msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:441 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:441 msgid "String to be used when sorting by author. " msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:445 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:445 msgid "Set the cover to the specified file or URL" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:449 -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:54 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:449 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:54 msgid "Set the ebook description." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:453 -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:56 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:453 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:56 msgid "Set the ebook publisher." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:457 -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:60 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:457 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:60 msgid "Set the series this ebook belongs to." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:461 -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:62 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:461 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:62 msgid "Set the index of the book in this series." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:465 -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:64 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:465 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:64 msgid "Set the rating. Should be a number between 1 and 5." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:469 -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:66 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:469 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:66 msgid "Set the ISBN of the book." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:473 -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:68 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:473 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:68 msgid "Set the tags for the book. Should be a comma separated list." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:477 -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:70 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:477 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:70 msgid "Set the book producer." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:481 -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:72 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:481 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:72 msgid "Set the language." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:485 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:485 msgid "Set the publication date." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:489 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:489 msgid "Set the book timestamp (used by the date column in calibre)." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:589 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:589 msgid "Could not find an ebook inside the archive" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:647 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:647 msgid "Values of series index and rating must be numbers. Ignoring" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:654 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:654 msgid "Failed to parse date/time" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:809 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:809 msgid "Converting input to HTML..." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:836 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:836 msgid "Running transforms on ebook..." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:923 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:923 msgid "Creating" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/epub/fix/__init__.py:18 +#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/__init__.py:18 msgid "ePub Fixer" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/epub/fix/epubcheck.py:18 +#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/epubcheck.py:18 msgid "Workaround epubcheck bugs" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/epub/fix/epubcheck.py:22 +#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/epubcheck.py:22 msgid "Workarounds for bugs in the latest release of epubcheck. epubcheck reports many things as errors that are not actually errors. epub-fix will try to detect these and replace them with constructs that epubcheck likes. This may cause significant changes to your epub, complain to the epubcheck project." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/epub/fix/main.py:19 +#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/main.py:19 msgid "" "%prog [options] file.epub\n" "\n" @@ -1326,223 +1330,223 @@ msgid "" "By default, no fixing is done and messages are printed out for each error detected. Use the options to control which errors are automatically fixed." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/epub/fix/main.py:50 +#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/main.py:50 msgid "You must specify an epub file" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/epub/fix/unmanifested.py:17 +#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/unmanifested.py:17 msgid "Fix unmanifested files" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/epub/fix/unmanifested.py:21 +#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/unmanifested.py:21 msgid "Fix unmanifested files. epub-fix can either add them to the manifest or delete them as specified by the delete unmanifested option." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/epub/fix/unmanifested.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/unmanifested.py:32 msgid "Delete unmanifested files instead of adding them to the manifest" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/epub/output.py:56 +#: /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/trunk/src/calibre/ebooks/epub/output.py:62 +#: /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 can be parsed faster and with less resources. However, splitting is slow and if your source file contains a very large number of page breaks, you should turn off splitting on page breaks." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/epub/output.py:73 +#: /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/trunk/src/calibre/ebooks/epub/output.py:80 +#: /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/trunk/src/calibre/ebooks/epub/output.py:86 +#: /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 on a device that does not support SVG, like the iPhone or the JetBook Lite. Without this option, such devices will display the cover as a blank page." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/epub/output.py:94 +#: /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 width to height). That means there may be white borders at the sides or top and bottom of the image, but the image will never be distorted. Without this option the image may be slightly distorted, but there will be no borders." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/epub/output.py:169 +#: /home/kovid/work/calibre/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 +#: /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 msgid "Table of Contents:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/fb2/input.py:32 +#: /home/kovid/work/calibre/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/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 +#: /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 msgid "Add Table of Contents to beginning of the book." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/html/input.py:248 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:248 msgid "Traverse links in HTML files breadth first. Normally, they are traversed depth first." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/html/input.py:255 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:255 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/trunk/src/calibre/ebooks/html/input.py:264 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:264 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 can result in various nasty side effects in the rest of of the conversion pipeline." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/html/input.py:272 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:272 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/trunk/src/calibre/ebooks/lit/from_any.py:47 +#: /home/kovid/work/calibre/src/calibre/ebooks/lit/from_any.py:47 msgid "Creating LIT file from EPUB..." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:320 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:320 msgid "\tBook Designer file detected." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:322 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:322 msgid "\tParsing HTML..." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:345 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:345 msgid "\tBaen file detected. Re-parsing..." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:361 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:361 msgid "Written preprocessed HTML to " msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:379 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:379 msgid "Processing %s" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:393 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:393 msgid "\tConverting to BBeB..." msgstr "" -#: /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 +#: /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 msgid "Could not parse file: %s" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:544 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:544 msgid "%s is an empty file" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:564 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:564 msgid "Failed to parse link %s %s" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:608 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:608 msgid "Cannot add link %s to TOC" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:957 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:957 msgid "Unable to process image %s. Error: %s" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:1002 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1002 msgid "Unable to process interlaced PNG %s" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:1017 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1017 msgid "" "Could not process image: %s\n" "%s" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:1772 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/lrf/html/convert_from.py:1774 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1774 msgid "" "Bad table:\n" "%s" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:1796 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1796 msgid "Table has cell that is too large" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:1862 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1862 msgid "Could not read cover image: %s" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:1865 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1865 msgid "Cannot read from: %s" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:1994 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1994 msgid "Failed to process opf file" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/lrfparser.py:136 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/lrf/lrfparser.py:137 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:137 msgid "Output LRS file" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/lrfparser.py:139 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:139 msgid "Do not save embedded image and font files to disk" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/lrfparser.py:158 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:158 msgid "Parsing LRF..." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/lrfparser.py:161 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:161 msgid "Creating XML..." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/lrfparser.py:163 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:163 msgid "LRS written to " msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/lrs/convert_from.py:267 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrs/convert_from.py:267 msgid "Could not read from thumbnail file:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/lrs/convert_from.py:287 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/lrf/lrs/convert_from.py:288 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrs/convert_from.py:288 msgid "Path to output file" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/lrs/convert_from.py:290 -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/isbndb.py:114 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrs/convert_from.py:290 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:114 msgid "Verbose processing" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/lrs/convert_from.py:292 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrs/convert_from.py:292 msgid "Convert LRS to LRS, useful for debugging." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:457 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:457 msgid "Invalid LRF file. Could not set metadata." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:582 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:582 msgid "" "%prog [options] mybook.lrf\n" "\n" @@ -1551,154 +1555,154 @@ msgid "" "\n" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:603 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/lrf/output.py:90 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:90 msgid "Enable autorotation of images that are wider than the screen width." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/output.py:94 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:94 msgid "Set the space between words in pts. Default is %default" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/output.py:97 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:97 msgid "Add a header to all the pages with title and author." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/output.py:100 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/lrf/output.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:104 msgid "Add extra spacing below the header. Default is %default pt." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/output.py:107 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/lrf/output.py:112 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/lrf/output.py:117 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/lrf/output.py:121 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:121 msgid "The serif family of fonts to embed" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/output.py:124 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:124 msgid "The sans-serif family of fonts to embed" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/output.py:127 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:127 msgid "The monospace family of fonts to embed" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/output.py:152 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:152 msgid "Comic" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:397 -#: /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/delete_matching_from_device.py:75 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:58 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:65 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:359 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:887 -#: /home/kovid/work/trunk/src/calibre/library/server/opds.py:550 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:397 +#: /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/delete_matching_from_device.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:887 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:550 msgid "Title" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:398 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:59 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:67 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:364 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:888 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:398 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:888 msgid "Author(s)" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:399 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:61 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:72 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:399 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:72 msgid "Publisher" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:400 -#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/info.py:49 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:400 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:49 msgid "Producer" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:401 -#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:35 -#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:210 -#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:211 -#: /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/models.py:318 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:1079 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:401 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:211 +#: /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/models.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1079 msgid "Comments" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:409 -#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:27 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories.py:50 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:73 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:306 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:1075 -#: /home/kovid/work/trunk/src/calibre/library/field_metadata.py:143 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:409 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1075 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:143 msgid "Tags" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:411 -#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:26 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories.py:50 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:74 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:323 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:1084 -#: /home/kovid/work/trunk/src/calibre/library/field_metadata.py:91 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:411 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:323 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1084 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:91 msgid "Series" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:412 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:412 msgid "Language" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:414 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:1067 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:414 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 msgid "Timestamp" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:416 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:63 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:70 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:416 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:70 msgid "Published" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:418 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:418 msgid "Rights" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/amazon.py:85 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/amazon.py:85 msgid "EDITORIAL REVIEW" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/archive.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/archive.py:41 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/trunk/src/calibre/ebooks/metadata/cli.py:20 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:20 msgid "options" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:21 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:21 msgid "" "\n" "Read/Write metadata from/to ebook files.\n" @@ -1712,147 +1716,147 @@ msgid "" "silently ignored.\n" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:40 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/metadata/cli.py:44 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/metadata/cli.py:48 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/metadata/cli.py:52 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:52 msgid "Set the cover to the specified file." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:58 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:58 msgid "Set the book category." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:74 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:74 msgid "Set the published date." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:77 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/metadata/cli.py:80 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/metadata/cli.py:83 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/metadata/cli.py:88 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:88 msgid "Set the BookID in LRF files" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:153 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:153 msgid "No file specified" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:168 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:168 msgid "Original metadata" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:185 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:185 msgid "Changed metadata" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:197 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:197 msgid "OPF created in" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:203 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:203 msgid "Cover saved to" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:205 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:205 msgid "No cover found" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/covers.py:27 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:27 msgid "Cover download" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/covers.py:79 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:79 msgid "Download covers from openlibrary.org" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/covers.py:107 -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/covers.py:136 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:107 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:136 msgid "ISBN: %s not found" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/covers.py:117 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:117 msgid "Download covers from librarything.com" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/covers.py:128 -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/library_thing.py:68 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:128 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:68 msgid "LibraryThing.com timed out. Try again later." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/covers.py:135 -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/library_thing.py:75 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:135 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:75 msgid "Could not fetch cover as server is experiencing high load. Please try again later." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/covers.py:139 -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/library_thing.py:79 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:139 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:79 msgid "LibraryThing.com server error. Try again later." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/douban.py:42 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/douban.py:42 msgid "Downloads metadata from Douban.com" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:50 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:51 msgid "Metadata download" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:127 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:128 msgid "ratings" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:127 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:128 msgid "tags" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:128 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:129 msgid "description/reviews" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:129 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:130 msgid "Download %s from %s" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:155 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:156 msgid "Downloads metadata from Google Books" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:172 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:173 msgid "Downloads metadata from isbndb.com" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:200 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:201 msgid "To use isbndb.com you must sign up for a %sfree account%s and enter your access key below." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:210 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:211 msgid "Downloads social metadata from amazon.com" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:229 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:230 msgid "Downloads series/tags/rating information from librarything.com" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/isbndb.py:95 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:95 msgid "" "\n" "%prog [options] key\n" @@ -1865,27 +1869,27 @@ msgid "" "\n" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/isbndb.py:106 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:106 msgid "The ISBN ID of the book you want metadata for." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/isbndb.py:108 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:108 msgid "The author whose book to search for." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/isbndb.py:110 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:110 msgid "The title of the book to search for." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/isbndb.py:112 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:112 msgid "The publisher of the book to search for." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/library_thing.py:76 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:76 msgid " not found." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/library_thing.py:86 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:86 msgid "" "\n" "%prog [options] ISBN\n" @@ -1893,180 +1897,180 @@ msgid "" "Fetch a cover image/social metadata for the book identified by ISBN from LibraryThing.com\n" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/opf2.py:1226 -#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1399 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1226 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1399 msgid "Cover" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/output.py:22 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:22 msgid "Modify images to meet Palm device size limitations." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/output.py:26 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:26 msgid "When present, use author sort field as author." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/output.py:30 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/mobi/output.py:33 -#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/transforms/htmltoc.py:56 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:33 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:56 msgid "Title for any generated in-line table of contents." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/output.py:37 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:37 msgid "Disable compression of the file contents." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/output.py:40 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:40 msgid "Tag marking book to be filed with Personal Docs" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/output.py:108 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:108 msgid "All articles" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/reader.py:259 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:259 msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1400 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1400 msgid "Title Page" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1401 -#: /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 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 +#: /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/trunk/src/calibre/ebooks/oeb/base.py:1402 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 msgid "Index" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1403 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 msgid "Glossary" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1404 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 msgid "Acknowledgements" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1405 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 msgid "Bibliography" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1406 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 msgid "Colophon" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1407 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 msgid "Copyright" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1408 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 msgid "Dedication" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1409 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 msgid "Epigraph" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1410 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 msgid "Foreword" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1411 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 msgid "List of Illustrations" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1412 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 msgid "List of Tables" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1413 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 msgid "Notes" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1414 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 msgid "Preface" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1415 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 msgid "Main Text" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/iterator.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:41 msgid "%s format books are not supported" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/transforms/htmltoc.py:54 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:54 msgid "HTML TOC generation options." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/transforms/jacket.py:113 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:113 msgid "Book Jacket" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/transforms/split.py:34 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/oeb/writer.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/writer.py:32 msgid "OPF/NCX/etc. generation options." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/writer.py:35 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/writer.py:35 msgid "OPF version to generate. Default is %default." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/writer.py:37 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/writer.py:37 msgid "Generate an Adobe \"page-map\" file if pagination information is available." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pdb/ereader/reader132.py:128 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/reader132.py:128 msgid "Footnotes" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pdb/ereader/reader132.py:135 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/reader132.py:135 msgid "Sidebar" msgstr "" -#: /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:24 +#: /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:24 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/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:28 +#: /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:28 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+ spaces) represents a paragraph. Paragraphs end when the next line that starts with an indent is reached." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pdb/output.py:23 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/output.py:23 msgid "Format to use inside the pdb container. Choices are:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pdb/output.py:27 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/pdf/input.py:24 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:24 msgid "Do not extract images from the document" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/input.py:26 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/pdf/input.py:30 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:30 msgid "Use the new PDF conversion engine." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/cli.py:31 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/cli.py:31 msgid "" "command ...\n" "\n" @@ -2078,113 +2082,113 @@ msgid "" "Manipulate a PDF.\n" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/crop.py:29 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:29 msgid "" "[options] file.pdf\n" "\n" "Crop a PDF file.\n" msgstr "" -#: /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 +#: /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 msgid "Path to output file. By default a file is created in the current directory." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/crop.py:41 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/pdf/manipulate/crop.py:44 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/pdf/manipulate/crop.py:47 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/pdf/manipulate/crop.py:50 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/pdf/manipulate/crop.py:53 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/pdf/manipulate/crop.py:73 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:73 msgid "Crop Options:" msgstr "" -#: /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 +#: /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 msgid "Options to control the transformation of pdf" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/decrypt.py:23 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/decrypt.py:23 msgid "" "[options] file.pdf password\n" "\n" "Decrypt a PDF.\n" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/decrypt.py:60 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/decrypt.py:60 msgid "Decrypt Options:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/encrypt.py:25 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/encrypt.py:25 msgid "" "[options] file.pdf password\n" "\n" "Encrypt a PDF.\n" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/encrypt.py:54 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/encrypt.py:54 msgid "Encrypt Options:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/info.py:21 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:21 msgid "" "file.pdf ...\n" "\n" "Get info about a PDF.\n" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/info.py:46 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/edit_authors_dialog.py:33 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:33 msgid "Author" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/info.py:47 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:47 msgid "Subject" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/info.py:48 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:48 msgid "Creator" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/info.py:50 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:50 msgid "Pages" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/info.py:51 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:51 msgid "File Size" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/info.py:52 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:52 msgid "PDF Version" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/merge.py:25 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/merge.py:25 msgid "" "[options] file1.pdf file2.pdf ...\n" "\n" @@ -2193,33 +2197,33 @@ msgid "" "Merges individual PDFs.\n" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/merge.py:56 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/merge.py:56 msgid "Merge Options:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/reverse.py:25 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/reverse.py:25 msgid "" "[options] file.pdf\n" "\n" "Reverse a PDF.\n" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/reverse.py:54 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/reverse.py:54 msgid "Reverse Options:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/rotate.py:24 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/pdf/manipulate/rotate.py:53 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:53 msgid "Rotate Options:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/split.py:25 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:25 msgid "" "\n" "%prog %%name [options] file.pdf page_to_split_on ...\n" @@ -2234,948 +2238,1310 @@ msgid "" "Split a PDF.\n" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/split.py:61 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:61 msgid "Split Options:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/output.py:31 +#: /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/trunk/src/calibre/ebooks/pdf/output.py:36 +#: /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/trunk/src/calibre/ebooks/pdf/output.py:40 +#: /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/trunk/src/calibre/ebooks/pdf/output.py:45 +#: /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/trunk/src/calibre/ebooks/pdf/output.py:49 +#: /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/trunk/src/calibre/ebooks/pdf/pdftohtml.py:55 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/pdftohtml.py:55 msgid "Could not find pdftohtml, check it is in your PATH" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/pml/output.py:33 +#: /home/kovid/work/calibre/src/calibre/ebooks/pml/output.py:33 msgid "Specify the character encoding of the output document. The default is cp1252." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/rtf/input.py:194 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:194 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/trunk/src/calibre/ebooks/tcr/output.py:23 +#: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:23 msgid "Specify the character encoding of the output document. The default is utf-8." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/tcr/output.py:27 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/txt/input.py:34 +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:34 msgid "Normally extra spaces are condensed into a single space. With this option all spaces will be displayed." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/txt/input.py:37 +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:37 msgid "Run the text input through the markdown pre-processor. To learn more about markdown see" msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/txt/input.py:40 +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:40 msgid "Do not insert a Table of Contents into the output text." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/txt/output.py:24 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/txt/output.py:30 +#: /home/kovid/work/calibre/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/trunk/src/calibre/ebooks/txt/output.py:38 +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:38 msgid "The maximum number of characters per line. This splits on the first space before the specified value. If no space is found the line will be broken at the space after and will exceed the specified value. Also, there is a minimum of 25 characters. Use 0 to disable line splitting." msgstr "" -#: /home/kovid/work/trunk/src/calibre/ebooks/txt/output.py:45 +#: /home/kovid/work/calibre/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/trunk/src/calibre/gui2/__init__.py:33 +#: /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/trunk/src/calibre/gui2/__init__.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:35 msgid "Confirm before deleting" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:37 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:37 msgid "Main window geometry" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:39 msgid "Notify when a new version is available" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:41 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:41 msgid "Use Roman numerals for series number" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:43 msgid "Sort tags list by name, popularity, or rating" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:45 msgid "Number of covers to show in the cover browsing mode" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:47 msgid "Defaults for conversion to LRF" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:49 msgid "Options for the LRF ebook viewer" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:52 msgid "Formats that are viewed using the internal viewer" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 msgid "Columns to be displayed in the book list" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 msgid "Automatically launch content server on application startup" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 msgid "Oldest news kept in database" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:57 msgid "Show system tray icon" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:59 msgid "Upload downloaded news to device" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:61 msgid "Delete books from library after uploading to device" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:63 msgid "Show the cover flow in a separate window instead of in the main calibre window" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:65 msgid "Disable notifications from the system tray icon" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:67 msgid "Default action to perform when send to device button is clicked" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:89 msgid "Maximum number of waiting worker processes" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:91 msgid "Download social metadata (tags/rating/etc.)" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:93 msgid "Overwrite author and title with new metadata" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:95 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:95 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:97 msgid "tag browser categories not to display" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:99 msgid "The layout of the user interface" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:101 msgid "Show the average rating per item indication in the tag browser" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:103 msgid "Disable UI animations" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:151 -#: /home/kovid/work/trunk/src/calibre/gui2/wizard/__init__.py:479 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:479 msgid "Copied" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:185 msgid "Copy" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:185 msgid "Copy to Clipboard" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:397 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:403 msgid "Choose Files" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:67 -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:245 -msgid "Use library only" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:25 +msgid "A" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:68 -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:246 -msgid "User annotations generated from main library only" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:25 +msgid "Add books" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:75 -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:623 -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:682 -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:719 -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:740 -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:925 -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:998 -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1116 -msgid "No books selected" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:30 +msgid "Add books from a single directory" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:76 -msgid "No books selected to fetch annotations from" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:32 +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/trunk/src/calibre/gui2/actions/__init__.py:101 -msgid "Merging user annotations into database" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:36 +msgid "Add books from directories, including sub directories (Multiple books per directory, assumes every ebook file is a different book)" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:129 -msgid "%s
Last Page Read: %d (%d%%)" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:40 +msgid "Add Empty book. (Book entry with no formats)" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:135 -msgid "%s
Last Page Read: Location %d (%d%%)" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:42 +msgid "Add from ISBN" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:154 -msgid "Location %d • %s
%s
" -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:163 -msgid "Page %d • %s
" -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:168 -msgid "Location %d • %s
" -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:81 msgid "How many empty books?" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:292 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:82 msgid "How many empty books should be added?" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:339 -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:390 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:198 msgid "Uploading books to device." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:350 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:165 msgid "Books" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:158 msgid "EPUB Books" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:159 msgid "LRF Books" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:160 msgid "HTML Books" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:161 msgid "LIT Books" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:162 msgid "MOBI Books" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:163 msgid "Topaz books" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:164 msgid "Text books" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:165 msgid "PDF Books" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 msgid "Comics" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:167 msgid "Archives" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:171 msgid "Supported books" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:399 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:207 msgid "Merged some books" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:400 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:208 msgid "Some duplicates were found and merged into the following existing books:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:409 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:217 msgid "Failed to read metadata" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:410 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:218 msgid "Failed to read metadata from the following" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:429 -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:448 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:237 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:256 msgid "Add to library" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:429 -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:473 -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1260 -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1285 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:237 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:119 msgid "No book selected" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:442 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:250 msgid "The following books are virtual and cannot be added to the calibre library:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:448 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:256 msgid "No book files found" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:470 -msgid "Cannot delete" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add_to_library.py:13 +msgid "Add books to library" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:483 -msgid "Choose formats to be deleted" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:20 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:499 +msgid "Fetch annotations (experimental)" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:501 -msgid "Choose formats not to be deleted" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:235 +msgid "Use library only" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:521 -msgid "Cannot delete books" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:236 +msgid "User annotations generated from main library only" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:522 -msgid "No device is connected" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:30 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:91 +msgid "No books selected" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:532 -msgid "Main memory" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:64 +msgid "No books selected to fetch annotations from" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:533 -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:436 -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:445 -msgid "Storage Card A" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:89 +msgid "Merging user annotations into database" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:534 -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:438 -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:447 -msgid "Storage Card B" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:117 +msgid "%s
Last Page Read: %d (%d%%)" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:539 -msgid "No books to delete" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:123 +msgid "%s
Last Page Read: Location %d (%d%%)" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:540 -msgid "None of the selected books are on the device" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:142 +msgid "Location %d • %s
%s
" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:557 -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:612 -msgid "Deleting books from device." +#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:151 +msgid "Page %d • %s
" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:578 -msgid "The selected books will be permanently deleted and the files removed from your computer. Are you sure?" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:156 +msgid "Location %d • %s
" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:597 -msgid "The selected books will be permanently deleted from your device. Are you sure?" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:20 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:32 +msgid "Create catalog of books in your calibre library" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:622 -msgid "Cannot download metadata" -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:638 -msgid "social metadata" -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:640 -msgid "covers" -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:640 -msgid "metadata" -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:642 -msgid "Downloading %s for %d book(s)" -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:666 -msgid "Failed to download some metadata" -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:667 -msgid "Failed to download metadata for the following:" -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:670 -msgid "Failed to download metadata:" -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:671 -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:608 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:560 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:990 -#: /home/kovid/work/trunk/src/calibre/utils/ipc/job.py:53 -msgid "Error" -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:681 -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:718 -msgid "Cannot edit metadata" -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:739 -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:742 -msgid "Cannot merge books" -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:743 -msgid "At least two books must be selected for merging" -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:747 -msgid "All book formats and metadata from the selected books will be added to the first selected book.

The second and subsequently selected books will not be deleted or changed.

Please confirm you want to proceed." -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:758 -msgid "All book formats and metadata from the selected books will be merged into the first selected book.

After merger the second and subsequently selected books will be deleted.

All book formats of the first selected book will be kept and any duplicate formats in the second and subsequently selected books will be permanently deleted from your computer.

Are you sure you want to proceed?" -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:770 -msgid "You are about to merge more than 5 books. Are you sure you want to proceed?" -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:924 -msgid "Cannot save to disk" -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:927 -msgid "Choose destination directory" -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:933 -#: /home/kovid/work/trunk/src/calibre/gui2/library/views.py:566 -msgid "Not allowed" -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:934 -msgid "You are trying to save files into the calibre library. This can cause corruption of your library. Save to disk is meant to export files from your calibre library elsewhere." -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:968 -msgid "Error while saving" -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:969 -msgid "There was an error while saving." -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:976 -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:977 -msgid "Could not save some books" -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:978 -msgid "Click the show details button to see which ones." -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:999 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:31 msgid "No books selected to generate catalog for" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1016 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:48 msgid "Generating %s catalog..." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1021 -#: /home/kovid/work/trunk/src/calibre/gui2/add.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:264 msgid "No books found" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1022 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:54 msgid "" "No books to catalog\n" "Check exclude tags" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1032 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:64 msgid "Catalog generated." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1035 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:67 msgid "Export Catalog Directory" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1036 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:68 msgid "Select destination for %s.%s" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1052 -msgid "Fetching news from " +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:73 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:108 +msgid "%d books" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1066 -msgid " fetched." +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:74 +msgid "Choose calibre library to work with" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1115 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:81 +msgid "Switch to library..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:88 +msgid "Quick switch" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:132 +msgid "No library found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:133 +msgid "No existing calibre library was found at %s. It will be removed from the list of known libraries." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:22 +msgid "C" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:22 +msgid "Convert books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:26 +msgid "Convert individually" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:28 +msgid "Bulk convert" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:84 msgid "Cannot convert" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1144 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:113 msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1260 -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1321 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:18 +msgid "Del" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:18 +msgid "Remove books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:23 +msgid "Remove selected books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:25 +msgid "Remove files of a specific format from selected books.." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:28 +msgid "Remove all formats from selected books, except..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:31 +msgid "Remove covers from selected books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:34 +msgid "Remove matching books from device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:52 +msgid "Cannot delete" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:65 +msgid "Choose formats to be deleted" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:83 +msgid "Choose formats not to be deleted" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:103 +msgid "Cannot delete books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:104 +msgid "No device is connected" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:114 +msgid "Main memory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:436 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:445 +msgid "Storage Card A" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:438 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:447 +msgid "Storage Card B" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:121 +msgid "No books to delete" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:122 +msgid "None of the selected books are on the device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:194 +msgid "Deleting books from device." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:160 +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/actions/delete.py:179 +msgid "The selected books will be permanently deleted from your device. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:25 +msgid "Connect to folder" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:30 +msgid "Connect to iTunes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:47 +msgid "Start Content Server" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:49 +msgid "Stop Content Server" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:68 +msgid "Email to" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:68 +msgid " and delete from library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:80 +msgid "Setup email based sharing of books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:97 +msgid "D" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:97 +msgid "Send to device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:114 +msgid "Connect/share" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_collections.py:13 +msgid "Manage collections" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:23 +msgid "E" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:23 +msgid "Edit metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:26 +msgid "Merge book records" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:27 +msgid "M" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:29 +msgid "Edit metadata individually" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:32 +msgid "Edit metadata in bulk" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:35 +msgid "Download metadata and covers" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:38 +msgid "Download only metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:40 +msgid "Download only covers" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:43 +msgid "Download only social metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:49 +msgid "Merge into first selected book - delete others" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:52 +msgid "Merge into first selected book - keep others" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:72 +msgid "Cannot download metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:95 +msgid "social metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:97 +msgid "covers" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:97 +msgid "metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:99 +msgid "Downloading %s for %d book(s)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:122 +msgid "Failed to download some metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:123 +msgid "Failed to download metadata for the following:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:126 +msgid "Failed to download metadata:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:987 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:54 +msgid "Error" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:173 +msgid "Cannot edit metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:197 +msgid "Cannot merge books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:198 +msgid "At least two books must be selected for merging" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:202 +msgid "All book formats and metadata from the selected books will be added to the first selected book.

The second and subsequently selected books will not be deleted or changed.

Please confirm you want to proceed." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:213 +msgid "All book formats and metadata from the selected books will be merged into the first selected book.

After merger the second and subsequently selected books will be deleted.

All book formats of the first selected book will be kept and any duplicate formats in the second and subsequently selected books will be permanently deleted from your computer.

Are you sure you want to proceed?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:225 +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/actions/fetch_news.py:18 +msgid "F" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:18 +msgid "Fetch news" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:48 +msgid "Fetching news from " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:62 +msgid " fetched." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/help.py:16 +msgid "Browse the calibre User Manual" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/help.py:16 +msgid "F1" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/help.py:16 +msgid "Help" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/open.py:14 +msgid "Open containing folder" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/open.py:15 +msgid "O" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:17 +msgid "Ctrl+P" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:21 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:584 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:201 +msgid "Preferences" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:22 +msgid "Run welcome wizard" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:37 +msgid "Cannot configure" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:33 +msgid "Cannot configure while there are running jobs." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:38 +msgid "Cannot configure before calibre is restarted." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/restart.py:14 +msgid "&Restart" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/restart.py:14 +msgid "Ctrl+R" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:24 +msgid "Save single format to disk..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:40 +msgid "S" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:40 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:45 +msgid "Save to disk" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:47 +msgid "Save to disk in a single directory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:68 +msgid "Save only %s format to disk" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:71 +msgid "Save only %s format to disk in a single directory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:90 +msgid "Cannot save to disk" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:93 +msgid "Choose destination directory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:540 +msgid "Not allowed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101 +msgid "You are trying to save files into the calibre library. This can cause corruption of your library. Save to disk is meant to export files from your calibre library elsewhere." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:135 +msgid "Error while saving" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:136 +msgid "There was an error while saving." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:144 +msgid "Could not save some books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:145 +msgid "Click the show details button to see which ones." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:16 +msgid "Show book details" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:17 +msgid "I" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:24 +msgid "No detailed info available" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:25 +msgid "No detailed information is available for books on the device." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:17 +msgid "Similar books..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:22 +msgid "Alt+A" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:22 +msgid "Books by same author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23 +msgid "Alt+S" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23 +msgid "Books in this series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24 +msgid "Alt+P" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24 +msgid "Books by this publisher" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25 +msgid "Alt+T" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25 +msgid "Books with the same tags" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:24 +msgid "V" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:24 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:31 +msgid "View" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:32 +msgid "View specific format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:155 msgid "Cannot view" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1266 -#: /home/kovid/work/trunk/src/calibre/gui2/convert/regex_builder.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77 msgid "Choose the format to view" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1274 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:108 msgid "Multiple Books Selected" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1275 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:109 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 started the process cannot be stopped until complete. Do you wish to continue?" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1284 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:118 msgid "Cannot open folder" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1322 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:156 msgid "%s has no available formats." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/add.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:54 msgid "Searching in" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/add.py:232 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:232 msgid "Adding..." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/add.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:245 msgid "Searching in all sub-directories..." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/add.py:258 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:258 msgid "Path error" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/add.py:259 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:259 msgid "The specified directory could not be processed." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/add.py:263 -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:810 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:804 msgid "No books" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/add.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:330 msgid "Added" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/add.py:343 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:343 msgid "Adding failed" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/add.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:344 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/trunk/src/calibre/gui2/add.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:356 msgid "Duplicates found!" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/add.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:357 msgid "Books with the same title as the following already exist in the database. Add them anyway?" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/add.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:360 msgid "Adding duplicates..." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/add.py:427 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:427 msgid "Saving..." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/add.py:480 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:480 msgid "Saved" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/__init__.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:57 msgid "Searching for sub-folders" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/__init__.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:62 msgid "Searching for books" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/__init__.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:74 msgid "Looking for duplicates based on file hash" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/__init__.py:109 -#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/welcome_ui.py:65 +#: /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/trunk/src/calibre/gui2/add_wizard/__init__.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:137 msgid "Invalid root folder" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/__init__.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:138 msgid "is not a valid root folder" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/__init__.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:148 msgid "Add books to calibre" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/scan_ui.py:21 -#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/welcome_ui.py:57 -#: /home/kovid/work/trunk/src/calibre/gui2/wizard/finish_ui.py:41 -#: /home/kovid/work/trunk/src/calibre/gui2/wizard/kindle_ui.py:41 -#: /home/kovid/work/trunk/src/calibre/gui2/wizard/library_ui.py:49 -#: /home/kovid/work/trunk/src/calibre/gui2/wizard/stanza_ui.py:41 +#: /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:41 +#: /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/trunk/src/calibre/gui2/add_wizard/scan_ui.py:22 +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/scan_ui.py:22 msgid "Scanning root folder for books" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/scan_ui.py:23 +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/scan_ui.py:23 msgid "This may take a few minutes" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/welcome_ui.py:58 +#: /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/trunk/src/calibre/gui2/add_wizard/welcome_ui.py:59 +#: /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/trunk/src/calibre/gui2/add_wizard/welcome_ui.py:60 +#: /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/trunk/src/calibre/gui2/add_wizard/welcome_ui.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:63 msgid "&Root folder:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/welcome_ui.py:64 +#: /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/trunk/src/calibre/gui2/add_wizard/welcome_ui.py:66 -#: /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:53 -#: /home/kovid/work/trunk/src/calibre/gui2/device_drivers/configwidget_ui.py:79 -#: /home/kovid/work/trunk/src/calibre/gui2/device_drivers/configwidget_ui.py:80 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library_ui.py:72 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:599 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:600 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:612 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:614 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:616 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:618 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:619 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:668 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:365 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:370 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:384 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:395 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:397 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:399 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:404 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:406 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/saved_search_editor_ui.py:87 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/saved_search_editor_ui.py:90 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:156 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:159 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:163 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:166 -#: /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/tag_list_editor_ui.py:75 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor_ui.py:77 -#: /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/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 +#: /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:53 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:599 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:600 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:612 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:614 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:616 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:618 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:619 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:668 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:365 +#: /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:384 +#: /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:397 +#: /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:404 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:406 +#: /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:75 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:77 +#: /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/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/trunk/src/calibre/gui2/add_wizard/welcome_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:67 msgid "Handle multiple files per book" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/welcome_ui.py:68 +#: /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/trunk/src/calibre/gui2/add_wizard/welcome_ui.py:69 +#: /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/trunk/src/calibre/gui2/book_details.py:23 -#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:45 -#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:54 -#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:311 -#: /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/dialogs/book_info.py:126 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:313 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:23 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:311 +#: /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/dialogs/book_info.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:313 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 msgid "Path" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:24 -#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:48 -#: /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:230 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:312 -#: /home/kovid/work/trunk/src/calibre/library/field_metadata.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:24 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:48 +#: /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:228 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:312 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:100 msgid "Formats" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:25 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:891 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:1068 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:891 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 msgid "Collections" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:47 -#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:56 msgid "Click to open" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:48 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:305 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:311 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:317 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:1074 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:1078 -#: /home/kovid/work/trunk/src/calibre/gui2/shortcuts.py:47 -#: /home/kovid/work/trunk/src/calibre/gui2/shortcuts_ui.py:73 -#: /home/kovid/work/trunk/src/calibre/gui2/shortcuts_ui.py:78 -#: /home/kovid/work/trunk/src/calibre/gui2/widgets.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:305 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:317 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1074 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1078 +#: /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:274 msgid "None" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:310 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:310 msgid "Click to open Book Details window" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:16 msgid "BibTeX Options" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex.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 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py: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 msgid "Options specific to" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex.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 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py: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 msgid "output" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:81 -#: /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:60 -#: /home/kovid/work/trunk/src/calibre/gui2/convert/toc_ui.py:62 -#: /home/kovid/work/trunk/src/calibre/gui2/convert/txt_input_ui.py:46 -#: /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:50 -#: /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:77 -#: /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 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:81 +#: /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: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:60 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:46 +#: /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:50 +#: /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:77 +#: /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 msgid "Form" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:82 msgid "Bib file encoding:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:83 -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:38 msgid "Fields to include in output:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:84 msgid "ascii/LaTeX" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:85 msgid "Encoding configuration (change if you have errors) :" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:86 msgid "strict" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:87 msgid "replace" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:88 msgid "ignore" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:89 msgid "backslashreplace" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:90 msgid "BibTeX entry type:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:91 msgid "mixed" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:92 msgid "misc" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:93 msgid "book" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:94 msgid "Create a citation tag?" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:95 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:95 msgid "Expression to form the BibTeX citation tag:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:96 msgid "" "Some explanation about this template:\n" " -The fields availables are 'author_sort', 'authors', 'id',\n" @@ -3186,1666 +3552,1690 @@ msgid "" " -For time field, only the date will be used. " msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_csv_xml.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:16 msgid "CSV/XML Options" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_epub_mobi.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:17 msgid "E-book options" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 -#: /home/kovid/work/trunk/src/calibre/library/catalog.py:550 -#: /home/kovid/work/trunk/src/calibre/library/database2.py:1496 -#: /home/kovid/work/trunk/src/calibre/library/database2.py:1514 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:550 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1518 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1536 msgid "Catalog" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:69 +#: +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:69 msgid "'Don't include this book' tag:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:70 +#: +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:70 msgid "'Mark this book as read' tag:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:71 +#: +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:71 msgid "Additional note tag prefix:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:72 +#: +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:72 msgid "Regex pattern describing tags to exclude as genres:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:73 +#: +#: /home/kovid/work/calibre/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], e.g., [Amazon Freebie]\n" "- A regex pattern of a single dot excludes all genre tags, generating no Genre Section" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:76 +#: +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:76 msgid "Include 'Titles' Section" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:77 +#: +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:77 msgid "Include 'Recently Added' Section" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:78 +#: +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:78 msgid "Sort numbers as text" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_tab_template_ui.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:28 msgid "Tab template for catalog.ui" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/bulk.py:36 +#: /home/kovid/work/calibre/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/trunk/src/calibre/gui2/convert/bulk.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:67 msgid "Bulk Convert" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/bulk.py:80 -#: /home/kovid/work/trunk/src/calibre/gui2/convert/single.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 msgid "Options specific to the output format." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/comic_input.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:15 msgid "Comic Input" msgstr "" -#: /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 +#: /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 msgid "input" msgstr "" -#: /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 +#: /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 msgid "&Number of Colors:" msgstr "" -#: /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 +#: /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 msgid "Disable &normalize" msgstr "" -#: /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 +#: /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 msgid "Keep &aspect ratio" msgstr "" -#: /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 +#: /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 msgid "Disable &Sharpening" msgstr "" -#: /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 +#: /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 msgid "Disable &Trimming" msgstr "" -#: /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 +#: /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 msgid "&Wide" msgstr "" -#: /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 +#: /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 msgid "&Landscape" msgstr "" -#: /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 +#: /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 msgid "&Right to left" msgstr "" -#: /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 +#: /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 msgid "Don't so&rt" msgstr "" -#: /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 +#: /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 msgid "De&speckle" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/comic_input_ui.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:99 msgid "&Disable comic processing" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/comic_input_ui.py:100 -#: /home/kovid/work/trunk/src/calibre/gui2/convert/single_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:115 msgid "&Output format:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/comic_input_ui.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:101 msgid "Disable conversion of images to &black and white" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/debug.py:19 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:19 msgid "Debug" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/debug.py:21 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:21 msgid "Debug the conversion process." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/debug.py:38 -#: /home/kovid/work/trunk/src/calibre/gui2/convert/debug_ui.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:51 msgid "Choose debug folder" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/debug.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:58 msgid "Invalid debug directory" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/debug.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:59 msgid "Failed to create debug directory" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/debug_ui.py:50 +#: /home/kovid/work/calibre/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 understanding the conversion process and figuring out the correct values for conversion parameters like Table of Contents and Chapter Detection." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/debug_ui.py:54 +#: /home/kovid/work/calibre/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/trunk/src/calibre/gui2/convert/epub_output.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:15 msgid "EPUB Output" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/epub_output_ui.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:49 msgid "Do not &split on page breaks" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/epub_output_ui.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:50 msgid "No default &cover" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/epub_output_ui.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:51 msgid "No &SVG cover" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/epub_output_ui.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:52 msgid "Preserve cover &aspect ratio" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/epub_output_ui.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:53 msgid "Split files &larger than:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/epub_output_ui.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:54 msgid " KB" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/fb2_input.py:12 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:12 msgid "FB2 Input" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/fb2_input_ui.py:29 +#: /home/kovid/work/calibre/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/trunk/src/calibre/gui2/convert/fb2_output.py:14 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:14 msgid "FB2 Output" msgstr "" -#: /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 +#: /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 msgid "&Inline TOC" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/font_key_ui.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:99 msgid "Font rescaling wizard" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/font_key_ui.py:100 +#: /home/kovid/work/calibre/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 input font size. The wizard will display what font size it will be mapped to, by the font rescaling algorithm. You can adjust the algorithm by adjusting the output base font size and font key below. When you find values suitable for you, click OK.

\n" "

By default, if the output base font size is zero and/or no font size key is specified, calibre will use the values from the current Output Profile.

\n" "

See the User Manual for a discussion of how font size rescaling works.

" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/font_key_ui.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:103 msgid "&Output document" msgstr "" -#: /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 +#: /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 msgid "&Base font size:" msgstr "" -#: /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 +#: /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 msgid "Font size &key:" msgstr "" -#: /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 +#: /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 msgid " pt" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/font_key_ui.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:107 msgid "Use &default values" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/font_key_ui.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:108 msgid "&Input document" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/font_key_ui.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:111 msgid "&Font size: " msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/font_key_ui.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:113 msgid " will map to size: " msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/font_key_ui.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:114 msgid "0.0 pt" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:16 msgid "Look & Feel" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel.py:18 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:18 msgid "Control the look and feel of the output" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel.py:30 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:31 msgid "Original" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel.py:31 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:32 msgid "Left align" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:33 msgid "Justify text" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:120 msgid "&Disable font size rescaling" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:121 msgid "Base &font size:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:124 +#: /home/kovid/work/calibre/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/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:126 msgid "Line &height:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:128 msgid "Input character &encoding:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:129 msgid "Remove &spacing between paragraphs" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:130 msgid "Indent size:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:131 +#: /home/kovid/work/calibre/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/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:132 msgid " em" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:133 msgid "Text justification:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:134 msgid "&Linearize tables" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:135 msgid "Extra &CSS" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:136 msgid "&Transliterate unicode characters to ASCII" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:137 msgid "Insert &blank line" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:138 msgid "Keep &ligatures" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output.py:19 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:19 msgid "LRF Output" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:116 msgid "Enable &autorotation of wide images" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:117 msgid "&Wordspace:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:119 msgid "Minimum para. &indent:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:121 msgid "Render &tables as images" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:122 msgid "Text size multiplier for text in rendered tables:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:123 msgid "Add &header" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:124 msgid "Header &separation:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:126 msgid "Header &format:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:127 msgid "&Embed fonts" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:128 msgid "&Serif font family:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:129 msgid "S&ans-serif font family:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:130 msgid "&Monospaced font family:" msgstr "" -#: /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 +#: /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 msgid "Metadata" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:43 +#: /home/kovid/work/calibre/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/trunk/src/calibre/gui2/convert/metadata.py:164 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:112 msgid "Choose cover for " msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:171 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:119 msgid "Cannot read" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:172 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:120 msgid "You do not have permission to read the file: " msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:180 -#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:187 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:181 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:128 msgid "Error reading file" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:181 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:129 msgid "

There was an error reading from file:
" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:188 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:137 msgid " is not a valid picture" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:167 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:401 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:401 msgid "Book Cover" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:168 msgid "Use cover from &source file" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:169 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:402 msgid "Change &cover image:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:170 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:403 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:403 msgid "Browse for an image to use as the cover of this book." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:172 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362 msgid "&Title: " msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:173 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:363 msgid "Change the title of this book" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:174 -#: /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:366 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:174 +#: /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:366 msgid "&Author(s): " msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:175 msgid "Author So&rt:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:176 +#: /home/kovid/work/calibre/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/trunk/src/calibre/gui2/convert/metadata_ui.py:177 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:167 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:375 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:177 +#: /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:375 msgid "&Publisher: " msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:178 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376 msgid "Ta&gs: " msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:179 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:169 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:377 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:179 +#: /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:377 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/trunk/src/calibre/gui2/convert/metadata_ui.py:180 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:174 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:380 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:180 +#: /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:380 msgid "&Series:" msgstr "" -#: /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:175 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:176 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:381 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:382 +#: /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: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:381 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:382 msgid "List of known series. You can add new series." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:183 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:387 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:183 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:387 msgid "Book " msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/mobi_output.py:20 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:20 msgid "MOBI Output" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/mobi_output.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:42 msgid "Default" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/mobi_output_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:67 msgid "&Title for Table of Contents:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/mobi_output_ui.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:68 msgid "Rescale images for &Palm devices" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/mobi_output_ui.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:69 msgid "Use author &sort for author" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/mobi_output_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:70 msgid "Disable compression of the file contents" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/mobi_output_ui.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:71 msgid "Do not add Table of Contents to book" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/mobi_output_ui.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:72 msgid "Kindle options" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/mobi_output_ui.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:73 msgid "Periodical masthead font:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/mobi_output_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:74 msgid "Personal Doc tag:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/page_setup.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup.py:35 msgid "Page Setup" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/page_setup_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:116 msgid "&Output profile:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/page_setup_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:117 msgid "Profile description" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/page_setup_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:118 msgid "&Input profile:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/page_setup_ui.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:119 msgid "Margins" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/page_setup_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:120 msgid "&Left:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/page_setup_ui.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:122 msgid "&Top:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/page_setup_ui.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:124 msgid "&Right:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/page_setup_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:126 msgid "&Bottom:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdb_input.py:12 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input.py:12 msgid "PDB Input" msgstr "" -#: /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:47 +#: /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:47 msgid "Treat each &line as a paragraph" msgstr "" -#: /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:48 +#: /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:48 msgid "Assume print formatting" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdb_output.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output.py:16 msgid "PDB Output" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdb_output_ui.py:36 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:36 msgid "&Format:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdf_input.py:12 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:12 msgid "PDF Input" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdf_input_ui.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:39 msgid "Line &Un-Wrapping Factor:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdf_input_ui.py:40 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:40 msgid "No &Images" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdf_output.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output.py:17 msgid "PDF Output" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdf_output_ui.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:43 msgid "&Paper Size:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdf_output_ui.py:44 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:44 msgid "&Orientation:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdf_output_ui.py:45 +#: /home/kovid/work/calibre/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 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output.py:14 msgid "RB Output" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/regex_builder.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:83 msgid "No formats available" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/regex_builder.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:84 msgid "Cannot build regex using the GUI builder without a book." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/regex_builder.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:103 msgid "Open book" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/regex_builder_ui.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:52 msgid "Regex Builder" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/regex_builder_ui.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:53 msgid "Preview" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/regex_builder_ui.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:54 msgid "Regex:" msgstr "" -#: /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 +#: /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 msgid "Test" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/single.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:171 msgid "Convert" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/single.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:196 msgid "Options specific to the input format." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/single_ui.py:112 -#: /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 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:112 +#: /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 msgid "Dialog" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/single_ui.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:113 msgid "&Input format:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/single_ui.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:114 msgid "Use &saved conversion settings for individual books" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17 msgid "" "Structure\n" "Detection" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection.py:19 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:19 msgid "Fine tune the detection of chapter headings and other document structure." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection.py:34 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:35 msgid "Detect chapters at (XPath expression):" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:36 msgid "Insert page breaks before (XPath expression):" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection.py:37 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:38 msgid "Header regular expression:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection.py:40 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:41 msgid "Footer regular expression:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection.py:56 -#: /home/kovid/work/trunk/src/calibre/gui2/widgets.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:76 msgid "Invalid regular expression" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection.py:57 -#: /home/kovid/work/trunk/src/calibre/gui2/widgets.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:77 msgid "Invalid regular expression: %s" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection.py:62 -#: /home/kovid/work/trunk/src/calibre/gui2/convert/toc.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39 msgid "Invalid XPath" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection.py:63 -#: /home/kovid/work/trunk/src/calibre/gui2/convert/toc.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:40 msgid "The XPath expression %s is invalid." msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection_ui.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:61 msgid "Chapter &mark:" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection_ui.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:62 msgid "Remove first &image" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection_ui.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:63 msgid "Insert &metadata as page at start of book" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection_ui.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:64 msgid "&Preprocess input file to possibly improve structure detection" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection_ui.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:65 msgid "Remove F&ooter" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection_ui.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:66 msgid "Remove H&eader" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/toc.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:16 msgid "" "Table of\n" "Contents" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/toc.py:18 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:18 msgid "Control the creation/conversion of the Table of Contents." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/toc.py:29 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:30 msgid "Level &1 TOC (XPath expression):" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/toc.py:30 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:31 msgid "Level &2 TOC (XPath expression):" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/toc.py:31 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:32 msgid "Level &3 TOC (XPath expression):" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/toc_ui.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:63 msgid "Do not add &detected chapters to the Table of Contents" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/toc_ui.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:64 msgid "Number of &links to add to Table of Contents" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/toc_ui.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:65 msgid "Chapter &threshold" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/toc_ui.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:66 msgid "&Force use of auto-generated Table of Contents" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/toc_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:67 msgid "TOC &Filter:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/txt_input.py:12 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:12 msgid "TXT Input" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/txt_input_ui.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:49 msgid "Process using markdown" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/convert/txt_input_ui.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:50 msgid "

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

Leaving attribute blank will match any attribute and leaving value blank will match any value. Setting tag to * will match any tag.

To learn more advanced usage of XPath see the XPath Tutorial." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/cover_flow.py:127 -msgid "Cover browser could not be loaded" -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/cover_flow.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:118 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/custom_column_widgets.py:53 -#: /home/kovid/work/trunk/src/calibre/gui2/custom_column_widgets.py:78 -#: /home/kovid/work/trunk/src/calibre/gui2/custom_column_widgets.py:102 -#: /home/kovid/work/trunk/src/calibre/gui2/custom_column_widgets.py:139 -#: /home/kovid/work/trunk/src/calibre/gui2/custom_column_widgets.py:158 -#: /home/kovid/work/trunk/src/calibre/gui2/custom_column_widgets.py:264 -#: /home/kovid/work/trunk/src/calibre/gui2/library/delegates.py:110 -#: /home/kovid/work/trunk/src/calibre/gui2/library/delegates.py:130 -#: /home/kovid/work/trunk/src/calibre/gui2/library/delegates.py:205 -#: /home/kovid/work/trunk/src/calibre/gui2/library/delegates.py:238 -#: /home/kovid/work/trunk/src/calibre/gui2/library/delegates.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:149 +msgid "Cover browser could not be loaded" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:264 +#: /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/trunk/src/calibre/gui2/custom_column_widgets.py:53 -#: /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 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:53 +#: /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/trunk/src/calibre/gui2/custom_column_widgets.py:53 -#: /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 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:53 +#: /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/trunk/src/calibre/gui2/custom_column_widgets.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:116 msgid "star(s)" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/custom_column_widgets.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:117 msgid "Unrated" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/custom_column_widgets.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:150 msgid "Set '%s' to today" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/custom_column_widgets.py:260 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:260 msgid " index:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/custom_column_widgets.py:443 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:183 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:183 msgid "Automatically number books in this series" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/custom_column_widgets.py:486 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:486 msgid "Remove all tags" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/custom_column_widgets.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:507 msgid "tags to add" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/custom_column_widgets.py:512 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:512 msgid "tags to remove" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:49 -#: /home/kovid/work/trunk/src/calibre/utils/ipc/job.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:49 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:136 msgid "No details available." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:166 msgid "Device no longer connected." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:284 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:284 msgid "Get device information" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:295 msgid "Get list of books on device" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:305 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:305 msgid "Get annotations from device" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:314 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:314 msgid "Send metadata to device" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:319 msgid "Send collections to device" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:343 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:343 msgid "Upload %d books to device" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:358 msgid "Delete books from device" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:375 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:375 msgid "Download books from device" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:385 msgid "View book on device" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:419 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:419 msgid "Set default send to device action" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:425 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:425 msgid "Send to main memory" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:427 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:427 msgid "Send to storage card A" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:429 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:429 msgid "Send to storage card B" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:434 -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:434 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:443 msgid "Main Memory" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:454 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:454 msgid "Send and delete from library" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:455 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:455 msgid "Send specific format" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:491 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:491 msgid "Eject device" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:499 -msgid "Fetch annotations (experimental)" -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:609 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:609 msgid "Error communicating with device" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:631 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:629 msgid "Select folder to open as device" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:675 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:671 msgid "Failed" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:681 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:677 msgid "Error talking to device" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:682 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:678 msgid "There was a temporary error talking to the device. Please unplug and reconnect the device and or reboot." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:724 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:717 msgid "Device: " msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:726 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:719 msgid " detected." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:811 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:805 msgid "selected to send" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:816 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:810 msgid "Choose format to send to device" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:825 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:819 msgid "No device" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:826 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:820 msgid "Cannot send: No device is connected" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:829 -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:833 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:823 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:827 msgid "No card" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:830 -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:834 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:824 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:828 msgid "Cannot send: Device has no storage card" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:875 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:869 msgid "E-book:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:878 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:872 msgid "Attached, you will find the e-book" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:879 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:181 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:873 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:179 msgid "by" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:880 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:874 msgid "in the %s format." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:893 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:887 msgid "Sending email to" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:923 -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:931 -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1025 -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1087 -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1206 -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1214 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:917 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:925 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1019 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1081 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1200 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1208 msgid "No suitable formats" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:924 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:918 msgid "Auto convert the following books before sending via email?" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:932 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:926 msgid "Could not email the following books as no suitable formats were found:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:950 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:944 msgid "Failed to email books" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:951 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:945 msgid "Failed to email the following books:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:955 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:949 msgid "Sent by email:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:984 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:978 msgid "News:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:985 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:979 msgid "Attached is the" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:996 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:990 msgid "Sent news to" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1026 -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1088 -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1207 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1020 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1082 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1201 msgid "Auto convert the following books before uploading to the device?" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1056 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1050 msgid "Sending catalogs to device." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1120 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1114 msgid "Sending news to device." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1173 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1167 msgid "Sending books to device." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1215 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1209 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/trunk/src/calibre/gui2/device.py:1277 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1271 msgid "No space on device" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1278 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1272 msgid "

Cannot upload books to device there is no more free space available " msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/device_drivers/configwidget_ui.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:78 msgid "Select available formats and their order for this device" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/device_drivers/configwidget_ui.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:82 msgid "Use sub directories" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/device_drivers/configwidget_ui.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:83 msgid "Use author sort for author" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/device_drivers/configwidget_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:85 msgid "Save &template:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/book_info_ui.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:43 +msgid "Add books by ISBN" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:44 +msgid "

Enter a list of ISBNs in the box to the left, one per line. calibre will automatically create entries for books based on the ISBN and download metadata and covers for them.

Any invalid ISBNs in the list will be ignored." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:45 +msgid "&Paste from clipboard" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:68 msgid "Fit &cover to view" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/book_info_ui.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:69 msgid "&Previous" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/book_info_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:70 msgid "&Next" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/catalog.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:38 msgid "My Books" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/catalog_ui.py:69 -#: /home/kovid/work/trunk/src/calibre/gui2/tools.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:289 msgid "Generate catalog" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/catalog_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:70 msgid "Generate catalog for {0} books" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/catalog_ui.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:71 msgid "Catalog &format:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/catalog_ui.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:72 msgid "Catalog &title (existing catalog with the same title will be replaced):" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/catalog_ui.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:73 msgid "&Send catalog to device automatically" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/catalog_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:74 msgid "Catalog options" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_format_ui.py:40 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:40 msgid "Choose Format" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:38 msgid "Choose location for calibre library" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:45 msgid "Same as current" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:46 msgid "The location %s contains the current calibre library" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:51 msgid "No existing library found" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:52 msgid "There is no existing calibre library at %s" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:56 msgid "Not empty" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:57 msgid "The folder %s is not empty. Please choose an empty folder" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:80 msgid "No location" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:80 msgid "No location selected" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library_ui.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:84 +msgid "Bad location" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:85 +msgid "%s is not an existing folder" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:66 msgid "Choose your calibre library" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:67 msgid "Your calibre library is currently located at {0}" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library_ui.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:68 msgid "New &Location:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library_ui.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:69 msgid "Use &existing library at the new location" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:70 msgid "&Create an empty library at the new location" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library_ui.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:71 msgid "&Move current library to new location" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comicconf.py:33 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:33 msgid "Set defaults for conversion of comics (CBR/CBZ files)" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comicconf.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:48 msgid "Set options for converting %s" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comicconf_ui.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:92 msgid "&Title:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comicconf_ui.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:93 msgid "&Author(s):" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comicconf_ui.py:95 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:95 msgid "&Profile:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comments_dialog_ui.py:41 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comments_dialog_ui.py:41 msgid "Edit Comments" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:172 msgid "%(plugin_type)s %(plugins)s" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:173 msgid "plugins" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:184 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:182 msgid "" "\n" "Customization: " msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:197 msgid "General" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:198 msgid "Interface" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:199 msgid "Conversion" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:200 msgid "" "Email\n" "Delivery" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:201 msgid "Add/Save" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:202 msgid "Advanced" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:203 msgid "" "Content\n" "Server" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:204 msgid "Plugins" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:230 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:228 msgid "Auto send" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:230 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:228 msgid "Email" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:233 msgid "Formats to email. The first matching format will be sent." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:236 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:234 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/trunk/src/calibre/gui2/dialogs/config/__init__.py:310 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:308 msgid "new email address" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:492 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:490 msgid "Wide" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:493 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:491 msgid "Narrow" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:500 msgid "Medium" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:500 msgid "Small" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:503 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:501 msgid "Large" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:507 msgid "Always" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:507 msgid "Automatic" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:508 msgid "Never" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:534 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:532 msgid "Done" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:533 msgid "Confirmation dialogs have all been reset" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:540 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:538 msgid "System port selected" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:541 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:539 msgid "The value %d you have chosen for the content server port is a system 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/trunk/src/calibre/gui2/dialogs/config/__init__.py:561 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:559 msgid "Failed to install command line tools." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:564 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:562 msgid "Command line tools installed" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:565 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:563 msgid "Command line tools installed in" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:566 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:564 msgid "If you move calibre.app, you have to re-install the command line tools." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:617 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:615 msgid "No valid plugin path" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:618 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:616 msgid "%s is not a valid plugin path" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:621 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:619 msgid "Choose plugin" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:633 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:631 msgid "Plugin cannot be disabled" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:634 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:632 msgid "The plugin: %s cannot be disabled" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:643 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:641 msgid "Plugin not customizable" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:644 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:642 msgid "Plugin: %s does not need customization" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:652 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:650 msgid "Customize" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:690 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:688 msgid "Cannot remove builtin plugin" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:691 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:689 msgid " cannot be removed. It is a builtin plugin. Try disabling it instead." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:707 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:704 msgid "Invalid tweaks" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:708 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:705 msgid "The tweaks you entered are invalid, try resetting the tweaks to default and changing them one by one until you find the invalid setting." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:738 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:735 msgid "You must select a column to delete it" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:743 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:740 msgid "The selected column is not a custom column" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:744 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/confirm_delete_ui.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:741 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:48 msgid "Are you sure?" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:745 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:742 msgid "Do you really want to delete column %s and all its data?" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:809 msgid "Error log:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:819 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:816 msgid "Access log:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:847 -#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:844 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:313 msgid "Failed to start content server" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:872 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:869 msgid "Invalid size" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:873 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:870 msgid "The size %s is invalid. must be of the form widthxheight" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:936 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:933 msgid "Must restart" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:937 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:934 msgid "The changes you made require that Calibre be restarted. Please restart as soon as practical." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:971 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:968 msgid "Checking database integrity" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:991 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:988 msgid "Failed to check database integrity" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:996 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:993 msgid "Some inconsistencies found" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:997 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:994 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 them manually. This can happen if you manipulate the files in the library folder directly." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:133 msgid "TabWidget" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:134 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/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:135 msgid "Read metadata only from &file name" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:136 msgid "Swap the firstname and lastname of the author. This affects only metadata read from file names." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:137 msgid "&Swap author firstname and lastname" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:138 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" "to the existing book, instead of creating a new entry. If the existing book already has the format, then it is silently ignored.\n" @@ -4853,599 +5243,587 @@ msgid "" "Title match ignores leading indefinite articles (\"the\", \"a\", \"an\"), punctuation, case, etc. Author match is exact." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:142 msgid "If books with similar titles and authors found, &merge the new files automatically" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:143 msgid "&Configure metadata from file name" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:144 msgid "&Adding books" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:145 msgid "Here you can control how calibre will save your books when you click the Save to Disk button:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:146 msgid "Save &cover separately" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:147 msgid "Update &metadata in saved copies" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:148 msgid "Save metadata in &OPF file" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:149 msgid "Convert non-English characters to &English equivalents" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:150 msgid "Format &dates as:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:151 msgid "File &formats to save:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:152 msgid "Replace space with &underscores" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:153 msgid "Change paths to &lowercase" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:154 msgid "&Saving books" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:155 msgid "Metadata &management:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:156 msgid "Manual management" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:157 msgid "Only on send" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:158 msgid "Automatic management" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:159 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:159 msgid "" "

  • Manual Management: Calibre updates the metadata and adds collections only when a book is sent. With this option, calibre will never remove a collection.
  • \n" "
  • Only on send: Calibre updates metadata and adds/removes collections for a book only when it is sent to the device.
  • \n" "
  • Automatic management: Calibre automatically keeps metadata on the device in sync with the calibre library, on every connect
  • " msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:162 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/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:163 msgid "Sending to &device" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:584 -#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:474 -#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:616 -#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:201 -msgid "Preferences" -msgstr "" - -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:585 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:585 msgid "Show notification when &new version is available" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:586 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:586 msgid "Download &social metadata (tags/ratings/etc.) by default" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:587 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:587 msgid "&Overwrite author and title by default when fetching metadata" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:588 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:588 msgid "Default network &timeout:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:589 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:589 msgid "Set the default timeout for network fetches (i.e. anytime we go out to the internet to get information)" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:590 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:590 msgid " seconds" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:591 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:591 msgid "Choose &language (requires restart):" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:592 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:592 msgid "Normal" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:593 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:593 msgid "High" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:594 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:594 msgid "Low" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:595 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:595 msgid "Job &priority:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:596 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:596 msgid "Preferred &output format:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:597 msgid "Reset all disabled &confirmation dialogs" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:598 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:598 msgid "Preferred &input format order:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:601 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:601 msgid "Use &Roman numerals for series number" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:602 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:602 msgid "Enable system &tray icon (needs restart)" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:603 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:603 msgid "Show ¬ifications in system tray" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:604 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:604 msgid "Show &splash screen at startup" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:605 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:605 msgid "Show cover &browser in a separate window (needs restart)" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:606 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:606 msgid "Show &average ratings in the tags browser" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:607 msgid "Search as you type" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:608 msgid "Automatically send downloaded &news to ebook reader" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:609 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:609 msgid "&Delete news from library when it is automatically sent to reader" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:610 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:610 msgid "&Number of covers to show in browse mode (needs restart):" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:611 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:611 msgid "Select visible &columns in library view" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:613 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:613 msgid "Remove a user-defined column" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:615 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:615 msgid "Add a user-defined column" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:617 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:617 msgid "Edit settings of a user-defined column" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:620 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:620 msgid "Use internal &viewer for:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:621 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:621 msgid "User Interface &layout (needs restart):" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:622 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:622 msgid "Disable all animations. Useful if you have a slow/old computer." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:623 msgid "Disable &animations" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:624 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:624 msgid "Show &donate button (restart)" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:625 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:625 msgid "&Toolbar" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:626 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:626 msgid "&Icon size:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:627 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:627 msgid "Show &text under icons:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:628 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:628 msgid "Add an email address to which to send books" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:629 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:629 msgid "&Add email" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:630 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:630 msgid "Make &default" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:631 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:631 msgid "&Remove email" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:632 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:632 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/trunk/src/calibre/gui2/dialogs/config/config_ui.py:633 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:633 msgid "&Maximum number of waiting worker processes (needs restart):" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:634 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:634 msgid "Limit the max. simultaneous jobs to the available CPU &cores" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:635 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:635 msgid "Debug &device detection" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:636 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:636 msgid "&Check database integrity" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:637 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:637 msgid "Open calibre &configuration directory" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:638 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:638 msgid "&Install command line tools" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:639 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:639 msgid "&Miscellaneous" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:640 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:640 msgid "Values for the tweaks are shown below. Edit them to change the behavior of calibre" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:641 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:641 msgid "All available tweaks" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:642 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:642 msgid "&Current tweaks" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:643 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:643 msgid "&Restore to defaults" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:644 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:644 msgid "&Tweaks" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:645 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:645 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/trunk/src/calibre/gui2/dialogs/config/config_ui.py:646 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:646 msgid "Server &port:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:647 -#: /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 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:647 +#: /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/trunk/src/calibre/gui2/dialogs/config/config_ui.py:648 -#: /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 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:648 +#: /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/trunk/src/calibre/gui2/dialogs/config/config_ui.py:649 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:649 msgid "If you leave the password blank, anyone will be able to access your book collection using the web interface." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:650 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:650 msgid "The maximum size (widthxheight) for displayed covers. Larger covers are resized. " msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:651 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:651 msgid "Max. &cover size:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:652 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/password_ui.py:60 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:652 +#: /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/trunk/src/calibre/gui2/dialogs/config/config_ui.py:653 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:653 msgid "Max. &OPDS items per query:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:654 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:654 msgid "Max. OPDS &ungrouped items:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:655 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:655 msgid "&Start Server" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:656 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:656 msgid "St&op Server" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:657 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:657 msgid "&Test Server" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:658 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:658 msgid "Run server &automatically on startup" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:659 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:659 msgid "View &server logs" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:660 -#: /home/kovid/work/trunk/src/calibre/gui2/wizard/stanza_ui.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:660 +#: /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 calibre is running.\n" "

    Stanza should see your calibre collection automatically. If not, try adding the URL http://myhostname:8080 as a new catalog in the Stanza reader on your iPhone. Here myhostname should be the fully qualified hostname or the IP address of the computer calibre is running on." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:662 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:662 msgid "Here you can customize the behavior of Calibre by controlling what plugins it uses." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:663 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:663 msgid "Enable/&Disable plugin" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:664 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:664 msgid "&Customize plugin" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:665 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:665 msgid "&Remove plugin" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:666 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:666 msgid "Add new plugin" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:667 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:667 msgid "Plugin &file:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:669 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:669 msgid "&Add" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:125 msgid "Create Tag-based Column" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:126 msgid "Lookup name" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:127 msgid "Column heading" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:128 msgid "Column type" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:129 msgid "Use brackets" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:130 msgid "Values can be edited" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:135 msgid "Text" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:136 msgid "Number" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:137 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:31 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:69 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:889 -#: /home/kovid/work/trunk/src/calibre/library/server/opds.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:31 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:889 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:549 msgid "Date" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:138 msgid "Tag on book" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:139 msgid "Explanation text added in create_ct_column.py" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:140 msgid "Create and edit tag-based columns" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:19 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:19 msgid "Text, column shown in the tag browser" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:22 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:22 msgid "Comma separated text, like tags, shown in the tag browser" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:25 msgid "Long text, like comments, not shown in the tag browser" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:28 msgid "Text column for keeping series-like information" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:33 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:33 msgid "Floating point numbers" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:35 msgid "Integers" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:37 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:37 msgid "Ratings, shown with stars" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:40 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:40 msgid "Yes/No" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:69 msgid "No column selected" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:70 msgid "No column has been selected" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:74 msgid "Selected column is not a user-defined column" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:105 msgid "No lookup name was provided" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:107 -msgid "The label must contain only letters, digits and underscores, and start with a letter" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:107 +msgid "The lookup name must contain only lower case letters, digits and underscores, and start with a letter" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:116 msgid "No column heading was provided" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:122 msgid "The lookup name %s is already used" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:132 msgid "The heading %s is already used" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:134 -msgid "The lookup name must be lower case and cannot contain \":\"s or spaces" -msgstr "" - -#: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:101 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:117 +#: /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/trunk/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:102 msgid "&Lookup name" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:103 msgid "Column &heading" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:104 +#: /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/trunk/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:105 +#: /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/trunk/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:106 msgid "Column &type" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:107 +#: /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/trunk/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:108 +#: /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" @@ -5456,275 +5834,277 @@ msgid "" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:114 +#: /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/trunk/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:115 msgid "Default: dd MMM yyyy." msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:116 msgid "Format for &dates" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/device_debug.py:21 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/device_debug.py:21 msgid "Getting debug information" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/device_debug.py:22 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/device_debug.py:22 msgid "Copy to &clipboard" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/device_debug.py:24 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/device_debug.py:24 msgid "Debug device detection" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/save_template.py:44 +#: +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template.py:44 msgid "Invalid template" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/save_template.py:45 +#: +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template.py:45 msgid "The template %s is invalid:" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/save_template_ui.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template_ui.py:42 msgid "Save &template" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/save_template_ui.py:43 +#: /home/kovid/work/calibre/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 indicate sub-folders. Available metadata variables are described below. If a particular book does not have some metadata, the variable will be replaced by the empty string." msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/save_template_ui.py:44 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template_ui.py:44 msgid "Available variables:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/social.py:34 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/social.py:34 msgid "Downloading social metadata, please wait..." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/confirm_delete_ui.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:50 msgid "&Show this warning again" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/conversion_error_ui.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/conversion_error_ui.py:42 msgid "ERROR" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/delete_matching_from_device.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:67 msgid "All checked books will be permanently deleted from your device. Please verify the list." msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 msgid "Location" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 -#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:1064 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 msgid "Format" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/delete_matching_from_device_ui.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device_ui.py:50 msgid "Delete from device" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/edit_authors_dialog.py:33 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:33 msgid "Author sort" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:66 msgid "Manage authors" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:67 msgid "Sort by author" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:68 msgid "Sort by author sort" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:69 msgid "Reset all the author sort values to a value automatically generated from the author. Exactly how this value is automatically generated can be controlled via Preferences->Advanced->Tweaks" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:70 msgid "Recalculate all author sort values" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:60 msgid "Author Sort" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:62 msgid "ISBN" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:162 msgid "Finding metadata..." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:176 msgid "Could not find metadata" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:177 msgid "The metadata download seems to have stalled. Try again later." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:186 msgid "Warning" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:187 msgid "Could not fetch metadata from:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:191 msgid "No metadata found" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:192 msgid "No metadata found, try adjusting the title and author or the ISBN key." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85 msgid "Fetch metadata" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata_ui.py:86 +#: /home/kovid/work/calibre/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 free account and enter your access key below." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87 msgid "&Access Key:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata_ui.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:88 msgid "Fetch" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata_ui.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:89 msgid "Matches" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata_ui.py:90 +#: /home/kovid/work/calibre/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/trunk/src/calibre/gui2/dialogs/fetch_metadata_ui.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:91 msgid "Download &social metadata (tags/rating/etc.) for the selected book" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata_ui.py:92 +#: /home/kovid/work/calibre/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/trunk/src/calibre/gui2/dialogs/job_view_ui.py:37 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/job_view_ui.py:37 msgid "Details of job" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/jobs_ui.py:44 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:44 msgid "Active Jobs" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/jobs_ui.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:45 msgid "&Stop selected job" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/jobs_ui.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:46 msgid "Show job &details" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/jobs_ui.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:47 msgid "Stop &all non device jobs" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk.py:24 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:24 msgid "Editing meta information for %d books" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:157 msgid "Edit Meta information" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:159 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:159 msgid "A&utomatically set author sort" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:160 msgid "Author s&ort: " msgstr "" -#: /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:368 +#: /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:368 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/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:162 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:371 +#: /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:371 msgid "&Rating:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:163 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:164 -#: /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 +#: /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:372 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:373 msgid "Rating of this book. 0-5 stars" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:165 msgid "No change" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:166 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:374 +#: /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:374 msgid " stars" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:168 msgid "Add ta&gs: " msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:170 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:171 -#: /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:379 +#: /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:378 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:379 msgid "Open Tag Editor" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:172 msgid "&Remove tags:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:173 +#: /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/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:177 msgid "Remove &format:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:178 msgid "&Swap title and author" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:179 +#: /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" @@ -5732,809 +6112,809 @@ msgid "" "Book A will have series number 1 and Book B series number 2." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:184 +#: /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/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:187 +#: /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/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:188 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:410 +#: /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:410 msgid "&Basic metadata" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:189 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:411 +#: /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:411 msgid "&Custom metadata" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:94 msgid "Last modified: %s" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:136 msgid "Not a valid picture" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:151 msgid "Specify title and author" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:152 msgid "You must specify a title and author before generating a cover" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:164 msgid "Choose formats for " msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:195 msgid "No permission" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:196 msgid "You do not have permission to read the following files:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:222 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:224 msgid "No format selected" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:234 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:235 msgid "Could not read metadata" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:236 msgid "Could not read metadata from %s format" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:283 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:284 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:290 msgid "Could not read cover" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:284 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:285 msgid "Could not read cover from %s format" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:291 msgid "The cover in the %s format is invalid" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:327 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:328 msgid "Abort the editing of all remaining books" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:465 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:470 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:471 msgid "This ISBN number is valid" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:473 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:474 msgid "This ISBN number is invalid" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:553 msgid "Cannot use tag editor" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:554 msgid "The tags editor cannot be used if you have modified the tags" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:573 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:574 msgid "Downloading cover..." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:585 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:590 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:596 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:601 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:586 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:591 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:602 msgid "Cannot fetch cover" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:586 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:597 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:602 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:587 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:598 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:603 msgid "Could not fetch cover.
    " msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:587 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:588 msgid "The download timed out." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:591 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:592 msgid "Could not find cover for this book. Try specifying the ISBN first." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:603 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:604 msgid "For the error message from each cover source, click Show details below." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:610 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:611 msgid "Bad cover" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:611 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:612 msgid "The cover is not a valid picture" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:644 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:645 msgid "There were errors" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:645 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:646 msgid "There were errors downloading social metadata" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:674 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:675 msgid "Cannot fetch metadata" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:675 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:676 msgid "You must specify at least one of ISBN, Title, Authors or Publisher" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:750 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:751 msgid "Permission denied" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:751 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:752 msgid "Could not open %s. Is it being used by another program?" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360 msgid "Edit Meta Information" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:361 msgid "Meta information" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:364 msgid "Swap the author and title" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:367 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367 msgid "Author S&ort: " msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:369 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:369 msgid "Automatically create the author sort entry based on the current author entry" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:383 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:383 msgid "Remove unused series (Series that have no books)" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:385 msgid "IS&BN:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:386 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:386 msgid "Publishe&d:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:389 msgid "dd MMM yyyy" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:390 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:390 msgid "&Date:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:391 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:391 msgid "&Comments" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:392 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:392 msgid "&Fetch metadata from server" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393 msgid "Available Formats" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:394 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:394 msgid "Add a new format for this book to the database" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:396 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:396 msgid "Remove the selected formats for this book from the database." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:398 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:398 msgid "Set the cover for the book from the selected format" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:400 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:400 msgid "Update metadata from the metadata in the selected format" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:405 msgid "Reset cover to default" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:407 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:407 msgid "Download &cover" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:408 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:408 msgid "Generate a default cover based on the title and author" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:409 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:409 msgid "&Generate cover" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/password_ui.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:56 msgid "Password needed" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/progress.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress.py:54 msgid "Aborting..." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/saved_search_editor.py:54 +#: /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/trunk/src/calibre/gui2/dialogs/saved_search_editor_ui.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:83 msgid "Saved Search Editor" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/saved_search_editor_ui.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:84 msgid "Saved Search: " msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/saved_search_editor_ui.py:85 +#: /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/trunk/src/calibre/gui2/dialogs/saved_search_editor_ui.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:86 msgid "Delete this selected saved search" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/saved_search_editor_ui.py:88 +#: /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/trunk/src/calibre/gui2/dialogs/saved_search_editor_ui.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:89 msgid "Add the new saved search" msgstr "" #: -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/saved_search_editor_ui.py:91 +#: /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/trunk/src/calibre/gui2/dialogs/scheduler.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:120 msgid "Need username and password" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:121 +#: /home/kovid/work/calibre/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/trunk/src/calibre/gui2/dialogs/scheduler.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:172 msgid "Created by: " msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:179 msgid "Last downloaded: never" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:194 msgid "%d days, %d hours and %d minutes ago" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:196 msgid "Last downloaded" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:220 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:192 msgid "Schedule news download" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:223 msgid "Add a custom news source" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:228 msgid "Download all scheduled new sources" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:328 msgid "No internet connection" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:329 msgid "Cannot download news as no internet connection is active" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:193 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:278 msgid "Recipes" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:194 msgid "Download all scheduled recipes at once" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:195 msgid "Download &all scheduled" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:196 msgid "blurb" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:197 msgid "&Schedule for download:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:198 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:208 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:208 msgid "Every " msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:199 msgid "day" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:200 msgid "Monday" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:201 msgid "Tuesday" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:202 msgid "Wednesday" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203 msgid "Thursday" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:204 msgid "Friday" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:205 msgid "Saturday" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:206 msgid "Sunday" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:207 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:207 msgid "at" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:209 +#: /home/kovid/work/calibre/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/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 +#: /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 msgid " days" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 msgid "&Account" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:215 msgid "For the scheduling to work, you must leave calibre running." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:216 msgid "&Schedule" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:217 msgid "Add &title as tag" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:218 msgid "&Extra tags:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:219 msgid "&Advanced" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:220 msgid "&Download now" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:221 +#: /home/kovid/work/calibre/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/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:223 msgid "Delete downloaded news older than " msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_item_ui.py:36 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:36 msgid "contains" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_item_ui.py:37 +#: /home/kovid/work/calibre/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/trunk/src/calibre/gui2/dialogs/search_item_ui.py:38 +#: /home/kovid/work/calibre/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/trunk/src/calibre/gui2/dialogs/search_item_ui.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:39 msgid "Negate" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_ui.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:113 msgid "Advanced Search" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_ui.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:114 msgid "Find entries that have..." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:115 msgid "&All these words:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:116 msgid "This exact &phrase:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:117 msgid "&One or more of these words:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:118 msgid "But dont show entries that have..." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_ui.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:119 msgid "Any of these &unwanted words:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:120 msgid "What kind of match to use:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:121 msgid "Contains: the word or phrase matches anywhere in the metadata" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_ui.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:122 msgid "Equals: the word or phrase must match an entire metadata field" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_ui.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:123 msgid "Regular expression: the expression must match anywhere in the metadata" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_ui.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:124 msgid " " msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_ui.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:125 msgid "See the User Manual for more help" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/select_formats.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/select_formats.py:45 msgid "Choose formats" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories.py:50 -#: /home/kovid/work/trunk/src/calibre/library/field_metadata.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:80 msgid "Authors" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories.py:50 -#: /home/kovid/work/trunk/src/calibre/library/field_metadata.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:111 msgid "Publishers" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:114 msgid " (not on any book)" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:166 msgid "The current tag category will be permanently deleted. Are you sure?" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:153 msgid "User Categories Editor" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:154 msgid "A&vailable items" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:155 msgid "Apply tags to current tag category" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:157 msgid "A&pplied items" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:158 +#: /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/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:160 msgid "Category name: " msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:161 msgid "Select a category to edit" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:162 msgid "Delete this selected tag category" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:164 +#: /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/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:165 msgid "Add the new category" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:167 msgid "Category filter: " msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:168 +#: /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/trunk/src/calibre/gui2/dialogs/tag_editor.py:68 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:105 msgid "Are your sure?" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_editor.py:69 +#: /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?" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_editor_ui.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:123 msgid "Tag Editor" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_editor_ui.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:124 msgid "A&vailable tags" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_editor_ui.py:125 +#: /home/kovid/work/calibre/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/trunk/src/calibre/gui2/dialogs/tag_editor_ui.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:127 msgid "Apply tag to current book" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_editor_ui.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:129 msgid "A&pplied tags" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_editor_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:130 msgid "Unapply (remove) tag from current book" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_editor_ui.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:132 msgid "&Add tag:" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_editor_ui.py:133 +#: /home/kovid/work/calibre/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/trunk/src/calibre/gui2/dialogs/tag_editor_ui.py:134 +#: /home/kovid/work/calibre/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/trunk/src/calibre/gui2/dialogs/tag_list_editor.py:20 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:20 msgid "%s (was %s)" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor.py:74 -#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:500 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:500 msgid "Item is blank" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor.py:75 -#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:501 msgid "An item cannot be set to nothing. Delete it instead." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:91 msgid "No item selected" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:92 msgid "You must select one item from the list of Available items." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:101 msgid "No items selected" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:102 msgid "You must select at least one items from the list." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:106 msgid "Are you certain you want to delete the following items?" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor_ui.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:72 msgid "Category Editor" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor_ui.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:73 msgid "Items in use" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:74 msgid "Delete item from database. This will unapply the item from all books and then remove it from the database." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:76 msgid "Rename the item in every book where it is used." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor_ui.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:78 msgid "Ctrl+S" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/test_email_ui.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:51 msgid "Test email settings" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/test_email_ui.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:52 msgid "Send test mail from %s to:" msgstr "" -#: /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 +#: /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 msgid "&Test" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:127 msgid "No recipe selected" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:132 msgid "The attached file: %s is a recipe to download %s." msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:133 msgid "Recipe for " msgstr "" -#: /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 +#: /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 msgid "Switch to Advanced mode" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:156 -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:164 msgid "Switch to Basic mode" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:174 msgid "Feed must have a title" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175 msgid "The feed must have a title" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:179 msgid "Feed must have a URL" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180 msgid "The feed %s must have a URL" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:185 msgid "Already exists" msgstr "" -#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:186 msgid "This feed has already been added to the recipe" msgstr "" -#: /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 +#: /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 msgid "Invalid input" msgstr "" -#: /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 +#: /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 msgid "

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

    Crear unha receita de " +"novas básica, engadindo canles RSS.
    Para a maioría das canles, " +"necesitará utilizar o \"Modo avanzado\" para unha configuración máis " +"detallada do proceso de adquisición de datos.

    " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:260 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles_ui.py:260 msgid "Recipe &title:" -msgstr "" +msgstr "&Título da receita:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:261 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles_ui.py:261 msgid "&Oldest article:" -msgstr "" +msgstr "Artigo máis &antigo:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:262 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles_ui.py:262 msgid "The oldest article to download" -msgstr "" +msgstr "O artigo máis antigo para descargar" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:264 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles_ui.py:264 msgid "&Max. number of articles per feed:" -msgstr "" +msgstr "Número &máximo de artigos por canle" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles_ui.py:265 msgid "Maximum number of articles to download per feed." -msgstr "" +msgstr "Número máximo de artigos para descargar por canle." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:266 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles_ui.py:266 msgid "Feeds in recipe" -msgstr "" +msgstr "Canles na receita" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:268 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles_ui.py:268 msgid "Remove feed from recipe" -msgstr "" +msgstr "Borrar canles da receita" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:271 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:274 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles_ui.py:271 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles_ui.py:274 msgid "Add feed to recipe" -msgstr "" +msgstr "Engadir canle á receita" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:272 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles_ui.py:272 msgid "&Feed title:" -msgstr "" +msgstr "Título da &canle" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:273 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles_ui.py:273 msgid "Feed &URL:" -msgstr "" +msgstr "&URL da canle" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:275 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles_ui.py:275 msgid "&Add feed" -msgstr "" +msgstr "&Engadir canle" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:276 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles_ui.py:276 msgid "" "For help with writing advanced news recipes, please visit User Recipes" msgstr "" +"Se precisar axuda para escribir receitas de novas avanzadas, pode visitar Receitas do " +"usuario" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:277 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles_ui.py:277 msgid "Recipe source code (python)" -msgstr "" +msgstr "Código fonte das receitas (pytom)" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:107 +#: /home/kovid/work/trunk/src/calibre/gui2/filename_pattern_ui.py:107 msgid "" "\n" @@ -7376,1746 +7658,1776 @@ msgid "" "expression on a few sample filenames. The group names for the various " "metadata entries are documented in tooltips.

    " msgstr "" +"\n" +"\n" +"

    Asigne un patrón de " +"expresión regular para intentar extraer metadatos de los nombres de " +"archivos.

    \n" +"

    Hay una referencia sobre la " +"sintaxis de las expresiones regulares disponible.

    \n" +"

    Use a característica de " +"Proba para probar a expresión " +"regular sobre un pequeno conxunto de nomes de ficheiro. Os nomes dos grupos " +"de varias entradas de metadatos están documentadas nas " +"axudas.

    " -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:114 +#: /home/kovid/work/trunk/src/calibre/gui2/filename_pattern_ui.py:114 msgid "Regular &expression" -msgstr "" +msgstr "&Expresión regular" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:116 +#: /home/kovid/work/trunk/src/calibre/gui2/filename_pattern_ui.py:116 msgid "File &name:" -msgstr "" +msgstr "&Nome de ficheiro:" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:118 +#: /home/kovid/work/trunk/src/calibre/gui2/filename_pattern_ui.py:118 msgid "Title:" -msgstr "" +msgstr "Título:" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:119 +#: /home/kovid/work/trunk/src/calibre/gui2/filename_pattern_ui.py:119 msgid "Regular expression (?P<title>)" -msgstr "" +msgstr "Expresión regular (?P<title>)" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:120 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:123 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:126 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:129 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:83 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:87 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:99 +#: /home/kovid/work/trunk/src/calibre/gui2/filename_pattern_ui.py:120 +#: /home/kovid/work/trunk/src/calibre/gui2/filename_pattern_ui.py:123 +#: /home/kovid/work/trunk/src/calibre/gui2/filename_pattern_ui.py:126 +#: /home/kovid/work/trunk/src/calibre/gui2/filename_pattern_ui.py:129 +#: /home/kovid/work/trunk/src/calibre/gui2/filename_pattern_ui.py:132 +#: /home/kovid/work/trunk/src/calibre/gui2/widgets.py:83 +#: /home/kovid/work/trunk/src/calibre/gui2/widgets.py:87 +#: /home/kovid/work/trunk/src/calibre/gui2/widgets.py:92 +#: /home/kovid/work/trunk/src/calibre/gui2/widgets.py:97 +#: /home/kovid/work/trunk/src/calibre/gui2/widgets.py:99 msgid "No match" -msgstr "" +msgstr "Non hai coincidencias" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:121 +#: /home/kovid/work/trunk/src/calibre/gui2/filename_pattern_ui.py:121 msgid "Authors:" -msgstr "" +msgstr "Autoría:" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:122 +#: /home/kovid/work/trunk/src/calibre/gui2/filename_pattern_ui.py:122 msgid "Regular expression (?P)" -msgstr "" +msgstr "Expresión regular (?P)" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:124 +#: /home/kovid/work/trunk/src/calibre/gui2/filename_pattern_ui.py:124 msgid "Series:" -msgstr "" +msgstr "Series:" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:125 +#: /home/kovid/work/trunk/src/calibre/gui2/filename_pattern_ui.py:125 msgid "Regular expression (?P)" -msgstr "" +msgstr "Expresión regular (?P)" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:127 +#: /home/kovid/work/trunk/src/calibre/gui2/filename_pattern_ui.py:127 msgid "Series index:" -msgstr "" +msgstr "Ãndice de series:" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:128 +#: /home/kovid/work/trunk/src/calibre/gui2/filename_pattern_ui.py:128 msgid "Regular expression (?P)" -msgstr "" +msgstr "Expresión regular (?P)" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:130 +#: /home/kovid/work/trunk/src/calibre/gui2/filename_pattern_ui.py:130 msgid "ISBN:" -msgstr "" +msgstr "ISBN:" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:131 +#: /home/kovid/work/trunk/src/calibre/gui2/filename_pattern_ui.py:131 msgid "Regular expression (?P)" -msgstr "" +msgstr "Expresión regular (?P)" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:33 +#: /home/kovid/work/trunk/src/calibre/gui2/init.py:33 msgid "Similar books..." -msgstr "" +msgstr "Libros semellantes..." -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:66 +#: /home/kovid/work/trunk/src/calibre/gui2/init.py:66 msgid "Add books to library" -msgstr "" +msgstr "Engadir libros á biblioteca" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:68 -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:76 -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:84 +#: /home/kovid/work/trunk/src/calibre/gui2/init.py:68 +#: /home/kovid/work/trunk/src/calibre/gui2/init.py:76 +#: /home/kovid/work/trunk/src/calibre/gui2/init.py:84 msgid "Manage collections" -msgstr "" +msgstr "Xestionar coleccións" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:165 +#: /home/kovid/work/trunk/src/calibre/gui2/init.py:165 msgid "Cover Browser" -msgstr "" +msgstr "Navegador de capas" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:183 +#: /home/kovid/work/trunk/src/calibre/gui2/init.py:183 msgid "Tag Browser" -msgstr "" +msgstr "Navegador de etiquetas" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:204 +#: /home/kovid/work/trunk/src/calibre/gui2/init.py:204 msgid "version" -msgstr "" +msgstr "versión" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:205 +#: /home/kovid/work/trunk/src/calibre/gui2/init.py:205 msgid "created by Kovid Goyal" -msgstr "" +msgstr "creado por Kovid Goyal" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:223 +#: /home/kovid/work/trunk/src/calibre/gui2/init.py:223 msgid "Connected " msgstr "Conectado " -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:232 +#: /home/kovid/work/trunk/src/calibre/gui2/init.py:232 msgid "Update found" -msgstr "" +msgstr "Actualización atopada" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:276 -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:285 +#: /home/kovid/work/trunk/src/calibre/gui2/init.py:276 +#: /home/kovid/work/trunk/src/calibre/gui2/init.py:285 msgid "Book Details" -msgstr "" +msgstr "Detalles do libro" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:60 +#: /home/kovid/work/trunk/src/calibre/gui2/jobs.py:60 msgid "Job" msgstr "Traballo" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:61 +#: /home/kovid/work/trunk/src/calibre/gui2/jobs.py:61 msgid "Status" msgstr "Estado" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:62 +#: /home/kovid/work/trunk/src/calibre/gui2/jobs.py:62 msgid "Progress" msgstr "Progreso" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:63 +#: /home/kovid/work/trunk/src/calibre/gui2/jobs.py:63 msgid "Running time" msgstr "Tempo en execución" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:75 +#: /home/kovid/work/trunk/src/calibre/gui2/jobs.py:75 msgid "There are %d running jobs:" -msgstr "" +msgstr "Hai %d tarefas a se executar:" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:79 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:101 +#: /home/kovid/work/trunk/src/calibre/gui2/jobs.py:79 +#: /home/kovid/work/trunk/src/calibre/gui2/jobs.py:86 +#: /home/kovid/work/trunk/src/calibre/gui2/jobs.py:101 msgid "Unknown job" -msgstr "" +msgstr "Tarefa descoñecida" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:82 +#: /home/kovid/work/trunk/src/calibre/gui2/jobs.py:82 msgid "There are %d waiting jobs:" -msgstr "" +msgstr "Hai %d tarefas a agardaren" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:216 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:219 +#: /home/kovid/work/trunk/src/calibre/gui2/jobs.py:216 +#: /home/kovid/work/trunk/src/calibre/gui2/jobs.py:219 msgid "Cannot kill job" -msgstr "" +msgstr "Non se pode deter a tarefa" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:217 +#: /home/kovid/work/trunk/src/calibre/gui2/jobs.py:217 msgid "Cannot kill jobs that communicate with the device" -msgstr "" +msgstr "Non se poden deter as tarefas que comunican co dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:220 +#: /home/kovid/work/trunk/src/calibre/gui2/jobs.py:220 msgid "Job has already run" -msgstr "" +msgstr "A tarefa xa se está a executar" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:248 +#: /home/kovid/work/trunk/src/calibre/gui2/jobs.py:248 msgid "Unavailable" -msgstr "" +msgstr "Non dispoñíbel" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:280 +#: /home/kovid/work/trunk/src/calibre/gui2/jobs.py:280 msgid "Jobs:" -msgstr "Traballos:" +msgstr "Tarefas:" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:298 +#: /home/kovid/work/trunk/src/calibre/gui2/jobs.py:298 msgid "Click to see list of active jobs." -msgstr "Prema para ver a lista dos traballos activos." +msgstr "Prema para ver a listaxe de tarefas activas" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:358 +#: /home/kovid/work/trunk/src/calibre/gui2/jobs.py:358 msgid " - Jobs" -msgstr " - Traballos" +msgstr " - Tarefas" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:33 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:33 msgid "Save single format to disk..." -msgstr "" +msgstr "Gardar un único formato no disco..." -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:76 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:76 msgid "Eject this device" -msgstr "" +msgstr "Extraer o dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:85 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:192 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:85 +#: /home/kovid/work/trunk/src/calibre/library/server/opds.py:192 msgid "Library" -msgstr "" +msgstr "Biblioteca" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:86 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:86 msgid "Show books in calibre library" -msgstr "" +msgstr "Amosar os libros na biblioteca do Calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:87 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:87 msgid "Reader" -msgstr "" +msgstr "Lector" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:88 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:88 msgid "Show books in the main memory of the device" -msgstr "" +msgstr "Amosar os libros na memoria principal do dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:89 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:568 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:89 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:571 msgid "Card A" -msgstr "" +msgstr "Tarxeta A" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:90 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:90 msgid "Show books in storage card A" -msgstr "" +msgstr "Amosar os libros almacenados na tarxeta A" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:91 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:570 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:91 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:573 msgid "Card B" -msgstr "" +msgstr "Tarxeta B" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:92 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:92 msgid "Show books in storage card B" -msgstr "" +msgstr "Amosar os libros almacenados na tarxeta B" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:131 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:131 msgid "available" -msgstr "" +msgstr "dispoñíbel" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:162 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:162 msgid "" "Books display will be restricted to those matching the selected saved search" msgstr "" +"Só se amosarán os libros que coincidan coa busca gardada seleccionada" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:175 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:175 msgid "Advanced search" -msgstr "" +msgstr "Procura avanzada" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:184 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:184 msgid "" "

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

    Words separated by spaces are ANDed" msgstr "" +"

    Procura a listaxe de libros por título, autoría, editorial, etiquetas, " +"comentarios etc.

    Búscanse os libros que conteñan todas as palabras " +"separadas por espazos" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:191 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:191 msgid "Reset Quick Search" -msgstr "" +msgstr "Reiniciar a procura rápida" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:203 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:203 msgid "Copy current search text (instead of search name)" -msgstr "" +msgstr "Copiar o texto de procura actual (no canto do nome da procura)" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:209 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:209 msgid "Save current search under the name shown in the box" -msgstr "" +msgstr "Gardar a procura actual baixo o nome amosado na caixa" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:215 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:215 msgid "Delete current saved search" -msgstr "" +msgstr "Borrar a actual procura gardada" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:302 -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:467 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:108 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:302 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:467 +#: /home/kovid/work/trunk/src/calibre/library/server/opds.py:108 msgid "%d books" -msgstr "" +msgstr "%d libros" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:305 -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:468 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:305 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:468 msgid "Choose calibre library to work with" -msgstr "" +msgstr "Elixir a biblioteca do Calibre para traballar" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:336 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:336 msgid "Connect to folder" -msgstr "" +msgstr "Conectar ao cartafol" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:341 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:341 msgid "Connect to iTunes" -msgstr "" +msgstr "Conectar ao iTunes" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:348 -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:356 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:348 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:356 msgid "Start Content Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:358 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:358 msgid "Stop Content Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:369 -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:375 -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:377 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:369 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:375 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:377 msgid "Email to" -msgstr "" +msgstr "Correo a" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:377 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:377 msgid " and delete from library" -msgstr "" +msgstr " e borrar da biblioteca" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:389 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:389 msgid "Setup email based sharing of books" -msgstr "" +msgstr "Actualizar o correo baseado na procura de libros" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:462 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:462 msgid "A" -msgstr "" +msgstr "A" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:462 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:462 msgid "Add books" msgstr "Engadir libros" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:463 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:463 msgid "E" -msgstr "" +msgstr "E" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:463 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:463 msgid "Edit metadata" -msgstr "" +msgstr "Editar os metadatos" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:464 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:464 msgid "C" -msgstr "" +msgstr "C" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:464 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:464 msgid "Convert books" -msgstr "" +msgstr "Converter os libros" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:465 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:465 msgid "V" -msgstr "" +msgstr "V" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:465 -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:568 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:465 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:568 msgid "View" msgstr "Ver" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:466 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:466 msgid "Send to device" msgstr "Enviar ao dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:469 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:469 msgid "F" -msgstr "" +msgstr "F" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:469 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:469 msgid "Fetch news" msgstr "Obter novas" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:470 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:470 msgid "S" -msgstr "" +msgstr "S" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:470 -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:551 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:470 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:551 msgid "Save to disk" msgstr "Gardar no disco" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:471 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:471 msgid "Connect/share" -msgstr "" +msgstr "Conectar / compartir" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:472 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:472 msgid "Del" msgstr "Supr" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:472 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:472 msgid "Remove books" msgstr "Quitar libros" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:473 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:473 msgid "Browse the calibre User Manual" -msgstr "" +msgstr "Navegar polo manual de usuario do Calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:473 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:473 msgid "F1" -msgstr "" +msgstr "F1" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:473 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:473 msgid "Help" -msgstr "" +msgstr "Axuda" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:474 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:474 msgid "Ctrl+P" -msgstr "" +msgstr "Ctrl + P" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:476 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:476 msgid "M" -msgstr "" +msgstr "M" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:476 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:476 msgid "Merge book records" -msgstr "" +msgstr "Combinar os rexistros dos libros" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:477 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:477 msgid "Open containing folder" -msgstr "" +msgstr "Abrir o cartafol" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:479 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:479 msgid "Show book details" -msgstr "" +msgstr "Amosar os detalles do libro" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:481 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:481 msgid "Books by same author" -msgstr "" +msgstr "Libros coa mesma autoría" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:483 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:483 msgid "Books in this series" -msgstr "" +msgstr "Libros con esta serie" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:485 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:485 msgid "Books by this publisher" -msgstr "" +msgstr "Libros por editorial" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:487 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:487 msgid "Books with the same tags" -msgstr "" +msgstr "Libros coas mesmas etiquetas" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:501 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:501 msgid "Edit metadata individually" -msgstr "" +msgstr "Editar os metadatos indiviudalmente" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:504 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:504 msgid "Edit metadata in bulk" -msgstr "" +msgstr "Editar os metadatos en bloque" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:507 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:507 msgid "Download metadata and covers" -msgstr "" +msgstr "Descargar os metadatos e as capas" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:510 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:510 msgid "Download only metadata" -msgstr "" +msgstr "Descargar só os metadatos" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:512 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:512 msgid "Download only covers" -msgstr "" +msgstr "Descargar só as capas" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:515 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:515 msgid "Download only social metadata" -msgstr "" +msgstr "Descargar só os datos sociais" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:521 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:521 msgid "Merge into first selected book - delete others" -msgstr "" +msgstr "Unir no primeiro libro seleccionado - eliminar os máis" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:524 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:524 msgid "Merge into first selected book - keep others" -msgstr "" +msgstr "Unir no primeiro libro seleccionado - conservar os máis" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:532 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:532 msgid "Add books from a single directory" -msgstr "" +msgstr "Engadir libros dun único directorio" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:534 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:534 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 "" +"Engadir libros de directorios, incluídos os directorios dependentes (un " +"libro por directorio interpreta que todos os ficheiros de libros " +"electrónicos é o mesmo libro cun formato diferente)" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:538 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:538 msgid "" "Add books from directories, including sub directories (Multiple books per " "directory, assumes every ebook file is a different book)" msgstr "" +"Engadir libros de directorios, incluídos os directorios dependentes " +"(múltiplos libros por directorio interpreta que cada ficheiro de libro " +"electrónico é un libro diferente)" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:541 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:541 msgid "Add Empty book. (Book entry with no formats)" -msgstr "" +msgstr "Engadir un libro baleiro. (Unha entrada de libro sen formato)" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:553 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:553 msgid "Save to disk in a single directory" msgstr "Gardar no disco nun único cartafol" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:555 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:385 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:555 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:385 msgid "Save only %s format to disk" -msgstr "" +msgstr "Gardar só o formato %s no disco" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:559 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:388 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:559 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:388 msgid "Save only %s format to disk in a single directory" -msgstr "" +msgstr "Gardar só o formato %s no disco nun único directorio" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:569 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:569 msgid "View specific format" -msgstr "" +msgstr "Ver o formato específico" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:575 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:575 msgid "Remove selected books" msgstr "Quitar os libros seleccionados" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:577 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:577 msgid "Remove files of a specific format from selected books.." -msgstr "" +msgstr "Borrar os ficheiros dun formato concreto dos libros seleccionados.." -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:580 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:580 msgid "Remove all formats from selected books, except..." -msgstr "" +msgstr "Borrar todos os formatos dos libros seleccionados agás..." -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:583 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:583 msgid "Remove covers from selected books" -msgstr "" +msgstr "Borrar as portadas dos libros seleccionados" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:586 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:586 msgid "Remove matching books from device" -msgstr "" +msgstr "Borrar os libros coincidentes do dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:603 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:603 msgid "Convert individually" -msgstr "" +msgstr "Converter individualmente" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:605 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:605 msgid "Bulk convert" -msgstr "" +msgstr "Converter en grupos" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:609 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:609 msgid "Create catalog of books in your calibre library" -msgstr "" +msgstr "Crear un catálogo de libros na biblioteca do Calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:617 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:617 msgid "Run welcome wizard" -msgstr "" +msgstr "Lanzar o asistente de benvida" -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:284 +#: /home/kovid/work/trunk/src/calibre/gui2/library/delegates.py:284 msgid "N" -msgstr "" +msgstr "N" -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:284 +#: /home/kovid/work/trunk/src/calibre/gui2/library/delegates.py:284 msgid "Y" -msgstr "" +msgstr "S" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:66 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:66 msgid "On Device" -msgstr "" +msgstr "No dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:68 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:68 msgid "Size (MB)" -msgstr "" +msgstr "Tamaño (MB)" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:71 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:71 msgid "Rating" msgstr "Puntuación" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:324 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1084 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:324 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:1084 msgid "Book %s of %s." -msgstr "" +msgstr "Libro %s de %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:679 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1182 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:398 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:679 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:1182 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:398 msgid "The lookup/search name is \"{0}\"" -msgstr "" +msgstr "O nome de busca é \"{0}\"" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:886 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:886 msgid "In Library" -msgstr "" +msgstr "Na biblioteca" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:890 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:890 msgid "Size" -msgstr "" +msgstr "Tamño" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1162 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:1162 msgid "Marked for deletion" -msgstr "" +msgstr "Marcado para borrar" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1165 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:1165 msgid "Double click to edit me

    " -msgstr "" +msgstr "Prema dúas veces para editar

    " -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:110 +#: /home/kovid/work/trunk/src/calibre/gui2/library/views.py:110 msgid "Hide column %s" -msgstr "" +msgstr "Ocultar a columna %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:115 +#: /home/kovid/work/trunk/src/calibre/gui2/library/views.py:115 msgid "Sort on %s" -msgstr "" +msgstr "Ordenar en %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:116 +#: /home/kovid/work/trunk/src/calibre/gui2/library/views.py:116 msgid "Ascending" -msgstr "" +msgstr "Ascendente" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:119 +#: /home/kovid/work/trunk/src/calibre/gui2/library/views.py:119 msgid "Descending" -msgstr "" +msgstr "Descendente" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:131 +#: /home/kovid/work/trunk/src/calibre/gui2/library/views.py:131 msgid "Change text alignment for %s" -msgstr "" +msgstr "Mudar o aliñamento do texto a %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:133 +#: /home/kovid/work/trunk/src/calibre/gui2/library/views.py:133 msgid "Left" -msgstr "" +msgstr "Esquerda" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:133 +#: /home/kovid/work/trunk/src/calibre/gui2/library/views.py:133 msgid "Right" -msgstr "" +msgstr "Dereita" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:134 +#: /home/kovid/work/trunk/src/calibre/gui2/library/views.py:134 msgid "Center" -msgstr "" +msgstr "Centrado" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 +#: /home/kovid/work/trunk/src/calibre/gui2/library/views.py:153 msgid "Show column" -msgstr "" +msgstr "Amosar columna" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:165 +#: /home/kovid/work/trunk/src/calibre/gui2/library/views.py:165 msgid "Restore default layout" -msgstr "" +msgstr "Restaurar a disposición por defecto" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:566 -msgid "Not allowed" -msgstr "Non permitido" - -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:567 +#: /home/kovid/work/trunk/src/calibre/gui2/library/views.py:567 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." msgstr "" +"Copiar directamente a un dispositivo non é compatíbel. Primeiro debe engadir " +"o libro á biblioteca do Calibre." -#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/config_ui.py:47 +#: /home/kovid/work/trunk/src/calibre/gui2/lrf_renderer/config_ui.py:47 msgid "Configure Viewer" -msgstr "" +msgstr "Configurar o visor" -#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/config_ui.py:48 +#: /home/kovid/work/trunk/src/calibre/gui2/lrf_renderer/config_ui.py:48 msgid "Use white background" -msgstr "" +msgstr "Usar un fondo branco" -#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/config_ui.py:49 +#: /home/kovid/work/trunk/src/calibre/gui2/lrf_renderer/config_ui.py:49 msgid "Hyphenate" -msgstr "" +msgstr "División de palabras" -#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/config_ui.py:50 +#: /home/kovid/work/trunk/src/calibre/gui2/lrf_renderer/config_ui.py:50 msgid "Changes will only take effect after a restart." -msgstr "" +msgstr "As mudanzas só terán efecto despois de reiniciar<" -#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:70 +#: /home/kovid/work/trunk/src/calibre/gui2/lrf_renderer/main.py:70 msgid " - LRF Viewer" -msgstr "" +msgstr " - Visor de LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 +#: /home/kovid/work/trunk/src/calibre/gui2/lrf_renderer/main.py:160 msgid "No matches for the search phrase %s were found." -msgstr "" +msgstr "Sen coincidencias para a frase de busca %s." -#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:440 +#: /home/kovid/work/trunk/src/calibre/gui2/lrf_renderer/main.py:160 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:440 msgid "No matches found" -msgstr "" +msgstr "Non se atopou ningunha coincidencia" -#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:128 +#: /home/kovid/work/trunk/src/calibre/gui2/lrf_renderer/main_ui.py:128 msgid "LRF Viewer" -msgstr "" +msgstr "Visor de LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:129 +#: /home/kovid/work/trunk/src/calibre/gui2/lrf_renderer/main_ui.py:129 msgid "Parsing LRF file" -msgstr "" +msgstr "A analizar o visor de LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:130 +#: /home/kovid/work/trunk/src/calibre/gui2/lrf_renderer/main_ui.py:130 msgid "LRF Viewer toolbar" -msgstr "" +msgstr "Barra de ferramentas do visor de LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:476 +#: /home/kovid/work/trunk/src/calibre/gui2/lrf_renderer/main_ui.py:131 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/documentview.py:476 msgid "Next Page" -msgstr "" +msgstr "Páxina seguinte" -#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:477 +#: /home/kovid/work/trunk/src/calibre/gui2/lrf_renderer/main_ui.py:132 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/documentview.py:477 msgid "Previous Page" -msgstr "" +msgstr "Páxina anterior" -#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:188 +#: /home/kovid/work/trunk/src/calibre/gui2/lrf_renderer/main_ui.py:133 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:188 msgid "Back" msgstr "Voltar" -#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:134 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:189 +#: /home/kovid/work/trunk/src/calibre/gui2/lrf_renderer/main_ui.py:134 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:189 msgid "Forward" -msgstr "" +msgstr "Adiante" -#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:135 +#: /home/kovid/work/trunk/src/calibre/gui2/lrf_renderer/main_ui.py:135 msgid "Next match" -msgstr "" +msgstr "Seguinte consulta" -#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:136 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:196 +#: /home/kovid/work/trunk/src/calibre/gui2/lrf_renderer/main_ui.py:136 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:196 msgid "Open ebook" -msgstr "" +msgstr "Abrir libro electrónico" -#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:137 +#: /home/kovid/work/trunk/src/calibre/gui2/lrf_renderer/main_ui.py:137 msgid "Configure" msgstr "Configurar" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:30 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:30 msgid "Use the library located at the specified path." -msgstr "" +msgstr "Usar da biblioteca localizada no camiño específico." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:32 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:32 msgid "Start minimized to system tray." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:34 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:34 msgid "Log debugging information to console" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:36 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:36 msgid "Do not check for updates" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:595 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:58 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/__init__.py:598 msgid "Calibre Library" msgstr "Biblioteca do Calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:86 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:86 msgid "Choose a location for your calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:95 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:95 msgid "Failed to create library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:96 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:96 msgid "Failed to create calibre library at: %r." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:99 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:184 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:99 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:184 msgid "Choose a location for your new calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:153 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:153 msgid "Initializing user interface..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:178 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:178 msgid "Repairing failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:179 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:179 msgid "The database repair failed. Starting with a new empty library." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:193 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:226 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:193 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:226 msgid "Bad database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:194 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:194 msgid "Bad database location %r. calibre will now quit." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:207 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:207 msgid "Corrupted database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:208 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:208 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:214 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:214 msgid "" "Repairing database. This can take a very long time for a large collection" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:227 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:227 msgid "" "Bad database location %r. Will start with a new, empty calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:238 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:238 msgid "Starting %s: Loading books..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:283 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:283 msgid "If you are sure it is not running" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:285 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:285 msgid "Cannot Start " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:286 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:286 msgid "%s is already running." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:289 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:289 msgid "may be running in the system tray, in the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:291 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:291 msgid "upper right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:293 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:293 msgid "lower right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:296 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:296 msgid "try rebooting your computer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:298 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:310 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:298 +#: /home/kovid/work/trunk/src/calibre/gui2/main.py:310 msgid "try deleting the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_window.py:20 +#: /home/kovid/work/trunk/src/calibre/gui2/main_window.py:20 msgid "" "Redirect console output to a dialog window (both stdout and stderr). Useful " "on windows where GUI apps do not have a output streams." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_window.py:61 +#: /home/kovid/work/trunk/src/calibre/gui2/main_window.py:61 msgid "&Preferences" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_window.py:62 +#: /home/kovid/work/trunk/src/calibre/gui2/main_window.py:62 msgid "&Quit" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_window.py:90 +#: /home/kovid/work/trunk/src/calibre/gui2/main_window.py:90 msgid "ERROR: Unhandled exception" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:89 +#: /home/kovid/work/trunk/src/calibre/gui2/metadata.py:93 msgid "Book has neither title nor ISBN" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:115 +#: /home/kovid/work/trunk/src/calibre/gui2/metadata.py:119 msgid "No matches found for this book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:94 -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:254 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:554 +#: /home/kovid/work/trunk/src/calibre/gui2/search_box.py:94 +#: /home/kovid/work/trunk/src/calibre/gui2/search_box.py:254 +#: /home/kovid/work/trunk/src/calibre/gui2/widgets.py:554 msgid "Search" msgstr "Buscar" -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:306 +#: /home/kovid/work/trunk/src/calibre/gui2/search_box.py:306 msgid "The selected search will be permanently deleted. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:348 +#: /home/kovid/work/trunk/src/calibre/gui2/search_box.py:348 msgid "Search (For Advanced Search click the button to the left)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:390 +#: /home/kovid/work/trunk/src/calibre/gui2/search_box.py:390 msgid "Saved Searches" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:398 +#: /home/kovid/work/trunk/src/calibre/gui2/search_box.py:398 msgid "Choose saved search or enter name for new saved search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/search_restriction_mixin.py:10 +#: /home/kovid/work/trunk/src/calibre/gui2/search_restriction_mixin.py:10 msgid "Restrict to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/search_restriction_mixin.py:16 -#: /home/kovid/work/calibre/src/calibre/gui2/search_restriction_mixin.py:55 +#: /home/kovid/work/trunk/src/calibre/gui2/search_restriction_mixin.py:16 +#: /home/kovid/work/trunk/src/calibre/gui2/search_restriction_mixin.py:55 msgid "(all books)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/search_restriction_mixin.py:49 +#: /home/kovid/work/trunk/src/calibre/gui2/search_restriction_mixin.py:49 msgid "({0} of {1})" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/search_restriction_mixin.py:57 +#: /home/kovid/work/trunk/src/calibre/gui2/search_restriction_mixin.py:57 msgid "({0} of all)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:58 +#: /home/kovid/work/trunk/src/calibre/gui2/shortcuts.py:58 msgid "Press a key..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:79 +#: /home/kovid/work/trunk/src/calibre/gui2/shortcuts.py:79 msgid "Already assigned" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:81 +#: /home/kovid/work/trunk/src/calibre/gui2/shortcuts.py:81 msgid "already assigned to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 +#: /home/kovid/work/trunk/src/calibre/gui2/shortcuts.py:131 +#: /home/kovid/work/trunk/src/calibre/gui2/shortcuts.py:223 msgid " or " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:69 +#: /home/kovid/work/trunk/src/calibre/gui2/shortcuts.py:133 +#: /home/kovid/work/trunk/src/calibre/gui2/shortcuts_ui.py:69 msgid "&Default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:135 +#: /home/kovid/work/trunk/src/calibre/gui2/shortcuts.py:135 msgid "Customize shortcuts for" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 +#: /home/kovid/work/trunk/src/calibre/gui2/shortcuts.py:223 msgid "Keys" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:225 +#: /home/kovid/work/trunk/src/calibre/gui2/shortcuts.py:225 msgid "Double click to change" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:68 +#: /home/kovid/work/trunk/src/calibre/gui2/shortcuts_ui.py:68 msgid "Frame" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:70 +#: /home/kovid/work/trunk/src/calibre/gui2/shortcuts_ui.py:70 msgid "&Custom" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:71 +#: /home/kovid/work/trunk/src/calibre/gui2/shortcuts_ui.py:71 msgid "&Shortcut:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:72 -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:77 +#: /home/kovid/work/trunk/src/calibre/gui2/shortcuts_ui.py:72 +#: /home/kovid/work/trunk/src/calibre/gui2/shortcuts_ui.py:77 msgid "Click to change" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:79 +#: /home/kovid/work/trunk/src/calibre/gui2/shortcuts_ui.py:74 +#: /home/kovid/work/trunk/src/calibre/gui2/shortcuts_ui.py:79 msgid "Clear" msgstr "Limpar" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:76 +#: /home/kovid/work/trunk/src/calibre/gui2/shortcuts_ui.py:76 msgid "&Alternate shortcut:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:190 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:190 msgid "Rename '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:194 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:194 msgid "Edit sort for '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:199 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:199 msgid "Hide category %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:202 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:202 msgid "Show category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:206 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:206 msgid "Show all categories" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:213 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:217 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:213 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:217 msgid "Manage %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:220 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:220 msgid "Manage Saved Searches" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:227 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:231 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:227 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:231 msgid "Manage User Categories" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:432 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:291 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:432 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:291 msgid "Searches" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:510 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:510 msgid "Duplicate search name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:511 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:511 msgid "The saved search name %s is already used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:767 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:767 msgid "Sort by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:767 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:767 msgid "Sort by popularity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:768 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:768 msgid "Sort by average rating" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:771 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:771 msgid "Set the sort order for entries in the Tag Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:777 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:777 msgid "Match all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:777 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:777 msgid "Match any" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:782 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:782 msgid "" "When selecting multiple entries in the Tag Browser match any or all of them" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:786 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:786 msgid "Manage &user categories" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:789 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:789 msgid "Add your own categories to the Tag Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:63 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:182 +#: /home/kovid/work/trunk/src/calibre/gui2/tools.py:63 +#: /home/kovid/work/trunk/src/calibre/gui2/tools.py:182 msgid "Convert book %d of %d (%s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:90 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:202 +#: /home/kovid/work/trunk/src/calibre/gui2/tools.py:90 +#: /home/kovid/work/trunk/src/calibre/gui2/tools.py:202 msgid "Could not convert some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:203 +#: /home/kovid/work/trunk/src/calibre/gui2/tools.py:91 +#: /home/kovid/work/trunk/src/calibre/gui2/tools.py:203 msgid "" "Could not convert %d of %d books, because no suitable source format was " "found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:120 +#: /home/kovid/work/trunk/src/calibre/gui2/tools.py:120 msgid "Queueing books for bulk conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:181 +#: /home/kovid/work/trunk/src/calibre/gui2/tools.py:181 msgid "Queueing " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:239 +#: /home/kovid/work/trunk/src/calibre/gui2/tools.py:239 msgid "Fetch news from " msgstr "Obter novas de " -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:301 +#: /home/kovid/work/trunk/src/calibre/gui2/tools.py:301 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:302 +#: /home/kovid/work/trunk/src/calibre/gui2/tools.py:302 msgid "" "The following books have already been converted to %s format. Do you wish to " "reconvert them?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:160 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:160 msgid "&Restore" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:162 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:162 msgid "&Donate to support calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:166 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:166 msgid "&Eject connected device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:169 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:169 msgid "&Restart" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:217 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:217 msgid "Calibre Quick Start Guide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:362 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:367 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:362 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:367 msgid "Cannot configure" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:363 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:363 msgid "Cannot configure while there are running jobs." msgstr "Non se pode configurar mentres haxa traballos en execución." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:368 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:368 msgid "Cannot configure before calibre is restarted." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:415 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:415 msgid "No detailed info available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:416 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:416 msgid "No detailed information is available for books on the device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:468 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:496 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:468 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:496 msgid "Conversion Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:469 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:469 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:482 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:482 msgid "Recipe Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:497 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:497 msgid "Failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:537 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:537 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. " "Your donation helps keep calibre development going." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:563 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:563 msgid "There are active jobs. Are you sure you want to quit?" msgstr "Hai traballos en activo. Está seguro de querer saír?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:566 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:566 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:570 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:570 msgid "WARNING: Active jobs" msgstr "Aviso: traballos en activo" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:625 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:625 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/update.py:56 +#: /home/kovid/work/trunk/src/calibre/gui2/update.py:56 msgid "Update available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/update.py:57 +#: /home/kovid/work/trunk/src/calibre/gui2/update.py:57 msgid "" "%s has been updated to version %s. See the new features. Visit the download page?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/bookmarkmanager.py:43 msgid "Edit bookmark" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/bookmarkmanager.py:43 msgid "New title for bookmark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:52 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/bookmarkmanager.py:52 msgid "Export Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:54 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/bookmarkmanager.py:54 msgid "Saved Bookmarks (*.pickle)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/bookmarkmanager.py:62 msgid "Import Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/bookmarkmanager.py:62 msgid "Pickled Bookmarks (*.pickle)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:89 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/bookmarkmanager.py:89 msgid "Name" msgstr "Nome" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:56 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/bookmarkmanager_ui.py:56 msgid "Bookmark Manager" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:57 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/bookmarkmanager_ui.py:57 msgid "Actions" msgstr "Accións" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:58 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/bookmarkmanager_ui.py:58 msgid "Edit" msgstr "Editar" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:59 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/bookmarkmanager_ui.py:59 msgid "Delete" msgstr "Borrar" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:60 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/bookmarkmanager_ui.py:60 msgid "Reset" msgstr "Restaurar" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:61 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/bookmarkmanager_ui.py:61 msgid "Export" msgstr "Exportar" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:62 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/bookmarkmanager_ui.py:62 msgid "Import" msgstr "Importar" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:154 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/config_ui.py:154 msgid "Configure Ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:155 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/config_ui.py:155 msgid "&Font options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:156 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/config_ui.py:156 msgid "Se&rif family:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:157 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/config_ui.py:157 msgid "&Sans family:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:158 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/config_ui.py:158 msgid "&Monospace family:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:159 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/config_ui.py:159 msgid "&Default font size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:162 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:168 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/config_ui.py:160 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/config_ui.py:162 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/config_ui.py:168 msgid " px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:161 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/config_ui.py:161 msgid "Monospace &font size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:163 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/config_ui.py:163 msgid "S&tandard font:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:164 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/config_ui.py:164 msgid "Serif" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:165 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/config_ui.py:165 msgid "Sans-serif" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:166 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/config_ui.py:166 msgid "Monospace" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:167 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/config_ui.py:167 msgid "Remember last used &window size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:169 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/config_ui.py:169 msgid "Maximum &view width:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:170 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/config_ui.py:170 msgid "H&yphenate (break line in the middle of large words)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:171 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/config_ui.py:171 msgid "" "The default language to use for hyphenation rules. If the book does not " "specify a language, this will be used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:172 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/config_ui.py:172 msgid "Default &language for hyphenation:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:173 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/config_ui.py:173 msgid "&Resize images larger than the viewer window (needs restart)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:174 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/config_ui.py:174 msgid "&User stylesheet" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:175 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/config_ui.py:175 msgid "&General" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:176 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/config_ui.py:176 msgid "Double click to change a keyboard shortcut" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:177 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/config_ui.py:177 msgid "&Keyboard shortcuts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/dictionary.py:53 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/dictionary.py:53 msgid "No results found for:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:35 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/documentview.py:35 msgid "Options to customize the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:675 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/documentview.py:42 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:675 msgid "Remember last used window size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:44 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:81 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/documentview.py:44 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/documentview.py:81 msgid "" "Set the user CSS stylesheet. This can be used to customize the look of all " "books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:46 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/documentview.py:46 msgid "Maximum width of the viewer window, in pixels." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:48 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/documentview.py:48 msgid "Resize images larger than the viewer window to fit inside it" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/documentview.py:49 msgid "Hyphenate text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/documentview.py:51 msgid "Default language for hyphenation rules" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:53 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/documentview.py:53 msgid "Font options" msgstr "Opcións de tipo de letra" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/documentview.py:55 msgid "The serif font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:57 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/documentview.py:57 msgid "The sans-serif font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/documentview.py:59 msgid "The monospaced font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/documentview.py:60 msgid "The standard font size in px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:61 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/documentview.py:61 msgid "The monospaced font size in px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:62 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/documentview.py:62 msgid "The standard font type" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:452 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/documentview.py:452 msgid "&Lookup in dictionary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:455 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:138 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/documentview.py:455 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:138 msgid "Go to..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:467 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/documentview.py:467 msgid "Next Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:468 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/documentview.py:468 msgid "Previous Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:470 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/documentview.py:470 msgid "Document Start" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:471 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/documentview.py:471 msgid "Document End" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:473 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/documentview.py:473 msgid "Section Start" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:474 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/documentview.py:474 msgid "Section End" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:12 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/keys.py:12 msgid "Scroll to the next page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:15 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/keys.py:15 msgid "Scroll to the previous page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:18 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/keys.py:18 msgid "Scroll to the next section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:21 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/keys.py:21 msgid "Scroll to the previous section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:24 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/keys.py:24 msgid "Scroll to the bottom of the section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:27 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/keys.py:27 msgid "Scroll to the top of the section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:30 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/keys.py:30 msgid "Scroll to the end of the document" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:33 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/keys.py:33 msgid "Scroll to the start of the document" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:36 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/keys.py:36 msgid "Scroll down" msgstr "Desprazar cara a abaixo" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:39 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/keys.py:39 msgid "Scroll up" msgstr "Desprazar cara a arriba" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:42 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/keys.py:42 msgid "Scroll left" msgstr "Desprazar cara á esquerda" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:45 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/keys.py:45 msgid "Scroll right" msgstr "Desprazar cara á dereita" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:115 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:115 msgid "Book format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:184 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:184 msgid "Position in book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:191 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:191 msgid "Go to a reference. To get reference numbers, use the reference mode." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:199 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:199 msgid "Search for text in book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:268 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:268 msgid "Print Preview" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:299 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:299 msgid "Connecting to dict.org to lookup: %s…" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:398 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:398 msgid "Choose ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:399 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:399 msgid "Ebooks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:418 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:418 msgid "Add bookmark" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:418 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:418 msgid "Enter title for bookmark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:441 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:441 msgid "No matches found for: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:478 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:478 msgid "Loading flow..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:514 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:514 msgid "Laying out %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:543 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:543 msgid "Manage Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:578 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:578 msgid "Loading ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:586 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:586 msgid "DRM Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:587 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:587 msgid "

    This book is protected by DRM" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:591 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:591 msgid "Could not open ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:665 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:665 msgid "Options to control the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:672 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:672 msgid "" "If specified, viewer window will try to come to the front when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:677 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:677 msgid "Print javascript alert and console messages to the console" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:683 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:683 msgid "" "%prog [options] file\n" "\n" "View an ebook.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:184 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:184 msgid "E-book Viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:185 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:185 msgid "Close dictionary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:187 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:187 msgid "toolBar" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:190 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:190 msgid "Next page" msgstr "Páxina seguinte" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:191 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:191 msgid "Previous page" msgstr "Páxina anterior" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:192 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:192 msgid "Font size larger" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:193 msgid "Font size smaller" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:197 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:197 msgid "Find next" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:198 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:198 msgid "Find next occurrence" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:199 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:199 msgid "F3" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:200 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:200 msgid "Copy to clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:202 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:202 msgid "Reference Mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:203 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:203 msgid "Bookmark" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:204 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:204 msgid "Toggle full screen" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:205 msgid "Print" msgstr "Imprimir" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:206 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:206 msgid "Find previous" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:207 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:207 msgid "Find previous occurrence" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:208 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:208 msgid "Shift+F3" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/printing.py:114 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/printing.py:114 msgid "Print eBook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:238 +#: /home/kovid/work/trunk/src/calibre/gui2/widgets.py:238 msgid "Copy Image" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:239 +#: /home/kovid/work/trunk/src/calibre/gui2/widgets.py:239 msgid "Paste Image" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:364 +#: /home/kovid/work/trunk/src/calibre/gui2/widgets.py:364 msgid "Change Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:365 +#: /home/kovid/work/trunk/src/calibre/gui2/widgets.py:365 msgid "Upper Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:366 +#: /home/kovid/work/trunk/src/calibre/gui2/widgets.py:366 msgid "Lower Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:367 +#: /home/kovid/work/trunk/src/calibre/gui2/widgets.py:367 msgid "Swap Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:368 +#: /home/kovid/work/trunk/src/calibre/gui2/widgets.py:368 msgid "Title Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:838 +#: /home/kovid/work/trunk/src/calibre/gui2/widgets.py:838 msgid "Drag to resize" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:870 +#: /home/kovid/work/trunk/src/calibre/gui2/widgets.py:870 msgid "Show" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:877 +#: /home/kovid/work/trunk/src/calibre/gui2/widgets.py:877 msgid "Hide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:367 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/__init__.py:370 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:371 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/__init__.py:374 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:373 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/__init__.py:376 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:450 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/__init__.py:453 msgid "Moving library..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:466 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:467 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/__init__.py:469 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/__init__.py:470 msgid "Failed to move library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:521 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/__init__.py:524 msgid "Invalid database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:522 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/__init__.py:525 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:533 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/__init__.py:536 msgid "Could not move library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:587 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/__init__.py:590 msgid "Select location for books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:662 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/__init__.py:665 msgid "welcome wizard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:48 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:49 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:46 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:50 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:42 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/device_ui.py:48 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/device_ui.py:49 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/finish_ui.py:42 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/kindle_ui.py:42 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/library_ui.py:50 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/stanza_ui.py:42 msgid "Welcome to calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:50 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:47 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:43 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:51 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:43 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/device_ui.py:50 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/finish_ui.py:43 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/kindle_ui.py:43 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/library_ui.py:51 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/stanza_ui.py:43 msgid "The one stop solution to all your e-book needs." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:51 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/device_ui.py:51 msgid "" "Choose your book reader. This will set the conversion options to produce " "books optimized for your device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:52 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/device_ui.py:52 msgid "&Manufacturers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:53 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/device_ui.py:53 msgid "&Devices" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:48 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/finish_ui.py:44 msgid "" "

    Congratulations!

    You have successfully setup calibre. Press the %s " "button to apply your settings." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:49 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/finish_ui.py:45 msgid "" "

    Demo videos

    Videos demonstrating the various features of calibre are " "available online." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:50 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/finish_ui.py:46 msgid "" "

    User Manual

    A User Manual is also available online." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:44 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/kindle_ui.py:44 msgid "" "

    calibre can automatically send books by email to your Kindle. To do that " "you have to setup email delivery below. The easiest way is to setup a free " @@ -9124,150 +9436,150 @@ msgid "" "Amazon account." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:45 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/kindle_ui.py:45 msgid "&Kindle email:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:52 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/library_ui.py:52 msgid "Choose your &language:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:53 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/library_ui.py:53 msgid "" "Choose a location for your books. When you add books to calibre, they will " "be copied here:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:54 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/library_ui.py:54 msgid "&Change" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:55 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/library_ui.py:55 msgid "" "If you have an existing calibre library, it will be copied to the new " "location. If a calibre library already exists at the new location, calibre " "will switch to using it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:32 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email.py:32 msgid "Using: %s:%s@%s:%s and %s encryption" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:37 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email.py:37 msgid "Sending..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:42 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email.py:42 msgid "Mail successfully sent" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:114 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email.py:114 msgid "Finish gmail setup" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:115 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email.py:115 msgid "" "Dont forget to enter your gmail username and password. You can sign up for a " "free gmail account at http://gmail.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:123 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:130 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email.py:123 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email.py:130 msgid "Bad configuration" msgstr "Configuración errada" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:124 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email.py:124 msgid "You must set the From email address" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:131 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email.py:131 msgid "You must set the username and password for the mail server." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:108 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email_ui.py:108 msgid "Send email &from:" msgstr "Enviar correos &desde:" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:109 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email_ui.py:109 msgid "" "

    This is what will be present in the From: field of emails sent by " "calibre.
    Set it to your email address" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:110 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email_ui.py:110 msgid "" "

    A mail server is useful if the service you are sending mail to only " "accepts email from well know mail services." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:111 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email_ui.py:111 msgid "Mail &Server" msgstr "&Servidor de Correo" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:112 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email_ui.py:112 msgid "calibre can optionally use a server to send mail" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:113 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email_ui.py:113 msgid "&Hostname:" msgstr "Nome do &host:" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:114 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email_ui.py:114 msgid "The hostname of your mail server. For e.g. smtp.gmail.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:115 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email_ui.py:115 msgid "&Port:" msgstr "&Porto:" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:116 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email_ui.py:116 msgid "" "The port your mail server listens for connections on. The default is 25" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:118 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email_ui.py:118 msgid "Your username on the mail server" msgstr "O seu nome de usuario/a no servidor de correo" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:120 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email_ui.py:120 msgid "Your password on the mail server" msgstr "O seu contrasinal no servidor de correo" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:121 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email_ui.py:121 msgid "&Show" msgstr "&Amosar" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:122 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email_ui.py:122 msgid "&Encryption:" msgstr "&Cifrado:" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:123 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email_ui.py:123 msgid "" "Use TLS encryption when connecting to the mail server. This is the most " "common." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:124 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email_ui.py:124 msgid "&TLS" msgstr "&TLS" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:125 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email_ui.py:125 msgid "Use SSL encryption when connecting to the mail server." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:126 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email_ui.py:126 msgid "&SSL" msgstr "&SSL" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:127 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email_ui.py:127 msgid "Use Gmail" msgstr "Usar Gmail" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:128 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email_ui.py:128 msgid "&Test email" msgstr "&Probar o correo" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:44 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/stanza_ui.py:44 msgid "" "

    If you use the Stanza e-" "book app on your iPhone/iTouch, you can access your calibre book collection " @@ -9275,56 +9587,56 @@ msgid "" "server." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:45 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/stanza_ui.py:45 msgid "Turn on the &content server" msgstr "Prender o servidor de &contidos" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:230 +#: /home/kovid/work/trunk/src/calibre/library/caches.py:230 msgid "today" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:233 +#: /home/kovid/work/trunk/src/calibre/library/caches.py:233 msgid "yesterday" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:236 +#: /home/kovid/work/trunk/src/calibre/library/caches.py:236 msgid "thismonth" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:239 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:240 +#: /home/kovid/work/trunk/src/calibre/library/caches.py:239 +#: /home/kovid/work/trunk/src/calibre/library/caches.py:240 msgid "daysago" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:398 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:408 +#: /home/kovid/work/trunk/src/calibre/library/caches.py:398 +#: /home/kovid/work/trunk/src/calibre/library/caches.py:408 msgid "no" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:398 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:408 +#: /home/kovid/work/trunk/src/calibre/library/caches.py:398 +#: /home/kovid/work/trunk/src/calibre/library/caches.py:408 msgid "unchecked" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:401 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:411 +#: /home/kovid/work/trunk/src/calibre/library/caches.py:401 +#: /home/kovid/work/trunk/src/calibre/library/caches.py:411 msgid "checked" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:401 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:411 +#: /home/kovid/work/trunk/src/calibre/library/caches.py:401 +#: /home/kovid/work/trunk/src/calibre/library/caches.py:411 msgid "yes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:405 +#: /home/kovid/work/trunk/src/calibre/library/caches.py:405 msgid "blank" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:405 +#: /home/kovid/work/trunk/src/calibre/library/caches.py:405 msgid "empty" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:48 +#: /home/kovid/work/trunk/src/calibre/library/catalog.py:48 msgid "" "The fields to output when cataloging books in the database. Should be a " "comma-separated list of fields.\n" @@ -9333,7 +9645,7 @@ msgid "" "Applies to: CSV, XML output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:58 +#: /home/kovid/work/trunk/src/calibre/library/catalog.py:58 msgid "" "Output field to sort on.\n" "Available fields: author_sort, id, rating, size, timestamp, title.\n" @@ -9341,7 +9653,7 @@ msgid "" "Applies to: CSV, XML output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:206 +#: /home/kovid/work/trunk/src/calibre/library/catalog.py:206 msgid "" "The fields to output when cataloging books in the database. Should be a " "comma-separated list of fields.\n" @@ -9350,7 +9662,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:216 +#: /home/kovid/work/trunk/src/calibre/library/catalog.py:216 msgid "" "Output field to sort on.\n" "Available fields: author_sort, id, rating, size, timestamp, title.\n" @@ -9358,7 +9670,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:225 +#: /home/kovid/work/trunk/src/calibre/library/catalog.py:225 msgid "" "Create a citation for BibTeX entries.\n" "Boolean value: True, False\n" @@ -9366,7 +9678,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:234 +#: /home/kovid/work/trunk/src/calibre/library/catalog.py:234 msgid "" "The template for citation creation from database fields.\n" " Should be a template with {} enclosed fields.\n" @@ -9375,7 +9687,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:244 +#: /home/kovid/work/trunk/src/calibre/library/catalog.py:244 msgid "" "BibTeX file encoding output.\n" "Available types: utf8, cp1252, ascii.\n" @@ -9383,7 +9695,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:253 +#: /home/kovid/work/trunk/src/calibre/library/catalog.py:253 msgid "" "BibTeX file encoding flag.\n" "Available types: strict, replace, ignore, backslashreplace.\n" @@ -9391,7 +9703,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:262 +#: /home/kovid/work/trunk/src/calibre/library/catalog.py:262 msgid "" "Entry type for BibTeX catalog.\n" "Available types: book, misc, mixed.\n" @@ -9399,14 +9711,14 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:530 +#: /home/kovid/work/trunk/src/calibre/library/catalog.py:530 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:537 +#: /home/kovid/work/trunk/src/calibre/library/catalog.py:537 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 " @@ -9415,14 +9727,14 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:547 +#: /home/kovid/work/trunk/src/calibre/library/catalog.py:547 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:553 +#: /home/kovid/work/trunk/src/calibre/library/catalog.py:553 msgid "" "Comma-separated list of tag words indicating book should be excluded from " "output. Case-insensitive.\n" @@ -9431,28 +9743,28 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:561 +#: /home/kovid/work/trunk/src/calibre/library/catalog.py:561 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:568 +#: /home/kovid/work/trunk/src/calibre/library/catalog.py:568 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:575 +#: /home/kovid/work/trunk/src/calibre/library/catalog.py:575 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:582 +#: /home/kovid/work/trunk/src/calibre/library/catalog.py:582 msgid "" "Sort titles with leading numbers as text, e.g.,\n" "'2001: A Space Odyssey' sorts as \n" @@ -9461,7 +9773,7 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:589 +#: /home/kovid/work/trunk/src/calibre/library/catalog.py:589 msgid "" "Specifies the output profile. In some cases, an output profile is required " "to optimize the catalog for the device. For example, 'kindle' or " @@ -9471,27 +9783,27 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:596 +#: /home/kovid/work/trunk/src/calibre/library/catalog.py:596 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:41 +#: /home/kovid/work/trunk/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:120 +#: /home/kovid/work/trunk/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:128 +#: /home/kovid/work/trunk/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" @@ -9500,55 +9812,55 @@ msgid "" "fields. Only has effect in the text output format." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:135 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:135 msgid "" "The field by which to sort the results.\n" "Available fields: %s\n" "Default: %%default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:137 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:137 msgid "Sort results in ascending order" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:139 +#: /home/kovid/work/trunk/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:141 +#: /home/kovid/work/trunk/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:142 +#: /home/kovid/work/trunk/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:143 +#: /home/kovid/work/trunk/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:165 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:165 msgid "Invalid fields. Available fields:" msgstr "Campos non válidos. Campos dispoñíbeis:" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:172 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:172 msgid "Invalid sort field. Available fields:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:244 +#: /home/kovid/work/trunk/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:267 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:267 msgid "" "%prog add [options] file1 file2 file3 ...\n" "\n" @@ -9557,43 +9869,43 @@ msgid "" "the directory related options below.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:276 +#: /home/kovid/work/trunk/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:278 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:278 msgid "Process directories recursively" msgstr "Procesar os directorios recursivamente" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:280 +#: /home/kovid/work/trunk/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:282 +#: /home/kovid/work/trunk/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:284 +#: /home/kovid/work/trunk/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:286 +#: /home/kovid/work/trunk/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:288 +#: /home/kovid/work/trunk/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:313 +#: /home/kovid/work/trunk/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:329 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:329 msgid "" "%prog remove ids\n" "\n" @@ -9602,11 +9914,11 @@ msgid "" "command). For example, 23,34,57-85\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:344 +#: /home/kovid/work/trunk/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:363 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:363 msgid "" "%prog add_format [options] id ebook_file\n" "\n" @@ -9615,15 +9927,15 @@ msgid "" "already exists, it is replaced.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:378 +#: /home/kovid/work/trunk/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:383 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:383 msgid "ebook file must have an extension" msgstr "O ficheiro de libro electrónico debe ter unha extensión" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:391 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:391 msgid "" "\n" "%prog remove_format [options] id fmt\n" @@ -9633,11 +9945,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:408 +#: /home/kovid/work/trunk/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:426 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:426 msgid "" "\n" "%prog show_metadata [options] id\n" @@ -9647,15 +9959,15 @@ msgid "" "id is an id number from the list command.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:434 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:434 msgid "Print metadata in OPF form (XML)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:443 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:443 msgid "You must specify an id" msgstr "Debe especificar un id" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:456 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:456 msgid "" "\n" "%prog set_metadata [options] id /path/to/metadata.opf\n" @@ -9668,11 +9980,11 @@ msgid "" "show_metadata command.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:472 +#: /home/kovid/work/trunk/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:492 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:492 msgid "" "%prog export [options] ids\n" "\n" @@ -9683,27 +9995,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:500 +#: /home/kovid/work/trunk/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:502 +#: /home/kovid/work/trunk/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:504 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:504 msgid "Export all books into a single directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:511 +#: /home/kovid/work/trunk/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:534 +#: /home/kovid/work/trunk/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:547 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:547 msgid "" "%prog add_custom_column [options] label name datatype\n" "\n" @@ -9714,23 +10026,23 @@ msgid "" "datatype is one of: {0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:556 +#: /home/kovid/work/trunk/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:560 +#: /home/kovid/work/trunk/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:573 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:573 msgid "You must specify label, name and datatype" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:631 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:631 msgid "" "\n" " %prog catalog /path/to/destination.(csv|epub|mobi|xml ...) [options]\n" @@ -9741,30 +10053,30 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:645 +#: /home/kovid/work/trunk/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:649 +#: /home/kovid/work/trunk/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:655 -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:505 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:655 +#: /home/kovid/work/trunk/src/calibre/web/fetch/simple.py:505 msgid "Show detailed output information. Useful for debugging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:668 +#: /home/kovid/work/trunk/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:710 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:710 msgid "" "\n" " %prog set_custom [options] column id value\n" @@ -9776,17 +10088,17 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:721 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:721 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:732 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:732 msgid "Error: You must specify a field name, id and value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:751 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:751 msgid "" "\n" " %prog custom_columns [options]\n" @@ -9795,19 +10107,19 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:758 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:758 msgid "Show details for each column." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:770 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:770 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:772 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:772 msgid "y" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:778 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:778 msgid "" "\n" " %prog remove_custom_column [options] label\n" @@ -9817,15 +10129,15 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:786 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:786 msgid "Do not ask for confirmation" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:796 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:796 msgid "Error: You must specify a column label" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:809 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:809 msgid "" "%%prog command [options] [arguments]\n" "\n" @@ -9837,123 +10149,123 @@ msgid "" "For help on an individual command: %%prog command --help\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:71 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:71 msgid "%sAverage rating is %3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:566 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:569 msgid "Main" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1796 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:1799 msgid "

    Migrating old database to ebook library in %s

    " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1825 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:1828 msgid "Copying %s" msgstr "A copiar %s" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1842 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:1845 msgid "Compacting database" msgstr "A compactar a base de datos" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1935 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:1938 msgid "Checking SQL integrity..." msgstr "A comprobar a integridade SQL..." -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1976 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:1979 msgid "Checking for missing files." msgstr "A comprobar os ficheiros perdidos." -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1998 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:2001 msgid "Checked id" msgstr "id comprobada" -#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:122 +#: /home/kovid/work/trunk/src/calibre/library/field_metadata.py:122 msgid "Ratings" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:24 +#: /home/kovid/work/trunk/src/calibre/library/save_to_disk.py:24 msgid "The title" msgstr "O título" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:25 +#: /home/kovid/work/trunk/src/calibre/library/save_to_disk.py:25 msgid "The authors" msgstr "Os/as autores/as" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:26 +#: /home/kovid/work/trunk/src/calibre/library/save_to_disk.py:26 msgid "" "The author sort string. To use only the first letter of the name use " "{author_sort[0]}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:28 +#: /home/kovid/work/trunk/src/calibre/library/save_to_disk.py:28 msgid "The tags" msgstr "As etiquetas" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:29 +#: /home/kovid/work/trunk/src/calibre/library/save_to_disk.py:29 msgid "The series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:30 +#: /home/kovid/work/trunk/src/calibre/library/save_to_disk.py:30 msgid "" "The series number. To get leading zeros use {series_index:0>3s} or " "{series_index:>3s} for leading spaces" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:33 +#: /home/kovid/work/trunk/src/calibre/library/save_to_disk.py:33 msgid "The rating" msgstr "A nota" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:34 +#: /home/kovid/work/trunk/src/calibre/library/save_to_disk.py:34 msgid "The ISBN" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:35 +#: /home/kovid/work/trunk/src/calibre/library/save_to_disk.py:35 msgid "The publisher" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:36 +#: /home/kovid/work/trunk/src/calibre/library/save_to_disk.py:36 msgid "The date" msgstr "A data" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:37 +#: /home/kovid/work/trunk/src/calibre/library/save_to_disk.py:37 msgid "The published date" msgstr "Data de publicación" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:38 +#: /home/kovid/work/trunk/src/calibre/library/save_to_disk.py:38 msgid "The calibre internal id" msgstr "O id interno de Calibre" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:48 +#: /home/kovid/work/trunk/src/calibre/library/save_to_disk.py:48 msgid "Options to control saving to disk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:54 +#: /home/kovid/work/trunk/src/calibre/library/save_to_disk.py:54 msgid "" "Normally, calibre will update the metadata in the saved files from what is " "in the calibre library. Makes saving to disk slower." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:57 +#: /home/kovid/work/trunk/src/calibre/library/save_to_disk.py:57 msgid "" "Normally, calibre will write the metadata into a separate OPF file along " "with the actual e-book files." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:60 +#: /home/kovid/work/trunk/src/calibre/library/save_to_disk.py:60 msgid "" "Normally, calibre will save the cover in a separate file along with the " "actual e-book file(s)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:63 +#: /home/kovid/work/trunk/src/calibre/library/save_to_disk.py:63 msgid "" "Comma separated list of formats to save for each book. By default all " "available books are saved." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:66 +#: /home/kovid/work/trunk/src/calibre/library/save_to_disk.py:66 msgid "" "The template to control the filename and directory structure of the saved " "files. Default is \"%s\" which will save books into a per-author " @@ -9961,7 +10273,7 @@ msgid "" "are: {%s}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:71 +#: /home/kovid/work/trunk/src/calibre/library/save_to_disk.py:71 msgid "" "The template to control the filename and directory structure of files sent " "to the device. Default is \"%s\" which will save books into a per-author " @@ -9969,7 +10281,7 @@ msgid "" "are: {%s}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:78 +#: /home/kovid/work/trunk/src/calibre/library/save_to_disk.py:78 msgid "" "Normally, calibre will convert all non English characters into English " "equivalents for the file names. WARNING: If you turn this off, you may " @@ -9977,510 +10289,510 @@ msgid "" "saving to supports unicode." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:84 +#: /home/kovid/work/trunk/src/calibre/library/save_to_disk.py:84 msgid "" "The format in which to display dates. %d - day, %b - month, %Y - year. " "Default is: %b, %Y" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:87 +#: /home/kovid/work/trunk/src/calibre/library/save_to_disk.py:87 msgid "Convert paths to lowercase." msgstr "Converter as traxectorias a minúsculas." -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:89 +#: /home/kovid/work/trunk/src/calibre/library/save_to_disk.py:89 msgid "Replace whitespace with underscores." msgstr "Substituír os espazos por suliñados." -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:258 +#: /home/kovid/work/trunk/src/calibre/library/save_to_disk.py:263 msgid "Requested formats not available" msgstr "Os formatos requiridos non están dispoñíbeis" -#: /home/kovid/work/calibre/src/calibre/library/server/__init__.py:21 +#: /home/kovid/work/trunk/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 +#: /home/kovid/work/trunk/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 +#: /home/kovid/work/trunk/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 +#: /home/kovid/work/trunk/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 +#: /home/kovid/work/trunk/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 +#: /home/kovid/work/trunk/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 +#: /home/kovid/work/trunk/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 +#: /home/kovid/work/trunk/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/__init__.py:43 +#: /home/kovid/work/trunk/src/calibre/library/server/__init__.py:43 msgid "" "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." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/base.py:94 +#: /home/kovid/work/trunk/src/calibre/library/server/base.py:94 msgid "Password to access your calibre library. Username is " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/main.py:28 +#: /home/kovid/work/trunk/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/main.py:30 +#: /home/kovid/work/trunk/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/main.py:32 +#: /home/kovid/work/trunk/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:127 +#: /home/kovid/work/trunk/src/calibre/library/server/opds.py:127 msgid "%d items" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:144 +#: /home/kovid/work/trunk/src/calibre/library/server/opds.py:144 msgid "RATING: %s
    " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:147 +#: /home/kovid/work/trunk/src/calibre/library/server/opds.py:147 msgid "TAGS: %s
    " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:151 +#: /home/kovid/work/trunk/src/calibre/library/server/opds.py:151 msgid "SERIES: %s [%s]
    " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:231 +#: /home/kovid/work/trunk/src/calibre/library/server/opds.py:231 msgid "Books in your library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:237 +#: /home/kovid/work/trunk/src/calibre/library/server/opds.py:237 msgid "By " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:238 +#: /home/kovid/work/trunk/src/calibre/library/server/opds.py:238 msgid "Books sorted by " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:542 +#: /home/kovid/work/trunk/src/calibre/library/server/opds.py:549 msgid "Newest" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:34 +#: /home/kovid/work/trunk/src/calibre/utils/config.py:34 msgid "%sUsage%s: %s\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:78 +#: /home/kovid/work/trunk/src/calibre/utils/config.py:78 msgid "Created by " msgstr "Creado por " -#: /home/kovid/work/calibre/src/calibre/utils/config.py:79 +#: /home/kovid/work/trunk/src/calibre/utils/config.py:79 msgid "" "Whenever you pass arguments to %prog that have spaces in them, enclose the " "arguments in quotation marks." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:663 +#: /home/kovid/work/trunk/src/calibre/utils/config.py:663 msgid "Path to the database in which books are stored" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:665 +#: /home/kovid/work/trunk/src/calibre/utils/config.py:665 msgid "Pattern to guess metadata from filenames" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:667 +#: /home/kovid/work/trunk/src/calibre/utils/config.py:667 msgid "Access key for isbndb.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:669 +#: /home/kovid/work/trunk/src/calibre/utils/config.py:669 msgid "Default timeout for network operations (seconds)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:671 +#: /home/kovid/work/trunk/src/calibre/utils/config.py:671 msgid "Path to directory in which your library of books is stored" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:673 +#: /home/kovid/work/trunk/src/calibre/utils/config.py:673 msgid "The language in which to display the user interface" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:675 +#: /home/kovid/work/trunk/src/calibre/utils/config.py:675 msgid "The default output format for ebook conversions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:679 +#: /home/kovid/work/trunk/src/calibre/utils/config.py:679 msgid "Ordered list of formats to prefer for input." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:681 +#: /home/kovid/work/trunk/src/calibre/utils/config.py:681 msgid "Read metadata from files" msgstr "Ler os metadatos dos ficheiros" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:683 +#: /home/kovid/work/trunk/src/calibre/utils/config.py:683 msgid "The priority of worker processes" msgstr "A prioridade dos procesos do traballador" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:685 +#: /home/kovid/work/trunk/src/calibre/utils/config.py:685 msgid "Swap author first and last names when reading metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:687 +#: /home/kovid/work/trunk/src/calibre/utils/config.py:687 msgid "Add new formats to existing book records" msgstr "Engadir formatos novos aos rexistros de libros existentes" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:692 +#: /home/kovid/work/trunk/src/calibre/utils/config.py:692 msgid "List of named saved searches" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:693 +#: /home/kovid/work/trunk/src/calibre/utils/config.py:693 msgid "User-created tag browser categories" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:695 +#: /home/kovid/work/trunk/src/calibre/utils/config.py:695 msgid "How and when calibre updates metadata on the device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:43 +#: /home/kovid/work/trunk/src/calibre/utils/ipc/job.py:43 msgid "Waiting..." msgstr "A esperar..." -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:51 +#: /home/kovid/work/trunk/src/calibre/utils/ipc/job.py:51 msgid "Stopped" msgstr "Detido" -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 +#: /home/kovid/work/trunk/src/calibre/utils/ipc/job.py:53 msgid "Finished" msgstr "Rematado" -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:75 +#: /home/kovid/work/trunk/src/calibre/utils/ipc/job.py:75 msgid "Working..." msgstr "A traballar..." -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:95 +#: /home/kovid/work/trunk/src/calibre/utils/localization.py:95 msgid "Brazilian Portuguese" msgstr "Portugués (brasileiro)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:96 +#: /home/kovid/work/trunk/src/calibre/utils/localization.py:96 msgid "English (UK)" msgstr "Inglés (Reino Unido)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:97 +#: /home/kovid/work/trunk/src/calibre/utils/localization.py:97 msgid "Simplified Chinese" msgstr "Chinés (simplificado)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:98 +#: /home/kovid/work/trunk/src/calibre/utils/localization.py:98 msgid "Chinese (HK)" msgstr "Chinés (Hong Kong)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:99 +#: /home/kovid/work/trunk/src/calibre/utils/localization.py:99 msgid "Traditional Chinese" msgstr "Chinés (tradicional)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:100 +#: /home/kovid/work/trunk/src/calibre/utils/localization.py:100 msgid "English" msgstr "Inglés" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:101 +#: /home/kovid/work/trunk/src/calibre/utils/localization.py:101 msgid "English (Australia)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:102 +#: /home/kovid/work/trunk/src/calibre/utils/localization.py:102 msgid "English (New Zealand)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:103 +#: /home/kovid/work/trunk/src/calibre/utils/localization.py:103 msgid "English (Canada)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:104 +#: /home/kovid/work/trunk/src/calibre/utils/localization.py:104 msgid "English (India)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:105 +#: /home/kovid/work/trunk/src/calibre/utils/localization.py:105 msgid "English (Thailand)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:106 +#: /home/kovid/work/trunk/src/calibre/utils/localization.py:106 msgid "English (Cyprus)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:107 +#: /home/kovid/work/trunk/src/calibre/utils/localization.py:107 msgid "English (Pakistan)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:108 +#: /home/kovid/work/trunk/src/calibre/utils/localization.py:108 msgid "English (Israel)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:109 +#: /home/kovid/work/trunk/src/calibre/utils/localization.py:109 msgid "English (Singapore)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:110 +#: /home/kovid/work/trunk/src/calibre/utils/localization.py:110 msgid "English (Yemen)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:111 +#: /home/kovid/work/trunk/src/calibre/utils/localization.py:111 msgid "English (Ireland)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:112 +#: /home/kovid/work/trunk/src/calibre/utils/localization.py:112 msgid "English (China)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:113 +#: /home/kovid/work/trunk/src/calibre/utils/localization.py:113 msgid "Spanish (Paraguay)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:114 +#: /home/kovid/work/trunk/src/calibre/utils/localization.py:114 msgid "German (AT)" msgstr "Alemán (Austria)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:115 +#: /home/kovid/work/trunk/src/calibre/utils/localization.py:115 msgid "Dutch (NL)" msgstr "Flamenco (Holanda)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:116 +#: /home/kovid/work/trunk/src/calibre/utils/localization.py:116 msgid "Dutch (BE)" msgstr "Flamenco (Bélxica)" -#: /home/kovid/work/calibre/src/calibre/utils/sftp.py:53 +#: /home/kovid/work/trunk/src/calibre/utils/sftp.py:53 msgid "URL must have the scheme sftp" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/sftp.py:57 +#: /home/kovid/work/trunk/src/calibre/utils/sftp.py:57 msgid "host must be of the form user@hostname" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/sftp.py:68 +#: /home/kovid/work/trunk/src/calibre/utils/sftp.py:68 msgid "Failed to negotiate SSH session: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/sftp.py:71 +#: /home/kovid/work/trunk/src/calibre/utils/sftp.py:71 msgid "Failed to authenticate with server: %s" msgstr "Erro ao se autenticar no servidor: %s" -#: /home/kovid/work/calibre/src/calibre/utils/smtp.py:234 +#: /home/kovid/work/trunk/src/calibre/utils/smtp.py:234 msgid "Control email delivery" msgstr "Controlar o envío de correo" -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:118 +#: /home/kovid/work/trunk/src/calibre/web/feeds/__init__.py:118 msgid "Unknown section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:140 +#: /home/kovid/work/trunk/src/calibre/web/feeds/__init__.py:140 msgid "Unknown feed" msgstr "Fluxo descoñecido" -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:158 -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:183 +#: /home/kovid/work/trunk/src/calibre/web/feeds/__init__.py:158 +#: /home/kovid/work/trunk/src/calibre/web/feeds/__init__.py:183 msgid "Untitled article" msgstr "Artigo sen título" -#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:21 +#: /home/kovid/work/trunk/src/calibre/web/feeds/input.py:21 msgid "Download periodical content from the internet" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:36 +#: /home/kovid/work/trunk/src/calibre/web/feeds/input.py:36 msgid "" "Useful for recipe development. Forces max_articles_per_feed to 2 and " "downloads at most 2 feeds." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:39 +#: /home/kovid/work/trunk/src/calibre/web/feeds/input.py:39 msgid "Username for sites that require a login to access content." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:42 +#: /home/kovid/work/trunk/src/calibre/web/feeds/input.py:42 msgid "Password for sites that require a login to access content." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:46 +#: /home/kovid/work/trunk/src/calibre/web/feeds/input.py:46 msgid "" "Do not download latest version of builtin recipes from the calibre server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:47 +#: /home/kovid/work/trunk/src/calibre/web/feeds/news.py:46 msgid "Unknown News Source" msgstr "Fonte de Novas Descoñecida" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:610 +#: /home/kovid/work/trunk/src/calibre/web/feeds/news.py:609 msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:709 +#: /home/kovid/work/trunk/src/calibre/web/feeds/news.py:708 msgid "Download finished" msgstr "Rematou a descarga" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:711 +#: /home/kovid/work/trunk/src/calibre/web/feeds/news.py:710 msgid "Failed to download the following articles:" msgstr "Produciuse un fallo na descarga dos seguintes artigos:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:717 +#: /home/kovid/work/trunk/src/calibre/web/feeds/news.py:716 msgid "Failed to download parts of the following articles:" msgstr "Produciuse un fallo na descarga de partes do seguintes artigos:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:719 +#: /home/kovid/work/trunk/src/calibre/web/feeds/news.py:718 msgid " from " msgstr " desde " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:721 +#: /home/kovid/work/trunk/src/calibre/web/feeds/news.py:720 msgid "\tFailed links:" msgstr "\tLigazóns erradas:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:810 +#: /home/kovid/work/trunk/src/calibre/web/feeds/news.py:809 msgid "Could not fetch article. Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:831 +#: /home/kovid/work/trunk/src/calibre/web/feeds/news.py:830 msgid "Fetching feeds..." msgstr "A obter os fluxos..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:836 +#: /home/kovid/work/trunk/src/calibre/web/feeds/news.py:835 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:842 +#: /home/kovid/work/trunk/src/calibre/web/feeds/news.py:841 msgid "Trying to download cover..." msgstr "Tratando de descargar a capa..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:844 +#: /home/kovid/work/trunk/src/calibre/web/feeds/news.py:843 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:925 +#: /home/kovid/work/trunk/src/calibre/web/feeds/news.py:924 msgid "Starting download [%d thread(s)]..." msgstr "A comezar a descarga [%d fío(s)]..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:941 +#: /home/kovid/work/trunk/src/calibre/web/feeds/news.py:940 msgid "Feeds downloaded to %s" msgstr "Fluxos descargados en %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:951 +#: /home/kovid/work/trunk/src/calibre/web/feeds/news.py:950 msgid "Could not download cover: %s" msgstr "Non se puido descargar a capa: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:963 +#: /home/kovid/work/trunk/src/calibre/web/feeds/news.py:962 msgid "Downloading cover from %s" msgstr "A descargar a capa desde %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1003 +#: /home/kovid/work/trunk/src/calibre/web/feeds/news.py:1003 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1193 +#: /home/kovid/work/trunk/src/calibre/web/feeds/news.py:1172 msgid "Untitled Article" msgstr "Artigo sen Título" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1264 +#: /home/kovid/work/trunk/src/calibre/web/feeds/news.py:1243 msgid "Article downloaded: %s" msgstr "Artigo descargado: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1275 +#: /home/kovid/work/trunk/src/calibre/web/feeds/news.py:1254 msgid "Article download failed: %s" msgstr "Erro ao descargar o artigo: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1292 +#: /home/kovid/work/trunk/src/calibre/web/feeds/news.py:1271 msgid "Fetching feed" msgstr "A obter o fluxo" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1439 +#: /home/kovid/work/trunk/src/calibre/web/feeds/news.py:1418 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:1455 +#: /home/kovid/work/trunk/src/calibre/web/feeds/news.py:1434 msgid "" "You do not have permission to download this issue. Either your subscription " "has expired or you have exceeded the maximum allowed downloads for today." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:47 +#: /home/kovid/work/trunk/src/calibre/web/feeds/recipes/collection.py:47 msgid "You" msgstr "Vostede" -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:73 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:82 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:193 +#: /home/kovid/work/trunk/src/calibre/web/feeds/recipes/model.py:73 +#: /home/kovid/work/trunk/src/calibre/web/feeds/recipes/model.py:82 +#: /home/kovid/work/trunk/src/calibre/web/feeds/recipes/model.py:193 msgid "Scheduled" msgstr "Programado" -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:84 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:194 +#: /home/kovid/work/trunk/src/calibre/web/feeds/recipes/model.py:84 +#: /home/kovid/work/trunk/src/calibre/web/feeds/recipes/model.py:194 msgid "Custom" msgstr "Personalizado" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:482 +#: /home/kovid/work/trunk/src/calibre/web/fetch/simple.py:482 msgid "" "%prog URL\n" "\n" "Where URL is for example http://google.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:485 +#: /home/kovid/work/trunk/src/calibre/web/fetch/simple.py:485 msgid "Base directory into which URL is saved. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:488 +#: /home/kovid/work/trunk/src/calibre/web/fetch/simple.py:488 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:491 +#: /home/kovid/work/trunk/src/calibre/web/fetch/simple.py:491 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:494 +#: /home/kovid/work/trunk/src/calibre/web/fetch/simple.py:494 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:496 +#: /home/kovid/work/trunk/src/calibre/web/fetch/simple.py:496 msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:498 +#: /home/kovid/work/trunk/src/calibre/web/fetch/simple.py:498 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:500 +#: /home/kovid/work/trunk/src/calibre/web/fetch/simple.py:500 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:502 +#: /home/kovid/work/trunk/src/calibre/web/fetch/simple.py:502 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 " @@ -10489,7 +10801,7 @@ msgid "" "applied first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:504 +#: /home/kovid/work/trunk/src/calibre/web/fetch/simple.py:504 msgid "Do not download CSS stylesheets." msgstr "Non descargar follas de estilo CSS" @@ -10580,3 +10892,6 @@ msgstr "Non descargar follas de estilo CSS" #~ msgid " " #~ msgstr " " + +#~ msgid "Communicate with the Promedia eBook reader" +#~ msgstr "Conectar co lector Promedia eBook" diff --git a/src/calibre/translations/he.po b/src/calibre/translations/he.po index a086a32c8b..f12f6e1ca2 100644 --- a/src/calibre/translations/he.po +++ b/src/calibre/translations/he.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2010-07-31 01:57+0000\n" -"PO-Revision-Date: 2010-07-30 21:37+0000\n" +"POT-Creation-Date: 2010-08-07 01:39+0000\n" +"PO-Revision-Date: 2010-08-07 01:24+0000\n" "Last-Translator: Kovid Goyal \n" "Language-Team: Hebrew \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-31 03:37+0000\n" +"X-Launchpad-Export-Date: 2010-08-08 03:41+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -32,7 +32,7 @@ msgstr "×œ× ×¢×•×©×” דבר" #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 #: /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/comic/input.py:402 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:70 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:72 #: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:335 @@ -40,16 +40,16 @@ msgstr "×œ× ×¢×•×©×” דבר" #: /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:235 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:278 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:281 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:397 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:236 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:279 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:282 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:398 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:20 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:21 #: /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/fetch.py:333 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:332 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:36 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 @@ -100,12 +100,12 @@ msgstr "×œ× ×¢×•×©×” דבר" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 #: /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:240 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:242 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:234 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:236 #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:287 #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:294 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:812 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:815 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:826 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:829 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:172 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:179 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:22 @@ -119,14 +119,14 @@ msgstr "×œ× ×¢×•×©×” דבר" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:492 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:512 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:173 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:362 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:382 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1060 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:87 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:96 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:185 #: /home/kovid/work/calibre/src/calibre/library/cli.py:213 #: /home/kovid/work/calibre/src/calibre/library/database.py:913 @@ -137,7 +137,7 @@ msgstr "×œ× ×¢×•×©×” דבר" #: /home/kovid/work/calibre/src/calibre/library/database2.py:1646 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1648 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1770 -#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:268 +#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:199 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:134 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:137 #: /home/kovid/work/calibre/src/calibre/library/server/xml.py:68 @@ -277,7 +277,7 @@ msgstr "" "מקור המסמך." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:57 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:412 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:414 msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "פרופיל ×–×” מיועד עבור SONY PRS line ×ž×“×’×ž×™× 500/505/600/700 ועוד." @@ -287,62 +287,62 @@ 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:447 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:449 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:477 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:479 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:488 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:490 msgid "This profile is intended for the Mobipocket books." msgstr "פרופיל ×–×” מיועד עבור Mobipocket books." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:110 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:501 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:503 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:513 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:515 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:521 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:523 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:534 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:536 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:545 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:547 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:580 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:584 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:593 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:597 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:607 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:611 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:621 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:625 msgid "This profile is intended for the B&N Nook." msgstr "פרופיל ×–×” מיועד עבור B&N Nook." @@ -359,24 +359,24 @@ msgstr "" "פרופיל ×–×” מנסה לת ברירות מחדל סבירות ×•×”×•× ×™×¢×™×œ במידה ו×תה רוצה להפיק מסמך " "שנועד ×œ×”×§×¨× ×‘×ž×—×©×‘ ×ו על מגוון מכשירי×." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:257 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:259 msgid "" "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "מיועד ל-iPad ×•×ž×›×©×™×¨×™× ×“×•×ž×™× ×¢× ×¨×–×•×œ×•×¦×™×” של 768x1024" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:425 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:427 msgid "This profile is intended for the Kobo Reader." msgstr "פרופיל ×–×” מיועד ל-Kobo Reader" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:438 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:440 msgid "This profile is intended for the SONY PRS-300." msgstr "פרופיל ×–×” מיועד למכשיר SONY PRS-300." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:456 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:458 msgid "This profile is intended for the 5-inch JetBook." msgstr "פרופיל ×–×” מיועד למכשיר 5-inch JetBook." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:465 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:467 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." @@ -384,39 +384,39 @@ msgstr "" "פרופיל ×–×” מיועד למכשיר מקו SONY PRS. ×”- 500/505/700 וכדומה בתצוגה " "×ופקית.שימושי במיוחד עבור קומיקס." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:563 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:566 msgid "This profile is intended for the Amazon Kindle DX." msgstr "פרופיל ×–×” מיועד למכשיר Amazon Kindle DX." -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:32 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:33 msgid "Installed plugins" msgstr "×ª×•×¡×¤×™× ×ž×•×ª×§× ×™×" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:33 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:34 msgid "Mapping for filetype plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:34 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:35 msgid "Local plugin customization" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:35 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:36 msgid "Disabled plugins" msgstr "×ª×•×¡×¤×™× ×ž×‘×•×˜×œ×™×" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:36 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:37 msgid "Enabled plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:84 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:85 msgid "No valid plugin found in " msgstr "×œ× × ×ž×¦×ו ×ª×•×¡×¤×™× ×ª×§×™× ×™× ×‘- " -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:468 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:478 msgid "Initialization of plugin %s failed with traceback:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:501 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:511 msgid "" " %prog options\n" "\n" @@ -424,29 +424,29 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:507 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:517 msgid "Add a plugin by specifying the path to the zip file containing it." msgstr "הוסף רכיב על ידי הגדרת הנתיב לקובץ ZIP המכיל ×ותו." -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:509 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:519 msgid "Remove a custom plugin by name. Has no effect on builtin plugins" msgstr "הסר רכיב מות×× ×œ×¤×™ ש×. ×œ×œ× ×”×©×¤×¢×” על ×”×¨×›×™×‘×™× ×”×ž×•×ª×§× ×™× ×‘×”×ª×§× ×” ר×שונית." -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:511 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:521 msgid "" "Customize plugin. Specify name of plugin and customization string separated " "by a comma." msgstr "הת×מת רכיב. ציין ×©× ×¨×›×™×‘ ומחרוזת הת×מה ×ž×•×¤×¨×“×™× ×¢×œ ידי פסיק." -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:513 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:523 msgid "List all installed plugins" msgstr "הצג ×ת כל ×”×¨×›×™×‘×™× ×”×ž×•×ª×§× ×™×." -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:515 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:525 msgid "Enable the named plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:517 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:527 msgid "Disable the named plugin" msgstr "" @@ -454,13 +454,13 @@ msgstr "" msgid "Communicate with Android phones." msgstr "מתקשר ×¢× ×˜×œ×¤×•×Ÿ Android." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:47 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:48 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:89 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:90 msgid "Communicate with S60 phones." msgstr "" @@ -669,10 +669,10 @@ msgstr "" msgid "Communicate with the Kobo Reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:51 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:54 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:57 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:159 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:53 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:56 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:59 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:161 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:68 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:71 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:74 @@ -682,32 +682,33 @@ msgstr "" msgid "Getting list of books on device..." msgstr "×§×•×¨× ×ת רשימת ×”×¡×¤×¨×™× ×ž×”×”×ª×§×Ÿ..." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:219 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:263 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:221 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:265 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:253 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:271 msgid "Removing books from device..." msgstr "מסיר ×¡×¤×¨×™× ×ž×”×ž×›×©×™×¨" -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:267 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:274 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:269 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:276 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:278 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:283 msgid "Removing books from device metadata listing..." msgstr "מסיר ×¡×¤×¨×™× ×ž×¨×©×™×ž×ª ×”×¡×¤×¨×™× ×‘×ž×›×©×™×¨" -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:279 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:313 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:281 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:315 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:217 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:247 msgid "Adding books to device metadata listing..." msgstr "מוסיף ×¡×¤×¨×™× ×œ×¨×©×™×ž×ª ×”×¡×¤×¨×™× ×‘×ž×›×©×™×¨" -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:364 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:366 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:441 msgid "Not Implemented" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:365 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:367 msgid "" "\".kobo\" files do not exist on the device as books instead, they are rows " "in the sqlite database. Currently they cannot be exported or viewed." @@ -721,18 +722,14 @@ msgstr "" msgid "Communicate with the Booq Avant" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:57 +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:58 msgid "Communicate with the Sweex MM300" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:77 +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:78 msgid "Communicate with the Pandigital Novel" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:103 -msgid "Communicate with the Promedia eBook reader" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:17 msgid "Communicate with the Nokia 770 internet tablet." msgstr "" @@ -971,22 +968,22 @@ msgstr "" msgid "Set font delta" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:201 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:178 msgid "Rendered %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:204 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:181 msgid "Failed %s" msgstr "%s נכשל" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:261 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:235 msgid "" "Failed to process comic: \n" "\n" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:279 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:253 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 " @@ -995,54 +992,54 @@ msgstr "" "מספר גווני ×פור להמרת התמונה. ברירת מחדל: %default. ×¢×¨×›×™× ×§×˜× ×™× ×ž-256 ×¢×œ×•×œ×™× " "×œ×’×¨×•× ×œ×ž×¨×™×—×” בקומיקס בפורמט EPUB." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:257 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/calibre/src/calibre/ebooks/comic/input.py:260 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/calibre/src/calibre/ebooks/comic/input.py:262 msgid "Disable sharpening." msgstr "בטל חידוד התמונה." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:290 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:264 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/calibre/src/calibre/ebooks/comic/input.py:267 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/calibre/src/calibre/ebooks/comic/input.py:269 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/calibre/src/calibre/ebooks/comic/input.py:272 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/calibre/src/calibre/ebooks/comic/input.py:276 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/calibre/src/calibre/ebooks/comic/input.py:279 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/calibre/src/calibre/ebooks/comic/input.py:283 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 " @@ -1050,16 +1047,16 @@ msgid "" msgstr "" "הפורמט ×ליו יומרו התמונות ב-eBook. ניתן לבדוק ×¤×•×¨×ž×˜×™× ×©×•× ×™× ×œ×ª×•×¦××” ×ופטימלית." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:313 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:287 msgid "Apply no processing to the image" msgstr "×ל תפעיל עיבוד על התמונה." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:315 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:289 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/calibre/src/calibre/ebooks/comic/input.py:426 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:437 msgid "Page" msgstr "עמוד" @@ -1841,7 +1838,7 @@ msgstr "" msgid "Comic" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:396 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:397 #: /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 @@ -1850,11 +1847,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:887 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:543 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:550 msgid "Title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:397 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:398 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:364 @@ -1862,18 +1859,18 @@ msgstr "" msgid "Author(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:398 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:399 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:61 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:72 msgid "Publisher" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:399 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:400 #: /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:400 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:401 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:35 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:211 @@ -1885,7 +1882,7 @@ msgstr "" msgid "Comments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:408 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:409 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:27 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:73 @@ -1895,7 +1892,7 @@ msgstr "" msgid "Tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:410 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:411 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:26 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:74 @@ -1905,22 +1902,22 @@ msgstr "" msgid "Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:411 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:412 msgid "Language" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:413 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:414 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 msgid "Timestamp" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:415 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:416 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:70 msgid "Published" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:417 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:418 msgid "Rights" msgstr "" @@ -2027,10 +2024,40 @@ msgstr "" msgid "No cover found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:15 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:27 msgid "Cover download" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:79 +msgid "Download covers from openlibrary.org" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:107 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:136 +msgid "ISBN: %s not found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:117 +msgid "Download covers from librarything.com" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:128 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:68 +msgid "LibraryThing.com timed out. Try again later." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:135 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:75 +msgid "" +"Could not fetch cover as server is experiencing high load. Please try again " +"later." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:139 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:79 +msgid "LibraryThing.com server error. Try again later." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/douban.py:42 msgid "Downloads metadata from Douban.com" msgstr "" @@ -2107,24 +2134,10 @@ msgstr "" msgid "The publisher of the book to search for." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:68 -msgid "LibraryThing.com timed out. Try again later." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:75 -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:76 msgid " not found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:79 -msgid "LibraryThing.com server error. Try again later." -msgstr "" - #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:86 msgid "" "\n" @@ -2534,7 +2547,7 @@ msgid "" "Specify the character encoding of the output document. The default is cp1252." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:200 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:194 msgid "" "This RTF file has a feature calibre does not support. Convert it to HTML " "first and then try it.\n" @@ -2707,7 +2720,7 @@ msgid "Disable UI animations" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:476 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:479 msgid "Copied" msgstr "" @@ -2719,7 +2732,7 @@ msgstr "" msgid "Copy to Clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:396 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:397 msgid "Choose Files" msgstr "" @@ -2734,13 +2747,13 @@ msgid "User annotations generated from main library only" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:609 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:668 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:705 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:726 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:911 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:976 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1094 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:682 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:719 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:740 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:925 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:998 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1116 msgid "No books selected" msgstr "" @@ -2786,7 +2799,7 @@ msgid "Uploading books to device." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions.py:350 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:164 msgid "Books" msgstr "" @@ -2852,115 +2865,120 @@ msgid "Failed to read metadata from the following" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions.py:429 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:434 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:448 msgid "Add to library" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions.py:429 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:459 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1238 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1263 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:473 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1260 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1285 msgid "No book selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:434 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:442 +msgid "" +"The following books are virtual and cannot be added to the calibre library:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:448 msgid "No book files found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:456 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:470 msgid "Cannot delete" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:483 msgid "Choose formats to be deleted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:487 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:501 msgid "Choose formats not to be deleted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:521 msgid "Cannot delete books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:522 msgid "No device is connected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:518 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:532 msgid "Main memory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:519 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:533 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:430 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:439 msgid "Storage Card A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:520 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:534 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:432 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:441 msgid "Storage Card B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:525 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:539 msgid "No books to delete" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:540 msgid "None of the selected books are on the device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:543 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:598 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:612 msgid "Deleting books from device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:564 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:578 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/actions.py:583 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:597 msgid "" "The selected books will be permanently deleted from your device. Are " "you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:622 msgid "Cannot download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:624 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:638 msgid "social metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:626 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:640 msgid "covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:626 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:640 msgid "metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:628 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:642 msgid "Downloading %s for %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:652 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:666 msgid "Failed to download some metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:653 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:667 msgid "Failed to download metadata for the following:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:656 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:670 msgid "Failed to download metadata:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:657 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:671 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:602 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:550 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:962 @@ -2968,21 +2986,21 @@ msgstr "" msgid "Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:667 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:704 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:681 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:718 msgid "Cannot edit metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:725 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:728 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:739 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:742 msgid "Cannot merge books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:729 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:743 msgid "At least two books must be selected for merging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:733 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:747 msgid "" "All book formats and metadata from the selected books will be added to the " "first selected book.

    The second and subsequently selected " @@ -2990,7 +3008,7 @@ msgid "" "proceed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:744 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:758 msgid "" "All book formats and metadata from the selected books will be merged into " "the first selected book.

    After merger the second and " @@ -3000,99 +3018,111 @@ msgid "" "from your computer.

    Are you sure you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:756 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:770 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/actions.py:910 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:924 msgid "Cannot save to disk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:913 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:927 msgid "Choose destination directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:946 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:933 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:566 +msgid "Not allowed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:934 +msgid "" +"You are tying to save files into the calibre library. This can cause " +"corruption of your library. Save to disk is meant to export files from your " +"calibre library elsewhere." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:968 msgid "Error while saving" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:947 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:969 msgid "There was an error while saving." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:954 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:955 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:976 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:977 msgid "Could not save some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:956 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:978 msgid "Click the show details button to see which ones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:977 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:999 msgid "No books selected to generate catalog for" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:994 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1016 msgid "Generating %s catalog..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:999 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1021 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:264 msgid "No books found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1000 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1022 msgid "" "No books to catalog\n" "Check exclude tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1010 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1032 msgid "Catalog generated." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1013 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1035 msgid "Export Catalog Directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1014 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1036 msgid "Select destination for %s.%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1030 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1052 msgid "Fetching news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1044 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1066 msgid " fetched." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1093 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1115 msgid "Cannot convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1122 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1144 msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1238 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1299 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1260 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1321 msgid "Cannot view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1244 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1266 #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77 msgid "Choose the format to view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1252 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1274 msgid "Multiple Books Selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1253 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1275 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 " @@ -3100,11 +3130,11 @@ msgid "" "continue?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1262 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1284 msgid "Cannot open folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1300 +#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1322 msgid "%s has no available formats." msgstr "" @@ -3200,7 +3230,7 @@ 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/finish_ui.py:41 #: /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 @@ -3262,14 +3292,14 @@ 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:571 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:614 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:365 -#: /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:390 -#: /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:394 +#: /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:384 +#: /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:397 #: /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:404 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:406 #: /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 @@ -3945,38 +3975,38 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:164 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:111 msgid "Choose cover for " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:171 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:118 msgid "Cannot read" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:119 msgid "You do not have permission to read the file: " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:127 msgid "Error reading file" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:181 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:128 msgid "

    There was an error reading from file:
    " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:188 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:136 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:396 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:401 msgid "Book Cover" msgstr "" @@ -3985,28 +4015,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:397 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:402 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:398 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:403 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:357 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362 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:358 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:363 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:158 -#: /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:366 msgid "&Author(s): " msgstr "" @@ -4022,18 +4052,18 @@ 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:167 -#: /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:375 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:371 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376 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:169 -#: /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:377 msgid "" "Tags categorize the book. This is particularly useful while searching. " "

    They can be any words or phrases, separated by commas." @@ -4041,7 +4071,7 @@ 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:174 -#: /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:380 msgid "&Series:" msgstr "" @@ -4049,13 +4079,13 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:182 #: /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:376 -#: /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:381 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:382 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:382 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:387 msgid "Book " msgstr "" @@ -4873,6 +4903,14 @@ msgstr "" msgid "The folder %s is not empty. Please choose an empty folder" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:80 +msgid "No location" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:80 +msgid "No location selected" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:66 msgid "Choose your calibre library" msgstr "" @@ -5652,7 +5690,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:69 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:889 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:542 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:549 msgid "Date" msgstr "" @@ -5981,21 +6019,21 @@ msgid "Author s&ort: " msgstr "" #: /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:363 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:368 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:162 -#: /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:371 msgid "&Rating:" 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:164 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:368 +#: /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 msgid "Rating of this book. 0-5 stars" msgstr "" @@ -6004,7 +6042,7 @@ msgid "No change" msgstr "" #: /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:369 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374 msgid " stars" msgstr "" @@ -6014,8 +6052,8 @@ msgstr "" #: /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:373 -#: /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:378 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:379 msgid "Open Tag Editor" msgstr "" @@ -6055,214 +6093,237 @@ 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:403 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:410 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:404 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:411 msgid "&Custom metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:94 msgid "Last modified: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:135 msgid "Not a valid picture" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:150 +msgid "Specify title and author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:151 +msgid "You must specify a title and author before generating a cover" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:163 msgid "Choose formats for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:194 msgid "No permission" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:195 msgid "You do not have permission to read the following files:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:203 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:223 msgid "No format selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:234 msgid "Could not read metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:235 msgid "Could not read metadata from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:264 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:270 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:289 msgid "Could not read cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:265 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:284 msgid "Could not read cover from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:271 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:290 msgid "The cover in the %s format is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:327 msgid "Abort the editing of all remaining books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:445 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:465 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:470 msgid "This ISBN number is valid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:453 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:473 msgid "This ISBN number is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:552 msgid "Cannot use tag editor" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:553 msgid "The tags editor cannot be used if you have modified the tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:573 msgid "Downloading cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:565 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:570 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:576 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:585 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:590 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:596 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:601 msgid "Cannot fetch cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:566 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:577 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:586 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:602 msgid "Could not fetch cover.
    " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:567 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:587 msgid "The download timed out." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:571 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:591 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:583 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:603 +msgid "" +"For the error message from each cover source, click Show details below." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:610 msgid "Bad cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:584 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:611 msgid "The cover is not a valid picture" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:617 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:644 msgid "There were errors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:618 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:645 msgid "There were errors downloading social metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:647 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:674 msgid "Cannot fetch metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:648 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:675 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:723 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:750 msgid "Permission denied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:724 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:751 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:355 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360 msgid "Edit Meta Information" msgstr "" -#: /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:361 msgid "Meta information" msgstr "" -#: /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 msgid "Swap the author and title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367 msgid "Author S&ort: " msgstr "" -#: /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:369 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:378 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:383 msgid "Remove unused series (Series that have no books)" msgstr "" -#: /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:385 msgid "IS&BN:" msgstr "" -#: /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:386 msgid "Publishe&d:" 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:389 msgid "dd MMM yyyy" 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:390 msgid "&Date:" 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:391 msgid "&Comments" 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:392 msgid "&Fetch metadata from server" 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:393 msgid "Available Formats" msgstr "" -#: /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:394 msgid "Add a new format for this book to the database" msgstr "" -#: /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:396 msgid "Remove the selected formats for this book from the database." msgstr "" -#: /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 msgid "Set the cover for the book from the selected format" msgstr "" -#: /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:400 msgid "Update metadata from the metadata in the selected format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:400 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:405 msgid "Reset cover to default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:407 msgid "Download &cover" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:408 +msgid "Generate a default cover based on the title and author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:409 +msgid "&Generate cover" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:56 msgid "Password needed" msgstr "" @@ -7519,10 +7580,6 @@ msgstr "" msgid "Restore default layout" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:566 -msgid "Not allowed" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:567 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " @@ -7620,7 +7677,7 @@ msgid "Do not check for updates" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:595 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:598 msgid "Calibre Library" msgstr "" @@ -7738,11 +7795,11 @@ msgstr "" msgid "ERROR: Unhandled exception" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:93 msgid "Book has neither title nor ISBN" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:119 msgid "No matches found for this book" msgstr "" @@ -8567,60 +8624,60 @@ msgstr "" msgid "Hide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:367 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:370 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:371 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:374 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:373 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:376 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:450 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:453 msgid "Moving library..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:466 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:467 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:470 msgid "Failed to move library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:524 msgid "Invalid database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:525 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:533 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:536 msgid "Could not move library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:587 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:590 msgid "Select location for books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:662 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:665 msgid "welcome wizard" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:49 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:50 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:42 @@ -8628,7 +8685,7 @@ msgid "Welcome to calibre" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:50 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:43 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:43 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:51 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:43 @@ -8649,19 +8706,19 @@ msgstr "" msgid "&Devices" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:44 msgid "" "

    Congratulations!

    You have successfully setup calibre. Press the %s " "button to apply your settings." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:45 msgid "" "

    Demo videos

    Videos demonstrating the various features of calibre are " "available
    online." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:46 msgid "" "

    User Manual

    A User Manual is also available online." @@ -9543,7 +9600,7 @@ msgstr "" msgid "Replace whitespace with underscores." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:258 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:263 msgid "Requested formats not available" msgstr "" @@ -9635,7 +9692,7 @@ msgstr "" msgid "Books sorted by " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:542 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:549 msgid "Newest" msgstr "" @@ -9873,67 +9930,67 @@ msgid "" "Do not download latest version of builtin recipes from the calibre server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:47 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:46 msgid "Unknown News Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:610 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:609 msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:709 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:708 msgid "Download finished" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:711 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:710 msgid "Failed to download the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:717 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:716 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:719 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:718 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:721 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:720 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:810 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:809 msgid "Could not fetch article. Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:831 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:830 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:836 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:835 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:842 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:841 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:844 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:843 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:925 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:924 msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:941 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:940 msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:951 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:950 msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:963 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:962 msgid "Downloading cover from %s" msgstr "" @@ -9941,29 +9998,29 @@ msgstr "" msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1193 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1172 msgid "Untitled Article" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1264 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1243 msgid "Article downloaded: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1275 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1254 msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1292 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1271 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1439 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1418 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:1455 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1434 msgid "" "You do not have permission to download this issue. Either your subscription " "has expired or you have exceeded the maximum allowed downloads for today." diff --git a/src/calibre/translations/it.po b/src/calibre/translations/it.po index 3c6a5f7b1f..8be9227515 100644 --- a/src/calibre/translations/it.po +++ b/src/calibre/translations/it.po @@ -8,172 +8,172 @@ msgid "" msgstr "" "Project-Id-Version: calibre_calibre-it\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-07-31 01:57+0000\n" -"PO-Revision-Date: 2010-08-05 13:32+0000\n" +"POT-Creation-Date: 2010-08-11 15:31+0000\n" +"PO-Revision-Date: 2010-08-12 16:19+0000\n" "Last-Translator: MeltingShell \n" "Language-Team: italiano\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-08-06 03:44+0000\n" +"X-Launchpad-Export-Date: 2010-08-13 05:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" "X-Poedit-Bookmarks: -1,-1,-1,-1,-1,1105,-1,1312,-1,-1\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 "Non fa assolutamente niente" -#: /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:75 -#: /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/sony_cache.py:506 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:405 -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 -#: /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:70 -#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:72 -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:335 -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:338 -#: /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:235 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:278 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:281 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:397 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:20 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:21 -#: /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/fetch.py:333 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:36 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:123 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:125 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:945 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1057 -#: /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:39 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:65 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:78 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:119 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:153 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:611 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:817 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:819 -#: /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:911 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:916 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:982 -#: /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:97 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:98 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:240 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:242 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:287 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:294 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:812 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:815 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:179 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:22 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:110 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:137 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:862 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:871 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1156 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1159 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:492 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:173 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:362 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:382 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1060 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:87 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:185 -#: /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:356 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:368 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:976 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1045 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1646 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1648 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1770 -#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:268 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:134 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:137 -#: /home/kovid/work/calibre/src/calibre/library/server/xml.py:68 -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:117 -#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:46 -#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:64 -#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:78 -#: /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:75 +#: /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/sony_cache.py:506 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:405 +#: /home/kovid/work/trunk/src/calibre/ebooks/chm/input.py:97 +#: /home/kovid/work/trunk/src/calibre/ebooks/chm/input.py:100 +#: /home/kovid/work/trunk/src/calibre/ebooks/chm/metadata.py:56 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:402 +#: /home/kovid/work/trunk/src/calibre/ebooks/fb2/input.py:70 +#: /home/kovid/work/trunk/src/calibre/ebooks/fb2/input.py:72 +#: /home/kovid/work/trunk/src/calibre/ebooks/html/input.py:335 +#: /home/kovid/work/trunk/src/calibre/ebooks/html/input.py:338 +#: /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:236 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:279 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:282 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:398 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/book/base.py:20 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/book/base.py:21 +#: /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/fetch.py:332 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/meta.py:36 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/meta.py:64 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/meta.py:66 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/meta.py:123 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/meta.py:125 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/opf2.py:945 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/opf2.py:1057 +#: /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:39 +#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/reader.py:65 +#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/reader.py:78 +#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/reader.py:119 +#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/reader.py:153 +#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/reader.py:611 +#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/reader.py:817 +#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/reader.py:819 +#: /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:911 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:916 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:982 +#: /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:234 +#: /home/kovid/work/trunk/src/calibre/ebooks/rtf/input.py:236 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:287 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:294 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:826 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:829 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:172 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:179 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/__init__.py:22 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:110 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:135 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:137 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:868 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:877 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1162 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1165 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comicconf.py:47 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:120 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:155 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:512 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:173 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:362 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:382 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:882 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:1060 +#: /home/kovid/work/trunk/src/calibre/gui2/metadata.py:91 +#: /home/kovid/work/trunk/src/calibre/gui2/metadata.py:96 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:185 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:213 +#: /home/kovid/work/trunk/src/calibre/library/database.py:913 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:358 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:370 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:979 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:1048 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:1649 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:1651 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:1773 +#: /home/kovid/work/trunk/src/calibre/library/server/mobile.py:199 +#: /home/kovid/work/trunk/src/calibre/library/server/opds.py:134 +#: /home/kovid/work/trunk/src/calibre/library/server/opds.py:137 +#: /home/kovid/work/trunk/src/calibre/library/server/xml.py:68 +#: /home/kovid/work/trunk/src/calibre/utils/localization.py:117 +#: /home/kovid/work/trunk/src/calibre/utils/podofo/__init__.py:46 +#: /home/kovid/work/trunk/src/calibre/utils/podofo/__init__.py:64 +#: /home/kovid/work/trunk/src/calibre/utils/podofo/__init__.py:78 +#: /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 "Sconosciuto" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:64 +#: /home/kovid/work/trunk/src/calibre/customize/__init__.py:64 msgid "Base" msgstr "Base" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:172 +#: /home/kovid/work/trunk/src/calibre/customize/__init__.py:172 msgid "File type" msgstr "Tipo di file" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:206 +#: /home/kovid/work/trunk/src/calibre/customize/__init__.py:206 msgid "Metadata reader" msgstr "Lettore metadati" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:235 +#: /home/kovid/work/trunk/src/calibre/customize/__init__.py:235 msgid "Metadata writer" msgstr "Scrittore metadati" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:263 +#: /home/kovid/work/trunk/src/calibre/customize/__init__.py:263 msgid "Catalog generator" msgstr "Generatore del catalogo" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:16 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:16 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 " @@ -183,7 +183,7 @@ msgstr "" "tutti i file collegati. Questo plug-in viene eseguito ogni volta che si " "aggiunge un file HTML alla biblioteca." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:52 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:52 msgid "" "Character encoding for the input HTML files. Common choices include: cp1252, " "latin1, iso-8859-1 and utf-8." @@ -191,7 +191,7 @@ msgstr "" "Codifica dei caratteri nei file HTML in ingresso. Scelte comuni includono: " "cp1252, latin1, iso-8859-1 e utf-8." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:59 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:59 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 " @@ -201,57 +201,57 @@ msgstr "" "nella cartella pmlname_img o in images. Questo plug-in eseguito ogni volta " "che si aggiunge un documento PML alla biblioteca." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:93 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:93 msgid "Extract cover from comic files" msgstr "Estrae le copertine dai file dei fumetti" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:120 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:131 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:143 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:153 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:163 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:174 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:184 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:194 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:204 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:214 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:224 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:235 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:246 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:258 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:279 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:290 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:300 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:310 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:120 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:131 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:143 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:153 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:163 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:174 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:184 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:194 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:204 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:214 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:224 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:235 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:246 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:258 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:279 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:290 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:300 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:310 msgid "Read metadata from %s files" msgstr "Leggi i metadati dai file %s" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:269 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:269 msgid "Read metadata from ebooks in RAR archives" msgstr "Leggi i metadati dei libri negli archivi RAR" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:321 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:321 msgid "Read metadata from ebooks in ZIP archives" msgstr "Leggi i metadati dei libri negli archivi ZIP" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:334 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:344 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:354 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:376 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:387 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:397 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:334 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:344 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:354 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:376 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:387 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:397 msgid "Set metadata in %s files" msgstr "Imposta i metadati nei file %s" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:365 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:365 msgid "Set metadata from %s files" msgstr "imposta metadati da %s file" -#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:102 +#: /home/kovid/work/trunk/src/calibre/customize/conversion.py:102 msgid "Conversion Input" msgstr "Input di conversione" -#: /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 " @@ -263,11 +263,11 @@ msgstr "" "stesso. Particolarmente utile per documenti in cui la codifica non è " "esplicitamente indicata o che hanno dichiarazioni di codifica errate." -#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:237 +#: /home/kovid/work/trunk/src/calibre/customize/conversion.py:237 msgid "Conversion Output" msgstr "Output di conversione" -#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:251 +#: /home/kovid/work/trunk/src/calibre/customize/conversion.py:251 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." @@ -275,11 +275,11 @@ msgstr "" "Se specificato, il plugin tenta di creare un output il più possibile " "leggibile da occhi umani. Potrebbe non avere effetto per alcuni plugin." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:45 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:45 msgid "Input profile" msgstr "Profilo di input" -#: /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." @@ -287,83 +287,83 @@ msgstr "" "Questo profilo imposta valori predefiniti adeguati ed è utile quando non si " "sa nulla sul documento di origine." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:57 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:412 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:57 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:414 msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "" "Questo profilo è adatto per la linea SONY PRS. Ad esempio: 500/505/600/700 " "ecc." -#: /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 "Questo profilo è adatto per il Sony PRS 300." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:78 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:447 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:78 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:449 msgid "This profile is intended for the SONY PRS-900." msgstr "Questo profilo è adatto per il Sony PRS-900." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:86 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:477 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:86 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:479 msgid "This profile is intended for the Microsoft Reader." msgstr "Questo profilo è adatto per il Microsoft Reader." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:97 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:488 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:97 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:490 msgid "This profile is intended for the Mobipocket books." msgstr "Questo profilo è adatto per i libri in formato Mobipocket." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:110 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:501 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:110 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:503 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "Questo profilo è adatto per l'Hanlin V3 ed i suoi cloni." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:122 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:513 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:122 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:515 msgid "This profile is intended for the Hanlin V5 and its clones." msgstr "Questo profilo è adatto per Hanlin V5 e i suoi cloni." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:132 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:521 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:132 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:523 msgid "This profile is intended for the Cybook G3." msgstr "Questo profilo è adatto per il Cybook G3." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:145 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:534 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:145 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:536 msgid "This profile is intended for the Cybook Opus." msgstr "Questo profilo è adatto per il Cybook Opus." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:157 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:545 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:157 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:547 msgid "This profile is intended for the Amazon Kindle." msgstr "Questo profilo è adatto per il Kindle di Amazon." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:169 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:580 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:169 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:584 msgid "This profile is intended for the Irex Illiad." msgstr "Questo profilo è adatto per l'Irex di Illiad." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:181 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:593 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:181 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:597 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "Questo profilo è adatto per l'IRex Digital Reader 1000." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:194 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:607 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:194 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:611 msgid "This profile is intended for the IRex Digital Reader 800." msgstr "Questo profilo adatto per l'IRex Digital Reader 800." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:206 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:621 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:206 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:625 msgid "This profile is intended for the B&N Nook." msgstr "Questo profilo è adatto per il Nook B&N." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:228 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:228 msgid "Output profile" msgstr "Profilo di output" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:232 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:232 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 " @@ -373,26 +373,26 @@ msgstr "" "produrre un documento da poter leggere tramite computer o su vari " "dispositivi." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:257 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:259 msgid "" "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "" "Questo profilo è adatto per l'iPad e dispositivi simili con una risoluzione " "di 768x1024" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:425 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:427 msgid "This profile is intended for the Kobo Reader." msgstr "Questo profilo è adatto per il Kobo Reader." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:438 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:440 msgid "This profile is intended for the SONY PRS-300." msgstr "Questo profilo è adatto per il Sony PRS-300." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:456 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:458 msgid "This profile is intended for the 5-inch JetBook." msgstr "Questo profilo è adatto per il JetBook da 5 pollici." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:465 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:467 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." @@ -400,39 +400,39 @@ msgstr "" "Questo profilo è adatto per la linea SONY PRS. Il 500/505/700 ecc, in " "modalità panoramica. Utile principalmente per i fumetti." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:563 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:566 msgid "This profile is intended for the Amazon Kindle DX." msgstr "Questo profilo è adatto per il Kindle DX di Amazon." -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:32 +#: /home/kovid/work/trunk/src/calibre/customize/ui.py:33 msgid "Installed plugins" msgstr "Plugin installati" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:33 +#: /home/kovid/work/trunk/src/calibre/customize/ui.py:34 msgid "Mapping for filetype plugins" msgstr "Individuare plugins per i tipi di file" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:34 +#: /home/kovid/work/trunk/src/calibre/customize/ui.py:35 msgid "Local plugin customization" msgstr "Personalizzazione dei plug-in locali" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:35 +#: /home/kovid/work/trunk/src/calibre/customize/ui.py:36 msgid "Disabled plugins" msgstr "Plugin disabilitati" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:36 +#: /home/kovid/work/trunk/src/calibre/customize/ui.py:37 msgid "Enabled plugins" msgstr "Plugin attivati" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:84 +#: /home/kovid/work/trunk/src/calibre/customize/ui.py:85 msgid "No valid plugin found in " msgstr "Nessun plug-in valido trovato in " -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:468 +#: /home/kovid/work/trunk/src/calibre/customize/ui.py:478 msgid "Initialization of plugin %s failed with traceback:" msgstr "Inizializzazione del plugin %s fallita con messaggio:" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:501 +#: /home/kovid/work/trunk/src/calibre/customize/ui.py:511 msgid "" " %prog options\n" "\n" @@ -444,17 +444,17 @@ msgstr "" " Personalizza Calibre con l'utilizzo di plugin esterni\n" " " -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:507 +#: /home/kovid/work/trunk/src/calibre/customize/ui.py:517 msgid "Add a plugin by specifying the path to the zip file containing it." msgstr "" "Aggiunge un plug-in specificando il percorso al file zip che lo contiene." -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:509 +#: /home/kovid/work/trunk/src/calibre/customize/ui.py:519 msgid "Remove a custom plugin by name. Has no effect on builtin plugins" msgstr "" "Rimuovi un plugin personalizzato dal nome. Non ha effetto sui plugin inclusi" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:511 +#: /home/kovid/work/trunk/src/calibre/customize/ui.py:521 msgid "" "Customize plugin. Specify name of plugin and customization string separated " "by a comma." @@ -462,23 +462,23 @@ msgstr "" "Personalizza un plug-in. Specificare il nome del plug-in e la stringa di " "personalizzazione separati da una virgola." -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:513 +#: /home/kovid/work/trunk/src/calibre/customize/ui.py:523 msgid "List all installed plugins" msgstr "Elenca tutti i plug-in installati" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:515 +#: /home/kovid/work/trunk/src/calibre/customize/ui.py:525 msgid "Enable the named plugin" msgstr "Abilita il plug-in" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:517 +#: /home/kovid/work/trunk/src/calibre/customize/ui.py:527 msgid "Disable the named plugin" msgstr "Disabilita il plug-in" -#: /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 "Comunica con i telefoni Android." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:47 +#: /home/kovid/work/trunk/src/calibre/devices/android/driver.py:48 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" @@ -486,47 +486,47 @@ msgstr "" "Lista delle cartelle separate da virgole dei libri da inviare al " "dispositivo. Verrà usata la prima cartella esistente." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:89 +#: /home/kovid/work/trunk/src/calibre/devices/android/driver.py:90 msgid "Communicate with S60 phones." msgstr "Comunica con i telefoni S60." -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:87 +#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:87 msgid "Communicate with iTunes/iBooks." msgstr "Comunica con iTunes/iBooks." -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:93 +#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:93 msgid "Apple device detected, launching iTunes, please wait ..." msgstr "Dispositivo Apple individuato, avvio di iTunes, attendere prego ..." -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:246 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:249 +#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:246 +#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:249 msgid "Updating device metadata listing..." msgstr "Aggiornamento dei metadati sul dispositivo..." -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:323 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:362 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:921 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:957 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2802 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2841 +#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:323 +#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:362 +#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:921 +#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:957 +#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:2822 +#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:2861 msgid "%d of %d" msgstr "%d di %d" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:369 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:962 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2847 +#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:369 +#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:962 +#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:2867 msgid "finished" msgstr "completato" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:544 +#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:544 msgid "Use Series as Category in iTunes/iBooks" msgstr "Usa le serie come categoria per iTunes/iBooks" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:546 +#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:546 msgid "Cache covers from iTunes/iBooks" msgstr "Conserva le copertine da iTunes/iBooks" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:558 +#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:558 msgid "" "Some books not found in iTunes database.\n" "Delete using the iBooks app.\n" @@ -536,7 +536,7 @@ msgstr "" "Eliminarli utilizzando l'app iBooks.\n" "Fare clic su 'Mostra dettagli' per una lista." -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:886 +#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:886 msgid "" "Some cover art could not be converted.\n" "Click 'Show Details' for a list." @@ -544,91 +544,91 @@ msgstr "" "Alcune copertine non possono essere convertite.\n" "Fare clic su 'Mostra dettagli' per una lista." -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2471 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:817 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:823 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:851 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:244 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:187 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:200 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1530 -#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:132 +#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:2491 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:817 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:823 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:851 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:244 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:187 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:200 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:1533 +#: /home/kovid/work/trunk/src/calibre/library/field_metadata.py:132 msgid "News" msgstr "Notizie" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2709 +#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:2729 msgid "Communicate with iTunes." msgstr "Comunica con iTunes." -#: /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 "Comunica con il lettore Binatone Readme." -#: /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 "Comunica con lo smart phone 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 "Kovid Goyal" -#: /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 "Comunica con il lettore Cybook Gen 3 / Opus." -#: /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 "Comunica con il lettore EB600." -#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:193 +#: /home/kovid/work/trunk/src/calibre/devices/eb600/driver.py:193 msgid "Communicate with the Astak Mentor EB600" msgstr "Comunica con l'Astak Mentor EB600." -#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:216 +#: /home/kovid/work/trunk/src/calibre/devices/eb600/driver.py:216 msgid "Communicate with the PocketBook 301 reader." msgstr "Comunica con il lettore PocketBook 301." -#: /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 "Comunica con l'Entourage Edge." -#: /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 "Comunica con il lettore ESlick." -#: /home/kovid/work/calibre/src/calibre/devices/eslick/driver.py:49 +#: /home/kovid/work/trunk/src/calibre/devices/eslick/driver.py:49 msgid "Communicate with the Sigmatek eBook reader." msgstr "Comunica con il lettore Sigmatek eBook." -#: /home/kovid/work/calibre/src/calibre/devices/folder_device/driver.py:16 -#: /home/kovid/work/calibre/src/calibre/devices/folder_device/driver.py:30 +#: /home/kovid/work/trunk/src/calibre/devices/folder_device/driver.py:16 +#: /home/kovid/work/trunk/src/calibre/devices/folder_device/driver.py:30 msgid "Use an arbitrary folder as a device." msgstr "Usa una cartella a scelta come dispositivo." -#: /home/kovid/work/calibre/src/calibre/devices/folder_device/driver.py:26 -#: /home/kovid/work/calibre/src/calibre/devices/interface.py:14 +#: /home/kovid/work/trunk/src/calibre/devices/folder_device/driver.py:26 +#: /home/kovid/work/trunk/src/calibre/devices/interface.py:14 msgid "Device Interface" msgstr "Interfaccia del Dispositivo" -#: /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 "Comunica con i lettori Hanlin V3." -#: /home/kovid/work/calibre/src/calibre/devices/hanlin/driver.py:87 +#: /home/kovid/work/trunk/src/calibre/devices/hanlin/driver.py:87 msgid "Communicate with Hanlin V5 eBook readers." msgstr "Comunica con i lettori Hanlin V5." -#: /home/kovid/work/calibre/src/calibre/devices/hanlin/driver.py:106 +#: /home/kovid/work/trunk/src/calibre/devices/hanlin/driver.py:106 msgid "Communicate with the BOOX eBook reader." msgstr "Comunica con il lettore BOOX." -#: /home/kovid/work/calibre/src/calibre/devices/hanlin/driver.py:123 +#: /home/kovid/work/trunk/src/calibre/devices/hanlin/driver.py:123 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used." @@ -636,111 +636,112 @@ msgstr "" "Lista di cartelle separate da virgole per inviare gli e-books al " "dispositivo. Verrà utilizzata la prima esistente." -#: /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 "Comunica con il lettore Hanvon N520." -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:40 +#: /home/kovid/work/trunk/src/calibre/devices/hanvon/driver.py:40 msgid "Communicate with The Book reader." msgstr "Comunica con il lettore The Book." -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:52 +#: /home/kovid/work/trunk/src/calibre/devices/hanvon/driver.py:52 msgid "Communicate with the SpringDesign Alex eBook reader." msgstr "Comunica con il lettore SpringDesign Alex." -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:68 +#: /home/kovid/work/trunk/src/calibre/devices/hanvon/driver.py:68 msgid "Communicate with the Azbooka" msgstr "Comunica con l'Azbooka." -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:81 +#: /home/kovid/work/trunk/src/calibre/devices/hanvon/driver.py:81 msgid "Communicate with the Elonex EB 511 eBook reader." msgstr "Comunica con il lettore Elonex EB 511." -#: /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 "Comunica con il lettore IRex Iliad." -#: /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:42 +#: /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:42 msgid "John Schember" msgstr "John Schember" -#: /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 "Comunica con il lettore IRex Digital Reader 1000." -#: /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 "Comunica con il lettore IRex Digital Reader 800." -#: /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 "Comunica con il lettore Iriver Story." -#: /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 "Comunica con il lettore JetBook." -#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:86 +#: /home/kovid/work/trunk/src/calibre/devices/jetbook/driver.py:86 msgid "Communicate with the MiBuk Wolder reader." msgstr "Comunica con il lettore MiBuk Wolder." -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:42 +#: /home/kovid/work/trunk/src/calibre/devices/kindle/driver.py:42 msgid "Communicate with the Kindle eBook reader." msgstr "Comunica con il lettore Kindle." -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:169 +#: /home/kovid/work/trunk/src/calibre/devices/kindle/driver.py:169 msgid "Communicate with the Kindle 2 eBook reader." msgstr "Comunica con il lettore Kindle 2." -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:210 +#: /home/kovid/work/trunk/src/calibre/devices/kindle/driver.py:210 msgid "Communicate with the Kindle DX eBook reader." msgstr "Comunica con il lettore Kindle DX." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:22 +#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:22 msgid "Communicate with the Kobo Reader" msgstr "Comunica con il Kobo Reader." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:51 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:54 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:57 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:159 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:68 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:71 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:74 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:136 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:143 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:166 +#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:53 +#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:56 +#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:59 +#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:161 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:68 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:71 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:74 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:136 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:143 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:166 msgid "Getting list of books on device..." msgstr "Recupero della lista dei libri sul dispositivo..." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:219 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:263 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:253 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:271 +#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:221 +#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:265 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:253 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:271 msgid "Removing books from device..." msgstr "Rimozione dei libri dal dispositivo..." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:267 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:274 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:278 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:283 +#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:269 +#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:276 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:278 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:283 msgid "Removing books from device metadata listing..." msgstr "Cancellazione libri dalla lista metadati del dispositivo..." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:279 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:313 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:217 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:247 +#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:281 +#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:315 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:217 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:247 msgid "Adding books to device metadata listing..." msgstr "Aggiunta dei libri alla lista metadati del dispositivo..." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:364 +#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:366 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:441 msgid "Not Implemented" msgstr "Non Implementato" -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:365 +#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:367 msgid "" "\".kobo\" files do not exist on the device as books instead, they are rows " "in the sqlite database. Currently they cannot be exported or viewed." @@ -749,59 +750,55 @@ msgstr "" "presenti nel database sqlite. Attualmente non possono essere esportati o " "visualizzati." -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:17 +#: /home/kovid/work/trunk/src/calibre/devices/misc.py:17 msgid "Communicate with the Palm Pre" msgstr "Comunica con il Palm Pre." -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:37 +#: /home/kovid/work/trunk/src/calibre/devices/misc.py:37 msgid "Communicate with the Booq Avant" msgstr "Comunica con il Booq Avant." -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:57 +#: /home/kovid/work/trunk/src/calibre/devices/misc.py:58 msgid "Communicate with the Sweex MM300" msgstr "Comunica con il Sweex MM300." -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:77 +#: /home/kovid/work/trunk/src/calibre/devices/misc.py:78 msgid "Communicate with the Pandigital Novel" msgstr "Comunica con il Pandigital Novel." -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:103 -msgid "Communicate with the Promedia eBook reader" -msgstr "Comunica con il lettore Promedia." - -#: /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 "Comunica con l'internet tablet Nokia 770." -#: /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 "Comunica con l'internet tablet Nokia 810." -#: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:74 +#: /home/kovid/work/trunk/src/calibre/devices/nokia/driver.py:74 msgid "Communicate with the Nokia E52" msgstr "Comunica con il Nokia E52." -#: /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 "Il lettore Nook" -#: /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 "Comunica con il lettore Nook." -#: /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 "Comunica con il lettore Nuut2." -#: /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 "Comunica con il lettore Sony PRS-500." -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:22 +#: /home/kovid/work/trunk/src/calibre/devices/prs505/driver.py:22 msgid "Communicate with all the Sony eBook readers." msgstr "Comunica con tutti i lettori Sony." -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:61 +#: /home/kovid/work/trunk/src/calibre/devices/prs505/driver.py:61 msgid "" "Comma separated list of metadata fields to turn into collections on the " "device. Possibilities include: " @@ -809,45 +806,45 @@ msgstr "" "Lista di metadati separati da virgole da convertire in collezioni sul " "dispositivo. Le possibilità sono: " -#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:144 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:68 +#: /home/kovid/work/trunk/src/calibre/devices/prs505/sony_cache.py:144 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/transforms/structure.py:68 msgid "Unnamed" msgstr "Senza nome" -#: /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 "Comunica con il lettore Samsung SNE." -#: /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 "Comunica con il lettore Teclast K3." -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:37 +#: /home/kovid/work/trunk/src/calibre/devices/teclast/driver.py:37 msgid "Communicate with the Newsmy reader." msgstr "Comunica con il lettore Newsmy." -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:49 +#: /home/kovid/work/trunk/src/calibre/devices/teclast/driver.py:49 msgid "Communicate with the iPapyrus reader." msgstr "Comunica con il lettore iPapyrus." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:255 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:255 msgid "Unable to detect the %s disk drive. Try rebooting." msgstr "Impossibile individuare il disco %s. Provare a riavviare." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:435 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:435 msgid "Unable to detect the %s mount point. Try rebooting." msgstr "" "Impossibile individuare il %s mount Point. Provo ad effettuare un reboot" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:500 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:500 msgid "Unable to detect the %s disk drive." msgstr "Impossibile rilevare il disco %s." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:593 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:593 msgid "Could not find mount helper: %s." msgstr "Non è stato possibile trovare l'assistente di installazione: %s" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:605 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:605 msgid "" "Unable to detect the %s disk drive. Your kernel is probably exporting a " "deprecated version of SYSFS." @@ -855,149 +852,149 @@ msgstr "" "mpossibile rilevare il disco %s. Il kernel in uso sta probabilmente " "esportando una versione obsoleta di SYSFS." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:613 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:613 msgid "Unable to mount main memory (Error code: %d)" msgstr "Impossibile montare la memoria principale (Codice errore: %d)" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:750 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:752 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:750 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:752 msgid "The reader has no storage card in this slot." msgstr "Il reader non contiene una scheda di memoria in questo slot." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:754 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:754 msgid "Selected slot: %s is not supported." msgstr "Lo slot selezionato: %s non è supportato." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:783 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:783 msgid "There is insufficient free space in main memory" msgstr "Non c'è spazio sufficiente nella memoria principale" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:785 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:787 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:785 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:787 msgid "There is insufficient free space on the storage card" msgstr "Non c'è spazio sufficiente nella scheda di memoria" -#: /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 "Configura dispositivo" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:37 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/deviceconfig.py:37 msgid "settings for device drivers" msgstr "Impostazioni per il driver del dispositivo" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:39 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/deviceconfig.py:39 msgid "Ordered list of formats the device will accept" msgstr "Lista ordinata dei formati che il dispositivo può accettare." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:41 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/deviceconfig.py:41 msgid "Place files in sub directories if the device supports them" msgstr "Metti i file in sotto cartelle se il dispositivo le supporta" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:43 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:81 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/deviceconfig.py:43 +#: /home/kovid/work/trunk/src/calibre/gui2/device_drivers/configwidget_ui.py:81 msgid "Read metadata from files on device" msgstr "Legge i metadati dai file sul dispositivo" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:45 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/deviceconfig.py:45 msgid "Use author sort instead of author" msgstr "Usa classificazione autore invece dell'autore" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:47 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/deviceconfig.py:47 msgid "Template to control how books are saved" msgstr "Modello per controllare come i libri vengono salvati" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:50 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:84 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/deviceconfig.py:50 +#: /home/kovid/work/trunk/src/calibre/gui2/device_drivers/configwidget_ui.py:84 msgid "Extra customization" msgstr "Ulteriori personalizzazioni" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:41 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:41 msgid "Communicate with an eBook reader." msgstr "Comunicare con un lettore di eBook." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:57 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:57 msgid "Get device information..." msgstr "Recupero informazioni del dispositivo..." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:194 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:196 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:194 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:196 msgid "Transferring books to device..." msgstr "Trasferimento dei libri nel dispositivo..." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:314 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:314 msgid "Sending metadata to device..." msgstr "Invio dei metadati al dispositivo..." -#: /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 "%prog [opzioni] mybook.chm" -#: /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 "Cartella di output . Per defaults è la cartella corrente" -#: /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 "Imposta il titolo del libro" -#: /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 "Imposta la chiave per la classificazione del titolo" -#: /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 "Imposta l'autore" -#: /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 "Imposta la chiave per la classificazione dell'autore" -#: /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 "La categoria a cui questo libro appartiene. Es: Storia" -#: /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 "" "Percorso a un'immagine che verrà impostata come miniatura di questo file" -#: /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 "Percorso ad un file txt che contiene un commento." -#: /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 "Estrae la miniatura da un file LRF" -#: /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 "Imposta il pubblisher" -#: /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 "Imposta la classificazione del libro" -#: /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 "Imposta il creatore del libro" -#: /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 "Imposta il produttore del libro" -#: /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." @@ -1006,34 +1003,34 @@ msgstr "" "copertina definita, quindi viene usato un algoritmo euristico per provare ad " "indovinare la copertina." -#: /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 "Imposta l'ID del libro" -#: /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 "Imposta delta Carattere" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:201 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:178 msgid "Rendered %s" msgstr "Trasformato %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:204 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:181 msgid "Failed %s" msgstr "Fallito %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:261 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:235 msgid "" "Failed to process comic: \n" "\n" "%s" msgstr "" -"Impossibile processare il fumetto: \n" +"Elaborazione del fumetto fallita: \n" "\n" "%s" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:279 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:253 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 " @@ -1043,24 +1040,24 @@ msgstr "" "Predefinito: %default. Valori inferiori a 256 potrebbero generare testo " "sfocato sul dispositivo in caso di fumetti in formato EPUB." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:257 msgid "" "Disable normalize (improve contrast) color range for pictures. Default: False" msgstr "" "Disabilita la normalizzazione dell'intervallo dei colori per le immagini " "(migliora il contrasto). Predefinito: falso." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:286 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:260 msgid "Maintain picture aspect ratio. Default is to fill the screen." msgstr "" "Mantieni le proporzioni dell'immagine. Predefinito: riempimento dello " "schermo." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:262 msgid "Disable sharpening." msgstr "Disabilita maschera di nitidezza." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:290 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:264 msgid "" "Disable trimming of comic pages. For some comics, trimming might remove " "content as well as borders." @@ -1069,11 +1066,11 @@ msgstr "" "fumetti la rimozione dei margini potrebbere rimuovere parte del contenuto " "oltre che i bordi." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:293 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:267 msgid "Don't split landscape images into two portrait images" msgstr "Non dividere le immagini orizzontali in due immagini verticali" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:295 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:269 msgid "" "Keep aspect ratio and scale image using screen height as image width for " "viewing in landscape mode." @@ -1081,7 +1078,7 @@ msgstr "" "Mantieni le proporzioni e scala l'immagine usando l'altezza dello schermo " "come larghezza dell'immagine per la visualizzazione in orizzontale." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:298 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:272 msgid "" "Used for right-to-left publications like manga. Causes landscape pages to be " "split into portrait pages from right to left." @@ -1090,15 +1087,15 @@ msgstr "" "divisione di una pagina orizzontale in due pagine verticali orientate da " "destra a sinistra." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:302 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:276 msgid "" "Enable Despeckle. Reduces speckle noise. May greatly increase processing " "time." msgstr "" "Abilita Despeckle. Riduce il rumore speckle. Può aumentare di molto il tempo " -"di processamento." +"di elaborazione." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:305 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:279 msgid "" "Don't sort the files found in the comic alphabetically by name. Instead use " "the order they were added to the comic." @@ -1106,7 +1103,7 @@ msgstr "" "Non ordinare i file trovati nel fumetto alfabeticamente per nome. Usa invece " "l'ordine in cui sono stati aggiunti al fumetto." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:309 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:283 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 " @@ -1116,20 +1113,20 @@ msgstr "" "sperimentare vari formati per trovare la dimensione e l'aspetto ottimale per " "il dispositivo in uso." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:313 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:287 msgid "Apply no processing to the image" msgstr "Non applica alcuna elaborazione all'immagine" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:315 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:289 msgid "Do not convert the image to grayscale (black and white)" msgstr "Non convertire l'immagine in scala di grigi (bianco e nero)" -#: /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:426 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:437 msgid "Page" msgstr "Pagina" -#: /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" @@ -1154,7 +1151,7 @@ msgid "" "\n" "For full documentation of the conversion system see\n" msgstr "" -"input_file output_file [options]\n" +"input_file output_file [opzioni]\n" "\n" "Converte un ebook da un formato all'altro.\n" "\n" @@ -1168,7 +1165,7 @@ msgstr "" "iniziare con un trattino. Infine, se output_file non ha estensione è " "trattato come una cartella ed in questa cartella è creato un \"open ebook\" " "(OEB) composto da file HTML. Questi file sono quelli che sarebbero stati " -"normalmente inviati al plugin di output per essere processati.\n" +"normalmente inviati al plugin di output per essere elaborati.\n" "\n" "Dopo aver specificato l'input e l'output è possibile impostare diverse " "opzioni di conversione. Le opzioni disponibili dipendono dai tipi di file in " @@ -1177,31 +1174,31 @@ msgstr "" "\n" "Per una documentazione completa sul sistema di conversione vedi\n" -#: /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 "OPZIONI DI INPUT" -#: /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 "Opzioni per controllare la trasformazione dei file di input %s." +msgstr "Opzioni per controllare l'elaborazione dei file di input %s" -#: /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 "OPZIONI DI OUTPUT" -#: /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 "Opzioni per controllare gli output %s" +msgstr "Opzioni per controllare l'elaborazione dell'output %s" -#: /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 "Opzioni per controllare l'aspetto dell'output" -#: /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 "Controlla il rilevamento automatico della struttura del documento." -#: /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 " @@ -1211,28 +1208,28 @@ msgstr "" "sorgente ha un indice, questo sarà preferito a quello generato " "automaticamente." -#: /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 "Opzioni per impostare i metadati in output" -#: /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 "Opzioni per aiutare a individuare problemi con la conversione" -#: /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 "Creare lista delle formule del sistema" -#: /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 "Output salvato in" -#: /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 "" "Livello di dettagli dell'output. Specificare più volte per maggiori dettagli." -#: /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 " @@ -1242,7 +1239,7 @@ msgstr "" "specificata. Utile se non si conosce in quale stadio del processo di " "conversione si verifica l'errore." -#: /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. " @@ -1254,7 +1251,7 @@ msgstr "" "input. Per esempio lunghezze dipendenti dalla risoluzione (es. lunghezze in " "pixel). Le scelte sono:" -#: /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 " @@ -1267,7 +1264,7 @@ msgstr "" "per produrre documenti leggibili da un determinato dispositivo. Per esempio " "EPUB su un lettore SONY. Le opzioni sono:" -#: /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 " @@ -1280,7 +1277,7 @@ msgstr "" "e viceversa. Per default, la dimensione base dei caratteri è scelta in base " "al profilo scelto." -#: /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-" @@ -1295,11 +1292,11 @@ msgstr "" "questi riferimenti per ridimensionare i caratteri. Il valore predefinito è " "di utilizzare un modello basato sul tipo di output scelto." -#: /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 "Disabilita il ridimensionamento delle dimensioni dei Font" -#: /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." @@ -1307,7 +1304,7 @@ msgstr "" "Altezza della linea in pts. Controlla lo spazio fra due linee di testo " "consecutive. Per default, nessuna variazione dell'altezza viene eseguita." -#: /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 " @@ -1319,7 +1316,7 @@ msgstr "" "presentano testi non allineati nella pagina ed altri difetti grafici. Questa " "opzione estrae il contenuto dalle tabelle e lo presenta in maniera lineare." -#: /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 " @@ -1329,7 +1326,7 @@ msgstr "" "all'indice al primo livello. Se viene specificata, prende la precedenza " "sulle altre forme di autorilevamento." -#: /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 " @@ -1339,7 +1336,7 @@ msgstr "" "all'indice al secondo livello. Ogni elemento viene aggiunto sotto l'elemento " "di primo livello precedente." -#: /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 " @@ -1349,7 +1346,7 @@ msgstr "" "all'indice al terzo livello. Ogni elemento viene aggiunto sotto l'elemento " "di secondo livello precedente." -#: /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 " @@ -1359,11 +1356,11 @@ msgstr "" "preferenza rispetto a quello auto-generato. Con questa opzione, verrà sempre " "usato l'indice auto-generato." -#: /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 "Non aggiungere i capitoli rilevati automaticamente all'indice." -#: /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" @@ -1371,7 +1368,7 @@ msgstr "" "Se viene rilevato un numero di capitoli inferiore a questo, i collegamenti " "saranno aggiunti all'indice. Predefinito: %default" -#: /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 " @@ -1381,7 +1378,7 @@ msgstr "" "disabilitarlo. Il default è %default. I link sono aggiunti all'indice " "soltanto se non è già stato raggiunto il numero di capitoli impostati." -#: /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." @@ -1390,7 +1387,7 @@ msgstr "" "specificata. Le voci che corrispondono saranno rimosse insieme alle voci " "\"figlie\"." -#: /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 " @@ -1407,7 +1404,7 @@ msgstr "" "capitoli usare l'espressione \"/\". Per maggiori informazioni riferirsi alla " "guida su XPath nel manuale di Calibre." -#: /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 " @@ -1420,7 +1417,7 @@ msgstr "" "marcatura dei capitoli e il valore \"both\" userà sia l'interruzione di " "pagina che la linea per marcare i capitoli." -#: /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 " @@ -1430,42 +1427,42 @@ msgstr "" "Il CSS verrà aggiunto agli stili del documento sorgente e pertanto può " "essere usato per ridefinire gli stili esistenti." -#: /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 "" "Una espression XPath. Interruzioni di pagina sono inserite prima degli " "elementi specificati." -#: /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 "" "Imposta il margine superiore in punti. Il default è %default. Nota: 72 punti " "equivalgono a 1 pollice (circa 2,54 cm)" -#: /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 "" "Imposta il margine inferiore in punti. Il default è %default. Nota: 72 punti " "equivalgono a 1 pollice (circa 2,54 cm)" -#: /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 "" "Imposta il margine sinistro in punti. Il default è %default. Nota: 72 punti " "equivalgono a 1 pollice (circa 2,54 cm)" -#: /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 "" "Imposta il margine destro in punti. Il default è %default. Nota: 72 punti " "equivalgono a 1 pollice (circa 2,54 cm)" -#: /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 " @@ -1479,7 +1476,7 @@ msgstr "" "Impostato a \"originale\" (predefinito) l'allineamento non verrà cambiato. " "Notare che solo alcuni formati di output supportano il testo giustificato." -#: /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 " @@ -1489,7 +1486,7 @@ msgstr "" "1.5em. La rimozione degli spazi non funzionerà se il documento sorgente non " "usa la notazione per i paragrafi del tipo

    o

    ." -#: /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. " @@ -1499,7 +1496,7 @@ msgstr "" "automaticamente un rientro di paragrafo, per assicurarsi che i paragrafi " "siano ben distinti. Questa opzione controlla l'ampiezza del rientro." -#: /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." @@ -1507,7 +1504,7 @@ msgstr "" "Usare la copertina rilevata dal file di origine al posto di quella " "specificata." -#: /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)." @@ -1515,7 +1512,7 @@ msgstr "" "Inserisce una linea vuota tra i paragrafi. Non funzionerà se il file " "sorgente non usa i paragrafi ( tag

    o

    )" -#: /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." @@ -1523,7 +1520,7 @@ msgstr "" "Rimuovi la prima immagine dall'ebook di input. Utile se la prima immagine " "del file sorgente è una copertina e si sta indicando una copertina esterna." -#: /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." @@ -1531,7 +1528,7 @@ msgstr "" "Inserisce i metadati del libro all'inizio. Utile se il dispositivo non " "supporta la visualizzazione/ricerca di metadati direttamente." -#: /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." @@ -1540,24 +1537,24 @@ msgstr "" "problemi nel file sorgente. Usare con cautela perché potrebbe peggiorare la " "situazione." -#: /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 "" "Utilizza una espressione regolare per provare e rimuovere l'intestazione." -#: /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 "L'espressione regolare da usare per rimuovere l'intestazione." -#: /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 "Utilizza una espressione regolare per provare a rimuovere il piede." -#: /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 "L'espressione regolare da usare per rimuovere il piede di pagina." -#: /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." @@ -1565,7 +1562,7 @@ msgstr "" "Legge i metadati dal file OPF specificato. I metadati letti da questo file " "sovrascrivono qualunque altro metadato presente nel file sorgente." -#: /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 " @@ -1582,7 +1579,7 @@ msgstr "" "la rappresentazione usata dal maggior numero di persone (es. il cinese " "nell'esempio precedente)." -#: /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 " @@ -1598,118 +1595,118 @@ msgstr "" "automaticamente un legame nei corrispondenti due caratteri. Questa opzione " "manterrà i legami nel documento generato." -#: /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 "Imposta il titolo." -#: /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 "" "Imposta gli Autori. Autori multipli devono essere separati da \"&\" senza " "virgolette." -#: /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 "La versione del titolo da usare per l'ordinamento. " -#: /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 "Stringa da usare nell'ordinamento per autore. " -#: /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 "Seleziona la copertina da un file o da un URL" -#: /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 "Imposta la descrizione dell'ebook" -#: /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 "Imposta il publisher dell'ebook" -#: /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 "Imposta la serie alla quale l'ebook appartiene" -#: /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 "Imposta l'indice analitico del libro in questa serie" -#: /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 "Imposta il rating. Deve essere un numero compreso tra 1 e 5" -#: /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 "Imposta il codice ISBN del libro" -#: /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 "" "Imposta i tag per il libro. Deve essere una lista separata da virgole." -#: /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 "Imposta il produttore del libro." -#: /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 "Imposta la lingua." -#: /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 "Imposta la data di pubblicazione" -#: /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 "" "Imposta la data del libro (usata nella colonna della data in calibre)" -#: /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 "Impossibile trovare un libro dentro l'archivio" -#: /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 "" "I valori della serie e la valutazione devono essere numerici. Ignorato" -#: /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 "Errore nell'interpretare la data/orario" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:809 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:809 msgid "Converting input to HTML..." msgstr "Conversione dell'input in HTML..." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:836 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:836 msgid "Running transforms on ebook..." msgstr "Transcodifica di un ebook in corso..." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:923 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:923 msgid "Creating" msgstr "Creazione in corso" -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/__init__.py:18 +#: /home/kovid/work/trunk/src/calibre/ebooks/epub/fix/__init__.py:18 msgid "ePub Fixer" msgstr "ePub Fixer" -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/epubcheck.py:18 +#: /home/kovid/work/trunk/src/calibre/ebooks/epub/fix/epubcheck.py:18 msgid "Workaround epubcheck bugs" msgstr "Soluzione ai bug di epubcheck" -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/epubcheck.py:22 +#: /home/kovid/work/trunk/src/calibre/ebooks/epub/fix/epubcheck.py:22 msgid "" "Workarounds for bugs in the latest release of epubcheck. epubcheck reports " "many things as errors that are not actually errors. epub-fix will try to " @@ -1722,7 +1719,7 @@ msgstr "" "cambiamenti rilevanti nell'epub, il problema è però causato unicamente dal " "progetto epubcheck." -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/main.py:19 +#: /home/kovid/work/trunk/src/calibre/ebooks/epub/fix/main.py:19 msgid "" "%prog [options] file.epub\n" "\n" @@ -1741,15 +1738,15 @@ msgstr "" "messaggi per ogni errore individuato. Usare le opzioni per controllare quali " "errori correggere automaticamente." -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/main.py:50 +#: /home/kovid/work/trunk/src/calibre/ebooks/epub/fix/main.py:50 msgid "You must specify an epub file" msgstr "Specificare un file epub" -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/unmanifested.py:17 +#: /home/kovid/work/trunk/src/calibre/ebooks/epub/fix/unmanifested.py:17 msgid "Fix unmanifested files" msgstr "Corregge file non manifestati" -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/unmanifested.py:21 +#: /home/kovid/work/trunk/src/calibre/ebooks/epub/fix/unmanifested.py:21 msgid "" "Fix unmanifested files. epub-fix can either add them to the manifest or " "delete them as specified by the delete unmanifested option." @@ -1757,11 +1754,11 @@ msgstr "" "Corregge file non manifestati. epub-fix può aggiungerli al manifesto o " "eliminarli come specificato nell'opzione elimina non manifestati." -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/unmanifested.py:32 +#: /home/kovid/work/trunk/src/calibre/ebooks/epub/fix/unmanifested.py:32 msgid "Delete unmanifested files instead of adding them to the manifest" msgstr "Elimina file non manifestati invece di aggiungerli al manifesto" -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:56 +#: /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." @@ -1770,7 +1767,7 @@ msgstr "" "Usare con cautela, il contenuto della directory sarà cancellato preima di " "ricevere i dati." -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:62 +#: /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 " @@ -1786,7 +1783,7 @@ msgstr "" "interruzioni di pagina, è consigliato disattivare la suddivisione alle " "interruzioni di pagina." -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:73 +#: /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 " @@ -1797,7 +1794,7 @@ msgstr "" "grandi dimensioni. Il default di %defaultKB è la dimensione richiesta per " "Adobe Digital Editions." -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:80 +#: /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 " @@ -1807,7 +1804,7 @@ msgstr "" "specificata una, viene generata una copertina di default con il titolo, " "l'autore, etc. Questa opzione disabilita la generazione di questa copertina." -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:86 +#: /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 on a device that does not support SVG, like the iPhone or the " @@ -1819,7 +1816,7 @@ msgstr "" "il JetBook Lite. Senza questa opzione, alcuni dispositivi visualizzeranno " "cme copertina una pagina bianca." -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:94 +#: /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 " @@ -1833,29 +1830,29 @@ msgstr "" "copertina, ma questa non verrà distorta. Senza questa opzione l'immagine " "potrebbe essere sproporzionata anche se non avrà bordi bianchi." -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:169 +#: /home/kovid/work/trunk/src/calibre/ebooks/epub/output.py:169 msgid "Start" msgstr "Avvio" -#: /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/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 "Indice:" -#: /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 "Non inserire un indice all'inizio del libro." -#: /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 "Inserire un indice all'inizio del libro." -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:248 +#: /home/kovid/work/trunk/src/calibre/ebooks/html/input.py:248 msgid "" "Traverse links in HTML files breadth first. Normally, they are traversed " "depth first." @@ -1863,7 +1860,7 @@ msgstr "" "Seguire i collegamenti nelle pagine HTML per ampiezza. Normalmente sono " "seguiti prima in profonditá" -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:255 +#: /home/kovid/work/trunk/src/calibre/ebooks/html/input.py:255 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. " @@ -1874,7 +1871,7 @@ msgstr "" "nessun collegamento nel documento HTML verrà seguito. Il valore predefinito " "è %default." -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:264 +#: /home/kovid/work/trunk/src/calibre/ebooks/html/input.py:264 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 " @@ -1886,7 +1883,7 @@ msgstr "" "solamente se si è sicuri di quello che si sta facendo poiché potrebbe " "causare effetti collaterali nella sequenza di conversione." -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:272 +#: /home/kovid/work/trunk/src/calibre/ebooks/html/input.py:272 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." @@ -1896,75 +1893,75 @@ msgstr "" "documento PDF. %default è il valore predefinito per disabilitare questa " "funzione." -#: /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 "Creazione di file LIT da EPUB in corso..." -#: /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 "\tFile di Book Designer individuato" -#: /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 "\tAnalisi HTML..." -#: /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 "\tFile di Baen individuato. Rianalizzo..." -#: /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 "HTML preprocessato scritto in " -#: /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 "Sto processando %s" +msgstr "Elaborazione %s" -#: /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 "\tConversione in BBeB..." -#: /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 "Impossibile analizzare il file: %s" -#: /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 è un file vuoto" -#: /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 "Analisi fallita del link %s %s" -#: /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 "Impossibile aggiungere il link %s alla TOC" -#: /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 "Impossibile processare l'immagine %s. Errore: %s" +msgstr "Impossibile elaborare l'immagine %s. Errore: %s" -#: /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 "Impossibile processare la PNG interlacciata %s" +msgstr "Impossibile elaborare l'immagine PNG interlacciata %s" -#: /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 "" -"Impossibile processare l'immagine: %s\n" +"Impossibile elaborare l'immagine: %s\n" "%s" -#: /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 "" -"Si è verificato un errore nel processamento della tabella: %s. Ignoro il " -"codice della tabella" +"Si è verificato un errore nell'elaborazione di una tabella: %s. Codice della " +"tabella ignorato." -#: /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" @@ -1972,23 +1969,23 @@ msgstr "" "Tabella malformata:\n" "%s" -#: /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 "La tabella ha celle troppo larghe" -#: /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 "Impossibile leggere l'immagine di copertina: %s" -#: /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 "Impossibile leggere da: %s" -#: /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 "Processamento del file OPF fallito" +msgstr "Elaborazione del file opf fallita" -#: /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" @@ -1996,31 +1993,31 @@ msgstr "" "%prog libro.lrf\n" "Converte un file LRF in un file LRS (XML codificato UTF-8)" -#: /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 "Restituisce un file LRS" -#: /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 "Non salvare le immagini incorporate e i font sul disco" -#: /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 "Analisi LRF..." -#: /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 "Creazione 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 "LRS scritto in " -#: /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 "Impossibile leggere dal file della miniatura:" -#: /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." @@ -2028,24 +2025,24 @@ msgstr "" "%prog [opzioni] file.lrs\n" "Compila un file LRS dentro un file LRF" -#: /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 "Percorso del file in uscita" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrs/convert_from.py:290 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:114 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/lrs/convert_from.py:290 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/isbndb.py:114 msgid "Verbose processing" msgstr "Elaborazione dettagliata" -#: /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 "Converte LRS in LRS, utile per il debugging" -#: /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 "File LRF non valido. Impossibile inviare metadati." -#: /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" @@ -2059,29 +2056,29 @@ msgstr "" "Mostra/modifica i metadati in un file LRF\n" "\n" -#: /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 "" "Percorso a un file TXT contenente il commento che verrà incluso nel file LRF" -#: /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 "" "Abilita la rotazione automatica delle immagini che sono più larghe dello " "schermo" -#: /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 "" "Imposta lo spazio tra le parole in punti. Il valore predefinito è %default" -#: /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 "" "Aggiunge a tutte le pagine un'intestazione contenente il titolo e l'autore" -#: /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" @@ -2089,13 +2086,13 @@ msgstr "" "Imposta il formato dell'intestazione. %a verrà rimpiazzato dall'autore e %t " "dal titolo. L'impostazione predefinita è %default" -#: /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 "" "Aggiunge spazio extra sotto l'intestazione. Il valore di default è %default " "punti." -#: /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" @@ -2103,7 +2100,7 @@ msgstr "" "Indentazione minima paragrafo (l'indentazione della prima riga di un " "paragrafo) in pt. Predefinita: %default" -#: /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)" @@ -2111,7 +2108,7 @@ msgstr "" "Trasforma in immagini le tabelle di HTML (utile se il documento ha tabelle " "grandi o complesse)" -#: /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" @@ -2119,110 +2116,110 @@ msgstr "" "Moltiplica la dimensione del testo nelle tabelle trasformate di questo " "fattore. Predefinito: %default" -#: /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 "La famiglia di caratteri con grazie da includere" -#: /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 "La famiglia di caratteri senza grazie da includere" -#: /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 "La famiglia di caratteri a spaziatura fissa da includere" -#: /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 "Comic" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:396 -#: /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/delete_matching_from_device.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:65 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:359 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:887 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:543 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:397 +#: /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/delete_matching_from_device.py:75 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:58 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:65 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:359 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:887 +#: /home/kovid/work/trunk/src/calibre/library/server/opds.py:550 msgid "Title" msgstr "Titolo" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:397 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:59 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:67 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:364 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:888 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:398 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:59 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:67 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:364 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:888 msgid "Author(s)" msgstr "Autore(i)" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:398 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:61 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:72 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:399 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:61 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:72 msgid "Publisher" msgstr "Editore" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:399 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:49 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:400 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/info.py:49 msgid "Producer" msgstr "Produttore" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:400 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:35 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:210 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:211 -#: /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/models.py:318 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1079 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:401 +#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:35 +#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:210 +#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:211 +#: /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/models.py:318 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:1079 msgid "Comments" msgstr "Commenti" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:408 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:27 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:73 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:306 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1075 -#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:143 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:409 +#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:27 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories.py:50 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:73 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:306 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:1075 +#: /home/kovid/work/trunk/src/calibre/library/field_metadata.py:143 msgid "Tags" msgstr "Tag" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:410 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:26 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:323 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1084 -#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:91 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:411 +#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:26 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories.py:50 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:74 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:323 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:1084 +#: /home/kovid/work/trunk/src/calibre/library/field_metadata.py:91 msgid "Series" msgstr "Serie" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:411 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:412 msgid "Language" msgstr "Lingua" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:413 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:414 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:1067 msgid "Timestamp" msgstr "Timestamp" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:415 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:63 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:70 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:416 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:63 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:70 msgid "Published" msgstr "Pubblicato" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:417 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:418 msgid "Rights" msgstr "Privilegi" -#: /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 "Rassegna Editoriale" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/archive.py:41 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/archive.py:41 msgid "" "Extract common e-book formats from archives (zip/rar) files. Also try to " "autodetect if they are actually cbz/cbr files." @@ -2230,11 +2227,11 @@ msgstr "" "Estrae i formati comuni di e-book da un archivio (zip/rar). Cerca anche di " "identificare se essi sono file cbz o cbr" -#: /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 "opzioni" -#: /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" @@ -2259,7 +2256,7 @@ msgstr "" "alcuni metadati in un file che non li supporta, i metadati saranno\n" "ignorati.\n" -#: /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." @@ -2267,7 +2264,7 @@ msgstr "" "Imposta gli autori. Multilpli autori devono essere divisi dal carattere &. I " "nomi degli autori devono essere nell'ordine Nome Cognome." -#: /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." @@ -2275,7 +2272,7 @@ msgstr "" "La versione del titolo da usare per l'ordinamento. Se non specificata, la " "versione verrà generata automaticamente dal titolo." -#: /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)." @@ -2283,30 +2280,30 @@ msgstr "" "La stringa che verrà usata nell'ordinamento per autore. Se non specificata, " "essa verrà generata automaticamente dal nome dell'autore." -#: /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 "Imposta la copertina per il file specificato" -#: /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 "Imposta la categoria del libro" -#: /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 "Imposta la data di pubblicazione" -#: /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 "Estrae la copertina dall'ebook e la salva in un file specificato." -#: /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 "" "Specifica il nome di un file OPF. I metadati saranno scritti in questo file." -#: /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 " @@ -2316,71 +2313,103 @@ msgstr "" "nell'ebook. I metadati specificati dalla linea di comando sovrascriveranno i " "metadati letti dal file OPF" -#: /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 "Imposta il BookID nel file LRF" -#: /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 "Nessun file specificato" -#: /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 "Metadati originali" -#: /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 "Metadati cambiati" -#: /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 "Creato OPF in" -#: /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 "Copertina salvata in" -#: /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 "Nessuna copertina trovata" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:15 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/covers.py:27 msgid "Cover download" msgstr "Scarica cover" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/douban.py:42 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/covers.py:79 +msgid "Download covers from openlibrary.org" +msgstr "Scarica copertine da openlibrary.org" + +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/covers.py:107 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/covers.py:136 +msgid "ISBN: %s not found" +msgstr "ISBN: %s non trovato" + +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/covers.py:117 +msgid "Download covers from librarything.com" +msgstr "Scarica copertine da librarything.com" + +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/covers.py:128 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/library_thing.py:68 +msgid "LibraryThing.com timed out. Try again later." +msgstr "Connessione con LibraryThing.com scaduta. Riprovare più tardi." + +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/covers.py:135 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/library_thing.py:75 +msgid "" +"Could not fetch cover as server is experiencing high load. Please try again " +"later." +msgstr "" +"Impossibile scaricare la copertina perché il server è sovraccarico. " +"Ritentare più tardi" + +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/covers.py:139 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/library_thing.py:79 +msgid "LibraryThing.com server error. Try again later." +msgstr "Errore server LibraryThing.com. Riprovare più tardi." + +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/douban.py:42 msgid "Downloads metadata from Douban.com" msgstr "Scarica i metadati da Douban.com" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:50 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:50 msgid "Metadata download" msgstr "Scarica i metadati" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:127 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:127 msgid "ratings" msgstr "Valutazioni" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:127 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:127 msgid "tags" msgstr "tag" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:128 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:128 msgid "description/reviews" msgstr "Descrizione/Rassegne" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:129 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:129 msgid "Download %s from %s" msgstr "Scarica %s da %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:155 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:155 msgid "Downloads metadata from Google Books" msgstr "Scarica i metadati da Google Books" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:172 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:172 msgid "Downloads metadata from isbndb.com" msgstr "Scarica i metadati da isbndb.com" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:200 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:200 msgid "" "To use isbndb.com you must sign up for a %sfree account%s and enter your " "access key below." @@ -2388,15 +2417,15 @@ msgstr "" "Per utilizzare isbndb.com è necessario registrarsi per un %saccount " "gratuito%s ed inserire qui sotto il codice di accesso ottenuto." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:210 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:210 msgid "Downloads social metadata from amazon.com" msgstr "Scaricare i metadati sociali da amazon.com." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:229 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:229 msgid "Downloads series/tags/rating information from librarything.com" msgstr "Scarica informazioni su serie/tag/valutazione da librarything.com" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:95 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/isbndb.py:95 msgid "" "\n" "%prog [options] key\n" @@ -2421,43 +2450,27 @@ msgstr "" "gratuitamente su isbndb.com.\n" "\n" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:106 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/isbndb.py:106 msgid "The ISBN ID of the book you want metadata for." msgstr "Il codice ISBN del libro di cui si vogliono i metadati." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:108 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/isbndb.py:108 msgid "The author whose book to search for." msgstr "L'autore del libro da cercare" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:110 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/isbndb.py:110 msgid "The title of the book to search for." msgstr "Il titolo del libro da cercare" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:112 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/isbndb.py:112 msgid "The publisher of the book to search for." msgstr "L'editore del libro da cercare" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:68 -msgid "LibraryThing.com timed out. Try again later." -msgstr "Connessione con LibraryThing.com scaduta. Riprovare più tardi." - -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:75 -msgid "" -"Could not fetch cover as server is experiencing high load. Please try again " -"later." -msgstr "" -"Impossibile scaricare la copertina perché il server è sovraccarico. " -"Ritentare più tardi" - -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:76 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/library_thing.py:76 msgid " not found." msgstr " non trovato" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:79 -msgid "LibraryThing.com server error. Try again later." -msgstr "Errore server LibraryThing.com. Riprovare più tardi." - -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:86 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/library_thing.py:86 msgid "" "\n" "%prog [options] ISBN\n" @@ -2471,21 +2484,21 @@ msgstr "" "Recupera un'immagine di copertina/metadato sociale per il libro identificato " "con da ISBN da LibraryThing.com\n" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1226 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1399 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/opf2.py:1226 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1399 msgid "Cover" msgstr "Copertina" -#: /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 "" "Modificare le immagini per i limiti di grandezza dei dispositivi Palm" -#: /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 "Quando disponibile, utilizzare l'autore per ordinare la lista." -#: /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." @@ -2493,139 +2506,139 @@ msgstr "" "Non aggiungere un indice alla fine del libro. Opzione utile se il libro " "contiene già il suo indice." -#: /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 "Titolo per ogni indice in-line generato." -#: /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 "Disabilita la compressione dei file di contenuto" -#: /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 "Il tag marca il libro come Documento Personale" -#: /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 "Tutti gli articoli" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:259 +#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/reader.py:259 msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "Questo è un libro Amazon Topaz. Non può essere elaborato." -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1400 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1400 msgid "Title Page" msgstr "Pagina iniziale" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 -#: /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:1401 +#: /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 "Indice" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1402 msgid "Index" msgstr "Indice analitico" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1403 msgid "Glossary" msgstr "Glossario" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1404 msgid "Acknowledgements" msgstr "Ringraziamenti" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1405 msgid "Bibliography" msgstr "Bibliografia" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1406 msgid "Colophon" msgstr "Colophon" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1407 msgid "Copyright" msgstr "Diritti d'autore" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1408 msgid "Dedication" msgstr "Dedica" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1409 msgid "Epigraph" msgstr "Epigrafe" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1410 msgid "Foreword" msgstr "Premessa" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1411 msgid "List of Illustrations" msgstr "Indice delle figure" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1412 msgid "List of Tables" msgstr "Indice delle tabelle" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1413 msgid "Notes" msgstr "Note" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1414 msgid "Preface" msgstr "Prefazione" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1415 msgid "Main Text" msgstr "Corpo del testo" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:41 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/iterator.py:41 msgid "%s format books are not supported" msgstr "I libri nel formato %s non sono supportati" -#: /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 "Opzioni per creazione della TOC (indice contenuti) da HTML" -#: /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 "Copertina del libro" -#: /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 "" "Impossibile trovare un buon punto dove dividere: %s Dimensione sotto-albero: " "%d KB" -#: /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 "Opzioni per creare OPF/NCX/etc." -#: /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 "Versione OPF da creare. Il valore predefinito è %default" -#: /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 "" "Crea un documento Adobe \"page-map\" se le preferenze di impaginazione sono " "disponibili." -#: /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 "Note" -#: /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 "Menu a lato" -#: /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:24 +#: /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:24 msgid "" "Normally calibre treats blank lines as paragraph markers. With this option " "it will assume that every line represents a paragraph instead." @@ -2634,9 +2647,9 @@ msgstr "" "paragrafi. Con questa opzione si assumerà che ogni linea rappresenti un " "paragrafo." -#: /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:28 +#: /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:28 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+ " @@ -2648,11 +2661,11 @@ msgstr "" "(uso del TAB o più di 2 spazi) siano considerate paragrafi. I paragrafi " "finiscono alla successivo rientro." -#: /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 "Formattazione da usare nel pdb. Le opzioni sono:" -#: /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." @@ -2661,11 +2674,11 @@ msgstr "" "predefinito è CP1252. Nota: Questa opzione non è rispettata da tutti i " "formati." -#: /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 "Non estrarre le immagini dal documento" -#: /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 " @@ -2675,11 +2688,11 @@ msgstr "" "linea. Valori accettati sono numeri decimali tra 0 e 1. Il valore " "predefinito è 0.5 che è la lunghezza mediana di linea." -#: /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 "Usa il nuovo motore di conversione PDF." -#: /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" @@ -2699,7 +2712,7 @@ msgstr "" "\n" "Manipolare un PDF.\n" -#: /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" @@ -2709,44 +2722,44 @@ msgstr "" "\n" "Sagoma un documento PDF.\n" -#: /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 "" "Percorso del file in uscita. Per impostazione predefinita viene creato nella " "cartella corrente." -#: /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 "" "Numero di pixel per sagomare dal punto x più a sinistra (il valore " "predefinito è %s)" -#: /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 "" "Numero di pixel per sagomare dal punto y più a sinistra (il valore " "predefinito è %s)" -#: /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 "" "Numero di pixel per sagomare dal punto x più a destra (il valore predefinito " "è %s)" -#: /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 "" "Numero di pixel per sagomare dal punto y più a destra (il valore predefinito " "è %s)" -#: /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`" @@ -2755,21 +2768,21 @@ msgstr "" "individuali con il comando `gs -dSAFER -dNOPAUSE -dBATCH -sDEVICE=bbox " "file.pdf 2> bounding`" -#: /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 "Opzioni di rifilamento" -#: /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 "Opzioni per controllare la trasformazione di PDF" -#: /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" @@ -2779,11 +2792,11 @@ msgstr "" "\n" "Decifra il PDF.\n" -#: /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 "Opzioni di decifrazione" -#: /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" @@ -2793,11 +2806,11 @@ msgstr "" "\n" "Cifra il PDF.\n" -#: /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 "Opzioni di crittogafia" -#: /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" @@ -2807,33 +2820,33 @@ msgstr "" "\n" "Ottieni i dettagli del PDF.\n" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:46 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:33 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/info.py:46 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/edit_authors_dialog.py:33 msgid "Author" msgstr "Autore" -#: /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 "Soggetto" -#: /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 "Creatore" -#: /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 "Pagine" -#: /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 "Grandezza del file" -#: /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 "Versione 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" @@ -2847,11 +2860,11 @@ msgstr "" "\n" " Unisce i diversi documenti PDF.\n" -#: /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 "Opzioni di unione" -#: /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" @@ -2861,11 +2874,11 @@ msgstr "" "\n" "Inverte il PDF.\n" -#: /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 "Opzioni di rovesciamento" -#: /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" @@ -2875,11 +2888,11 @@ msgstr "" "\n" "Ruotare le pagine del PDF in senso orario.\n" -#: /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 "Opzioni di rotazione" -#: /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" @@ -2905,11 +2918,11 @@ msgstr "" "\n" "Dividi il PDF.\n" -#: /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 "Opzioni di divisione" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:31 +#: /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!" @@ -2917,7 +2930,7 @@ msgstr "" "L'unità di misura. Il valore predefinito è il pollice. Le opzioni sono %s. " "Nota: questa opzione non influenza l'unità per i margini!" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:36 +#: /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" @@ -2925,7 +2938,7 @@ msgstr "" "La grandezza del foglio. Questa grandezza sarà ignorata quando si usa un " "output personalizzato. Il valore predefinito è lettera. Le opzioni sono %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:40 +#: /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." @@ -2935,13 +2948,13 @@ msgstr "" "sovrascrive e ha precedenza su ogni altra opzione che specifica le " "dimensioni di pagina." -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:45 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/output.py:45 msgid "The orientation of the page. Default is portrait. Choices are %s" msgstr "" "L'orientamento della pagina. Il valore predefinito è ritratto. Le opzioni " "sono %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:49 +#: /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." @@ -2949,18 +2962,18 @@ msgstr "" "Conserva le proporzioni della copertina, invece di espanderla per ricoprire " "la prima pagina del pdf generato." -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/pdftohtml.py:55 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/pdftohtml.py:55 msgid "Could not find pdftohtml, check it is in your PATH" msgstr "Impossibile trovare pdftohtml, verificare che sia nel proprio PATH" -#: /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 "" "Specifica la codifica dei caratteri nel documento di output. Il valore " "predefinito è CP1252." -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:200 +#: /home/kovid/work/trunk/src/calibre/ebooks/rtf/input.py:194 msgid "" "This RTF file has a feature calibre does not support. Convert it to HTML " "first and then try it.\n" @@ -2970,14 +2983,14 @@ msgstr "" "Provate a convertire il documento in HTML e riprovate.\n" "%s" -#: /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 "" "Specifica la codifica dei caratteri nel documento di output. Il valore " "predefinito è UTF-8." -#: /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 " @@ -2987,7 +3000,7 @@ msgstr "" "1 è il valore più basso di compressione, ma il più veloce, e 10 è il più " "alto valore di compressione, ma il più lento." -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:34 +#: /home/kovid/work/trunk/src/calibre/ebooks/txt/input.py:34 msgid "" "Normally extra spaces are condensed into a single space. With this option " "all spaces will be displayed." @@ -2995,19 +3008,19 @@ msgstr "" "Normalmente gli spazi multipli vengono trasformati in uno unico. Con questa " "opzioni vergono visualizzati tutti gli spazi." -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:37 +#: /home/kovid/work/trunk/src/calibre/ebooks/txt/input.py:37 msgid "" "Run the text input through the markdown pre-processor. To learn more about " "markdown see" msgstr "" -"Analizzare il testo sorgente utilizzando il pre-processore markdown. Per " -"maggiori informazioni su markdown vedere" +"Analizza il testo sorgente utilizzando il pre-processore markdown. Per " +"maggiori informazioni sul markdown visitare" -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:40 +#: /home/kovid/work/trunk/src/calibre/ebooks/txt/input.py:40 msgid "Do not insert a Table of Contents into the output text." msgstr "Non inserire un indice nel testo di output." -#: /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'. " @@ -3018,7 +3031,7 @@ msgstr "" "precedenti. Per Mac OS X usare 'unix'. 'system' è il valore predefinito per " "il tipo di interruzioni di linea usato da questo sistema operativo." -#: /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." @@ -3027,7 +3040,7 @@ msgstr "" "predefinito è UTF-8. Nota: Questa opzione non è rispettata da tutti i " "formati." -#: /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 " @@ -3040,7 +3053,7 @@ msgstr "" "esiste un minimo di 25 caratteri. Usare 0 per disattivare il troncamento di " "linea." -#: /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" @@ -3049,76 +3062,76 @@ msgstr "" "linea quando non esistono spazi. Inoltre permette di specificare l valore " "della massima lunghezza di linea al di sotto del minimo (25 caratteri)" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:33 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:33 msgid "Send file to storage card instead of main memory by default" msgstr "" "Invia il file alla scheda di memoria invece che alla memoria principale come " "impostazione predefinita" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:35 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:35 msgid "Confirm before deleting" msgstr "Chiedi conferma prima di eliminare" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:37 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:37 msgid "Main window geometry" msgstr "Geometria della finestra principale" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:39 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:39 msgid "Notify when a new version is available" msgstr "Avverti quando è disponibile una nuova versione" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:41 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:41 msgid "Use Roman numerals for series number" msgstr "Usa numeri romani per i numeri delle serie" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:43 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:43 msgid "Sort tags list by name, popularity, or rating" msgstr "Ordina i tag per nome, popolarità o valutazione" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:45 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:45 msgid "Number of covers to show in the cover browsing mode" msgstr "" "Numero di copertine da visualizzare nella modalità di sfogliatura copertine" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:47 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:47 msgid "Defaults for conversion to LRF" msgstr "Parametri predefiniti per la conversione in LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:49 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:49 msgid "Options for the LRF ebook viewer" msgstr "Opzioni del lettore di libri LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:52 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:52 msgid "Formats that are viewed using the internal viewer" msgstr "Formati visualizzati utilizzando il lettore interno" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:54 msgid "Columns to be displayed in the book list" msgstr "Colonne da mostrare nella lista dei libri" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:55 msgid "Automatically launch content server on application startup" msgstr "" "Avvia automaticamente il server dei contenuti quando si apre l'applicazione" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:56 msgid "Oldest news kept in database" msgstr "Notizie più vecchie da mantenere nel database" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:57 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:57 msgid "Show system tray icon" msgstr "Mostra l'icona nell'area di notifica" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:59 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:59 msgid "Upload downloaded news to device" msgstr "Invia le notizie scaricate al dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:61 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:61 msgid "Delete books from library after uploading to device" msgstr "" "Elimina i libri dalla biblioteca dopo averli caricati sul dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:63 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:63 msgid "" "Show the cover flow in a separate window instead of in the main calibre " "window" @@ -3126,259 +3139,266 @@ msgstr "" "Visualizza le copertine in una finestra separata invece che nella finestra " "principale di calibre." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:65 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:65 msgid "Disable notifications from the system tray icon" msgstr "Disabilita messaggi dall'icona nella barra di sistema" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:67 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:67 msgid "Default action to perform when send to device button is clicked" msgstr "" "Azione predefinita da eseguire quando viene cliccato il pulsante di invio al " "dispositivo." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:89 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:89 msgid "Maximum number of waiting worker processes" -msgstr "Limite masimo di processi in attesa" +msgstr "Numero massimo di lavori in attesa" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:91 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:91 msgid "Download social metadata (tags/rating/etc.)" msgstr "Scarica metadati sociali (tag/valutazioni/etc.)" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:93 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:93 msgid "Overwrite author and title with new metadata" msgstr "Usa i nuovi metadati per cambiare l'autore e il titolo" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:95 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:95 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "Limita il massimo numero di lavori simultanei al numero delle CPU." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:97 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:97 msgid "tag browser categories not to display" msgstr "categorie del browser di tag da non visualizzare" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:99 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:99 msgid "The layout of the user interface" msgstr "L'aspetto dell'interfaccia grafica" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:101 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:101 msgid "Show the average rating per item indication in the tag browser" msgstr "Visualizza la valutazione media per elemento nel browser dei tag" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:103 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:103 msgid "Disable UI animations" msgstr "Disattiva animazioni interfaccia" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:476 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:151 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/__init__.py:479 msgid "Copied" msgstr "Copiato" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:185 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:185 msgid "Copy" msgstr "Copia" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:185 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:185 msgid "Copy to Clipboard" msgstr "Copia negli appunti" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:396 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:397 msgid "Choose Files" msgstr "Seleziona documenti" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:67 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:245 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:67 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:245 msgid "Use library only" msgstr "Usare solo la biblioteca" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:68 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:246 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:68 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:246 msgid "User annotations generated from main library only" msgstr "Annotazioni utente generate solo dalla biblioteca principale" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:609 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:668 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:705 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:726 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:911 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:976 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1094 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:75 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:623 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:682 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:719 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:740 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:925 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:998 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1116 msgid "No books selected" msgstr "Nessun libro selezionato" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:76 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:76 msgid "No books selected to fetch annotations from" msgstr "Nessun libro selezionato da cui prendere annotazioni" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:101 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:101 msgid "Merging user annotations into database" msgstr "Fondi le annotazioni utente nel database" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:129 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:129 msgid "%s
    Last Page Read: %d (%d%%)" msgstr "%s
    Ultima Pagina Letta: %d (%d%%)" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:135 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:135 msgid "%s
    Last Page Read: Location %d (%d%%)" msgstr "%s
    Ultima Pagina Letta: Posizione %d (%d%%)" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:154 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:154 msgid "Location %d • %s
    %s
    " msgstr "Posizione %d • %s
    %s
    " -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:163 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:163 msgid "Page %d • %s
    " msgstr "Pagina %d • %s
    " -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:168 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:168 msgid "Location %d • %s
    " msgstr "Posizione %d • %s
    " -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:291 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:291 msgid "How many empty books?" msgstr "Quanti libri vuoti?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:292 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:292 msgid "How many empty books should be added?" msgstr "quanti libri vuoti si desidera aggiungere?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:339 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:390 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:339 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:390 msgid "Uploading books to device." msgstr "Invio dei libri al dispositivo." -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:350 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:145 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:350 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:164 msgid "Books" msgstr "Libri" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:351 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:351 msgid "EPUB Books" msgstr "Libri EPUB" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:352 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:352 msgid "LRF Books" msgstr "Libri LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:353 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:353 msgid "HTML Books" msgstr "Libri HTML" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:354 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:354 msgid "LIT Books" msgstr "Libri LIT" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:355 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:355 msgid "MOBI Books" msgstr "Libri MOBI" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:356 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:356 msgid "Topaz books" msgstr "Libri Topaz" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:357 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:357 msgid "Text books" msgstr "Libri TXT" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:358 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:358 msgid "PDF Books" msgstr "Libri PDF" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:359 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:359 msgid "Comics" msgstr "Fumetti" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:360 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:360 msgid "Archives" msgstr "Archivi" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:364 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:364 msgid "Supported books" msgstr "Libri supportati" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:399 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:399 msgid "Merged some books" msgstr "Uniti alcuni libri" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:400 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:400 msgid "" "Some duplicates were found and merged into the following existing books:" msgstr "Alcune copie sono state trovate e unite con i seguenti libri:" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:409 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:409 msgid "Failed to read metadata" msgstr "Impossibile leggere i metadati" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:410 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:410 msgid "Failed to read metadata from the following" msgstr "Impossibile leggere i metadati dai seguenti" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:429 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:434 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:429 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:448 msgid "Add to library" msgstr "Aggiungi alla biblioteca" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:429 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:459 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1238 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1263 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:429 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:473 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1260 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1285 msgid "No book selected" msgstr "Nessun libro selezionato" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:434 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:442 +msgid "" +"The following books are virtual and cannot be added to the calibre library:" +msgstr "" +"I seguenti libri sono virtuali e non possono essere aggiunti alla biblioteca " +"calibre:" + +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:448 msgid "No book files found" msgstr "Nessun libro trovato" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:456 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:470 msgid "Cannot delete" msgstr "Non si può cancellare" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:469 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:483 msgid "Choose formats to be deleted" msgstr "Seleziona i formati da cancellare" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:487 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:501 msgid "Choose formats not to be deleted" msgstr "Seleziona i formati da non cancellare" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:507 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:521 msgid "Cannot delete books" msgstr "Impossibile eliminare i libri" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:508 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:522 msgid "No device is connected" msgstr "Nessun dispositivo collegato" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:518 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:532 msgid "Main memory" msgstr "Memoria principale" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:519 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:430 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:439 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:533 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:436 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:445 msgid "Storage Card A" msgstr "Scheda di memoria A" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:520 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:432 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:441 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:534 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:438 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:447 msgid "Storage Card B" msgstr "Scheda di memoria B" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:525 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:539 msgid "No books to delete" msgstr "Nessun libro da eliminare" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:526 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:540 msgid "None of the selected books are on the device" msgstr "Nessuno dei libri selezionati è sul device" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:543 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:598 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:557 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:612 msgid "Deleting books from device." msgstr "Cancellazione dei libri dal dispositivo." -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:564 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:578 msgid "" "The selected books will be permanently deleted and the files removed " "from your computer. Are you sure?" @@ -3386,7 +3406,7 @@ msgstr "" "I libri selezionati saranno cancellati permanentemente e i file " "rimossi dal computer. Confermare?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:583 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:597 msgid "" "The selected books will be permanently deleted from your device. Are " "you sure?" @@ -3394,61 +3414,61 @@ msgstr "" "I libri selezionati verranno cancellati definitivamente

    dal " "dispositivo. Confermare?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:608 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:622 msgid "Cannot download metadata" msgstr "Impossibile scaricare i metadati" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:624 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:638 msgid "social metadata" msgstr "metadati sociali" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:626 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:640 msgid "covers" msgstr "copertine" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:626 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:640 msgid "metadata" msgstr "metadati" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:628 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:642 msgid "Downloading %s for %d book(s)" msgstr "Scaricamento %s per %d libro" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:652 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:666 msgid "Failed to download some metadata" msgstr "Impossibile scaricare alcuni metadati" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:653 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:667 msgid "Failed to download metadata for the following:" msgstr "Impossibile a scaricare i metadati per i seguenti:" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:656 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:670 msgid "Failed to download metadata:" msgstr "Impossibile scaricare i metadati:" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:657 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:602 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:550 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:962 -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:671 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:608 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:560 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:990 +#: /home/kovid/work/trunk/src/calibre/utils/ipc/job.py:53 msgid "Error" msgstr "Errore" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:667 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:704 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:681 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:718 msgid "Cannot edit metadata" msgstr "Impossibile modificare i metadati" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:725 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:728 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:739 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:742 msgid "Cannot merge books" msgstr "Impossibile unire i libri" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:729 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:743 msgid "At least two books must be selected for merging" msgstr "Devono essere selezionati almeno due libri per essere uniti" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:733 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:747 msgid "" "All book formats and metadata from the selected books will be added to the " "first selected book.

    The second and subsequently selected " @@ -3459,7 +3479,7 @@ msgstr "" "primo libro selezionato.

    Gli altri libri non verranno " "cancellati o modificati.

    Procedere con l'operazione?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:744 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:758 msgid "" "All book formats and metadata from the selected books will be merged into " "the first selected book.

    After merger the second and " @@ -3475,51 +3495,66 @@ msgstr "" "verràpermantentemente cancellato dal computer.

    Procedere " "l'operazione?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:756 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:770 msgid "" "You are about to merge more than 5 books. Are you sure you want to " "proceed?" msgstr "Verranno uniti più di 5 libri. Confermare l'unione?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:910 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:924 msgid "Cannot save to disk" msgstr "Impossibile salvare sul disco" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:913 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:927 msgid "Choose destination directory" msgstr "Scegliere la cartella di destinazione" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:946 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:933 +#: /home/kovid/work/trunk/src/calibre/gui2/library/views.py:566 +msgid "Not allowed" +msgstr "Non permesso" + +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:934 +msgid "" +"You are trying to save files into the calibre library. This can cause " +"corruption of your library. Save to disk is meant to export files from your " +"calibre library elsewhere." +msgstr "" +"Si sta tentando di salvare dei file nella biblioteca di calibre. Questo può " +"danneggiare la biblioteca. Il salvataggio su disco è pensato per esportare i " +"file dalla biblioteca di calibre in un altro posto." + +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:968 msgid "Error while saving" msgstr "Errore durante il salvataggio" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:947 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:969 msgid "There was an error while saving." msgstr "Si è verificato un errore durante il salvataggio." -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:954 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:955 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:976 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:977 msgid "Could not save some books" msgstr "Impossibile salvare alcuni libri" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:956 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:978 msgid "Click the show details button to see which ones." msgstr "Fare clic sul pulsante dettagli per vedere quali." -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:977 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:999 msgid "No books selected to generate catalog for" msgstr "Nessun libro selezionato per la generazione del catalogo" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:994 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1016 msgid "Generating %s catalog..." msgstr "Generando %s catalogo..." -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:999 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:264 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1021 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:264 msgid "No books found" msgstr "Nessun libro trovato" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1000 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1022 msgid "" "No books to catalog\n" "Check exclude tags" @@ -3527,49 +3562,49 @@ msgstr "" "Nessun libro da catalogare\n" "Controlla i tag esclusi" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1010 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1032 msgid "Catalog generated." msgstr "Catalogo generato" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1013 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1035 msgid "Export Catalog Directory" msgstr "Esporta il catalogo" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1014 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1036 msgid "Select destination for %s.%s" msgstr "Selezionare una destinazione per %s.%s" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1030 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1052 msgid "Fetching news from " msgstr "Recupero notizie da " -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1044 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1066 msgid " fetched." msgstr " preso." -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1093 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1115 msgid "Cannot convert" msgstr "Impossibile convertire" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1122 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1144 msgid "Starting conversion of %d book(s)" msgstr "Conversione di %d libri avviata" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1238 -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1299 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1260 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1321 msgid "Cannot view" msgstr "Impossibile leggere" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1244 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1266 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/regex_builder.py:77 msgid "Choose the format to view" msgstr "Scegliere il formato da leggere" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1252 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1274 msgid "Multiple Books Selected" msgstr "Più libri selezionati" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1253 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1275 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 " @@ -3581,48 +3616,48 @@ msgstr "" "computer. Una volta avviato il processo questo non può essere fermato fino " "al completamento. Continuare comunque?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1262 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1284 msgid "Cannot open folder" msgstr "Impossibile aprire la cartella" -#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1300 +#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1322 msgid "%s has no available formats." msgstr "%s non ha formati disponibili" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:54 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:54 msgid "Searching in" msgstr "Cercando in" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:232 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:232 msgid "Adding..." msgstr "Sto aggiungendo...." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:245 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:245 msgid "Searching in all sub-directories..." msgstr "Cercando in tutte le sotto cartelle" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:258 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:258 msgid "Path error" msgstr "Errore di percorso" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:259 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:259 msgid "The specified directory could not be processed." msgstr "Impossibile elaborare la cartella indicata." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:263 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:804 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:263 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:810 msgid "No books" msgstr "Nessun libro." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:330 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:330 msgid "Added" msgstr "Aggiunto" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:343 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:343 msgid "Adding failed" msgstr "Aggiunta fallita" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:344 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:344 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." @@ -3631,11 +3666,11 @@ msgstr "" "di far ripartire Calibre e aggiungere i libri in incrementi più piccoli, " "fino a quando si indentifica il libro che causa il problema." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:356 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:356 msgid "Duplicates found!" msgstr "Scoperti duplicati!" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:357 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:357 msgid "" "Books with the same title as the following already exist in the database. " "Add them anyway?" @@ -3643,73 +3678,73 @@ msgstr "" "Dei libri con lo stesso titolo sono già presenti nel database. Aggiungerli " "comunque?" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:360 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:360 msgid "Adding duplicates..." msgstr "Aggiunta dei duplicati..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:427 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:427 msgid "Saving..." msgstr "Salvataggio..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:480 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:480 msgid "Saved" msgstr "Salvato" -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:57 +#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/__init__.py:57 msgid "Searching for sub-folders" msgstr "Ricerca di sottocartelle" -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:62 +#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/__init__.py:62 msgid "Searching for books" msgstr "Ricerca di libri" -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:74 +#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/__init__.py:74 msgid "Looking for duplicates based on file hash" msgstr "Cerca i duplicati in base all'hash" -#: /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 +#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/__init__.py:109 +#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/welcome_ui.py:65 msgid "Choose root folder" msgstr "Selezionare la cartella principale" -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:137 +#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/__init__.py:137 msgid "Invalid root folder" msgstr "Cartella principale non valida" -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:138 +#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/__init__.py:138 msgid "is not a valid root folder" msgstr "non è una cartella principale valida" -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:148 +#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/__init__.py:148 msgid "Add books to calibre" msgstr "Aggiungi libri a calibre" -#: /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 +#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/scan_ui.py:21 +#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/welcome_ui.py:57 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/finish_ui.py:41 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/kindle_ui.py:41 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/library_ui.py:49 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/stanza_ui.py:41 msgid "WizardPage" msgstr "Pagina dell'assistente" -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/scan_ui.py:22 +#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/scan_ui.py:22 msgid "Scanning root folder for books" msgstr "Ricerca di libri nella cartella principale" -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/scan_ui.py:23 +#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/scan_ui.py:23 msgid "This may take a few minutes" msgstr "Questo richiederà alcuni minuti" -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:58 +#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/welcome_ui.py:58 msgid "Choose the location to add books from" msgstr "Selezionare la posizione dalla quale aggiungere i libri" -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:59 +#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/welcome_ui.py:59 msgid "Select a folder on your hard disk" msgstr "Selezionare una cartella sul disco" -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:60 +#: /home/kovid/work/trunk/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 " @@ -3729,11 +3764,11 @@ msgstr "" "

    Assicurarsi che la cartella selezionata per la biblioteca di calibre " "non sia all'interno della cartella principale selezionata.

    " -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:63 +#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/welcome_ui.py:63 msgid "&Root folder:" msgstr "&Cartella principale" -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:64 +#: /home/kovid/work/trunk/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" @@ -3741,57 +3776,57 @@ msgstr "" "In questa cartella e le sue sottocartelle saranno cercati i libri da " "importare nella biblioteca di calibre" -#: /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:53 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:79 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:80 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:72 -#: /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:552 -#: /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:570 -#: /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:614 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:365 -#: /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:390 -#: /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:394 -#: /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/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:75 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:77 -#: /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/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/add_wizard/welcome_ui.py:66 +#: /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:53 +#: /home/kovid/work/trunk/src/calibre/gui2/device_drivers/configwidget_ui.py:79 +#: /home/kovid/work/trunk/src/calibre/gui2/device_drivers/configwidget_ui.py:80 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library_ui.py:72 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:599 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:600 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:612 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:614 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:616 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:618 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:619 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:668 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:365 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:370 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:384 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:395 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:397 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:399 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:404 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:406 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/saved_search_editor_ui.py:87 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/saved_search_editor_ui.py:90 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:156 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:159 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:163 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:166 +#: /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/tag_list_editor_ui.py:75 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor_ui.py:77 +#: /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/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/add_wizard/welcome_ui.py:67 +#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/welcome_ui.py:67 msgid "Handle multiple files per book" msgstr "Gestisce più file per libro" -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:68 +#: /home/kovid/work/trunk/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" @@ -3799,194 +3834,194 @@ msgstr "" "&Un libro per cartella, si presume che ogni file in una cartella sia lo " "stesso libro ma con un diverso formato" -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:69 +#: /home/kovid/work/trunk/src/calibre/gui2/add_wizard/welcome_ui.py:69 msgid "" "&Multiple books per folder, assumes every ebook file is a different book" msgstr "" "&Più libri per cartella, si presume che ogni file sia un libro diverso" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:23 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:45 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:54 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:311 -#: /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/dialogs/book_info.py:126 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:313 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:23 +#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:45 +#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:54 +#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:311 +#: /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/dialogs/book_info.py:126 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:313 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:1065 msgid "Path" msgstr "Percorso" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:24 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:48 -#: /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:230 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:312 -#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:100 +#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:24 +#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:48 +#: /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:230 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:312 +#: /home/kovid/work/trunk/src/calibre/library/field_metadata.py:100 msgid "Formats" msgstr "Formati" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:25 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:891 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 +#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:25 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:891 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:1068 msgid "Collections" msgstr "Raccolte" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:47 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:56 +#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:47 +#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:56 msgid "Click to open" msgstr "Fare clic per aprire" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:48 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:305 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:311 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:317 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1074 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1078 -#: /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:274 +#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:48 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:305 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:311 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:317 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:1074 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:1078 +#: /home/kovid/work/trunk/src/calibre/gui2/shortcuts.py:47 +#: /home/kovid/work/trunk/src/calibre/gui2/shortcuts_ui.py:73 +#: /home/kovid/work/trunk/src/calibre/gui2/shortcuts_ui.py:78 +#: /home/kovid/work/trunk/src/calibre/gui2/widgets.py:274 msgid "None" msgstr "Nessuno" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:310 +#: /home/kovid/work/trunk/src/calibre/gui2/book_details.py:310 msgid "Click to open Book Details window" msgstr "Fare clic per visualizzare i dettagli del libro" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:16 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex.py:16 msgid "BibTeX Options" msgstr "Opzioni BibTeX" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py: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_bibtex.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 "Opzioni specifiche per" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py: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_bibtex.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 "output" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:81 -#: /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: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:60 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:46 -#: /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:50 -#: /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:77 -#: /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_bibtex_ui.py:81 +#: /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:60 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/toc_ui.py:62 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/txt_input_ui.py:46 +#: /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:50 +#: /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:77 +#: /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 "Formato" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:82 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:82 msgid "Bib file encoding:" msgstr "Codifica file Bib:" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:83 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:38 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:83 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:38 msgid "Fields to include in output:" msgstr "Campi da includere nell'output" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:84 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:84 msgid "ascii/LaTeX" msgstr "ascii/LaTeX" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:85 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:85 msgid "Encoding configuration (change if you have errors) :" msgstr "Configurazione di codifica (cambiare se ci sono errori) :" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:86 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:86 msgid "strict" msgstr "strict" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:87 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:87 msgid "replace" msgstr "sostituisci" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:88 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:88 msgid "ignore" msgstr "ignora" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:89 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:89 msgid "backslashreplace" msgstr "backslashreplace" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:90 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:90 msgid "BibTeX entry type:" msgstr "Tipo elemento BibTeX:" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:91 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:91 msgid "mixed" msgstr "mixed" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:92 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:92 msgid "misc" msgstr "varie" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:93 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:93 msgid "book" msgstr "libro" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:94 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:94 msgid "Create a citation tag?" msgstr "Creare un nuovo tag citazione?" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:95 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:95 msgid "Expression to form the BibTeX citation tag:" msgstr "Espressione per formare il tag di citazione BibTeX:" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:96 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_bibtex_ui.py:96 msgid "" "Some explanation about this template:\n" " -The fields availables are 'author_sort', 'authors', 'id',\n" @@ -4004,38 +4039,38 @@ msgstr "" " il primo elemento verrà selezionato.\n" " -Per i campi di tempo, verrà usata solo la data. " -#: /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 "Opzioni CSV/XML" -#: /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 "Opzioni per il libro elettronico" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:550 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1493 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1511 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 +#: /home/kovid/work/trunk/src/calibre/library/catalog.py:550 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:1496 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:1514 msgid "Catalog" msgstr "Catalogo" -#: /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 "Tag per 'Non usare questo libro':" -#: /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 "Tag per 'Marca questo libro come letto':" -#: /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 "Tag per note aggiuntive:" -#: /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 "Espressione regolare per definire i tag da escludere come generi:" -#: /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], " @@ -4049,23 +4084,23 @@ msgstr "" "- Un espressione con un singolo punto esclude tutti i tag di genere, " "generando quindi una Sezione senza Genere" -#: /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 "Includi la sezione 'Titolo'" -#: /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 "Includi Sezione 'Ultimi Aggiunti'" -#: /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 "Ordina i numeri come testo" -#: /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 "Esempio paginazione per il catalog.ui" -#: /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 " @@ -4075,112 +4110,112 @@ msgstr "" "salvati in una conversione precedente (se esistente) invece di usare i " "valori predefiniti nelle Preferenze" -#: /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 "Conversione in gruppo" -#: /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 "Opzioni specifiche per i formati di output" -#: /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 "Fumetti" -#: /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 "input" -#: /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 "&Numero di colori:" -#: /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 "Disabilita normali&zzazione" -#: /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 "Ma&ntieni proporzioni" -#: /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 "Disabilita masc&hera di nitidezza" -#: /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 "Disabilita &Rifilatura" -#: /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 "&Largo" -#: /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 "&Orizzontale" -#: /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 "&Da destra a sinistra" -#: /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 "&Non ordinare" -#: /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 "De&speckle" -#: /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 "&Disabilita l'analisi di fumetti" +msgstr "&Disabilita l'elaborazione di fumetti" -#: /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:115 msgid "&Output format:" msgstr "&Formati output" -#: /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 "Disabilita la conversione delle immagini in bianco e nero" -#: /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 "Debug" -#: /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 "Debug del processo di conversione." -#: /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 "Selezionare una cartella per il rilevamento errori" -#: /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 "Cartella di debug non valida" -#: /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 "Impossibile creare la cartella di debug" -#: /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 " @@ -4193,7 +4228,7 @@ msgstr "" "conversione e trovare i parametri di conversione corretti per l'indice e " "l'identificazione automatica dei capitoli." -#: /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 " @@ -4203,58 +4238,58 @@ msgstr "" "fasi del processo di conversione. Questo codice HTML può essere un ottimo " "punto di partenza per adattare manualmente il processo di conversione." -#: /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 "Output EPUB" -#: /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 "Non ÷re nelle interruzioni di pagina" -#: /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 "Nessuna &copertina predefinita" -#: /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 "Nessuna copertina &SVG" -#: /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 "Mantieni le &proporzioni della copertina" -#: /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 "Dividere documenti più &grandi di:" -#: /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 " KB" -#: /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 "Input FB2" -#: /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 "Non inserire un &indice all'inizio del libro." -#: /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 "Output FB2" -#: /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 "&Indice nel testo" -#: /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 "Assistente per ingradimento degli stili di caratteri" -#: /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 " @@ -4283,104 +4318,104 @@ msgstr "" "ebook.com/user_manual/conversion.html#font-size-rescaling\">manuale " "d'uso per capire come funziona il ridimensionamento dei caratteri.

    " -#: /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 "&Output documento" -#: /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 "Grandezza caratteri di &base:" -#: /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 "Grandezza caratteri &chiave:" -#: /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 " pt" -#: /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 "Usare valori &predefiniti" -#: /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 "&Input documento" -#: /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 "&Font grandezza " -#: /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 " sarà utilizzato come dimensione: " -#: /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 "0.0 pt" -#: /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 "Visualizzazione" -#: /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 "Controlla l'aspetto dell'output" -#: /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 "Originale" -#: /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 "Allinea a sinistra" -#: /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 "Testo giustificato" -#: /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 "&Disattiva l'aggiustamento proporzionale dei caratteri" -#: /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 "Grandezza caratteri di &base:" -#: /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 "Procedura per scegliere la dimensione dei caratteri appropriata" -#: /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 "&Altezza delle righe:" -#: /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 "&Encoding dei caratteri di input" +msgstr "&Codifica dei caratteri di input:" -#: /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 "Rimuovi gli spa&zi tra i paragrafi" -#: /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 "Ampiezza del rientro:" -#: /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. " @@ -4390,94 +4425,94 @@ msgstr "" "automaticamente un rientro di paragrafo, per assicurarsi che i paragrafi " "siano ben distinti. Questa opzione controlla l'ampiezza del rientro." -#: /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 " em" -#: /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 "Giustificazione testo:" -#: /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 "&Linearizza le tabelle" -#: /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 "&CSS addizionale" -#: /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 "&Transcodifica i caratteri unicode in ASCII" -#: /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 "Inserimento di righe &vuote" -#: /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 "Mantieni &legami" -#: /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 "Formato LRF" -#: /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 "Abilitare rotazione &automatica delle immagini larghe" -#: /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 "&Spazio tra le parole:" -#: /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 "&Rientro minimo del paragrafo:" -#: /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 "Trasforma le &tabelle in immagini" -#: /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 "" "Moltiplicatore della grandezza del testo per la presentazione di tabelle:" -#: /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 "Aggiungi &intestazione" -#: /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 "&Spazio dall'intestazione:" -#: /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 "&Formato dell'intestazione:" -#: /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 "Caratteri &Embed" -#: /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 "Famiglia di caratteri &Serif:" -#: /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 "Famiglia di caratteri S&ans-Serif:" -#: /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 "Famiglia di caratteri &Monospaced:" -#: /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 "Metadati" -#: /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." @@ -4485,78 +4520,78 @@ msgstr "" "Specificare i metadati. Il documento di output conterrà quanti più metadati " "possibili." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:164 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:107 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:164 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:111 msgid "Choose cover for " msgstr "Seleziona copertina per " -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:171 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:114 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:171 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:118 msgid "Cannot read" msgstr "Impossibile leggere" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:115 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:172 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:119 msgid "You do not have permission to read the file: " msgstr "Non si hanno i permessi per leggere il file: " -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:180 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:123 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:180 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:187 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:127 msgid "Error reading file" msgstr "Errore nella lettura del file" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:181 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:124 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:181 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:128 msgid "

    There was an error reading from file:
    " msgstr "

    Si è verificato un errore nella lettura del file:
    " -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:188 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:132 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:188 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:136 msgid " is not a valid picture" msgstr " non è un'immagine valida" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:167 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:396 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:167 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:401 msgid "Book Cover" msgstr "Copertina del libro" -#: /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 "Usa copertina del file di &origine" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:169 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:397 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:169 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:402 msgid "Change &cover image:" msgstr "Ca&mbia l'immagine di copertina:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:170 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:398 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:170 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:403 msgid "Browse for an image to use as the cover of this book." msgstr "" "Sfoglia per trovare un'immagine da usare come copertina per questo libro" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:357 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:172 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:362 msgid "&Title: " msgstr "&Titolo: " -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:173 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:358 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:173 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:363 msgid "Change the title of this book" msgstr "Cambia il titolo di questo libro" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:174 -#: /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:361 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:174 +#: /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:366 msgid "&Author(s): " msgstr "A&utore(i): " -#: /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 "Classifica&zione autore:" -#: /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" @@ -4564,20 +4599,20 @@ msgstr "" "Cambia l'autore di questo libro. Autori multipli devono essere separati da " "una virgola" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:177 -#: /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:370 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:177 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:167 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:375 msgid "&Publisher: " msgstr "&Editore: " -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:178 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:178 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:376 msgid "Ta&gs: " msgstr "T&ag: " -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:179 -#: /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:372 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:179 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:169 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:377 msgid "" "Tags categorize the book. This is particularly useful while searching. " "

    They can be any words or phrases, separated by commas." @@ -4586,211 +4621,211 @@ msgstr "" "ricerche.

    Possono essere qualsiasi parola o frase, separati da " "virgole." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:180 -#: /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:375 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:180 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:174 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:380 msgid "&Series:" msgstr "&Serie:" -#: /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: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:376 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:377 +#: /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:175 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:176 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:381 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:382 msgid "List of known series. You can add new series." msgstr "Lista di serie conosciute. È possibile aggiungere nuove serie" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:382 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:183 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:387 msgid "Book " msgstr "Libro " -#: /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 "Outup MOBI" -#: /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 "Predefinito" -#: /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 "&Titolo per l'indice:" -#: /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 "Riaggiusta la grandezza delle immagini per dispositivi &Palm" -#: /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 "Usa autore &sort per autore." -#: /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 "Disattiva la compressione per il contenuto dei documenti" -#: /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 "Non aggiungere un indice al libro" -#: /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 "Opzioni Kindle" -#: /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 "Carattere Testata Periodica:" -#: /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 "Tag Documenti Personali:" -#: /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 "Imposta pagina" -#: /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 "Personalizzazione &Output:" -#: /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 "Descrizione del profilo" -#: /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 "Personalizzazione &Input:" -#: /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 "Margini" -#: /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 "&Sinistra:" -#: /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 "&Alto:" -#: /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 "&Destra:" -#: /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 "&Basso:" -#: /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 "Input PDB" -#: /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:47 +#: /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:47 msgid "Treat each &line as a paragraph" msgstr "Considera ogni linea come un paragrafo" -#: /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:48 +#: /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:48 msgid "Assume print formatting" msgstr "Individuare il formato di stampa" -#: /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 "Output PDB" -#: /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 "&Formato:" -#: /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 "Input PDF" -#: /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 "Fattore di &suddivisione delle linee:" -#: /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 "Nessuna &immagine" -#: /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 "Output PDF" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:43 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdf_output_ui.py:43 msgid "&Paper Size:" msgstr "Formato &pagina:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:44 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdf_output_ui.py:44 msgid "&Orientation:" msgstr "&Orientamento:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:45 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdf_output_ui.py:45 msgid "Preserve &aspect ratio of cover" msgstr "Mantieni le &proporzioni della copertina" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output.py:14 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/rb_output.py:14 msgid "RB Output" msgstr "Output RB" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:83 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/regex_builder.py:83 msgid "No formats available" msgstr "Non sono disponibili formati" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:84 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/regex_builder.py:84 msgid "Cannot build regex using the GUI builder without a book." msgstr "" "Impossibile creare un'espressione regolare usando l'editor con interfaccia " "grafica senza un libro." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:103 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/regex_builder.py:103 msgid "Open book" msgstr "Libro aperto" -#: /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 "Editore di Regex" -#: /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 "Anteprima" -#: /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 "Regex:" -#: /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 "Test" -#: /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 "Converti" -#: /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 "Opzioni specifiche per la formattazione dell'input." -#: /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:112 +#: /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 "Finestra di dialogo" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:109 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/single_ui.py:113 msgid "&Input format:" msgstr "Formato di &input:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:110 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/single_ui.py:114 msgid "Use &saved conversion settings for individual books" msgstr "Usare le &saved impostazioni di conversione individuale per i libri." -#: /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" @@ -4798,126 +4833,126 @@ msgstr "" "Rilevamento\n" "della struttura" -#: /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 "" "Rilevamento approfondito dei capitoli e del resto della struttura del " "documento." -#: /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 "Individuare i capitoli con (espressione XPath):" -#: /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 "Inserire interruzioni di pagina prima di (espressione XPath)" -#: /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 "Espressione regolare per l'intestazione:" -#: /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 "Espressione regolare per il piè di pagina." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:76 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection.py:56 +#: /home/kovid/work/trunk/src/calibre/gui2/widgets.py:76 msgid "Invalid regular expression" msgstr "Espressione regolare non valida" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:57 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:77 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection.py:57 +#: /home/kovid/work/trunk/src/calibre/gui2/widgets.py:77 msgid "Invalid regular expression: %s" msgstr "Espressione regolare non valida: %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 non valido" -#: /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 "L'espressione XPath %s non è valida." -#: /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 "Chapter &mark:" msgstr "&Marcatore capitoli:" -#: /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 "Remove first &image" msgstr "Rimuovi la prima &immagine" -#: /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 "Insert &metadata as page at start of book" msgstr "Inserire i &metadati come prima pagina del libro" -#: /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 "&Preprocess input file to possibly improve structure detection" msgstr "" "&Preprocessa il documento sorgente per migliorare il rilevamento della " "struttura" -#: /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 F&ooter" msgstr "Rimuovi il f&ooter" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:66 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection_ui.py:66 msgid "Remove H&eader" msgstr "Rimuovi l'&intestazione" -#: /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 "Indice" -#: /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 "Controllo della creazione/conversione dell'indice." -#: /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 "Livello &1 indice (espressione XPath):" -#: /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 "Livello &2 indice (espressione XPath):" -#: /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 "Livello &3 indice (espressione XPath):" -#: /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 "N&on aggiungere all'indice i capitoli rilevati." -#: /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 "N&umero di link da aggiungere all'indice" -#: /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 "I&nizio capitolo" -#: /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 "&Forza l'uso dell'indice generato automaticamente." -#: /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 "&Filtro dell'indice:" -#: /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 "Input TXT" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:49 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/txt_input_ui.py:49 msgid "Process using markdown" msgstr "Analizzare utilizzando markdown" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:50 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/txt_input_ui.py:50 msgid "" "

    Markdown is a simple markup language for text files, that allows for " "advanced formatting. To learn more visit markdown." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:51 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/txt_input_ui.py:51 msgid "Do not insert Table of Contents into output text when using markdown" msgstr "" "Non inserire l'indice nel testo di output quando si utilizza il markdown." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:52 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/txt_input_ui.py:52 msgid "Preserve &spaces" msgstr "Mantieni gli &spazi" -#: /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 "Output TXT" -#: /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 "Tipo di interruzione di &linea:" -#: /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 "Lunghezza di linea &massima:" -#: /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 "Forzare la lunghezza massima di riga" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:51 -#: /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:51 +#: /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 "EtichettaDiTesto" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:52 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/xexp_edit_ui.py:52 msgid "Use a wizard to help construct the XPath expression" msgstr "Utilizza il wizard di aiuto per create le espressioni XPath" -#: /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 "Far corrispondere i &tag HTML con il nome del tag:" -#: /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 "a" -#: /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 "Con il seguente &attributo" -#: /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 "Con &value" -#: /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 "(Una espressione regolare)" -#: /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 " @@ -5048,172 +5083,172 @@ msgstr "" "XPath consultare il Tutorial di XPath." -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:127 +#: /home/kovid/work/trunk/src/calibre/gui2/cover_flow.py:127 msgid "Cover browser could not be loaded" msgstr "Impossibile caricare il browser di copertine" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:179 +#: /home/kovid/work/trunk/src/calibre/gui2/cover_flow.py:179 msgid "Browse by covers" msgstr "Sfoglia per copertine" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:53 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:78 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:102 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:139 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:264 -#: /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 +#: /home/kovid/work/trunk/src/calibre/gui2/custom_column_widgets.py:53 +#: /home/kovid/work/trunk/src/calibre/gui2/custom_column_widgets.py:78 +#: /home/kovid/work/trunk/src/calibre/gui2/custom_column_widgets.py:102 +#: /home/kovid/work/trunk/src/calibre/gui2/custom_column_widgets.py:139 +#: /home/kovid/work/trunk/src/calibre/gui2/custom_column_widgets.py:158 +#: /home/kovid/work/trunk/src/calibre/gui2/custom_column_widgets.py:264 +#: /home/kovid/work/trunk/src/calibre/gui2/library/delegates.py:110 +#: /home/kovid/work/trunk/src/calibre/gui2/library/delegates.py:130 +#: /home/kovid/work/trunk/src/calibre/gui2/library/delegates.py:205 +#: /home/kovid/work/trunk/src/calibre/gui2/library/delegates.py:238 +#: /home/kovid/work/trunk/src/calibre/gui2/library/delegates.py:242 msgid "Undefined" msgstr "Non definito" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:53 -#: /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/custom_column_widgets.py:53 +#: /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 "Sì" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:53 -#: /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/custom_column_widgets.py:53 +#: /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 "No" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:116 +#: /home/kovid/work/trunk/src/calibre/gui2/custom_column_widgets.py:116 msgid "star(s)" msgstr "stelle" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:117 +#: /home/kovid/work/trunk/src/calibre/gui2/custom_column_widgets.py:117 msgid "Unrated" msgstr "Non votato" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:150 +#: /home/kovid/work/trunk/src/calibre/gui2/custom_column_widgets.py:150 msgid "Set '%s' to today" msgstr "Imposta '%s' ad oggi" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:260 +#: /home/kovid/work/trunk/src/calibre/gui2/custom_column_widgets.py:260 msgid " index:" msgstr " indice:" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:443 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:183 +#: /home/kovid/work/trunk/src/calibre/gui2/custom_column_widgets.py:443 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:183 msgid "Automatically number books in this series" msgstr "Numera automaticamente i libri in questa serie" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:486 +#: /home/kovid/work/trunk/src/calibre/gui2/custom_column_widgets.py:486 msgid "Remove all tags" msgstr "Elimina tutti i tag" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:507 +#: /home/kovid/work/trunk/src/calibre/gui2/custom_column_widgets.py:507 msgid "tags to add" msgstr "tag da aggiungere" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:512 +#: /home/kovid/work/trunk/src/calibre/gui2/custom_column_widgets.py:512 msgid "tags to remove" msgstr "tag da eliminare" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:49 -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:135 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:49 +#: /home/kovid/work/trunk/src/calibre/utils/ipc/job.py:135 msgid "No details available." msgstr "Nessun dettaglio disponibile." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:162 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:166 msgid "Device no longer connected." msgstr "Dispositivo non più collegato." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:278 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:284 msgid "Get device information" msgstr "Recupera informazioni sul dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:289 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:295 msgid "Get list of books on device" msgstr "Recupera la lista dei libri del dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:299 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:305 msgid "Get annotations from device" msgstr "Ricevi annotazioni dal dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:308 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:314 msgid "Send metadata to device" msgstr "Invia metadati al dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:313 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:319 msgid "Send collections to device" msgstr "Invia collezioni al dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:337 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:343 msgid "Upload %d books to device" msgstr "Invia %d libri al dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:352 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:358 msgid "Delete books from device" msgstr "Cancella i libri dal dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:369 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:375 msgid "Download books from device" msgstr "Scarica libri dal dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:379 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:385 msgid "View book on device" msgstr "Visualizza libro sul dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:413 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:419 msgid "Set default send to device action" msgstr "Imposta azione predefinita di invio" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:419 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:425 msgid "Send to main memory" msgstr "Invia alla memoria principale" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:421 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:427 msgid "Send to storage card A" msgstr "Invia alla scheda di memoria A" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:423 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:429 msgid "Send to storage card B" msgstr "Invia alla scheda di memoria B" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:428 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:437 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:434 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:443 msgid "Main Memory" msgstr "Memoria principale" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:448 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:454 msgid "Send and delete from library" msgstr "Invia ed elimina dalla biblioteca" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:449 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:455 msgid "Send specific format" msgstr "Invia uno specifico formato" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:485 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:491 msgid "Eject device" msgstr "Espelli dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:493 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:499 msgid "Fetch annotations (experimental)" msgstr "Preleva annotazioni (sperimentale)" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:603 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:609 msgid "Error communicating with device" msgstr "Errore di comunicazione col dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:625 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:631 msgid "Select folder to open as device" msgstr "Selezionare la cartella da aprire come dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:669 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:675 msgid "Failed" msgstr "Fallito" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:675 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:681 msgid "Error talking to device" msgstr "Errore di comunicazione col dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:676 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:682 msgid "" "There was a temporary error talking to the device. Please unplug and " "reconnect the device and or reboot." @@ -5221,127 +5256,127 @@ msgstr "" "Si è verificato un errore di comunicazione temporaneo col dispositivo. " "Disconnettere e riconnettere il dispositivo e/o riavviare." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:718 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:724 msgid "Device: " msgstr "Dispositivo: " -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:720 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:726 msgid " detected." msgstr " individuato." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:805 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:811 msgid "selected to send" msgstr "Selezione per l'invio" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:810 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:816 msgid "Choose format to send to device" msgstr "Selezionare il formato da inviare al dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:819 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:825 msgid "No device" msgstr "Nessun dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:820 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:826 msgid "Cannot send: No device is connected" msgstr "Impossibile inviare: nessun dispositivo connesso" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:823 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:827 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:829 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:833 msgid "No card" msgstr "Nessuna scheda" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:824 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:828 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:830 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:834 msgid "Cannot send: Device has no storage card" msgstr "Impossibile inviare: il dispositivo non ha schede di memoria" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:869 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:875 msgid "E-book:" msgstr "Libro elettronico" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:872 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:878 msgid "Attached, you will find the e-book" msgstr "Troverete allegato il libro elettronico" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:873 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:181 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:879 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:181 msgid "by" msgstr "di" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:874 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:880 msgid "in the %s format." msgstr "nel formato %s" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:887 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:893 msgid "Sending email to" msgstr "Spedizione di un messaggio elettronico a" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:917 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:925 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1019 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1081 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1200 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1208 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:923 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:931 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1025 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1087 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1206 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1214 msgid "No suitable formats" msgstr "Nessun formato adatto" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:918 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:924 msgid "Auto convert the following books before sending via email?" msgstr "" "Convertire automaticamente i libri selezionati prima di inviare con posta " "eletrronica?" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:926 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:932 msgid "" "Could not email the following books as no suitable formats were found:" msgstr "" "Impossibile inviare i libri seguenti via email poiché non sono stati trovati " "formati adatti:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:944 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:950 msgid "Failed to email books" msgstr "Impossibile inviare via email i libri" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:945 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:951 msgid "Failed to email the following books:" msgstr "Impossibile inviare via email i seguenti libri:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:949 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:955 msgid "Sent by email:" msgstr "Inviato per posta elettronica" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:978 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:984 msgid "News:" msgstr "Notizie:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:979 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:985 msgid "Attached is the" msgstr "Allegato c'é" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:990 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:996 msgid "Sent news to" msgstr "Notizie inviate a" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1020 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1082 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1201 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1026 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1088 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1207 msgid "Auto convert the following books before uploading to the device?" msgstr "" "Convertire automaticamente i libri seguenti prima di inviarli al dispositivo?" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1050 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1056 msgid "Sending catalogs to device." msgstr "Inviando i cataloghi al dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1114 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1120 msgid "Sending news to device." msgstr "Invio delle notizie al dispositivo." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1167 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1173 msgid "Sending books to device." msgstr "Invio dei libri al dispositivo." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1209 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1215 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." @@ -5350,168 +5385,176 @@ msgstr "" "trovato un formato adeguato. È prima necessario convertire i libri in un " "formato supportato dal dispositivo." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1271 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1277 msgid "No space on device" msgstr "Spazio sul dispositivo insufficiente" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1272 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:1278 msgid "" "

    Cannot upload books to device there is no more free space available " msgstr "" "

    Impossibile inviare i libri al dispositivo poiché non c'è spazio " "sufficiente " -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:78 +#: /home/kovid/work/trunk/src/calibre/gui2/device_drivers/configwidget_ui.py:78 msgid "Select available formats and their order for this device" msgstr "" "Selezionare i formati disponibili e il loro ordine per questo dispositivo." -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:82 +#: /home/kovid/work/trunk/src/calibre/gui2/device_drivers/configwidget_ui.py:82 msgid "Use sub directories" msgstr "Utilizza sotto cartelle" -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:83 +#: /home/kovid/work/trunk/src/calibre/gui2/device_drivers/configwidget_ui.py:83 msgid "Use author sort for author" msgstr "Usa classificazione autore come autore" -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:85 +#: /home/kovid/work/trunk/src/calibre/gui2/device_drivers/configwidget_ui.py:85 msgid "Save &template:" msgstr "Salva &template" -#: /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 "Ridimensiona &copertina per la visualizzazione" -#: /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 "&Precedente" -#: /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 "&Successivo" -#: /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 "I miei libri" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:69 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:289 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/catalog_ui.py:69 +#: /home/kovid/work/trunk/src/calibre/gui2/tools.py:289 msgid "Generate catalog" msgstr "Crea catalogo" -#: /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 "Genera catalogo per {0} libri" -#: /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 "Catalogo &format:" -#: /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 "" "Catalogo &title (cataloghi esistenti con lo stesso nome verranno " "sovrascritti):" -#: /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 "&Send catalogo al dispositivo automaticamente" -#: /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 "Opzioni catalogo" -#: /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 "Scegliere il formato" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:38 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library.py:38 msgid "Choose location for calibre library" msgstr "Selezionare la posizione per la biblioteca calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:45 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library.py:45 msgid "Same as current" msgstr "Come l'attuale" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:46 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library.py:46 msgid "The location %s contains the current calibre library" msgstr "La posizione %s contiene la biblioteca calibre attuale" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:51 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library.py:51 msgid "No existing library found" msgstr "Nessuna biblioteca trovata" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:52 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library.py:52 msgid "There is no existing calibre library at %s" msgstr "Non è presente alcuna biblioteca calibre in %s" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:56 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library.py:56 msgid "Not empty" msgstr "Non vuoto" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:57 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library.py:57 msgid "The folder %s is not empty. Please choose an empty folder" msgstr "La cartella %s non è vuota. Selezionare una cartella vuota" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:66 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library.py:80 +msgid "No location" +msgstr "Nessuna posizione" + +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library.py:80 +msgid "No location selected" +msgstr "Nessuna posizione selezionata" + +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library_ui.py:66 msgid "Choose your calibre library" msgstr "Selezionare una biblioteca calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:67 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library_ui.py:67 msgid "Your calibre library is currently located at {0}" msgstr "La biblioteca calibre attuale è posizionata in {0}" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:68 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library_ui.py:68 msgid "New &Location:" msgstr "Nuova &posizione:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:69 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library_ui.py:69 msgid "Use &existing library at the new location" msgstr "Usa biblioteca &esistente nella nuova posizione" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:70 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library_ui.py:70 msgid "&Create an empty library at the new location" msgstr "&Crea una biblioteca vuota alla nuova posizione" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:71 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library_ui.py:71 msgid "&Move current library to new location" msgstr "&Sposta la biblioteca attuale alla nuova posizione" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:33 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comicconf.py:33 msgid "Set defaults for conversion of comics (CBR/CBZ files)" msgstr "" "Imposta i parametri predefiniti per la conversione di fumetti (file CBR/CBZ)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:48 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comicconf.py:48 msgid "Set options for converting %s" msgstr "mposta le opzioni per convertire %s" -#: /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 "&Titolo:" -#: /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 "&Autore(i):" -#: /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 "&Profilo:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comments_dialog_ui.py:41 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comments_dialog_ui.py:41 msgid "Edit Comments" msgstr "Modifica Commenti" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:174 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:174 msgid "%(plugin_type)s %(plugins)s" msgstr "%(plugin_type)s %(plugins)s" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:175 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:175 msgid "plugins" msgstr "plugins" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:184 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:184 msgid "" "\n" "Customization: " @@ -5519,19 +5562,19 @@ msgstr "" "\n" "Personalizzazione: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:199 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:199 msgid "General" msgstr "Generale" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:200 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:200 msgid "Interface" msgstr "Interfaccia" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:201 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:201 msgid "Conversion" msgstr "Conversione" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:202 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:202 msgid "" "Email\n" "Delivery" @@ -5539,15 +5582,15 @@ msgstr "" "Invio per \n" "email" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:203 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:203 msgid "Add/Save" msgstr "Aggiungi/Salva" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:204 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:204 msgid "Advanced" msgstr "Avanzate" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:205 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:205 msgid "" "Content\n" "Server" @@ -5555,23 +5598,23 @@ msgstr "" "Server dei\n" "contenuti" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:206 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:206 msgid "Plugins" msgstr "Plug-in" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:230 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:230 msgid "Auto send" msgstr "Invio automatico" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:230 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:230 msgid "Email" msgstr "Posta elettronica" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:235 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:235 msgid "Formats to email. The first matching format will be sent." msgstr "Formati per email. Verrà inviato il primo formato compatibile." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:236 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:236 msgid "" "If checked, downloaded news will be automatically mailed
    to this email " "address (provided it is in one of the listed formats)." @@ -5580,55 +5623,55 @@ msgstr "" "questo indirizzo di posta elettronica (presupposto che ce ne sia uno " "indicato nella lista delle opzioni)." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:310 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:310 msgid "new email address" msgstr "nuovo indirizzo di posta elettronica." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:492 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:492 msgid "Wide" msgstr "Largo" -#: /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 "Narrow" msgstr "Stretto" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:502 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:502 msgid "Medium" msgstr "Media" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:502 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:502 msgid "Small" msgstr "Piccola" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:503 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:503 msgid "Large" msgstr "Grande" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:509 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:509 msgid "Always" msgstr "Sempre" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:509 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:509 msgid "Automatic" msgstr "Automatico" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:510 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:510 msgid "Never" msgstr "Mai" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:524 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:534 msgid "Done" msgstr "Completato" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:525 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:535 msgid "Confirmation dialogs have all been reset" msgstr "I dialoghi di conferma sono stati ripristinati" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:530 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:540 msgid "System port selected" msgstr "Porta di sistema selezionata" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:531 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:541 msgid "" "The value %d you have chosen for the content server port is a system " "port. Your operating system may not allow the server to run on this " @@ -5639,111 +5682,124 @@ msgstr "" "server di funzionare su questa porta. Per essere sicuri selezionare un " "numero di porta maggiore di 1024." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:561 msgid "Failed to install command line tools." msgstr "Impossibile installare gli strumenti a riga di comando." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:554 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:564 msgid "Command line tools installed" msgstr "Strumenti per i comandi di linea installati" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:555 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:565 msgid "Command line tools installed in" msgstr "Strumenti per i comandi di linea installati in" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:556 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:566 msgid "" "If you move calibre.app, you have to re-install the command line tools." msgstr "" "Se calibre.app viene spostato, sarà necessario reinstallare anche gli " "strumenti a riga di comando." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:607 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:617 msgid "No valid plugin path" msgstr "Percorso del plugin non valido" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:608 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:618 msgid "%s is not a valid plugin path" msgstr "%s non è un percorso di plugin valido" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:611 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:621 msgid "Choose plugin" msgstr "Selezionare plugin" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:623 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:633 msgid "Plugin cannot be disabled" msgstr "Il plugin non può essere disattivato" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:624 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:634 msgid "The plugin: %s cannot be disabled" msgstr "Il plugin: %s non può essere disattivato" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:633 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:643 msgid "Plugin not customizable" msgstr "Plugin non personalizzabile" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:634 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:644 msgid "Plugin: %s does not need customization" msgstr "Plugin: %s non richiede personalizzazione" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:642 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:652 msgid "Customize" msgstr "Personalizzazione" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:680 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:690 msgid "Cannot remove builtin plugin" msgstr "Impossibile rimuovere un plugin incorporato" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:681 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:691 msgid " cannot be removed. It is a builtin plugin. Try disabling it instead." msgstr "" " Impossibile rimuoverlo. Questo è un plugin incorporato. Provare invece a " "disattivarlo." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:712 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:707 +msgid "Invalid tweaks" +msgstr "Miglioramenti non validi" + +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:708 +msgid "" +"The tweaks you entered are invalid, try resetting the tweaks to default and " +"changing them one by one until you find the invalid setting." +msgstr "" +"I miglioramenti inseriti non sono validi, provare a ripristinare quelli " +"predefiniti e cambiarli uno per volta fino a trovare l'impostazione non " +"valida." + +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:738 msgid "You must select a column to delete it" msgstr "Selezionare una colonna da eliminare" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:717 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:743 msgid "The selected column is not a custom column" msgstr "La colonna selezionata non è una colonna personalizzata" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:718 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:48 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:744 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/confirm_delete_ui.py:48 msgid "Are you sure?" msgstr "Si è sicuri?" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:719 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:745 msgid "Do you really want to delete column %s and all its data?" msgstr "Eliminare veramente la colonna %s e tutti i sui dati?" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:786 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:812 msgid "Error log:" msgstr "Log degli errori:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:793 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:819 msgid "Access log:" msgstr "File di log degli accessi:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:821 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:318 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:847 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:318 msgid "Failed to start content server" msgstr "Avvio del server dei contenuti fallito" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:846 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:872 msgid "Invalid size" msgstr "Dimensione non valida" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:847 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:873 msgid "The size %s is invalid. must be of the form widthxheight" msgstr "" "La dimensione %s non è valida. Deve essere nella forma larghezzaxaltezza" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:908 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:936 msgid "Must restart" msgstr "Necessario riavviare" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:909 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:937 msgid "" "The changes you made require that Calibre be restarted. Please restart as " "soon as practical." @@ -5751,19 +5807,19 @@ msgstr "" "Le modifiche effettuate richiedono il riavvio di Calibre. Riavviare il prima " "possibile." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:943 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:971 msgid "Checking database integrity" msgstr "Controllo d'integrità del database" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:963 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:991 msgid "Failed to check database integrity" msgstr "Controllo d'integrità del database fallito" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:968 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:996 msgid "Some inconsistencies found" msgstr "Sono stati trovati problemi di consistenza" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:969 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:997 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 " @@ -5775,11 +5831,11 @@ msgstr "" "controllarli manualmente. Questo problema può sorgere se i documenti nella " "cartella della biblioteca vengono modificati direttamente." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:133 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:133 msgid "TabWidget" msgstr "Assistente per i TAB" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:134 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:134 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 " @@ -5789,11 +5845,11 @@ msgstr "" "vengono aggiunti. calibre può leggere i metadati dai contenuti del documento " "o dal suo nome." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:135 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:135 msgid "Read metadata only from &file name" msgstr "Leggi i metadati solo dal nome del &file" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:136 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:136 msgid "" "Swap the firstname and lastname of the author. This affects only metadata " "read from file names." @@ -5801,11 +5857,11 @@ msgstr "" "Inverti nome e cognome dell'autore. Questo influisce esclusivamente sui " "metadati letti dai nomi dei files." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:137 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:137 msgid "&Swap author firstname and lastname" msgstr "&Inverti i nomi e i cognomi dell'autore" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:138 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:138 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" @@ -5823,7 +5879,7 @@ msgstr "" "Il contronto del titolo ignora gli articoli (\"il\", \"un\", \"una\"), la " "punteggiatura, la dimensione, ecc. L'autore viene confrontato interamente." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:142 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:142 msgid "" "If books with similar titles and authors found, &merge the new files " "automatically" @@ -5831,15 +5887,15 @@ msgstr "" "Se vengono trovati libri con titoli e autori simili, &unisci i nuovi file " "automaticamente" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:143 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:143 msgid "&Configure metadata from file name" msgstr "&Configura i metadati dal nome del documento" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:144 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:144 msgid "&Adding books" msgstr "&Aggiunta libri" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:145 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:145 msgid "" "Here you can control how calibre will save your books when you click the " "Save to Disk button:" @@ -5847,60 +5903,60 @@ msgstr "" "Qui è possibile controllare come calibre salva i libri quando si fa clic su " "pulsante «Salva su disco»:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:146 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:146 msgid "Save &cover separately" msgstr "Salva la &copertina separatamente" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:147 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:147 msgid "Update &metadata in saved copies" msgstr "Aggiorna &metadati nelle copie salvate" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:148 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:148 msgid "Save metadata in &OPF file" msgstr "Salva i metadati nei file &OPF" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:149 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:149 msgid "Convert non-English characters to &English equivalents" msgstr "" "Conversione dei caratteri non anglofoni nei loro corrispondenti &inglesi" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:150 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:150 msgid "Format &dates as:" msgstr "Formattato &date:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:151 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:151 msgid "File &formats to save:" msgstr "&Formato dei documenti da salvare:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:152 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:152 msgid "Replace space with &underscores" msgstr "Sostituire gli spazi con &sottolineature" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:153 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:153 msgid "Change paths to &lowercase" msgstr "Cambiare percorsi in &minuscolo" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:154 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:154 msgid "&Saving books" msgstr "&Salvataggio libri" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:155 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:155 msgid "Metadata &management:" msgstr "Gestione &metadati:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:156 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:156 msgid "Manual management" msgstr "Gestione manuale" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:157 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:157 msgid "Only on send" msgstr "Solo all'invio" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:158 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:158 msgid "Automatic management" msgstr "Gestione automatica" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:159 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:159 msgid "" "

  • Manual Management: Calibre updates the metadata and adds " "collections only when a book is sent. With this option, calibre will never " @@ -5919,7 +5975,7 @@ msgstr "" "sincronizzati i metadata sul dispositivo con la biblioteca di calibre ad " "ogni collegamento
  • " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:162 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:162 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 " @@ -5930,34 +5986,34 @@ msgstr "" "sovrascritte per ogni dispositivo personalizzando il plugin di controllo dei " "dispositivi in Preferenze->Plugins" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:163 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:163 msgid "Sending to &device" msgstr "Invio al &dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:474 -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:616 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:201 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:584 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:474 +#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:616 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:201 msgid "Preferences" msgstr "Preferenze" -#: /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:585 msgid "Show notification when &new version is available" msgstr "&Visualizza un avvertimento quando è disponibile una nuova versione" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:586 msgid "Download &social metadata (tags/ratings/etc.) by default" msgstr "Scarica i metadati &sociali (tag, valutazioni, etc.) automaticamente" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:587 msgid "&Overwrite author and title by default when fetching metadata" msgstr "&Sovrascrivi autore e titolo quando si scaricano i metadati" -#: /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:588 msgid "Default network &timeout:" msgstr "&Timeout predefinito della rete:" -#: /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:589 msgid "" "Set the default timeout for network fetches (i.e. anytime we go out to the " "internet to get information)" @@ -5965,150 +6021,150 @@ msgstr "" "Imposta il timeout predefinito per gli scaricamenti dalla rete (cioè ogni " "volta che si usa Internet per prelevare informazioni)" -#: /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:590 msgid " seconds" msgstr " secondi" -#: /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:591 msgid "Choose &language (requires restart):" msgstr "Ling&ua (richiede riavvio):" -#: /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:592 msgid "Normal" msgstr "Normale" -#: /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:593 msgid "High" msgstr "Massima" -#: /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:594 msgid "Low" msgstr "Minima" -#: /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:595 msgid "Job &priority:" msgstr "&Priorità dei lavori:" -#: /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:596 msgid "Preferred &output format:" msgstr "Formato preferito per l'&output:" -#: /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:597 msgid "Reset all disabled &confirmation dialogs" msgstr "Ripristina tutti i dialoghi di &conferma disattivati" -#: /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:598 msgid "Preferred &input format order:" msgstr "Ordine dei formati preferiti per l'&input:" -#: /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:601 msgid "Use &Roman numerals for series number" msgstr "&Usa numeri romani per i numeri di serie" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:602 msgid "Enable system &tray icon (needs restart)" msgstr "Visualizza l'&icona nell'area di notifica (richiede riavvio)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:603 msgid "Show ¬ifications in system tray" msgstr "Visualizza le ¬ifiche nella barra di sistema" -#: /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:604 msgid "Show &splash screen at startup" msgstr "Visualizza lo &splash screen all'avvio" -#: /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:605 msgid "Show cover &browser in a separate window (needs restart)" msgstr "Visualizza le &copertine in una finestra separata (richiede riavvio)" -#: /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:606 msgid "Show &average ratings in the tags browser" msgstr "Visualizza la &media delle valutazioni nel browser dei tag" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:607 msgid "Search as you type" msgstr "Cerca mentre si scrive" -#: /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:608 msgid "Automatically send downloaded &news to ebook reader" msgstr "Invia automaticamente le noti&zie scaricate al lettore" -#: /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:609 msgid "&Delete news from library when it is automatically sent to reader" msgstr "" "&Rimuovi le notizie dalla biblioteca dopo averle inviate automaticamente al " "dispositivo" -#: /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:610 msgid "&Number of covers to show in browse mode (needs restart):" msgstr "" "&Numero di copertine da visualizzare in modalità sfoglia (richiede riavvio):" -#: /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:611 msgid "Select visible &columns in library view" msgstr "Selezionare le &colonne visibili nella vista biblioteca" -#: /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:613 msgid "Remove a user-defined column" msgstr "Elimina una colonna personalizzata" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:567 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:615 msgid "Add a user-defined column" msgstr "Aggiungi una colonna personalizzata" -#: /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:617 msgid "Edit settings of a user-defined column" msgstr "Modifica le opzioni di una colonna personalizzata" -#: /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:620 msgid "Use internal &viewer for:" msgstr "Utilizzare il &visualizzatore interno per:" -#: /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:621 msgid "User Interface &layout (needs restart):" msgstr "&Aspetto interfaccia grafica (richiede riavvio):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:574 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:622 msgid "Disable all animations. Useful if you have a slow/old computer." msgstr "Disattiva tutte le animazioni. Utile per i computer più lenti." -#: /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:623 msgid "Disable &animations" msgstr "Disattiva le &animazioni" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:576 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:624 msgid "Show &donate button (restart)" msgstr "Mostra pulsante &donazioni (richiede riavvio)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:577 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:625 msgid "&Toolbar" msgstr "&Barra degli Strumenti" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:578 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:626 msgid "&Icon size:" msgstr "Dimensione &icone:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:579 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:627 msgid "Show &text under icons:" msgstr "Mostra &testo sotto le icone:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:580 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:628 msgid "Add an email address to which to send books" msgstr "Aggiungi un indirizzo di posta elettronica a cui inviare i libri" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:581 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:629 msgid "&Add email" msgstr "&Aggiungi email" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:582 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:630 msgid "Make &default" msgstr "Crea &default" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:583 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:631 msgid "&Remove email" msgstr "&Elimina email" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:584 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:632 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-" @@ -6118,33 +6174,61 @@ msgstr "" "email saranno automaticamente inviate per ogni notizia scaricata a tutti gli " "indirizzi email a cui hai abilitato l'invio automatico" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:585 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:633 msgid "&Maximum number of waiting worker processes (needs restart):" -msgstr "Numero &massimo di processi in attesa (richiede riavvio):" +msgstr "Numero &massimo di lavori in attesa (richiede riavvio):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:586 -msgid "&Check database integrity" -msgstr "&Controllo d'integrità del database" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:587 -msgid "&Install command line tools" -msgstr "&Installa gli strumenti per i comandi di linea" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:588 -msgid "Open calibre &configuration directory" -msgstr "Apri la cartella per la &configurazione di Calibre" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:589 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:634 msgid "Limit the max. simultaneous jobs to the available CPU &cores" msgstr "" "Limita il massimo numero di lavori simultanei al numero dei &processori " "disponibili" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:590 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:635 msgid "Debug &device detection" msgstr "&Debug e riconoscimento dei dispositivi" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:591 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:636 +msgid "&Check database integrity" +msgstr "&Controllo d'integrità del database" + +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:637 +msgid "Open calibre &configuration directory" +msgstr "Apri la cartella per la &configurazione di Calibre" + +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:638 +msgid "&Install command line tools" +msgstr "&Installa gli strumenti per i comandi di linea" + +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:639 +msgid "&Miscellaneous" +msgstr "&Varie" + +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:640 +msgid "" +"Values for the tweaks are shown below. Edit them to change the behavior of " +"calibre" +msgstr "" +"I valori per i miglioramenti sono mostrati di seguito. Modificarli per " +"cambiare il comportamento di calibre" + +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:641 +msgid "All available tweaks" +msgstr "Tutti i miglioramenti disponibili" + +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:642 +msgid "&Current tweaks" +msgstr "Miglioramenti &attuali" + +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:643 +msgid "&Restore to defaults" +msgstr "&Ripristina predefiniti" + +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:644 +msgid "&Tweaks" +msgstr "&Miglioramenti" + +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:645 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 " @@ -6154,25 +6238,25 @@ msgstr "" "usando un browser in qualunque parte del mondo. Qualsiasi cambiamento nella " "configurazione verrà attivato solo dopo il riavvio del server." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:592 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:646 msgid "Server &port:" msgstr "&Porta del server:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:593 -#: /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:647 +#: /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 "&Nome utente:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:594 -#: /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:648 +#: /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 "&Password:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:595 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:649 msgid "" "If you leave the password blank, anyone will be able to access your book " "collection using the web interface." @@ -6180,7 +6264,7 @@ msgstr "" "Se si lascia la password in bianco, chiunque potrà accedere alla propria " "collezione di libri utilizzando l'interfaccia web." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:596 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:650 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " @@ -6188,46 +6272,46 @@ msgstr "" "La dimensione massima (larghezzaxaltezza) per le copertine visualizzate. Le " "copertine più larghe vengono ridimensionate. " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:597 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:651 msgid "Max. &cover size:" msgstr "Dimensi&one massima copertina:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:598 -#: /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:652 +#: /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 "&Mostra password" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:599 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:653 msgid "Max. &OPDS items per query:" msgstr "Massimo elementi &OPDS per richiesta:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:600 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:654 msgid "Max. OPDS &ungrouped items:" msgstr "Elementi OPDS &sparsi massimi:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:601 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:655 msgid "&Start Server" msgstr "&Avvia il server" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:602 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:656 msgid "St&op Server" msgstr "&Ferma il server" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:603 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:657 msgid "&Test Server" msgstr "&Test sul server" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:604 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:658 msgid "Run server &automatically on startup" msgstr "Avvia a&utomaticamente il server all'apertura" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:605 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:659 msgid "View &server logs" msgstr "Visualizza i file di l&og del server" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:606 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:660 +#: /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" @@ -6243,7 +6327,7 @@ msgstr "" "come un nuovo catalogo sull'iPhone. In questo caso myhostname è l'host o " "l'indirizzo IP del computer su cui calibre è attivo." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:608 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:662 msgid "" "Here you can customize the behavior of Calibre by controlling what plugins " "it uses." @@ -6251,133 +6335,133 @@ msgstr "" "Qui è possibile personalizzare le funzioni di Calibre modificando quali " "plugin sono usati dal programma." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:609 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:663 msgid "Enable/&Disable plugin" msgstr "Attiva/Disattiva il &plugin" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:610 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:664 msgid "&Customize plugin" msgstr "&Configura il plugin" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:611 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:665 msgid "&Remove plugin" msgstr "&Rimuovi il plugin" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:612 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:666 msgid "Add new plugin" msgstr "Aggiungi un nuovo plugin" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:613 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:667 msgid "Plugin &file:" msgstr "Plugin &file:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:615 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:669 msgid "&Add" msgstr "&Aggiungi" -#: /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 "Crea colonne basate sui tag" -#: /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 "Parola chiave" -#: /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 "Titolo colonna" -#: /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 "Tipo di colonna" -#: /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 "Usa parentesi" -#: /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 "I valori possono essere modificati" -#: /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 "Testo" -#: /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 "Numero" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:137 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:31 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:69 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:889 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:542 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:137 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:31 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:69 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:889 +#: /home/kovid/work/trunk/src/calibre/library/server/opds.py:549 msgid "Date" msgstr "Data" -#: /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 "Tag del libro" -#: /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 "Testo di spiegazione aggiunto in create_ct_column.py" -#: /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 "Crea e modifica colonne basate sul tag" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:19 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:19 msgid "Text, column shown in the tag browser" msgstr "Testo, colonna visualizzata nel browser dei tag" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:22 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:22 msgid "Comma separated text, like tags, shown in the tag browser" msgstr "" "Testo separato da vrigole, come i tag, visualizzato nel browser dei tag" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:25 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:25 msgid "Long text, like comments, not shown in the tag browser" msgstr "Testo esteso, come i commenti, non visualizzato nel browser dei tag" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:28 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:28 msgid "Text column for keeping series-like information" msgstr "Colonna testuale per mantenere informazioni sulle serie" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:33 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:33 msgid "Floating point numbers" msgstr "Numeri in virgola mobile" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:35 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:35 msgid "Integers" msgstr "Interi" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:37 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:37 msgid "Ratings, shown with stars" msgstr "Votazione, visualizza con le stelle" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:40 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:40 msgid "Yes/No" msgstr "Sì/no" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:69 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:69 msgid "No column selected" msgstr "Nessuna colonna selezionata" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:70 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:70 msgid "No column has been selected" msgstr "Non è stata selezionata nessuna colonna" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:74 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:74 msgid "Selected column is not a user-defined column" msgstr "La colonna selezionata non è una colonna personalizzata" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:105 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:105 msgid "No lookup name was provided" msgstr "Non è stata fornita alcuna parola chiave" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:107 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:107 msgid "" "The label must contain only letters, digits and underscores, and start with " "a letter" @@ -6385,60 +6469,60 @@ msgstr "" "L'etichetta può contenere sono lettere, numeri e underscore, e deve iniziare " "con una lettera" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:116 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:116 msgid "No column heading was provided" msgstr "Nessun titolo per la colonna specificato" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:122 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:122 msgid "The lookup name %s is already used" msgstr "La parola chiave %s è già in uso" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:132 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:132 msgid "The heading %s is already used" msgstr "Il titolo %s è già in uso" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:134 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column.py:134 msgid "" "The lookup name must be lower case and cannot contain \":\"s or spaces" msgstr "" "La parola chiave deve essere composta da lettere minuscole e non può " "contentere \":\" o spazi" -#: /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 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:101 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:117 msgid "Create or edit custom columns" msgstr "Crea o modifica colonne personalizzate" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:102 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:102 msgid "&Lookup name" msgstr "&Parola chiave" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:103 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:103 msgid "Column &heading" msgstr "&Titolo colonna" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:104 +#: /home/kovid/work/trunk/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 "" "Usato per cercare la colonna. Può contere solo numberi e lettere minuscole." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:105 +#: /home/kovid/work/trunk/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 "" "Titolo colonne nella vista biblioteca e nome categoria nel browser dei tag" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:106 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:106 msgid "Column &type" msgstr "&Tipo di colonna" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:107 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:107 msgid "What kind of information will be kept in the column." msgstr "Che tipo di informazione verrà mantenuto nella colonna." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:108 +#: /home/kovid/work/trunk/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" @@ -6456,43 +6540,43 @@ msgstr "" "
  • dd MMMM yy diventa 05 Gen 10
  • \n" " " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:114 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:114 msgid "Use MMM yyyy for month + year, yyyy for year only" msgstr "Usare MMM yyyy per il mese + anno, yyyy solamente per l'anno" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:115 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:115 msgid "Default: dd MMM yyyy." msgstr "Predefinito: dd MMM yyyy." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:116 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:116 msgid "Format for &dates" msgstr "Formato per le &date" -#: /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 "Ottieni le informazioni di debug" -#: /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 "&Copia negli appunti" -#: /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 "Debug riconoscimento dispositivi" -#: /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 "Modello non valido" -#: /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 "Il modello %s non è valido:" -#: /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 "Salva &template" -#: /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 " @@ -6506,23 +6590,23 @@ msgstr "" "Se un libro non avesse metadati, le variabili verrannon sostituite da una " "stringa vuota." -#: /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 "Variabili disponibili:" -#: /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 "Scaricamento dei metadati sociali, attendere..." -#: /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 "&Visualizza ancora questa avvertenza" -#: /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 "ERRORE" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:67 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/delete_matching_from_device.py:67 msgid "" "All checked books will be permanently deleted from your device. " "Please verify the list." @@ -6530,72 +6614,94 @@ msgstr "" "Tutti i libri selezionati verranno definitivamente eliminati dal " "dispositivo. Controllare la lista." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 msgid "Location" msgstr "Posizione" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 +#: /home/kovid/work/trunk/src/calibre/gui2/library/models.py:1064 msgid "Format" msgstr "Formato" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device_ui.py:50 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/delete_matching_from_device_ui.py:50 msgid "Delete from device" msgstr "Elimina dal dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:33 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/edit_authors_dialog.py:33 msgid "Author sort" msgstr "Ordinamento per autore" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:47 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:66 msgid "Manage authors" msgstr "Gestione autori" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:60 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:67 +msgid "Sort by author" +msgstr "Ordina per autore" + +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:68 +msgid "Sort by author sort" +msgstr "Ordina per ordine autore" + +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:69 +msgid "" +"Reset all the author sort values to a value automatically generated from the " +"author. Exactly how this value is automatically generated can be controlled " +"via Preferences->Advanced->Tweaks" +msgstr "" +"Ripristina tutti i valori di ordinamento autore ad un valore generato " +"automaticamente dall'autore. La generazione di questo valore può essere " +"controllata da «Preferenze->Avanzate->Miglioramenti»" + +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:70 +msgid "Recalculate all author sort values" +msgstr "Ricalcola tutti i valori di ordinamento autore" + +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:60 msgid "Author Sort" msgstr "Classificazione autore" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:62 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:62 msgid "ISBN" msgstr "ISBN" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:162 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:162 msgid "Finding metadata..." msgstr "Ricerca metadati..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:176 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:176 msgid "Could not find metadata" msgstr "Impossibile trovare i metadati" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:177 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:177 msgid "The metadata download seems to have stalled. Try again later." msgstr "" "Sembra che lo scaricamento dei metadati si sia bloccato. Riprovare più tardi." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:186 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:186 msgid "Warning" msgstr "Avvertenza" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:187 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:187 msgid "Could not fetch metadata from:" msgstr "Impossibile recuperare i metadati da:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:191 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:191 msgid "No metadata found" msgstr "Nessun metadato trovato" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:192 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:192 msgid "" "No metadata found, try adjusting the title and author or the ISBN key." msgstr "" "Nessun metadato trovato, provare ad aggiustare il titolo e l'autore o il " "codice ISBN." -#: /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 "Scarica metadati" -#: /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 " @@ -6607,73 +6713,73 @@ msgstr "" "registrarsi per un account gratuito e " "immettere la vostra chiave d'accesso qui sotto." -#: /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 "&Chiave d'accesso:" -#: /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 "Scarica" -#: /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 "Corrispondenze" -#: /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 "" "Selezionare il libro che corrisponde maggiormente alla propria copia " "dall'elenco sottostante" -#: /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 "" "Scaricare i &social metadati (tag, valutazioni, etc) per il libro selezionato" -#: /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 "" "Sovrascrivi autore e titolo con l'autore e il titolo del libro selezionato" -#: /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 "Dettagli del lavoro" -#: /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 "Lavori attivi" -#: /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 "&Interrompi il lavoro selezionato" -#: /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 "Mostra i &dettagli del lavoro" -#: /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 non device jobs" msgstr "Ferma &tutti i lavori non legati al dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:24 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk.py:24 msgid "Editing meta information for %d books" msgstr "Modifica metadati per %d libri" -#: /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:157 msgid "Edit Meta information" msgstr "Modifica metadati" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:159 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:159 msgid "A&utomatically set author sort" msgstr "Imposta a&utomaticamente la Classificazione autore" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:160 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:160 msgid "Author s&ort: " msgstr "Author s&ort: " -#: /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:363 +#: /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:368 msgid "" "Specify how the author(s) of this book should be sorted. For example Charles " "Dickens should be sorted as Dickens, Charles." @@ -6682,55 +6788,55 @@ msgstr "" "esempio, Alessandro Manzoni deve essere classificato come Manzoni, " "Alessandro." -#: /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:366 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:162 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:371 msgid "&Rating:" msgstr "&Valutazione:" -#: /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:367 -#: /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:163 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:164 +#: /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 "Rating of this book. 0-5 stars" msgstr "Valutazione di questo libro. 0-5 stelle" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:165 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:165 msgid "No change" msgstr "Nessuna modifica" -#: /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:369 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:166 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:374 msgid " stars" msgstr " stelle" -#: /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:168 msgid "Add ta&gs: " msgstr "Aggiungi ta&gs: " -#: /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:373 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:170 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:171 +#: /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:379 msgid "Open Tag Editor" msgstr "Apri l'editor dei tag" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:172 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:172 msgid "&Remove tags:" msgstr "&Rimuovi tag:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:173 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:173 msgid "Comma separated list of tags to remove from the books. " msgstr "Lista separata da virgole dei tag da rimuovere dal libro " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:177 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:177 msgid "Remove &format:" msgstr "Cancella for&mato:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:178 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:178 msgid "&Swap title and author" msgstr "&Scambia titolo e autore" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:179 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:179 msgid "" "Selected books will be automatically numbered,\n" "in the order you selected them.\n" @@ -6742,7 +6848,7 @@ msgstr "" "Quindi se è stato selezionato prima A e poi B,\n" "il libro A avrà numero di serie 1 e B numero di serie 2." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:184 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:184 msgid "" "Remove stored conversion settings for the selected books.\n" "\n" @@ -6753,377 +6859,404 @@ msgstr "" "Per le prossime conversioni di questi libri verranno usate le impostazioni " "predefinite." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:187 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:187 msgid "Remove &stored conversion settings for the selected books" msgstr "Elimina le impostazioni di &conversione per i libri selezionati" -#: /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:403 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:188 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:410 msgid "&Basic metadata" msgstr "Metadati &principali" -#: /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:404 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:189 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:411 msgid "&Custom metadata" msgstr "Metadati &aggiuntivi" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:90 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:94 msgid "Last modified: %s" msgstr "Ultima modifica: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:131 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:135 msgid "Not a valid picture" msgstr "L'immagine non ee valida" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:144 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:150 +msgid "Specify title and author" +msgstr "Specificare titolo e autore" + +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:151 +msgid "You must specify a title and author before generating a cover" +msgstr "" +"È necessario specificare un titolo e un autore prima di generare una " +"copertina" + +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:163 msgid "Choose formats for " msgstr "Selezionare formati per: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:175 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:194 msgid "No permission" msgstr "Non ci sono privilegi" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:176 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:195 msgid "You do not have permission to read the following files:" msgstr "Non hai privilegi per leggere i documenti indicati:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:203 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:204 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:222 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:223 msgid "No format selected" msgstr "Nessun formato selezionato" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:215 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:234 msgid "Could not read metadata" msgstr "Impossibile leggere i metadati" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:216 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:235 msgid "Could not read metadata from %s format" msgstr "Impossibile leggere i metadati dai formati %s" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:264 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:270 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:283 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:289 msgid "Could not read cover" msgstr "Impossibile visualizzare la copertina" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:265 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:284 msgid "Could not read cover from %s format" msgstr "Impossibile visualizzare la copertina con formato %s" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:271 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:290 msgid "The cover in the %s format is invalid" msgstr "La copertina nel formato %s non è valida." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:308 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:327 msgid "Abort the editing of all remaining books" msgstr "Interrompere la modifica di tutti i libri rimanenti" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:445 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:450 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:465 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:470 msgid "This ISBN number is valid" msgstr "Questo numero ISBN è valido" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:453 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:473 msgid "This ISBN number is invalid" msgstr "Questo numero ISBN è valido" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:532 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:552 msgid "Cannot use tag editor" msgstr "Impossibile utilizzare l'editor di tag" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:533 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:553 msgid "The tags editor cannot be used if you have modified the tags" msgstr "Non si può utilizzare l'editor di tag se i tag sono stati modificati" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:553 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:573 msgid "Downloading cover..." msgstr "Scaricamento della copertina..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:565 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:570 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:576 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:585 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:590 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:596 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:601 msgid "Cannot fetch cover" msgstr "Impossibile scaricare la copertina" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:566 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:577 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:586 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:597 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:602 msgid "Could not fetch cover.
    " msgstr "Impossibile scaricare la copertina
    " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:567 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:587 msgid "The download timed out." msgstr "Il tempo di scaricamento è scaduto." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:571 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:591 msgid "Could not find cover for this book. Try specifying the ISBN first." msgstr "" "Impossibile trovare una copertina per questo libro. Provare prima a " "specificare il codice ISBN." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:583 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:603 +msgid "" +"For the error message from each cover source, click Show details below." +msgstr "" +"Per il messaggio di errore di ogni sorgente di copertine, fare clic su " +"«Mostra dettagli»." + +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:610 msgid "Bad cover" msgstr "Copertina inutilizzabile" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:584 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:611 msgid "The cover is not a valid picture" msgstr "La copertina non è un'immagine valida." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:617 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:644 msgid "There were errors" msgstr "Si sono verificati errori" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:618 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:645 msgid "There were errors downloading social metadata" msgstr "Si sono verificati errori nello scaricamento dei metadati sociali" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:647 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:674 msgid "Cannot fetch metadata" msgstr "Impossibile scaricare i metadati" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:648 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:675 msgid "You must specify at least one of ISBN, Title, Authors or Publisher" msgstr "" "Dovete specificare alemno uno fra codice ISBN, titolo, autore o editore" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:723 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:750 msgid "Permission denied" msgstr "Permesso negato" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:724 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:751 msgid "Could not open %s. Is it being used by another program?" msgstr "Impossibile aprire %s. Potrebbe essere in uso da un altro programma." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:355 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:360 msgid "Edit Meta Information" msgstr "Modifica metadati" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:356 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:361 msgid "Meta information" msgstr "Metadati" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:359 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:364 msgid "Swap the author and title" msgstr "Scambia titolo e autore" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:367 msgid "Author S&ort: " msgstr "&Classificazione autore: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:364 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:369 msgid "" "Automatically create the author sort entry based on the current author entry" msgstr "" "Crea automaticamente la voce Classificazione autore basandosi sul contenuto " "del campo Autore." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:378 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:383 msgid "Remove unused series (Series that have no books)" msgstr "Rimuovi le serie inutilizzate (che non hanno libri)" -#: /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:385 msgid "IS&BN:" msgstr "IS&BN:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:381 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:386 msgid "Publishe&d:" msgstr "&Pubblicato:" -#: /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:389 msgid "dd MMM yyyy" msgstr "gg MMM aaaa" -#: /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:390 msgid "&Date:" msgstr "&data" -#: /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:391 msgid "&Comments" msgstr "&Commenti" -#: /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:392 msgid "&Fetch metadata from server" msgstr "&Recupera i metadati dal server" -#: /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:393 msgid "Available Formats" msgstr "Formati disponibili" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:389 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:394 msgid "Add a new format for this book to the database" msgstr "Aggiungi un nuovo formato al database per questo libro" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:391 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:396 msgid "Remove the selected formats for this book from the database." msgstr "Cancella il formato selezionato dal database per questo libro" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:398 msgid "Set the cover for the book from the selected format" msgstr "Imposta la copertina del libro dal formato selezionato" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:395 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:400 msgid "Update metadata from the metadata in the selected format" msgstr "Aggiorna i metadati dai metadati del formato selezionato" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:400 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:405 msgid "Reset cover to default" msgstr "Ripristinare la copertina predefinita" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:402 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:407 msgid "Download &cover" msgstr "Scarica &copertina" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:56 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:408 +msgid "Generate a default cover based on the title and author" +msgstr "Genera una copertina predefinita basata sul titolo e l'autore" + +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:409 +msgid "&Generate cover" +msgstr "&Genera copertina" + +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/password_ui.py:56 msgid "Password needed" msgstr "Password necessaria" -#: /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 "Interruzione..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor.py:54 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/saved_search_editor.py:54 msgid "" "The current saved search will be permanently deleted. Are you sure?" msgstr "" "La ricerca corrente salvata verrà definitivamente cancellata. " "Continuare?" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:83 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/saved_search_editor_ui.py:83 msgid "Saved Search Editor" msgstr "Editor di ricerche salvate" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:84 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/saved_search_editor_ui.py:84 msgid "Saved Search: " msgstr "Ricerche salvate: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:85 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/saved_search_editor_ui.py:85 msgid "Select a saved search to edit" msgstr "Selezionare una ricerca salvata da modificare" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:86 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/saved_search_editor_ui.py:86 msgid "Delete this selected saved search" msgstr "Elimina la ricerca salvata selezionata" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:88 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/saved_search_editor_ui.py:88 msgid "Enter a new saved search name." msgstr "Inserire un nuovo nome per la ricerca salvata" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:89 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/saved_search_editor_ui.py:89 msgid "Add the new saved search" msgstr "Aggiungi una nuova ricerca salvata" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:91 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/saved_search_editor_ui.py:91 msgid "Change the contents of the saved search" msgstr "Cambia il contenuto della ricerca salvata" -#: /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 "É necessario usare un utente e password" -#: /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 "" "É necessario usare un nome utente e/o una password per questa sito di " "notizie." -#: /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 "Creato da: " -#: /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 "Ultimo scaricamento: mai" -#: /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 giorni, %d ore e %d minuti trascorsi" -#: /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 "Ultimo scaricamento" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:220 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:192 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:220 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:192 msgid "Schedule news download" msgstr "Programma lo scaricamento delle notizie" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:223 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:223 msgid "Add a custom news source" msgstr "Aggiungi una fonte di notizie personalizzata" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:228 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:228 msgid "Download all scheduled new sources" msgstr "Scarica tutte le nuove sorgenti programmate" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:328 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:328 msgid "No internet connection" msgstr "Nessuna connessione internet" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:329 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:329 msgid "Cannot download news as no internet connection is active" msgstr "Impossibile scaricare le notizie perché la connessione non è attiva" -#: /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 "Ricette" -#: /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 "La ricetta richiede l'uso di un utente e password" -#: /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 "Scarica &tutti i programmati" -#: /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 "trafiletto" -#: /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 "&Programma per lo scaricamento:" -#: /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 "Ogni " -#: /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 "giorno" -#: /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 "lunedì" -#: /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 "martedì" -#: /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 "mercoledì" -#: /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 "giovedì" -#: /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 "venerdì" -#: /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 "sabato" -#: /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 "domenica" -#: /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 "alle" -#: /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." @@ -7131,42 +7264,42 @@ msgstr "" "Intervallo a cui scaricaricare questa ricetta. Il valore zero significa che " "la formula verrà scaricata ogni ora." -#: /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 " giorni" -#: /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 "&Account" -#: /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 "" "Perché la programmazione funzioni, calibre deve essere in esecuzione." -#: /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 "&Programma" -#: /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 "Aggiungi &titolo come tag" -#: /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 "Tag &aggiuntivi:" -#: /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 "&Avanzato" -#: /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 "&Scarica ora" -#: /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." @@ -7174,19 +7307,19 @@ msgstr "" "Cancella le notizie più vecchie del numero di giorni specificato. Impostare " "a zero per disabilitare." -#: /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 "Elimina le notizie scaricate più vecchie di " -#: /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 "contiene" -#: /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 "Il testo da cercare. È interpretato come un'espressione regolare" -#: /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." @@ -7194,63 +7327,63 @@ msgstr "" "

    Nega questa corrispondenza. Restituisce soltanto i risultati che " "non corrispondono a questa ricerca" -#: /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 "Nega" -#: /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 "Ricerca avanzata" -#: /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 "Trova elementi che hanno..." -#: /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 "&Tutte queste parole:" -#: /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 "&Questa frase esatta:" -#: /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 "&Una o più di queste parole:" -#: /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 "Ma non visualizzare elementi che hanno..." -#: /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 "Una di queste parole non richie&ste:" -#: /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 "Tipo di corrispondenza da usare:" -#: /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 "Contiene: la parola o frase corrispondenti ovunque nei metadati" -#: /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 "" "Uguale: la parola o frase deve corrispondere esattamente nei metadati" -#: /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 "" "Espressione regolare: l'espressione deve corrispondere in qualunque punto " "dei metadati" -#: /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" @@ -7258,101 +7391,101 @@ msgstr "" "Vedere il Manuale d'uso per maggiori informazioni." -#: /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 "Seleziona i formati" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 -#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:80 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories.py:50 +#: /home/kovid/work/trunk/src/calibre/library/field_metadata.py:80 msgid "Authors" msgstr "Autori" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 -#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:111 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories.py:50 +#: /home/kovid/work/trunk/src/calibre/library/field_metadata.py:111 msgid "Publishers" msgstr "Editori" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:114 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories.py:114 msgid " (not on any book)" msgstr " (non su ogni libro)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:166 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories.py:166 msgid "" "The current tag category will be permanently deleted. Are you sure?" msgstr "" "La categoria di tag corrente verrà definitivamente eliminata. " "Continuare?" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:153 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:153 msgid "User Categories Editor" msgstr "Editor delle categorie utente" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:154 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:154 msgid "A&vailable items" msgstr "Elementi &disponibili" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:155 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:155 msgid "Apply tags to current tag category" msgstr "Applica i tag alla categoria di tag corrente" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:157 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:157 msgid "A&pplied items" msgstr "Elementi a&pplicati" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:158 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:158 msgid "Unapply (remove) tag from current tag category" msgstr "Togli il tag dalla categoria di tag corrente" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:160 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:160 msgid "Category name: " msgstr "Nome categoria: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:161 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:161 msgid "Select a category to edit" msgstr "Selezionare una categoria da modificare" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:162 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:162 msgid "Delete this selected tag category" msgstr "Elimina la categoria di tag selezionata" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:164 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:164 msgid "Enter a new category name. Select the kind before adding it." msgstr "" "Inserire il nome della nuova categoria. Selezionare il tipo prima di " "aggiungerla." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:165 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:165 msgid "Add the new category" msgstr "Aggiungi la nuova categoria" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:167 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:167 msgid "Category filter: " msgstr "Filtro categoria: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:168 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_categories_ui.py:168 msgid "Select the content kind of the new category" msgstr "Selezionare il tipo di contenuto della nuova categoria" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:68 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:105 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_editor.py:68 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor.py:105 msgid "Are your sure?" msgstr "Confermare?" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:69 +#: /home/kovid/work/trunk/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?" msgstr "Questi tag sono usati da uno o più libri. Eliminarli comunque?" -#: /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 "Editor di tag" -#: /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 "Tag &disponibili" -#: /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." @@ -7360,23 +7493,23 @@ msgstr "" "Rimuovi il tag dal database. Questa operazione rimuoverà il tag da tutti i " "libri e poi dal database" -#: /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 "Applica il tag al libro corrente" -#: /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 "&Tag applicati" -#: /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 "Rimuovi il tag dal libro corrente" -#: /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 "&Aggiungi tag:" -#: /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." @@ -7384,54 +7517,54 @@ msgstr "" "Se il tag voluto non è nella lista di quelli disponibili, è possibile " "aggiungerlo qui. Accetta una lista di tag separati da virgola" -#: /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 "Aggiungi il tag a quelli disponibili e applicalo al libro corrente" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:20 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor.py:20 msgid "%s (was %s)" msgstr "%s (era %s)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:500 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor.py:74 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:500 msgid "Item is blank" msgstr "L'elemento è vuoto" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:501 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor.py:75 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:501 msgid "An item cannot be set to nothing. Delete it instead." msgstr "" "Un elemento non può essere impostato a niente. Cancellarlo piuttosto." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:91 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor.py:91 msgid "No item selected" msgstr "Nessun elemento selezionato" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:92 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor.py:92 msgid "You must select one item from the list of Available items." msgstr "Selezionare un elemento dalla lista degli elementi disponibili." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:101 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor.py:101 msgid "No items selected" msgstr "Nessun elemento selezionato" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:102 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor.py:102 msgid "You must select at least one items from the list." msgstr "Selezionare almeno un elemento dalla lista." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:106 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor.py:106 msgid "Are you certain you want to delete the following items?" msgstr "Eliminare veramente i seguenti elementi?" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:72 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor_ui.py:72 msgid "Category Editor" msgstr "Editor di categoria" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:73 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor_ui.py:73 msgid "Items in use" msgstr "Elementi da usare" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:74 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor_ui.py:74 msgid "" "Delete item from database. This will unapply the item from all books and " "then remove it from the database." @@ -7439,139 +7572,139 @@ msgstr "" "Elimina l'elemento dal database. Questo toglierà l'elemento da tutti i libri " "e lo eliminerà dal database." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:76 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor_ui.py:76 msgid "Rename the item in every book where it is used." msgstr "Rinomina l'elemento in ogni libro dove è presente." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:78 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_list_editor_ui.py:78 msgid "Ctrl+S" msgstr "Ctrl+S" -#: /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 "Prova la configurazione della posta elettronica" -#: /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 "Invia un messaggio di prova da %s a:" -#: /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 "&Test" -#: /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 "Nessuna formula selezionata" -#: /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 "Il file allegato: %s è una formula per scaricare %s." -#: /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 "Ricetta per " -#: /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 "Passa alla modalità avanzata" -#: /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 "Passa alla modalità base" -#: /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 "Il feed deve avere un titolo" -#: /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 "Il feed deve avere un titolo" -#: /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 "Il feed deve avere una URL" -#: /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 "Il feed %s deve avere una URL" -#: /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 "Esiste già" -#: /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 "Questo feed è già stato aggiunto alla ricetta" -#: /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 "Input non valido" -#: /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 "

    Impossibile creare la ricetta. Errore:
    %s" -#: /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 "Sovrascrivere la ricetta?" -#: /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 "Esiste già una ricetta personalizzata di nome %s. Sovrascriverla?" -#: /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 "Prendi ricetta" -#: /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 "Prende la ricetta per personalizzarla" -#: /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 "Scegliere un file di ricetta" -#: /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 "Aggiungi una fonte di notizie personalizzata" -#: /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 "Ricette utente disponibili" -#: /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 "Aggiungi/Aggiorna &ricetta" -#: /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 "&Rimuovi ricetta" -#: /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 "&Condividi ricetta" -#: /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 "Personalizza &ricetta incorporata" -#: /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 "&Carica ricetta da file" -#: /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 "" "