mirror of
https://github.com/kovidgoyal/calibre.git
synced 2026-06-06 05:55:27 -04:00
version 0.4.81
This commit is contained in:
@@ -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')
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env python
|
||||
__license__ = 'GPL v3'
|
||||
__copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net'
|
||||
__docformat__ = 'restructuredtext en'
|
||||
|
||||
'''
|
||||
Conversion to EPUB.
|
||||
'''
|
||||
@@ -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>
|
||||
|
||||
+456
-265
File diff suppressed because it is too large
Load Diff
+453
-262
File diff suppressed because it is too large
Load Diff
+499
-273
File diff suppressed because it is too large
Load Diff
+456
-265
File diff suppressed because it is too large
Load Diff
+467
-276
File diff suppressed because it is too large
Load Diff
+579
-307
File diff suppressed because it is too large
Load Diff
+481
-273
File diff suppressed because it is too large
Load Diff
+499
-273
File diff suppressed because it is too large
Load Diff
+465
-279
File diff suppressed because it is too large
Load Diff
+456
-265
File diff suppressed because it is too large
Load Diff
+333
-155
@@ -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 ""
|
||||
|
||||
|
||||
+456
-265
File diff suppressed because it is too large
Load Diff
+456
-265
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)
|
||||
|
||||
Reference in New Issue
Block a user