diff --git a/Changelog.yaml b/Changelog.yaml index 699aa3a531..82b335bbdd 100644 --- a/Changelog.yaml +++ b/Changelog.yaml @@ -4,6 +4,100 @@ # for important features/bug fixes. # Also, each release can have new and improved recipes. +- version: 0.7.38 + date: 2011-01-07 + + new features: + - title: "Reduce startup time when using a composite custom column" + + - title: "Template language: Add a list_item function for use with tags like columns. See User Manual for details" + + - title: "TXT Input: Attempt to detect the input encoding when not specified. Auto detect paragraph structure and formatting markup." + + - title: "Search & replace: Add ability to manipulate number and boolean columns." + + - title: "Add type ahead completion to the advanced search dialog." + tickets: [8035] + + - title: "Double click on plugin in Preferences dialog to customize" + tickets: [8175] + + - title: "Allow customization of the SONY driver to send thumbnail to the device. Useful with newer SONY readers" + tickets: [8161] + + - title: "Smarten punctuation: Convert double dashes to em dashes. Preprocessing: Various tweaks" + + bug fixes: + - title: "Fix regression causing the template formatter to intepret a missing format letter as ERROR instead of 's'." + + - title: "Fix regression that broke conversion of PNG images in PDF files on OS X." + tickets: [8215] + + - title: "Content server: Fix improper XML escaping of category titles in the OPDS feeds" + tickets: [8225] + + - title: "When decoding XML if the XML starts with a UTF-8 BOM decode as UTF-8. Fixes parsing of FB2 files with UTF-8 BOMs" + + - title: "E-book viewer: When scrolling to a bookmark and the content is wider than the window, do not scroll in the horizontal direction" + + - title: "E-book viewer: Fix next page skipping the bottom of chapters when the content is wider than the window." + tickets: [8153] + + - title: " FB2 Output: Insert covers." + tickets: [8172] + + - title: "Content server: When serving OPDS feeds handle html descriptions that have namespaced attributes." + tickets: [7938] + + - title: "When downloading metadata from isbndb.com, download a maximum of 30 results rather than 1000" + + - title: "Fix sorting of tags column" + + - title: "Change search/replace to show commas instead of vertical bars as the separator for multiple authors" + + - title: "Template language: Make all column names case insensitive" + + - title: "Fix bug that prevent the Disabled option for Tag Browser partiotining from working in the Preferences dialog" + + - title: "Fix bug when using tags like custom column in the template language" + + - title: "Fix bug where composite custom columns using general_program_mode fields are not evaluated correctly when used in a template." + + - title: "ImageMagick interface: Don't crash when asked to open empty image files" + + - title: "Kobo driver: Add TXT,CBZ,CBR to supported formats list" + tickets: [8124] + + - title: "Don't uneccessarily scroll the book list horizontally when re-selcting previously selected rows." + + new recipes: + - title: "New London Day" + author: "Being" + + - title: "Walla" + author: "marbs" + + - title: "New Journal of Physics" + author: "Chema Cortes" + + - title: "The Baltimore Sun" + author: "Josh Hall" + + - title: "Arabian Business and Sunday Times (UK)" + author: "Darko Miletic" + + - title: "Deia" + author: "Gerardo Diez" + + - title: "Smarter Planet" + author: "Jack Mason" + + + improved recipes: + - The Atlantic + - Danas + - Ledevoir + - version: 0.7.37 date: 2011-01-02 diff --git a/src/calibre/constants.py b/src/calibre/constants.py index bc359a2b79..2443c55d9d 100644 --- a/src/calibre/constants.py +++ b/src/calibre/constants.py @@ -2,7 +2,7 @@ __license__ = 'GPL v3' __copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net' __docformat__ = 'restructuredtext en' __appname__ = 'calibre' -__version__ = '0.7.37' +__version__ = '0.7.38' __author__ = "Kovid Goyal " import re diff --git a/src/calibre/devices/android/driver.py b/src/calibre/devices/android/driver.py index c2db8ddd77..b7e2f0fd2e 100644 --- a/src/calibre/devices/android/driver.py +++ b/src/calibre/devices/android/driver.py @@ -27,8 +27,9 @@ class ANDROID(USBMS): 0x040d : { 0x8510 : [0x0001], 0x0851 : [0x1] }, # Motorola - 0x22b8 : { 0x41d9 : [0x216], 0x2d61: [0x100], 0x2d67 : [0x100], - 0x41db : [0x216], 0x4285 : [0x216], 0x42a3 : [0x216] }, + 0x22b8 : { 0x41d9 : [0x216], 0x2d61 : [0x100], 0x2d67 : [0x100], + 0x41db : [0x216], 0x4285 : [0x216], 0x42a3 : [0x216], + 0x4286 : [0x216] }, # Sony Ericsson 0xfce : { 0xd12e : [0x0100]}, diff --git a/src/calibre/ebooks/chardet/__init__.py b/src/calibre/ebooks/chardet/__init__.py index dd279c6559..f9bca3c8d4 100644 --- a/src/calibre/ebooks/chardet/__init__.py +++ b/src/calibre/ebooks/chardet/__init__.py @@ -18,7 +18,7 @@ __version__ = "1.0" -import re +import re, codecs def detect(aBuf): import calibre.ebooks.chardet.universaldetector as universaldetector @@ -83,9 +83,11 @@ def xml_to_unicode(raw, verbose=False, strip_encoding_pats=False, if not raw: return u'', encoding if not isinstance(raw, unicode): - if raw.startswith('\xff\xfe'): + if raw.startswith(codecs.BOM_UTF8): + raw, encoding = raw.decode('utf-8')[1:], 'utf-8' + elif raw.startswith(codecs.BOM_UTF16_LE): raw, encoding = raw.decode('utf-16-le')[1:], 'utf-16-le' - elif raw.startswith('\xfe\xff'): + elif raw.startswith(codecs.BOM_UTF16_BE): raw, encoding = raw.decode('utf-16-be')[1:], 'utf-16-be' if not isinstance(raw, unicode): for pat in ENCODING_PATS: diff --git a/src/calibre/ebooks/conversion/plumber.py b/src/calibre/ebooks/conversion/plumber.py index f5beba375d..b1d760ea2d 100644 --- a/src/calibre/ebooks/conversion/plumber.py +++ b/src/calibre/ebooks/conversion/plumber.py @@ -977,6 +977,8 @@ def create_oebbook(log, path_or_stream, opts, input_plugin, reader=None, from calibre.ebooks.oeb.base import OEBBook html_preprocessor = HTMLPreProcessor(input_plugin.preprocess_html, opts.preprocess_html, opts) + if not encoding: + encoding = None oeb = OEBBook(log, html_preprocessor, pretty_print=opts.pretty_print, input_encoding=encoding) if not populate: diff --git a/src/calibre/ebooks/fb2/input.py b/src/calibre/ebooks/fb2/input.py index 1f9a3ffe95..b019873d39 100644 --- a/src/calibre/ebooks/fb2/input.py +++ b/src/calibre/ebooks/fb2/input.py @@ -46,15 +46,19 @@ class FB2Input(InputFormatPlugin): log.debug('Parsing XML...') raw = stream.read().replace('\0', '') raw = xml_to_unicode(raw, strip_encoding_pats=True, - assume_utf8=True)[0] + assume_utf8=True, resolve_entities=True)[0] try: doc = etree.fromstring(raw) except etree.XMLSyntaxError: try: doc = etree.fromstring(raw, parser=RECOVER_PARSER) + if doc is None: + raise Exception('parse failed') except: doc = etree.fromstring(raw.replace('& ', '&'), parser=RECOVER_PARSER) + if doc is None: + raise ValueError('The FB2 file is not valid XML') stylesheets = doc.xpath('//*[local-name() = "stylesheet" and @type="text/css"]') css = '' for s in stylesheets: diff --git a/src/calibre/ebooks/html/input.py b/src/calibre/ebooks/html/input.py index 6f875ae803..1f07f4ca41 100644 --- a/src/calibre/ebooks/html/input.py +++ b/src/calibre/ebooks/html/input.py @@ -119,7 +119,7 @@ class HTMLFile(object): self.is_binary = level > 0 and not bool(self.HTML_PAT.search(src[:4096])) if not self.is_binary: - if encoding is None: + if not encoding: encoding = xml_to_unicode(src[:4096], verbose=verbose)[-1] self.encoding = encoding else: diff --git a/src/calibre/ebooks/mobi/reader.py b/src/calibre/ebooks/mobi/reader.py index 14e3ed11c3..57f32e7131 100644 --- a/src/calibre/ebooks/mobi/reader.py +++ b/src/calibre/ebooks/mobi/reader.py @@ -139,7 +139,7 @@ class BookHeader(object): 65001: 'utf-8', }[self.codepage] except (IndexError, KeyError): - self.codec = 'cp1252' if user_encoding is None else user_encoding + self.codec = 'cp1252' if not user_encoding else user_encoding log.warn('Unknown codepage %d. Assuming %s' % (self.codepage, self.codec)) if ident == 'TEXTREAD' or self.length < 0xE4 or 0xE8 < self.length \ diff --git a/src/calibre/ebooks/oeb/base.py b/src/calibre/ebooks/oeb/base.py index c015868992..e11f6b45be 100644 --- a/src/calibre/ebooks/oeb/base.py +++ b/src/calibre/ebooks/oeb/base.py @@ -1892,7 +1892,7 @@ class OEBBook(object): return fix_data(data.decode(bom_enc)) except UnicodeDecodeError: pass - if self.input_encoding is not None: + if self.input_encoding: try: return fix_data(data.decode(self.input_encoding, 'replace')) except UnicodeDecodeError: diff --git a/src/calibre/ebooks/pdb/palmdoc/reader.py b/src/calibre/ebooks/pdb/palmdoc/reader.py index 945e31559a..439492ba0c 100644 --- a/src/calibre/ebooks/pdb/palmdoc/reader.py +++ b/src/calibre/ebooks/pdb/palmdoc/reader.py @@ -65,9 +65,9 @@ class Reader(FormatReader): from calibre.customize.ui import plugin_for_input_format txt_plugin = plugin_for_input_format('txt') - for option in txt_plugin.options: - if not hasattr(self.options, option.option.name): - setattr(self.options, option.name, option.recommended_value) + for opt in txt_plugin.options: + if not hasattr(self.options, opt.option.name): + setattr(self.options, opt.option.name, opt.recommended_value) stream.seek(0) return txt_plugin.convert(stream, self.options, 'txt', self.log, {}) diff --git a/src/calibre/ebooks/pdb/pdf/reader.py b/src/calibre/ebooks/pdb/pdf/reader.py index 30b0c4c57c..2a9636b083 100644 --- a/src/calibre/ebooks/pdb/pdf/reader.py +++ b/src/calibre/ebooks/pdb/pdf/reader.py @@ -31,9 +31,9 @@ class Reader(FormatReader): from calibre.customize.ui import plugin_for_input_format pdf_plugin = plugin_for_input_format('pdf') - for option in pdf_plugin.options: - if not hasattr(self.options, option.option.name): - setattr(self.options, option.name, option.recommended_value) + for opt in pdf_plugin.options: + if not hasattr(self.options, opt.option.name): + setattr(self.options, opt.option.name, opt.recommended_value) pdf.seek(0) return pdf_plugin.convert(pdf, self.options, 'pdf', self.log, {}) diff --git a/src/calibre/ebooks/pdb/ztxt/reader.py b/src/calibre/ebooks/pdb/ztxt/reader.py index 6e7f5dd923..cff7382754 100644 --- a/src/calibre/ebooks/pdb/ztxt/reader.py +++ b/src/calibre/ebooks/pdb/ztxt/reader.py @@ -83,9 +83,9 @@ class Reader(FormatReader): from calibre.customize.ui import plugin_for_input_format txt_plugin = plugin_for_input_format('txt') - for option in txt_plugin.options: - if not hasattr(self.options, option.option.name): - setattr(self.options, option.name, option.recommended_value) + for opt in txt_plugin.options: + if not hasattr(self.options, opt.option.name): + setattr(self.options, opt.option.name, opt.recommended_value) stream.seek(0) return txt_plugin.convert(stream, self.options, 'txt', self.log, {}) diff --git a/src/calibre/ebooks/tcr/input.py b/src/calibre/ebooks/tcr/input.py index aac72da7a8..4d15fd0923 100644 --- a/src/calibre/ebooks/tcr/input.py +++ b/src/calibre/ebooks/tcr/input.py @@ -26,9 +26,9 @@ class TCRInput(InputFormatPlugin): from calibre.customize.ui import plugin_for_input_format txt_plugin = plugin_for_input_format('txt') - for option in txt_plugin.options: - if not hasattr(options, option.option.name): - setattr(options, option.name, option.recommended_value) + for opt in txt_plugin.options: + if not hasattr(self.options, opt.option.name): + setattr(self.options, opt.option.name, opt.recommended_value) stream.seek(0) return txt_plugin.convert(stream, options, diff --git a/src/calibre/gui2/convert/__init__.py b/src/calibre/gui2/convert/__init__.py index ea7a24510a..925fecd693 100644 --- a/src/calibre/gui2/convert/__init__.py +++ b/src/calibre/gui2/convert/__init__.py @@ -146,6 +146,8 @@ class Widget(QWidget): codecs.lookup(ans) except: ans = '' + if not ans: + ans = None return ans elif isinstance(g, QComboBox): return unicode(g.currentText()) diff --git a/src/calibre/gui2/library/views.py b/src/calibre/gui2/library/views.py index c1dd5b3766..e1e9cf4456 100644 --- a/src/calibre/gui2/library/views.py +++ b/src/calibre/gui2/library/views.py @@ -612,7 +612,7 @@ class BooksView(QTableView): # {{{ if row > -1: h = self.horizontalHeader() for i in range(h.count()): - if not h.isSectionHidden(i): + if not h.isSectionHidden(i) and h.sectionViewportPosition(i) >= 0: self.scrollTo(self.model().index(row, i)) break diff --git a/src/calibre/gui2/tools.py b/src/calibre/gui2/tools.py index d18cc61baf..a5f0f52425 100644 --- a/src/calibre/gui2/tools.py +++ b/src/calibre/gui2/tools.py @@ -61,7 +61,8 @@ def convert_single_ebook(parent, db, book_ids, auto_conversion=False, out_format dtitle = unicode(mi.title) except: dtitle = repr(mi.title) - desc = _('Convert book %d of %d (%s)') % (i + 1, total, dtitle) + desc = _('Convert book %(num)d of %(total)d (%(title)s)') % \ + {'num':i + 1, 'total':total, 'title':dtitle} recs = cPickle.loads(d.recommendations) if d.opf_file is not None: diff --git a/src/calibre/library/server/browse.py b/src/calibre/library/server/browse.py index afc20ba21c..37799c4cbc 100644 --- a/src/calibre/library/server/browse.py +++ b/src/calibre/library/server/browse.py @@ -640,8 +640,8 @@ class BrowseServer(object): if fmt: href = self.opts.url_prefix + '/get/%s/%s_%d.%s'%( fmt, fname, id_, fmt) - rt = xml(_('Read %s in the %s format')%(args['title'], - fmt.upper()), True) + rt = xml(_('Read %(title)s in the %(fmt)s format')% \ + {'title':args['title'], 'fmt':fmt.upper()}, True) args['get_button'] = \ '%s' % \ diff --git a/src/calibre/library/server/opds.py b/src/calibre/library/server/opds.py index ab0853add9..ead7cf1938 100644 --- a/src/calibre/library/server/opds.py +++ b/src/calibre/library/server/opds.py @@ -128,9 +128,9 @@ def CATALOG_ENTRY(item, item_kind, base_href, version, updated, count = '' if item.category == 'authors' and \ tweaks['categories_use_field_for_author_name'] == 'author_sort': - name = xml(item.sort) + name = item.sort else: - name = xml(item.name) + name = item.name return E.entry( TITLE(name + ('' if not add_kind else ' (%s)'%item_kind)), ID(id_), diff --git a/src/calibre/manual/template_lang.rst b/src/calibre/manual/template_lang.rst index 1bf08c11f9..f64a413d3e 100644 --- a/src/calibre/manual/template_lang.rst +++ b/src/calibre/manual/template_lang.rst @@ -121,6 +121,7 @@ The functions available are: * ``contains(pattern, text if match, text if not match`` -- checks if field contains matches for the regular expression `pattern`. Returns `text if match` if matches are found, otherwise it returns `text if no match`. * ``count(separator)`` -- interprets the value as a list of items separated by `separator`, returning the number of items in the list. Most lists use a comma as the separator, but authors uses an ampersand. Examples: `{tags:count(,)}`, `{authors:count(&)}` * ``ifempty(text)`` -- if the field is not empty, return the value of the field. Otherwise return `text`. + * ``list_item(index, separator)`` -- interpret the value as a list of items separated by `separator`, returning the `index`th item. The first item is number zero. The last item can be returned using `list_item(-1,separator)`. If the item is not in the list, then the empty value is returned. The separator has the same meaning as in the `count` function. * ``lookup(pattern, field, pattern, field, ..., else_field)`` -- like switch, except the arguments are field (metadata) names, not text. The value of the appropriate field will be fetched and used. Note that because composite columns are fields, you can use this function in one composite field to use the value of some other composite field. This is extremely useful when constructing variable save paths (more later). * ``re(pattern, replacement)`` -- return the field after applying the regular expression. All instances of `pattern` are replaced with `replacement`. As in all of |app|, these are python-compatible regular expressions. * ``shorten(left chars, middle text, right chars)`` -- Return a shortened version of the field, consisting of `left chars` characters from the beginning of the field, followed by `middle text`, followed by `right chars` characters from the end of the string. `Left chars` and `right chars` must be integers. For example, assume the title of the book is `Ancient English Laws in the Times of Ivanhoe`, and you want it to fit in a space of at most 15 characters. If you use ``{title:shorten(9,-,5)}``, the result will be `Ancient E-nhoe`. If the field's length is less than ``left chars`` + ``right chars`` + the length of ``middle text``, then the field will be used intact. For example, the title `The Dome` would not be changed. diff --git a/src/calibre/translations/calibre.pot b/src/calibre/translations/calibre.pot index f889e85bea..fdf44d7b08 100644 --- a/src/calibre/translations/calibre.pot +++ b/src/calibre/translations/calibre.pot @@ -4,9 +4,9 @@ # msgid "" msgstr "" -"Project-Id-Version: calibre 0.7.37\n" -"POT-Creation-Date: 2011-01-02 15:47+MST\n" -"PO-Revision-Date: 2011-01-02 15:47+MST\n" +"Project-Id-Version: calibre 0.7.38\n" +"POT-Creation-Date: 2011-01-07 13:12+MST\n" +"PO-Revision-Date: 2011-01-07 13:12+MST\n" "Last-Translator: Automatically generated\n" "Language-Team: LANGUAGE\n" "MIME-Version: 1.0\n" @@ -36,20 +36,20 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:56 #: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:407 #: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:127 -#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:96 -#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:98 +#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:100 +#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:102 #: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:332 #: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:335 #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1894 #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1896 #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:24 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:235 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:30 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:31 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:71 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:378 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:383 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:615 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:73 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:380 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:385 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:617 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:36 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:61 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:54 @@ -87,7 +87,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:118 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:173 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:174 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:40 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/palmdoc/writer.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ztxt/writer.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:82 @@ -144,8 +144,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/database2.py:2421 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2552 #: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:229 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:146 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:149 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:158 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:161 #: /home/kovid/work/calibre/src/calibre/library/server/xml.py:79 #: /home/kovid/work/calibre/src/calibre/utils/localization.py:118 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:46 @@ -160,27 +160,31 @@ msgstr "" msgid "Base" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:200 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:130 +msgid "Customize" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:294 msgid "File type" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:236 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:330 msgid "Metadata reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:266 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:360 msgid "Metadata writer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:296 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:390 msgid "Catalog generator" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:405 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:499 msgid "User Interface Action" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:431 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:525 #: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:23 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:189 @@ -618,11 +622,11 @@ msgstr "" msgid "Communicate with Android phones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:57 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:58 msgid "Comma separated list of directories to send e-books to on the device. The first one that exists will be used" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:101 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:102 msgid "Communicate with S60 phones." msgstr "" @@ -699,7 +703,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2554 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:63 -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:598 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:599 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2246 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2264 msgid "Catalog" @@ -1073,14 +1077,22 @@ msgstr "" msgid "All by author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:64 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:65 msgid "Comma separated list of metadata fields to turn into collections on the device. Possibilities include: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:67 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:68 msgid ". Two special collections are available: %s:%s and %s:%s. Add these values to the list to enable them. The collections will be given the name provided after the \":\" character." msgstr "" +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:72 +msgid "Upload separate cover thumbnails for books (newer readers)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:73 +msgid "Normally, the SONY readers get the cover image from the ebook file itself. With this option, calibre will send a separate cover image to the reader, useful if you are sending DRMed books in which you cannot change the cover. WARNING: This option should only be used with newer SONY readers: 350, 650, 950 and newer." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:190 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:68 msgid "Unnamed" @@ -1164,33 +1176,32 @@ msgstr "" msgid "Configure Device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:37 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:51 msgid "settings for device drivers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:39 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:53 msgid "Ordered list of formats the device will accept" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:41 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:55 msgid "Place files in sub directories if the device supports them" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:43 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:86 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:81 msgid "Read metadata from files on device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:45 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:59 msgid "Use author sort instead of author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:47 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:61 msgid "Template to control how books are saved" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:50 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:89 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:64 msgid "Extra customization" msgstr "" @@ -2000,23 +2011,23 @@ msgstr "" msgid "Extract common e-book formats from archives (zip/rar) files. Also try to autodetect if they are actually cbz/cbr files." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:114 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:116 msgid "TEMPLATE ERROR" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:540 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:542 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:62 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:494 msgid "No" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:540 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:542 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:62 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:494 msgid "Yes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:614 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:616 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:45 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:112 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:113 @@ -2026,11 +2037,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:361 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:907 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:304 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:578 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:590 msgid "Title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:615 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:617 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:61 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:366 @@ -2038,18 +2049,18 @@ msgstr "" msgid "Author(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:616 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:618 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:72 msgid "Publisher" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:617 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:619 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:49 msgid "Producer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:618 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:620 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:40 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:214 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:189 @@ -2061,7 +2072,7 @@ msgstr "" msgid "Comments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:620 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:622 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:166 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:30 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 @@ -2073,7 +2084,7 @@ msgstr "" msgid "Tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:622 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:624 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:29 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 @@ -2084,16 +2095,16 @@ msgstr "" msgid "Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:623 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:625 msgid "Language" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:625 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:627 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1102 msgid "Timestamp" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:627 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:629 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:163 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:70 @@ -2101,7 +2112,7 @@ msgstr "" msgid "Published" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:629 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:631 msgid "Rights" msgstr "" @@ -2611,18 +2622,6 @@ msgstr "" msgid "Sidebar" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:23 -#: /home/kovid/work/calibre/src/calibre/ebooks/tcr/input.py:23 -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:24 -msgid "Normally calibre treats blank lines as paragraph markers. With this option it will assume that every line represents a paragraph instead." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:27 -#: /home/kovid/work/calibre/src/calibre/ebooks/tcr/input.py:27 -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:28 -msgid "Normally calibre treats blank lines as paragraph markers. With this option it will assume that every line starting with an indent (either a tab or 2+ spaces) represents a paragraph. Paragraphs end when the next line that starts with an indent is reached." -msgstr "" - #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/output.py:23 msgid "Format to use inside the pdb container. Choices are:" msgstr "" @@ -2906,15 +2905,28 @@ msgstr "" msgid " (Preface)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:34 +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:26 +msgid "" +"Paragraph structure.\n" +"choices are ['auto', 'block', 'single', 'print', 'markdown']\n" +"* auto: Try to auto detect paragraph type.\n" +"* block: Treat a blank line as a paragraph break.\n" +"* single: Assume every line is a paragraph.\n" +"* print: Assume every line starting with 2+ spaces or a tab starts a paragraph." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:35 +msgid "" +"Formatting used within the document.* auto: Try to auto detect the document formatting.\n" +"* none: Do not modify the paragraph formatting. Everything is a paragraph.\n" +"* markdown: Run the input though the markdown pre-processor. To learn more about markdown see" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:41 msgid "Normally extra spaces are condensed into a single space. With this option all spaces will be displayed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:37 -msgid "Run the text input through the markdown pre-processor. To learn more about markdown see" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:40 +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:44 msgid "Do not insert a Table of Contents into the output text." msgstr "" @@ -3338,7 +3350,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:152 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:51 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:167 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:114 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 msgid "%d books" msgstr "" @@ -3544,7 +3556,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:150 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:680 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:816 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:813 #: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:190 msgid "Failed" msgstr "" @@ -4198,11 +4210,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:143 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:176 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:80 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:426 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:428 @@ -4264,7 +4276,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:26 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:53 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:432 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:434 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:130 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:131 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:132 @@ -4311,7 +4323,7 @@ msgstr "" msgid "None" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:431 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:433 msgid "Double-click to open Book Details window" msgstr "" @@ -4328,7 +4340,6 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:20 #: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:20 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input.py:13 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:13 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output.py:18 @@ -4365,25 +4376,25 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:56 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:33 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:38 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:137 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:171 #: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:74 #: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input_ui.py:36 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:43 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:47 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:33 #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:80 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:67 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:51 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:66 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:55 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:72 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:40 #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:48 @@ -4859,7 +4870,6 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:13 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input.py:13 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:13 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:13 msgid "input" @@ -5026,15 +5036,15 @@ msgid "&Base font size:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:110 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:141 msgid "Font size &key:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:115 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:117 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:139 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:145 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:125 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:130 @@ -5085,75 +5095,75 @@ msgstr "" msgid "Justify text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:138 msgid "&Disable font size rescaling" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:139 msgid "Base &font size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:142 msgid "Wizard to help you choose an appropriate font size key" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:144 msgid "Line &height:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:146 msgid "Input character &encoding:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:147 msgid "Remove &spacing between paragraphs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:148 msgid "Indent size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:149 msgid "

When calibre removes inter paragraph spacing, it automatically sets a paragraph indent, to ensure that paragraphs can be easily distinguished. This option controls the width of that indent." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:150 msgid " em" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:151 msgid "Text justification:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:152 msgid "&Linearize tables" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:153 msgid "Extra &CSS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:154 msgid "&Transliterate unicode characters to ASCII" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:155 msgid "Insert &blank line" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:156 msgid "Keep &ligatures" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:157 msgid "Smarten &punctuation" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:158 msgid "Minimum &line height:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:159 msgid " %" msgstr "" @@ -5410,17 +5420,11 @@ msgstr "" msgid "&Bottom:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input.py:12 -msgid "PDB Input" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input_ui.py:37 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:52 msgid "Treat each &line as a paragraph" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input_ui.py:38 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:53 msgid "Assume print formatting" msgstr "" @@ -5428,20 +5432,20 @@ msgstr "" msgid "PDB Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:48 msgid "&Format:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:48 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:34 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:68 msgid "&Inline TOC" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:49 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:45 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:74 msgid "Output Encoding:" msgstr "" @@ -5477,7 +5481,7 @@ msgstr "" msgid "PMLZ Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:44 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:48 msgid "Do not reduce image size and depth" msgstr "" @@ -5684,47 +5688,55 @@ msgstr "" msgid "TXT Input" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:54 -msgid "Process using markdown" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:59 +msgid "Paragraph style:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:60 +msgid "Preserve &spaces" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:61 +msgid "Formatting style:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:62 +msgid "Markdown Options" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:63 msgid "

Markdown is a simple markup language for text files, that allows for advanced formatting. To learn more visit markdown." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:64 msgid "Do not insert Table of Contents into output text when using markdown" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:57 -msgid "Preserve &spaces" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:16 msgid "TXT Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:67 msgid "&Line ending style:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:69 msgid "&Maximum line length:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:70 msgid "Force maximum line length" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:71 msgid "Apply Markdown formatting to text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:72 msgid "Do not remove links ( tags) before processing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:73 msgid "Do not remove image references before processing" msgstr "" @@ -6051,37 +6063,39 @@ msgstr "" msgid "

Cannot upload books to device there is no more free space available " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget.py:89 +#: +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget.py:118 #: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:388 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:234 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:61 msgid "Invalid template" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget.py:90 +#: +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget.py:119 #: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:389 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:235 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:62 msgid "The template %s is invalid:" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:78 msgid "Select available formats and their order for this device" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:82 msgid "Use sub directories" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:83 msgid "Use author sort for author" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:84 msgid "Save &template:" msgstr "" @@ -6118,7 +6132,7 @@ msgid "My Books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:80 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:309 msgid "Generate catalog" msgstr "" @@ -6325,7 +6339,7 @@ msgstr "" #: #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_location_ui.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:63 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:218 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:230 msgid "Library" msgstr "" @@ -6364,7 +6378,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:909 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:33 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:295 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:577 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:589 msgid "Date" msgstr "" @@ -6584,49 +6598,49 @@ msgstr "" msgid "Immediately make all changes without closing the dialog. This operation cannot be canceled or undone" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:338 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:339 msgid "Book %d:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:354 msgid "You can destroy your library using this feature. Changes are permanent. There is no undo function. You are strongly encouraged to back up your library before proceeding.

Search and replace in text fields using character matching or regular expressions. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:362 msgid "In character mode, the field is searched for the entered search text. The text is replaced by the specified replacement text everywhere it is found in the specified field. After replacement is finished, the text can be changed to upper-case, lower-case, or title-case. If the case-sensitive check box is checked, the search text must match exactly. If it is unchecked, the search text will match both upper- and lower-case letters" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:372 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:373 msgid "In regular expression mode, the search text is an arbitrary python-compatible regular expression. The replacement text can contain backreferences to parenthesized expressions in the pattern. The search is not anchored, and can match and replace multiple times on the same string. The modification functions (lower-case etc) are applied to the matched text, not to the field as a whole. The destination box specifies the field where the result after matching and replacement is to be assigned. You can replace the text in the field, or prepend or append the matched text. See this reference for more information on python's regular expressions, and in particular the 'sub' function." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:427 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:428 msgid "S/R TEMPLATE ERROR" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:548 msgid "You must specify a destination when source is a composite field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:654 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:662 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:757 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:651 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:659 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:754 msgid "Search/replace invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:655 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:652 msgid "Authors cannot be set to the empty string. Book title %s not processed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:663 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:660 msgid "Title cannot be set to the empty string. Book title %s not processed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:758 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:755 msgid "Search pattern is invalid: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:802 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:799 msgid "" "Applying changes to %d books.\n" "Phase {0} {1}%%." @@ -7448,7 +7462,7 @@ msgid "Advanced Search" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 -msgid "What kind of match to use:" +msgid "&What kind of match to use:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 @@ -7927,7 +7941,7 @@ msgid "Attached, you will find the e-book" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:247 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:106 msgid "by" msgstr "" @@ -9263,57 +9277,53 @@ msgstr "" msgid "Delete plugboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:99 msgid "%(plugin_type)s %(plugins)s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:100 msgid "plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:109 msgid "" "\n" "Customization: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:160 msgid "No valid plugin path" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:161 msgid "%s is not a valid plugin path" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:164 msgid "Choose plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:176 msgid "Plugin cannot be disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:177 msgid "The plugin: %s cannot be disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:183 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:187 msgid "Plugin not customizable" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:184 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:188 msgid "Plugin: %s does not need customization" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:194 -msgid "Customize" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:237 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:199 msgid "Cannot remove builtin plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:238 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:200 msgid " cannot be removed. It is a builtin plugin. Try disabling it instead." msgstr "" @@ -9353,6 +9363,14 @@ msgstr "" msgid "The lookup name of any custom field. These names begin with \"#\")" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:57 +msgid "Constant template" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:58 +msgid "The template contains no {fields}, so all books will have the same name. Is this OK?" +msgstr "" + #: #: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template_ui.py:47 msgid "Save &template" @@ -9436,7 +9454,7 @@ msgid "Here you can control how calibre will save your books when you click the msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:341 msgid "Failed to start content server" msgstr "" @@ -9836,101 +9854,104 @@ msgid "Add your own categories to the Tag Browser" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tools.py:64 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:183 -msgid "Convert book %d of %d (%s)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:203 -msgid "Could not convert some books" +msgid "Convert book %(num)d of %(total)d (%(title)s)" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tools.py:92 #: /home/kovid/work/calibre/src/calibre/gui2/tools.py:204 +msgid "Could not convert some books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:205 msgid "Could not convert %d of %d books, because no suitable source format was found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:122 msgid "Queueing books for bulk conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:183 msgid "Queueing " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:250 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:184 +msgid "Convert book %d of %d (%s)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:251 msgid "Fetch news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:321 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:322 msgid "The following books have already been converted to %s format. Do you wish to reconvert them?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:172 msgid "&Restore" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:174 msgid "&Donate to support calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:178 msgid "&Eject connected device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:219 msgid "Calibre Quick Start Guide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:266 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:267 msgid "Debug mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:267 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:268 msgid "You have started calibre in debug mode. After you quit calibre, the debug log will be available in the file: %s

The log will be displayed automatically." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:451 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:462 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:452 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:463 msgid "Conversion Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:463 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:464 msgid "

Could not convert: %s

It is a DRMed book. You must first remove the DRM using third party tools." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:477 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:478 msgid "Recipe Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:493 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:494 msgid "Failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:531 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. Your donation helps keep calibre development going." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:556 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:557 msgid "There are active jobs. Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:559 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:560 msgid "" " is communicating with the device!
\n" " Quitting may cause corruption on the device.
\n" " Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:563 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:564 msgid "WARNING: Active jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:638 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:639 msgid "will keep running in the system tray. To close it, choose Quit in the context menu of the system tray." msgstr "" @@ -10462,19 +10483,19 @@ msgstr "" msgid "Swap Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:868 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:893 msgid "Drag to resize" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:903 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:928 msgid "Show" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:910 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:935 msgid "Hide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:947 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:972 msgid "Toggle" msgstr "" @@ -10741,54 +10762,54 @@ msgstr "" msgid "Turn on the &content server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:264 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:297 msgid "today" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:267 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:300 msgid "yesterday" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:270 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:303 msgid "thismonth" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:273 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:274 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:306 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:307 msgid "daysago" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:453 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:463 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:486 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:496 msgid "unchecked" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:453 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:463 -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:183 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:486 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:496 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:185 msgid "no" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:456 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:466 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:489 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:499 msgid "checked" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:456 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:466 -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:183 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:489 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:499 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:185 msgid "yes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:460 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:493 msgid "blank" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:460 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:493 msgid "empty" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:52 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:53 msgid "" "The fields to output when cataloging books in the database. Should be a comma-separated list of fields.\n" "Available fields: %s,\n" @@ -10797,7 +10818,7 @@ msgid "" "Applies to: CSV, XML output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:63 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:64 msgid "" "Output field to sort on.\n" "Available fields: author_sort, id, rating, size, timestamp, title.\n" @@ -10805,7 +10826,7 @@ msgid "" "Applies to: CSV, XML output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:230 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:231 msgid "" "The fields to output when cataloging books in the database. Should be a comma-separated list of fields.\n" "Available fields: %s.\n" @@ -10813,7 +10834,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:240 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:241 msgid "" "Output field to sort on.\n" "Available fields: author_sort, id, rating, size, timestamp, title.\n" @@ -10821,7 +10842,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:249 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:250 msgid "" "Create a citation for BibTeX entries.\n" "Boolean value: True, False\n" @@ -10829,7 +10850,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:258 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:259 msgid "" "The template for citation creation from database fields.\n" " Should be a template with {} enclosed fields.\n" @@ -10838,7 +10859,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:268 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:269 msgid "" "BibTeX file encoding output.\n" "Available types: utf8, cp1252, ascii.\n" @@ -10846,7 +10867,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:277 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:278 msgid "" "BibTeX file encoding flag.\n" "Available types: strict, replace, ignore, backslashreplace.\n" @@ -10854,7 +10875,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:286 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:287 msgid "" "Entry type for BibTeX catalog.\n" "Available types: book, misc, mixed.\n" @@ -10862,35 +10883,35 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:571 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:572 msgid "" "Title of generated catalog used as title in metadata.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:578 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:579 msgid "" "Save the output from different stages of the conversion pipeline to the specified directory. Useful if you are unsure at which stage of the conversion process a bug is occurring.\n" "Default: '%default'None\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:588 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:589 msgid "" "field:pattern specifying custom field/contents indicating book should be excluded.\n" "Default: '%default'\n" "Applies to ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:595 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:596 msgid "" "Regex describing tags to exclude as genres.\n" "Default: '%default' excludes bracketed tags, e.g. '[]'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:601 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:602 msgid "" "Comma-separated list of tag words indicating book should be excluded from output. Case-insensitive.\n" "--exclude-tags=skip will match 'skip this book' and 'Skip will like this'.\n" @@ -10898,49 +10919,49 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:609 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:610 msgid "" "Include book descriptions in catalog.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:616 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:617 msgid "" "Include 'Genres' section in catalog.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:623 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:624 msgid "" "Include 'Titles' section in catalog.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:630 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:631 msgid "" "Include 'Series' section in catalog.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:637 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:638 msgid "" "Include 'Recently Added' section in catalog.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:644 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:645 msgid "" "Custom field containing note text to insert in Description header.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:651 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:652 msgid "" ":[before|after]:[True|False] specifying:\n" " Custom field containing notes to merge with Comments\n" @@ -10950,21 +10971,21 @@ msgid "" "Applies to ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:661 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:662 msgid "" "Specifies the output profile. In some cases, an output profile is required to optimize the catalog for the device. For example, 'kindle' or 'kindle_dx' creates a structured Table of Contents with Sections and Articles.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:668 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:669 msgid "" "field:pattern indicating book has been read.\n" "Default: '%default'\n" "Applies to ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:674 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:675 msgid "" "Size hint (in inches) for book covers in catalog.\n" "Range: 1.0 - 2.0\n" @@ -10972,7 +10993,7 @@ msgid "" "Applies to ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:682 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:683 msgid "" "Tag indicating book to be displayed as wishlist item.\n" "Default: '%default'\n" @@ -11472,11 +11493,11 @@ msgid "" "For help on an individual command: %%prog command --help\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/custom_columns.py:557 +#: /home/kovid/work/calibre/src/calibre/library/custom_columns.py:573 msgid "No label was provided" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/custom_columns.py:559 +#: /home/kovid/work/calibre/src/calibre/library/custom_columns.py:575 msgid "The label must contain only lower case letters, digits and underscores, and start with a letter" msgstr "" @@ -11621,8 +11642,8 @@ msgstr "" msgid "Replace whitespace with underscores." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:352 -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:376 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:354 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:378 msgid "Requested formats not available" msgstr "" @@ -11719,7 +11740,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:337 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:547 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:577 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:589 msgid "Newest" msgstr "" @@ -11757,7 +11778,7 @@ msgid "Other formats" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:643 -msgid "Read %s in the %s format" +msgid "Read %(title)s in the %(fmt)s format" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:648 @@ -11813,35 +11834,35 @@ msgstr "" msgid "Auto reload server when source code changes. May not work in all environments." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:114 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 msgid "%d book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:138 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:150 msgid "%d items" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:156 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:168 msgid "RATING: %s
" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:159 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:171 msgid "TAGS: %s
" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:164 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:176 msgid "SERIES: %s [%s]
" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:257 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:269 msgid "Books in your library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:263 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:275 msgid "By " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:264 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:276 msgid "Books sorted by " msgstr "" @@ -11958,19 +11979,15 @@ msgstr "" msgid "switch requires an odd number of arguments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:312 +#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:323 msgid "format: type {0} requires an integer value, got {1}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:318 +#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:329 msgid "format: type {0} requires a decimal (float) value, got {1}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:320 -msgid "format: unknown format type letter {0}" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:471 +#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:481 msgid "No such variable " msgstr "" diff --git a/src/calibre/translations/cs.po b/src/calibre/translations/cs.po index 77231346a8..3d4de14c39 100644 --- a/src/calibre/translations/cs.po +++ b/src/calibre/translations/cs.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-01-02 23:55+0000\n" -"PO-Revision-Date: 2011-01-04 08:51+0000\n" -"Last-Translator: TomVal \n" +"PO-Revision-Date: 2011-01-06 11:10+0000\n" +"Last-Translator: schunka \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-01-05 04:43+0000\n" +"X-Launchpad-Export-Date: 2011-01-07 04:57+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -799,7 +799,7 @@ msgstr "Spojit se s Sanda Bambook eBook čtečkou" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:25 msgid "Li Fanxi" -msgstr "" +msgstr "Li Fanxi" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:41 msgid "Device IP Address (restart calibre after changing)" @@ -1126,11 +1126,11 @@ msgstr "Komunikovat se zařízením Trekstor" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:251 msgid "Communicate with the EEE Reader" -msgstr "" +msgstr "Probíhá spojení se čtečkou EEE Reader." #: /home/kovid/work/calibre/src/calibre/devices/misc.py:271 msgid "Communicate with the Nextbook Reader" -msgstr "" +msgstr "Probíhá spojení se čtečkou Nextbook Reader." #: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:17 msgid "Communicate with the Nokia 770 internet tablet." @@ -1174,11 +1174,11 @@ msgstr "Spojit se se Sony eBook reader" #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:61 msgid "All by title" -msgstr "" +msgstr "Vše podle názvu" #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:62 msgid "All by author" -msgstr "" +msgstr "Vše podle autora" #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:64 msgid "" @@ -1226,7 +1226,7 @@ msgstr "Spojit se se Sovos reader." #: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:78 msgid "Communicate with the Sunstech EB700 reader." -msgstr "" +msgstr "Probíhá spojení se čtečkou Sunstech EB700." #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:258 msgid "Unable to detect the %s disk drive. Try rebooting." diff --git a/src/calibre/translations/de.po b/src/calibre/translations/de.po index 6418ab3d7d..a330704198 100644 --- a/src/calibre/translations/de.po +++ b/src/calibre/translations/de.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: de\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-01-02 23:55+0000\n" -"PO-Revision-Date: 2011-01-01 21:21+0000\n" -"Last-Translator: Kovid Goyal \n" +"PO-Revision-Date: 2011-01-07 02:17+0000\n" +"Last-Translator: heinz beck \n" "Language-Team: American English \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-01-04 13:52+0000\n" +"X-Launchpad-Export-Date: 2011-01-07 04:58+0000\n" "X-Generator: Launchpad (build Unknown)\n" "Generated-By: pygettext.py 1.5\n" @@ -943,7 +943,7 @@ msgstr "Kommunikation mit dem PocketBook 301 Reader." #: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:233 msgid "Communicate with the PocketBook 602/603/902/903 reader." -msgstr "" +msgstr "verbinden mit PocketBook 602/603/902/903" #: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:252 msgid "Communicate with the PocketBook 701" @@ -1186,7 +1186,7 @@ msgstr "Kommunikation mit allen Sony eBook Readern." #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:61 msgid "All by title" -msgstr "" +msgstr "nach Titel" #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:62 msgid "All by author" diff --git a/src/calibre/translations/gl.po b/src/calibre/translations/gl.po index 33708ef88c..597487b7dc 100644 --- a/src/calibre/translations/gl.po +++ b/src/calibre/translations/gl.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-01-02 23:55+0000\n" -"PO-Revision-Date: 2011-01-02 13:21+0000\n" -"Last-Translator: Calidonia Hibernia \n" +"PO-Revision-Date: 2011-01-06 14:46+0000\n" +"Last-Translator: Antón Méixome \n" "Language-Team: dev@gl.openoffice.org\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-01-04 13:52+0000\n" +"X-Launchpad-Export-Date: 2011-01-07 04:58+0000\n" "X-Generator: Launchpad (build Unknown)\n" "Language: gl\n" @@ -5749,7 +5749,7 @@ msgstr "Tamaño da mensaxe para a descrición das miniaturas de portada" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:330 msgid " inch" -msgstr "" +msgstr " polgada" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:331 msgid "&Description note" @@ -10645,15 +10645,15 @@ msgstr "Nunca" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:60 msgid "By first letter" -msgstr "" +msgstr "Pola primeira letra" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:60 msgid "Disabled" -msgstr "" +msgstr "Desactivado" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:61 msgid "Partitioned" -msgstr "" +msgstr "Particionado" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:140 msgid "User Interface &layout (needs restart):" @@ -10709,7 +10709,7 @@ msgstr "Buscar mentres se escribe" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:152 msgid "Tags browser category partitioning method:" -msgstr "" +msgstr "Método de particionado con categorías de etiquetas de navegación:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:153 msgid "" @@ -10719,10 +10719,15 @@ msgid "" "have a list of fixed-sized groups. Set to disabled\n" "if you never want subcategories" msgstr "" +"Escoller como as subcategorías de etiquetas de navegación se amosan cando\n" +"hai máis ítems que os do límite. Seleccione por primeira\n" +"letra para ver unha lista A, B, C. Escolla particionado para\n" +"ter unha lista de grupos de tamaño fixo. Escolla desactivado\n" +"se non vai querer nunca subcategorías" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:158 msgid "Collapse when more items than:" -msgstr "" +msgstr "Colapsar cando os ítems son máis de:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:159 msgid "" @@ -10730,6 +10735,10 @@ msgid "" "up into sub-categories. If the partition method is set to disable, this " "value is ignored." msgstr "" +"Se unha categoría de etiquetas de navegación ten máis ca este número de " +"ítems, divídese\n" +"en subcategorías. Se o método de partición se pon como desactivado, " +"ignorarase este valor." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:161 msgid "&Toolbar" @@ -11494,7 +11503,7 @@ msgstr "Mostrar todas as categorías" #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:300 msgid "Change sub-categorization scheme" -msgstr "" +msgstr "Cambiar o esquema de subcategorización" #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:625 msgid "" diff --git a/src/calibre/translations/it.po b/src/calibre/translations/it.po index 73a13b051e..1be0988afd 100644 --- a/src/calibre/translations/it.po +++ b/src/calibre/translations/it.po @@ -9,13 +9,13 @@ msgstr "" "Project-Id-Version: calibre_calibre-it\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-01-02 23:55+0000\n" -"PO-Revision-Date: 2011-01-02 22:45+0000\n" -"Last-Translator: Marco Ciampa \n" +"PO-Revision-Date: 2011-01-06 15:33+0000\n" +"Last-Translator: Francesco Pasa \n" "Language-Team: italiano\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-01-04 13:53+0000\n" +"X-Launchpad-Export-Date: 2011-01-07 04:58+0000\n" "X-Generator: Launchpad (build Unknown)\n" "X-Poedit-Bookmarks: -1,-1,-1,-1,-1,1105,-1,1312,-1,-1\n" "Generated-By: pygettext.py 1.5\n" @@ -5694,7 +5694,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:330 msgid " inch" -msgstr "" +msgstr " pollice" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:331 msgid "&Description note" diff --git a/src/calibre/translations/nds.po b/src/calibre/translations/nds.po index e4d1ad8f1a..80d6f376c3 100644 --- a/src/calibre/translations/nds.po +++ b/src/calibre/translations/nds.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: nds\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-01-02 23:55+0000\n" -"PO-Revision-Date: 2010-10-18 00:57+0000\n" -"Last-Translator: Nils-Christoph Fiedler \n" +"PO-Revision-Date: 2011-01-07 02:48+0000\n" +"Last-Translator: heinz beck \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-01-04 13:55+0000\n" +"X-Launchpad-Export-Date: 2011-01-07 04:59+0000\n" "X-Generator: Launchpad (build Unknown)\n" "X-Poedit-Country: GERMANY\n" "X-Poedit-Language: German\n" diff --git a/src/calibre/translations/pt_BR.po b/src/calibre/translations/pt_BR.po index af6071797c..26d16546e6 100644 --- a/src/calibre/translations/pt_BR.po +++ b/src/calibre/translations/pt_BR.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-01-02 23:55+0000\n" -"PO-Revision-Date: 2010-12-18 05:47+0000\n" -"Last-Translator: Kovid Goyal \n" +"PO-Revision-Date: 2011-01-06 13:01+0000\n" +"Last-Translator: MoroniGranja \n" "Language-Team: American English \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-01-04 14:00+0000\n" +"X-Launchpad-Export-Date: 2011-01-07 04:59+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -172,7 +172,7 @@ msgstr "Leitor de metadados" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:266 msgid "Metadata writer" -msgstr "" +msgstr "Escritor de metadata" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:296 msgid "Catalog generator" @@ -589,6 +589,8 @@ msgid "" "Intended for the Samsung Galaxy and similar tablet devices with a resolution " "of 600x1280" msgstr "" +"Planejado para o Samsung Galaxy e tablets similares com uma resolução " +"de600x1280" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:471 msgid "This profile is intended for the Kobo Reader." @@ -695,7 +697,7 @@ msgstr "Desabilitar a extensão com nome" #: /home/kovid/work/calibre/src/calibre/debug.py:148 msgid "Debug log" -msgstr "" +msgstr "Log de Debug" #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:13 msgid "Communicate with Android phones." @@ -808,7 +810,7 @@ msgstr "Comunicar com iTunes." #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:24 msgid "Communicate with the Sanda Bambook eBook reader." -msgstr "" +msgstr "Comunicar com o leitor de eBooks Sanda Bambook" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:25 msgid "Li Fanxi" @@ -817,17 +819,22 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:41 msgid "Device IP Address (restart calibre after changing)" msgstr "" +"Endereço IP do dispositivo (é necessário reiniciar calibre após modificar)" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:46 msgid "" "Unable to add book to library directly from Bambook. Please save the book to " "disk and add the file to library from disk." msgstr "" +"Impossível adicionar livro a biblioteca diretamente do Bambook. Favor salvar " +"o livro no disco e adicionar o arquivo do disco a biblioteca." #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:66 msgid "" "Unable to connect to Bambook, you need to install Bambook library first." msgstr "" +"Não foi possível conectar ao Bambook, é necessário instalar a biblioteca " +"Bambook." #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:74 msgid "" @@ -835,10 +842,13 @@ msgid "" "If you are trying to connect via Wi-Fi, please make sure the IP address of " "Bambook has been correctly configured." msgstr "" +"Não foi possível conectar ao Bambook. \n" +"Se você está tentando conectar por Wi-Fi, favor confirmar se o endereço IP " +"do Bambook foi configurado corretamente." #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:111 msgid "Bambook" -msgstr "" +msgstr "Bambook" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:217 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:233 @@ -899,7 +909,7 @@ msgstr "Enviando metadados ao dispositivo..." #: /home/kovid/work/calibre/src/calibre/devices/bambook/libbambookcore.py:132 msgid "Bambook SDK has not been installed." -msgstr "" +msgstr "Bambook SDK não foi instalado." #: /home/kovid/work/calibre/src/calibre/devices/binatone/driver.py:17 msgid "Communicate with the Binatone Readme eBook reader." @@ -938,11 +948,11 @@ msgstr "Comunica-se com o leitor PocketBook 301" #: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:233 msgid "Communicate with the PocketBook 602/603/902/903 reader." -msgstr "" +msgstr "Comunicar-se com o PocketBook 602/603/902/903 reader." #: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:252 msgid "Communicate with the PocketBook 701" -msgstr "" +msgstr "Comunicar-se com o PocketBook 701" #: /home/kovid/work/calibre/src/calibre/devices/edge/driver.py:17 msgid "Entourage Edge" @@ -1069,6 +1079,8 @@ msgid "" "The Kobo supports only one collection currently: the \"Im_Reading\" list. " "Create a tag called \"Im_Reading\" " msgstr "" +"O Kobo aceita apenas uma coleção atualmente: a lista \"Estou_Lendo\". Crie " +"uma tag chamada \"Estou_Lendo\" " #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:446 #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:279 @@ -1097,7 +1109,7 @@ msgstr "Comunicar com o Sweex MM300" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:79 msgid "Communicate with the Digma Q600" -msgstr "" +msgstr "Comunicar-se com o Digma Q600" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:88 msgid "Communicate with the Kogan" @@ -1110,7 +1122,7 @@ msgstr "Comunicar com o Pandigital Novel" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:142 msgid "Communicate with the VelocityMicro" -msgstr "" +msgstr "Comunicar-se com o VelocityMicro" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:160 msgid "Communicate with the GM2000" @@ -1118,23 +1130,23 @@ msgstr "Comunicar com o GM2000" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:180 msgid "Communicate with the Acer Lumiread" -msgstr "" +msgstr "Comunicar-se com o Acer Lumiread" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:211 msgid "Communicate with the Aluratek Color" -msgstr "" +msgstr "Comunicar-se com o Acer Lumiread" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:231 msgid "Communicate with the Trekstor" -msgstr "" +msgstr "Comunicar-se com o Trekstor" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:251 msgid "Communicate with the EEE Reader" -msgstr "" +msgstr "Comunicar-se com o EEE Reader" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:271 msgid "Communicate with the Nextbook Reader" -msgstr "" +msgstr "Comunicar-se com o Nextbook Reader" #: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:17 msgid "Communicate with the Nokia 770 internet tablet." @@ -1142,7 +1154,7 @@ msgstr "Comunica-se com o Nokia 770 Internet Tablet." #: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:40 msgid "Communicate with the Nokia 810/900 internet tablet." -msgstr "" +msgstr "Comunicar-se com o internet tablet Nokia 810/900." #: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:74 msgid "Communicate with the Nokia E52" @@ -1158,11 +1170,11 @@ msgstr "Comunica-se com o leitor Nook." #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 msgid "Nook Color" -msgstr "" +msgstr "Nook Color" #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 msgid "Communicate with the Nook Color eBook reader." -msgstr "" +msgstr "Comunicar-se com o Nook Color." #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." @@ -1178,11 +1190,11 @@ msgstr "Comunica-se com todos os leitores da Sony." #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:61 msgid "All by title" -msgstr "" +msgstr "Todos por título" #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:62 msgid "All by author" -msgstr "" +msgstr "Todos por autor" #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:64 msgid "" @@ -1198,6 +1210,9 @@ msgid "" "to the list to enable them. The collections will be given the name provided " "after the \":\" character." msgstr "" +". Duas coleções especiais estão disponíveis: %s:%s e %s:%s. Adicione estes " +"valores à lista para habilita-los. As coleções receberão o nome após os dois " +"pontos (\":\")." #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:190 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:68 @@ -1218,7 +1233,7 @@ msgstr "Comunica-se com o leitor Newsmy." #: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:47 msgid "Communicate with the Pico reader." -msgstr "" +msgstr "Comunicar-se com o Pico reader." #: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:57 msgid "Communicate with the iPapyrus reader." @@ -1230,7 +1245,7 @@ msgstr "Comunicar com o leitor Sovos." #: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:78 msgid "Communicate with the Sunstech EB700 reader." -msgstr "" +msgstr "Comunicar-se com o Sunstech EB700 reader." #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:258 msgid "Unable to detect the %s disk drive. Try rebooting." @@ -1254,6 +1269,8 @@ msgid "" "Unable to detect the %s disk drive. Either the device has already been " "ejected, or your kernel is exporting a deprecated version of SYSFS." msgstr "" +"Não foi possível detectar o disco %s. O dispositivo já foi ejetado, ou o seu " +"kernel está exportando uma versão deprecada do SYSFS." #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:617 msgid "Unable to mount main memory (Error code: %d)" @@ -1264,6 +1281,8 @@ msgid "" "The main memory of %s is read only. This usually happens because of file " "system errors." msgstr "" +"A memória principal de %s é somente leitura. Isto normalmente acontece " +"devido a erros no sistema de arquivos." #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:816 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:818 @@ -1693,6 +1712,9 @@ msgid "" "is: %default. Links are only added to the TOC if less than the threshold " "number of chapters were detected." msgstr "" +"Número máximo de links para inserir no sumário. Use 0 para desabilitar. O " +"padrão é: %default. Links serão adicionados ao sumário somente se o número " +"encontrado for menor que o limite máximo de capítulos." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:256 msgid "" @@ -2076,7 +2098,7 @@ msgstr "Você deve especificar um arquivo do tipo epub" #: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/unmanifested.py:17 msgid "Fix unmanifested files" -msgstr "" +msgstr "Conserte arquivos sem manifesto." #: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/unmanifested.py:21 msgid "" diff --git a/src/calibre/translations/zh_CN.po b/src/calibre/translations/zh_CN.po index d040713c09..3a4d979238 100644 --- a/src/calibre/translations/zh_CN.po +++ b/src/calibre/translations/zh_CN.po @@ -12904,7 +12904,7 @@ msgstr "其它格式" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:643 msgid "Read %s in the %s format" -msgstr "用 %2$s 格式阅读 %1$s" +msgstr "用 %s 格式阅读 %s" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:648 msgid "Get" diff --git a/src/calibre/utils/formatter.py b/src/calibre/utils/formatter.py index 23763a25bf..2e4f843c3d 100644 --- a/src/calibre/utils/formatter.py +++ b/src/calibre/utils/formatter.py @@ -281,19 +281,30 @@ class TemplateFormatter(string.Formatter): def _count(self, val, sep): return unicode(len(val.split(sep))) + def _list_item(self, val, index, sep): + if not val: + return '' + index = int(index) + val = val.split(sep) + try: + return val[index] + except: + return '' + functions = { 'uppercase' : (0, lambda s,x: x.upper()), 'lowercase' : (0, lambda s,x: x.lower()), 'titlecase' : (0, lambda s,x: titlecase(x)), 'capitalize' : (0, lambda s,x: capitalize(x)), 'contains' : (3, _contains), + 'count' : (1, _count), 'ifempty' : (1, _ifempty), + 'list_item' : (2, _list_item), 'lookup' : (-1, _lookup), 're' : (2, _re), 'shorten' : (3, _shorten), 'switch' : (-1, _switch), - 'test' : (2, _test), - 'count' : (1, _count), + 'test' : (2, _test) } def _do_format(self, val, fmt): @@ -316,8 +327,6 @@ class TemplateFormatter(string.Formatter): except: raise ValueError( _('format: type {0} requires a decimal (float) value, got {1}').format(typ, val)) - else: - raise ValueError(_('format: unknown format type letter {0}').format(typ)) return unicode(('{0:'+fmt+'}').format(val)) def _explode_format_string(self, fmt):