merge from main branch
114
resources/calibre-portable.bat
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
@echo OFF
|
||||||
|
REM CalibreRun.bat
|
||||||
|
REM ~~~~~~~~~~~~~~
|
||||||
|
REM Batch File to start a Calibre configuration on Windows
|
||||||
|
REM giving explicit control of the location of:
|
||||||
|
REM - Calibe Program Files
|
||||||
|
REM - Calibre Library Files
|
||||||
|
REM - Calibre Config Files
|
||||||
|
REM - Calibre Metadata database
|
||||||
|
REM - Calibre Source files
|
||||||
|
REM By setting the paths correctly it can be used to run:
|
||||||
|
REM - A "portable calibre" off a USB stick.
|
||||||
|
REM - A network installation with local metadata database
|
||||||
|
REM (for performance) and books stored on a network share
|
||||||
|
REM
|
||||||
|
REM If trying to run off a USB stick then the following
|
||||||
|
REM folder structure is recommended:
|
||||||
|
REM - Calibre2 Location of program files
|
||||||
|
REM - CalibreConfig Location of Configuration files
|
||||||
|
REM - CalibreLibrary Location of Books and metadata
|
||||||
|
|
||||||
|
|
||||||
|
REM -------------------------------------
|
||||||
|
REM Set up Calibre Config folder
|
||||||
|
REM -------------------------------------
|
||||||
|
|
||||||
|
If EXIST CalibreConfig SET CALIBRE_CONFIG_DIRECTORY=%cd%\CalibreConfig
|
||||||
|
|
||||||
|
|
||||||
|
REM --------------------------------------------------------------
|
||||||
|
REM Specify Location of ebooks
|
||||||
|
REM
|
||||||
|
REM Location where Book files are located
|
||||||
|
REM Either set explicit path, or if running from a USB stick
|
||||||
|
REM a relative path can be used to avoid need to know the
|
||||||
|
REM drive letter of the USB stick.
|
||||||
|
|
||||||
|
REM Comment out any of the following that are not to be used
|
||||||
|
REM --------------------------------------------------------------
|
||||||
|
|
||||||
|
SET CALIBRE_LIBRARY_DIRECTORY=U:\eBOOKS\CalibreLibrary
|
||||||
|
IF EXIST CalibreLibrary SET CALIBRE_LIBRARY_DIRECTORY=%cd%\CalibreLibrary
|
||||||
|
IF EXIST CalibreBooks SET CALIBRE_LIBRARY_DIRECTORY=%cd%\CalibreBooks
|
||||||
|
|
||||||
|
|
||||||
|
REM --------------------------------------------------------------
|
||||||
|
REM Specify Location of metadata database (optional)
|
||||||
|
REM
|
||||||
|
REM Location where the metadata.db file is located. If not set
|
||||||
|
REM the same location as Books files will be assumed. This.
|
||||||
|
REM options is used to get better performance when the Library is
|
||||||
|
REM on a (slow) network drive. Putting the metadata.db file
|
||||||
|
REM locally gives a big performance improvement.
|
||||||
|
REM --------------------------------------------------------------
|
||||||
|
|
||||||
|
IF EXIST CalibreBooks SET SET CALIBRE_OVERRIDE_DATABASE_PATH=%cd%\CalibreBooks\metadata.db
|
||||||
|
IF EXIST CalibreMetadata SET CALIBRE_OVERRIDE_DATABASE_PATH=%cd%\CalibreMetadata\metadata.db
|
||||||
|
|
||||||
|
|
||||||
|
REM --------------------------------------------------------------
|
||||||
|
REM Specify Location of source (optional)
|
||||||
|
REM
|
||||||
|
REM It is easy to run Calibre from source
|
||||||
|
REM Just set the environment variable to where the source is located
|
||||||
|
REM When running from source the GUI will have a '*' after the version.
|
||||||
|
REM --------------------------------------------------------------
|
||||||
|
|
||||||
|
IF EXIST Calibre\src SET CALIBRE_DEVELOP_FROM=%cd%\Calibre\src
|
||||||
|
|
||||||
|
|
||||||
|
REM --------------------------------------------------------------
|
||||||
|
REM Specify Location of calibre binaries (optinal)
|
||||||
|
REM
|
||||||
|
REM To avoid needing Calibre to be set in the search path, ensure
|
||||||
|
REM that Calibre Program Files is current directory when starting.
|
||||||
|
REM The following test falls back to using search path .
|
||||||
|
REM This folder can be populated by cpying the Calibre2 folder from
|
||||||
|
REM an existing isntallation or by isntalling direct to here.
|
||||||
|
REM --------------------------------------------------------------
|
||||||
|
|
||||||
|
IF EXIST Calibre2 CD Calibre2
|
||||||
|
|
||||||
|
|
||||||
|
REM --------------------------------------------
|
||||||
|
REM Display settings that will be used
|
||||||
|
REM --------------------------------------------
|
||||||
|
|
||||||
|
echo PROGRAMS=%cd%
|
||||||
|
echo SOURCE=%CALIBRE_DEVELOP_FROM%
|
||||||
|
echo CONFIG=%CALIBRE_CONFIG_DIRECTORY%
|
||||||
|
echo LIBRARY=%CALIBRE_LIBRARY_DIRECTORY%
|
||||||
|
echo DATABASE=%CALIBRE_OVERRIDE_DATABASE_PATH%
|
||||||
|
|
||||||
|
REM The following gives a chance to check the settings before
|
||||||
|
REM starting Calibre. It can be commented out if not wanted.
|
||||||
|
|
||||||
|
echo "Press CTRL-C if you do not want to continue"
|
||||||
|
pause
|
||||||
|
|
||||||
|
|
||||||
|
REM --------------------------------------------------------
|
||||||
|
REM Start up the calibre program.
|
||||||
|
REM
|
||||||
|
REM The use of 'belownormal' priority helps keep the system
|
||||||
|
REM responsive while Calibre is running. Within Calibre itself
|
||||||
|
REM the backgound processes should be set to run with 'low' priority.
|
||||||
|
|
||||||
|
REM Using the START command starts up Calibre in a separate process.
|
||||||
|
REM If used without /WAIT opotion launches Calibre and contines batch file.
|
||||||
|
REM Use with /WAIT to wait until Calibre completes to run a task on exit
|
||||||
|
REM --------------------------------------------------------
|
||||||
|
|
||||||
|
echo "Starting up Calibre"
|
||||||
|
START /belownormal Calibre --with-library %CALIBRE_LIBRARY_DIRECTORY%
|
@ -44,7 +44,7 @@ bool_custom_columns_are_tristate = 'yes'
|
|||||||
# title within authors.
|
# title within authors.
|
||||||
sort_columns_at_startup = None
|
sort_columns_at_startup = None
|
||||||
|
|
||||||
# Format to be used for publication date
|
# Format to be used for publication date and the timestamp (date).
|
||||||
# A string controlling how the publication date is displayed in the GUI
|
# A string controlling how the publication date is displayed in the GUI
|
||||||
# d the day as number without a leading zero (1 to 31)
|
# d the day as number without a leading zero (1 to 31)
|
||||||
# dd the day as number with a leading zero (01 to 31)
|
# dd the day as number with a leading zero (01 to 31)
|
||||||
@ -59,8 +59,10 @@ sort_columns_at_startup = None
|
|||||||
# For example, given the date of 9 Jan 2010, the following formats show
|
# For example, given the date of 9 Jan 2010, the following formats show
|
||||||
# MMM yyyy ==> Jan 2010 yyyy ==> 2010 dd MMM yyyy ==> 09 Jan 2010
|
# MMM yyyy ==> Jan 2010 yyyy ==> 2010 dd MMM yyyy ==> 09 Jan 2010
|
||||||
# MM/yyyy ==> 01/2010 d/M/yy ==> 9/1/10 yy ==> 10
|
# MM/yyyy ==> 01/2010 d/M/yy ==> 9/1/10 yy ==> 10
|
||||||
# default if not set: MMM yyyy
|
# publication default if not set: MMM yyyy
|
||||||
|
# timestamp default if not set: dd MMM yyyy
|
||||||
gui_pubdate_display_format = 'MMM yyyy'
|
gui_pubdate_display_format = 'MMM yyyy'
|
||||||
|
gui_timestamp_display_format = 'dd MMM yyyy'
|
||||||
|
|
||||||
# Control title and series sorting in the library view.
|
# Control title and series sorting in the library view.
|
||||||
# If set to 'library_order', Leading articles such as The and A will be ignored.
|
# If set to 'library_order', Leading articles such as The and A will be ignored.
|
||||||
|
BIN
resources/images/news/consumerist.png
Normal file
After Width: | Height: | Size: 887 B |
BIN
resources/images/news/deadspin.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
resources/images/news/fleshbot.png
Normal file
After Width: | Height: | Size: 953 B |
BIN
resources/images/news/gawker.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
resources/images/news/io9.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
resources/images/news/jalopnik.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
resources/images/news/jezebel.png
Normal file
After Width: | Height: | Size: 233 B |
BIN
resources/images/news/kotaku.png
Normal file
After Width: | Height: | Size: 400 B |
BIN
resources/images/news/lifehacker.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
53
resources/recipes/consumerist.recipe
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
__license__ = 'GPL v3'
|
||||||
|
__copyright__ = '2010, NA'
|
||||||
|
'''
|
||||||
|
consumerist.com
|
||||||
|
'''
|
||||||
|
|
||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class Consumerist(BasicNewsRecipe):
|
||||||
|
title = 'Consumerist'
|
||||||
|
__author__ = 'NA'
|
||||||
|
description = "Consumerist, Shoppers Bite Back."
|
||||||
|
publisher = 'consumerist.com'
|
||||||
|
category = 'news, consumer news, consumer rights'
|
||||||
|
oldest_article = 2
|
||||||
|
max_articles_per_feed = 100
|
||||||
|
no_stylesheets = True
|
||||||
|
encoding = 'utf-8'
|
||||||
|
use_embedded_content = False
|
||||||
|
language = 'en'
|
||||||
|
masthead_url = 'http://consumerist.com/css/images/footer_man.gif'
|
||||||
|
extra_css = '''
|
||||||
|
body{font-family: "Lucida Grande",Helvetica,Arial,sans-serif}
|
||||||
|
img{margin-bottom: 1em}
|
||||||
|
h1{font-family :Arial,Helvetica,sans-serif; font-size:x-large}
|
||||||
|
h2{font-family :Arial,Helvetica,sans-serif; font-size:large}
|
||||||
|
'''
|
||||||
|
conversion_options = {
|
||||||
|
'comment' : description
|
||||||
|
, 'tags' : category
|
||||||
|
, 'publisher' : publisher
|
||||||
|
, 'language' : language
|
||||||
|
}
|
||||||
|
|
||||||
|
remove_attributes = ['width','height']
|
||||||
|
#keep_only_tags = [dict(attrs={'class':['', 'category-breadcrumb']}),]
|
||||||
|
remove_tags_before = dict(name='h2')
|
||||||
|
|
||||||
|
remove_tags = [
|
||||||
|
#dict(name='iframe'),
|
||||||
|
dict(name='div', attrs={'class':['e-comments', 'more-about', 'entry-tags']}),
|
||||||
|
#dict(name='div', attrs={'id':['IEContainer', 'clickIncludeBox']}),
|
||||||
|
#dict(name='ul', attrs={'class':'article-tools'}),
|
||||||
|
#dict(name='ul', attrs={'class':'articleTools'}),
|
||||||
|
]
|
||||||
|
|
||||||
|
remove_tags_after = dict(attrs={'class':'e-body'})
|
||||||
|
|
||||||
|
feeds = [(u'Articles', u'http://consumerist.com/index.xml')]
|
||||||
|
|
||||||
|
def preprocess_html(self, soup):
|
||||||
|
return self.adeify_images(soup)
|
||||||
|
|
44
resources/recipes/deadspin.recipe
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
__license__ = 'GPL v3'
|
||||||
|
__copyright__ = '2010, NA'
|
||||||
|
'''
|
||||||
|
deadspin.com
|
||||||
|
'''
|
||||||
|
|
||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class Deadspin(BasicNewsRecipe):
|
||||||
|
title = 'Deadspin'
|
||||||
|
__author__ = 'NA'
|
||||||
|
description = "Deadspin, Sports News without Access, Favor, or Discretion."
|
||||||
|
publisher = 'deadspin.com'
|
||||||
|
category = 'news, sports, meltdowns'
|
||||||
|
oldest_article = 2
|
||||||
|
max_articles_per_feed = 100
|
||||||
|
no_stylesheets = True
|
||||||
|
encoding = 'utf-8'
|
||||||
|
use_embedded_content = False
|
||||||
|
language = 'en'
|
||||||
|
masthead_url = 'http://cache.gawkerassets.com/assets/deadspin.com/img/logo.png'
|
||||||
|
extra_css = '''
|
||||||
|
body{font-family: "Lucida Grande",Helvetica,Arial,sans-serif}
|
||||||
|
img{margin-bottom: 1em}
|
||||||
|
h1{font-family :Arial,Helvetica,sans-serif; font-size:large}
|
||||||
|
'''
|
||||||
|
conversion_options = {
|
||||||
|
'comment' : description
|
||||||
|
, 'tags' : category
|
||||||
|
, 'publisher' : publisher
|
||||||
|
, 'language' : language
|
||||||
|
}
|
||||||
|
|
||||||
|
remove_attributes = ['width','height']
|
||||||
|
keep_only_tags = [dict(attrs={'class':'content permalink'})]
|
||||||
|
remove_tags_before = dict(name='h1')
|
||||||
|
remove_tags = [dict(attrs={'class':'contactinfo'})]
|
||||||
|
remove_tags_after = dict(attrs={'class':'contactinfo'})
|
||||||
|
|
||||||
|
feeds = [(u'Articles', u'http://feeds.gawker.com/deadspin/full')]
|
||||||
|
|
||||||
|
def preprocess_html(self, soup):
|
||||||
|
return self.adeify_images(soup)
|
||||||
|
|
44
resources/recipes/fleshbot.recipe
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
__license__ = 'GPL v3'
|
||||||
|
__copyright__ = '2010, NA'
|
||||||
|
'''
|
||||||
|
fleshbot.com
|
||||||
|
'''
|
||||||
|
|
||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class Fleshbot(BasicNewsRecipe):
|
||||||
|
title = 'Fleshbot'
|
||||||
|
__author__ = 'NA'
|
||||||
|
description = "Fleshbot, Pure Filth."
|
||||||
|
publisher = 'Fleshbot.com'
|
||||||
|
category = 'news, sex, sex industry, celebs, nudes, adult, adult toys, sex toys'
|
||||||
|
oldest_article = 2
|
||||||
|
max_articles_per_feed = 100
|
||||||
|
no_stylesheets = True
|
||||||
|
encoding = 'utf-8'
|
||||||
|
use_embedded_content = False
|
||||||
|
language = 'en'
|
||||||
|
masthead_url = 'http://cache.fleshbot.com/assets/base/img/thumbs140x140/fleshbot.com.png'
|
||||||
|
extra_css = '''
|
||||||
|
body{font-family: "Lucida Grande",Helvetica,Arial,sans-serif}
|
||||||
|
img{margin-bottom: 1em}
|
||||||
|
h1{font-family :Arial,Helvetica,sans-serif; font-size:x-large}
|
||||||
|
'''
|
||||||
|
conversion_options = {
|
||||||
|
'comment' : description
|
||||||
|
, 'tags' : category
|
||||||
|
, 'publisher' : publisher
|
||||||
|
, 'language' : language
|
||||||
|
}
|
||||||
|
|
||||||
|
remove_attributes = ['width','height']
|
||||||
|
keep_only_tags = [dict(attrs={'class':'content permalink'})]
|
||||||
|
remove_tags_before = dict(name='h1')
|
||||||
|
remove_tags = [dict(attrs={'class':'contactinfo'})]
|
||||||
|
remove_tags_after = dict(attrs={'class':'contactinfo'})
|
||||||
|
|
||||||
|
feeds = [(u'Articles', u'http://feeds.gawker.com/fleshbot/full')]
|
||||||
|
|
||||||
|
def preprocess_html(self, soup):
|
||||||
|
return self.adeify_images(soup)
|
||||||
|
|
44
resources/recipes/gawker.recipe
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
__license__ = 'GPL v3'
|
||||||
|
__copyright__ = '2010, NA'
|
||||||
|
'''
|
||||||
|
gawker.com
|
||||||
|
'''
|
||||||
|
|
||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class Gawker(BasicNewsRecipe):
|
||||||
|
title = 'Gawker'
|
||||||
|
__author__ = 'NA'
|
||||||
|
description = "Gawker, Gossip from Manhattan and the Beltway to Hollywood and the Valley."
|
||||||
|
publisher = 'gawker.com'
|
||||||
|
category = 'news, gossip'
|
||||||
|
oldest_article = 2
|
||||||
|
max_articles_per_feed = 100
|
||||||
|
no_stylesheets = True
|
||||||
|
encoding = 'utf-8'
|
||||||
|
use_embedded_content = False
|
||||||
|
language = 'en'
|
||||||
|
masthead_url = 'http://cache.gawkerassets.com/assets/gawker.com/img/logo.png'
|
||||||
|
extra_css = '''
|
||||||
|
body{font-family: "Lucida Grande",Helvetica,Arial,sans-serif}
|
||||||
|
img{margin-bottom: 1em}
|
||||||
|
h1{font-family :Arial,Helvetica,sans-serif; font-size:large}
|
||||||
|
'''
|
||||||
|
conversion_options = {
|
||||||
|
'comment' : description
|
||||||
|
, 'tags' : category
|
||||||
|
, 'publisher' : publisher
|
||||||
|
, 'language' : language
|
||||||
|
}
|
||||||
|
|
||||||
|
remove_attributes = ['width','height']
|
||||||
|
keep_only_tags = [dict(attrs={'class':'content permalink'})]
|
||||||
|
remove_tags_before = dict(name='h1')
|
||||||
|
remove_tags = [dict(attrs={'class':'contactinfo'})]
|
||||||
|
remove_tags_after = dict(attrs={'class':'contactinfo'})
|
||||||
|
|
||||||
|
feeds = [(u'Articles', u'http://feeds.gawker.com/gawker/full')]
|
||||||
|
|
||||||
|
def preprocess_html(self, soup):
|
||||||
|
return self.adeify_images(soup)
|
||||||
|
|
46
resources/recipes/io9.recipe
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
__license__ = 'GPL v3'
|
||||||
|
__copyright__ = '2010, NA'
|
||||||
|
'''
|
||||||
|
io9.com
|
||||||
|
'''
|
||||||
|
|
||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class i09(BasicNewsRecipe):
|
||||||
|
title = 'io9'
|
||||||
|
__author__ = 'NA'
|
||||||
|
description = "io9, We Come From the Future."
|
||||||
|
publisher = 'io9.com'
|
||||||
|
category = 'news, science, education'
|
||||||
|
oldest_article = 2
|
||||||
|
max_articles_per_feed = 100
|
||||||
|
no_stylesheets = True
|
||||||
|
encoding = 'utf-8'
|
||||||
|
use_embedded_content = False
|
||||||
|
language = 'en'
|
||||||
|
masthead_url = 'http://cache.gawkerassets.com/assets/io9.com/img/logo.png'
|
||||||
|
extra_css = '''
|
||||||
|
body{font-family: "Lucida Grande",Helvetica,Arial,sans-serif}
|
||||||
|
img{margin-bottom: 1em}
|
||||||
|
h1{font-family :Arial,Helvetica,sans-serif; font-size:large}
|
||||||
|
h2{font-family :Arial,Helvetica,sans-serif; font-size:x-small}
|
||||||
|
'''
|
||||||
|
|
||||||
|
conversion_options = {
|
||||||
|
'comment' : description
|
||||||
|
, 'tags' : category
|
||||||
|
, 'publisher' : publisher
|
||||||
|
, 'language' : language
|
||||||
|
}
|
||||||
|
|
||||||
|
remove_attributes = ['width','height']
|
||||||
|
keep_only_tags = [dict(attrs={'class':'content permalink'})]
|
||||||
|
remove_tags_before = dict(name='h1')
|
||||||
|
remove_tags = [dict(attrs={'class':'contactinfo'})]
|
||||||
|
remove_tags_after = dict(attrs={'class':'contactinfo'})
|
||||||
|
|
||||||
|
feeds = [(u'Articles', u'http://feeds.gawker.com/io9/full')]
|
||||||
|
|
||||||
|
def preprocess_html(self, soup):
|
||||||
|
return self.adeify_images(soup)
|
||||||
|
|
45
resources/recipes/jalopnik.recipe
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
__license__ = 'GPL v3'
|
||||||
|
__copyright__ = '2010, NA'
|
||||||
|
'''
|
||||||
|
jalopnik.com
|
||||||
|
'''
|
||||||
|
|
||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class Jalopnik(BasicNewsRecipe):
|
||||||
|
title = 'Jalopnik'
|
||||||
|
__author__ = 'NA'
|
||||||
|
description = "Jalopnik, Obsessed With The Cult of Cars."
|
||||||
|
publisher = 'jalopnik.com'
|
||||||
|
category = 'news, cars, spyshots'
|
||||||
|
oldest_article = 2
|
||||||
|
max_articles_per_feed = 100
|
||||||
|
no_stylesheets = True
|
||||||
|
encoding = 'utf-8'
|
||||||
|
use_embedded_content = False
|
||||||
|
language = 'en'
|
||||||
|
masthead_url = 'http://cache.gawkerassets.com/assets/jalopnik.com/img/logo.png'
|
||||||
|
extra_css = '''
|
||||||
|
body{font-family: "Lucida Grande",Helvetica,Arial,sans-serif}
|
||||||
|
img{margin-bottom: 1em}
|
||||||
|
h1{font-family :Arial,Helvetica,sans-serif; font-size:large}
|
||||||
|
h2{font-family :Arial,Helvetica,sans-serif; font-size:x-small}
|
||||||
|
'''
|
||||||
|
conversion_options = {
|
||||||
|
'comment' : description
|
||||||
|
, 'tags' : category
|
||||||
|
, 'publisher' : publisher
|
||||||
|
, 'language' : language
|
||||||
|
}
|
||||||
|
|
||||||
|
remove_attributes = ['width','height']
|
||||||
|
keep_only_tags = [dict(attrs={'class':'content permalink'})]
|
||||||
|
remove_tags_before = dict(name='h1')
|
||||||
|
remove_tags = [dict(attrs={'class':'contactinfo'})]
|
||||||
|
remove_tags_after = dict(attrs={'class':'contactinfo'})
|
||||||
|
|
||||||
|
feeds = [(u'Articles', u'http://feeds.gawker.com/jalopnik/full')]
|
||||||
|
|
||||||
|
def preprocess_html(self, soup):
|
||||||
|
return self.adeify_images(soup)
|
||||||
|
|
45
resources/recipes/jezebel.recipe
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
__license__ = 'GPL v3'
|
||||||
|
__copyright__ = '2010, NA'
|
||||||
|
'''
|
||||||
|
jezebel.com
|
||||||
|
'''
|
||||||
|
|
||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class Jezebel(BasicNewsRecipe):
|
||||||
|
title = 'Jezebel'
|
||||||
|
__author__ = 'NA'
|
||||||
|
description = "Jezebel, Celebrity, Sex, Fashion for Women. Without Airbrushing."
|
||||||
|
publisher = 'jezebel.com'
|
||||||
|
category = 'news, cars, spyshots'
|
||||||
|
oldest_article = 2
|
||||||
|
max_articles_per_feed = 100
|
||||||
|
no_stylesheets = True
|
||||||
|
encoding = 'utf-8'
|
||||||
|
use_embedded_content = False
|
||||||
|
language = 'en'
|
||||||
|
masthead_url = 'http://cache.gawkerassets.com/assets/jezebel.com/img/logo.png'
|
||||||
|
extra_css = '''
|
||||||
|
body{font-family: "Lucida Grande",Helvetica,Arial,sans-serif}
|
||||||
|
img{margin-bottom: 1em}
|
||||||
|
h1{font-family :Arial,Helvetica,sans-serif; font-size:large}
|
||||||
|
h2{font-family :Arial,Helvetica,sans-serif; font-size:x-small}
|
||||||
|
'''
|
||||||
|
conversion_options = {
|
||||||
|
'comment' : description
|
||||||
|
, 'tags' : category
|
||||||
|
, 'publisher' : publisher
|
||||||
|
, 'language' : language
|
||||||
|
}
|
||||||
|
|
||||||
|
remove_attributes = ['width','height']
|
||||||
|
keep_only_tags = [dict(attrs={'class':'content permalink'})]
|
||||||
|
remove_tags_before = dict(name='h1')
|
||||||
|
remove_tags = [dict(attrs={'class':'contactinfo'})]
|
||||||
|
remove_tags_after = dict(attrs={'class':'contactinfo'})
|
||||||
|
|
||||||
|
feeds = [(u'Articles', u'http://feeds.gawker.com/jezebel/full')]
|
||||||
|
|
||||||
|
def preprocess_html(self, soup):
|
||||||
|
return self.adeify_images(soup)
|
||||||
|
|
44
resources/recipes/kotaku.recipe
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
__license__ = 'GPL v3'
|
||||||
|
__copyright__ = '2010, NA'
|
||||||
|
'''
|
||||||
|
kotaku.com
|
||||||
|
'''
|
||||||
|
|
||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class Kotaku(BasicNewsRecipe):
|
||||||
|
title = 'Kotaku'
|
||||||
|
__author__ = 'NA'
|
||||||
|
description = "Kotaku, the Gamer's Guide."
|
||||||
|
publisher = 'kotaku.com'
|
||||||
|
category = 'news, games, Internet, xbox 360, playstation 3, tips and tricks'
|
||||||
|
oldest_article = 2
|
||||||
|
max_articles_per_feed = 100
|
||||||
|
no_stylesheets = True
|
||||||
|
encoding = 'utf-8'
|
||||||
|
use_embedded_content = False
|
||||||
|
language = 'en'
|
||||||
|
masthead_url = 'http://cache.gawkerassets.com/assets/kotaku.com/img/logo.png'
|
||||||
|
extra_css = '''
|
||||||
|
body{font-family: "Lucida Grande",Helvetica,Arial,sans-serif}
|
||||||
|
img{margin-bottom: 1em}
|
||||||
|
h1{font-family :Arial,Helvetica,sans-serif; font-size:large}
|
||||||
|
'''
|
||||||
|
conversion_options = {
|
||||||
|
'comment' : description
|
||||||
|
, 'tags' : category
|
||||||
|
, 'publisher' : publisher
|
||||||
|
, 'language' : language
|
||||||
|
}
|
||||||
|
|
||||||
|
remove_attributes = ['width','height']
|
||||||
|
keep_only_tags = [dict(attrs={'class':'content permalink'})]
|
||||||
|
remove_tags_before = dict(name='h1')
|
||||||
|
remove_tags = [dict(attrs={'class':'contactinfo'})]
|
||||||
|
remove_tags_after = dict(attrs={'class':'contactinfo'})
|
||||||
|
|
||||||
|
feeds = [(u'Articles', u'http://feeds.gawker.com/kotaku/full')]
|
||||||
|
|
||||||
|
def preprocess_html(self, soup):
|
||||||
|
return self.adeify_images(soup)
|
||||||
|
|
45
resources/recipes/lifehacker.recipe
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
__license__ = 'GPL v3'
|
||||||
|
__copyright__ = '2010, NA'
|
||||||
|
'''
|
||||||
|
lifehacker.com
|
||||||
|
'''
|
||||||
|
|
||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class Lifehacker(BasicNewsRecipe):
|
||||||
|
title = 'Lifehacker'
|
||||||
|
__author__ = 'NA'
|
||||||
|
description = "Computers make us more productive. Yeah, right. Lifehacker recommends the software downloads and web sites that actually save time. Don't live to geek; geek to live."
|
||||||
|
publisher = 'lifehacker.com'
|
||||||
|
category = 'news, IT, Internet, gadgets, tips and tricks, howto, diy'
|
||||||
|
oldest_article = 2
|
||||||
|
max_articles_per_feed = 100
|
||||||
|
no_stylesheets = True
|
||||||
|
encoding = 'utf-8'
|
||||||
|
use_embedded_content = False
|
||||||
|
language = 'en'
|
||||||
|
masthead_url = 'http://cache.gawkerassets.com/assets/lifehacker.com/img/logo.png'
|
||||||
|
extra_css = '''
|
||||||
|
body{font-family: "Lucida Grande",Helvetica,Arial,sans-serif}
|
||||||
|
img{margin-bottom: 1em}
|
||||||
|
h1{font-family :Arial,Helvetica,sans-serif; font-size:large}
|
||||||
|
h2{font-family :Arial,Helvetica,sans-serif; font-size:x-small}
|
||||||
|
'''
|
||||||
|
conversion_options = {
|
||||||
|
'comment' : description
|
||||||
|
, 'tags' : category
|
||||||
|
, 'publisher' : publisher
|
||||||
|
, 'language' : language
|
||||||
|
}
|
||||||
|
|
||||||
|
remove_attributes = ['width','height']
|
||||||
|
keep_only_tags = [dict(attrs={'class':'content permalink'})]
|
||||||
|
remove_tags_before = dict(name='h1')
|
||||||
|
remove_tags = [dict(attrs={'class':'contactinfo'})]
|
||||||
|
remove_tags_after = dict(attrs={'class':'contactinfo'})
|
||||||
|
|
||||||
|
feeds = [(u'Articles', u'http://feeds.gawker.com/lifehacker/full')]
|
||||||
|
|
||||||
|
def preprocess_html(self, soup):
|
||||||
|
return self.adeify_images(soup)
|
||||||
|
|
@ -373,6 +373,7 @@ class Py2App(object):
|
|||||||
CFBundleName=APPNAME,
|
CFBundleName=APPNAME,
|
||||||
CFBundleIdentifier='net.kovidgoyal.calibre',
|
CFBundleIdentifier='net.kovidgoyal.calibre',
|
||||||
CFBundleVersion=VERSION,
|
CFBundleVersion=VERSION,
|
||||||
|
CFBundleShortVersionString=VERSION,
|
||||||
CFBundlePackageType='APPL',
|
CFBundlePackageType='APPL',
|
||||||
CFBundleSignature='????',
|
CFBundleSignature='????',
|
||||||
CFBundleExecutable='calibre',
|
CFBundleExecutable='calibre',
|
||||||
|
@ -8,7 +8,7 @@ from calibre.constants import numeric_version
|
|||||||
from calibre.ptempfile import PersistentTemporaryFile
|
from calibre.ptempfile import PersistentTemporaryFile
|
||||||
|
|
||||||
|
|
||||||
class Plugin(object):
|
class Plugin(object): # {{{
|
||||||
'''
|
'''
|
||||||
A calibre plugin. Useful members include:
|
A calibre plugin. Useful members include:
|
||||||
|
|
||||||
@ -147,9 +147,9 @@ class Plugin(object):
|
|||||||
if hasattr(it, '__exit__'):
|
if hasattr(it, '__exit__'):
|
||||||
it.__exit__(*args)
|
it.__exit__(*args)
|
||||||
|
|
||||||
|
# }}}
|
||||||
|
|
||||||
|
class FileTypePlugin(Plugin): # {{{
|
||||||
class FileTypePlugin(Plugin):
|
|
||||||
'''
|
'''
|
||||||
A plugin that is associated with a particular set of file types.
|
A plugin that is associated with a particular set of file types.
|
||||||
'''
|
'''
|
||||||
@ -191,7 +191,9 @@ class FileTypePlugin(Plugin):
|
|||||||
# Default implementation does nothing
|
# Default implementation does nothing
|
||||||
return path_to_ebook
|
return path_to_ebook
|
||||||
|
|
||||||
class MetadataReaderPlugin(Plugin):
|
# }}}
|
||||||
|
|
||||||
|
class MetadataReaderPlugin(Plugin): # {{{
|
||||||
'''
|
'''
|
||||||
A plugin that implements reading metadata from a set of file types.
|
A plugin that implements reading metadata from a set of file types.
|
||||||
'''
|
'''
|
||||||
@ -219,8 +221,9 @@ class MetadataReaderPlugin(Plugin):
|
|||||||
:return: A :class:`calibre.ebooks.metadata.MetaInformation` object
|
:return: A :class:`calibre.ebooks.metadata.MetaInformation` object
|
||||||
'''
|
'''
|
||||||
return None
|
return None
|
||||||
|
# }}}
|
||||||
|
|
||||||
class MetadataWriterPlugin(Plugin):
|
class MetadataWriterPlugin(Plugin): # {{{
|
||||||
'''
|
'''
|
||||||
A plugin that implements reading metadata from a set of file types.
|
A plugin that implements reading metadata from a set of file types.
|
||||||
'''
|
'''
|
||||||
@ -249,7 +252,9 @@ class MetadataWriterPlugin(Plugin):
|
|||||||
'''
|
'''
|
||||||
pass
|
pass
|
||||||
|
|
||||||
class CatalogPlugin(Plugin):
|
# }}}
|
||||||
|
|
||||||
|
class CatalogPlugin(Plugin): # {{{
|
||||||
'''
|
'''
|
||||||
A plugin that implements a catalog generator.
|
A plugin that implements a catalog generator.
|
||||||
'''
|
'''
|
||||||
@ -352,7 +357,9 @@ class CatalogPlugin(Plugin):
|
|||||||
raise NotImplementedError('CatalogPlugin.generate_catalog() default '
|
raise NotImplementedError('CatalogPlugin.generate_catalog() default '
|
||||||
'method, should be overridden in subclass')
|
'method, should be overridden in subclass')
|
||||||
|
|
||||||
class InterfaceActionBase(Plugin):
|
# }}}
|
||||||
|
|
||||||
|
class InterfaceActionBase(Plugin): # {{{
|
||||||
|
|
||||||
supported_platforms = ['windows', 'osx', 'linux']
|
supported_platforms = ['windows', 'osx', 'linux']
|
||||||
author = 'Kovid Goyal'
|
author = 'Kovid Goyal'
|
||||||
@ -360,3 +367,44 @@ class InterfaceActionBase(Plugin):
|
|||||||
can_be_disabled = False
|
can_be_disabled = False
|
||||||
|
|
||||||
actual_plugin = None
|
actual_plugin = None
|
||||||
|
# }}}
|
||||||
|
|
||||||
|
class PreferencesPlugin(Plugin): # {{{
|
||||||
|
|
||||||
|
supported_platforms = ['windows', 'osx', 'linux']
|
||||||
|
author = 'Kovid Goyal'
|
||||||
|
type = _('Preferences')
|
||||||
|
can_be_disabled = False
|
||||||
|
|
||||||
|
#: Import path to module that contains a class named ConfigWidget
|
||||||
|
#: which implements the ConfigWidgetInterface. Used by
|
||||||
|
#: :meth:`create_widget`.
|
||||||
|
config_widget = None
|
||||||
|
|
||||||
|
#: Where in the list of categories the :attr:`category` of this plugin should be.
|
||||||
|
category_order = 100
|
||||||
|
|
||||||
|
#: Where in the list of names in a category, the :attr:`gui_name` of this
|
||||||
|
#: plugin should be
|
||||||
|
name_order = 100
|
||||||
|
|
||||||
|
#: The category this plugin should be in
|
||||||
|
category = None
|
||||||
|
|
||||||
|
#: The name displayed to the user for this plugin
|
||||||
|
gui_name = None
|
||||||
|
|
||||||
|
def create_widget(self, parent=None):
|
||||||
|
'''
|
||||||
|
Create and return the actual Qt widget used for setting this group of
|
||||||
|
preferences. The widget must implement the ConfigWidgetInterface.
|
||||||
|
|
||||||
|
The default implementation uses :attr:`config_widget` to instantiate
|
||||||
|
the widget.
|
||||||
|
'''
|
||||||
|
base = __import__(self.config_widget, fromlist=[1])
|
||||||
|
widget = base.ConfigWidget(parent)
|
||||||
|
return widget
|
||||||
|
|
||||||
|
# }}}
|
||||||
|
|
||||||
|
@ -7,7 +7,8 @@ from contextlib import closing
|
|||||||
|
|
||||||
from calibre.customize import Plugin, CatalogPlugin, FileTypePlugin, \
|
from calibre.customize import Plugin, CatalogPlugin, FileTypePlugin, \
|
||||||
MetadataReaderPlugin, MetadataWriterPlugin, \
|
MetadataReaderPlugin, MetadataWriterPlugin, \
|
||||||
InterfaceActionBase as InterfaceAction
|
InterfaceActionBase as InterfaceAction, \
|
||||||
|
PreferencesPlugin
|
||||||
from calibre.customize.conversion import InputFormatPlugin, OutputFormatPlugin
|
from calibre.customize.conversion import InputFormatPlugin, OutputFormatPlugin
|
||||||
from calibre.customize.profiles import InputProfile, OutputProfile
|
from calibre.customize.profiles import InputProfile, OutputProfile
|
||||||
from calibre.customize.builtins import plugins as builtin_plugins
|
from calibre.customize.builtins import plugins as builtin_plugins
|
||||||
@ -257,6 +258,17 @@ def interface_actions():
|
|||||||
yield plugin
|
yield plugin
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
# Preferences Plugins # {{{
|
||||||
|
|
||||||
|
def preferences_plugins():
|
||||||
|
customization = config['plugin_customization']
|
||||||
|
for plugin in _initialized_plugins:
|
||||||
|
if isinstance(plugin, PreferencesPlugin):
|
||||||
|
if not is_disabled(plugin):
|
||||||
|
plugin.site_customization = customization.get(plugin.name, '')
|
||||||
|
yield plugin
|
||||||
|
# }}}
|
||||||
|
|
||||||
# Metadata read/write {{{
|
# Metadata read/write {{{
|
||||||
_metadata_readers = {}
|
_metadata_readers = {}
|
||||||
_metadata_writers = {}
|
_metadata_writers = {}
|
||||||
|
@ -20,7 +20,7 @@ class ANDROID(USBMS):
|
|||||||
VENDOR_ID = {
|
VENDOR_ID = {
|
||||||
# HTC
|
# HTC
|
||||||
0x0bb4 : { 0x0c02 : [0x100, 0x0227], 0x0c01 : [0x100, 0x0227], 0x0ff9
|
0x0bb4 : { 0x0c02 : [0x100, 0x0227], 0x0c01 : [0x100, 0x0227], 0x0ff9
|
||||||
: [0x0100, 0x0227, 0x0226]},
|
: [0x0100, 0x0227, 0x0226], 0x0c87: [0x0100, 0x0227, 0x0226]},
|
||||||
|
|
||||||
# Motorola
|
# Motorola
|
||||||
0x22b8 : { 0x41d9 : [0x216], 0x2d67 : [0x100], 0x41db : [0x216],
|
0x22b8 : { 0x41d9 : [0x216], 0x2d67 : [0x100], 0x41db : [0x216],
|
||||||
|
@ -16,7 +16,7 @@ class FOLDER_DEVICE_FOR_CONFIG(USBMS):
|
|||||||
description = _('Use an arbitrary folder as a device.')
|
description = _('Use an arbitrary folder as a device.')
|
||||||
author = 'John Schember/Charles Haley'
|
author = 'John Schember/Charles Haley'
|
||||||
supported_platforms = ['windows', 'osx', 'linux']
|
supported_platforms = ['windows', 'osx', 'linux']
|
||||||
FORMATS = ['epub', 'fb2', 'mobi', 'lrf', 'tcr', 'pmlz', 'lit', 'rtf', 'rb', 'pdf', 'oeb', 'txt', 'pdb']
|
FORMATS = ['epub', 'fb2', 'mobi', 'azw', 'lrf', 'tcr', 'pmlz', 'lit', 'rtf', 'rb', 'pdf', 'oeb', 'txt', 'pdb']
|
||||||
VENDOR_ID = 0xffff
|
VENDOR_ID = 0xffff
|
||||||
PRODUCT_ID = 0xffff
|
PRODUCT_ID = 0xffff
|
||||||
BCD = 0xffff
|
BCD = 0xffff
|
||||||
@ -30,7 +30,7 @@ class FOLDER_DEVICE(USBMS):
|
|||||||
description = _('Use an arbitrary folder as a device.')
|
description = _('Use an arbitrary folder as a device.')
|
||||||
author = 'John Schember/Charles Haley'
|
author = 'John Schember/Charles Haley'
|
||||||
supported_platforms = ['windows', 'osx', 'linux']
|
supported_platforms = ['windows', 'osx', 'linux']
|
||||||
FORMATS = ['epub', 'fb2', 'mobi', 'lrf', 'tcr', 'pmlz', 'lit', 'rtf', 'rb', 'pdf', 'oeb', 'txt', 'pdb']
|
FORMATS = ['epub', 'fb2', 'mobi', 'azw', 'lrf', 'tcr', 'pmlz', 'lit', 'rtf', 'rb', 'pdf', 'oeb', 'txt', 'pdb']
|
||||||
|
|
||||||
VENDOR_ID = 0xffff
|
VENDOR_ID = 0xffff
|
||||||
PRODUCT_ID = 0xffff
|
PRODUCT_ID = 0xffff
|
||||||
|
@ -354,19 +354,22 @@ class XMLCache(object):
|
|||||||
root = self.record_roots[i]
|
root = self.record_roots[i]
|
||||||
lpath_map = self.build_lpath_map(root)
|
lpath_map = self.build_lpath_map(root)
|
||||||
gtz_count = ltz_count = 0
|
gtz_count = ltz_count = 0
|
||||||
|
use_tz_var = False
|
||||||
for book in booklist:
|
for book in booklist:
|
||||||
path = os.path.join(self.prefixes[i], *(book.lpath.split('/')))
|
path = os.path.join(self.prefixes[i], *(book.lpath.split('/')))
|
||||||
record = lpath_map.get(book.lpath, None)
|
record = lpath_map.get(book.lpath, None)
|
||||||
if record is None:
|
if record is None:
|
||||||
record = self.create_text_record(root, i, book.lpath)
|
record = self.create_text_record(root, i, book.lpath)
|
||||||
(gtz_count, ltz_count) = self.update_text_record(record, book,
|
(gtz_count, ltz_count, use_tz_var) = \
|
||||||
path, i, gtz_count, ltz_count)
|
self.update_text_record(record, book, path, i,
|
||||||
|
gtz_count, ltz_count, use_tz_var)
|
||||||
# Ensure the collections in the XML database are recorded for
|
# Ensure the collections in the XML database are recorded for
|
||||||
# this book
|
# this book
|
||||||
if book.device_collections is None:
|
if book.device_collections is None:
|
||||||
book.device_collections = []
|
book.device_collections = []
|
||||||
book.device_collections = playlist_map.get(book.lpath, [])
|
book.device_collections = playlist_map.get(book.lpath, [])
|
||||||
debug_print('Timezone votes: %d GMT, %d LTZ'%(gtz_count, ltz_count))
|
debug_print('Timezone votes: %d GMT, %d LTZ, use_tz_var='%
|
||||||
|
(gtz_count, ltz_count, use_tz_var))
|
||||||
self.update_playlists(i, root, booklist, collections_attributes)
|
self.update_playlists(i, root, booklist, collections_attributes)
|
||||||
# Update the device collections because update playlist could have added
|
# Update the device collections because update playlist could have added
|
||||||
# some new ones.
|
# some new ones.
|
||||||
@ -464,21 +467,27 @@ class XMLCache(object):
|
|||||||
root.append(ans)
|
root.append(ans)
|
||||||
return ans
|
return ans
|
||||||
|
|
||||||
def update_text_record(self, record, book, path, bl_index, gtz_count, ltz_count):
|
def update_text_record(self, record, book, path, bl_index,
|
||||||
|
gtz_count, ltz_count, use_tz_var):
|
||||||
'''
|
'''
|
||||||
Update the Sony database from the book. This is done if the timestamp in
|
Update the Sony database from the book. This is done if the timestamp in
|
||||||
the db differs from the timestamp on the file.
|
the db differs from the timestamp on the file.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
# It seems that a Sony device can sometimes know what timezone it is in,
|
# It seems that a Sony device can sometimes know what timezone it is in,
|
||||||
# and apparently converts the dates to GMT when it writes them to the
|
# and apparently converts the dates to GMT when it writes them to its
|
||||||
# db. Unfortunately, we can't tell when it does this, so we use a
|
# DB. We can detect that a device is timezone-aware because there is a
|
||||||
# horrible heuristic. First, set dates only for new books, trying to
|
# 'tz' variable in the Sony DB, which we can set to "0" to tell the
|
||||||
# avoid upsetting the sony. Use the timezone determined through the
|
# device to ignore its own timezone when comparing mtime to the date in
|
||||||
# voting described next. Second, voting: if a book is not new, compare
|
# the DB.
|
||||||
# its Sony DB date against localtime and gmtime. Count the matches. When
|
|
||||||
# we must set a date, use the one with the most matches. Use localtime
|
# Unfortunately, if there is no tz variable in the DB, then we can't
|
||||||
# if the case of a tie, and hope it is right.
|
# tell when the device applies a timezone conversion. We use a horrible
|
||||||
|
# heuristic to work around this problem. First, set dates only for new
|
||||||
|
# books, trying to avoid upsetting the sony. Second, voting: if a book
|
||||||
|
# is not new, compare its Sony DB date against localtime and gmtime.
|
||||||
|
# Count the matches. When we must set a date, use the one with the most
|
||||||
|
# matches. Use localtime if the case of a tie, and hope it is right.
|
||||||
timestamp = os.path.getmtime(path)
|
timestamp = os.path.getmtime(path)
|
||||||
rec_date = record.get('date', None)
|
rec_date = record.get('date', None)
|
||||||
|
|
||||||
@ -489,20 +498,25 @@ class XMLCache(object):
|
|||||||
return x
|
return x
|
||||||
|
|
||||||
if not getattr(book, '_new_book', False): # book is not new
|
if not getattr(book, '_new_book', False): # book is not new
|
||||||
|
if record.get('tz', None) is not None:
|
||||||
|
use_tz_var = True
|
||||||
if strftime(timestamp, zone=time.gmtime) == rec_date:
|
if strftime(timestamp, zone=time.gmtime) == rec_date:
|
||||||
gtz_count += 1
|
gtz_count += 1
|
||||||
elif strftime(timestamp, zone=time.localtime) == rec_date:
|
elif strftime(timestamp, zone=time.localtime) == rec_date:
|
||||||
ltz_count += 1
|
ltz_count += 1
|
||||||
else: # book is new. Set the time using the current votes
|
else: # book is new. Set the time using the current votes
|
||||||
if ltz_count >= gtz_count:
|
if use_tz_var:
|
||||||
tz = time.localtime
|
tz = time.localtime
|
||||||
debug_print("Using localtime TZ for new book", book.lpath)
|
record.set('tz', '0')
|
||||||
|
debug_print("Use localtime TZ and tz='0' for new book", book.lpath)
|
||||||
|
elif ltz_count >= gtz_count:
|
||||||
|
tz = time.localtime
|
||||||
|
debug_print("Use localtime TZ for new book", book.lpath)
|
||||||
else:
|
else:
|
||||||
tz = time.gmtime
|
tz = time.gmtime
|
||||||
debug_print("Using GMT TZ for new book", book.lpath)
|
debug_print("Use GMT TZ for new book", book.lpath)
|
||||||
date = strftime(timestamp, zone=tz)
|
date = strftime(timestamp, zone=tz)
|
||||||
record.set('date', clean(date))
|
record.set('date', clean(date))
|
||||||
|
|
||||||
record.set('size', clean(str(os.stat(path).st_size)))
|
record.set('size', clean(str(os.stat(path).st_size)))
|
||||||
title = book.title if book.title else _('Unknown')
|
title = book.title if book.title else _('Unknown')
|
||||||
record.set('title', clean(title))
|
record.set('title', clean(title))
|
||||||
@ -532,7 +546,7 @@ class XMLCache(object):
|
|||||||
if 'id' not in record.attrib:
|
if 'id' not in record.attrib:
|
||||||
num = self.max_id(record.getroottree().getroot())
|
num = self.max_id(record.getroottree().getroot())
|
||||||
record.set('id', str(num+1))
|
record.set('id', str(num+1))
|
||||||
return (gtz_count, ltz_count)
|
return (gtz_count, ltz_count, use_tz_var)
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
# Writing the XML files {{{
|
# Writing the XML files {{{
|
||||||
|
@ -491,7 +491,7 @@ class HTMLInput(InputFormatPlugin):
|
|||||||
return (None, raw)
|
return (None, raw)
|
||||||
|
|
||||||
def preprocess_html(self, html):
|
def preprocess_html(self, html):
|
||||||
print "********* Preprocessing HTML *********\n"
|
self.log("********* Preprocessing HTML *********")
|
||||||
# Detect Chapters to match the xpath in the GUI
|
# Detect Chapters to match the xpath in the GUI
|
||||||
chapdetect = re.compile(r'(?=</?(br|p|span))(</?(br|p|span)[^>]*>)?\s*(?P<chap>(<(i|b)><(i|b)>|<(i|b)>)?(.?Chapter|Epilogue|Prologue|Book|Part|Dedication)\s*([\d\w-]+(\s\w+)?)?(</(i|b)></(i|b)>|</(i|b)>)?)(</?(p|br|span)[^>]*>)', re.IGNORECASE)
|
chapdetect = re.compile(r'(?=</?(br|p|span))(</?(br|p|span)[^>]*>)?\s*(?P<chap>(<(i|b)><(i|b)>|<(i|b)>)?(.?Chapter|Epilogue|Prologue|Book|Part|Dedication)\s*([\d\w-]+(\s\w+)?)?(</(i|b)></(i|b)>|</(i|b)>)?)(</?(p|br|span)[^>]*>)', re.IGNORECASE)
|
||||||
html = chapdetect.sub('<h2>'+'\g<chap>'+'</h2>\n', html)
|
html = chapdetect.sub('<h2>'+'\g<chap>'+'</h2>\n', html)
|
||||||
@ -500,7 +500,7 @@ class HTMLInput(InputFormatPlugin):
|
|||||||
# Insert extra line feeds so the line length regex functions properly
|
# Insert extra line feeds so the line length regex functions properly
|
||||||
html = re.sub(r"</p>", "</p>\n", html)
|
html = re.sub(r"</p>", "</p>\n", html)
|
||||||
length = line_length('html', html, 0.4)
|
length = line_length('html', html, 0.4)
|
||||||
print "*** Median length is " + str(length) + " ***\n"
|
self.log.debug("*** Median length is " + str(length) + " ***")
|
||||||
unwrap = re.compile(r"(?<=.{%i}[a-z,;:\IA])\s*</(span|p|div)>\s*(</(p|span|div)>)?\s*(?P<up2threeblanks><(p|span|div)[^>]*>\s*(<(p|span|div)[^>]*>\s*</(span|p|div)>\s*)</(span|p|div)>\s*){0,3}\s*<(span|div|p)[^>]*>\s*(<(span|div|p)[^>]*>)?\s*" % length, re.UNICODE)
|
unwrap = re.compile(r"(?<=.{%i}[a-z,;:\IA])\s*</(span|p|div)>\s*(</(p|span|div)>)?\s*(?P<up2threeblanks><(p|span|div)[^>]*>\s*(<(p|span|div)[^>]*>\s*</(span|p|div)>\s*)</(span|p|div)>\s*){0,3}\s*<(span|div|p)[^>]*>\s*(<(span|div|p)[^>]*>)?\s*" % length, re.UNICODE)
|
||||||
if length < 150:
|
if length < 150:
|
||||||
html = unwrap.sub(' ', html)
|
html = unwrap.sub(' ', html)
|
||||||
|
@ -22,6 +22,7 @@ class LITInput(InputFormatPlugin):
|
|||||||
accelerators):
|
accelerators):
|
||||||
from calibre.ebooks.lit.reader import LitReader
|
from calibre.ebooks.lit.reader import LitReader
|
||||||
from calibre.ebooks.conversion.plumber import create_oebbook
|
from calibre.ebooks.conversion.plumber import create_oebbook
|
||||||
|
self.log = log
|
||||||
return create_oebbook(log, stream, options, self, reader=LitReader)
|
return create_oebbook(log, stream, options, self, reader=LitReader)
|
||||||
|
|
||||||
def postprocess_book(self, oeb, opts, log):
|
def postprocess_book(self, oeb, opts, log):
|
||||||
@ -54,7 +55,7 @@ class LITInput(InputFormatPlugin):
|
|||||||
|
|
||||||
|
|
||||||
def preprocess_html(self, html):
|
def preprocess_html(self, html):
|
||||||
print "********* Preprocessing HTML *********\n"
|
self.log("********* Preprocessing HTML *********")
|
||||||
# Detect Chapters to match the xpath in the GUI
|
# Detect Chapters to match the xpath in the GUI
|
||||||
chapdetect = re.compile(r'(?=</?(br|p|span))(</?(br|p|span)[^>]*>)?\s*(?P<chap>(<(i|b)><(i|b)>|<(i|b)>)?(.?Chapter|Epilogue|Prologue|Book|Part|Dedication)\s*([\d\w-]+(\s\w+)?)?(</(i|b)></(i|b)>|</(i|b)>)?)(</?(p|br|span)[^>]*>)', re.IGNORECASE)
|
chapdetect = re.compile(r'(?=</?(br|p|span))(</?(br|p|span)[^>]*>)?\s*(?P<chap>(<(i|b)><(i|b)>|<(i|b)>)?(.?Chapter|Epilogue|Prologue|Book|Part|Dedication)\s*([\d\w-]+(\s\w+)?)?(</(i|b)></(i|b)>|</(i|b)>)?)(</?(p|br|span)[^>]*>)', re.IGNORECASE)
|
||||||
html = chapdetect.sub('<h2>'+'\g<chap>'+'</h2>\n', html)
|
html = chapdetect.sub('<h2>'+'\g<chap>'+'</h2>\n', html)
|
||||||
@ -63,7 +64,7 @@ class LITInput(InputFormatPlugin):
|
|||||||
# Insert extra line feeds so the line length regex functions properly
|
# Insert extra line feeds so the line length regex functions properly
|
||||||
html = re.sub(r"</p>", "</p>\n", html)
|
html = re.sub(r"</p>", "</p>\n", html)
|
||||||
length = line_length('html', html, 0.4)
|
length = line_length('html', html, 0.4)
|
||||||
print "*** Median length is " + str(length) + " ***\n"
|
self.log("*** Median length is " + str(length) + " ***")
|
||||||
unwrap = re.compile(r"(?<=.{%i}[a-z,;:\IA])\s*</(span|p|div)>\s*(</(p|span|div)>)?\s*(?P<up2threeblanks><(p|span|div)[^>]*>\s*(<(p|span|div)[^>]*>\s*</(span|p|div)>\s*)</(span|p|div)>\s*){0,3}\s*<(span|div|p)[^>]*>\s*(<(span|div|p)[^>]*>)?\s*" % length, re.UNICODE)
|
unwrap = re.compile(r"(?<=.{%i}[a-z,;:\IA])\s*</(span|p|div)>\s*(</(p|span|div)>)?\s*(?P<up2threeblanks><(p|span|div)[^>]*>\s*(<(p|span|div)[^>]*>\s*</(span|p|div)>\s*)</(span|p|div)>\s*){0,3}\s*<(span|div|p)[^>]*>\s*(<(span|div|p)[^>]*>)?\s*" % length, re.UNICODE)
|
||||||
if length < 150:
|
if length < 150:
|
||||||
html = unwrap.sub(' ', html)
|
html = unwrap.sub(' ', html)
|
||||||
|
@ -46,8 +46,12 @@ def authors_to_sort_string(authors):
|
|||||||
return ' & '.join(map(author_to_author_sort, authors))
|
return ' & '.join(map(author_to_author_sort, authors))
|
||||||
|
|
||||||
_title_pat = re.compile('^(A|The|An)\s+', re.IGNORECASE)
|
_title_pat = re.compile('^(A|The|An)\s+', re.IGNORECASE)
|
||||||
|
_ignore_starts = u'\'"'+u''.join(unichr(x) for x in range(0x2018, 0x201e)+[0x2032, 0x2033])
|
||||||
|
|
||||||
def title_sort(title):
|
def title_sort(title):
|
||||||
|
title = title.strip()
|
||||||
|
if title and title[0] in _ignore_starts:
|
||||||
|
title = title[1:]
|
||||||
match = _title_pat.search(title)
|
match = _title_pat.search(title)
|
||||||
if match:
|
if match:
|
||||||
prep = match.group(1)
|
prep = match.group(1)
|
||||||
|
@ -168,12 +168,18 @@ class Stylizer(object):
|
|||||||
item.href))
|
item.href))
|
||||||
continue
|
continue
|
||||||
stylesheets.append(sitem.data)
|
stylesheets.append(sitem.data)
|
||||||
for x in (extra_css, user_css):
|
csses = {'extra_css':extra_css, 'user_css':user_css}
|
||||||
|
for w, x in csses.items():
|
||||||
if x:
|
if x:
|
||||||
|
try:
|
||||||
text = XHTML_CSS_NAMESPACE + x
|
text = XHTML_CSS_NAMESPACE + x
|
||||||
stylesheet = parser.parseString(text, href=cssname)
|
stylesheet = parser.parseString(text, href=cssname)
|
||||||
stylesheet.namespaces['h'] = XHTML_NS
|
stylesheet.namespaces['h'] = XHTML_NS
|
||||||
stylesheets.append(stylesheet)
|
stylesheets.append(stylesheet)
|
||||||
|
except:
|
||||||
|
self.logger.exception('Failed to parse %s, ignoring.'%w)
|
||||||
|
self.logger.debug('Bad css: ')
|
||||||
|
self.logger.debug(x)
|
||||||
rules = []
|
rules = []
|
||||||
index = 0
|
index = 0
|
||||||
self.stylesheets = set()
|
self.stylesheets = set()
|
||||||
|
@ -229,13 +229,13 @@ class RTFInput(InputFormatPlugin):
|
|||||||
res = transform.tostring(result)
|
res = transform.tostring(result)
|
||||||
res = res[:100].replace('xmlns:html', 'xmlns') + res[100:]
|
res = res[:100].replace('xmlns:html', 'xmlns') + res[100:]
|
||||||
if self.options.preprocess_html:
|
if self.options.preprocess_html:
|
||||||
print "********* Preprocessing HTML *********\n"
|
self.log("********* Preprocessing HTML *********")
|
||||||
# Detect Chapters to match the xpath in the GUI
|
# Detect Chapters to match the xpath in the GUI
|
||||||
chapdetect = re.compile(r'<p[^>]*>\s*<span[^>]*>\s*(?P<chap>(<(i|b)>(<(i|b)>)?)?(.?Chapter|Epilogue|Prologue|Book|Part|Dedication)\s*([\d\w-]+(\s\w+)?)?(</(i|b)>(<(/i|b)>)?)?)\s*</span>\s*</p>', re.IGNORECASE)
|
chapdetect = re.compile(r'<p[^>]*>\s*<span[^>]*>\s*(?P<chap>(<(i|b)>(<(i|b)>)?)?(.?Chapter|Epilogue|Prologue|Book|Part|Dedication)\s*([\d\w-]+(\s\w+)?)?(</(i|b)>(<(/i|b)>)?)?)\s*</span>\s*</p>', re.IGNORECASE)
|
||||||
res = chapdetect.sub('<h2>'+'\g<chap>'+'</h2>\n', res)
|
res = chapdetect.sub('<h2>'+'\g<chap>'+'</h2>\n', res)
|
||||||
# Unwrap lines using punctation if the median length of all lines is less than 150
|
# Unwrap lines using punctation if the median length of all lines is less than 150
|
||||||
length = line_length('html', res, 0.4)
|
length = line_length('html', res, 0.4)
|
||||||
print "*** Median length is " + str(length) + " ***\n"
|
self.log("*** Median length is " + str(length) + " ***")
|
||||||
unwrap = re.compile(r"(?<=.{%i}[a-z,;:\IA])\s*</span>\s*</p>\s*(?P<up2threeblanks><p[^>]*>\s*(<span[^>]*>\s*</span>\s*)</p>\s*){0,3}\s*<p[^>]*>\s*<span[^>]*>\s*" % length, re.UNICODE)
|
unwrap = re.compile(r"(?<=.{%i}[a-z,;:\IA])\s*</span>\s*</p>\s*(?P<up2threeblanks><p[^>]*>\s*(<span[^>]*>\s*</span>\s*)</p>\s*){0,3}\s*<p[^>]*>\s*<span[^>]*>\s*" % length, re.UNICODE)
|
||||||
if length < 150:
|
if length < 150:
|
||||||
res = unwrap.sub(' ', res)
|
res = unwrap.sub(' ', res)
|
||||||
|
@ -19,8 +19,35 @@ from calibre.ebooks.metadata.meta import get_metadata, metadata_from_formats
|
|||||||
from calibre.ebooks.metadata import MetaInformation
|
from calibre.ebooks.metadata import MetaInformation
|
||||||
from calibre.utils.date import UNDEFINED_DATE
|
from calibre.utils.date import UNDEFINED_DATE
|
||||||
|
|
||||||
|
# Setup gprefs {{{
|
||||||
gprefs = JSONConfig('gui')
|
gprefs = JSONConfig('gui')
|
||||||
|
|
||||||
|
gprefs.defaults['action-layout-toolbar'] = (
|
||||||
|
'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',
|
||||||
|
)
|
||||||
|
|
||||||
|
gprefs.defaults['action-layout-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',
|
||||||
|
)
|
||||||
|
|
||||||
|
gprefs.defaults['action-layout-context-menu'] = (
|
||||||
|
'Edit Metadata', 'Send To Device', 'Save To Disk',
|
||||||
|
'Connect Share', 'Copy To Library', None,
|
||||||
|
'Convert Books', 'View', 'Open Folder', 'Show Book Details',
|
||||||
|
'Similar Books', None, 'Remove Books',
|
||||||
|
)
|
||||||
|
|
||||||
|
gprefs.defaults['action-layout-context-menu-device'] = (
|
||||||
|
'View', 'Save To Disk', None, 'Remove Books', None,
|
||||||
|
'Add To Library', 'Edit Collections',
|
||||||
|
)
|
||||||
|
# }}}
|
||||||
|
|
||||||
NONE = QVariant() #: Null value to return from the data function of item models
|
NONE = QVariant() #: Null value to return from the data function of item models
|
||||||
UNDEFINED_QDATE = QDate(UNDEFINED_DATE)
|
UNDEFINED_QDATE = QDate(UNDEFINED_DATE)
|
||||||
|
|
||||||
@ -66,8 +93,6 @@ def _config():
|
|||||||
c.add_opt('default_send_to_device_action', default=None,
|
c.add_opt('default_send_to_device_action', default=None,
|
||||||
help=_('Default action to perform when send to device button is '
|
help=_('Default action to perform when send to device button is '
|
||||||
'clicked'))
|
'clicked'))
|
||||||
c.add_opt('show_donate_button', default=True,
|
|
||||||
help='Show donation button')
|
|
||||||
c.add_opt('asked_library_thing_password', default=False,
|
c.add_opt('asked_library_thing_password', default=False,
|
||||||
help='Asked library thing password at least once.')
|
help='Asked library thing password at least once.')
|
||||||
c.add_opt('search_as_you_type', default=True,
|
c.add_opt('search_as_you_type', default=True,
|
||||||
|
@ -60,6 +60,17 @@ class InterfaceAction(QObject):
|
|||||||
#: shortcut must be a translated string if not None
|
#: shortcut must be a translated string if not None
|
||||||
action_spec = ('text', 'icon', None, None)
|
action_spec = ('text', 'icon', None, None)
|
||||||
|
|
||||||
|
#: Set of locations to which this action must not be added.
|
||||||
|
#: See :attr:`all_locations` for a list of possible locations
|
||||||
|
dont_add_to = frozenset([])
|
||||||
|
|
||||||
|
#: Set of locations from which this action must not be removed.
|
||||||
|
#: See :attr:`all_locations` for a list of possible locations
|
||||||
|
dont_remove_from = frozenset([])
|
||||||
|
|
||||||
|
all_locations = frozenset(['toolbar', 'toolbar-device', 'context-menu',
|
||||||
|
'context-menu-device'])
|
||||||
|
|
||||||
def __init__(self, parent, site_customization):
|
def __init__(self, parent, site_customization):
|
||||||
QObject.__init__(self, parent)
|
QObject.__init__(self, parent)
|
||||||
self.setObjectName(self.name)
|
self.setObjectName(self.name)
|
||||||
|
@ -22,7 +22,9 @@ from calibre.gui2.actions import InterfaceAction
|
|||||||
class AddAction(InterfaceAction):
|
class AddAction(InterfaceAction):
|
||||||
|
|
||||||
name = 'Add Books'
|
name = 'Add Books'
|
||||||
action_spec = (_('Add books'), 'add_book.svg', None, _('A'))
|
action_spec = (_('Add books'), 'add_book.svg',
|
||||||
|
_('Add books to the calibre library/device from files on your computer')
|
||||||
|
, _('A'))
|
||||||
|
|
||||||
def genesis(self):
|
def genesis(self):
|
||||||
self._add_filesystem_book = self.Dispatcher(self.__add_filesystem_book)
|
self._add_filesystem_book = self.Dispatcher(self.__add_filesystem_book)
|
||||||
|
@ -10,7 +10,9 @@ from calibre.gui2.actions import InterfaceAction
|
|||||||
class AddToLibraryAction(InterfaceAction):
|
class AddToLibraryAction(InterfaceAction):
|
||||||
|
|
||||||
name = 'Add To Library'
|
name = 'Add To Library'
|
||||||
action_spec = (_('Add books to library'), 'add_book.svg', None, None)
|
action_spec = (_('Add books to library'), 'add_book.svg',
|
||||||
|
_('Add books to your calibre library from the connected device'), None)
|
||||||
|
dont_add_to = frozenset(['toolbar', 'context-menu'])
|
||||||
|
|
||||||
def location_selected(self, loc):
|
def location_selected(self, loc):
|
||||||
enabled = loc != 'library'
|
enabled = loc != 'library'
|
||||||
|
@ -18,6 +18,7 @@ class GenerateCatalogAction(InterfaceAction):
|
|||||||
|
|
||||||
name = 'Generate Catalog'
|
name = 'Generate Catalog'
|
||||||
action_spec = (_('Create catalog of books in your calibre library'), None, None, None)
|
action_spec = (_('Create catalog of books in your calibre library'), None, None, None)
|
||||||
|
dont_add_to = frozenset(['toolbar-device', 'context-menu-device'])
|
||||||
|
|
||||||
def generate_catalog(self):
|
def generate_catalog(self):
|
||||||
rows = self.gui.library_view.selectionModel().selectedRows()
|
rows = self.gui.library_view.selectionModel().selectedRows()
|
||||||
|
@ -8,12 +8,12 @@ __docformat__ = 'restructuredtext en'
|
|||||||
import os
|
import os
|
||||||
from functools import partial
|
from functools import partial
|
||||||
|
|
||||||
from PyQt4.Qt import QMenu
|
from PyQt4.Qt import QMenu, Qt
|
||||||
|
|
||||||
from calibre import isbytestring
|
from calibre import isbytestring
|
||||||
from calibre.constants import filesystem_encoding
|
from calibre.constants import filesystem_encoding
|
||||||
from calibre.utils.config import prefs
|
from calibre.utils.config import prefs
|
||||||
from calibre.gui2 import gprefs, warning_dialog
|
from calibre.gui2 import gprefs, warning_dialog, Dispatcher
|
||||||
from calibre.gui2.actions import InterfaceAction
|
from calibre.gui2.actions import InterfaceAction
|
||||||
|
|
||||||
class LibraryUsageStats(object):
|
class LibraryUsageStats(object):
|
||||||
@ -72,15 +72,18 @@ class ChooseLibraryAction(InterfaceAction):
|
|||||||
name = 'Choose Library'
|
name = 'Choose Library'
|
||||||
action_spec = (_('%d books'), 'lt.png',
|
action_spec = (_('%d books'), 'lt.png',
|
||||||
_('Choose calibre library to work with'), None)
|
_('Choose calibre library to work with'), None)
|
||||||
|
dont_add_to = frozenset(['toolbar-device', 'context-menu-device'])
|
||||||
|
|
||||||
def genesis(self):
|
def genesis(self):
|
||||||
self.count_changed(0)
|
self.count_changed(0)
|
||||||
self.qaction.triggered.connect(self.choose_library)
|
self.qaction.triggered.connect(self.choose_library,
|
||||||
|
type=Qt.QueuedConnection)
|
||||||
|
|
||||||
self.stats = LibraryUsageStats()
|
self.stats = LibraryUsageStats()
|
||||||
self.create_action(spec=(_('Switch to library...'), 'lt.png', None,
|
self.create_action(spec=(_('Switch to library...'), 'lt.png', None,
|
||||||
None), attr='action_choose')
|
None), attr='action_choose')
|
||||||
self.action_choose.triggered.connect(self.choose_library)
|
self.action_choose.triggered.connect(self.choose_library,
|
||||||
|
type=Qt.QueuedConnection)
|
||||||
self.choose_menu = QMenu(self.gui)
|
self.choose_menu = QMenu(self.gui)
|
||||||
self.choose_menu.addAction(self.action_choose)
|
self.choose_menu.addAction(self.action_choose)
|
||||||
self.qaction.setMenu(self.choose_menu)
|
self.qaction.setMenu(self.choose_menu)
|
||||||
@ -94,7 +97,8 @@ class ChooseLibraryAction(InterfaceAction):
|
|||||||
attr='switch_action%d'%i)
|
attr='switch_action%d'%i)
|
||||||
self.switch_actions.append(ac)
|
self.switch_actions.append(ac)
|
||||||
ac.setVisible(False)
|
ac.setVisible(False)
|
||||||
ac.triggered.connect(partial(self.qs_requested, i))
|
ac.triggered.connect(partial(self.qs_requested, i),
|
||||||
|
type=Qt.QueuedConnection)
|
||||||
self.choose_menu.addAction(ac)
|
self.choose_menu.addAction(ac)
|
||||||
|
|
||||||
def library_name(self):
|
def library_name(self):
|
||||||
@ -120,8 +124,8 @@ class ChooseLibraryAction(InterfaceAction):
|
|||||||
self.quick_menu.clear()
|
self.quick_menu.clear()
|
||||||
self.qs_locations = [i[1] for i in locations]
|
self.qs_locations = [i[1] for i in locations]
|
||||||
for name, loc in locations:
|
for name, loc in locations:
|
||||||
self.quick_menu.addAction(name, partial(self.switch_requested,
|
self.quick_menu.addAction(name, Dispatcher(partial(self.switch_requested,
|
||||||
loc))
|
loc)))
|
||||||
|
|
||||||
for i, x in enumerate(locations[:len(self.switch_actions)]):
|
for i, x in enumerate(locations[:len(self.switch_actions)]):
|
||||||
name, loc = x
|
name, loc = x
|
||||||
|
@ -20,6 +20,7 @@ class ConvertAction(InterfaceAction):
|
|||||||
|
|
||||||
name = 'Convert Books'
|
name = 'Convert Books'
|
||||||
action_spec = (_('Convert books'), 'convert.svg', None, _('C'))
|
action_spec = (_('Convert books'), 'convert.svg', None, _('C'))
|
||||||
|
dont_add_to = frozenset(['toolbar-device', 'context-menu-device'])
|
||||||
|
|
||||||
def genesis(self):
|
def genesis(self):
|
||||||
cm = QMenu()
|
cm = QMenu()
|
||||||
|
@ -63,6 +63,7 @@ class CopyToLibraryAction(InterfaceAction):
|
|||||||
action_spec = (_('Copy to library'), 'lt.png',
|
action_spec = (_('Copy to library'), 'lt.png',
|
||||||
_('Copy selected books to the specified library'), None)
|
_('Copy selected books to the specified library'), None)
|
||||||
popup_type = QToolButton.InstantPopup
|
popup_type = QToolButton.InstantPopup
|
||||||
|
dont_add_to = frozenset(['toolbar-device', 'context-menu-device'])
|
||||||
|
|
||||||
def genesis(self):
|
def genesis(self):
|
||||||
self.menu = QMenu(self.gui)
|
self.menu = QMenu(self.gui)
|
||||||
|
@ -19,6 +19,7 @@ class ShareConnMenu(QMenu): # {{{
|
|||||||
connect_to_itunes = pyqtSignal()
|
connect_to_itunes = pyqtSignal()
|
||||||
config_email = pyqtSignal()
|
config_email = pyqtSignal()
|
||||||
toggle_server = pyqtSignal()
|
toggle_server = pyqtSignal()
|
||||||
|
dont_add_to = frozenset(['toolbar-device', 'context-menu-device'])
|
||||||
|
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
QMenu.__init__(self, parent)
|
QMenu.__init__(self, parent)
|
||||||
@ -95,6 +96,8 @@ class SendToDeviceAction(InterfaceAction):
|
|||||||
|
|
||||||
name = 'Send To Device'
|
name = 'Send To Device'
|
||||||
action_spec = (_('Send to device'), 'sync.svg', None, _('D'))
|
action_spec = (_('Send to device'), 'sync.svg', None, _('D'))
|
||||||
|
dont_remove_from = frozenset(['toolbar-device'])
|
||||||
|
dont_add_to = frozenset(['toolbar', 'context-menu'])
|
||||||
|
|
||||||
def genesis(self):
|
def genesis(self):
|
||||||
self.qaction.triggered.connect(self.do_sync)
|
self.qaction.triggered.connect(self.do_sync)
|
||||||
|
@ -10,7 +10,9 @@ from calibre.gui2.actions import InterfaceAction
|
|||||||
class EditCollectionsAction(InterfaceAction):
|
class EditCollectionsAction(InterfaceAction):
|
||||||
|
|
||||||
name = 'Edit Collections'
|
name = 'Edit Collections'
|
||||||
action_spec = (_('Manage collections'), None, None, None)
|
action_spec = (_('Manage collections'), None,
|
||||||
|
_('Manage the collections on this device'), None)
|
||||||
|
dont_add_to = frozenset(['toolbar', 'context-menu'])
|
||||||
|
|
||||||
def location_selected(self, loc):
|
def location_selected(self, loc):
|
||||||
enabled = loc != 'library'
|
enabled = loc != 'library'
|
||||||
|
@ -13,6 +13,7 @@ class OpenFolderAction(InterfaceAction):
|
|||||||
name = 'Open Folder'
|
name = 'Open Folder'
|
||||||
action_spec = (_('Open containing folder'), 'document_open.svg', None,
|
action_spec = (_('Open containing folder'), 'document_open.svg', None,
|
||||||
_('O'))
|
_('O'))
|
||||||
|
dont_add_to = frozenset(['toolbar-device', 'context-menu-device'])
|
||||||
|
|
||||||
def genesis(self):
|
def genesis(self):
|
||||||
self.qaction.triggered.connect(self.gui.iactions['View'].view_folder)
|
self.qaction.triggered.connect(self.gui.iactions['View'].view_folder)
|
||||||
|
@ -15,6 +15,7 @@ class PreferencesAction(InterfaceAction):
|
|||||||
|
|
||||||
name = 'Preferences'
|
name = 'Preferences'
|
||||||
action_spec = (_('Preferences'), 'config.svg', None, _('Ctrl+P'))
|
action_spec = (_('Preferences'), 'config.svg', None, _('Ctrl+P'))
|
||||||
|
dont_remove_from = frozenset(['toolbar'])
|
||||||
|
|
||||||
def genesis(self):
|
def genesis(self):
|
||||||
pm = QMenu()
|
pm = QMenu()
|
||||||
@ -55,6 +56,8 @@ class PreferencesAction(InterfaceAction):
|
|||||||
self.gui.tags_view.recount()
|
self.gui.tags_view.recount()
|
||||||
self.gui.create_device_menu()
|
self.gui.create_device_menu()
|
||||||
self.gui.set_device_menu_items_state(bool(self.gui.device_connected))
|
self.gui.set_device_menu_items_state(bool(self.gui.device_connected))
|
||||||
|
self.gui.tool_bar.build_bar()
|
||||||
|
self.gui.build_context_menus()
|
||||||
self.gui.tool_bar.apply_settings()
|
self.gui.tool_bar.apply_settings()
|
||||||
|
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ class ShowBookDetailsAction(InterfaceAction):
|
|||||||
name = 'Show Book Details'
|
name = 'Show Book Details'
|
||||||
action_spec = (_('Show book details'), 'dialog_information.svg', None,
|
action_spec = (_('Show book details'), 'dialog_information.svg', None,
|
||||||
_('I'))
|
_('I'))
|
||||||
|
dont_add_to = frozenset(['toolbar-device', 'context-menu-device'])
|
||||||
|
|
||||||
def genesis(self):
|
def genesis(self):
|
||||||
self.qaction.triggered.connect(self.show_book_info)
|
self.qaction.triggered.connect(self.show_book_info)
|
||||||
|
@ -550,9 +550,7 @@ class BulkText(BulkBase):
|
|||||||
remove_all, adding, rtext = self.gui_val
|
remove_all, adding, rtext = self.gui_val
|
||||||
remove = set()
|
remove = set()
|
||||||
if remove_all:
|
if remove_all:
|
||||||
for book_id in book_ids:
|
remove = set(self.db.all_custom(num=self.col_id))
|
||||||
remove |= set(self.db.get_custom(book_id, num=self.col_id,
|
|
||||||
index_is_id=True))
|
|
||||||
else:
|
else:
|
||||||
txt = rtext
|
txt = rtext
|
||||||
if txt:
|
if txt:
|
||||||
|
@ -14,6 +14,7 @@ from PyQt4.Qt import QDialog, QListWidgetItem, QIcon, \
|
|||||||
from calibre.constants import iswindows, isosx
|
from calibre.constants import iswindows, isosx
|
||||||
from calibre.gui2.dialogs.config.config_ui import Ui_Dialog
|
from calibre.gui2.dialogs.config.config_ui import Ui_Dialog
|
||||||
from calibre.gui2.dialogs.config.create_custom_column import CreateCustomColumn
|
from calibre.gui2.dialogs.config.create_custom_column import CreateCustomColumn
|
||||||
|
from calibre.gui2.dialogs.config.toolbar import ToolbarLayout
|
||||||
from calibre.gui2 import error_dialog, config, gprefs, \
|
from calibre.gui2 import error_dialog, config, gprefs, \
|
||||||
open_url, open_local_file, \
|
open_url, open_local_file, \
|
||||||
ALL_COLUMNS, NONE, info_dialog, choose_files, \
|
ALL_COLUMNS, NONE, info_dialog, choose_files, \
|
||||||
@ -503,7 +504,6 @@ class ConfigDialog(ResizableDialog, Ui_Dialog):
|
|||||||
idx = w.findText(self.db.prefs.get(x+'_restriction', ''))
|
idx = w.findText(self.db.prefs.get(x+'_restriction', ''))
|
||||||
w.setCurrentIndex(0 if idx < 0 else idx)
|
w.setCurrentIndex(0 if idx < 0 else idx)
|
||||||
self.opt_disable_animations.setChecked(config['disable_animations'])
|
self.opt_disable_animations.setChecked(config['disable_animations'])
|
||||||
self.opt_show_donate_button.setChecked(config['show_donate_button'])
|
|
||||||
idx = 0
|
idx = 0
|
||||||
for i, x in enumerate([(_('Small'), 'small'), (_('Medium'), 'medium'),
|
for i, x in enumerate([(_('Small'), 'small'), (_('Medium'), 'medium'),
|
||||||
(_('Large'), 'large')]):
|
(_('Large'), 'large')]):
|
||||||
@ -524,6 +524,9 @@ class ConfigDialog(ResizableDialog, Ui_Dialog):
|
|||||||
self.current_tweaks.setPlainText(curt.decode('utf-8'))
|
self.current_tweaks.setPlainText(curt.decode('utf-8'))
|
||||||
self.default_tweaks.setPlainText(deft.decode('utf-8'))
|
self.default_tweaks.setPlainText(deft.decode('utf-8'))
|
||||||
self.restore_tweaks_to_default_button.clicked.connect(self.restore_tweaks_to_default)
|
self.restore_tweaks_to_default_button.clicked.connect(self.restore_tweaks_to_default)
|
||||||
|
self.toolbar_cm_widget = ToolbarLayout(parent, parent)
|
||||||
|
self.toolbar_cm_tab.addTab(self.toolbar_cm_widget,
|
||||||
|
_('Toolbars/Context menus'))
|
||||||
|
|
||||||
self.category_view.setCurrentIndex(self.category_view.model().index_for_name(initial_category))
|
self.category_view.setCurrentIndex(self.category_view.model().index_for_name(initial_category))
|
||||||
|
|
||||||
@ -888,6 +891,7 @@ class ConfigDialog(ResizableDialog, Ui_Dialog):
|
|||||||
wl = self.opt_worker_limit.value()
|
wl = self.opt_worker_limit.value()
|
||||||
if wl%2 != 0:
|
if wl%2 != 0:
|
||||||
wl += 1
|
wl += 1
|
||||||
|
self.toolbar_cm_widget.commit()
|
||||||
config['worker_limit'] = wl
|
config['worker_limit'] = wl
|
||||||
|
|
||||||
config['use_roman_numerals_for_series_number'] = bool(self.roman_numerals.isChecked())
|
config['use_roman_numerals_for_series_number'] = bool(self.roman_numerals.isChecked())
|
||||||
@ -923,7 +927,6 @@ class ConfigDialog(ResizableDialog, Ui_Dialog):
|
|||||||
config['overwrite_author_title_metadata'] = self.opt_overwrite_author_title_metadata.isChecked()
|
config['overwrite_author_title_metadata'] = self.opt_overwrite_author_title_metadata.isChecked()
|
||||||
config['enforce_cpu_limit'] = bool(self.opt_enforce_cpu_limit.isChecked())
|
config['enforce_cpu_limit'] = bool(self.opt_enforce_cpu_limit.isChecked())
|
||||||
config['disable_animations'] = bool(self.opt_disable_animations.isChecked())
|
config['disable_animations'] = bool(self.opt_disable_animations.isChecked())
|
||||||
config['show_donate_button'] = bool(self.opt_show_donate_button.isChecked())
|
|
||||||
gprefs['show_splash_screen'] = bool(self.show_splash_screen.isChecked())
|
gprefs['show_splash_screen'] = bool(self.show_splash_screen.isChecked())
|
||||||
for x in ('toolbar_icon_size', 'toolbar_text'):
|
for x in ('toolbar_icon_size', 'toolbar_text'):
|
||||||
w = getattr(self, 'opt_'+x)
|
w = getattr(self, 'opt_'+x)
|
||||||
|
@ -294,82 +294,38 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="page">
|
<widget class="QWidget" name="page">
|
||||||
|
<layout class="QGridLayout" name="gridLayout_12">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QTabWidget" name="toolbar_cm_tab">
|
||||||
|
<property name="currentIndex">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="tab_3">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>&Miscellaneous</string>
|
||||||
|
</attribute>
|
||||||
<layout class="QGridLayout" name="gridLayout_8">
|
<layout class="QGridLayout" name="gridLayout_8">
|
||||||
<item row="2" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QCheckBox" name="roman_numerals">
|
<widget class="QLabel" name="label_17">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Use &Roman numerals for series number</string>
|
<string>User Interface &layout (needs restart):</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="checked">
|
<property name="buddy">
|
||||||
<bool>true</bool>
|
<cstring>opt_gui_layout</cstring>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="0">
|
<item row="0" column="1">
|
||||||
<widget class="QCheckBox" name="systray_icon">
|
<widget class="QComboBox" name="opt_gui_layout">
|
||||||
<property name="text">
|
<property name="maximumSize">
|
||||||
<string>Enable system &tray icon (needs restart)</string>
|
<size>
|
||||||
|
<width>250</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="1">
|
<item row="1" column="0">
|
||||||
<widget class="QCheckBox" name="systray_notifications">
|
|
||||||
<property name="text">
|
|
||||||
<string>Show &notifications in system tray</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="4" column="0">
|
|
||||||
<widget class="QCheckBox" name="show_splash_screen">
|
|
||||||
<property name="text">
|
|
||||||
<string>Show &splash screen at startup</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="5" column="0" colspan="2">
|
|
||||||
<widget class="QCheckBox" name="separate_cover_flow">
|
|
||||||
<property name="text">
|
|
||||||
<string>Show cover &browser in a separate window (needs restart)</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="6" column="0" colspan="2">
|
|
||||||
<widget class="QCheckBox" name="show_avg_rating">
|
|
||||||
<property name="text">
|
|
||||||
<string>Show &average ratings in the tags browser</string>
|
|
||||||
</property>
|
|
||||||
<property name="checked">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="7" column="0">
|
|
||||||
<widget class="QCheckBox" name="search_as_you_type">
|
|
||||||
<property name="text">
|
|
||||||
<string>Search as you type</string>
|
|
||||||
</property>
|
|
||||||
<property name="checked">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="9" column="0" colspan="2">
|
|
||||||
<widget class="QCheckBox" name="sync_news">
|
|
||||||
<property name="text">
|
|
||||||
<string>Automatically send downloaded &news to ebook reader</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="10" column="0" colspan="2">
|
|
||||||
<widget class="QCheckBox" name="delete_news">
|
|
||||||
<property name="text">
|
|
||||||
<string>&Delete news from library when it is automatically sent to reader</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="11" column="0" colspan="2">
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="label_6">
|
<widget class="QLabel" name="label_6">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&Number of covers to show in browse mode (needs restart):</string>
|
<string>&Number of covers to show in browse mode (needs restart):</string>
|
||||||
@ -379,10 +335,89 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item row="1" column="1">
|
||||||
<widget class="QSpinBox" name="cover_browse"/>
|
<widget class="QSpinBox" name="cover_browse"/>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QLabel" name="label_170">
|
||||||
|
<property name="text">
|
||||||
|
<string>Restriction to apply when the current library is opened:</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>opt_gui_restriction</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QComboBox" name="opt_gui_restriction">
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>250</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Apply this restriction on calibre startup if the current library is being used. Also applied when switching to this library. Note that this setting is per library. </string>
|
||||||
|
</property>
|
||||||
|
<property name="sizeAdjustPolicy">
|
||||||
|
<enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
|
||||||
|
</property>
|
||||||
|
<property name="minimumContentsLength">
|
||||||
|
<number>15</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="1">
|
||||||
|
<widget class="QCheckBox" name="opt_disable_animations">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Disable all animations. Useful if you have a slow/old computer.</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Disable &animations</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="11" column="0" colspan="2">
|
||||||
|
<widget class="QGroupBox" name="groupBox_2">
|
||||||
|
<property name="title">
|
||||||
|
<string>&Toolbar</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QComboBox" name="opt_toolbar_icon_size"/>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="text">
|
||||||
|
<string>&Icon size:</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>opt_toolbar_icon_size</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QComboBox" name="opt_toolbar_text"/>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="label_4">
|
||||||
|
<property name="text">
|
||||||
|
<string>Show &text under icons:</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>opt_toolbar_text</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="10" column="0" colspan="2">
|
||||||
|
<widget class="QCheckBox" name="delete_news">
|
||||||
|
<property name="text">
|
||||||
|
<string>&Delete news from library when it is automatically sent to reader</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="12" column="0" colspan="2">
|
<item row="12" column="0" colspan="2">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_7">
|
<layout class="QHBoxLayout" name="horizontalLayout_7">
|
||||||
@ -550,106 +585,74 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="0">
|
<item row="6" column="1">
|
||||||
<widget class="QLabel" name="label_17">
|
<widget class="QCheckBox" name="search_as_you_type">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>User Interface &layout (needs restart):</string>
|
<string>Search as you type</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="buddy">
|
<property name="checked">
|
||||||
<cstring>opt_gui_layout</cstring>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="1">
|
<item row="5" column="1">
|
||||||
<widget class="QComboBox" name="opt_gui_layout">
|
<widget class="QCheckBox" name="roman_numerals">
|
||||||
<property name="maximumSize">
|
|
||||||
<size>
|
|
||||||
<width>250</width>
|
|
||||||
<height>16777215</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QLabel" name="label_170">
|
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Restriction to apply when the current library is opened:</string>
|
<string>Use &Roman numerals for series</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="buddy">
|
<property name="checked">
|
||||||
<cstring>opt_gui_restriction</cstring>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="1">
|
<item row="3" column="0">
|
||||||
<widget class="QComboBox" name="opt_gui_restriction">
|
<widget class="QCheckBox" name="systray_icon">
|
||||||
<property name="maximumSize">
|
|
||||||
<size>
|
|
||||||
<width>250</width>
|
|
||||||
<height>16777215</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>Apply this restriction on calibre startup if the current library is being used. Also applied when switching to this library. Note that this setting is per library. </string>
|
|
||||||
</property>
|
|
||||||
<property name="sizeAdjustPolicy">
|
|
||||||
<enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
|
|
||||||
</property>
|
|
||||||
<property name="minimumContentsLength">
|
|
||||||
<number>20</number>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="1">
|
|
||||||
<widget class="QCheckBox" name="opt_disable_animations">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>Disable all animations. Useful if you have a slow/old computer.</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Disable &animations</string>
|
<string>Enable system &tray icon (needs restart)</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="0">
|
||||||
|
<widget class="QCheckBox" name="show_avg_rating">
|
||||||
|
<property name="text">
|
||||||
|
<string>Show &average ratings in the tags browser</string>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="6" column="0">
|
||||||
|
<widget class="QCheckBox" name="sync_news">
|
||||||
|
<property name="text">
|
||||||
|
<string>Automatically send downloaded &news to ebook reader</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="1">
|
<item row="4" column="1">
|
||||||
<widget class="QCheckBox" name="opt_show_donate_button">
|
<widget class="QCheckBox" name="show_splash_screen">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Show &donate button (restart)</string>
|
<string>Show &splash screen at startup</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="8" column="0" colspan="2">
|
<item row="9" column="0" colspan="2">
|
||||||
<widget class="QGroupBox" name="groupBox_2">
|
<widget class="QCheckBox" name="separate_cover_flow">
|
||||||
<property name="title">
|
|
||||||
<string>&Toolbar</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QComboBox" name="opt_toolbar_icon_size"/>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QLabel" name="label">
|
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&Icon size:</string>
|
<string>Show cover &browser in a separate window (needs restart)</string>
|
||||||
</property>
|
|
||||||
<property name="buddy">
|
|
||||||
<cstring>opt_toolbar_icon_size</cstring>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="1">
|
<item row="5" column="0">
|
||||||
<widget class="QComboBox" name="opt_toolbar_text"/>
|
<widget class="QCheckBox" name="systray_notifications">
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QLabel" name="label_4">
|
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Show &text under icons:</string>
|
<string>Show &notifications in system tray</string>
|
||||||
</property>
|
|
||||||
<property name="buddy">
|
|
||||||
<cstring>opt_toolbar_text</cstring>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
@ -11,41 +11,29 @@ from PyQt4.Qt import QWidget, QAbstractListModel, Qt, QIcon, \
|
|||||||
QVariant, QItemSelectionModel
|
QVariant, QItemSelectionModel
|
||||||
|
|
||||||
from calibre.gui2.dialogs.config.toolbar_ui import Ui_Form
|
from calibre.gui2.dialogs.config.toolbar_ui import Ui_Form
|
||||||
from calibre.gui2.layout import TOOLBAR_NO_DEVICE, TOOLBAR_DEVICE
|
from calibre.gui2 import gprefs, NONE, warning_dialog
|
||||||
from calibre.gui2.init import LIBRARY_CONTEXT_MENU, DEVICE_CONTEXT_MENU
|
|
||||||
from calibre.gui2 import gprefs, NONE
|
|
||||||
|
|
||||||
DEFAULTS = {
|
|
||||||
'toolbar': TOOLBAR_NO_DEVICE,
|
|
||||||
'toolbar-device': TOOLBAR_DEVICE,
|
|
||||||
'context-menu': LIBRARY_CONTEXT_MENU,
|
|
||||||
'context-menu-device': DEVICE_CONTEXT_MENU,
|
|
||||||
}
|
|
||||||
|
|
||||||
UNREMOVABLE = {
|
|
||||||
'toolbar': ['Preferences'],
|
|
||||||
'toolbar-device': ['Send To Device', 'Location Manager'],
|
|
||||||
}
|
|
||||||
|
|
||||||
UNADDABLE = {
|
|
||||||
'toolbar': ['Location Manager'],
|
|
||||||
'context-menu': ['Location Manager'],
|
|
||||||
'context-menu-device': ['Location Manager'],
|
|
||||||
}
|
|
||||||
|
|
||||||
class FakeAction(object):
|
class FakeAction(object):
|
||||||
|
|
||||||
def __init__(self, name, icon, tooltip=None):
|
def __init__(self, name, icon, tooltip=None,
|
||||||
|
dont_add_to=frozenset([]), dont_remove_from=frozenset([])):
|
||||||
self.name = name
|
self.name = name
|
||||||
self.action_spec = (name, icon, tooltip, None)
|
self.action_spec = (name, icon, tooltip, None)
|
||||||
|
self.dont_remove_from = dont_remove_from
|
||||||
|
self.dont_add_to = dont_add_to
|
||||||
|
|
||||||
class BaseModel(QAbstractListModel):
|
class BaseModel(QAbstractListModel):
|
||||||
|
|
||||||
def name_to_action(self, name, gui):
|
def name_to_action(self, name, gui):
|
||||||
if name == 'Donate':
|
if name == 'Donate':
|
||||||
return FakeAction(name, 'donate.svg')
|
return FakeAction(name, 'donate.svg',
|
||||||
|
dont_add_to=frozenset(['context-menu',
|
||||||
|
'context-menu-device']))
|
||||||
if name == 'Location Manager':
|
if name == 'Location Manager':
|
||||||
return FakeAction(name, None)
|
return FakeAction(name, None,
|
||||||
|
_('Switch between library and device views'),
|
||||||
|
dont_remove_from=set(['toolbar-device']))
|
||||||
if name is None:
|
if name is None:
|
||||||
return FakeAction('--- '+_('Separator')+' ---', None)
|
return FakeAction('--- '+_('Separator')+' ---', None)
|
||||||
return gui.iactions[name]
|
return gui.iactions[name]
|
||||||
@ -86,19 +74,25 @@ class AllModel(BaseModel):
|
|||||||
|
|
||||||
def __init__(self, key, gui):
|
def __init__(self, key, gui):
|
||||||
BaseModel.__init__(self)
|
BaseModel.__init__(self)
|
||||||
current = gprefs.get('action-layout-'+key, DEFAULTS[key])
|
self.gprefs_name = 'action-layout-'+key
|
||||||
all = list(gui.iactions.keys()) + ['Donate']
|
current = gprefs[self.gprefs_name]
|
||||||
all = [x for x in all if x not in current] + [None]
|
self.gui = gui
|
||||||
all = [self.name_to_action(x, gui) for x in all]
|
self.key = key
|
||||||
all.sort()
|
self._data = self.get_all_actions(current)
|
||||||
|
|
||||||
self._data = all
|
def get_all_actions(self, current):
|
||||||
|
all = list(self.gui.iactions.keys()) + ['Donate']
|
||||||
|
all = [x for x in all if x not in current] + [None]
|
||||||
|
all = [self.name_to_action(x, self.gui) for x in all]
|
||||||
|
all = [x for x in all if self.key not in x.dont_add_to]
|
||||||
|
all.sort()
|
||||||
|
return all
|
||||||
|
|
||||||
def add(self, names):
|
def add(self, names):
|
||||||
actions = []
|
actions = []
|
||||||
for name in actions:
|
for name in names:
|
||||||
if name is None or name.startswith('---'): continue
|
if name is None or name.startswith('---'): continue
|
||||||
actions.append(self.name_to_action(name))
|
actions.append(self.name_to_action(name, self.gui))
|
||||||
self._data.extend(actions)
|
self._data.extend(actions)
|
||||||
self._data.sort()
|
self._data.sort()
|
||||||
self.reset()
|
self.reset()
|
||||||
@ -118,14 +112,20 @@ class AllModel(BaseModel):
|
|||||||
self._data = ndata
|
self._data = ndata
|
||||||
self.reset()
|
self.reset()
|
||||||
|
|
||||||
|
def restore_defaults(self):
|
||||||
|
current = gprefs.defaults[self.gprefs_name]
|
||||||
|
self._data = self.get_all_actions(current)
|
||||||
|
self.reset()
|
||||||
|
|
||||||
class CurrentModel(BaseModel):
|
class CurrentModel(BaseModel):
|
||||||
|
|
||||||
def __init__(self, key, gui):
|
def __init__(self, key, gui):
|
||||||
BaseModel.__init__(self)
|
BaseModel.__init__(self)
|
||||||
current = gprefs.get('action-layout-'+key, DEFAULTS[key])
|
self.gprefs_name = 'action-layout-'+key
|
||||||
|
current = gprefs[self.gprefs_name]
|
||||||
self._data = [self.name_to_action(x, gui) for x in current]
|
self._data = [self.name_to_action(x, gui) for x in current]
|
||||||
self.key = key
|
self.key = key
|
||||||
|
self.gui = gui
|
||||||
|
|
||||||
def move(self, idx, delta):
|
def move(self, idx, delta):
|
||||||
row = idx.row()
|
row = idx.row()
|
||||||
@ -145,11 +145,12 @@ class CurrentModel(BaseModel):
|
|||||||
def add(self, names):
|
def add(self, names):
|
||||||
actions = []
|
actions = []
|
||||||
reject = set([])
|
reject = set([])
|
||||||
for name in actions:
|
for name in names:
|
||||||
if name in UNADDABLE[self.key]:
|
ac = self.name_to_action(name, self.gui)
|
||||||
reject.add(name)
|
if self.key in ac.dont_add_to:
|
||||||
continue
|
reject.add(ac)
|
||||||
actions.append(self.name_to_action(name))
|
else:
|
||||||
|
actions.append(ac)
|
||||||
|
|
||||||
self._data.extend(actions)
|
self._data.extend(actions)
|
||||||
self.reset()
|
self.reset()
|
||||||
@ -157,19 +158,41 @@ class CurrentModel(BaseModel):
|
|||||||
|
|
||||||
def remove(self, indices):
|
def remove(self, indices):
|
||||||
rows = [i.row() for i in indices]
|
rows = [i.row() for i in indices]
|
||||||
r = UNREMOVABLE[self.key]
|
remove, rejected = set([]), set([])
|
||||||
remove, removed = set([]), set([])
|
|
||||||
for row in rows:
|
for row in rows:
|
||||||
ac = self._data[row]
|
ac = self._data[row]
|
||||||
if ac.name in r: continue
|
if self.key in ac.dont_remove_from:
|
||||||
|
rejected.add(ac)
|
||||||
|
continue
|
||||||
remove.add(row)
|
remove.add(row)
|
||||||
removed.add(ac.name)
|
|
||||||
ndata = []
|
ndata = []
|
||||||
for i, ac in enumerate(self._data):
|
for i, ac in enumerate(self._data):
|
||||||
if i not in remove:
|
if i not in remove:
|
||||||
ndata.append(ac)
|
ndata.append(ac)
|
||||||
self._data = ndata
|
self._data = ndata
|
||||||
self.reset()
|
self.reset()
|
||||||
|
return rejected
|
||||||
|
|
||||||
|
def commit(self):
|
||||||
|
old = gprefs[self.gprefs_name]
|
||||||
|
new = []
|
||||||
|
for x in self._data:
|
||||||
|
n = x.name
|
||||||
|
if n.startswith('---'):
|
||||||
|
n = None
|
||||||
|
new.append(n)
|
||||||
|
new = tuple(new)
|
||||||
|
if new != old:
|
||||||
|
defaults = gprefs.defaults[self.gprefs_name]
|
||||||
|
if defaults == new:
|
||||||
|
del gprefs[self.gprefs_name]
|
||||||
|
else:
|
||||||
|
gprefs[self.gprefs_name] = new
|
||||||
|
|
||||||
|
def restore_defaults(self):
|
||||||
|
current = gprefs.defaults[self.gprefs_name]
|
||||||
|
self._data = [self.name_to_action(x, self.gui) for x in current]
|
||||||
|
self.reset()
|
||||||
|
|
||||||
|
|
||||||
class ToolbarLayout(QWidget, Ui_Form):
|
class ToolbarLayout(QWidget, Ui_Form):
|
||||||
@ -199,6 +222,7 @@ class ToolbarLayout(QWidget, Ui_Form):
|
|||||||
|
|
||||||
self.add_action_button.clicked.connect(self.add_action)
|
self.add_action_button.clicked.connect(self.add_action)
|
||||||
self.remove_action_button.clicked.connect(self.remove_action)
|
self.remove_action_button.clicked.connect(self.remove_action)
|
||||||
|
self.restore_defaults_button.clicked.connect(self.restore_defaults)
|
||||||
self.action_up_button.clicked.connect(partial(self.move, -1))
|
self.action_up_button.clicked.connect(partial(self.move, -1))
|
||||||
self.action_down_button.clicked.connect(partial(self.move, 1))
|
self.action_down_button.clicked.connect(partial(self.move, 1))
|
||||||
|
|
||||||
@ -212,15 +236,32 @@ class ToolbarLayout(QWidget, Ui_Form):
|
|||||||
names = self.all_actions.model().names(x)
|
names = self.all_actions.model().names(x)
|
||||||
if names:
|
if names:
|
||||||
not_added = self.current_actions.model().add(names)
|
not_added = self.current_actions.model().add(names)
|
||||||
added = set(names) - not_added
|
ns = set([x.name for x in not_added])
|
||||||
|
added = set(names) - ns
|
||||||
self.all_actions.model().remove(x, added)
|
self.all_actions.model().remove(x, added)
|
||||||
|
if not_added:
|
||||||
|
warning_dialog(self, _('Cannot add'),
|
||||||
|
_('Cannot add the actions %s to this location') %
|
||||||
|
','.join([a.action_spec[0] for a in not_added]),
|
||||||
|
show=True)
|
||||||
|
if added:
|
||||||
|
ca = self.current_actions
|
||||||
|
idx = ca.model().index(ca.model().rowCount(None)-1)
|
||||||
|
ca.scrollTo(idx)
|
||||||
|
|
||||||
def remove_action(self, *args):
|
def remove_action(self, *args):
|
||||||
x = self.current_actions.selectionModel().selectedIndexes()
|
x = self.current_actions.selectionModel().selectedIndexes()
|
||||||
names = self.current_actions.model().names(x)
|
names = self.current_actions.model().names(x)
|
||||||
if names:
|
if names:
|
||||||
self.current_actions.model().remove(x)
|
not_removed = self.current_actions.model().remove(x)
|
||||||
self.all_actions.model().add(names)
|
ns = set([x.name for x in not_removed])
|
||||||
|
removed = set(names) - ns
|
||||||
|
self.all_actions.model().add(removed)
|
||||||
|
if not_removed:
|
||||||
|
warning_dialog(self, _('Cannot remove'),
|
||||||
|
_('Cannot remove the actions %s from this location') %
|
||||||
|
','.join([a.action_spec[0] for a in not_removed]),
|
||||||
|
show=True)
|
||||||
|
|
||||||
def move(self, delta, *args):
|
def move(self, delta, *args):
|
||||||
ci = self.current_actions.currentIndex()
|
ci = self.current_actions.currentIndex()
|
||||||
@ -232,6 +273,16 @@ class ToolbarLayout(QWidget, Ui_Form):
|
|||||||
self.current_actions.selectionModel().select(ni,
|
self.current_actions.selectionModel().select(ni,
|
||||||
QItemSelectionModel.ClearAndSelect)
|
QItemSelectionModel.ClearAndSelect)
|
||||||
|
|
||||||
|
def commit(self):
|
||||||
|
for am, cm in self.models.values():
|
||||||
|
cm.commit()
|
||||||
|
|
||||||
|
def restore_defaults(self, *args):
|
||||||
|
for am, cm in self.models.values():
|
||||||
|
cm.restore_defaults()
|
||||||
|
am.restore_defaults()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
from PyQt4.Qt import QApplication
|
from PyQt4.Qt import QApplication
|
||||||
from calibre.gui2.ui import Main
|
from calibre.gui2.ui import Main
|
||||||
@ -240,4 +291,5 @@ if __name__ == '__main__':
|
|||||||
a = ToolbarLayout(m)
|
a = ToolbarLayout(m)
|
||||||
a.show()
|
a.show()
|
||||||
app.exec_()
|
app.exec_()
|
||||||
|
a.commit()
|
||||||
|
|
||||||
|
@ -207,6 +207,13 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="3" column="2">
|
||||||
|
<widget class="QPushButton" name="restore_defaults_button">
|
||||||
|
<property name="text">
|
||||||
|
<string>Restore to &default</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<resources>
|
<resources>
|
||||||
|
@ -199,6 +199,9 @@ class MetadataBulkDialog(QDialog, Ui_MetadataBulkDialog):
|
|||||||
for w in getattr(self, 'custom_column_widgets', []):
|
for w in getattr(self, 'custom_column_widgets', []):
|
||||||
w.gui_val
|
w.gui_val
|
||||||
|
|
||||||
|
if self.remove_all_tags.isChecked():
|
||||||
|
remove = self.db.all_tags()
|
||||||
|
else:
|
||||||
remove = unicode(self.remove_tags.text()).strip().split(',')
|
remove = unicode(self.remove_tags.text()).strip().split(',')
|
||||||
add = unicode(self.tags.text()).strip().split(',')
|
add = unicode(self.tags.text()).strip().split(',')
|
||||||
au = unicode(self.authors.text())
|
au = unicode(self.authors.text())
|
||||||
|
@ -140,7 +140,7 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="1">
|
<item row="4" column="1" colspan="2">
|
||||||
<widget class="EnComboBox" name="publisher">
|
<widget class="EnComboBox" name="publisher">
|
||||||
<property name="editable">
|
<property name="editable">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
@ -191,14 +191,23 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="6" column="1" colspan="2">
|
<item row="6" column="1">
|
||||||
<widget class="TagsLineEdit" name="remove_tags">
|
<widget class="TagsLineEdit" name="remove_tags">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Comma separated list of tags to remove from the books. </string>
|
<string>Comma separated list of tags to remove from the books. </string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="7" column="0">
|
<item row="6" column="2">
|
||||||
|
<widget class="QCheckBox" name="remove_all_tags">
|
||||||
|
<property name="text">
|
||||||
|
<string>Remove all</string>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Check this box to remove all tags from the books.</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item><item row="7" column="0">
|
||||||
<widget class="QLabel" name="label_7">
|
<widget class="QLabel" name="label_7">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&Series:</string>
|
<string>&Series:</string>
|
||||||
|
@ -613,12 +613,9 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QToolButton" name="cover_button">
|
<widget class="QPushButton" name="cover_button">
|
||||||
<property name="toolTip">
|
|
||||||
<string>Browse for an image to use as the cover of this book.</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>...</string>
|
<string>&Browse</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset resource="../../../../resources/images.qrc">
|
<iconset resource="../../../../resources/images.qrc">
|
||||||
@ -750,7 +747,6 @@
|
|||||||
<tabstop>button_set_metadata</tabstop>
|
<tabstop>button_set_metadata</tabstop>
|
||||||
<tabstop>formats</tabstop>
|
<tabstop>formats</tabstop>
|
||||||
<tabstop>cover_path</tabstop>
|
<tabstop>cover_path</tabstop>
|
||||||
<tabstop>cover_button</tabstop>
|
|
||||||
<tabstop>reset_cover</tabstop>
|
<tabstop>reset_cover</tabstop>
|
||||||
<tabstop>fetch_cover_button</tabstop>
|
<tabstop>fetch_cover_button</tabstop>
|
||||||
<tabstop>generate_cover_button</tabstop>
|
<tabstop>generate_cover_button</tabstop>
|
||||||
|
@ -13,7 +13,7 @@ from PyQt4.Qt import Qt, QStackedWidget, QMenu, \
|
|||||||
from calibre.utils.config import prefs
|
from calibre.utils.config import prefs
|
||||||
from calibre.constants import isosx, __appname__, preferred_encoding, \
|
from calibre.constants import isosx, __appname__, preferred_encoding, \
|
||||||
__version__
|
__version__
|
||||||
from calibre.gui2 import config, is_widescreen
|
from calibre.gui2 import config, is_widescreen, gprefs
|
||||||
from calibre.gui2.library.views import BooksView, DeviceBooksView
|
from calibre.gui2.library.views import BooksView, DeviceBooksView
|
||||||
from calibre.gui2.widgets import Splitter
|
from calibre.gui2.widgets import Splitter
|
||||||
from calibre.gui2.tag_view import TagBrowserWidget
|
from calibre.gui2.tag_view import TagBrowserWidget
|
||||||
@ -27,35 +27,10 @@ def partial(*args, **kwargs):
|
|||||||
_keep_refs.append(ans)
|
_keep_refs.append(ans)
|
||||||
return ans
|
return ans
|
||||||
|
|
||||||
LIBRARY_CONTEXT_MENU = (
|
|
||||||
'Edit Metadata', 'Send To Device', 'Save To Disk',
|
|
||||||
'Connect Share', 'Copy To Library', None,
|
|
||||||
'Convert Books', 'View', 'Open Folder', 'Show Book Details',
|
|
||||||
'Similar Books', None, 'Remove Books',
|
|
||||||
)
|
|
||||||
|
|
||||||
DEVICE_CONTEXT_MENU = ('View', 'Save To Disk', None, 'Remove Books', None,
|
|
||||||
'Add To Library', 'Edit Collections',
|
|
||||||
)
|
|
||||||
|
|
||||||
class LibraryViewMixin(object): # {{{
|
class LibraryViewMixin(object): # {{{
|
||||||
|
|
||||||
def __init__(self, db):
|
def __init__(self, db):
|
||||||
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.files_dropped.connect(self.iactions['Add Books'].files_dropped, type=Qt.QueuedConnection)
|
self.library_view.files_dropped.connect(self.iactions['Add Books'].files_dropped, type=Qt.QueuedConnection)
|
||||||
for func, args in [
|
for func, args in [
|
||||||
('connect_to_search_box', (self.search,
|
('connect_to_search_box', (self.search,
|
||||||
@ -85,6 +60,23 @@ class LibraryViewMixin(object): # {{{
|
|||||||
view = getattr(self, view+'_view')
|
view = getattr(self, view+'_view')
|
||||||
view.verticalHeader().sectionDoubleClicked.connect(self.iactions['View'].view_specific_book)
|
view.verticalHeader().sectionDoubleClicked.connect(self.iactions['View'].view_specific_book)
|
||||||
|
|
||||||
|
self.build_context_menus()
|
||||||
|
|
||||||
|
def build_context_menus(self):
|
||||||
|
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, gprefs['action-layout-context-menu'])
|
||||||
|
dm = QMenu(self)
|
||||||
|
populate_menu(dm, gprefs['action-layout-context-menu-device'])
|
||||||
|
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)
|
||||||
|
|
||||||
|
|
||||||
def search_done(self, view, ok):
|
def search_done(self, view, ok):
|
||||||
|
@ -15,23 +15,10 @@ from PyQt4.Qt import QIcon, Qt, QWidget, QToolBar, QSize, \
|
|||||||
from calibre.constants import __appname__
|
from calibre.constants import __appname__
|
||||||
from calibre.gui2.search_box import SearchBox2, SavedSearchBox
|
from calibre.gui2.search_box import SearchBox2, SavedSearchBox
|
||||||
from calibre.gui2.throbber import ThrobbingButton
|
from calibre.gui2.throbber import ThrobbingButton
|
||||||
from calibre.gui2 import config, gprefs
|
from calibre.gui2 import gprefs
|
||||||
from calibre.gui2.widgets import ComboBoxWithHelp
|
from calibre.gui2.widgets import ComboBoxWithHelp
|
||||||
from calibre import human_readable
|
from calibre import human_readable
|
||||||
|
|
||||||
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',
|
|
||||||
)
|
|
||||||
|
|
||||||
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): # {{{
|
class LocationManager(QObject): # {{{
|
||||||
|
|
||||||
locations_changed = pyqtSignal()
|
locations_changed = pyqtSignal()
|
||||||
@ -110,6 +97,7 @@ class LocationManager(QObject): # {{{
|
|||||||
self.free[2] = fs[2] if fs[2] is not None and cpb is not None else -1
|
self.free[2] = fs[2] if fs[2] is not None and cpb is not None else -1
|
||||||
self.update_tooltips()
|
self.update_tooltips()
|
||||||
if self.has_device != had_device:
|
if self.has_device != had_device:
|
||||||
|
self.location_library.setChecked(True)
|
||||||
self.locations_changed.emit()
|
self.locations_changed.emit()
|
||||||
if not self.has_device:
|
if not self.has_device:
|
||||||
self.location_library.trigger()
|
self.location_library.trigger()
|
||||||
@ -220,14 +208,11 @@ class ToolBar(QToolBar): # {{{
|
|||||||
self.setOrientation(Qt.Horizontal)
|
self.setOrientation(Qt.Horizontal)
|
||||||
self.setAllowedAreas(Qt.TopToolBarArea|Qt.BottomToolBarArea)
|
self.setAllowedAreas(Qt.TopToolBarArea|Qt.BottomToolBarArea)
|
||||||
self.setStyleSheet('QToolButton:checked { font-weight: bold }')
|
self.setStyleSheet('QToolButton:checked { font-weight: bold }')
|
||||||
self.donate = donate
|
self.donate_button = donate
|
||||||
self.apply_settings()
|
self.apply_settings()
|
||||||
|
|
||||||
self.location_manager = location_manager
|
self.location_manager = location_manager
|
||||||
self.location_manager.locations_changed.connect(self.build_bar)
|
self.location_manager.locations_changed.connect(self.build_bar)
|
||||||
self.d_widget = QWidget()
|
|
||||||
self.d_widget.setLayout(QVBoxLayout())
|
|
||||||
self.d_widget.layout().addWidget(donate)
|
|
||||||
donate.setAutoRaise(True)
|
donate.setAutoRaise(True)
|
||||||
donate.setCursor(Qt.PointingHandCursor)
|
donate.setCursor(Qt.PointingHandCursor)
|
||||||
self.build_bar()
|
self.build_bar()
|
||||||
@ -241,14 +226,15 @@ class ToolBar(QToolBar): # {{{
|
|||||||
if gprefs.get('toolbar_text', 'auto') == 'never':
|
if gprefs.get('toolbar_text', 'auto') == 'never':
|
||||||
style = Qt.ToolButtonIconOnly
|
style = Qt.ToolButtonIconOnly
|
||||||
self.setToolButtonStyle(style)
|
self.setToolButtonStyle(style)
|
||||||
self.donate.set_normal_icon_size(sz, sz)
|
self.donate_button.set_normal_icon_size(sz, sz)
|
||||||
|
|
||||||
def contextMenuEvent(self, *args):
|
def contextMenuEvent(self, *args):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def build_bar(self):
|
def build_bar(self):
|
||||||
showing_device = self.location_manager.has_device
|
showing_device = self.location_manager.has_device
|
||||||
actions = TOOLBAR_DEVICE if showing_device else TOOLBAR_NO_DEVICE
|
actions = '-device' if showing_device else ''
|
||||||
|
actions = gprefs['action-layout-toolbar'+actions]
|
||||||
|
|
||||||
self.clear()
|
self.clear()
|
||||||
|
|
||||||
@ -259,7 +245,10 @@ class ToolBar(QToolBar): # {{{
|
|||||||
for ac in self.location_manager.available_actions:
|
for ac in self.location_manager.available_actions:
|
||||||
self.addAction(ac)
|
self.addAction(ac)
|
||||||
self.setup_tool_button(ac, QToolButton.MenuButtonPopup)
|
self.setup_tool_button(ac, QToolButton.MenuButtonPopup)
|
||||||
elif what == 'Donate' and config['show_donate_button']:
|
elif what == 'Donate':
|
||||||
|
self.d_widget = QWidget()
|
||||||
|
self.d_widget.setLayout(QVBoxLayout())
|
||||||
|
self.d_widget.layout().addWidget(self.donate_button)
|
||||||
self.addWidget(self.d_widget)
|
self.addWidget(self.d_widget)
|
||||||
elif what in self.gui.iactions:
|
elif what in self.gui.iactions:
|
||||||
action = self.gui.iactions[what]
|
action = self.gui.iactions[what]
|
||||||
@ -290,7 +279,7 @@ class ToolBar(QToolBar): # {{{
|
|||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
class MainWindowMixin(object):
|
class MainWindowMixin(object): # {{{
|
||||||
|
|
||||||
def __init__(self, db):
|
def __init__(self, db):
|
||||||
self.setObjectName('MainWindow')
|
self.setObjectName('MainWindow')
|
||||||
@ -316,7 +305,7 @@ class MainWindowMixin(object):
|
|||||||
l = self.centralwidget.layout()
|
l = self.centralwidget.layout()
|
||||||
l.addWidget(self.search_bar)
|
l.addWidget(self.search_bar)
|
||||||
|
|
||||||
|
# }}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -98,14 +98,14 @@ class DateDelegate(QStyledItemDelegate): # {{{
|
|||||||
d = val.toDate()
|
d = val.toDate()
|
||||||
if d <= UNDEFINED_QDATE:
|
if d <= UNDEFINED_QDATE:
|
||||||
return ''
|
return ''
|
||||||
return format_date(d.toPyDate(), 'dd MMM yyyy')
|
format = tweaks['gui_timestamp_display_format']
|
||||||
|
if format is None:
|
||||||
|
format = 'dd MMM yyyy'
|
||||||
|
return format_date(d.toPyDate(), format)
|
||||||
|
|
||||||
def createEditor(self, parent, option, index):
|
def createEditor(self, parent, option, index):
|
||||||
qde = QStyledItemDelegate.createEditor(self, parent, option, index)
|
qde = QStyledItemDelegate.createEditor(self, parent, option, index)
|
||||||
stdformat = unicode(qde.displayFormat())
|
qde.setDisplayFormat('dd MMM yyyy')
|
||||||
if 'yyyy' not in stdformat:
|
|
||||||
stdformat = stdformat.replace('yy', 'yyyy')
|
|
||||||
qde.setDisplayFormat(stdformat)
|
|
||||||
qde.setMinimumDate(UNDEFINED_QDATE)
|
qde.setMinimumDate(UNDEFINED_QDATE)
|
||||||
qde.setSpecialValueText(_('Undefined'))
|
qde.setSpecialValueText(_('Undefined'))
|
||||||
qde.setCalendarPopup(True)
|
qde.setCalendarPopup(True)
|
||||||
|
73
src/calibre/gui2/preferences/__init__.py
Normal file
@ -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 <kovid@kovidgoyal.net>'
|
||||||
|
__docformat__ = 'restructuredtext en'
|
||||||
|
|
||||||
|
from PyQt4.Qt import QWidget, pyqtSignal
|
||||||
|
|
||||||
|
from calibre.customize.ui import preferences_plugins
|
||||||
|
|
||||||
|
class ConfigWidgetInterface(object):
|
||||||
|
|
||||||
|
changed_signal = None
|
||||||
|
|
||||||
|
def genesis(self, gui):
|
||||||
|
raise NotImplementedError()
|
||||||
|
|
||||||
|
def restore_defaults(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def commit(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class ConfigWidgetBase(QWidget, ConfigWidgetInterface):
|
||||||
|
|
||||||
|
changed_signal = pyqtSignal()
|
||||||
|
|
||||||
|
def __init__(self, parent=None):
|
||||||
|
QWidget.__init__(self, parent)
|
||||||
|
if hasattr(self, 'setupUi'):
|
||||||
|
self.setupUi(self)
|
||||||
|
|
||||||
|
def get_plugin(category, name):
|
||||||
|
for plugin in preferences_plugins():
|
||||||
|
if plugin.category == category and plugin.name == name:
|
||||||
|
return plugin
|
||||||
|
raise ValueError(
|
||||||
|
'No Preferences PLugin with category: %s and name: %s found' %
|
||||||
|
(category, name))
|
||||||
|
|
||||||
|
def test_widget(category, name, gui=None): # {{{
|
||||||
|
from PyQt4.Qt import QDialog, QVBoxLayout, QDialogButtonBox
|
||||||
|
pl = get_plugin(category, name)
|
||||||
|
d = QDialog()
|
||||||
|
d.resize(750, 550)
|
||||||
|
bb = QDialogButtonBox(d)
|
||||||
|
bb.setStandardButtons(bb.Apply|bb.Cancel|bb.RestoreDefaults)
|
||||||
|
bb.accepted.connect(d.accept)
|
||||||
|
bb.rejected.connect(d.reject)
|
||||||
|
w = pl.create_widget(d)
|
||||||
|
bb.button(bb.RestoreDefaults).clicked.connect(w.restore_defaults)
|
||||||
|
bb.button(bb.Apply).setEnabled(False)
|
||||||
|
w.changed_signal.connect(lambda : bb.button(bb.Apply).setEnable(True))
|
||||||
|
l = QVBoxLayout()
|
||||||
|
pl.setLayout(l)
|
||||||
|
l.addWidget(w)
|
||||||
|
if gui is None:
|
||||||
|
from calibre.gui2.ui import Main
|
||||||
|
from calibre.gui2.main import option_parser
|
||||||
|
from calibre.library.db import db
|
||||||
|
parser = option_parser()
|
||||||
|
opts, args = parser.parse_args([])
|
||||||
|
actions = tuple(Main.create_application_menubar())
|
||||||
|
db = db()
|
||||||
|
gui = Main(opts)
|
||||||
|
gui.initialize(db.library_path, db, None, actions)
|
||||||
|
w.genesis(gui)
|
||||||
|
if d.exec_() == QDialog.Accepted:
|
||||||
|
w.commit()
|
||||||
|
# }}}
|
||||||
|
|
@ -50,6 +50,8 @@ class Listener(Thread): # {{{
|
|||||||
self.start()
|
self.start()
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
|
if self.listener is None:
|
||||||
|
return
|
||||||
while self._run:
|
while self._run:
|
||||||
try:
|
try:
|
||||||
conn = self.listener.accept()
|
conn = self.listener.accept()
|
||||||
|
@ -112,6 +112,6 @@ class cmd_commit(_cmd_commit):
|
|||||||
server = xmlrpclib.ServerProxy(url)
|
server = xmlrpclib.ServerProxy(url)
|
||||||
server.ticket.update(int(bug), msg,
|
server.ticket.update(int(bug), msg,
|
||||||
{'status':'closed', 'resolution':'fixed'},
|
{'status':'closed', 'resolution':'fixed'},
|
||||||
False)
|
True)
|
||||||
|
|
||||||
bzrlib.commands.register_command(cmd_commit)
|
bzrlib.commands.register_command(cmd_commit)
|
||||||
|
@ -7,14 +7,14 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: calibre\n"
|
"Project-Id-Version: calibre\n"
|
||||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"POT-Creation-Date: 2010-08-18 22:24+0000\n"
|
"POT-Creation-Date: 2010-08-20 20:19+0000\n"
|
||||||
"PO-Revision-Date: 2010-08-19 19:17+0000\n"
|
"PO-Revision-Date: 2010-08-21 08:43+0000\n"
|
||||||
"Last-Translator: Glenn <Unknown>\n"
|
"Last-Translator: Glenn <Unknown>\n"
|
||||||
"Language-Team: Danish <da@li.org>\n"
|
"Language-Team: Danish <da@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2010-08-20 03:34+0000\n"
|
"X-Launchpad-Export-Date: 2010-08-22 03:44+0000\n"
|
||||||
"X-Generator: Launchpad (build Unknown)\n"
|
"X-Generator: Launchpad (build Unknown)\n"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43
|
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43
|
||||||
@ -27,7 +27,7 @@ msgstr "Gør absolut ingenting"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:70
|
#: /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/nook/driver.py:71
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267
|
#: /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/prs505/sony_cache.py:507
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:405
|
#: /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:97
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100
|
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100
|
||||||
@ -136,10 +136,10 @@ msgstr "Gør absolut ingenting"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1076
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1076
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1760
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1760
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1762
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1762
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1885
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1889
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:201
|
#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:201
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:134
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:136
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:137
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:139
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/xml.py:70
|
#: /home/kovid/work/calibre/src/calibre/library/server/xml.py:70
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:117
|
#: /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:46
|
||||||
@ -763,7 +763,11 @@ msgstr "Kommunikér med Booq Avant"
|
|||||||
msgid "Communicate with the Sweex MM300"
|
msgid "Communicate with the Sweex MM300"
|
||||||
msgstr "Kommunikér med Sweex MM300"
|
msgstr "Kommunikér med Sweex MM300"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:78
|
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:79
|
||||||
|
msgid "Communicate with the Kogan"
|
||||||
|
msgstr "Kommunikér med Kogan"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:87
|
||||||
msgid "Communicate with the Pandigital Novel"
|
msgid "Communicate with the Pandigital Novel"
|
||||||
msgstr "Kommunikér med Pandigital Novel"
|
msgstr "Kommunikér med Pandigital Novel"
|
||||||
|
|
||||||
@ -807,7 +811,7 @@ msgstr ""
|
|||||||
"Komma separeret liste af metadata felter som oversættes til collections på "
|
"Komma separeret liste af metadata felter som oversættes til collections på "
|
||||||
"enheden. Muligheder omfatter: "
|
"enheden. Muligheder omfatter: "
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:144
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:145
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:68
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:68
|
||||||
msgid "Unnamed"
|
msgid "Unnamed"
|
||||||
msgstr "Unavngivet"
|
msgstr "Unavngivet"
|
||||||
@ -1671,7 +1675,11 @@ msgstr "Udfører transformationer på e-bog..."
|
|||||||
msgid "Creating"
|
msgid "Creating"
|
||||||
msgstr "Opretter"
|
msgstr "Opretter"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/__init__.py:18
|
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/__init__.py:20
|
||||||
|
msgid "Failed to parse: %s with error: %s"
|
||||||
|
msgstr "Fejlede med at parse: %s med fejl: %s"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/__init__.py:26
|
||||||
msgid "ePub Fixer"
|
msgid "ePub Fixer"
|
||||||
msgstr "ePub-fixer"
|
msgstr "ePub-fixer"
|
||||||
|
|
||||||
@ -1692,7 +1700,7 @@ msgstr ""
|
|||||||
"Dette kan forårsage omfattende ændringer til din epub, klag til epubcheck-"
|
"Dette kan forårsage omfattende ændringer til din epub, klag til epubcheck-"
|
||||||
"projektet."
|
"projektet."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/main.py:19
|
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/main.py:21
|
||||||
msgid ""
|
msgid ""
|
||||||
"%prog [options] file.epub\n"
|
"%prog [options] file.epub\n"
|
||||||
"\n"
|
"\n"
|
||||||
@ -1710,7 +1718,7 @@ msgstr ""
|
|||||||
"By default, no fixing is done and messages are printed out for each error "
|
"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."
|
"detected. Use the options to control which errors are automatically fixed."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/main.py:50
|
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/main.py:52
|
||||||
msgid "You must specify an epub file"
|
msgid "You must specify an epub file"
|
||||||
msgstr "Du skal angive en epub-fil"
|
msgstr "Du skal angive en epub-fil"
|
||||||
|
|
||||||
@ -2103,7 +2111,7 @@ msgstr "Tegneserie"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:65
|
#: /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:359
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:887
|
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:887
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:550
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569
|
||||||
msgid "Title"
|
msgid "Title"
|
||||||
msgstr "Titel"
|
msgstr "Titel"
|
||||||
|
|
||||||
@ -3151,7 +3159,7 @@ msgid ""
|
|||||||
"directory, assumes every ebook file is the same book in a different format)"
|
"directory, assumes every ebook file is the same book in a different format)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Tilføj bøger fra mapper, inklusiv undermapper (Én e-bog per mappe, formoder "
|
"Tilføj bøger fra mapper, inklusiv undermapper (Én e-bog per mappe, formoder "
|
||||||
"hver e-bogsfil er den samme e-bog i forskellge formater)"
|
"hver e-bogsfil er den samme e-bog i forskellige formater)"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:36
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:36
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -3293,6 +3301,7 @@ msgstr "Kun brugernoter genereret fra arbejdsbibliotek"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:63
|
#: /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/catalog.py:30
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:85
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:85
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:98
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:74
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:74
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:140
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:140
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:176
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:176
|
||||||
@ -3368,7 +3377,8 @@ msgid "Select destination for %s.%s"
|
|||||||
msgstr "Gem destination for %s.%s"
|
msgstr "Gem destination for %s.%s"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:73
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:73
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:108
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:62
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:110
|
||||||
msgid "%d books"
|
msgid "%d books"
|
||||||
msgstr "%d bøger"
|
msgstr "%d bøger"
|
||||||
|
|
||||||
@ -3435,14 +3445,45 @@ msgstr "Kan ikke konvertere"
|
|||||||
msgid "Starting conversion of %d book(s)"
|
msgid "Starting conversion of %d book(s)"
|
||||||
msgstr "Starter konvertering af %d bog/bøger"
|
msgstr "Starter konvertering af %d bog/bøger"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:15
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:63
|
||||||
msgid "Copy to library"
|
msgid "Copy to library"
|
||||||
msgstr "Kopiér til bibliotek"
|
msgstr "Kopiér til bibliotek"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:16
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:64
|
||||||
msgid "Copy selected books to the specified library"
|
msgid "Copy selected books to the specified library"
|
||||||
msgstr "Kopiér udvalgte bøger til det angivne bibliotek"
|
msgstr "Kopiér udvalgte bøger til det angivne bibliotek"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:97
|
||||||
|
msgid "Cannot copy"
|
||||||
|
msgstr "Kan ikke kopiere"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:102
|
||||||
|
msgid "No library"
|
||||||
|
msgstr "Intet bibliotek"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:103
|
||||||
|
msgid "No library found at %s"
|
||||||
|
msgstr "Intet bibliotek fundet ved %s"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:106
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:110
|
||||||
|
msgid "Copying"
|
||||||
|
msgstr "Kopiérer"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:120
|
||||||
|
msgid "Could not copy books: "
|
||||||
|
msgstr "Kunne ikke kopiere bøger: "
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:120
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:678
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:231
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Fejlede"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:123
|
||||||
|
msgid "Copied %d books to %s"
|
||||||
|
msgstr "Kopiéret %d bøger til %s"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:18
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:18
|
||||||
msgid "Del"
|
msgid "Del"
|
||||||
msgstr "Slet"
|
msgstr "Slet"
|
||||||
@ -3875,35 +3916,35 @@ msgstr "Ingen detaljeret information tilgængelig om bøger på enheden."
|
|||||||
msgid "Similar books..."
|
msgid "Similar books..."
|
||||||
msgstr "Lignende bøger..."
|
msgstr "Lignende bøger..."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:22
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23
|
||||||
msgid "Alt+A"
|
msgid "Alt+A"
|
||||||
msgstr "Alt+A"
|
msgstr "Alt+A"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:22
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23
|
||||||
msgid "Books by same author"
|
msgid "Books by same author"
|
||||||
msgstr "Bøger af samme forfatter"
|
msgstr "Bøger af samme forfatter"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24
|
||||||
msgid "Alt+S"
|
msgid "Alt+S"
|
||||||
msgstr "Alt+S"
|
msgstr "Alt+S"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24
|
||||||
msgid "Books in this series"
|
msgid "Books in this series"
|
||||||
msgstr "Bøger i denne serie"
|
msgstr "Bøger i denne serie"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25
|
||||||
msgid "Alt+P"
|
msgid "Alt+P"
|
||||||
msgstr "Alt+P"
|
msgstr "Alt+P"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25
|
||||||
msgid "Books by this publisher"
|
msgid "Books by this publisher"
|
||||||
msgstr "Bøger fra denne udgiver"
|
msgstr "Bøger fra denne udgiver"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:26
|
||||||
msgid "Alt+T"
|
msgid "Alt+T"
|
||||||
msgstr "Alt+T"
|
msgstr "Alt+T"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:26
|
||||||
msgid "Books with the same tags"
|
msgid "Books with the same tags"
|
||||||
msgstr "Bøger med samme mærker"
|
msgstr "Bøger med samme mærker"
|
||||||
|
|
||||||
@ -4121,6 +4162,10 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:636
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:636
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:637
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:637
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:690
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:690
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:98
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:100
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:103
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:105
|
||||||
#: /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: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: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:384
|
||||||
@ -4286,6 +4331,7 @@ msgstr "output"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:67
|
#: /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/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/config/save_template_ui.py:41
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:93
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:35
|
#: /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/filename_pattern_ui.py:106
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:107
|
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:107
|
||||||
@ -5559,11 +5605,6 @@ msgstr "Kommunikationsfejl med enheden"
|
|||||||
msgid "Select folder to open as device"
|
msgid "Select folder to open as device"
|
||||||
msgstr "Vælg mappe til at åbne som enhed"
|
msgstr "Vælg mappe til at åbne som enhed"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:678
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:231
|
|
||||||
msgid "Failed"
|
|
||||||
msgstr "Fejlede"
|
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:684
|
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:684
|
||||||
msgid "Error talking to device"
|
msgid "Error talking to device"
|
||||||
msgstr "Fejl ved kommunikation med enhed"
|
msgstr "Fejl ved kommunikation med enhed"
|
||||||
@ -6746,7 +6787,7 @@ msgstr "Tal"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76
|
#: /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:69
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:889
|
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:889
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:549
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:568
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr "Dato"
|
msgstr "Dato"
|
||||||
|
|
||||||
@ -6940,6 +6981,63 @@ msgstr "Tilgængelige variable:"
|
|||||||
msgid "Downloading social metadata, please wait..."
|
msgid "Downloading social metadata, please wait..."
|
||||||
msgstr "Downloader sociale metadata, vent venligst..."
|
msgstr "Downloader sociale metadata, vent venligst..."
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:50
|
||||||
|
msgid "Separator"
|
||||||
|
msgstr "Separator"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:63
|
||||||
|
msgid "Choose library"
|
||||||
|
msgstr "Vælg bibliotek"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:113
|
||||||
|
msgid "The main toolbar"
|
||||||
|
msgstr "Hovedværktøjslinjen"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:114
|
||||||
|
msgid "The main toolbar when a device is connected"
|
||||||
|
msgstr "Hovedværktøjslinjen når en enhed er forbundet"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:115
|
||||||
|
msgid "The context menu for the books in the calibre library"
|
||||||
|
msgstr "Kontekstmenuen til bøgerne i calibre-biblioteket"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:117
|
||||||
|
msgid "The context menu for the books on the device"
|
||||||
|
msgstr "Kontekstmenuen til bøgerne i enheden"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:94
|
||||||
|
msgid "Customize the actions in:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:95
|
||||||
|
msgid "A&vailable actions"
|
||||||
|
msgstr "&Tilgængelige aktioner"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:96
|
||||||
|
msgid "&Current actions"
|
||||||
|
msgstr "&Aktuelle aktioner"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:97
|
||||||
|
msgid "Move selected action up"
|
||||||
|
msgstr "Flyt udvalgte aktion op"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:99
|
||||||
|
msgid "Move selected action down"
|
||||||
|
msgstr "Flyt udvalgte aktion ned"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:101
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:78
|
||||||
|
msgid "Ctrl+S"
|
||||||
|
msgstr "Ctrl+S"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:102
|
||||||
|
msgid "Add selected actions to toolbar"
|
||||||
|
msgstr "Tilføj udvalgte aktioner til værktøjslinjen"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:104
|
||||||
|
msgid "Remove selected actions from toolbar"
|
||||||
|
msgstr "Fjern udvalgte aktioner fra værktøjslinjen"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/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"
|
msgid "&Show this warning again"
|
||||||
msgstr "&Vis denne advarsel igen"
|
msgstr "&Vis denne advarsel igen"
|
||||||
@ -7911,10 +8009,6 @@ msgstr ""
|
|||||||
msgid "Rename the item in every book where it is used."
|
msgid "Rename the item in every book where it is used."
|
||||||
msgstr "Omdøb emnet i bøger hvor det er brugt."
|
msgstr "Omdøb emnet i bøger hvor det er brugt."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/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/calibre/src/calibre/gui2/dialogs/test_email_ui.py:51
|
||||||
msgid "Test email settings"
|
msgid "Test email settings"
|
||||||
msgstr "Test e-mail indstillinger"
|
msgstr "Test e-mail indstillinger"
|
||||||
@ -8228,48 +8322,48 @@ msgstr "ISBN:"
|
|||||||
msgid "Regular expression (?P<isbn>)"
|
msgid "Regular expression (?P<isbn>)"
|
||||||
msgstr "Regulært udtryk (?P<isbn>)"
|
msgstr "Regulært udtryk (?P<isbn>)"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:104
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:105
|
||||||
msgid "Cover Browser"
|
msgid "Cover Browser"
|
||||||
msgstr "omslags-browser"
|
msgstr "omslags-browser"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:109
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:110
|
||||||
msgid "Shift+Alt+B"
|
msgid "Shift+Alt+B"
|
||||||
msgstr "Shift+Alt+B"
|
msgstr "Shift+Alt+B"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:123
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:124
|
||||||
msgid "Tag Browser"
|
msgid "Tag Browser"
|
||||||
msgstr "Mærke-browser"
|
msgstr "Mærke-browser"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:125
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:126
|
||||||
msgid "Shift+Alt+T"
|
msgid "Shift+Alt+T"
|
||||||
msgstr "Shift+Alt+T"
|
msgstr "Shift+Alt+T"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:145
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:146
|
||||||
msgid "version"
|
msgid "version"
|
||||||
msgstr "version"
|
msgstr "version"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:146
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:147
|
||||||
msgid "created by Kovid Goyal"
|
msgid "created by Kovid Goyal"
|
||||||
msgstr "skabt af Kovid Goyal"
|
msgstr "skabt af Kovid Goyal"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:164
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:165
|
||||||
msgid "Connected "
|
msgid "Connected "
|
||||||
msgstr "Forbundet "
|
msgstr "Forbundet "
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:173
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:174
|
||||||
msgid "Update found"
|
msgid "Update found"
|
||||||
msgstr "Opdatering fundet"
|
msgstr "Opdatering fundet"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:217
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:218
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:227
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:228
|
||||||
msgid "Book Details"
|
msgid "Book Details"
|
||||||
msgstr "bog detaljer"
|
msgstr "bog detaljer"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:219
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:220
|
||||||
msgid "Alt+D"
|
msgid "Alt+D"
|
||||||
msgstr "Alt+D"
|
msgstr "Alt+D"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:229
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:230
|
||||||
msgid "Shift+Alt+D"
|
msgid "Shift+Alt+D"
|
||||||
msgstr "Shift+Alt+D"
|
msgstr "Shift+Alt+D"
|
||||||
|
|
||||||
@ -8341,7 +8435,7 @@ msgid "Eject this device"
|
|||||||
msgstr "Skub denne enhed ud"
|
msgstr "Skub denne enhed ud"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:75
|
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:75
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:192
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:194
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "Bibliotek"
|
msgstr "Bibliotek"
|
||||||
|
|
||||||
@ -10604,7 +10698,52 @@ msgstr "Spørger/spørg ikke efter bekræftelse"
|
|||||||
msgid "Error: You must specify a column label"
|
msgid "Error: You must specify a column label"
|
||||||
msgstr "Fejl: Du skal specificere en kolonne label"
|
msgstr "Fejl: Du skal specificere en kolonne label"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/cli.py:809
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:803
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" %prog saved_searches [options] list\n"
|
||||||
|
" %prog saved_searches add name search\n"
|
||||||
|
" %prog saved_searches remove name\n"
|
||||||
|
"\n"
|
||||||
|
" Manage the saved searches stored in this database.\n"
|
||||||
|
" If you try to add a query with a name that already exists, it will be\n"
|
||||||
|
" replaced.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:821
|
||||||
|
msgid "Error: You must specify an action (add|remove|list)"
|
||||||
|
msgstr "Fejl: Du skal angive en aktion (tilføj|fjern|liste)"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:829
|
||||||
|
msgid "Name:"
|
||||||
|
msgstr "Navn:"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:830
|
||||||
|
msgid "Search string:"
|
||||||
|
msgstr "Søgestreng:"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:836
|
||||||
|
msgid "Error: You must specify a name and a search string"
|
||||||
|
msgstr "Fejl: Du skal angive et navn og en søgestreng"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:839
|
||||||
|
msgid "added"
|
||||||
|
msgstr "tilføjet"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:844
|
||||||
|
msgid "Error: You must specify a name"
|
||||||
|
msgstr "Fejl: Du skal angive et navn"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:847
|
||||||
|
msgid "removed"
|
||||||
|
msgstr "fjernet"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:851
|
||||||
|
msgid "Error: Action %s not recognized, must be one of: (add|remove|list)"
|
||||||
|
msgstr "Fejl: Aktion %s ikke genkendt, skal være en af: (tilføj|fjern|liste)"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:865
|
||||||
msgid ""
|
msgid ""
|
||||||
"%%prog command [options] [arguments]\n"
|
"%%prog command [options] [arguments]\n"
|
||||||
"\n"
|
"\n"
|
||||||
@ -10644,27 +10783,27 @@ msgstr "%sMiddel vurderingen er %3.1f"
|
|||||||
msgid "Main"
|
msgid "Main"
|
||||||
msgstr "Main/hjem/primær"
|
msgstr "Main/hjem/primær"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1911
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1915
|
||||||
msgid "<p>Migrating old database to ebook library in %s<br><center>"
|
msgid "<p>Migrating old database to ebook library in %s<br><center>"
|
||||||
msgstr "<p>Flytter gammel database til e-bogsbibliotek i %s<br><center>"
|
msgstr "<p>Flytter gammel database til e-bogsbibliotek i %s<br><center>"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1940
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1944
|
||||||
msgid "Copying <b>%s</b>"
|
msgid "Copying <b>%s</b>"
|
||||||
msgstr "Kopierer <b>%s</b>"
|
msgstr "Kopierer <b>%s</b>"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1957
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1961
|
||||||
msgid "Compacting database"
|
msgid "Compacting database"
|
||||||
msgstr "Komprimerer database"
|
msgstr "Komprimerer database"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2050
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2054
|
||||||
msgid "Checking SQL integrity..."
|
msgid "Checking SQL integrity..."
|
||||||
msgstr "Checker SQL integritet..."
|
msgstr "Checker SQL integritet..."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2091
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2095
|
||||||
msgid "Checking for missing files."
|
msgid "Checking for missing files."
|
||||||
msgstr "Checker for manglende filer."
|
msgstr "Checker for manglende filer."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2113
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2117
|
||||||
msgid "Checked id"
|
msgid "Checked id"
|
||||||
msgstr "Checket id"
|
msgstr "Checket id"
|
||||||
|
|
||||||
@ -10897,35 +11036,39 @@ msgstr ""
|
|||||||
"Angiv en restriktion som skal anvendes til denne aktivering. Denne mulighed "
|
"Angiv en restriktion som skal anvendes til denne aktivering. Denne mulighed "
|
||||||
"overstyrer enhver per-biblioteksindstilling angivet i GUI-en"
|
"overstyrer enhver per-biblioteksindstilling angivet i GUI-en"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:127
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:110
|
||||||
|
msgid "%d book"
|
||||||
|
msgstr "%d bog"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129
|
||||||
msgid "%d items"
|
msgid "%d items"
|
||||||
msgstr "%d emner"
|
msgstr "%d emner"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:144
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:146
|
||||||
msgid "RATING: %s<br />"
|
msgid "RATING: %s<br />"
|
||||||
msgstr "VURDERING: %s<br />"
|
msgstr "VURDERING: %s<br />"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:147
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:149
|
||||||
msgid "TAGS: %s<br />"
|
msgid "TAGS: %s<br />"
|
||||||
msgstr "MÆRKATER: %s<br />"
|
msgstr "MÆRKATER: %s<br />"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:151
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:153
|
||||||
msgid "SERIES: %s [%s]<br />"
|
msgid "SERIES: %s [%s]<br />"
|
||||||
msgstr "SERIER: %s [%s]<br />"
|
msgstr "SERIER: %s [%s]<br />"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:231
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:233
|
||||||
msgid "Books in your library"
|
msgid "Books in your library"
|
||||||
msgstr "Bøger i dit bibliotek"
|
msgstr "Bøger i dit bibliotek"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:237
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:239
|
||||||
msgid "By "
|
msgid "By "
|
||||||
msgstr "Af/efter "
|
msgstr "Af/efter "
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:238
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:240
|
||||||
msgid "Books sorted by "
|
msgid "Books sorted by "
|
||||||
msgstr "Bøger sorteret efter "
|
msgstr "Bøger sorteret efter "
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:549
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:568
|
||||||
msgid "Newest"
|
msgid "Newest"
|
||||||
msgstr "Nyeste"
|
msgstr "Nyeste"
|
||||||
|
|
||||||
|
@ -7,14 +7,14 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: calibre\n"
|
"Project-Id-Version: calibre\n"
|
||||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"POT-Creation-Date: 2010-08-18 22:24+0000\n"
|
"POT-Creation-Date: 2010-08-20 20:19+0000\n"
|
||||||
"PO-Revision-Date: 2010-08-20 02:58+0000\n"
|
"PO-Revision-Date: 2010-08-20 22:07+0000\n"
|
||||||
"Last-Translator: Eleftherios Kosmas <elkosmas@gmail.com>\n"
|
"Last-Translator: Eleftherios Kosmas <elkosmas@gmail.com>\n"
|
||||||
"Language-Team: Greek <el@li.org>\n"
|
"Language-Team: Greek <el@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2010-08-20 03:34+0000\n"
|
"X-Launchpad-Export-Date: 2010-08-22 03:44+0000\n"
|
||||||
"X-Generator: Launchpad (build Unknown)\n"
|
"X-Generator: Launchpad (build Unknown)\n"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43
|
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43
|
||||||
@ -27,7 +27,7 @@ msgstr "Δεν κάνει τίποτα"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:70
|
#: /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/nook/driver.py:71
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267
|
#: /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/prs505/sony_cache.py:507
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:405
|
#: /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:97
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100
|
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100
|
||||||
@ -136,10 +136,10 @@ msgstr "Δεν κάνει τίποτα"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1076
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1076
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1760
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1760
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1762
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1762
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1885
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1889
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:201
|
#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:201
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:134
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:136
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:137
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:139
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/xml.py:70
|
#: /home/kovid/work/calibre/src/calibre/library/server/xml.py:70
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:117
|
#: /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:46
|
||||||
@ -755,7 +755,11 @@ msgstr "Επικοινωνία με το Booq Avant"
|
|||||||
msgid "Communicate with the Sweex MM300"
|
msgid "Communicate with the Sweex MM300"
|
||||||
msgstr "Επικοινωνία με το Sweex MM300"
|
msgstr "Επικοινωνία με το Sweex MM300"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:78
|
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:79
|
||||||
|
msgid "Communicate with the Kogan"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:87
|
||||||
msgid "Communicate with the Pandigital Novel"
|
msgid "Communicate with the Pandigital Novel"
|
||||||
msgstr "Επικοινωνία με το Pandigital Novel"
|
msgstr "Επικοινωνία με το Pandigital Novel"
|
||||||
|
|
||||||
@ -799,7 +803,7 @@ msgstr ""
|
|||||||
"Κατάλογος πεδίων συνδεδομένων, χωρισμένων με κόμμα, στη συσκευή, προς "
|
"Κατάλογος πεδίων συνδεδομένων, χωρισμένων με κόμμα, στη συσκευή, προς "
|
||||||
"μετατροπή σε συλλογές. Οι πιθανότητες συμπεριλαμβάνουν: "
|
"μετατροπή σε συλλογές. Οι πιθανότητες συμπεριλαμβάνουν: "
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:144
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:145
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:68
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:68
|
||||||
msgid "Unnamed"
|
msgid "Unnamed"
|
||||||
msgstr "Χωρίς όνομα"
|
msgstr "Χωρίς όνομα"
|
||||||
@ -1636,7 +1640,11 @@ msgstr ""
|
|||||||
msgid "Creating"
|
msgid "Creating"
|
||||||
msgstr "Δημιουργία"
|
msgstr "Δημιουργία"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/__init__.py:18
|
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/__init__.py:20
|
||||||
|
msgid "Failed to parse: %s with error: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/__init__.py:26
|
||||||
msgid "ePub Fixer"
|
msgid "ePub Fixer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1652,7 +1660,7 @@ msgid ""
|
|||||||
"cause significant changes to your epub, complain to the epubcheck project."
|
"cause significant changes to your epub, complain to the epubcheck project."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/main.py:19
|
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/main.py:21
|
||||||
msgid ""
|
msgid ""
|
||||||
"%prog [options] file.epub\n"
|
"%prog [options] file.epub\n"
|
||||||
"\n"
|
"\n"
|
||||||
@ -1663,7 +1671,7 @@ msgid ""
|
|||||||
"detected. Use the options to control which errors are automatically fixed."
|
"detected. Use the options to control which errors are automatically fixed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/main.py:50
|
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/main.py:52
|
||||||
msgid "You must specify an epub file"
|
msgid "You must specify an epub file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1994,7 +2002,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:65
|
#: /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:359
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:887
|
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:887
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:550
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569
|
||||||
msgid "Title"
|
msgid "Title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -3037,6 +3045,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:63
|
#: /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/catalog.py:30
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:85
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:85
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:98
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:74
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:74
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:140
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:140
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:176
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:176
|
||||||
@ -3110,7 +3119,8 @@ msgid "Select destination for %s.%s"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:73
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:73
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:108
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:62
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:110
|
||||||
msgid "%d books"
|
msgid "%d books"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -3175,14 +3185,45 @@ msgstr ""
|
|||||||
msgid "Starting conversion of %d book(s)"
|
msgid "Starting conversion of %d book(s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:15
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:63
|
||||||
msgid "Copy to library"
|
msgid "Copy to library"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:16
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:64
|
||||||
msgid "Copy selected books to the specified library"
|
msgid "Copy selected books to the specified library"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:97
|
||||||
|
msgid "Cannot copy"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:102
|
||||||
|
msgid "No library"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:103
|
||||||
|
msgid "No library found at %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:106
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:110
|
||||||
|
msgid "Copying"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:120
|
||||||
|
msgid "Could not copy books: "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:120
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:678
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:231
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Απέτυχε"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:123
|
||||||
|
msgid "Copied %d books to %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:18
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:18
|
||||||
msgid "Del"
|
msgid "Del"
|
||||||
msgstr "Διαγραφή"
|
msgstr "Διαγραφή"
|
||||||
@ -3596,35 +3637,35 @@ msgstr ""
|
|||||||
msgid "Similar books..."
|
msgid "Similar books..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:22
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23
|
||||||
msgid "Alt+A"
|
msgid "Alt+A"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:22
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23
|
||||||
msgid "Books by same author"
|
msgid "Books by same author"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24
|
||||||
msgid "Alt+S"
|
msgid "Alt+S"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24
|
||||||
msgid "Books in this series"
|
msgid "Books in this series"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25
|
||||||
msgid "Alt+P"
|
msgid "Alt+P"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25
|
||||||
msgid "Books by this publisher"
|
msgid "Books by this publisher"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:26
|
||||||
msgid "Alt+T"
|
msgid "Alt+T"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:26
|
||||||
msgid "Books with the same tags"
|
msgid "Books with the same tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -3825,6 +3866,10 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:636
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:636
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:637
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:637
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:690
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:690
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:98
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:100
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:103
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:105
|
||||||
#: /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: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: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:384
|
||||||
@ -3987,6 +4032,7 @@ msgstr "έξοδος"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:67
|
#: /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/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/config/save_template_ui.py:41
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:93
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:35
|
#: /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/filename_pattern_ui.py:106
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:107
|
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:107
|
||||||
@ -5198,11 +5244,6 @@ msgstr ""
|
|||||||
msgid "Select folder to open as device"
|
msgid "Select folder to open as device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:678
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:231
|
|
||||||
msgid "Failed"
|
|
||||||
msgstr "Απέτυχε"
|
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:684
|
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:684
|
||||||
msgid "Error talking to device"
|
msgid "Error talking to device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -6295,7 +6336,7 @@ msgstr "Αριθμός"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76
|
#: /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:69
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:889
|
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:889
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:549
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:568
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr "Ημερομηνία"
|
msgstr "Ημερομηνία"
|
||||||
|
|
||||||
@ -6473,6 +6514,63 @@ msgstr ""
|
|||||||
msgid "Downloading social metadata, please wait..."
|
msgid "Downloading social metadata, please wait..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:50
|
||||||
|
msgid "Separator"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:63
|
||||||
|
msgid "Choose library"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:113
|
||||||
|
msgid "The main toolbar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:114
|
||||||
|
msgid "The main toolbar when a device is connected"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:115
|
||||||
|
msgid "The context menu for the books in the calibre library"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:117
|
||||||
|
msgid "The context menu for the books on the device"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:94
|
||||||
|
msgid "Customize the actions in:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:95
|
||||||
|
msgid "A&vailable actions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:96
|
||||||
|
msgid "&Current actions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:97
|
||||||
|
msgid "Move selected action up"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:99
|
||||||
|
msgid "Move selected action down"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:101
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:78
|
||||||
|
msgid "Ctrl+S"
|
||||||
|
msgstr "Ctrl+Ε"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:102
|
||||||
|
msgid "Add selected actions to toolbar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:104
|
||||||
|
msgid "Remove selected actions from toolbar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/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"
|
msgid "&Show this warning again"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -7396,10 +7494,6 @@ msgstr ""
|
|||||||
msgid "Rename the item in every book where it is used."
|
msgid "Rename the item in every book where it is used."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:78
|
|
||||||
msgid "Ctrl+S"
|
|
||||||
msgstr "Ctrl+Ε"
|
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/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"
|
msgid "Test email settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -7678,48 +7772,48 @@ msgstr ""
|
|||||||
msgid "Regular expression (?P<isbn>)"
|
msgid "Regular expression (?P<isbn>)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:104
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:105
|
||||||
msgid "Cover Browser"
|
msgid "Cover Browser"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:109
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:110
|
||||||
msgid "Shift+Alt+B"
|
msgid "Shift+Alt+B"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:123
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:124
|
||||||
msgid "Tag Browser"
|
msgid "Tag Browser"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:125
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:126
|
||||||
msgid "Shift+Alt+T"
|
msgid "Shift+Alt+T"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:145
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:146
|
||||||
msgid "version"
|
msgid "version"
|
||||||
msgstr "έκδοση"
|
msgstr "έκδοση"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:146
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:147
|
||||||
msgid "created by Kovid Goyal"
|
msgid "created by Kovid Goyal"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:164
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:165
|
||||||
msgid "Connected "
|
msgid "Connected "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:173
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:174
|
||||||
msgid "Update found"
|
msgid "Update found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:217
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:218
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:227
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:228
|
||||||
msgid "Book Details"
|
msgid "Book Details"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:219
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:220
|
||||||
msgid "Alt+D"
|
msgid "Alt+D"
|
||||||
msgstr "Alt+Π"
|
msgstr "Alt+Π"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:229
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:230
|
||||||
msgid "Shift+Alt+D"
|
msgid "Shift+Alt+D"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -7791,7 +7885,7 @@ msgid "Eject this device"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:75
|
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:75
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:192
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:194
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "Βιβλιοθήκη"
|
msgstr "Βιβλιοθήκη"
|
||||||
|
|
||||||
@ -9780,7 +9874,52 @@ msgstr ""
|
|||||||
msgid "Error: You must specify a column label"
|
msgid "Error: You must specify a column label"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/cli.py:809
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:803
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" %prog saved_searches [options] list\n"
|
||||||
|
" %prog saved_searches add name search\n"
|
||||||
|
" %prog saved_searches remove name\n"
|
||||||
|
"\n"
|
||||||
|
" Manage the saved searches stored in this database.\n"
|
||||||
|
" If you try to add a query with a name that already exists, it will be\n"
|
||||||
|
" replaced.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:821
|
||||||
|
msgid "Error: You must specify an action (add|remove|list)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:829
|
||||||
|
msgid "Name:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:830
|
||||||
|
msgid "Search string:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:836
|
||||||
|
msgid "Error: You must specify a name and a search string"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:839
|
||||||
|
msgid "added"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:844
|
||||||
|
msgid "Error: You must specify a name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:847
|
||||||
|
msgid "removed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:851
|
||||||
|
msgid "Error: Action %s not recognized, must be one of: (add|remove|list)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:865
|
||||||
msgid ""
|
msgid ""
|
||||||
"%%prog command [options] [arguments]\n"
|
"%%prog command [options] [arguments]\n"
|
||||||
"\n"
|
"\n"
|
||||||
@ -9810,27 +9949,27 @@ msgstr ""
|
|||||||
msgid "Main"
|
msgid "Main"
|
||||||
msgstr "Κύριο"
|
msgstr "Κύριο"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1911
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1915
|
||||||
msgid "<p>Migrating old database to ebook library in %s<br><center>"
|
msgid "<p>Migrating old database to ebook library in %s<br><center>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1940
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1944
|
||||||
msgid "Copying <b>%s</b>"
|
msgid "Copying <b>%s</b>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1957
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1961
|
||||||
msgid "Compacting database"
|
msgid "Compacting database"
|
||||||
msgstr "Συμπίεση βάσης δεδομένων"
|
msgstr "Συμπίεση βάσης δεδομένων"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2050
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2054
|
||||||
msgid "Checking SQL integrity..."
|
msgid "Checking SQL integrity..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2091
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2095
|
||||||
msgid "Checking for missing files."
|
msgid "Checking for missing files."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2113
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2117
|
||||||
msgid "Checked id"
|
msgid "Checked id"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -10026,35 +10165,39 @@ msgid ""
|
|||||||
"overrides any per-library settings specified in the GUI"
|
"overrides any per-library settings specified in the GUI"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:127
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:110
|
||||||
|
msgid "%d book"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129
|
||||||
msgid "%d items"
|
msgid "%d items"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:144
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:146
|
||||||
msgid "RATING: %s<br />"
|
msgid "RATING: %s<br />"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:147
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:149
|
||||||
msgid "TAGS: %s<br />"
|
msgid "TAGS: %s<br />"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:151
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:153
|
||||||
msgid "SERIES: %s [%s]<br />"
|
msgid "SERIES: %s [%s]<br />"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:231
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:233
|
||||||
msgid "Books in your library"
|
msgid "Books in your library"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:237
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:239
|
||||||
msgid "By "
|
msgid "By "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:238
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:240
|
||||||
msgid "Books sorted by "
|
msgid "Books sorted by "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:549
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:568
|
||||||
msgid "Newest"
|
msgid "Newest"
|
||||||
msgstr "Νεώτερη"
|
msgstr "Νεώτερη"
|
||||||
|
|
||||||
|
@ -7,14 +7,14 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: calibre\n"
|
"Project-Id-Version: calibre\n"
|
||||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"POT-Creation-Date: 2010-08-18 22:24+0000\n"
|
"POT-Creation-Date: 2010-08-20 20:19+0000\n"
|
||||||
"PO-Revision-Date: 2010-08-19 22:29+0000\n"
|
"PO-Revision-Date: 2010-08-20 21:29+0000\n"
|
||||||
"Last-Translator: Bingen Markes <Unknown>\n"
|
"Last-Translator: Kovid Goyal <Unknown>\n"
|
||||||
"Language-Team: Basque <eu@li.org>\n"
|
"Language-Team: Basque <eu@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2010-08-20 03:34+0000\n"
|
"X-Launchpad-Export-Date: 2010-08-21 03:49+0000\n"
|
||||||
"X-Generator: Launchpad (build Unknown)\n"
|
"X-Generator: Launchpad (build Unknown)\n"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43
|
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43
|
||||||
@ -27,7 +27,7 @@ msgstr "Ez du ezer egiten"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:70
|
#: /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/nook/driver.py:71
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267
|
#: /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/prs505/sony_cache.py:507
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:405
|
#: /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:97
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100
|
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100
|
||||||
@ -136,10 +136,10 @@ msgstr "Ez du ezer egiten"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1076
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1076
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1760
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1760
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1762
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1762
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1885
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1889
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:201
|
#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:201
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:134
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:136
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:137
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:139
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/xml.py:70
|
#: /home/kovid/work/calibre/src/calibre/library/server/xml.py:70
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:117
|
#: /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:46
|
||||||
@ -772,7 +772,11 @@ msgstr "Jar zaitez harremanetan \"Booq Avant\" horrekin."
|
|||||||
msgid "Communicate with the Sweex MM300"
|
msgid "Communicate with the Sweex MM300"
|
||||||
msgstr "Jar zaitez harremanetan \"Sweex MM300\" horrekin."
|
msgstr "Jar zaitez harremanetan \"Sweex MM300\" horrekin."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:78
|
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:79
|
||||||
|
msgid "Communicate with the Kogan"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:87
|
||||||
msgid "Communicate with the Pandigital Novel"
|
msgid "Communicate with the Pandigital Novel"
|
||||||
msgstr "Jar zaitez harremanetan \"Pandigital Novel\" horrekin."
|
msgstr "Jar zaitez harremanetan \"Pandigital Novel\" horrekin."
|
||||||
|
|
||||||
@ -816,7 +820,7 @@ msgstr ""
|
|||||||
"Komez bereiziriko meta-datuen eremuen zerrenda gailuan bildumak bihurtzeko "
|
"Komez bereiziriko meta-datuen eremuen zerrenda gailuan bildumak bihurtzeko "
|
||||||
"modukoak. Aukeren artean hauek: "
|
"modukoak. Aukeren artean hauek: "
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:144
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:145
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:68
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:68
|
||||||
msgid "Unnamed"
|
msgid "Unnamed"
|
||||||
msgstr "Identifikatu gabea"
|
msgstr "Identifikatu gabea"
|
||||||
@ -1756,7 +1760,11 @@ msgstr ""
|
|||||||
msgid "Creating"
|
msgid "Creating"
|
||||||
msgstr "Sortzen"
|
msgstr "Sortzen"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/__init__.py:18
|
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/__init__.py:20
|
||||||
|
msgid "Failed to parse: %s with error: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/__init__.py:26
|
||||||
msgid "ePub Fixer"
|
msgid "ePub Fixer"
|
||||||
msgstr "ePub Fixer (ePUB formatuan doitzeko tresna)"
|
msgstr "ePub Fixer (ePUB formatuan doitzeko tresna)"
|
||||||
|
|
||||||
@ -1778,7 +1786,7 @@ msgstr ""
|
|||||||
"fitxategiari aldaketa nabarmenak ekar liezazkioke... Horrela izan bada, "
|
"fitxategiari aldaketa nabarmenak ekar liezazkioke... Horrela izan bada, "
|
||||||
"kexak \"ePUB Project\" horretara bideratu."
|
"kexak \"ePUB Project\" horretara bideratu."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/main.py:19
|
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/main.py:21
|
||||||
msgid ""
|
msgid ""
|
||||||
"%prog [options] file.epub\n"
|
"%prog [options] file.epub\n"
|
||||||
"\n"
|
"\n"
|
||||||
@ -1797,7 +1805,7 @@ msgstr ""
|
|||||||
"detektaturiko akats bakoitzari buruzko mezu bana. Erabil itzazu aukerak "
|
"detektaturiko akats bakoitzari buruzko mezu bana. Erabil itzazu aukerak "
|
||||||
"kontrolatzeko zeintzuk akats izan dira automatikoki eraldatuak."
|
"kontrolatzeko zeintzuk akats izan dira automatikoki eraldatuak."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/main.py:50
|
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/main.py:52
|
||||||
msgid "You must specify an epub file"
|
msgid "You must specify an epub file"
|
||||||
msgstr "ePUB fitxategi bat zehaztu beharko duzu"
|
msgstr "ePUB fitxategi bat zehaztu beharko duzu"
|
||||||
|
|
||||||
@ -2129,6 +2137,7 @@ msgstr ""
|
|||||||
"%prog [options] mybook.lrf\n"
|
"%prog [options] mybook.lrf\n"
|
||||||
"\n"
|
"\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
"\n"
|
||||||
"Erakutsi/Editatu metadatuak LRF fitxategian.\n"
|
"Erakutsi/Editatu metadatuak LRF fitxategian.\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
|
||||||
@ -2219,7 +2228,7 @@ msgstr "Komikia"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:65
|
#: /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:359
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:887
|
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:887
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:550
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569
|
||||||
msgid "Title"
|
msgid "Title"
|
||||||
msgstr "Izenburua"
|
msgstr "Izenburua"
|
||||||
|
|
||||||
@ -3442,6 +3451,7 @@ msgstr "Liburutegi nagusian erabiltzaileak sortu dituen oharrak bakarrik"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:63
|
#: /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/catalog.py:30
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:85
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:85
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:98
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:74
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:74
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:140
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:140
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:176
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:176
|
||||||
@ -3517,7 +3527,8 @@ msgid "Select destination for %s.%s"
|
|||||||
msgstr "Aukeratu helburua honentzat: %s.%s"
|
msgstr "Aukeratu helburua honentzat: %s.%s"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:73
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:73
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:108
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:62
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:110
|
||||||
msgid "%d books"
|
msgid "%d books"
|
||||||
msgstr "%d books"
|
msgstr "%d books"
|
||||||
|
|
||||||
@ -3586,14 +3597,45 @@ msgstr "Ezin da bihurtu"
|
|||||||
msgid "Starting conversion of %d book(s)"
|
msgid "Starting conversion of %d book(s)"
|
||||||
msgstr "%d liburu(ar)en bihurketa abiatzen"
|
msgstr "%d liburu(ar)en bihurketa abiatzen"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:15
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:63
|
||||||
msgid "Copy to library"
|
msgid "Copy to library"
|
||||||
msgstr "Liburutegira kopiatu."
|
msgstr "Liburutegira kopiatu."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:16
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:64
|
||||||
msgid "Copy selected books to the specified library"
|
msgid "Copy selected books to the specified library"
|
||||||
msgstr "Kopiatu hautatutako liburuak adierazitako liburutegian"
|
msgstr "Kopiatu hautatutako liburuak adierazitako liburutegian"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:97
|
||||||
|
msgid "Cannot copy"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:102
|
||||||
|
msgid "No library"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:103
|
||||||
|
msgid "No library found at %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:106
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:110
|
||||||
|
msgid "Copying"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:120
|
||||||
|
msgid "Could not copy books: "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:120
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:678
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:231
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Huts egin du"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:123
|
||||||
|
msgid "Copied %d books to %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:18
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:18
|
||||||
msgid "Del"
|
msgid "Del"
|
||||||
msgstr "Del"
|
msgstr "Del"
|
||||||
@ -4028,35 +4070,35 @@ msgstr "No detailed information is available for books on the device."
|
|||||||
msgid "Similar books..."
|
msgid "Similar books..."
|
||||||
msgstr "Similar books..."
|
msgstr "Similar books..."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:22
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23
|
||||||
msgid "Alt+A"
|
msgid "Alt+A"
|
||||||
msgstr "Alt+A"
|
msgstr "Alt+A"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:22
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23
|
||||||
msgid "Books by same author"
|
msgid "Books by same author"
|
||||||
msgstr "Books by same author"
|
msgstr "Books by same author"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24
|
||||||
msgid "Alt+S"
|
msgid "Alt+S"
|
||||||
msgstr "Alt+S"
|
msgstr "Alt+S"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24
|
||||||
msgid "Books in this series"
|
msgid "Books in this series"
|
||||||
msgstr "Books in this series"
|
msgstr "Books in this series"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25
|
||||||
msgid "Alt+P"
|
msgid "Alt+P"
|
||||||
msgstr "Alt+P"
|
msgstr "Alt+P"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25
|
||||||
msgid "Books by this publisher"
|
msgid "Books by this publisher"
|
||||||
msgstr "Books by this publisher"
|
msgstr "Books by this publisher"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:26
|
||||||
msgid "Alt+T"
|
msgid "Alt+T"
|
||||||
msgstr "Alt+T"
|
msgstr "Alt+T"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:26
|
||||||
msgid "Books with the same tags"
|
msgid "Books with the same tags"
|
||||||
msgstr "Books with the same tags"
|
msgstr "Books with the same tags"
|
||||||
|
|
||||||
@ -4278,6 +4320,10 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:636
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:636
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:637
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:637
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:690
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:690
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:98
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:100
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:103
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:105
|
||||||
#: /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: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: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:384
|
||||||
@ -4445,6 +4491,7 @@ msgstr "outputa, helburua"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:67
|
#: /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/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/config/save_template_ui.py:41
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:93
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:35
|
#: /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/filename_pattern_ui.py:106
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:107
|
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:107
|
||||||
@ -5727,11 +5774,6 @@ msgstr "Irakurgailuarekin komunikatzeko saioak huts egin du"
|
|||||||
msgid "Select folder to open as device"
|
msgid "Select folder to open as device"
|
||||||
msgstr "Aukeratu karpeta bat irakurgailua izango balitz bezala zabaltzeko"
|
msgstr "Aukeratu karpeta bat irakurgailua izango balitz bezala zabaltzeko"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:678
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:231
|
|
||||||
msgid "Failed"
|
|
||||||
msgstr "Huts egin du"
|
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:684
|
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:684
|
||||||
msgid "Error talking to device"
|
msgid "Error talking to device"
|
||||||
msgstr "Akatsen bat irakurgailuarekin komunikatzerakoan"
|
msgstr "Akatsen bat irakurgailuarekin komunikatzerakoan"
|
||||||
@ -6899,7 +6941,7 @@ msgstr "Number"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76
|
#: /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:69
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:889
|
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:889
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:549
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:568
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr "Date"
|
msgstr "Date"
|
||||||
|
|
||||||
@ -7092,6 +7134,63 @@ msgstr "Available variables:"
|
|||||||
msgid "Downloading social metadata, please wait..."
|
msgid "Downloading social metadata, please wait..."
|
||||||
msgstr "Downloading social metadata, please wait..."
|
msgstr "Downloading social metadata, please wait..."
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:50
|
||||||
|
msgid "Separator"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:63
|
||||||
|
msgid "Choose library"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:113
|
||||||
|
msgid "The main toolbar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:114
|
||||||
|
msgid "The main toolbar when a device is connected"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:115
|
||||||
|
msgid "The context menu for the books in the calibre library"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:117
|
||||||
|
msgid "The context menu for the books on the device"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:94
|
||||||
|
msgid "Customize the actions in:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:95
|
||||||
|
msgid "A&vailable actions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:96
|
||||||
|
msgid "&Current actions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:97
|
||||||
|
msgid "Move selected action up"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:99
|
||||||
|
msgid "Move selected action down"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:101
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:78
|
||||||
|
msgid "Ctrl+S"
|
||||||
|
msgstr "Ctrl+S"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:102
|
||||||
|
msgid "Add selected actions to toolbar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:104
|
||||||
|
msgid "Remove selected actions from toolbar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/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"
|
msgid "&Show this warning again"
|
||||||
msgstr "&Show this warning again"
|
msgstr "&Show this warning again"
|
||||||
@ -8057,10 +8156,6 @@ msgstr ""
|
|||||||
msgid "Rename the item in every book where it is used."
|
msgid "Rename the item in every book where it is used."
|
||||||
msgstr "Rename the item in every book where it is used."
|
msgstr "Rename the item in every book where it is used."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/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/calibre/src/calibre/gui2/dialogs/test_email_ui.py:51
|
||||||
msgid "Test email settings"
|
msgid "Test email settings"
|
||||||
msgstr "Test email settings"
|
msgstr "Test email settings"
|
||||||
@ -8371,48 +8466,48 @@ msgstr "ISBN:"
|
|||||||
msgid "Regular expression (?P<isbn>)"
|
msgid "Regular expression (?P<isbn>)"
|
||||||
msgstr "Regular expression (?P<isbn>)"
|
msgstr "Regular expression (?P<isbn>)"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:104
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:105
|
||||||
msgid "Cover Browser"
|
msgid "Cover Browser"
|
||||||
msgstr "Cover Browser"
|
msgstr "Cover Browser"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:109
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:110
|
||||||
msgid "Shift+Alt+B"
|
msgid "Shift+Alt+B"
|
||||||
msgstr "Shift+Alt+B"
|
msgstr "Shift+Alt+B"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:123
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:124
|
||||||
msgid "Tag Browser"
|
msgid "Tag Browser"
|
||||||
msgstr "Tag Browser"
|
msgstr "Tag Browser"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:125
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:126
|
||||||
msgid "Shift+Alt+T"
|
msgid "Shift+Alt+T"
|
||||||
msgstr "Shift+Alt+T"
|
msgstr "Shift+Alt+T"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:145
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:146
|
||||||
msgid "version"
|
msgid "version"
|
||||||
msgstr "version"
|
msgstr "version"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:146
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:147
|
||||||
msgid "created by Kovid Goyal"
|
msgid "created by Kovid Goyal"
|
||||||
msgstr "created by Kovid Goyal"
|
msgstr "created by Kovid Goyal"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:164
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:165
|
||||||
msgid "Connected "
|
msgid "Connected "
|
||||||
msgstr "Connected "
|
msgstr "Connected "
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:173
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:174
|
||||||
msgid "Update found"
|
msgid "Update found"
|
||||||
msgstr "Update found"
|
msgstr "Update found"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:217
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:218
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:227
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:228
|
||||||
msgid "Book Details"
|
msgid "Book Details"
|
||||||
msgstr "Book Details"
|
msgstr "Book Details"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:219
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:220
|
||||||
msgid "Alt+D"
|
msgid "Alt+D"
|
||||||
msgstr "Alt+D"
|
msgstr "Alt+D"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:229
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:230
|
||||||
msgid "Shift+Alt+D"
|
msgid "Shift+Alt+D"
|
||||||
msgstr "Shift+Alt+D"
|
msgstr "Shift+Alt+D"
|
||||||
|
|
||||||
@ -8484,7 +8579,7 @@ msgid "Eject this device"
|
|||||||
msgstr "Eject this device"
|
msgstr "Eject this device"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:75
|
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:75
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:192
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:194
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "Library"
|
msgstr "Library"
|
||||||
|
|
||||||
@ -10744,7 +10839,52 @@ msgstr "Do not ask for confirmation"
|
|||||||
msgid "Error: You must specify a column label"
|
msgid "Error: You must specify a column label"
|
||||||
msgstr "Error: You must specify a column label"
|
msgstr "Error: You must specify a column label"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/cli.py:809
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:803
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" %prog saved_searches [options] list\n"
|
||||||
|
" %prog saved_searches add name search\n"
|
||||||
|
" %prog saved_searches remove name\n"
|
||||||
|
"\n"
|
||||||
|
" Manage the saved searches stored in this database.\n"
|
||||||
|
" If you try to add a query with a name that already exists, it will be\n"
|
||||||
|
" replaced.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:821
|
||||||
|
msgid "Error: You must specify an action (add|remove|list)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:829
|
||||||
|
msgid "Name:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:830
|
||||||
|
msgid "Search string:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:836
|
||||||
|
msgid "Error: You must specify a name and a search string"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:839
|
||||||
|
msgid "added"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:844
|
||||||
|
msgid "Error: You must specify a name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:847
|
||||||
|
msgid "removed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:851
|
||||||
|
msgid "Error: Action %s not recognized, must be one of: (add|remove|list)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:865
|
||||||
msgid ""
|
msgid ""
|
||||||
"%%prog command [options] [arguments]\n"
|
"%%prog command [options] [arguments]\n"
|
||||||
"\n"
|
"\n"
|
||||||
@ -10784,27 +10924,27 @@ msgstr "%sAverage rating is %3.1f"
|
|||||||
msgid "Main"
|
msgid "Main"
|
||||||
msgstr "Main"
|
msgstr "Main"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1911
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1915
|
||||||
msgid "<p>Migrating old database to ebook library in %s<br><center>"
|
msgid "<p>Migrating old database to ebook library in %s<br><center>"
|
||||||
msgstr "<p>Migrating old database to ebook library in %s<br><center>"
|
msgstr "<p>Migrating old database to ebook library in %s<br><center>"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1940
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1944
|
||||||
msgid "Copying <b>%s</b>"
|
msgid "Copying <b>%s</b>"
|
||||||
msgstr "Copying <b>%s</b>"
|
msgstr "Copying <b>%s</b>"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1957
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1961
|
||||||
msgid "Compacting database"
|
msgid "Compacting database"
|
||||||
msgstr "Compacting database"
|
msgstr "Compacting database"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2050
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2054
|
||||||
msgid "Checking SQL integrity..."
|
msgid "Checking SQL integrity..."
|
||||||
msgstr "Checking SQL integrity..."
|
msgstr "Checking SQL integrity..."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2091
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2095
|
||||||
msgid "Checking for missing files."
|
msgid "Checking for missing files."
|
||||||
msgstr "Checking for missing files."
|
msgstr "Checking for missing files."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2113
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2117
|
||||||
msgid "Checked id"
|
msgid "Checked id"
|
||||||
msgstr "Checked id"
|
msgstr "Checked id"
|
||||||
|
|
||||||
@ -11036,35 +11176,39 @@ msgid ""
|
|||||||
"overrides any per-library settings specified in the GUI"
|
"overrides any per-library settings specified in the GUI"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:127
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:110
|
||||||
|
msgid "%d book"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129
|
||||||
msgid "%d items"
|
msgid "%d items"
|
||||||
msgstr "%d items"
|
msgstr "%d items"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:144
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:146
|
||||||
msgid "RATING: %s<br />"
|
msgid "RATING: %s<br />"
|
||||||
msgstr "RATING: %s<br />"
|
msgstr "RATING: %s<br />"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:147
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:149
|
||||||
msgid "TAGS: %s<br />"
|
msgid "TAGS: %s<br />"
|
||||||
msgstr "TAGS: %s<br />"
|
msgstr "TAGS: %s<br />"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:151
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:153
|
||||||
msgid "SERIES: %s [%s]<br />"
|
msgid "SERIES: %s [%s]<br />"
|
||||||
msgstr "SERIES: %s [%s]<br />"
|
msgstr "SERIES: %s [%s]<br />"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:231
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:233
|
||||||
msgid "Books in your library"
|
msgid "Books in your library"
|
||||||
msgstr "Books in your library"
|
msgstr "Books in your library"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:237
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:239
|
||||||
msgid "By "
|
msgid "By "
|
||||||
msgstr "By "
|
msgstr "By "
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:238
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:240
|
||||||
msgid "Books sorted by "
|
msgid "Books sorted by "
|
||||||
msgstr "Books sorted by "
|
msgstr "Books sorted by "
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:549
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:568
|
||||||
msgid "Newest"
|
msgid "Newest"
|
||||||
msgstr "Newest"
|
msgstr "Newest"
|
||||||
|
|
||||||
|
@ -7,14 +7,14 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: calibre\n"
|
"Project-Id-Version: calibre\n"
|
||||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"POT-Creation-Date: 2010-08-18 22:24+0000\n"
|
"POT-Creation-Date: 2010-08-20 20:19+0000\n"
|
||||||
"PO-Revision-Date: 2010-08-20 00:46+0000\n"
|
"PO-Revision-Date: 2010-08-20 22:29+0000\n"
|
||||||
"Last-Translator: Marcos X. <Unknown>\n"
|
"Last-Translator: Kovid Goyal <Unknown>\n"
|
||||||
"Language-Team: Galician <gl@li.org>\n"
|
"Language-Team: Galician <gl@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2010-08-20 03:34+0000\n"
|
"X-Launchpad-Export-Date: 2010-08-22 03:44+0000\n"
|
||||||
"X-Generator: Launchpad (build Unknown)\n"
|
"X-Generator: Launchpad (build Unknown)\n"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43
|
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43
|
||||||
@ -27,7 +27,7 @@ msgstr "Non facer nada"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:70
|
#: /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/nook/driver.py:71
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267
|
#: /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/prs505/sony_cache.py:507
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:405
|
#: /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:97
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100
|
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100
|
||||||
@ -136,10 +136,10 @@ msgstr "Non facer nada"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1076
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1076
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1760
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1760
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1762
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1762
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1885
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1889
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:201
|
#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:201
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:134
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:136
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:137
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:139
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/xml.py:70
|
#: /home/kovid/work/calibre/src/calibre/library/server/xml.py:70
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:117
|
#: /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:46
|
||||||
@ -762,7 +762,11 @@ msgstr "Comunicar co Booq Avant"
|
|||||||
msgid "Communicate with the Sweex MM300"
|
msgid "Communicate with the Sweex MM300"
|
||||||
msgstr "Conectar co Sweex MM300"
|
msgstr "Conectar co Sweex MM300"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:78
|
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:79
|
||||||
|
msgid "Communicate with the Kogan"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:87
|
||||||
msgid "Communicate with the Pandigital Novel"
|
msgid "Communicate with the Pandigital Novel"
|
||||||
msgstr "Conectar co Pandigital Novel"
|
msgstr "Conectar co Pandigital Novel"
|
||||||
|
|
||||||
@ -806,7 +810,7 @@ msgstr ""
|
|||||||
"Lista separada por comas de campos de metadatos para convertelos en "
|
"Lista separada por comas de campos de metadatos para convertelos en "
|
||||||
"coleccións no dispositivo. As posibilidades son: "
|
"coleccións no dispositivo. As posibilidades son: "
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:144
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:145
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:68
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:68
|
||||||
msgid "Unnamed"
|
msgid "Unnamed"
|
||||||
msgstr "Sen nome"
|
msgstr "Sen nome"
|
||||||
@ -1690,7 +1694,11 @@ msgstr "Aplicando transformacións ao libro electrónico..."
|
|||||||
msgid "Creating"
|
msgid "Creating"
|
||||||
msgstr "A crear"
|
msgstr "A crear"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/__init__.py:18
|
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/__init__.py:20
|
||||||
|
msgid "Failed to parse: %s with error: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/__init__.py:26
|
||||||
msgid "ePub Fixer"
|
msgid "ePub Fixer"
|
||||||
msgstr "Corrector de ePub"
|
msgstr "Corrector de ePub"
|
||||||
|
|
||||||
@ -1711,7 +1719,7 @@ msgstr ""
|
|||||||
"provoar mudanzas significantes no epub. Dirixa as súas queixas ao proxecto "
|
"provoar mudanzas significantes no epub. Dirixa as súas queixas ao proxecto "
|
||||||
"epubcheck."
|
"epubcheck."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/main.py:19
|
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/main.py:21
|
||||||
msgid ""
|
msgid ""
|
||||||
"%prog [options] file.epub\n"
|
"%prog [options] file.epub\n"
|
||||||
"\n"
|
"\n"
|
||||||
@ -1722,7 +1730,7 @@ msgid ""
|
|||||||
"detected. Use the options to control which errors are automatically fixed."
|
"detected. Use the options to control which errors are automatically fixed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/main.py:50
|
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/main.py:52
|
||||||
msgid "You must specify an epub file"
|
msgid "You must specify an epub file"
|
||||||
msgstr "Debe especificar un ficheiro de epub"
|
msgstr "Debe especificar un ficheiro de epub"
|
||||||
|
|
||||||
@ -2115,7 +2123,7 @@ msgstr "Cómic"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:65
|
#: /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:359
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:887
|
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:887
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:550
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569
|
||||||
msgid "Title"
|
msgid "Title"
|
||||||
msgstr "Título"
|
msgstr "Título"
|
||||||
|
|
||||||
@ -3324,6 +3332,7 @@ msgstr "Usar as anotacións xeradas só dende a biblioteca principal"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:63
|
#: /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/catalog.py:30
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:85
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:85
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:98
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:74
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:74
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:140
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:140
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:176
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:176
|
||||||
@ -3399,7 +3408,8 @@ msgid "Select destination for %s.%s"
|
|||||||
msgstr "Escoller o destino para %s %s"
|
msgstr "Escoller o destino para %s %s"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:73
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:73
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:108
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:62
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:110
|
||||||
msgid "%d books"
|
msgid "%d books"
|
||||||
msgstr "%d libros"
|
msgstr "%d libros"
|
||||||
|
|
||||||
@ -3466,14 +3476,45 @@ msgstr "Non se pode converter"
|
|||||||
msgid "Starting conversion of %d book(s)"
|
msgid "Starting conversion of %d book(s)"
|
||||||
msgstr "Esta a comezar a conversión de %d libros(s)"
|
msgstr "Esta a comezar a conversión de %d libros(s)"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:15
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:63
|
||||||
msgid "Copy to library"
|
msgid "Copy to library"
|
||||||
msgstr "Copiar á biblioteca"
|
msgstr "Copiar á biblioteca"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:16
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:64
|
||||||
msgid "Copy selected books to the specified library"
|
msgid "Copy selected books to the specified library"
|
||||||
msgstr "Copiar os libros seleccionados á biblioteca especificada"
|
msgstr "Copiar os libros seleccionados á biblioteca especificada"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:97
|
||||||
|
msgid "Cannot copy"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:102
|
||||||
|
msgid "No library"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:103
|
||||||
|
msgid "No library found at %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:106
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:110
|
||||||
|
msgid "Copying"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:120
|
||||||
|
msgid "Could not copy books: "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:120
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:678
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:231
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Fallou"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:123
|
||||||
|
msgid "Copied %d books to %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:18
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:18
|
||||||
msgid "Del"
|
msgid "Del"
|
||||||
msgstr "Supr"
|
msgstr "Supr"
|
||||||
@ -3902,35 +3943,35 @@ msgstr "Non hai dispoñíbel información detallada dos libros no dispositivo."
|
|||||||
msgid "Similar books..."
|
msgid "Similar books..."
|
||||||
msgstr "Libros semellantes..."
|
msgstr "Libros semellantes..."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:22
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23
|
||||||
msgid "Alt+A"
|
msgid "Alt+A"
|
||||||
msgstr "Alt+A"
|
msgstr "Alt+A"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:22
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23
|
||||||
msgid "Books by same author"
|
msgid "Books by same author"
|
||||||
msgstr "Libros coa mesma autoría"
|
msgstr "Libros coa mesma autoría"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24
|
||||||
msgid "Alt+S"
|
msgid "Alt+S"
|
||||||
msgstr "Alt+S"
|
msgstr "Alt+S"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24
|
||||||
msgid "Books in this series"
|
msgid "Books in this series"
|
||||||
msgstr "Libros con esta serie"
|
msgstr "Libros con esta serie"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25
|
||||||
msgid "Alt+P"
|
msgid "Alt+P"
|
||||||
msgstr "Alt+P"
|
msgstr "Alt+P"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25
|
||||||
msgid "Books by this publisher"
|
msgid "Books by this publisher"
|
||||||
msgstr "Libros por editorial"
|
msgstr "Libros por editorial"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:26
|
||||||
msgid "Alt+T"
|
msgid "Alt+T"
|
||||||
msgstr "Alt+T"
|
msgstr "Alt+T"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:26
|
||||||
msgid "Books with the same tags"
|
msgid "Books with the same tags"
|
||||||
msgstr "Libros coas mesmas etiquetas"
|
msgstr "Libros coas mesmas etiquetas"
|
||||||
|
|
||||||
@ -4150,6 +4191,10 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:636
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:636
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:637
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:637
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:690
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:690
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:98
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:100
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:103
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:105
|
||||||
#: /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: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: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:384
|
||||||
@ -4316,6 +4361,7 @@ msgstr "saída"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:67
|
#: /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/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/config/save_template_ui.py:41
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:93
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:35
|
#: /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/filename_pattern_ui.py:106
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:107
|
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:107
|
||||||
@ -5561,11 +5607,6 @@ msgstr "Erro ao conectar co dispositivo"
|
|||||||
msgid "Select folder to open as device"
|
msgid "Select folder to open as device"
|
||||||
msgstr "Escoller o cartafol para abrir co como dispositivo"
|
msgstr "Escoller o cartafol para abrir co como dispositivo"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:678
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:231
|
|
||||||
msgid "Failed"
|
|
||||||
msgstr "Fallou"
|
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:684
|
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:684
|
||||||
msgid "Error talking to device"
|
msgid "Error talking to device"
|
||||||
msgstr "Erro ao conectar co dispositivo"
|
msgstr "Erro ao conectar co dispositivo"
|
||||||
@ -6749,7 +6790,7 @@ msgstr "Número"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76
|
#: /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:69
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:889
|
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:889
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:549
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:568
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr "Data"
|
msgstr "Data"
|
||||||
|
|
||||||
@ -6941,6 +6982,63 @@ msgstr "Variábeis dispoñíbeis"
|
|||||||
msgid "Downloading social metadata, please wait..."
|
msgid "Downloading social metadata, please wait..."
|
||||||
msgstr "A descargar os metadatos sociais, agarde..."
|
msgstr "A descargar os metadatos sociais, agarde..."
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:50
|
||||||
|
msgid "Separator"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:63
|
||||||
|
msgid "Choose library"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:113
|
||||||
|
msgid "The main toolbar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:114
|
||||||
|
msgid "The main toolbar when a device is connected"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:115
|
||||||
|
msgid "The context menu for the books in the calibre library"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:117
|
||||||
|
msgid "The context menu for the books on the device"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:94
|
||||||
|
msgid "Customize the actions in:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:95
|
||||||
|
msgid "A&vailable actions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:96
|
||||||
|
msgid "&Current actions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:97
|
||||||
|
msgid "Move selected action up"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:99
|
||||||
|
msgid "Move selected action down"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:101
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:78
|
||||||
|
msgid "Ctrl+S"
|
||||||
|
msgstr "Ctrl + S"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:102
|
||||||
|
msgid "Add selected actions to toolbar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:104
|
||||||
|
msgid "Remove selected actions from toolbar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/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"
|
msgid "&Show this warning again"
|
||||||
msgstr "&Amosar este aviso outra vez"
|
msgstr "&Amosar este aviso outra vez"
|
||||||
@ -7913,10 +8011,6 @@ msgstr ""
|
|||||||
msgid "Rename the item in every book where it is used."
|
msgid "Rename the item in every book where it is used."
|
||||||
msgstr "Cambiar o nome ao elemento en cada libro que o emprega."
|
msgstr "Cambiar o nome ao elemento en cada libro que o emprega."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/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/calibre/src/calibre/gui2/dialogs/test_email_ui.py:51
|
||||||
msgid "Test email settings"
|
msgid "Test email settings"
|
||||||
msgstr "Probar a configuración do correo de proba"
|
msgstr "Probar a configuración do correo de proba"
|
||||||
@ -8231,48 +8325,48 @@ msgstr "ISBN:"
|
|||||||
msgid "Regular expression (?P<isbn>)"
|
msgid "Regular expression (?P<isbn>)"
|
||||||
msgstr "Expresión regular (?P<isbn>)"
|
msgstr "Expresión regular (?P<isbn>)"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:104
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:105
|
||||||
msgid "Cover Browser"
|
msgid "Cover Browser"
|
||||||
msgstr "Navegador de capas"
|
msgstr "Navegador de capas"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:109
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:110
|
||||||
msgid "Shift+Alt+B"
|
msgid "Shift+Alt+B"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:123
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:124
|
||||||
msgid "Tag Browser"
|
msgid "Tag Browser"
|
||||||
msgstr "Navegador de etiquetas"
|
msgstr "Navegador de etiquetas"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:125
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:126
|
||||||
msgid "Shift+Alt+T"
|
msgid "Shift+Alt+T"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:145
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:146
|
||||||
msgid "version"
|
msgid "version"
|
||||||
msgstr "versión"
|
msgstr "versión"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:146
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:147
|
||||||
msgid "created by Kovid Goyal"
|
msgid "created by Kovid Goyal"
|
||||||
msgstr "creado por Kovid Goyal"
|
msgstr "creado por Kovid Goyal"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:164
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:165
|
||||||
msgid "Connected "
|
msgid "Connected "
|
||||||
msgstr "Conectado "
|
msgstr "Conectado "
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:173
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:174
|
||||||
msgid "Update found"
|
msgid "Update found"
|
||||||
msgstr "Actualización atopada"
|
msgstr "Actualización atopada"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:217
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:218
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:227
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:228
|
||||||
msgid "Book Details"
|
msgid "Book Details"
|
||||||
msgstr "Detalles do libro"
|
msgstr "Detalles do libro"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:219
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:220
|
||||||
msgid "Alt+D"
|
msgid "Alt+D"
|
||||||
msgstr "Alt+D"
|
msgstr "Alt+D"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:229
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:230
|
||||||
msgid "Shift+Alt+D"
|
msgid "Shift+Alt+D"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -8344,7 +8438,7 @@ msgid "Eject this device"
|
|||||||
msgstr "Extraer o dispositivo"
|
msgstr "Extraer o dispositivo"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:75
|
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:75
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:192
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:194
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "Biblioteca"
|
msgstr "Biblioteca"
|
||||||
|
|
||||||
@ -10360,7 +10454,52 @@ msgstr ""
|
|||||||
msgid "Error: You must specify a column label"
|
msgid "Error: You must specify a column label"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/cli.py:809
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:803
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" %prog saved_searches [options] list\n"
|
||||||
|
" %prog saved_searches add name search\n"
|
||||||
|
" %prog saved_searches remove name\n"
|
||||||
|
"\n"
|
||||||
|
" Manage the saved searches stored in this database.\n"
|
||||||
|
" If you try to add a query with a name that already exists, it will be\n"
|
||||||
|
" replaced.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:821
|
||||||
|
msgid "Error: You must specify an action (add|remove|list)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:829
|
||||||
|
msgid "Name:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:830
|
||||||
|
msgid "Search string:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:836
|
||||||
|
msgid "Error: You must specify a name and a search string"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:839
|
||||||
|
msgid "added"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:844
|
||||||
|
msgid "Error: You must specify a name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:847
|
||||||
|
msgid "removed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:851
|
||||||
|
msgid "Error: Action %s not recognized, must be one of: (add|remove|list)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:865
|
||||||
msgid ""
|
msgid ""
|
||||||
"%%prog command [options] [arguments]\n"
|
"%%prog command [options] [arguments]\n"
|
||||||
"\n"
|
"\n"
|
||||||
@ -10390,27 +10529,27 @@ msgstr ""
|
|||||||
msgid "Main"
|
msgid "Main"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1911
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1915
|
||||||
msgid "<p>Migrating old database to ebook library in %s<br><center>"
|
msgid "<p>Migrating old database to ebook library in %s<br><center>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1940
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1944
|
||||||
msgid "Copying <b>%s</b>"
|
msgid "Copying <b>%s</b>"
|
||||||
msgstr "A copiar <b>%s</b>"
|
msgstr "A copiar <b>%s</b>"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1957
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1961
|
||||||
msgid "Compacting database"
|
msgid "Compacting database"
|
||||||
msgstr "A compactar a base de datos"
|
msgstr "A compactar a base de datos"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2050
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2054
|
||||||
msgid "Checking SQL integrity..."
|
msgid "Checking SQL integrity..."
|
||||||
msgstr "A comprobar a integridade SQL..."
|
msgstr "A comprobar a integridade SQL..."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2091
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2095
|
||||||
msgid "Checking for missing files."
|
msgid "Checking for missing files."
|
||||||
msgstr "A comprobar os ficheiros perdidos."
|
msgstr "A comprobar os ficheiros perdidos."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2113
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2117
|
||||||
msgid "Checked id"
|
msgid "Checked id"
|
||||||
msgstr "id comprobada"
|
msgstr "id comprobada"
|
||||||
|
|
||||||
@ -10606,35 +10745,39 @@ msgid ""
|
|||||||
"overrides any per-library settings specified in the GUI"
|
"overrides any per-library settings specified in the GUI"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:127
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:110
|
||||||
|
msgid "%d book"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129
|
||||||
msgid "%d items"
|
msgid "%d items"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:144
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:146
|
||||||
msgid "RATING: %s<br />"
|
msgid "RATING: %s<br />"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:147
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:149
|
||||||
msgid "TAGS: %s<br />"
|
msgid "TAGS: %s<br />"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:151
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:153
|
||||||
msgid "SERIES: %s [%s]<br />"
|
msgid "SERIES: %s [%s]<br />"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:231
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:233
|
||||||
msgid "Books in your library"
|
msgid "Books in your library"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:237
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:239
|
||||||
msgid "By "
|
msgid "By "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:238
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:240
|
||||||
msgid "Books sorted by "
|
msgid "Books sorted by "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:549
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:568
|
||||||
msgid "Newest"
|
msgid "Newest"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
10449
src/calibre/translations/mr.po
Normal file
@ -7,14 +7,14 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: calibre\n"
|
"Project-Id-Version: calibre\n"
|
||||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"POT-Creation-Date: 2010-08-18 22:24+0000\n"
|
"POT-Creation-Date: 2010-08-20 20:19+0000\n"
|
||||||
"PO-Revision-Date: 2010-08-19 10:53+0000\n"
|
"PO-Revision-Date: 2010-08-20 22:26+0000\n"
|
||||||
"Last-Translator: ppanhh <ppanhh@gmail.com>\n"
|
"Last-Translator: ppanhh <ppanhh@gmail.com>\n"
|
||||||
"Language-Team: Vietnamese <vi@li.org>\n"
|
"Language-Team: Vietnamese <vi@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2010-08-20 03:34+0000\n"
|
"X-Launchpad-Export-Date: 2010-08-22 03:46+0000\n"
|
||||||
"X-Generator: Launchpad (build Unknown)\n"
|
"X-Generator: Launchpad (build Unknown)\n"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43
|
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43
|
||||||
@ -27,7 +27,7 @@ msgstr "hoàn toàn không thực thi"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:70
|
#: /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/nook/driver.py:71
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267
|
#: /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/prs505/sony_cache.py:507
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:405
|
#: /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:97
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100
|
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100
|
||||||
@ -136,10 +136,10 @@ msgstr "hoàn toàn không thực thi"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1076
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1076
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1760
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1760
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1762
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1762
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1885
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1889
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:201
|
#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:201
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:134
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:136
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:137
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:139
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/xml.py:70
|
#: /home/kovid/work/calibre/src/calibre/library/server/xml.py:70
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:117
|
#: /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:46
|
||||||
@ -750,7 +750,11 @@ msgstr ""
|
|||||||
msgid "Communicate with the Sweex MM300"
|
msgid "Communicate with the Sweex MM300"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:78
|
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:79
|
||||||
|
msgid "Communicate with the Kogan"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:87
|
||||||
msgid "Communicate with the Pandigital Novel"
|
msgid "Communicate with the Pandigital Novel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -792,7 +796,7 @@ msgid ""
|
|||||||
"device. Possibilities include: "
|
"device. Possibilities include: "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:144
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:145
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:68
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:68
|
||||||
msgid "Unnamed"
|
msgid "Unnamed"
|
||||||
msgstr "Chưa được đặt tên"
|
msgstr "Chưa được đặt tên"
|
||||||
@ -1539,7 +1543,11 @@ msgstr ""
|
|||||||
msgid "Creating"
|
msgid "Creating"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/__init__.py:18
|
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/__init__.py:20
|
||||||
|
msgid "Failed to parse: %s with error: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/__init__.py:26
|
||||||
msgid "ePub Fixer"
|
msgid "ePub Fixer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1555,7 +1563,7 @@ msgid ""
|
|||||||
"cause significant changes to your epub, complain to the epubcheck project."
|
"cause significant changes to your epub, complain to the epubcheck project."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/main.py:19
|
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/main.py:21
|
||||||
msgid ""
|
msgid ""
|
||||||
"%prog [options] file.epub\n"
|
"%prog [options] file.epub\n"
|
||||||
"\n"
|
"\n"
|
||||||
@ -1566,7 +1574,7 @@ msgid ""
|
|||||||
"detected. Use the options to control which errors are automatically fixed."
|
"detected. Use the options to control which errors are automatically fixed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/main.py:50
|
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/main.py:52
|
||||||
msgid "You must specify an epub file"
|
msgid "You must specify an epub file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1899,7 +1907,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:65
|
#: /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:359
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:887
|
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:887
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:550
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569
|
||||||
msgid "Title"
|
msgid "Title"
|
||||||
msgstr "Tựa"
|
msgstr "Tựa"
|
||||||
|
|
||||||
@ -2965,6 +2973,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:63
|
#: /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/catalog.py:30
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:85
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:85
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:98
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:74
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:74
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:140
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:140
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:176
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:176
|
||||||
@ -3038,7 +3047,8 @@ msgid "Select destination for %s.%s"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:73
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:73
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:108
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:62
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:110
|
||||||
msgid "%d books"
|
msgid "%d books"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -3103,14 +3113,45 @@ msgstr ""
|
|||||||
msgid "Starting conversion of %d book(s)"
|
msgid "Starting conversion of %d book(s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:15
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:63
|
||||||
msgid "Copy to library"
|
msgid "Copy to library"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:16
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:64
|
||||||
msgid "Copy selected books to the specified library"
|
msgid "Copy selected books to the specified library"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:97
|
||||||
|
msgid "Cannot copy"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:102
|
||||||
|
msgid "No library"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:103
|
||||||
|
msgid "No library found at %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:106
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:110
|
||||||
|
msgid "Copying"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:120
|
||||||
|
msgid "Could not copy books: "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:120
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:678
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:231
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:123
|
||||||
|
msgid "Copied %d books to %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:18
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:18
|
||||||
msgid "Del"
|
msgid "Del"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3524,35 +3565,35 @@ msgstr ""
|
|||||||
msgid "Similar books..."
|
msgid "Similar books..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:22
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23
|
||||||
msgid "Alt+A"
|
msgid "Alt+A"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:22
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23
|
||||||
msgid "Books by same author"
|
msgid "Books by same author"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24
|
||||||
msgid "Alt+S"
|
msgid "Alt+S"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24
|
||||||
msgid "Books in this series"
|
msgid "Books in this series"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25
|
||||||
msgid "Alt+P"
|
msgid "Alt+P"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25
|
||||||
msgid "Books by this publisher"
|
msgid "Books by this publisher"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:26
|
||||||
msgid "Alt+T"
|
msgid "Alt+T"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:26
|
||||||
msgid "Books with the same tags"
|
msgid "Books with the same tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -3753,6 +3794,10 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:636
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:636
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:637
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:637
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:690
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:690
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:98
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:100
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:103
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:105
|
||||||
#: /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: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: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:384
|
||||||
@ -3915,6 +3960,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:67
|
#: /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/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/config/save_template_ui.py:41
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:93
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:35
|
#: /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/filename_pattern_ui.py:106
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:107
|
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:107
|
||||||
@ -5126,11 +5172,6 @@ msgstr ""
|
|||||||
msgid "Select folder to open as device"
|
msgid "Select folder to open as device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:678
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:231
|
|
||||||
msgid "Failed"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:684
|
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:684
|
||||||
msgid "Error talking to device"
|
msgid "Error talking to device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -6223,7 +6264,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76
|
#: /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:69
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:889
|
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:889
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:549
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:568
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -6401,6 +6442,63 @@ msgstr ""
|
|||||||
msgid "Downloading social metadata, please wait..."
|
msgid "Downloading social metadata, please wait..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:50
|
||||||
|
msgid "Separator"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:63
|
||||||
|
msgid "Choose library"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:113
|
||||||
|
msgid "The main toolbar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:114
|
||||||
|
msgid "The main toolbar when a device is connected"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:115
|
||||||
|
msgid "The context menu for the books in the calibre library"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:117
|
||||||
|
msgid "The context menu for the books on the device"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:94
|
||||||
|
msgid "Customize the actions in:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:95
|
||||||
|
msgid "A&vailable actions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:96
|
||||||
|
msgid "&Current actions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:97
|
||||||
|
msgid "Move selected action up"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:99
|
||||||
|
msgid "Move selected action down"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:101
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:78
|
||||||
|
msgid "Ctrl+S"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:102
|
||||||
|
msgid "Add selected actions to toolbar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:104
|
||||||
|
msgid "Remove selected actions from toolbar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/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"
|
msgid "&Show this warning again"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -7325,10 +7423,6 @@ msgstr ""
|
|||||||
msgid "Rename the item in every book where it is used."
|
msgid "Rename the item in every book where it is used."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:78
|
|
||||||
msgid "Ctrl+S"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/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"
|
msgid "Test email settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -7607,48 +7701,48 @@ msgstr ""
|
|||||||
msgid "Regular expression (?P<isbn>)"
|
msgid "Regular expression (?P<isbn>)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:104
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:105
|
||||||
msgid "Cover Browser"
|
msgid "Cover Browser"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:109
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:110
|
||||||
msgid "Shift+Alt+B"
|
msgid "Shift+Alt+B"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:123
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:124
|
||||||
msgid "Tag Browser"
|
msgid "Tag Browser"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:125
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:126
|
||||||
msgid "Shift+Alt+T"
|
msgid "Shift+Alt+T"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:145
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:146
|
||||||
msgid "version"
|
msgid "version"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:146
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:147
|
||||||
msgid "created by Kovid Goyal"
|
msgid "created by Kovid Goyal"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:164
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:165
|
||||||
msgid "Connected "
|
msgid "Connected "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:173
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:174
|
||||||
msgid "Update found"
|
msgid "Update found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:217
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:218
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:227
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:228
|
||||||
msgid "Book Details"
|
msgid "Book Details"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:219
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:220
|
||||||
msgid "Alt+D"
|
msgid "Alt+D"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:229
|
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:230
|
||||||
msgid "Shift+Alt+D"
|
msgid "Shift+Alt+D"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -7720,7 +7814,7 @@ msgid "Eject this device"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:75
|
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:75
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:192
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:194
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -9709,7 +9803,52 @@ msgstr ""
|
|||||||
msgid "Error: You must specify a column label"
|
msgid "Error: You must specify a column label"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/cli.py:809
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:803
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" %prog saved_searches [options] list\n"
|
||||||
|
" %prog saved_searches add name search\n"
|
||||||
|
" %prog saved_searches remove name\n"
|
||||||
|
"\n"
|
||||||
|
" Manage the saved searches stored in this database.\n"
|
||||||
|
" If you try to add a query with a name that already exists, it will be\n"
|
||||||
|
" replaced.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:821
|
||||||
|
msgid "Error: You must specify an action (add|remove|list)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:829
|
||||||
|
msgid "Name:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:830
|
||||||
|
msgid "Search string:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:836
|
||||||
|
msgid "Error: You must specify a name and a search string"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:839
|
||||||
|
msgid "added"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:844
|
||||||
|
msgid "Error: You must specify a name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:847
|
||||||
|
msgid "removed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:851
|
||||||
|
msgid "Error: Action %s not recognized, must be one of: (add|remove|list)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:865
|
||||||
msgid ""
|
msgid ""
|
||||||
"%%prog command [options] [arguments]\n"
|
"%%prog command [options] [arguments]\n"
|
||||||
"\n"
|
"\n"
|
||||||
@ -9739,27 +9878,27 @@ msgstr ""
|
|||||||
msgid "Main"
|
msgid "Main"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1911
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1915
|
||||||
msgid "<p>Migrating old database to ebook library in %s<br><center>"
|
msgid "<p>Migrating old database to ebook library in %s<br><center>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1940
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1944
|
||||||
msgid "Copying <b>%s</b>"
|
msgid "Copying <b>%s</b>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1957
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1961
|
||||||
msgid "Compacting database"
|
msgid "Compacting database"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2050
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2054
|
||||||
msgid "Checking SQL integrity..."
|
msgid "Checking SQL integrity..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2091
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2095
|
||||||
msgid "Checking for missing files."
|
msgid "Checking for missing files."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2113
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2117
|
||||||
msgid "Checked id"
|
msgid "Checked id"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -9955,35 +10094,39 @@ msgid ""
|
|||||||
"overrides any per-library settings specified in the GUI"
|
"overrides any per-library settings specified in the GUI"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:127
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:110
|
||||||
|
msgid "%d book"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129
|
||||||
msgid "%d items"
|
msgid "%d items"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:144
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:146
|
||||||
msgid "RATING: %s<br />"
|
msgid "RATING: %s<br />"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:147
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:149
|
||||||
msgid "TAGS: %s<br />"
|
msgid "TAGS: %s<br />"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:151
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:153
|
||||||
msgid "SERIES: %s [%s]<br />"
|
msgid "SERIES: %s [%s]<br />"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:231
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:233
|
||||||
msgid "Books in your library"
|
msgid "Books in your library"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:237
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:239
|
||||||
msgid "By "
|
msgid "By "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:238
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:240
|
||||||
msgid "Books sorted by "
|
msgid "Books sorted by "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:549
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:568
|
||||||
msgid "Newest"
|
msgid "Newest"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -496,6 +496,7 @@ class DynamicConfig(dict):
|
|||||||
def __init__(self, name='dynamic'):
|
def __init__(self, name='dynamic'):
|
||||||
dict.__init__(self, {})
|
dict.__init__(self, {})
|
||||||
self.name = name
|
self.name = name
|
||||||
|
self.defaults = {}
|
||||||
self.file_path = os.path.join(config_dir, name+'.pickle')
|
self.file_path = os.path.join(config_dir, name+'.pickle')
|
||||||
self.refresh()
|
self.refresh()
|
||||||
|
|
||||||
@ -520,7 +521,13 @@ class DynamicConfig(dict):
|
|||||||
try:
|
try:
|
||||||
return dict.__getitem__(self, key)
|
return dict.__getitem__(self, key)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
return None
|
return self.defaults.get(key, None)
|
||||||
|
|
||||||
|
def get(self, key, default=None):
|
||||||
|
try:
|
||||||
|
return dict.__getitem__(self, key)
|
||||||
|
except KeyError:
|
||||||
|
return self.defaults.get(key, default)
|
||||||
|
|
||||||
def __setitem__(self, key, val):
|
def __setitem__(self, key, val):
|
||||||
dict.__setitem__(self, key, val)
|
dict.__setitem__(self, key, val)
|
||||||
@ -555,6 +562,7 @@ class XMLConfig(dict):
|
|||||||
|
|
||||||
def __init__(self, rel_path_to_cf_file):
|
def __init__(self, rel_path_to_cf_file):
|
||||||
dict.__init__(self)
|
dict.__init__(self)
|
||||||
|
self.defaults = {}
|
||||||
self.file_path = os.path.join(config_dir,
|
self.file_path = os.path.join(config_dir,
|
||||||
*(rel_path_to_cf_file.split('/')))
|
*(rel_path_to_cf_file.split('/')))
|
||||||
self.file_path = os.path.abspath(self.file_path)
|
self.file_path = os.path.abspath(self.file_path)
|
||||||
@ -592,7 +600,16 @@ class XMLConfig(dict):
|
|||||||
ans = ans.data
|
ans = ans.data
|
||||||
return ans
|
return ans
|
||||||
except KeyError:
|
except KeyError:
|
||||||
return None
|
return self.defaults.get(key, None)
|
||||||
|
|
||||||
|
def get(self, key, default=None):
|
||||||
|
try:
|
||||||
|
ans = dict.__getitem__(self, key)
|
||||||
|
if isinstance(ans, plistlib.Data):
|
||||||
|
ans = ans.data
|
||||||
|
return ans
|
||||||
|
except KeyError:
|
||||||
|
return self.defaults.get(key, default)
|
||||||
|
|
||||||
def __setitem__(self, key, val):
|
def __setitem__(self, key, val):
|
||||||
if isinstance(val, (bytes, str)):
|
if isinstance(val, (bytes, str)):
|
||||||
@ -604,6 +621,7 @@ class XMLConfig(dict):
|
|||||||
self.__setitem__(key, val)
|
self.__setitem__(key, val)
|
||||||
|
|
||||||
def __delitem__(self, key):
|
def __delitem__(self, key):
|
||||||
|
if dict.has_key(self, key):
|
||||||
dict.__delitem__(self, key)
|
dict.__delitem__(self, key)
|
||||||
self.commit()
|
self.commit()
|
||||||
|
|
||||||
@ -648,7 +666,16 @@ class JSONConfig(XMLConfig):
|
|||||||
return json.dumps(self, indent=2, default=to_json)
|
return json.dumps(self, indent=2, default=to_json)
|
||||||
|
|
||||||
def __getitem__(self, key):
|
def __getitem__(self, key):
|
||||||
|
try:
|
||||||
return dict.__getitem__(self, key)
|
return dict.__getitem__(self, key)
|
||||||
|
except KeyError:
|
||||||
|
return self.defaults[key]
|
||||||
|
|
||||||
|
def get(self, key, default=None):
|
||||||
|
try:
|
||||||
|
return dict.__getitem__(self, key)
|
||||||
|
except KeyError:
|
||||||
|
return self.defaults.get(key, default)
|
||||||
|
|
||||||
def __setitem__(self, key, val):
|
def __setitem__(self, key, val):
|
||||||
dict.__setitem__(self, key, val)
|
dict.__setitem__(self, key, val)
|
||||||
|