String changes

This commit is contained in:
Kovid Goyal 2017-04-25 10:01:23 +05:30
parent 7f7cd84c63
commit e8a3258dcb
24 changed files with 43 additions and 43 deletions

View File

@ -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)))

View File

@ -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)

View File

@ -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

View File

@ -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)

View File

@ -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()

View File

@ -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 &amp;ebook file(s)</string> <string>Set from &amp;e-book file(s)</string>
</property> </property>
</widget> </widget>
</item> </item>

View File

@ -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&amp;e/Author/Series...</string> <string>Titl&amp;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">

View File

@ -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)

View File

@ -18,7 +18,7 @@
<widget class="QLabel" name="help_label"> <widget class="QLabel" name="help_label">
<property name="text"> <property name="text">
<string>&lt;div style=&quot;font-size:10pt;&quot;&gt; <string>&lt;div style=&quot;font-size:10pt;&quot;&gt;
&lt;p&gt;Set a regular expression pattern to use when trying to guess ebook metadata from filenames. &lt;/p&gt; &lt;p&gt;Set a regular expression pattern to use when trying to guess e-book metadata from filenames. &lt;/p&gt;
&lt;p&gt;A &lt;a href=&quot;%s&quot;&gt;tutorial&lt;/a&gt; on using regular expressions is available.&lt;/p&gt; &lt;p&gt;A &lt;a href=&quot;%s&quot;&gt;tutorial&lt;/a&gt; on using regular expressions is available.&lt;/p&gt;
&lt;p&gt;Use the &lt;b&gt;Test&lt;/b&gt; 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.&lt;/p&gt;&lt;/div&gt;</string> &lt;p&gt;Use the &lt;b&gt;Test&lt;/b&gt; 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.&lt;/p&gt;&lt;/div&gt;</string>
</property> </property>

View File

@ -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())

View File

@ -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 &amp;news to ebook reader</string> <string>Automatically send downloaded &amp;news to e-book reader</string>
</property> </property>
</widget> </widget>
</item> </item>

View File

@ -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>&lt;a href="https://www.beam-ebooks.de/ebook/{identifiers' '<pre>&lt;a href="https://www.beam-ebooks.de/ebook/{identifiers'
':select(beam)}"&gt;Beam book&lt;/a&gt;</pre> ' ':select(beam)}"&gt;Beam book&lt;/a&gt;</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)

View File

@ -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):

View File

@ -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:

View File

@ -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)

View File

@ -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

View File

@ -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):

View File

@ -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,

View File

@ -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,

View File

@ -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 &amp;bookmarks/current page inside the ebook file, for easy sharing</string> <string>Keep a copy of &amp;bookmarks/current page inside the e-book file, for easy sharing</string>
</property> </property>
</widget> </widget>
</item> </item>

View File

@ -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

View File

@ -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')

View File

@ -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.\
''')) '''))

View File

@ -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',),