mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
version 0.4.81
This commit is contained in:
parent
a5e9ff6ab9
commit
f0f2abf4ef
@ -20,7 +20,9 @@ SQLITE = '/usr/lib/libsqlite3.so.0'
|
||||
DBUS = '/usr/lib/libdbus-1.so.3'
|
||||
LIBMNG = '/usr/lib/libmng.so.1'
|
||||
LIBZ = '/lib/libz.so.1'
|
||||
LIBBZ2 = '/lib/libbz2.so.1'
|
||||
LIBUSB = '/lib/libusb.so'
|
||||
LIBPOPPLER = '/usr/lib/libpoppler.so.3'
|
||||
|
||||
|
||||
CALIBRESRC = os.path.join(CALIBREPREFIX, 'src')
|
||||
@ -119,7 +121,8 @@ binaries += [('clit', CLIT, 'BINARY'), ('pdftohtml', PDFTOHTML, 'BINARY'),
|
||||
('libunrar.so', LIBUNRAR, 'BINARY')]
|
||||
|
||||
print 'Adding external libraries...'
|
||||
binaries += [ (os.path.basename(x), x, 'BINARY') for x in (SQLITE, DBUS, LIBMNG, LIBZ, LIBUSB)]
|
||||
binaries += [ (os.path.basename(x), x, 'BINARY') for x in (SQLITE, DBUS,
|
||||
LIBMNG, LIBZ, LIBBZ2, LIBUSB, LIBPOPPLER)]
|
||||
|
||||
|
||||
qt = []
|
||||
|
@ -1,7 +1,7 @@
|
||||
''' E-book management software'''
|
||||
__license__ = 'GPL v3'
|
||||
__copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
|
||||
__version__ = '0.4.80'
|
||||
__version__ = '0.4.81'
|
||||
__docformat__ = "epytext"
|
||||
__author__ = "Kovid Goyal <kovid at kovidgoyal.net>"
|
||||
__appname__ = 'calibre'
|
||||
@ -116,7 +116,14 @@ def my_join(a, *p):
|
||||
res = res.decode(encoding)
|
||||
return res
|
||||
|
||||
os.path.join = my_join
|
||||
os.path.join = my_join
|
||||
|
||||
def unicode_path(path, abs=False):
|
||||
if not isinstance(path, unicode):
|
||||
path = path.decode(sys.getfilesystemencoding())
|
||||
if abs:
|
||||
path = os.path.abspath(path)
|
||||
return path
|
||||
|
||||
def osx_version():
|
||||
if isosx:
|
||||
|
@ -25,7 +25,7 @@ Run an embedded python interpreter.
|
||||
def update_zipfile(zipfile, mod, path):
|
||||
if 'win32' in sys.platform:
|
||||
print 'WARNING: On Windows Vista you must run this from a console that has been started in Administrator mode.'
|
||||
print 'Press Enter to continue or Ctrl-C to Cancel'
|
||||
print 'Press Enter to continue if this is an Administrator console or Ctrl-C to Cancel'
|
||||
raw_input()
|
||||
pat = re.compile(mod.replace('.', '/')+r'\.py[co]*')
|
||||
name = mod.replace('.', '/') + os.path.splitext(path)[-1]
|
||||
|
@ -135,7 +135,7 @@ class PRS505(Device):
|
||||
if 'PRS-505/UC&' in device_id:
|
||||
main = volumes[device_id]+':\\'
|
||||
if not main:
|
||||
DeviceError(_('Unable to detect the %s disk drive. Try rebooting.')%self.__class__.__name__)
|
||||
raise DeviceError(_('Unable to detect the %s disk drive. Try rebooting.')%self.__class__.__name__)
|
||||
self._main_prefix = main
|
||||
card = self._card_prefix = None
|
||||
win32api = __import__('win32api')
|
||||
|
8
src/calibre/ebooks/epub/__init__.py
Normal file
8
src/calibre/ebooks/epub/__init__.py
Normal file
@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env python
|
||||
__license__ = 'GPL v3'
|
||||
__copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net'
|
||||
__docformat__ = 'restructuredtext en'
|
||||
|
||||
'''
|
||||
Conversion to EPUB.
|
||||
'''
|
184
src/calibre/ebooks/epub/traverse.py
Normal file
184
src/calibre/ebooks/epub/traverse.py
Normal file
@ -0,0 +1,184 @@
|
||||
from __future__ import with_statement
|
||||
__license__ = 'GPL v3'
|
||||
__copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net'
|
||||
__docformat__ = 'restructuredtext en'
|
||||
|
||||
'''
|
||||
Recursively parse HTML files to find all linked files.
|
||||
'''
|
||||
|
||||
import sys, os, re
|
||||
from urlparse import urlparse
|
||||
from urllib import unquote
|
||||
from calibre import unicode_path
|
||||
from calibre.ebooks.chardet import xml_to_unicode
|
||||
|
||||
class Link(object):
|
||||
'''
|
||||
Represents a link in a HTML file.
|
||||
'''
|
||||
|
||||
@classmethod
|
||||
def url_to_local_path(cls, url, base):
|
||||
path = url.path
|
||||
if os.path.isabs(path):
|
||||
return path
|
||||
return os.path.abspath(os.path.join(base, url))
|
||||
|
||||
def __init__(self, url, base):
|
||||
'''
|
||||
:param url: The url this link points to. Must be an unquoted unicode string.
|
||||
:param base: The base directory that relative URLs are with respect to.
|
||||
Must be a unicode string.
|
||||
'''
|
||||
assert isinstance(url, unicode) and isinstance(base, unicode)
|
||||
self.url = url
|
||||
self.parsed_url = urlparse(unquote(self.url))
|
||||
self.is_local = self.parsed_url.scheme in ('', 'file')
|
||||
self.path = None
|
||||
self.fragment = self.parsed_url.fragment
|
||||
if self.is_local:
|
||||
self.path = self.url_to_local_path(self.parsed_url, base)
|
||||
|
||||
def __hash__(self):
|
||||
if self.path is None:
|
||||
return hash(self.url)
|
||||
return hash(self.path)
|
||||
|
||||
def __eq__(self, other):
|
||||
if not (hasattr(other, 'url') and hasattr(other, 'path')):
|
||||
return False
|
||||
if self.path is None:
|
||||
return self.url == other.url
|
||||
return self.path == other.path
|
||||
|
||||
|
||||
class IgnoreFile(Exception):
|
||||
pass
|
||||
|
||||
class HTMLFile(object):
|
||||
'''
|
||||
Contains basic traversal information about an HTML file. This
|
||||
includes a recursive list of links to other files as well as
|
||||
the encoding of each file.
|
||||
|
||||
You can iterate over the tree of files rooted at this file
|
||||
by calling either :method:`breadth_first` or :method:`depth_first`.
|
||||
|
||||
The encoding of the file is available as :member:`encoding`.
|
||||
|
||||
If the file is a binary file (i.e. if conversion to unicode fails)
|
||||
:member:`is_binary` is set to `True`.
|
||||
'''
|
||||
|
||||
LINK_PAT = re.compile(
|
||||
r'<\s*a\s+.*?href\s*=\s*(?:(?:"(?P<url1>[^"]+)")|(?:\'(?P<url2>[^\']+)\')|(?P<url3>[^\s]+))',
|
||||
re.DOTALL|re.IGNORECASE)
|
||||
|
||||
def __init__(self, path_to_html_file, level, max_levels=sys.maxint,
|
||||
encoding=None, verbose=0):
|
||||
'''
|
||||
:param level: The level of this file. Should be 0 for the root file.
|
||||
:param max_levels: `level >= max_levels` the links in this file
|
||||
will not be followed.
|
||||
:param encoding: Use `encoding` to decode HTML.
|
||||
'''
|
||||
self.path = unicode_path(path_to_html_file, abs=True)
|
||||
self.base = os.path.dirname(self.path)
|
||||
self.level = level
|
||||
self.links = []
|
||||
self.map = {}
|
||||
self.is_binary = False
|
||||
try:
|
||||
with open(self.path, 'rb') as f:
|
||||
src = f.read()
|
||||
except IOError, err:
|
||||
msg = 'Could not read from file: %s with error: %s'%
|
||||
(self.path, unicode(err))
|
||||
if level == 0:
|
||||
raise IOError(msg)
|
||||
if verbose:
|
||||
print msg
|
||||
raise IgnoreFile
|
||||
if encoding is None:
|
||||
encoding = xml_to_unicode(src[:4096], verbose=verbose)[-1]
|
||||
self.encoding = encoding
|
||||
|
||||
|
||||
try:
|
||||
src = src.decode(encoding, 'replace')
|
||||
except UnicodeDecodeError:
|
||||
self.is_binary = True
|
||||
if verbose > 1:
|
||||
print self.path, 'is a binary file.'
|
||||
else:
|
||||
self.find_links(src)
|
||||
|
||||
if self.level < max_levels:
|
||||
rejects = []
|
||||
for link in self.links:
|
||||
if link.path is not None:
|
||||
try:
|
||||
self.map[link.url] = HTMLFile(link.path, level+1,
|
||||
max_levels, encoding=encoding, verbose=verbose)
|
||||
except IgnoreFile:
|
||||
rejects.append(link)
|
||||
for link in rejects:
|
||||
self.links.remove(link)
|
||||
|
||||
|
||||
def find_links(self, src):
|
||||
for match in self.LINK_PAT.finditer():
|
||||
url = None
|
||||
for i in ('url1', 'url2', 'url3'):
|
||||
url = match.group(i)
|
||||
if url:
|
||||
break
|
||||
link = Link(url, self.base)
|
||||
if link not in self.links:
|
||||
self.links.append(link)
|
||||
|
||||
def breadth_first(self, root=True):
|
||||
'''
|
||||
Walk over the tree of linked files (by `<a href>` links) breadth
|
||||
first.
|
||||
|
||||
:param root: If `True` return `self` as the first file.
|
||||
:return: A breadth-first iterator.
|
||||
'''
|
||||
if root:
|
||||
yield self
|
||||
for link in self.links:
|
||||
if link.path is not None:
|
||||
yield self.map[link.url]
|
||||
|
||||
for link in self.links:
|
||||
if link.path is not None:
|
||||
for hf in self.map[link.url].breadth_first(root=False):
|
||||
yield hf
|
||||
|
||||
def depth_first(self, root=True):
|
||||
'''
|
||||
Walk over the tree of linked files (by `<a href>` links) depth
|
||||
first.
|
||||
|
||||
:param root: If `True` return `self` as the first file.
|
||||
:return: A depth-first iterator.
|
||||
'''
|
||||
if root:
|
||||
yield self
|
||||
for link in self.links:
|
||||
if link.path is not None:
|
||||
yield self.map[link.url]
|
||||
for hf in self.map[link.url].depth_first(root=False):
|
||||
yield hf
|
||||
|
||||
if __name__ == '__main__':
|
||||
root = HTMLFile(sys.argv[1], 0, verbose=2)
|
||||
print 'Depth first...'
|
||||
for f in root.depth_first():
|
||||
print f.path
|
||||
print '\n\nBreadth first...'
|
||||
for f in root.breadth_first():
|
||||
print f.path
|
||||
|
@ -14,17 +14,13 @@ def set_conversion_defaults(window):
|
||||
d.exec_()
|
||||
|
||||
def get_bulk_conversion_options(window):
|
||||
c = config(None)
|
||||
with open(c.config_file_path, 'rb') as f:
|
||||
d = ComicConf(window, config_defaults=f.read())
|
||||
d = ComicConf(window, config_defaults=config(None).as_string())
|
||||
if d.exec_() == QDialog.Accepted:
|
||||
return d.config.parse()
|
||||
|
||||
def get_conversion_options(window, defaults, title, author):
|
||||
if defaults is None:
|
||||
c = config(None)
|
||||
with open(c.config_file_path, 'rb') as f:
|
||||
defaults = f.read()
|
||||
defaults = config(None).as_string()
|
||||
defaults += '\ntitle=%s\nauthor=%s'%(repr(title), repr(author))
|
||||
d = ComicConf(window, config_defaults=defaults, generic=False)
|
||||
if d.exec_() == QDialog.Accepted:
|
||||
|
@ -110,7 +110,7 @@
|
||||
<item row="8" column="0" >
|
||||
<widget class="QCheckBox" name="opt_no_sort" >
|
||||
<property name="text" >
|
||||
<string>Dont so&rt</string>
|
||||
<string>Don't so&rt</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -6,36 +6,54 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: calibre 0.4.55\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2008-07-21 22:18+0000\n"
|
||||
"PO-Revision-Date: 2008-07-22 05:27+0000\n"
|
||||
"POT-Creation-Date: 2008-08-03 09:01+0000\n"
|
||||
"PO-Revision-Date: 2008-07-22 05:50+0000\n"
|
||||
"Last-Translator: Kovid Goyal <Unknown>\n"
|
||||
"Language-Team: ru\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2008-07-22 05:44+0000\n"
|
||||
"X-Launchpad-Export-Date: 2008-08-04 16:52+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/__init__.py:138
|
||||
#: /home/kovid/work/calibre/src/calibre/__init__.py:178
|
||||
#, fuzzy
|
||||
msgid "%sUsage%s: %s\n"
|
||||
msgstr "%sИспользовано%s: %s\n"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/__init__.py:175
|
||||
#: /home/kovid/work/calibre/src/calibre/__init__.py:215
|
||||
msgid "Created by "
|
||||
msgstr "Сделано "
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:112
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:146
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:174
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:113
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:147
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:175
|
||||
msgid "Unable to detect the %s disk drive. Try rebooting."
|
||||
msgstr "Не удалось определить диск %s. Попробуйте перезагрузиться."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:355
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:356
|
||||
msgid "The reader has no storage card connected."
|
||||
msgstr "К ридеру не подключена карта памяти."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lit/reader.py:780
|
||||
msgid "%prog [options] LITFILE"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lit/reader.py:783
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:404
|
||||
msgid "Output directory. Defaults to current directory."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lit/reader.py:786
|
||||
msgid "Useful for debugging."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lit/reader.py:797
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:425
|
||||
msgid "OEB ebook created in"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/__init__.py:71
|
||||
msgid "Set the title. Default: filename."
|
||||
msgstr "Укажите заголовок. По умолчанию: имя файла."
|
||||
@ -50,14 +68,17 @@ msgstr ""
|
||||
"умолчанию: %default"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/__init__.py:74
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/comic/convert_from.py:239
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:174
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:314
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:429
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:52
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:278
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:685
|
||||
#: /home/kovid/work/calibre/src/calibre/library/database.py:879
|
||||
#: /home/kovid/work/calibre/src/calibre/library/database.py:1387
|
||||
#: /home/kovid/work/calibre/src/calibre/library/database.py:1517
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:926
|
||||
#: /home/kovid/work/calibre/src/calibre/library/database.py:904
|
||||
#: /home/kovid/work/calibre/src/calibre/library/database.py:1412
|
||||
#: /home/kovid/work/calibre/src/calibre/library/database.py:1542
|
||||
msgid "Unknown"
|
||||
msgstr "Неизвестно"
|
||||
|
||||
@ -414,6 +435,88 @@ msgstr ""
|
||||
msgid "No file to convert specified."
|
||||
msgstr "Не указан файл для преобразования."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/comic/convert_from.py:200
|
||||
msgid "Rendered %s"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/comic/convert_from.py:230
|
||||
msgid ""
|
||||
"Options to control the conversion of comics (CBR, CBZ) files into ebooks"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/comic/convert_from.py:236
|
||||
msgid "Title for generated ebook. Default is to use the filename."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/comic/convert_from.py:238
|
||||
msgid ""
|
||||
"Set the author in the metadata of the generated ebook. Default is %default"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/comic/convert_from.py:241
|
||||
msgid ""
|
||||
"Path to output LRF file. By default a file is created in the current "
|
||||
"directory."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/comic/convert_from.py:243
|
||||
msgid "Number of colors for Grayscale image conversion. Default: %default"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/comic/convert_from.py:245
|
||||
msgid ""
|
||||
"Disable normalize (improve contrast) color range for pictures. Default: False"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/comic/convert_from.py:247
|
||||
msgid "Maintain picture aspect ratio. Default is to fill the screen."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/comic/convert_from.py:249
|
||||
msgid "Disable sharpening."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/comic/convert_from.py:251
|
||||
msgid "Don't split landscape images into two portrait images"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/comic/convert_from.py:253
|
||||
msgid ""
|
||||
"Don't sort the files found in the comic alphabetically by name. Instead use "
|
||||
"the order they were added to the comic."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/comic/convert_from.py:255
|
||||
msgid ""
|
||||
"Choose a profile for the device you are generating this LRF for. The default "
|
||||
"is the SONY PRS-500 with a screen size of 584x754 pixels. Choices are %s"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/comic/convert_from.py:257
|
||||
msgid ""
|
||||
"Be verbose, useful for debugging. Can be specified multiple times for "
|
||||
"greater verbosity."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/comic/convert_from.py:259
|
||||
msgid "Don't show progress bar."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/comic/convert_from.py:264
|
||||
msgid ""
|
||||
"%prog [options] comic.cb[z|r]\n"
|
||||
"\n"
|
||||
"Convert a comic in a CBZ or CBR file to an LRF ebook. \n"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/comic/convert_from.py:328
|
||||
msgid "Rendering comic pages..."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/comic/convert_from.py:334
|
||||
msgid "Output written to"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/epub/convert_from.py:17
|
||||
msgid ""
|
||||
"Usage: %prog [options] mybook.epub\n"
|
||||
@ -515,40 +618,40 @@ msgid ""
|
||||
"%s"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1749
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1752
|
||||
msgid ""
|
||||
"An error occurred while processing a table: %s. Ignoring table markup."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1751
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1754
|
||||
msgid ""
|
||||
"Bad table:\n"
|
||||
"%s"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1773
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1776
|
||||
msgid "Table has cell that is too large"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1803
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1806
|
||||
msgid ""
|
||||
"You have to save the website %s as an html file first and then run html2lrf "
|
||||
"on it."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1846
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1849
|
||||
msgid "Could not read cover image: %s"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1849
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1852
|
||||
msgid "Cannot read from: %s"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1984
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1987
|
||||
msgid "Failed to process opf file"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1990
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1993
|
||||
msgid ""
|
||||
"Usage: %prog [options] mybook.html\n"
|
||||
"\n"
|
||||
@ -559,7 +662,7 @@ msgid ""
|
||||
"convert a whole tree of HTML files."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lit/convert_from.py:21
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lit/convert_from.py:22
|
||||
msgid ""
|
||||
"Usage: %prog [options] mybook.lit\n"
|
||||
"\n"
|
||||
@ -741,11 +844,10 @@ msgstr ""
|
||||
msgid "Set the comment"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/epub.py:100
|
||||
msgid "mybook.epub"
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/epub.py:117
|
||||
msgid "A comma separated list of tags to set"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/epub.py:100
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:50
|
||||
msgid "Usage:"
|
||||
msgstr ""
|
||||
@ -803,11 +905,11 @@ msgid ""
|
||||
"Fetch a cover image for the book identified by ISBN from LibraryThing.com\n"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/lit.py:751
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/lit.py:40
|
||||
msgid "Usage: %s file.lit"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/lit.py:758
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/lit.py:50
|
||||
msgid "Cover saved to"
|
||||
msgstr ""
|
||||
|
||||
@ -819,22 +921,14 @@ msgstr ""
|
||||
msgid "No filename specified."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:391
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:402
|
||||
msgid "%prog [options] myebook.mobi"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:393
|
||||
msgid "Output directory. Defaults to current directory."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:412
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:423
|
||||
msgid "Raw MOBI HTML saved in"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:414
|
||||
msgid "OEB ebook created in"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:22
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:26
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:36
|
||||
@ -855,6 +949,7 @@ msgid "Comments"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:55
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:79
|
||||
msgid "Dialog"
|
||||
msgstr ""
|
||||
|
||||
@ -869,6 +964,51 @@ msgstr ""
|
||||
msgid "Choose Format"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:38
|
||||
msgid "Set defaults for conversion of comics (CBR/CBZ files)"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:53
|
||||
msgid "Set options for converting %s"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:80
|
||||
msgid "&Title:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:81
|
||||
msgid "&Author(s):"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:82
|
||||
msgid "&Number of Colors:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:83
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single_ui.py:552
|
||||
msgid "&Profile:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:84
|
||||
msgid "Disable &normalize"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:85
|
||||
msgid "Keep &aspect ratio"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:86
|
||||
msgid "Disable &Sharpening"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:87
|
||||
msgid "&Landscape"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:88
|
||||
msgid "Dont so&rt"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:23
|
||||
msgid "Basic"
|
||||
msgstr ""
|
||||
@ -877,47 +1017,47 @@ msgstr ""
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:105
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:107
|
||||
msgid "<br>Must be a directory."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:105
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:107
|
||||
msgid "Invalid database location "
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:105
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:108
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:107
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:110
|
||||
msgid "Invalid database location"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:108
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:110
|
||||
msgid "Invalid database location.<br>Cannot write to "
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:120
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:122
|
||||
msgid "Compacting database. This may take a while."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:120
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:122
|
||||
msgid "Compacting..."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:216
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:219
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:265
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:217
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:220
|
||||
msgid "&Location of books database (library1.db)"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:218
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:221
|
||||
msgid "Browse for the new database location"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:219
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:237
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:239
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:222
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:241
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:243
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single_ui.py:513
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:266
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:285
|
||||
@ -937,89 +1077,93 @@ msgstr ""
|
||||
msgid "..."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:220
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:223
|
||||
msgid "Use &Roman numerals for series number"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:221
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:224
|
||||
msgid "&Number of covers to show in browse mode (after restart):"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:222
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:225
|
||||
msgid "Show notification when &new version is available"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:223
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:226
|
||||
msgid "Ask for &confirmation before deleting files"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:227
|
||||
msgid "Format for &single file save:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:224
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:228
|
||||
msgid "&Priority for conversion jobs:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:225
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:229
|
||||
msgid "Default network &timeout:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:226
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:230
|
||||
msgid ""
|
||||
"Set the default timeout for network fetches (i.e. anytime we go out to the "
|
||||
"internet to get information)"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:227
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:231
|
||||
msgid " seconds"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:228
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:232
|
||||
msgid "Toolbar"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:229
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:233
|
||||
msgid "Large"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:230
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:234
|
||||
msgid "Medium"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:231
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:235
|
||||
msgid "Small"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:232
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:236
|
||||
msgid "&Button size in toolbar"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:233
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:237
|
||||
msgid "Show &text in toolbar buttons"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:234
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:238
|
||||
msgid "Select visible &columns in library view"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:235
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:239
|
||||
msgid "Frequently used directories"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:236
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:240
|
||||
msgid "Add a directory to the frequently used directories list"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:238
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:242
|
||||
msgid "Remove a directory from the frequently used directories list"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:240
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:244
|
||||
msgid "Free unused diskspace from the database"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:241
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:245
|
||||
msgid "&Compact database"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:242
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:246
|
||||
msgid "&Metadata from file name"
|
||||
msgstr ""
|
||||
|
||||
@ -1151,7 +1295,6 @@ msgid "Convert %s to LRF"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single.py:108
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:177
|
||||
msgid "Set conversion defaults"
|
||||
msgstr ""
|
||||
|
||||
@ -1415,10 +1558,6 @@ msgstr ""
|
||||
msgid "Override<br>CSS"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single_ui.py:552
|
||||
msgid "&Profile:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single_ui.py:553
|
||||
msgid "&Left Margin:"
|
||||
msgstr ""
|
||||
@ -2261,23 +2400,31 @@ msgstr ""
|
||||
msgid "Bulk convert"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:309
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:177
|
||||
msgid "Set defaults for conversion to LRF"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:178
|
||||
msgid "Set defaults for conversion of comics"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:311
|
||||
msgid " detected."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:309
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:311
|
||||
msgid "Device: "
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:334
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:336
|
||||
msgid "Connected "
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:346
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:348
|
||||
msgid "Device database corrupted"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:347
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:349
|
||||
msgid ""
|
||||
"\n"
|
||||
" <p>The database of books on the reader is corrupted. Try the "
|
||||
@ -2293,190 +2440,222 @@ msgid ""
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:399
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:473
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:401
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:475
|
||||
msgid ""
|
||||
"<p>Books with the same title as the following already exist in the database. "
|
||||
"Add them anyway?<ul>"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:402
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:476
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:404
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:478
|
||||
msgid "Duplicates found!"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:435
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:448
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:437
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:450
|
||||
msgid "Uploading books to device."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:507
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:509
|
||||
msgid "No space on device"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:508
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:510
|
||||
msgid ""
|
||||
"<p>Cannot upload books to device there is no more free space available "
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:546
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:541
|
||||
msgid "Confirm delete"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:542
|
||||
msgid "Are you sure you want to delete these %d books?"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:554
|
||||
msgid "Deleting books from device."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:578
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:599
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:586
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:607
|
||||
msgid "Cannot edit metadata"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:578
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:599
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:694
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:764
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:834
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:586
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:607
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:702
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:772
|
||||
msgid "No books selected"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:674
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:682
|
||||
msgid "Sending books to device."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:677
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:685
|
||||
msgid "No suitable formats"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:678
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:686
|
||||
msgid ""
|
||||
"Could not upload the following books to the device, as no suitable formats "
|
||||
"were found:<br><ul>%s</ul>"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:694
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:702
|
||||
msgid "Cannot save to disk"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:705
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:713
|
||||
msgid ""
|
||||
"<p>Could not save the following books to disk, because the %s format is not "
|
||||
"available for them:<ul>"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:709
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:717
|
||||
msgid "Could not save some ebooks"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:742
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:750
|
||||
msgid "Fetch news from "
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:744
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:752
|
||||
msgid "Fetching news from "
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:754
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:762
|
||||
msgid "News fetched. Uploading to device."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:764
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:834
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:772
|
||||
msgid "Cannot convert"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:773
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:794
|
||||
msgid "Starting Bulk conversion of %d books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:905
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:923
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:832
|
||||
msgid "Convert book %d of %d (%s)"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:842
|
||||
msgid ""
|
||||
"<p>Could not convert %d of %d books, because no suitable source format was "
|
||||
"found.<ul>%s</ul>"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:843
|
||||
msgid "Could not convert some books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:878
|
||||
msgid "Convert comic %d of %d (%s)"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:908
|
||||
msgid "Convert book: "
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:953
|
||||
msgid "Convert comic: "
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1001
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1019
|
||||
msgid "No book selected"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:905
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:923
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:937
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1001
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1019
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1033
|
||||
msgid "Cannot view"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:911
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:942
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1007
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1038
|
||||
msgid "Choose the format to view"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:938
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1034
|
||||
msgid "%s has no available formats."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:976
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1072
|
||||
msgid "Cannot configure"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:976
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1072
|
||||
msgid "Cannot configure while there are running jobs."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:999
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1095
|
||||
msgid "Copying database to "
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1014
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1110
|
||||
msgid "Invalid database"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1015
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1111
|
||||
msgid ""
|
||||
"<p>An invalid database already exists at %s, delete it before trying to move "
|
||||
"the existing database.<br>Error: %s"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1023
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1119
|
||||
msgid "Could not move database"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1044
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1140
|
||||
msgid "No detailed info available"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1045
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1141
|
||||
msgid "No detailed information is available for books on the device."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1087
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1183
|
||||
msgid "Error talking to device"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1088
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1184
|
||||
msgid ""
|
||||
"There was a temporary error talking to the device. Please unplug and "
|
||||
"reconnect the device and or reboot."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1139
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1235
|
||||
msgid "Conversion Error"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1158
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1254
|
||||
msgid "Database does not exist"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1158
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1254
|
||||
msgid ""
|
||||
"The directory in which the database should be: %s no longer exists. Please "
|
||||
"choose a new database location."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1209
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1305
|
||||
msgid ""
|
||||
"<span style=\"color:red; font-weight:bold\">Latest version: <a "
|
||||
"href=\"%s\">%s</a></span>"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1215
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1311
|
||||
msgid ""
|
||||
"%s has been updated to version %s. See the <a "
|
||||
"href=\"http://calibre.kovidgoyal.net/wiki/Changelog\">new features</a>. "
|
||||
"Visit the download page?"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1215
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1311
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
@ -2589,23 +2768,23 @@ msgstr ""
|
||||
msgid "Custom news sources"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/status.py:95
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/status.py:99
|
||||
msgid "Jobs:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/status.py:104
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/status.py:108
|
||||
msgid "Click to see list of active jobs."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/status.py:133
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/status.py:137
|
||||
msgid "Click to browse books by their covers"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/status.py:133
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/status.py:137
|
||||
msgid "Click to turn off Cover Browsing"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/status.py:138
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/status.py:142
|
||||
msgid ""
|
||||
"<p>Browsing books by their covers is disabled.<br>Import of pictureflow "
|
||||
"module failed:<br>"
|
||||
@ -2851,11 +3030,11 @@ msgid ""
|
||||
"For help on an individual command: %%prog command --help\n"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/parallel.py:344
|
||||
#: /home/kovid/work/calibre/src/calibre/parallel.py:347
|
||||
msgid "Could not launch worker process."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/fontconfig.py:157
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/fontconfig.py:169
|
||||
msgid "Could not initialize the fontconfig library"
|
||||
msgstr ""
|
||||
|
||||
@ -2964,9 +3143,8 @@ msgid ""
|
||||
"downloads at most 2 feeds."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/main.py:84
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/main.py:88
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:577
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/main.py:70
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:580
|
||||
msgid "Fetching feeds..."
|
||||
msgstr ""
|
||||
|
||||
@ -2995,58 +3173,58 @@ msgstr ""
|
||||
msgid "\tFailed links:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:559
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:562
|
||||
msgid "Could not fetch article. Run with --debug to see the reason"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:581
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:584
|
||||
msgid "Got feeds from index page"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:585
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:588
|
||||
msgid "Trying to download cover..."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:637
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:640
|
||||
msgid "Starting download [%d thread(s)]..."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:650
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:653
|
||||
msgid "Feeds downloaded to %s"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:660
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:663
|
||||
msgid "Could not download cover: %s"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:665
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:668
|
||||
msgid "Downloading cover from %s"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:699
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:702
|
||||
msgid "Untitled Article"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:745
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:748
|
||||
msgid ""
|
||||
"\n"
|
||||
"Downloaded article %s from %s\n"
|
||||
"%s"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:751
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:754
|
||||
msgid "Article downloaded: %s"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:757
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:760
|
||||
msgid "Failed to download article: %s from %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:762
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:765
|
||||
msgid "Article download failed: %s"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:777
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:780
|
||||
msgid "Fetching feed"
|
||||
msgstr ""
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -202,6 +202,15 @@ class Config(object):
|
||||
raise IOError('Could not lock config file: %s'%self.config_file_path)
|
||||
return self.option_set.parse_string(src)
|
||||
|
||||
def as_string(self):
|
||||
if not os.path.exists(self.config_file_path):
|
||||
return ''
|
||||
try:
|
||||
with ExclusiveFile(self.config_file_path) as f:
|
||||
return f.read()
|
||||
except LockError:
|
||||
raise IOError('Could not lock config file: %s'%self.config_file_path)
|
||||
|
||||
def set(self, name, val):
|
||||
if not self.option_set.has_option(name):
|
||||
raise ValueError('The option %s is not defined.'%name)
|
||||
|
Loading…
x
Reference in New Issue
Block a user