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
f6871844d9
commit
7e853d6260
@ -606,7 +606,7 @@ Format specific tips
|
|||||||
|
|
||||||
Here you will find tips specific to the conversion of particular formats. Options specific to particular
|
Here you will find tips specific to the conversion of particular formats. Options specific to particular
|
||||||
format, whether input or output are available in the conversion dialog under their own section, for example
|
format, whether input or output are available in the conversion dialog under their own section, for example
|
||||||
`TXT Input` or `EPUB Output`.
|
`TXT input` or `EPUB output`.
|
||||||
|
|
||||||
Convert Microsoft Word documents
|
Convert Microsoft Word documents
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
.. _diff:
|
.. _diff:
|
||||||
|
|
||||||
Comparing E-books
|
Comparing e-books
|
||||||
========================
|
========================
|
||||||
|
|
||||||
calibre includes an integrated e-book comparison tool that can be used to see
|
calibre includes an integrated e-book comparison tool that can be used to see
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
.. _edit:
|
.. _edit:
|
||||||
|
|
||||||
Editing E-books
|
Editing e-books
|
||||||
========================
|
========================
|
||||||
|
|
||||||
calibre has an integrated e-book editor that can be used to edit books in the
|
calibre has an integrated e-book editor that can be used to edit books in the
|
||||||
@ -507,14 +507,14 @@ the :guilabel:`Compare` button. The :guilabel:`Revert to` button restores the
|
|||||||
book to the selected checkpoint, undoing all changes since that checkpoint was
|
book to the selected checkpoint, undoing all changes since that checkpoint was
|
||||||
created.
|
created.
|
||||||
|
|
||||||
The Live Preview panel
|
The Live preview panel
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
.. image:: images/live-preview.png
|
.. image:: images/live-preview.png
|
||||||
:alt: The Live Preview Panel
|
:alt: The Live preview Panel
|
||||||
:class: float-left-img
|
:class: float-left-img
|
||||||
|
|
||||||
The :guilabel:`File Preview` gives you an overview of the various files inside
|
The :guilabel:`File preview` gives you an overview of the various files inside
|
||||||
The live preview panel shows you the changes you are making live (with a second
|
The live preview panel shows you the changes you are making live (with a second
|
||||||
or two of delay). As you edit HTML or CSS files, the preview panel is updated
|
or two of delay). As you edit HTML or CSS files, the preview panel is updated
|
||||||
automatically to reflect your changes. As you move the cursor around in the
|
automatically to reflect your changes. As you move the cursor around in the
|
||||||
@ -572,7 +572,7 @@ The Live CSS panel
|
|||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
.. image:: images/live_css.png
|
.. image:: images/live_css.png
|
||||||
:alt: The Live Preview Panel
|
:alt: The Live CSS Panel
|
||||||
:class: float-left-img
|
:class: float-left-img
|
||||||
|
|
||||||
|
|
||||||
@ -596,12 +596,12 @@ You can enable the Live CSS panel via :guilabel:`View->Live CSS`.
|
|||||||
|
|
||||||
<div style="clear:both"></div>
|
<div style="clear:both"></div>
|
||||||
|
|
||||||
Miscellaneous Tools
|
Miscellaneous tools
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
There are a few more tools that can be useful while you edit the book.
|
There are a few more tools that can be useful while you edit the book.
|
||||||
|
|
||||||
The Table of Contents View
|
The Table of Contents view
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
The Table of Contents view shows you the current table of contents in the book.
|
The Table of Contents view shows you the current table of contents in the book.
|
||||||
|
@ -7,7 +7,7 @@ Frequently Asked Questions
|
|||||||
:depth: 1
|
:depth: 1
|
||||||
:local:
|
:local:
|
||||||
|
|
||||||
Ebook Format Conversion
|
Ebook format conversion
|
||||||
-------------------------
|
-------------------------
|
||||||
.. contents:: Contents
|
.. contents:: Contents
|
||||||
:depth: 1
|
:depth: 1
|
||||||
|
@ -301,7 +301,7 @@ Many operations, such as adding books, deleting, viewing, etc., are context sens
|
|||||||
|
|
||||||
.. _search_sort:
|
.. _search_sort:
|
||||||
|
|
||||||
Search & Sort
|
Search & sort
|
||||||
---------------
|
---------------
|
||||||
.. image:: images/search_sort.png
|
.. image:: images/search_sort.png
|
||||||
:align: center
|
:align: center
|
||||||
@ -324,7 +324,7 @@ The Search & Sort section allows you to perform several powerful actions on your
|
|||||||
|
|
||||||
.. _search_interface:
|
.. _search_interface:
|
||||||
|
|
||||||
The Search Interface
|
The search interface
|
||||||
---------------------
|
---------------------
|
||||||
You can search all the metadata by entering search terms in the search bar. Searches are case insensitive. For example::
|
You can search all the metadata by entering search terms in the search bar. Searches are case insensitive. For example::
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
.. _metadata:
|
.. _metadata:
|
||||||
|
|
||||||
Editing Ebook Metadata
|
Editing e-book metadata
|
||||||
========================
|
========================
|
||||||
|
|
||||||
.. contents:: Contents
|
.. contents:: Contents
|
||||||
|
@ -324,7 +324,7 @@ Further reading
|
|||||||
|
|
||||||
To learn more about writing advanced recipes using some of the facilities, available in ``BasicNewsRecipe`` you should consult the following sources:
|
To learn more about writing advanced recipes using some of the facilities, available in ``BasicNewsRecipe`` you should consult the following sources:
|
||||||
|
|
||||||
:ref:`API Documentation <news_recipe>`
|
:ref:`API documentation <news_recipe>`
|
||||||
Documentation of the ``BasicNewsRecipe`` class and all its important methods and fields.
|
Documentation of the ``BasicNewsRecipe`` class and all its important methods and fields.
|
||||||
|
|
||||||
`BasicNewsRecipe <https://github.com/kovidgoyal/calibre/blob/master/src/calibre/web/feeds/news.py>`_
|
`BasicNewsRecipe <https://github.com/kovidgoyal/calibre/blob/master/src/calibre/web/feeds/news.py>`_
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
.. _news_recipe:
|
.. _news_recipe:
|
||||||
|
|
||||||
API Documentation for recipes
|
API documentation for recipes
|
||||||
===============================
|
===============================
|
||||||
|
|
||||||
.. module:: calibre.web.feeds.news
|
.. module:: calibre.web.feeds.news
|
||||||
|
@ -60,7 +60,7 @@ You create the custom column in the usual way, using Preferences -> Add your own
|
|||||||
.. image:: images/sg_cc.jpg
|
.. image:: images/sg_cc.jpg
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
Then after restarting calibre, you must tell calibre that the column is to be treated as a hierarchy. Go to :guilabel:`Preferences -> Look and Feel -> Tag browser` and enter the lookup name "#genre" into the "Categories with hierarchical items" box. Press Apply, and you are done with setting up.
|
Then after restarting calibre, you must tell calibre that the column is to be treated as a hierarchy. Go to :guilabel:`Preferences -> Look & feel -> Tag browser` and enter the lookup name "#genre" into the "Categories with hierarchical items" box. Press :guilabel:`Apply`, and you are done with setting up.
|
||||||
|
|
||||||
.. image:: images/sg_pref.png
|
.. image:: images/sg_pref.png
|
||||||
:align: center
|
:align: center
|
||||||
|
@ -803,7 +803,7 @@ class LibraryClosedPlugin(Plugin): # {{{
|
|||||||
when the library is changed, or when a library is used in some other way.
|
when the library is changed, or when a library is used in some other way.
|
||||||
At the moment these plugins won't be called by the CLI functions.
|
At the moment these plugins won't be called by the CLI functions.
|
||||||
'''
|
'''
|
||||||
type = _('Library Closed')
|
type = _('Library closed')
|
||||||
|
|
||||||
# minimum version 2.54 because that is when support was added
|
# minimum version 2.54 because that is when support was added
|
||||||
minimum_calibre_version = (2, 54, 0)
|
minimum_calibre_version = (2, 54, 0)
|
||||||
|
@ -283,7 +283,7 @@ class OutputFormatPlugin(Plugin):
|
|||||||
The main action happens in :meth:`convert`.
|
The main action happens in :meth:`convert`.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
type = _('Conversion Output')
|
type = _('Conversion output')
|
||||||
can_be_disabled = False
|
can_be_disabled = False
|
||||||
supported_platforms = ['windows', 'osx', 'linux']
|
supported_platforms = ['windows', 'osx', 'linux']
|
||||||
|
|
||||||
|
@ -226,7 +226,7 @@ class CollectionsGroupBox(DeviceOptionsGroupBox):
|
|||||||
device.get_pref('delete_empty_collections')
|
device.get_pref('delete_empty_collections')
|
||||||
)
|
)
|
||||||
|
|
||||||
self.ignore_collections_names_label = QLabel(_('Ignore Collections:'))
|
self.ignore_collections_names_label = QLabel(_('Ignore collections:'))
|
||||||
self.ignore_collections_names_edit = QLineEdit(self)
|
self.ignore_collections_names_edit = QLineEdit(self)
|
||||||
self.ignore_collections_names_edit.setToolTip(_('List the names of collections to be ignored by ' +
|
self.ignore_collections_names_edit.setToolTip(_('List the names of collections to be ignored by ' +
|
||||||
'the collection management. The collections listed ' +
|
'the collection management. The collections listed ' +
|
||||||
@ -422,7 +422,7 @@ class MetadataGroupBox(DeviceOptionsGroupBox):
|
|||||||
'Be careful when doing this as it will take time and could make the initial connection take a long time.')))
|
'Be careful when doing this as it will take time and could make the initial connection take a long time.')))
|
||||||
|
|
||||||
self.update_series_checkbox = create_checkbox(
|
self.update_series_checkbox = create_checkbox(
|
||||||
_("Set Series information"),
|
_("Set series information"),
|
||||||
_('The book lists on the Kobo devices can display series information. '
|
_('The book lists on the Kobo devices can display series information. '
|
||||||
'This is not read by the device from the sideloaded books. '
|
'This is not read by the device from the sideloaded books. '
|
||||||
'Series information can only be added to the device after the book has been processed by the device. '
|
'Series information can only be added to the device after the book has been processed by the device. '
|
||||||
|
@ -134,9 +134,9 @@ class SNBOutput(OutputFormatPlugin):
|
|||||||
# the tocInfoTree directly instead of modifying the toc
|
# the tocInfoTree directly instead of modifying the toc
|
||||||
ch = etree.SubElement(tocBody, "chapter")
|
ch = etree.SubElement(tocBody, "chapter")
|
||||||
ch.set("src", ProcessFileName(first.href) + ".snbc")
|
ch.set("src", ProcessFileName(first.href) + ".snbc")
|
||||||
ch.text = _('Cover Pages')
|
ch.text = _('Cover pages')
|
||||||
outputFiles[first.href] = []
|
outputFiles[first.href] = []
|
||||||
outputFiles[first.href].append(("", _("Cover Pages")))
|
outputFiles[first.href].append(("", _("Cover pages")))
|
||||||
|
|
||||||
for tocitem in oeb_book.toc:
|
for tocitem in oeb_book.toc:
|
||||||
if tocitem.href.find('#') != -1:
|
if tocitem.href.find('#') != -1:
|
||||||
@ -250,6 +250,7 @@ class SNBOutput(OutputFormatPlugin):
|
|||||||
with lopen(imagePath, 'wb') as f:
|
with lopen(imagePath, 'wb') as f:
|
||||||
f.write(image_to_data(img, fmt=imagePath.rpartition('.')[-1]))
|
f.write(image_to_data(img, fmt=imagePath.rpartition('.')[-1]))
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
from calibre.ebooks.oeb.reader import OEBReader
|
from calibre.ebooks.oeb.reader import OEBReader
|
||||||
from calibre.ebooks.oeb.base import OEBBook
|
from calibre.ebooks.oeb.base import OEBBook
|
||||||
|
@ -70,8 +70,8 @@ def set_use_roman(val):
|
|||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
# Draw text {{{
|
|
||||||
|
|
||||||
|
# Draw text {{{
|
||||||
Point = namedtuple('Point', 'x y')
|
Point = namedtuple('Point', 'x y')
|
||||||
|
|
||||||
|
|
||||||
@ -235,6 +235,7 @@ def layout_text(prefs, img, title, subtitle, footer, max_height, style):
|
|||||||
def sanitize(s):
|
def sanitize(s):
|
||||||
return unicodedata.normalize('NFC', clean_xml_chars(clean_ascii_chars(force_unicode(s or ''))))
|
return unicodedata.normalize('NFC', clean_xml_chars(clean_ascii_chars(force_unicode(s or ''))))
|
||||||
|
|
||||||
|
|
||||||
_formatter = None
|
_formatter = None
|
||||||
_template_cache = {}
|
_template_cache = {}
|
||||||
|
|
||||||
@ -294,6 +295,7 @@ def format_text(mi, prefs):
|
|||||||
return tuple(format_fields(mi, prefs))
|
return tuple(format_fields(mi, prefs))
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
|
||||||
# Colors {{{
|
# Colors {{{
|
||||||
ColorTheme = namedtuple('ColorTheme', 'color1 color2 contrast_color1 contrast_color2')
|
ColorTheme = namedtuple('ColorTheme', 'color1 color2 contrast_color1 contrast_color2')
|
||||||
|
|
||||||
@ -301,6 +303,7 @@ ColorTheme = namedtuple('ColorTheme', 'color1 color2 contrast_color1 contrast_co
|
|||||||
def to_theme(x):
|
def to_theme(x):
|
||||||
return {k:v for k, v in zip(ColorTheme._fields[:4], x.split())}
|
return {k:v for k, v in zip(ColorTheme._fields[:4], x.split())}
|
||||||
|
|
||||||
|
|
||||||
fallback_colors = to_theme('ffffff 000000 000000 ffffff')
|
fallback_colors = to_theme('ffffff 000000 000000 ffffff')
|
||||||
|
|
||||||
default_color_themes = {
|
default_color_themes = {
|
||||||
@ -381,7 +384,7 @@ class Cross(Style):
|
|||||||
class Half(Style):
|
class Half(Style):
|
||||||
|
|
||||||
NAME = 'Half and Half'
|
NAME = 'Half and Half'
|
||||||
GUI_NAME = _('Half and Half')
|
GUI_NAME = _('Half and half')
|
||||||
|
|
||||||
def __call__(self, painter, rect, color_theme, title_block, subtitle_block, footer_block):
|
def __call__(self, painter, rect, color_theme, title_block, subtitle_block, footer_block):
|
||||||
g = QLinearGradient(QPointF(0, 0), QPointF(0, rect.height()))
|
g = QLinearGradient(QPointF(0, 0), QPointF(0, rect.height()))
|
||||||
@ -748,5 +751,6 @@ def test(scale=0.25):
|
|||||||
m.show()
|
m.show()
|
||||||
app.exec_()
|
app.exec_()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
test()
|
test()
|
||||||
|
@ -762,8 +762,8 @@ class InsertSemantics(Dialog):
|
|||||||
'dedication': _('Dedication'),
|
'dedication': _('Dedication'),
|
||||||
'epigraph': _('Epigraph'),
|
'epigraph': _('Epigraph'),
|
||||||
'foreword': _('Foreword'),
|
'foreword': _('Foreword'),
|
||||||
'loi': _('List of Illustrations'),
|
'loi': _('List of illustrations'),
|
||||||
'lot': _('List of Tables'),
|
'lot': _('List of tables'),
|
||||||
'notes': _('Notes'),
|
'notes': _('Notes'),
|
||||||
'preface': _('Preface'),
|
'preface': _('Preface'),
|
||||||
'text': _('Text'),
|
'text': _('Text'),
|
||||||
|
@ -405,7 +405,7 @@ class BasicNewsRecipe(Recipe):
|
|||||||
ignore it.
|
ignore it.
|
||||||
|
|
||||||
:param url: The URL to be followed
|
:param url: The URL to be followed
|
||||||
:param tag: The Tag from which the URL was derived
|
:param tag: The tag from which the URL was derived
|
||||||
'''
|
'''
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
@ -294,8 +294,8 @@ def create_more_actions_panel(container_id):
|
|||||||
container = document.getElementById(container_id)
|
container = document.getElementById(container_id)
|
||||||
create_top_bar(container, title=_('Sort books by…'), action=back, icon='close')
|
create_top_bar(container, title=_('Sort books by…'), action=back, icon='close')
|
||||||
items = [
|
items = [
|
||||||
create_item(_('Book List Mode'), subtitle=_('Change how the list of books is displayed')),
|
create_item(_('Book list mode'), subtitle=_('Change how the list of books is displayed')),
|
||||||
create_item(_('A Random Book'), subtitle=_('Choose a random book from the library'), action=def():
|
create_item(_('A random book'), subtitle=_('Choose a random book from the library'), action=def():
|
||||||
query = {'library_id': current_library_id(), 'book_id':'0'}
|
query = {'library_id': current_library_id(), 'book_id':'0'}
|
||||||
show_panel('book_details', query=query, replace=True)
|
show_panel('book_details', query=query, replace=True)
|
||||||
),
|
),
|
||||||
|
@ -62,8 +62,8 @@ def set_toc_anchor_map(val):
|
|||||||
default_color_schemes = {
|
default_color_schemes = {
|
||||||
'white':{'foreground':'#000000', 'background':'#ffffff', 'name':_('White')},
|
'white':{'foreground':'#000000', 'background':'#ffffff', 'name':_('White')},
|
||||||
'black':{'foreground':'#ffffff', 'background':'#000000', 'name':_('Black')},
|
'black':{'foreground':'#ffffff', 'background':'#000000', 'name':_('Black')},
|
||||||
'sepia-light':{'foreground':'#39322B', 'background':'#F6F3E9', 'name':_('Sepia Light')},
|
'sepia-light':{'foreground':'#39322B', 'background':'#F6F3E9', 'name':_('Sepia light')},
|
||||||
'sepia-dark': {'background':'#39322B', 'foreground':'#F6F3E9', 'name':_('Sepia Dark')},
|
'sepia-dark': {'background':'#39322B', 'foreground':'#F6F3E9', 'name':_('Sepia dark')},
|
||||||
}
|
}
|
||||||
|
|
||||||
register_callback(def():
|
register_callback(def():
|
||||||
|
Loading…
x
Reference in New Issue
Block a user