mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Sync to trunk.
This commit is contained in:
commit
1286a5e600
@ -2,7 +2,7 @@ __license__ = 'GPL v3'
|
||||
__copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net'
|
||||
__docformat__ = 'restructuredtext en'
|
||||
__appname__ = 'calibre'
|
||||
__version__ = '0.6.2'
|
||||
__version__ = '0.6.3'
|
||||
__author__ = "Kovid Goyal <kovid@kovidgoyal.net>"
|
||||
|
||||
import re
|
||||
|
@ -27,8 +27,11 @@ every time you add an HTML file to the library.\
|
||||
from calibre.ebooks.epub import initialize_container
|
||||
|
||||
with TemporaryDirectory('_plugin_html2zip') as tdir:
|
||||
gui_convert(htmlfile, tdir, [('debug_input', tdir,
|
||||
OptionRecommendation.HIGH)])
|
||||
recs =[('debug_input', tdir, OptionRecommendation.HIGH)]
|
||||
if self.site_customization and self.site_customization.strip():
|
||||
recs.append(['input_encoding', self.site_customization.strip(),
|
||||
OptionRecommendation.HIGH])
|
||||
gui_convert(htmlfile, tdir, recs)
|
||||
of = self.temporary_file('_plugin_html2zip.zip')
|
||||
opf = glob.glob(os.path.join(tdir, '*.opf'))[0]
|
||||
ncx = glob.glob(os.path.join(tdir, '*.ncx'))
|
||||
@ -40,6 +43,10 @@ every time you add an HTML file to the library.\
|
||||
|
||||
return of.name
|
||||
|
||||
def customization_help(self, gui=False):
|
||||
return _('Character encoding for the input HTML files. Common choices '
|
||||
'include: cp1252, latin1, iso-8859-1 and utf-8.')
|
||||
|
||||
|
||||
class ComicMetadataReader(MetadataReaderPlugin):
|
||||
|
||||
|
@ -37,6 +37,9 @@ class CLI(object):
|
||||
path = os.path.join(path, infile.name)
|
||||
if not replace_file and os.path.exists(path):
|
||||
raise PathError('File already exists: ' + path)
|
||||
d = os.path.dirname(path)
|
||||
if not os.path.exists(d):
|
||||
os.makedirs(d)
|
||||
dest = open(path, 'wb')
|
||||
shutil.copyfileobj(infile, dest, 10*1024*1024)
|
||||
dest.flush()
|
||||
|
@ -14,7 +14,7 @@ from calibre.utils.config import OptionParser
|
||||
from calibre.utils.logging import Log
|
||||
from calibre.constants import preferred_encoding
|
||||
from calibre.customize.conversion import OptionRecommendation
|
||||
|
||||
from calibre import patheq
|
||||
|
||||
USAGE = '%prog ' + _('''\
|
||||
input_file output_file [options]
|
||||
@ -220,6 +220,9 @@ def create_option_parser(args, log):
|
||||
from calibre.ebooks.conversion.plumber import Plumber
|
||||
|
||||
reporter = ProgressBar(log)
|
||||
if patheq(input, output):
|
||||
raise ValueError('Input file is the same as the output file')
|
||||
|
||||
plumber = Plumber(input, output, log, reporter)
|
||||
add_input_output_options(parser, plumber)
|
||||
add_pipeline_options(parser, plumber)
|
||||
|
@ -351,7 +351,7 @@ OptionRecommendation(name='read_metadata_from_opf',
|
||||
OptionRecommendation(name='asciiize',
|
||||
recommended_value=False, level=OptionRecommendation.LOW,
|
||||
help=(_('Transliterate unicode characters to an ASCII '
|
||||
'representation. Use with care because this will remove replace '
|
||||
'representation. Use with care because this will replace '
|
||||
'unicode characters with ASCII. For instance it will replace "%s" '
|
||||
'with "Mikhail Gorbachiov". Also, note that in '
|
||||
'cases where there are multiple representations of a character '
|
||||
|
@ -21,6 +21,7 @@ from calibre.utils.podofo import get_metadata as podofo_get_metadata, \
|
||||
set_metadata as podofo_set_metadata, Unavailable, get_metadata_quick
|
||||
|
||||
def get_quick_metadata(stream):
|
||||
return get_metadata_pypdf(stream)
|
||||
raw = stream.read()
|
||||
mi = get_metadata_quick(raw)
|
||||
if mi.title == '_':
|
||||
|
@ -411,6 +411,8 @@ class Style(object):
|
||||
result = size
|
||||
else:
|
||||
result = self._unit_convert(value, base=base, font=base)
|
||||
if not isinstance(result, (int, float, long)):
|
||||
return base
|
||||
if result < 0:
|
||||
result = normalize_fontsize("smaller", base)
|
||||
if factor:
|
||||
|
@ -275,7 +275,7 @@ class CSSFlattener(object):
|
||||
items = cssdict.items()
|
||||
items.sort()
|
||||
css = u';\n'.join(u'%s: %s' % (key, val) for key, val in items)
|
||||
classes = node.get('class', None) or 'calibre'
|
||||
classes = node.get('class', '').strip() or 'calibre'
|
||||
klass = STRIPNUM.sub('', classes.split()[0].replace('_', ''))
|
||||
if css in styles:
|
||||
match = styles[css]
|
||||
|
@ -1,7 +1,7 @@
|
||||
'''
|
||||
UI for adding books to the database and saving books to disk
|
||||
'''
|
||||
import os
|
||||
import os, shutil
|
||||
from Queue import Queue, Empty
|
||||
|
||||
from PyQt4.Qt import QThread, SIGNAL, QObject, QTimer, Qt
|
||||
@ -167,6 +167,15 @@ class Adder(QObject):
|
||||
self.add_formats(id, formats)
|
||||
self.number_of_books_added += 1
|
||||
|
||||
def cleanup(self):
|
||||
if hasattr(self, 'worker') and hasattr(self.worker, 'tdir') and \
|
||||
self.worker.tdir is not None:
|
||||
if os.path.exists(self.worker.tdir):
|
||||
try:
|
||||
shutil.rmtree(self.worker.tdir)
|
||||
except:
|
||||
pass
|
||||
|
||||
class Saver(QObject):
|
||||
|
||||
def __init__(self, parent, db, callback, rows, path,
|
||||
|
@ -7,7 +7,7 @@ from PyQt4.Qt import QDialog, QMessageBox, QListWidgetItem, QIcon, \
|
||||
QStringListModel, QAbstractItemModel, QFont, \
|
||||
SIGNAL, QTimer, Qt, QSize, QVariant, QUrl, \
|
||||
QModelIndex, QInputDialog, QAbstractTableModel, \
|
||||
QDialogButtonBox, QTabWidget, QBrush
|
||||
QDialogButtonBox, QTabWidget, QBrush, QLineEdit
|
||||
|
||||
from calibre.constants import islinux, iswindows
|
||||
from calibre.gui2.dialogs.config_ui import Ui_Dialog
|
||||
@ -553,10 +553,14 @@ class ConfigDialog(QDialog, Ui_Dialog):
|
||||
self._plugin_model.refresh_plugin(plugin)
|
||||
else:
|
||||
help = plugin.customization_help()
|
||||
sc = plugin_customization(plugin)
|
||||
if not sc:
|
||||
sc = ''
|
||||
sc = sc.strip()
|
||||
text, ok = QInputDialog.getText(self, _('Customize %s')%plugin.name,
|
||||
help)
|
||||
help, QLineEdit.Normal, sc)
|
||||
if ok:
|
||||
customize_plugin(plugin, unicode(text))
|
||||
customize_plugin(plugin, unicode(text).strip())
|
||||
self._plugin_model.refresh_plugin(plugin)
|
||||
if op == 'remove':
|
||||
if remove_plugin(plugin):
|
||||
|
@ -418,13 +418,16 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI):
|
||||
try:
|
||||
db = LibraryDatabase2(self.library_path)
|
||||
except Exception, err:
|
||||
import traceback
|
||||
error_dialog(self, _('Bad database location'),
|
||||
unicode(err)).exec_()
|
||||
_('Bad database location')+':'+self.library_path,
|
||||
det_msg=traceback.format_exc()).exec_()
|
||||
dir = unicode(QFileDialog.getExistingDirectory(self,
|
||||
_('Choose a location for your ebook library.'),
|
||||
os.path.expanduser('~')))
|
||||
if not dir:
|
||||
QCoreApplication.exit(1)
|
||||
raise SystemExit(1)
|
||||
else:
|
||||
self.library_path = dir
|
||||
db = LibraryDatabase2(self.library_path)
|
||||
@ -520,6 +523,11 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI):
|
||||
|
||||
@property
|
||||
def spare_server(self):
|
||||
# Because of the use of the property decorator, we're called one
|
||||
# extra time. Ignore.
|
||||
if not hasattr(self, '__spare_server_property_limiter'):
|
||||
self.__spare_server_property_limiter = True
|
||||
return None
|
||||
try:
|
||||
QTimer.singleShot(1000, self.add_spare_server)
|
||||
return self.spare_servers.pop()
|
||||
@ -870,6 +878,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI):
|
||||
_('Failed to read metadata from the following')+':',
|
||||
det_msg='\n\n'.join(det_msg), show=True)
|
||||
|
||||
self._adder.cleanup()
|
||||
self._adder = None
|
||||
|
||||
|
||||
|
@ -287,6 +287,7 @@ class EbookViewer(MainWindow, Ui_EbookViewer):
|
||||
self.set_max_width()
|
||||
ca = self.view.copy_action
|
||||
ca.setShortcut(QKeySequence.Copy)
|
||||
self.addAction(ca)
|
||||
|
||||
|
||||
def set_max_width(self):
|
||||
|
@ -219,7 +219,7 @@ class KindlePage(QWizardPage, KindleUI):
|
||||
|
||||
if self.send_email_widget.set_email_settings(True):
|
||||
conf = smtp_prefs()
|
||||
accounts = conf.get('accounts', {})
|
||||
accounts = conf.parse().accounts
|
||||
if not accounts: accounts = {}
|
||||
for y in accounts.values():
|
||||
y[2] = False
|
||||
@ -494,6 +494,9 @@ class FinishPage(QWizardPage, FinishUI):
|
||||
def nextId(self):
|
||||
return -1
|
||||
|
||||
def commit(self):
|
||||
pass
|
||||
|
||||
|
||||
|
||||
class Wizard(QWizard):
|
||||
@ -536,7 +539,11 @@ class Wizard(QWizard):
|
||||
|
||||
|
||||
def accept(self):
|
||||
self.device_page.commit()
|
||||
pages = map(self.page, self.visitedPages())
|
||||
for page in pages:
|
||||
if page is not self.library_page:
|
||||
page.commit()
|
||||
|
||||
if not self.library_page.commit(self.completed):
|
||||
self.completed(None)
|
||||
|
||||
|
@ -147,9 +147,9 @@ def setup_completion(fatal_errors):
|
||||
from calibre.utils.smtp import option_parser as smtp_op
|
||||
any_formats = ['epub', 'htm', 'html', 'xhtml', 'xhtm', 'rar', 'zip',
|
||||
'txt', 'lit', 'rtf', 'pdf', 'prc', 'mobi', 'fb2', 'odt']
|
||||
f = open_file('/etc/bash_completion.d/libprs500')
|
||||
f.close()
|
||||
os.remove(f.name)
|
||||
if os.path.exists('/usr/share/bash-completion'):
|
||||
f = open_file('/usr/share/bash-completion/calibre')
|
||||
else:
|
||||
f = open_file('/etc/bash_completion.d/calibre')
|
||||
manifest.append(f.name)
|
||||
|
||||
|
@ -57,8 +57,9 @@ Then just add this HTML file to the GUI and use the convert button to create you
|
||||
How do I convert my file containing non-English characters?
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
There are two aspects to this problem:
|
||||
1. Knowing the encoding of the source file: |app| tries to guess what character encoding your source files use, but often, this is impossible, so you need to tell it what encoding to use. This can be done in the GUI via the :guilabel:`Source encoding` field in the :guilabel:`Look & Feel` section. The command-line tools all have an :option:`--encoding` option.
|
||||
2. Embedding fonts: If you are generating an LRF file to read on your SONY Reader, you are limited by the fact that the Reader only supports a few non-English characters in the fonts it comes pre-loaded with. You can work around this problem by embedding a unicode-aware font that supports the character set your file uses into the LRF file. You should embed atleast a serif and a sans-serif font. Be aware that embedding fonts significantly slows down page-turn speed on the reader.
|
||||
1. Knowing the encoding of the source file: |app| tries to guess what character encoding your source files use, but often, this is impossible, so you need to tell it what encoding to use. This can be done in the GUI via the :guilabel:`Input character encoding` field in the :guilabel:`Look & Feel` section. The command-line tools all have an :option:`--input-encoding` option.
|
||||
2. When adding HTML files to |app|, you may need to tell |app| what encoding the files are in. To do this go to Preferences->Plugins->File Type plugins and customize the HTML2Zip plugin, telling it what encoding your HTML files are in. |app| will then automatically convert the HTML files into the UTF-8 encoding when adding them.
|
||||
3. Embedding fonts: If you are generating an LRF file to read on your SONY Reader, you are limited by the fact that the Reader only supports a few non-English characters in the fonts it comes pre-loaded with. You can work around this problem by embedding a unicode-aware font that supports the character set your file uses into the LRF file. You should embed atleast a serif and a sans-serif font. Be aware that embedding fonts significantly slows down page-turn speed on the reader.
|
||||
|
||||
|
||||
How do I use some of the advanced features of the conversion tools?
|
||||
|
@ -91,6 +91,10 @@ sudo python -c "import urllib2; exec urllib2.urlopen('http://calibre.kovidgoyal.
|
||||
You must have xdg-utils installed
|
||||
on your system before running the installer.
|
||||
</li>
|
||||
<li>
|
||||
For device automounting to work, you must have the pmount
|
||||
package installed on your system.
|
||||
</li>
|
||||
<li>
|
||||
On a 64bit machine, you must have 32-bit versions
|
||||
of common libraries like X11, freetype, fontconfig,
|
||||
|
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
@ -4,9 +4,9 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: calibre 0.6.2\n"
|
||||
"POT-Creation-Date: 2009-07-27 15:35+MDT\n"
|
||||
"PO-Revision-Date: 2009-07-27 15:35+MDT\n"
|
||||
"Project-Id-Version: calibre 0.6.3\n"
|
||||
"POT-Creation-Date: 2009-07-29 16:21+MDT\n"
|
||||
"PO-Revision-Date: 2009-07-29 16:21+MDT\n"
|
||||
"Last-Translator: Automatically generated\n"
|
||||
"Language-Team: LANGUAGE\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -52,8 +52,8 @@ msgstr ""
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:444
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:870
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:39
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:27
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:65
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:28
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:66
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/topaz.py:29
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/txt.py:14
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:44
|
||||
@ -159,46 +159,50 @@ msgstr ""
|
||||
msgid "Follow all local links in an HTML file and create a ZIP file containing all linked files. This plugin is run every time you add an HTML file to the library."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:48
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:47
|
||||
msgid "Character encoding for the input HTML files. Common choices include: cp1252, latin1, iso-8859-1 and utf-8."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:55
|
||||
msgid "Extract cover from comic files"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:69
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:79
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:89
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:99
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:110
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:120
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:130
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:140
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:150
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:160
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:171
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:182
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:204
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:215
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:225
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:235
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:76
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:86
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:96
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:106
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:117
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:127
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:137
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:147
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:157
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:167
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:178
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:189
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:211
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:222
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:232
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:242
|
||||
msgid "Read metadata from %s files"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:194
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:201
|
||||
msgid "Read metadata from ebooks in RAR archives"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:246
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:253
|
||||
msgid "Read metadata from ebooks in ZIP archives"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:257
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:267
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:277
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:299
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:310
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:264
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:274
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:284
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:306
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:317
|
||||
msgid "Set metadata in %s files"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:288
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:295
|
||||
msgid "Set metadata from %s files"
|
||||
msgstr ""
|
||||
|
||||
@ -688,7 +692,7 @@ msgstr ""
|
||||
msgid "List builtin recipes"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:246
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:249
|
||||
msgid "Output saved to"
|
||||
msgstr ""
|
||||
|
||||
@ -837,7 +841,7 @@ msgid "Read metadata from the specified OPF file. Metadata read from this file w
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:353
|
||||
msgid "Transliterate unicode characters to an ASCII representation. Use with care because this will remove replace unicode characters with ASCII. For instance it will replace \"%s\" with \"Mikhail Gorbachiov\". Also, note that in cases where there are multiple representations of a character (characters shared by Chinese and Japanese for instance) the representation used by the largest number of people will be used (Chinese in the previous example)."
|
||||
msgid "Transliterate unicode characters to an ASCII representation. Use with care because this will replace unicode characters with ASCII. For instance it will replace \"%s\" with \"Mikhail Gorbachiov\". Also, note that in cases where there are multiple representations of a character (characters shared by Chinese and Japanese for instance) the representation used by the largest number of people will be used (Chinese in the previous example)."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:368
|
||||
@ -1904,11 +1908,11 @@ msgstr ""
|
||||
msgid "Books with the same title as the following already exist in the database. Add them anyway?"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:176
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:185
|
||||
msgid "Saving..."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:228
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:237
|
||||
msgid "Saved"
|
||||
msgstr ""
|
||||
|
||||
@ -3030,66 +3034,66 @@ msgstr ""
|
||||
msgid "Plugin: %s does not need customization"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:556
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:560
|
||||
msgid "Customize %s"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:566
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:570
|
||||
msgid "Cannot remove builtin plugin"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:567
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:571
|
||||
msgid " cannot be removed. It is a builtin plugin. Try disabling it instead."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:600
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:604
|
||||
msgid "Error log:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:607
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:611
|
||||
msgid "Access log:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:632
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:554
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:636
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:562
|
||||
msgid "Failed to start content server"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:656
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:660
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:460
|
||||
msgid "Select location for books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:673
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:677
|
||||
msgid "Invalid size"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:674
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:678
|
||||
msgid "The size %s is invalid. must be of the form widthxheight"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:719
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:723
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:728
|
||||
msgid "Invalid database location"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:724
|
||||
msgid "Invalid database location "
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:720
|
||||
msgid "Invalid database location "
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:721
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:725
|
||||
msgid "<br>Must be a directory."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:725
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:729
|
||||
msgid "Invalid database location.<br>Cannot write to "
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:739
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:743
|
||||
msgid "Compacting..."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:740
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:744
|
||||
msgid "Compacting database. This may take a while."
|
||||
msgstr ""
|
||||
|
||||
@ -4442,7 +4446,7 @@ msgid "<b>No matches</b> for the search phrase <i>%s</i> were found."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:157
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:416
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:417
|
||||
msgid "No matches found"
|
||||
msgstr ""
|
||||
|
||||
@ -4494,7 +4498,7 @@ msgid "Save single format to disk..."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:138
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:984
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:993
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:49
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
@ -4569,7 +4573,7 @@ msgid "Save to disk in a single directory"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:278
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1457
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1466
|
||||
msgid "Save only %s format to disk"
|
||||
msgstr ""
|
||||
|
||||
@ -4598,36 +4602,37 @@ msgstr ""
|
||||
msgid "Similar books..."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:421
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:422
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:423
|
||||
msgid "Bad database location"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:424
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1585
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:426
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1594
|
||||
msgid "Choose a location for your ebook library."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:597
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:605
|
||||
msgid "Browse by covers"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:704
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:712
|
||||
msgid "Device: "
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:706
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:714
|
||||
msgid " detected."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:728
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:736
|
||||
msgid "Connected "
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:740
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:748
|
||||
msgid "Device database corrupted"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:741
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:749
|
||||
msgid ""
|
||||
"\n"
|
||||
" <p>The database of books on the reader is corrupted. Try the following:\n"
|
||||
@ -4638,301 +4643,301 @@ msgid ""
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:817
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:860
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:825
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:868
|
||||
msgid "Uploading books to device."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:825
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:833
|
||||
msgid "Books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:826
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:834
|
||||
msgid "EPUB Books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:827
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:835
|
||||
msgid "LRF Books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:828
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:836
|
||||
msgid "HTML Books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:829
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:837
|
||||
msgid "LIT Books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:830
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:838
|
||||
msgid "MOBI Books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:831
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:839
|
||||
msgid "Text books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:832
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:840
|
||||
msgid "PDF Books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:833
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:841
|
||||
msgid "Comics"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:834
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:842
|
||||
msgid "Archives"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:869
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:877
|
||||
msgid "Failed to read metadata"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:870
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:878
|
||||
msgid "Failed to read metadata from the following"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:888
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:897
|
||||
msgid "The selected books will be <b>permanently deleted</b> and the files removed from your computer. Are you sure?"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:915
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:924
|
||||
msgid "Deleting books from device."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:946
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:955
|
||||
msgid "Cannot download metadata"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:947
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:995
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1025
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1050
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1181
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:956
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1004
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1034
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1059
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1190
|
||||
msgid "No books selected"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:956
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:965
|
||||
msgid "covers"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:956
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:965
|
||||
msgid "metadata"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:958
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:967
|
||||
msgid "Downloading %s for %d book(s)"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:979
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:988
|
||||
msgid "Failed to download some metadata"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:980
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:989
|
||||
msgid "Failed to download metadata for the following:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:983
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:992
|
||||
msgid "Failed to download metadata:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:994
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1024
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1003
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1033
|
||||
msgid "Cannot edit metadata"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1049
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1058
|
||||
msgid "Cannot save to disk"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1052
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1061
|
||||
msgid "Choose destination directory"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1075
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1084
|
||||
msgid "Error while saving"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1076
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1085
|
||||
msgid "There was an error while saving."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1080
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1081
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1089
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1090
|
||||
msgid "Could not save some books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1082
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1091
|
||||
msgid "as the %s format is not available for them."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1083
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1092
|
||||
msgid "Click the show details button to see which ones."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1102
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1111
|
||||
msgid "Fetching news from "
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1115
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1124
|
||||
msgid " fetched."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1180
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1189
|
||||
msgid "Cannot convert"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1350
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1369
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1359
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1378
|
||||
msgid "No book selected"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1350
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1402
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1359
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1411
|
||||
msgid "Cannot view"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1356
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1365
|
||||
msgid "Choose the format to view"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1368
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1377
|
||||
msgid "Cannot open folder"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1385
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1394
|
||||
msgid "Multiple Books Selected"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1386
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1395
|
||||
msgid "You are attempting to open %d books. Opening too many books at once can be slow and have a negative effect on the responsiveness of your computer. Once started the process cannot be stopped until complete. Do you wish to continue?"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1403
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1412
|
||||
msgid "%s has no available formats."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1441
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1450
|
||||
msgid "Cannot configure"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1442
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1451
|
||||
msgid "Cannot configure while there are running jobs."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1486
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1495
|
||||
msgid "No detailed info available"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1487
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1496
|
||||
msgid "No detailed information is available for books on the device."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1535
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1544
|
||||
msgid "Error talking to device"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1536
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1545
|
||||
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:1553
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1568
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1562
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1577
|
||||
msgid "Conversion Error"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1554
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1563
|
||||
msgid "<p>Could not convert: %s<p>It is a <a href=\"%s\">DRM</a>ed book. You must first remove the DRM using 3rd party tools."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1569
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1578
|
||||
msgid "<b>Failed</b>"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1594
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1603
|
||||
msgid "Invalid library location"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1595
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1604
|
||||
msgid "Could not access %s. Using %s as the library."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1643
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1652
|
||||
msgid "is the result of the efforts of many volunteers from all over the world. If you find it useful, please consider donating to support its development."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1667
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1676
|
||||
msgid "There are active jobs. Are you sure you want to quit?"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1670
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1679
|
||||
msgid ""
|
||||
" is communicating with the device!<br>\n"
|
||||
" Quitting may cause corruption on the device.<br>\n"
|
||||
" Are you sure you want to quit?"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1674
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1683
|
||||
msgid "WARNING: Active jobs"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1725
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1734
|
||||
msgid "will keep running in the system tray. To close it, choose <b>Quit</b> in the context menu of the system tray."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1744
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1753
|
||||
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:1752
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1761
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1753
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1762
|
||||
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:1771
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1780
|
||||
msgid "Use the library located at the specified path."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1773
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1782
|
||||
msgid "Start minimized to system tray."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1775
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1784
|
||||
msgid "Log debugging information to console"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1823
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1832
|
||||
msgid "If you are sure it is not running"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1825
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1834
|
||||
msgid "Cannot Start "
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1826
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1835
|
||||
msgid "%s is already running."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1829
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1838
|
||||
msgid "may be running in the system tray, in the"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1831
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1840
|
||||
msgid "upper right region of the screen."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1833
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1842
|
||||
msgid "lower right region of the screen."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1836
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1845
|
||||
msgid "try rebooting your computer."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1838
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1858
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1847
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1867
|
||||
msgid "try deleting the file"
|
||||
msgstr ""
|
||||
|
||||
@ -5274,7 +5279,7 @@ msgid "Options to customize the ebook viewer"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:645
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:646
|
||||
msgid "Remember last used window size"
|
||||
msgstr ""
|
||||
|
||||
@ -5351,67 +5356,67 @@ msgstr ""
|
||||
msgid "Print Preview"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:376
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:377
|
||||
msgid "Choose ebook"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:377
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:378
|
||||
msgid "Ebooks"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:396
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:397
|
||||
msgid "Add bookmark"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:396
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:397
|
||||
msgid "Enter title for bookmark:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:417
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:418
|
||||
msgid "No matches found for: %s"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:457
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:458
|
||||
msgid "Loading flow..."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:484
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:485
|
||||
msgid "Laying out %s"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:513
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:514
|
||||
msgid "Manage Bookmarks"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:548
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:549
|
||||
msgid "Loading ebook..."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:556
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:557
|
||||
msgid "DRM Error"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:557
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:558
|
||||
msgid "<p>This book is protected by <a href=\"%s\">DRM</a>"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:561
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:562
|
||||
msgid "Could not open ebook"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:635
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:636
|
||||
msgid "Options to control the ebook viewer"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:642
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:643
|
||||
msgid "If specified, viewer window will try to come to the front when started."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:647
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:648
|
||||
msgid "Print javascript alert and console messages to the console"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:653
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:654
|
||||
msgid ""
|
||||
"%prog [options] file\n"
|
||||
"\n"
|
||||
@ -5578,7 +5583,7 @@ msgstr ""
|
||||
msgid "Could not move library"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:503
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:506
|
||||
msgid "welcome wizard"
|
||||
msgstr ""
|
||||
|
||||
@ -6458,7 +6463,7 @@ msgstr ""
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_jb_online.py:47
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_o_globo.py:69
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_publico.py:20
|
||||
msgid "Portugese"
|
||||
msgid "Portuguese"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_h1.py:15
|
||||
@ -6484,7 +6489,7 @@ msgstr ""
|
||||
msgid "Kovid Goyal and Sujata Raman"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_zaobao.py:19
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_zaobao.py:17
|
||||
msgid "Chinese"
|
||||
msgstr ""
|
||||
|
||||
|
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
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
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
@ -20,7 +20,6 @@ class ESPN(BasicNewsRecipe):
|
||||
remove_tags = [dict(name='font', attrs={'class':'footer'}), dict(name='hr', noshade='noshade')]
|
||||
remove_tags_before = dict(name='font', attrs={'class':'date'})
|
||||
center_navbar = False
|
||||
html2lrf_options = ['--base-font-size', '0']
|
||||
|
||||
feeds = [('Top Headlines', 'http://sports.espn.go.com/espn/rss/news'),
|
||||
'http://sports.espn.go.com/espn/rss/nfl/news',
|
||||
@ -45,7 +44,7 @@ class ESPN(BasicNewsRecipe):
|
||||
br.set_handle_refresh(False)
|
||||
if self.username is not None and self.password is not None:
|
||||
br.open('http://espn.com')
|
||||
br.select_form(nr=0)
|
||||
br.select_form(nr=1)
|
||||
br.form.find_control(name='username', type='text').value = self.username
|
||||
br.form['password'] = self.password
|
||||
br.submit()
|
||||
|
@ -11,7 +11,7 @@ from calibre.web.feeds.news import BasicNewsRecipe
|
||||
class Estadao(BasicNewsRecipe):
|
||||
title = 'O Estado de S. Paulo'
|
||||
__author__ = 'Darko Miletic'
|
||||
description = 'News from Brasil in Portugese'
|
||||
description = 'News from Brasil in Portuguese'
|
||||
publisher = 'O Estado de S. Paulo'
|
||||
category = 'news, politics, Brasil'
|
||||
oldest_article = 2
|
||||
@ -59,4 +59,4 @@ class Estadao(BasicNewsRecipe):
|
||||
del item['style']
|
||||
return soup
|
||||
|
||||
language = _('Portugese')
|
||||
language = _('Portuguese')
|
||||
|
@ -44,4 +44,4 @@ class JBOnline(BasicNewsRecipe):
|
||||
del item['style']
|
||||
return soup
|
||||
|
||||
language = _('Portugese')
|
||||
language = _('Portuguese')
|
||||
|
@ -30,6 +30,7 @@ class Newsweek(BasicNewsRecipe):
|
||||
remove_tags = [
|
||||
{'class':['fwArticle noHr','fwArticle','subinfo','hdlBulletItem','head-content','navbar','link', 'ad', 'sponsorLinksArticle', 'mm-content',
|
||||
'inline-social-links-wrapper', 'email-article',
|
||||
'inlineComponentRight',
|
||||
'comments-and-social-links-wrapper', 'EmailArticleBlock']},
|
||||
{'id' : ['footer', 'ticker-data', 'topTenVertical',
|
||||
'digg-top-five', 'mesothorax', 'nw-comments',
|
||||
|
@ -66,4 +66,4 @@ class OGlobo(BasicNewsRecipe):
|
||||
del item['style']
|
||||
return soup
|
||||
|
||||
language = _('Portugese')
|
||||
language = _('Portuguese')
|
||||
|
@ -11,23 +11,23 @@ from calibre.web.feeds.news import BasicNewsRecipe
|
||||
import re
|
||||
|
||||
class Publico(BasicNewsRecipe):
|
||||
title = u'P\xc3\xbablico'
|
||||
title = u'P\xfablico'
|
||||
__author__ = 'David Rodrigues'
|
||||
oldest_article = 1
|
||||
max_articles_per_feed = 30
|
||||
encoding='utf-8'
|
||||
no_stylesheets = True
|
||||
language = _('Portugese')
|
||||
language = _('Portuguese')
|
||||
preprocess_regexps = [(re.compile(u"\uFFFD", re.DOTALL|re.IGNORECASE), lambda match: ''),]
|
||||
|
||||
feeds = [
|
||||
(u'Geral', u'http://feeds.feedburner.com/PublicoUltimaHora'),
|
||||
(u'Internacional', u'http://www.publico.clix.pt/rss.ashx?idCanal=11'),
|
||||
(u'Pol\xc3\xadtica', u'http://www.publico.clix.pt/rss.ashx?idCanal=12'),
|
||||
(u'Ci\xc3\xaancias', u'http://www.publico.clix.pt/rss.ashx?idCanal=13'),
|
||||
(u'Pol\xedtica', u'http://www.publico.clix.pt/rss.ashx?idCanal=12'),
|
||||
(u'Ci\xcencias', u'http://www.publico.clix.pt/rss.ashx?idCanal=13'),
|
||||
(u'Desporto', u'http://desporto.publico.pt/rss.ashx'),
|
||||
(u'Economia', u'http://www.publico.clix.pt/rss.ashx?idCanal=57'),
|
||||
(u'Educa\xc3\xa7\xc3\xa3o', u'http://www.publico.clix.pt/rss.ashx?idCanal=58'),
|
||||
(u'Educa\xe7\xe3o', u'http://www.publico.clix.pt/rss.ashx?idCanal=58'),
|
||||
(u'Local', u'http://www.publico.clix.pt/rss.ashx?idCanal=59'),
|
||||
(u'Media e Tecnologia', u'http://www.publico.clix.pt/rss.ashx?idCanal=61'),
|
||||
(u'Sociedade', u'http://www.publico.clix.pt/rss.ashx?idCanal=62')
|
||||
|
@ -5,10 +5,8 @@ __copyright__ = '2009, Pu Bo <pubo at pubolab.com>'
|
||||
'''
|
||||
zaobao.com
|
||||
'''
|
||||
import time, os, traceback, sys
|
||||
from calibre.web.feeds.news import BasicNewsRecipe
|
||||
from calibre.web.feeds import feeds_from_index, Feed, Article
|
||||
from BeautifulSoup import Tag
|
||||
from calibre.web.feeds import feeds_from_index
|
||||
|
||||
class ZAOBAO(BasicNewsRecipe):
|
||||
title = u'\u8054\u5408\u65e9\u62a5\u7f51 zaobao.com'
|
||||
@ -72,7 +70,7 @@ class ZAOBAO(BasicNewsRecipe):
|
||||
return soup
|
||||
|
||||
def parse_feeds(self):
|
||||
self.log_debug('ZAOBAO overrided parse_feeds()')
|
||||
self.log.debug('ZAOBAO overrided parse_feeds()')
|
||||
parsed_feeds = BasicNewsRecipe.parse_feeds(self)
|
||||
|
||||
for id, obj in enumerate(self.INDEXES):
|
||||
@ -89,7 +87,7 @@ class ZAOBAO(BasicNewsRecipe):
|
||||
a_title = self.tag_to_string(a)
|
||||
date = ''
|
||||
description = ''
|
||||
self.log_debug('adding %s at %s'%(a_title,a_url))
|
||||
self.log.debug('adding %s at %s'%(a_title,a_url))
|
||||
articles.append({
|
||||
'title':a_title,
|
||||
'date':date,
|
||||
@ -100,23 +98,23 @@ class ZAOBAO(BasicNewsRecipe):
|
||||
pfeeds = feeds_from_index([(title, articles)], oldest_article=self.oldest_article,
|
||||
max_articles_per_feed=self.max_articles_per_feed)
|
||||
|
||||
self.log_debug('adding %s to feed'%(title))
|
||||
self.log.debug('adding %s to feed'%(title))
|
||||
for feed in pfeeds:
|
||||
self.log_debug('adding feed: %s'%(feed.title))
|
||||
self.log.debug('adding feed: %s'%(feed.title))
|
||||
feed.description = self.DESC_SENSE
|
||||
parsed_feeds.append(feed)
|
||||
for a, article in enumerate(feed):
|
||||
self.log_debug('added article %s from %s'%(article.title, article.url))
|
||||
self.log_debug('added feed %s'%(feed.title))
|
||||
self.log.debug('added article %s from %s'%(article.title, article.url))
|
||||
self.log.debug('added feed %s'%(feed.title))
|
||||
|
||||
for i, feed in enumerate(parsed_feeds):
|
||||
# workaorund a strange problem: Somethimes the xml encoding is not apllied correctly by parse()
|
||||
weired_encoding_detected = False
|
||||
if not isinstance(feed.description, unicode) and self.encoding and feed.description:
|
||||
self.log_debug('Feed %s is not encoded correctly, manually replace it'%(feed.title))
|
||||
self.log.debug('Feed %s is not encoded correctly, manually replace it'%(feed.title))
|
||||
feed.description = feed.description.decode(self.encoding, 'replace')
|
||||
elif feed.description.find(self.DESC_SENSE) == -1 and self.encoding and feed.description:
|
||||
self.log_debug('Feed %s is strangely encoded, manually redo all'%(feed.title))
|
||||
self.log.debug('Feed %s is strangely encoded, manually redo all'%(feed.title))
|
||||
feed.description = feed.description.encode('cp1252', 'replace').decode(self.encoding, 'replace')
|
||||
weired_encoding_detected = True
|
||||
|
||||
@ -138,7 +136,7 @@ class ZAOBAO(BasicNewsRecipe):
|
||||
article.text_summary = article.text_summary.encode('cp1252', 'replace').decode(self.encoding, 'replace')
|
||||
|
||||
if article.title == "Untitled article":
|
||||
self.log_debug('Removing empty article %s from %s'%(article.title, article.url))
|
||||
self.log.debug('Removing empty article %s from %s'%(article.title, article.url))
|
||||
# remove the article
|
||||
feed.articles[a:a+1] = []
|
||||
return parsed_feeds
|
||||
|
Loading…
x
Reference in New Issue
Block a user