mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
String changes
This commit is contained in:
parent
7f7cd84c63
commit
e8a3258dcb
@ -215,13 +215,13 @@ class KINDLE(USBMS):
|
|||||||
spanTag['style'] = 'font-weight:bold'
|
spanTag['style'] = 'font-weight:bold'
|
||||||
if bookmark.book_format == 'pdf':
|
if bookmark.book_format == 'pdf':
|
||||||
spanTag.insert(0,NavigableString(
|
spanTag.insert(0,NavigableString(
|
||||||
_("%(time)s<br />Last Page Read: %(loc)d (%(pr)d%%)") % dict(
|
_("%(time)s<br />Last page read: %(loc)d (%(pr)d%%)") % dict(
|
||||||
time=strftime(u'%x', timestamp.timetuple()),
|
time=strftime(u'%x', timestamp.timetuple()),
|
||||||
loc=last_read_location,
|
loc=last_read_location,
|
||||||
pr=percent_read)))
|
pr=percent_read)))
|
||||||
else:
|
else:
|
||||||
spanTag.insert(0,NavigableString(
|
spanTag.insert(0,NavigableString(
|
||||||
_("%(time)s<br />Last Page Read: Location %(loc)d (%(pr)d%%)") % dict(
|
_("%(time)s<br />Last page read: Location %(loc)d (%(pr)d%%)") % dict(
|
||||||
time=strftime(u'%x', timestamp.timetuple()),
|
time=strftime(u'%x', timestamp.timetuple()),
|
||||||
loc=last_read_location,
|
loc=last_read_location,
|
||||||
pr=percent_read)))
|
pr=percent_read)))
|
||||||
|
@ -210,7 +210,7 @@ class Adder(QObject):
|
|||||||
return
|
return
|
||||||
if not self.file_groups:
|
if not self.file_groups:
|
||||||
error_dialog(self.pd, _('Could not add'), _(
|
error_dialog(self.pd, _('Could not add'), _(
|
||||||
'No ebook files were found in %s') % self.source, show=True)
|
'No e-book files were found in %s') % self.source, show=True)
|
||||||
self.break_cycles()
|
self.break_cycles()
|
||||||
return
|
return
|
||||||
self.pd.max = len(self.file_groups)
|
self.pd.max = len(self.file_groups)
|
||||||
|
@ -216,7 +216,7 @@ class RegexEdit(QWidget, Ui_Edit):
|
|||||||
def builder(self):
|
def builder(self):
|
||||||
if self.db is None:
|
if self.db is None:
|
||||||
self.doc_cache = _('Click the "Open" button below to open a '
|
self.doc_cache = _('Click the "Open" button below to open a '
|
||||||
'ebook to use for testing.')
|
'e-book to use for testing.')
|
||||||
bld = RegexBuilder(self.db, self.book_id, self.edit.text(), self.doc_cache, self)
|
bld = RegexBuilder(self.db, self.book_id, self.edit.text(), self.doc_cache, self)
|
||||||
if bld.cancelled:
|
if bld.cancelled:
|
||||||
return
|
return
|
||||||
|
@ -130,7 +130,7 @@ class SendToConfig(QWidget): # {{{
|
|||||||
self.l = l = QGridLayout(self)
|
self.l = l = QGridLayout(self)
|
||||||
self.setLayout(l)
|
self.setLayout(l)
|
||||||
self.m = m = QLabel('<p>'+_('''A <b>list of &folders</b> on the device to
|
self.m = m = QLabel('<p>'+_('''A <b>list of &folders</b> on the device to
|
||||||
which to send ebooks. The first one that exists will be used:'''))
|
which to send e-books. The first one that exists will be used:'''))
|
||||||
m.setWordWrap(True)
|
m.setWordWrap(True)
|
||||||
m.setBuddy(t)
|
m.setBuddy(t)
|
||||||
l.addWidget(m, 0, 0, 1, 2)
|
l.addWidget(m, 0, 0, 1, 2)
|
||||||
@ -281,7 +281,7 @@ class FormatRules(QGroupBox):
|
|||||||
self.l = l = QVBoxLayout()
|
self.l = l = QVBoxLayout()
|
||||||
self.setLayout(l)
|
self.setLayout(l)
|
||||||
self.la = la = QLabel('<p>'+_(
|
self.la = la = QLabel('<p>'+_(
|
||||||
'''You can create rules that control where ebooks of a specific
|
'''You can create rules that control where e-books of a specific
|
||||||
format are sent to on the device. These will take precedence over
|
format are sent to on the device. These will take precedence over
|
||||||
the folders specified above.'''))
|
the folders specified above.'''))
|
||||||
la.setWordWrap(True)
|
la.setWordWrap(True)
|
||||||
|
@ -77,7 +77,7 @@ class AddEmptyBookDialog(QDialog):
|
|||||||
self.tclear_button.clicked.connect(self.title_edit.clear)
|
self.tclear_button.clicked.connect(self.title_edit.clear)
|
||||||
self._layout.addWidget(self.tclear_button, 7, 1, 1, 1)
|
self._layout.addWidget(self.tclear_button, 7, 1, 1, 1)
|
||||||
|
|
||||||
self.format_label = QLabel(_('Also create an empty ebook in format:'))
|
self.format_label = QLabel(_('Also create an empty e-book in format:'))
|
||||||
self._layout.addWidget(self.format_label, 8, 0, 1, 2)
|
self._layout.addWidget(self.format_label, 8, 0, 1, 2)
|
||||||
c = self.format_value = QComboBox(self)
|
c = self.format_value = QComboBox(self)
|
||||||
from calibre.ebooks.oeb.polish.create import valid_empty_formats
|
from calibre.ebooks.oeb.polish.create import valid_empty_formats
|
||||||
@ -97,7 +97,7 @@ class AddEmptyBookDialog(QDialog):
|
|||||||
|
|
||||||
self.copy_formats = cf = QCheckBox(_('Also copy book &formats when duplicating a book'), self)
|
self.copy_formats = cf = QCheckBox(_('Also copy book &formats when duplicating a book'), self)
|
||||||
cf.setToolTip(_(
|
cf.setToolTip(_(
|
||||||
'Also copy all ebook files into the newly created duplicate'
|
'Also copy all e-book files into the newly created duplicate'
|
||||||
' books.'))
|
' books.'))
|
||||||
cf.setChecked(gprefs.get('create_empty_copy_dup_formats', False))
|
cf.setChecked(gprefs.get('create_empty_copy_dup_formats', False))
|
||||||
self._layout.addWidget(cf, 10, 0, 1, -1)
|
self._layout.addWidget(cf, 10, 0, 1, -1)
|
||||||
@ -171,6 +171,7 @@ class AddEmptyBookDialog(QDialog):
|
|||||||
def selected_title(self):
|
def selected_title(self):
|
||||||
return self.title_edit.text().strip()
|
return self.title_edit.text().strip()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
from calibre.library import db
|
from calibre.library import db
|
||||||
db = db()
|
db = db()
|
||||||
|
@ -637,7 +637,7 @@ title and author are swapped before the title case is set</string>
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QRadioButton" name="cover_from_fmt">
|
<widget class="QRadioButton" name="cover_from_fmt">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Set from &ebook file(s)</string>
|
<string>Set from &e-book file(s)</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -201,7 +201,7 @@
|
|||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="tab_2">
|
<widget class="QWidget" name="tab_2">
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
<string>Titl&e/Author/Series...</string>
|
<string>Titl&e/author/series...</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
<item row="1" column="0">
|
<item row="1" column="0">
|
||||||
|
@ -105,7 +105,7 @@ class EbookDownload(object):
|
|||||||
return
|
return
|
||||||
ext = os.path.splitext(filename)[1][1:].lower()
|
ext = os.path.splitext(filename)[1][1:].lower()
|
||||||
if ext not in BOOK_EXTENSIONS:
|
if ext not in BOOK_EXTENSIONS:
|
||||||
raise Exception(_('Not a support ebook format.'))
|
raise Exception(_('Not a support e-book format.'))
|
||||||
|
|
||||||
from calibre.ebooks.metadata.meta import get_metadata
|
from calibre.ebooks.metadata.meta import get_metadata
|
||||||
with open(filename, 'rb') as f:
|
with open(filename, 'rb') as f:
|
||||||
@ -148,7 +148,7 @@ class EbookDownloadMixin(object):
|
|||||||
|
|
||||||
def downloaded_ebook(self, job):
|
def downloaded_ebook(self, job):
|
||||||
if job.failed:
|
if job.failed:
|
||||||
self.job_exception(job, dialog_title=_('Failed to download ebook'))
|
self.job_exception(job, dialog_title=_('Failed to download e-book'))
|
||||||
return
|
return
|
||||||
|
|
||||||
self.status_bar.show_message(job.description + ' ' + _('finished'), 5000)
|
self.status_bar.show_message(job.description + ' ' + _('finished'), 5000)
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
<widget class="QLabel" name="help_label">
|
<widget class="QLabel" name="help_label">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string><div style="font-size:10pt;">
|
<string><div style="font-size:10pt;">
|
||||||
<p>Set a regular expression pattern to use when trying to guess ebook metadata from filenames. </p>
|
<p>Set a regular expression pattern to use when trying to guess e-book metadata from filenames. </p>
|
||||||
<p>A <a href="%s">tutorial</a> on using regular expressions is available.</p>
|
<p>A <a href="%s">tutorial</a> on using regular expressions is available.</p>
|
||||||
<p>Use the <b>Test</b> functionality below to test your regular expression on a few sample filenames (remember to include the file extension). The group names for the various metadata entries are documented in tooltips. Note that underscores in filenames are auto-replaced by spaces.</p></div></string>
|
<p>Use the <b>Test</b> functionality below to test your regular expression on a few sample filenames (remember to include the file extension). The group names for the various metadata entries are documented in tooltips. Note that underscores in filenames are auto-replaced by spaces.</p></div></string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -272,7 +272,7 @@ def option_parser():
|
|||||||
parser = option_parser(_('''\
|
parser = option_parser(_('''\
|
||||||
%prog [options] book.lrf
|
%prog [options] book.lrf
|
||||||
|
|
||||||
Read the LRF ebook book.lrf
|
Read the LRF e-book book.lrf
|
||||||
'''))
|
'''))
|
||||||
parser.add_option('--verbose', default=False, action='store_true', dest='verbose',
|
parser.add_option('--verbose', default=False, action='store_true', dest='verbose',
|
||||||
help=_('Print more information about the rendering process'))
|
help=_('Print more information about the rendering process'))
|
||||||
@ -322,7 +322,6 @@ def main(args=sys.argv, logger=None):
|
|||||||
return app.exec_()
|
return app.exec_()
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
sys.exit(main())
|
sys.exit(main())
|
||||||
|
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ If not checked, the values can be Yes or No.</string>
|
|||||||
<item row="3" column="0">
|
<item row="3" column="0">
|
||||||
<widget class="QCheckBox" name="opt_upload_news_to_device">
|
<widget class="QCheckBox" name="opt_upload_news_to_device">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Automatically send downloaded &news to ebook reader</string>
|
<string>Automatically send downloaded &news to e-book reader</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -384,7 +384,7 @@ class CreateCustomColumn(QDialog):
|
|||||||
'An Oblique Approach</b></big> [Belisarius [1]]". The template '
|
'An Oblique Approach</b></big> [Belisarius [1]]". The template '
|
||||||
'<pre><a href="https://www.beam-ebooks.de/ebook/{identifiers'
|
'<pre><a href="https://www.beam-ebooks.de/ebook/{identifiers'
|
||||||
':select(beam)}">Beam book</a></pre> '
|
':select(beam)}">Beam book</a></pre> '
|
||||||
'will generate a link to the book on the Beam ebooks site.') + '</p>')
|
'will generate a link to the book on the Beam e-books site.') + '</p>')
|
||||||
l.addWidget(cch)
|
l.addWidget(cch)
|
||||||
add_row(None, l)
|
add_row(None, l)
|
||||||
|
|
||||||
|
@ -132,16 +132,16 @@ class Matches(QAbstractItemModel):
|
|||||||
return ('<p>%s</p>' % result.description)
|
return ('<p>%s</p>' % result.description)
|
||||||
elif col == 2:
|
elif col == 2:
|
||||||
if result.drm_free_only:
|
if result.drm_free_only:
|
||||||
return ('<p>' + _('This store only distributes ebooks without DRM.') + '</p>')
|
return ('<p>' + _('This store only distributes e-books without DRM.') + '</p>')
|
||||||
else:
|
else:
|
||||||
return ('<p>' + _('This store distributes ebooks with DRM. It may have some titles without DRM, but you will need to check on a per title basis.') + '</p>') # noqa
|
return ('<p>' + _('This store distributes e-books with DRM. It may have some titles without DRM, but you will need to check on a per title basis.') + '</p>') # noqa
|
||||||
elif col == 3:
|
elif col == 3:
|
||||||
return ('<p>' + _('This store is headquartered in %s. This is a good indication of what market the store caters to. However, this does not necessarily mean that the store is limited to that market only.') % result.headquarters + '</p>') # noqa
|
return ('<p>' + _('This store is headquartered in %s. This is a good indication of what market the store caters to. However, this does not necessarily mean that the store is limited to that market only.') % result.headquarters + '</p>') # noqa
|
||||||
elif col == 4:
|
elif col == 4:
|
||||||
if result.affiliate:
|
if result.affiliate:
|
||||||
return ('<p>' + _('Buying from this store supports the calibre developer: %s.') % result.author + '</p>')
|
return ('<p>' + _('Buying from this store supports the calibre developer: %s.') % result.author + '</p>')
|
||||||
elif col == 5:
|
elif col == 5:
|
||||||
return ('<p>' + _('This store distributes ebooks in the following formats: %s') % ', '.join(result.formats) + '</p>')
|
return ('<p>' + _('This store distributes e-books in the following formats: %s') % ', '.join(result.formats) + '</p>')
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def setData(self, index, data, role):
|
def setData(self, index, data, role):
|
||||||
|
@ -79,18 +79,18 @@ class NPWebView(QWebView):
|
|||||||
if ext not in BOOK_EXTENSIONS:
|
if ext not in BOOK_EXTENSIONS:
|
||||||
if ext == 'acsm':
|
if ext == 'acsm':
|
||||||
from calibre.gui2.dialogs.confirm_delete import confirm
|
from calibre.gui2.dialogs.confirm_delete import confirm
|
||||||
if not confirm('<p>' + _('This ebook is a DRMed EPUB file. '
|
if not confirm('<p>' + _('This e-book is a DRMed EPUB file. '
|
||||||
'You will be prompted to save this file to your '
|
'You will be prompted to save this file to your '
|
||||||
'computer. Once it is saved, open it with '
|
'computer. Once it is saved, open it with '
|
||||||
'<a href="https://www.adobe.com/products/digitaleditions/">'
|
'<a href="https://www.adobe.com/products/digitaleditions/">'
|
||||||
'Adobe Digital Editions</a> (ADE).<p>ADE, in turn '
|
'Adobe Digital Editions</a> (ADE).<p>ADE, in turn '
|
||||||
'will download the actual ebook, which will be a '
|
'will download the actual e-book, which will be a '
|
||||||
'.epub file. You can add this book to calibre '
|
'.epub file. You can add this book to calibre '
|
||||||
'using "Add Books" and selecting the file from '
|
'using "Add Books" and selecting the file from '
|
||||||
'the ADE library folder.'),
|
'the ADE library folder.'),
|
||||||
'acsm_download', self):
|
'acsm_download', self):
|
||||||
return
|
return
|
||||||
name = choose_save_file(self, 'web-store-download-unknown', _('File is not a supported ebook type. Save to disk?'), initial_filename=filename)
|
name = choose_save_file(self, 'web-store-download-unknown', _('File is not a supported e-book type. Save to disk?'), initial_filename=filename)
|
||||||
if name:
|
if name:
|
||||||
self.gui.download_ebook(url, cf, name, name, False, create_browser=self.create_browser)
|
self.gui.download_ebook(url, cf, name, name, False, create_browser=self.create_browser)
|
||||||
else:
|
else:
|
||||||
|
@ -101,7 +101,7 @@ def convert_single_ebook(parent, db, book_ids, auto_conversion=False, # {{{
|
|||||||
if len(bad) == 1 and not bad[0][1]:
|
if len(bad) == 1 and not bad[0][1]:
|
||||||
title = db.title(bad[0][0], True)
|
title = db.title(bad[0][0], True)
|
||||||
warning_dialog(parent, _('Could not convert'), '<p>'+
|
warning_dialog(parent, _('Could not convert'), '<p>'+
|
||||||
_('Could not convert <b>%s</b> as it has no ebook files. If you '
|
_('Could not convert <b>%s</b> as it has no e-book files. If you '
|
||||||
'think it should have files, but calibre is not finding '
|
'think it should have files, but calibre is not finding '
|
||||||
'them, that is most likely because you moved the book\'s '
|
'them, that is most likely because you moved the book\'s '
|
||||||
'files around outside of calibre. You will need to find those files '
|
'files around outside of calibre. You will need to find those files '
|
||||||
@ -114,7 +114,7 @@ def convert_single_ebook(parent, db, book_ids, auto_conversion=False, # {{{
|
|||||||
msg = _('No supported formats (Available formats: %s)')%(
|
msg = _('No supported formats (Available formats: %s)')%(
|
||||||
', '.join(available_formats))
|
', '.join(available_formats))
|
||||||
else:
|
else:
|
||||||
msg = _('This book has no actual ebook files')
|
msg = _('This book has no actual e-book files')
|
||||||
res.append('%s - %s'%(title, msg))
|
res.append('%s - %s'%(title, msg))
|
||||||
|
|
||||||
msg = '%s' % '\n'.join(res)
|
msg = '%s' % '\n'.join(res)
|
||||||
|
@ -661,7 +661,7 @@ class Boss(QObject):
|
|||||||
_('The name you have chosen {0} contains special characters, internally'
|
_('The name you have chosen {0} contains special characters, internally'
|
||||||
' it will look like: {1}Try to use only the English alphabet [a-z], numbers [0-9],'
|
' it will look like: {1}Try to use only the English alphabet [a-z], numbers [0-9],'
|
||||||
' hyphens and underscores for file names. Other characters can cause problems for '
|
' hyphens and underscores for file names. Other characters can cause problems for '
|
||||||
' different ebook viewers. Are you sure you want to proceed?').format(
|
' different e-book viewers. Are you sure you want to proceed?').format(
|
||||||
'<pre>%s</pre>'%newname, '<pre>%s</pre>' % urlnormalize(newname)),
|
'<pre>%s</pre>'%newname, '<pre>%s</pre>' % urlnormalize(newname)),
|
||||||
'confirm-urlunsafe-change', parent=self.gui, title=_('Are you sure?'), config_set=tprefs):
|
'confirm-urlunsafe-change', parent=self.gui, title=_('Are you sure?'), config_set=tprefs):
|
||||||
return
|
return
|
||||||
|
@ -386,8 +386,8 @@ class WebView(QWebView):
|
|||||||
The preview will update automatically as you make changes.
|
The preview will update automatically as you make changes.
|
||||||
|
|
||||||
<p style="font-size:x-small; color: gray">Note that this is a quick preview
|
<p style="font-size:x-small; color: gray">Note that this is a quick preview
|
||||||
only, it is not intended to simulate an actual ebook reader. Some
|
only, it is not intended to simulate an actual e-book reader. Some
|
||||||
aspects of your ebook will not work, such as page breaks and page margins.
|
aspects of your e-book will not work, such as page breaks and page margins.
|
||||||
'''))
|
'''))
|
||||||
|
|
||||||
def inspect(self):
|
def inspect(self):
|
||||||
|
@ -773,7 +773,7 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{
|
|||||||
title = job.description.split(':')[-1].partition('(')[-1][:-1]
|
title = job.description.split(':')[-1].partition('(')[-1][:-1]
|
||||||
msg = _('<p><b>Failed to convert: %s')%title
|
msg = _('<p><b>Failed to convert: %s')%title
|
||||||
msg += '<p>'+_('''
|
msg += '<p>'+_('''
|
||||||
Many older ebook reader devices are incapable of displaying
|
Many older e-book reader devices are incapable of displaying
|
||||||
EPUB files that have internal components over a certain size.
|
EPUB files that have internal components over a certain size.
|
||||||
Therefore, when converting to EPUB, calibre automatically tries
|
Therefore, when converting to EPUB, calibre automatically tries
|
||||||
to split up the EPUB into smaller sized pieces. For some
|
to split up the EPUB into smaller sized pieces. For some
|
||||||
@ -783,7 +783,7 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{
|
|||||||
maximum split size under EPUB Output in the conversion dialog,
|
maximum split size under EPUB Output in the conversion dialog,
|
||||||
or by turning on Heuristic Processing, also in the conversion
|
or by turning on Heuristic Processing, also in the conversion
|
||||||
dialog. Note that if you make the maximum split size too large,
|
dialog. Note that if you make the maximum split size too large,
|
||||||
your ebook reader may have trouble with the EPUB.
|
your e-book reader may have trouble with the EPUB.
|
||||||
''')
|
''')
|
||||||
if not minz:
|
if not minz:
|
||||||
d = error_dialog(self, _('Conversion Failed'), msg,
|
d = error_dialog(self, _('Conversion Failed'), msg,
|
||||||
|
@ -25,7 +25,7 @@ from calibre.gui2.viewer.config_ui import Ui_Dialog
|
|||||||
|
|
||||||
|
|
||||||
def config(defaults=None):
|
def config(defaults=None):
|
||||||
desc = _('Options to customize the ebook viewer')
|
desc = _('Options to customize the e-book viewer')
|
||||||
if defaults is None:
|
if defaults is None:
|
||||||
c = Config('viewer', desc)
|
c = Config('viewer', desc)
|
||||||
else:
|
else:
|
||||||
@ -53,7 +53,7 @@ def config(defaults=None):
|
|||||||
c.add_opt('remember_current_page', default=True,
|
c.add_opt('remember_current_page', default=True,
|
||||||
help=_('Save the current position in the document, when quitting'))
|
help=_('Save the current position in the document, when quitting'))
|
||||||
c.add_opt('copy_bookmarks_to_file', default=True,
|
c.add_opt('copy_bookmarks_to_file', default=True,
|
||||||
help=_('Copy bookmarks to the ebook file for easy sharing, if possible'))
|
help=_('Copy bookmarks to the e-book file for easy sharing, if possible'))
|
||||||
c.add_opt('wheel_flips_pages', default=False,
|
c.add_opt('wheel_flips_pages', default=False,
|
||||||
help=_('Have the mouse wheel turn pages'))
|
help=_('Have the mouse wheel turn pages'))
|
||||||
c.add_opt('wheel_scroll_fraction', default=100,
|
c.add_opt('wheel_scroll_fraction', default=100,
|
||||||
|
@ -842,10 +842,10 @@ You must enter the search URL for the search engine, with the placeholder
|
|||||||
<item row="6" column="0" colspan="2">
|
<item row="6" column="0" colspan="2">
|
||||||
<widget class="QCheckBox" name="opt_copy_bookmarks_to_file">
|
<widget class="QCheckBox" name="opt_copy_bookmarks_to_file">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Keep a copy of all bookmarks/current page information inside the ebook file, so that you can share them by simply sending the ebook file itself. Currently only works with ebooks in the EPUB format.</string>
|
<string>Keep a copy of all bookmarks/current page information inside the e-book file, so that you can share them by simply sending the e-book file itself. Currently only works with e-books in the EPUB format.</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Keep a copy of &bookmarks/current page inside the ebook file, for easy sharing</string>
|
<string>Keep a copy of &bookmarks/current page inside the e-book file, for easy sharing</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -87,7 +87,7 @@ class Worker(Thread):
|
|||||||
self.exception = self.traceback = None
|
self.exception = self.traceback = None
|
||||||
except BadZipfile:
|
except BadZipfile:
|
||||||
self.exception = _(
|
self.exception = _(
|
||||||
'This ebook is corrupted and cannot be opened. If you '
|
'This e-book is corrupted and cannot be opened. If you '
|
||||||
'downloaded it from somewhere, try downloading it again.')
|
'downloaded it from somewhere, try downloading it again.')
|
||||||
self.traceback = ''
|
self.traceback = ''
|
||||||
except WorkerError as err:
|
except WorkerError as err:
|
||||||
@ -1160,7 +1160,7 @@ class EbookViewer(MainWindow):
|
|||||||
|
|
||||||
|
|
||||||
def config(defaults=None):
|
def config(defaults=None):
|
||||||
desc = _('Options to control the ebook viewer')
|
desc = _('Options to control the e-book viewer')
|
||||||
if defaults is None:
|
if defaults is None:
|
||||||
c = Config('viewer', desc)
|
c = Config('viewer', desc)
|
||||||
else:
|
else:
|
||||||
@ -1192,7 +1192,7 @@ def option_parser():
|
|||||||
parser = c.option_parser(usage=_('''\
|
parser = c.option_parser(usage=_('''\
|
||||||
%prog [options] file
|
%prog [options] file
|
||||||
|
|
||||||
View an ebook.
|
View an e-book.
|
||||||
'''))
|
'''))
|
||||||
setup_gui_option_parser(parser)
|
setup_gui_option_parser(parser)
|
||||||
return parser
|
return parser
|
||||||
|
@ -388,7 +388,7 @@ class Main(MainWindow):
|
|||||||
a('forward', _('Forward'), 'forward.png')
|
a('forward', _('Forward'), 'forward.png')
|
||||||
self.tool_bar.addSeparator()
|
self.tool_bar.addSeparator()
|
||||||
|
|
||||||
a('open_ebook', _('Open ebook'), 'document_open.png', menu_name='open_history')
|
a('open_ebook', _('Open e-book'), 'document_open.png', menu_name='open_history')
|
||||||
a('copy', _('Copy to clipboard'), 'edit-copy.png').setDisabled(True)
|
a('copy', _('Copy to clipboard'), 'edit-copy.png').setDisabled(True)
|
||||||
a('font_size_larger', _('Increase font size'), 'font_size_larger.png')
|
a('font_size_larger', _('Increase font size'), 'font_size_larger.png')
|
||||||
a('font_size_smaller', _('Decrease font size'), 'font_size_smaller.png')
|
a('font_size_smaller', _('Decrease font size'), 'font_size_smaller.png')
|
||||||
|
@ -432,7 +432,7 @@ the directory related options below.
|
|||||||
' Can be specified multiple times for multiple patterns. For e.g.: *.pdf will ignore all pdf files'))
|
' Can be specified multiple times for multiple patterns. For e.g.: *.pdf will ignore all pdf files'))
|
||||||
fadd('--add', 'add', _(
|
fadd('--add', 'add', _(
|
||||||
'A filename (glob) pattern, files matching this pattern will be added when scanning directories for files,'
|
'A filename (glob) pattern, files matching this pattern will be added when scanning directories for files,'
|
||||||
' even if they are not of a known ebook file type. Can be specified multiple times for multiple patterns.'))
|
' even if they are not of a known e-book file type. Can be specified multiple times for multiple patterns.'))
|
||||||
parser.add_option_group(g)
|
parser.add_option_group(g)
|
||||||
|
|
||||||
return parser
|
return parser
|
||||||
@ -551,7 +551,7 @@ def add_format_option_parser():
|
|||||||
'''\
|
'''\
|
||||||
%prog add_format [options] id ebook_file
|
%prog add_format [options] id ebook_file
|
||||||
|
|
||||||
Add the ebook in ebook_file to the available formats for the logical book identified \
|
Add the e-book in ebook_file to the available formats for the logical book identified \
|
||||||
by id. You can get id by using the search command. If the format already exists, \
|
by id. You can get id by using the search command. If the format already exists, \
|
||||||
it is replaced, unless the do not replace option is specified.\
|
it is replaced, unless the do not replace option is specified.\
|
||||||
'''))
|
'''))
|
||||||
|
@ -158,7 +158,7 @@ for f in mr:
|
|||||||
|
|
||||||
print ()
|
print ()
|
||||||
|
|
||||||
if mimetype_icons and raw_input('Remove the ebook format icons? [y/n]:').lower() in ['', 'y']:
|
if mimetype_icons and raw_input('Remove the e-book format icons? [y/n]:').lower() in ['', 'y']:
|
||||||
for i, (name, size) in enumerate(mimetype_icons):
|
for i, (name, size) in enumerate(mimetype_icons):
|
||||||
remove_icon('mimetypes', name, size, update=i == len(mimetype_icons) - 1)
|
remove_icon('mimetypes', name, size, update=i == len(mimetype_icons) - 1)
|
||||||
'''
|
'''
|
||||||
@ -1050,7 +1050,7 @@ def get_appdata():
|
|||||||
'summary':_('The one stop solution to all your e-book needs'),
|
'summary':_('The one stop solution to all your e-book needs'),
|
||||||
'description':(
|
'description':(
|
||||||
_('calibre is the one stop solution to all your e-book needs.'),
|
_('calibre is the one stop solution to all your e-book needs.'),
|
||||||
_('You can use calibre to catalog your books, fetch metadata for them automatically, convert them from and to all the various ebook formats, send them to your e-book reader devices, read the books on your computer, edit the books in a dedicated e-book editor and even make them available over the network with the built-in content server. You can also download news and periodicals in e-book format from over a thousand different news and magazine websites.') # noqa
|
_('You can use calibre to catalog your books, fetch metadata for them automatically, convert them from and to all the various e-book formats, send them to your e-book reader devices, read the books on your computer, edit the books in a dedicated e-book editor and even make them available over the network with the built-in content server. You can also download news and periodicals in e-book format from over a thousand different news and magazine websites.') # noqa
|
||||||
),
|
),
|
||||||
'screenshots':(
|
'screenshots':(
|
||||||
(1408, 792, 'https://lh4.googleusercontent.com/-bNE1hc_3pIc/UvHLwKPGBPI/AAAAAAAAASA/8oavs_c6xoU/w1408-h792-no/main-default.png',),
|
(1408, 792, 'https://lh4.googleusercontent.com/-bNE1hc_3pIc/UvHLwKPGBPI/AAAAAAAAASA/8oavs_c6xoU/w1408-h792-no/main-default.png',),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user