diff --git a/Changelog.yaml b/Changelog.yaml index 3a74248835..71f7f1c52b 100644 --- a/Changelog.yaml +++ b/Changelog.yaml @@ -4,6 +4,365 @@ # for important features/bug fixes. # Also, each release can have new and improved recipes. +#- version: ?.?.? +# date: 2011-??-?? +# +# new features: +# - title: +# +# bug fixes: +# - title: +# +# improved recipes: +# - +# +# new recipes: +# - title: + +- version: 0.7.44 + date: 2011-02-04 + + new features: + - title: "Nook Color driver: Send downloaded news to the My Files/Magazines folder on the Nook Color. Also when getting the list of books on the device look at all folders in My Files, not just My Files/Books." + + - title: "MOBI Output: Use the book uuid as the ASIN field and set cdetype to EBOK to allow Amazon furthest read tracking to work with calibre generated MOBI files." + tickets: [8721] + + - title: "Comic input: Add an option to override the image size in the generated comic. Useful if you have a device whose screen size is not coverred by one of the available output profiles." + tickets: [7837] + + - title: "Add a restore database option to the Library maintenance menu in the GUI" + + - title: "TXT Output: Allow output in the textile markup language" + + - title: "PML Output: Create multi-level Table of Contents" + + - title: "Driver for the Archos 7O" + + - title: "Search and Replace in the Bulk metadata dialog can now operate on the title_sort field as well" + tickets: [8732] + + - title: "Allow changing the case of authors/tags/series etc. via the edit metadata dialog" + + - title: "Connect/share menu: Re-organize to make it a little less easy to select email and delete instead of just email by mistake" + + - title: "Heuristics: Improved Scene break detection and add option to control what scene breaks are replaced by." + + - title: "SONY driver: Add option to not preserve aspect ratio of cover thumbnails." + + - title: "BiBTeX catalog: Add on device column when available" + + - title: "Add search to the plugin preferences dialog" + + bug fixes: + - title: "Fix a bug that could cause fiels to be lost when changing metadata on east asian windows installs if the title and/or author is very long." + tickets: [8620] + + - title: "Tag browser: Fix searching with items in a user category not owrking if the main category is hidden" + tickets: [8741] + + - title: "Make completion for author/series/tags/etc. fields less disruptive" + + - title: "Fix regression that broke the content server when user categories/custom columns are present" + + - title: "Catalog generation: Handle user supplied templates more robustly" + + - title: "Move the Tags to apply to newly added books option into Preferences->Adding books" + tickets: [8730] + + - title: "Workaround for bug in Qt on OS X that caused crashes when reading metedata from two or more EPUB files with HTML covers that used embedded fonts. Now the embedded fonts are ignored on OS X." + tickets: [8643] + + - title: "Fix regression that broke the use of the group searched terms tweak" + tickets: [8739] + + - title: "Fix template program regression triggered by recursively calling the processor" + + - title: "Fix mimetype sent by content server for PDB files" + + - title: "OPF: Write title_sort as a calibre custom metadata field rather than as a file-as attribute on the title. This conforms to the OPF spec" + tickets: [7883] + + - title: "SONY driver: Fix thumbnails being sent to SD card are sent to the wrong location. Also use correct thumbnail size so that the SONY does not regenerate the thumbnail on disconnect" + + - title: "Do not discard the result of a conversion if the user opens the edit metadata dialog while the conversion is running" + tickets: [8672] + + - title: "CHM Input: When the chm file lacks a hhc, lookf for index.html instead" + tickets: [8688] + + - title: "EPUB Input: Filter some invalid media types from the spine" + + - title: "RTF Input: More encoding handlig fixes." + tickets: [8678] + + - title: "Linux binary build: Restore functioning of CALIBRE_DEVELOP_FROM, which was accidentally removed a few versions ago" + + - title: "RTF Output: Retain html headings as rtf headings when converting to rtf. Also fix output of italics." + tickets: [8641, 8640] + + - title: "LIT Input: Fix regression that broke handling of LIT files that contain txt data instead of html" + + - title: "MOBI Input: Handle more non printing ASCII codes" + tickets: [8646] + + - title: "Handle empty cover files more gracefully" + tickets: [8656] + + - title: "Catalog geenration: Fix error when Pocketbook is connected and trying to geenrate catalog" + tickets: [8651] + + - title: "Heuristics: Italicize common cases, reduce false positives." + + - title: "Fix regression that caused reporting of device connection errors to break" + + improved recipes: + - MSN Japan + - The Onion + - La Tribuna de + - Wall Street Journal + - "20 Minutos" + - LA Times + - Endgadget Japan + - Ledevoir + - Vijesti + + new recipes: + - title: "Cinco Dias and BBC Mundo" + author: Luis Hernandez + + - title: "Explosm" + author: Andromeda Rabbit + + - title: "Cinco Dias" + author: Luis Hernandez + + +- version: 0.7.43 + date: 2011-01-28 + + new features: + - title: "Ask for confirmation when stopping running jobs" + tickets: [3101] + + - title: "Combine the database integrity check and library check into a single menu item. Also nicer implementation of the db integrity check." + + - title: "BiBTeX Catalog: Add option to include file paths in the catalog." + tickets: [8589] + + - title: "Create 'generic' output profiles and generic devices in the welcome wizard" + + - title: "Bulk metadata edit: Custom column widgets all have an apply checkbox next to them." + + - title: "Only use LibraryThing to download metadata if the user provides a library thing username and password. Since LT doesn't like web scraping" + + - title: "Allow renaming of user categories in the manage categories dialog. Also allow searching for books in a category from the Tag Browser by right clicking ona a category" + + - title: "Folder device plugin: Add option to disable the use of sub folders" + + - title: "Allow saving/loading of search and replace expressions in the bulk metadata edit dialog." + + - title: "Remeber previously used regular expression in the add books preferences dialog" + + - title: "Search and replace wizard: Cache the previously used input document." + + - title: "Pressing Esc clears the current search in the main book list" + + - title: "Preselct right formats when using send specific format to device" + tickets: [7834] + + - title: "Regex wizard gets find next and previous match buttons" + tickets: [4486] + + bug fixes: + - title: "Do not allow customization of user interface plugins until calibre is restarted" + tickets: [8621] + + - title: "EPUB Output: When using preserve cover aspect ratio, use the actual image sizes in the SVG template as otherwise ADE doesn't fully preserve the aspect ratio" + + - title: "Fix completion on a word with a trailing space causing the first letter to be duplicated in the edit metadata dialog" + + - title: "PML Input: PML x and Xn tags don't indent properly in TOC. Also handle invalid T markup and retain soft scene breaks" + tickets: [6194, 8565] + + - title: "TXT Input: Retain whitespace at the beginning of lines. Don't preserve spaces in heuristic processing. Detect and retain soft scene breaks." + + - title: "Fix Adding empty book - cover browser doesn't update" + tickets: [8557] + + - title: "When generating author sort string ignore trailing Inc." + tickets: [8539] + + - title: "When converting HTML/ZIP files do not leave temporary files that are only deleted on application shutdown." + tickets: [8597] + + - title: "Don't crash if the prefs stored in the db are corrupted" + + - title: "Catalog generation: Do not use inline-block CSS as apparently Adobe Digital Editions cannot handle it." + tickets: [8566] + + - title: "Fix extra spaces being inserted into TOC title when reading TOC from OPF guide element." + tickets: [8569] + + - title: "Remember window size for bulk metadata edit and catalog generation dialogs" + tickets: [8525] + + - title: "Heuristics, italicize common cases: Enhance pattern matching to match punctuation after pattern." + + - title: "Fix regression in converting HTML files that have ASCII-encoded non unicode characters inside their \n" -"

Default pattern

\n" -"

\\[.+\\]

\n" -"

excludes tags of the form " -"[tag],

\n" -"

e.g., [Project " -"Gutenberg]

" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:306 -msgid "Excluded genres" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:307 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:310 -msgid "Tags to &exclude" +"

Default pattern \n" +"\\[.+\\]\n" +"excludes tags of the form [tag], \n" +"e.g., [Project Gutenberg]

" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:308 +msgid "Excluded genres" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:309 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:312 +msgid "Tags to &exclude" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:310 msgid "" "Books matching either pattern will not be included in generated catalog. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:309 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:311 msgid "Excluded books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:313 msgid "" -"\n" -"\n" -"

Comma-separated list of tags to exclude.

\n" -"

Default: ~,Catalog

" +"

Comma-separated list of tags to exclude.\n" +"Default: ~,Catalog" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:317 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:315 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:320 msgid "&Column/value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:316 msgid "Column containing additional exclusion criteria" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:317 msgid "Exclusion pattern" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:320 -msgid "Matching books will be displayed with ✓" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:318 +msgid "Matching books will be displayed with a check mark" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:319 msgid "Read books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:323 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:321 msgid "Column containing 'read' status" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:324 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:322 msgid "'read book' pattern" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:323 msgid "Other options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:324 msgid "&Wishlist tag" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:327 -msgid "Books tagged as Wishlist items will be displayed with ✕" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:325 +msgid "Books tagged as Wishlist items will be displayed with an X" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:326 msgid "&Thumbnail width" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:327 msgid "Size hint for Description cover thumbnails" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:328 msgid " inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:331 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:329 msgid "&Description note" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:332 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:330 msgid "Custom column source for note to include in Description header area" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:333 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:331 msgid "&Merge with Comments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:332 msgid "Additional content merged with Comments during catalog generation" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:335 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:333 msgid "Merge additional content before Comments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:336 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:334 msgid "&Before" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:337 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:335 msgid "Merge additional content after Comments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:338 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:336 msgid "&After" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:339 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:337 msgid "Separate Comments and additional content with horizontal rule" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:338 msgid "&Separator" msgstr "" @@ -5116,176 +5223,180 @@ msgstr "" msgid "Tab template for catalog.ui" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:69 msgid "Bold" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:70 msgid "Italic" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:73 msgid "Underline" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:75 msgid "Strikethrough" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:77 msgid "Superscript" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:79 msgid "Subscript" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:81 msgid "Ordered list" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:83 msgid "Unordered list" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:86 msgid "Align left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:88 msgid "Align center" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:90 msgid "Align right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:92 msgid "Align justified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:93 msgid "Undo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:94 msgid "Redo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:95 msgid "Remove formatting" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:96 -msgid "Paste" +msgid "Copy" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:97 +msgid "Paste" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:98 msgid "Cut" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:100 msgid "Increase Indentation" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:102 msgid "Decrease Indentation" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:104 msgid "Select all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:109 msgid "Foreground color" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:114 msgid "Background color" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:118 msgid "Style text block" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:120 msgid "Style the selected text block" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:125 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:33 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:145 msgid "Normal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:125 #: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:126 #: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:127 #: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:128 #: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:129 #: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:131 msgid "Heading" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:132 msgid "Pre-formatted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:133 msgid "Blockquote" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:134 msgid "Address" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:141 msgid "Insert link" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:143 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:79 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:84 msgid "Clear" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:161 msgid "Choose foreground color" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:167 msgid "Choose background color" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:172 msgid "Create link" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:173 msgid "Enter URL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:522 msgid "Normal view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:517 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:523 msgid "HTML Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:36 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:40 msgid "" "For settings that cannot be specified in this dialog, use the values saved " "in a previous conversion (if they exist) instead of using the defaults " "specified in the Preferences" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:74 msgid "Bulk Convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:83 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:189 msgid "Options specific to the output format." msgstr "" @@ -5516,6 +5627,72 @@ msgstr "" msgid "0.0 pt" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics.py:14 +msgid "" +"Heuristic\n" +"Processing" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics.py:15 +msgid "Modify the document text and structure using common patterns." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:90 +msgid "" +"Heuristic processing means that calibre will scan your book for " +"common patterns and fix them. As the name implies, this involves guesswork, " +"which means that it could end up worsening the result of a conversion, if " +"calibre guesses wrong. Therefore, it is disabled by default. Often, if a " +"conversion does not turn out as you expect, turning on heuristics can " +"improve matters. Read more about the various heuristic processing options in " +"the User Manual." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:91 +msgid "Enable &heuristic processing" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:92 +msgid "Heuristic Processing" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:93 +msgid "Unwrap lines" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:94 +msgid "Line &un-wrap factor :" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:95 +msgid "Detect and markup unformatted chapter headings and sub headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:96 +msgid "Renumber sequences of

or

tags to prevent splitting" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:97 +msgid "Delete blank lines between paragraphs" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:98 +msgid "Ensure scene breaks are consistently formatted" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:99 +msgid "Remove unnecessary hyphens" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:100 +msgid "Italicize common words and patterns" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:101 +msgid "Replace entity indents with CSS indents" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:16 msgid "Look & Feel" msgstr "" @@ -5663,130 +5840,139 @@ msgstr "" msgid "&Monospaced font family:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:45 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:115 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:200 msgid "Metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:48 msgid "" "Set the metadata. The output file will contain as much of this metadata as " "possible." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:174 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:631 msgid "Choose cover for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:181 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:639 msgid "Cannot read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:640 msgid "You do not have permission to read the file: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:185 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:197 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:648 msgid "Error reading file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:649 msgid "

There was an error reading from file:
" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:198 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:659 msgid " is not a valid picture" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:438 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:159 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:446 msgid "Book Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:173 -msgid "Use cover from &source file" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:174 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:439 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:447 msgid "Change &cover image:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:161 msgid "Browse for an image to use as the cover of this book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:401 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:163 +msgid "Use cover from &source file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:408 msgid "&Title: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:178 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:409 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:60 msgid "Change the title of this book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:179 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:397 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:495 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:420 msgid "&Author(s): " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:167 msgid "Author So&rt:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:181 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:168 msgid "" "Change the author(s) of this book. Multiple authors should be separated by a " "comma" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:182 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:406 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:413 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:505 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:428 msgid "&Publisher: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:414 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:429 msgid "Ta&gs: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:184 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:408 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:432 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:430 msgid "" "Tags categorize the book. This is particularly useful while searching. " "

They can be any words or phrases, separated by commas." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:185 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:415 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:415 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:514 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:433 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:289 msgid "&Series:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:416 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:417 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:416 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:417 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:434 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:435 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:288 msgid "List of known series. You can add new series." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:188 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:418 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:438 msgid "Book " msgstr "" @@ -5878,7 +6064,7 @@ msgstr "" msgid "Assume print formatting" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output.py:14 msgid "PDB Output" msgstr "" @@ -5911,7 +6097,7 @@ msgstr "" msgid "No &Images" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output.py:15 msgid "PDF Output" msgstr "" @@ -5939,46 +6125,121 @@ msgstr "" msgid "RB Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:133 msgid "No formats available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:134 msgid "Cannot build regex using the GUI builder without a book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:153 msgid "Open book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:90 msgid "Regex Builder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:58 -msgid "Preview" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:91 msgid "Regex:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:60 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:125 msgid "Test" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:93 +msgid "Occurrences:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:94 +msgid "0" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:95 +msgid "Goto:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:89 +msgid "&Previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:88 +msgid "&Next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:98 +msgid "Preview" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:15 +msgid "" +"Search\n" +"&\n" +"Replace" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:31 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:34 +msgid "&Search Regular Expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:99 +msgid "Invalid regular expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:100 +msgid "Invalid regular expression: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:148 +msgid "First expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:153 +msgid "&Replacement Text" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:150 +msgid "Second Expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:152 +msgid "Third expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:154 +msgid "" +"

Search and replace uses regular expressions. See the regular " +"expressions tutorial to get started with regular expressions. Also " +"clicking the wizard buttons below will allow you to test your regular " +"expression against the current input document." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:173 msgid "Convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:200 msgid "Options specific to the input format." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:117 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:53 msgid "Dialog" msgstr "" @@ -6011,81 +6272,47 @@ msgstr "" msgid "Optimize for full-sceen view " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:15 msgid "" "Structure\n" "Detection" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:19 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17 msgid "" "Fine tune the detection of chapter headings and other document structure." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:37 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:31 msgid "Detect chapters at (XPath expression):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:32 msgid "Insert page breaks before (XPath expression):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:40 -msgid "Header regular expression:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:43 -msgid "Footer regular expression:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:59 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:86 -msgid "Invalid regular expression" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:60 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:87 -msgid "Invalid regular expression: %s" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39 msgid "Invalid XPath" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:43 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:40 msgid "The XPath expression %s is invalid." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:53 msgid "Chapter &mark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:54 msgid "Remove first &image" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:55 msgid "Insert &metadata as page at start of book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:84 -msgid "Remove F&ooter" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:85 -msgid "Remove H&eader" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:86 -msgid "Line &un-wrap factor during preprocess:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:87 -msgid "&Preprocess input file to possibly improve structure detection" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:16 msgid "" "Table of\n" @@ -6159,7 +6386,7 @@ msgstr "" msgid "Do not insert Table of Contents into output text when using markdown" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:15 msgid "TXT Output" msgstr "" @@ -6187,7 +6414,7 @@ msgstr "" msgid "Do not remove image references before processing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:46 @@ -6198,8 +6425,8 @@ msgstr "" msgid "TextLabel" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:57 -msgid "Use a wizard to help construct the XPath expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:55 +msgid "Use a wizard to help construct the Regular expression" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:73 @@ -6288,71 +6515,86 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:148 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:167 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:273 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:494 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:576 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:599 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:650 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:502 #: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:114 #: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:134 -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:210 -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:243 -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:247 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:268 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:272 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:973 msgid "Undefined" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:607 msgid "star(s)" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:608 msgid "Unrated" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:159 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:637 msgid "Set '%s' to today" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:269 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:639 +msgid "Clear '%s'" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:285 msgid " index:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:335 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:351 msgid "" "The enumeration \"{0}\" contains an invalid value that will be set to the " "default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:494 -msgid "Do not change" +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:505 +msgid "Apply changes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:543 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:683 msgid "Remove series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:686 msgid "Automatically number books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:549 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:428 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:689 msgid "Force numbers to start with " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:758 msgid "" "The enumeration \"{0}\" contains invalid values that will not appear in the " "list" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:663 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:800 msgid "Remove all tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:684 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:820 msgid "tags to add" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:689 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:826 msgid "tags to remove" msgstr "" @@ -6361,180 +6603,195 @@ msgstr "" msgid "No details available." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:185 msgid "Device no longer connected." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:309 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:303 msgid "Get device information" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:314 msgid "Get list of books on device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:324 msgid "Get annotations from device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:342 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:336 msgid "Send metadata to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:341 msgid "Send collections to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:376 msgid "Upload %d books to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:397 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:391 msgid "Delete books from device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:414 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:408 msgid "Download books from device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:424 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:418 msgid "View book on device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:458 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:452 msgid "Set default send to device action" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:464 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:458 msgid "Send to main memory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:460 msgid "Send to storage card A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:468 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:462 msgid "Send to storage card B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:473 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:482 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:467 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:476 msgid "Main Memory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:494 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:488 msgid "Send specific format to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:495 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:489 msgid "Send and delete from library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:532 msgid "Eject device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:601 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:594 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc.py:41 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:304 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:54 +msgid "Error" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:595 msgid "Error communicating with device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:617 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1105 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:611 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1114 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:297 msgid "No suitable formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:635 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:627 msgid "Select folder to open as device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:686 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:678 msgid "Error talking to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:687 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:679 msgid "" "There was a temporary error talking to the device. Please unplug and " "reconnect the device and or reboot." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:730 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:722 msgid "Device: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:732 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:724 msgid " detected." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:830 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:822 msgid "selected to send" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:835 -msgid "Choose format to send to device" +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:841 +msgid "%i of %i Books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:843 +msgid "0 of %i Books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:844 +msgid "Choose format to send to device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:852 msgid "No device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:845 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:853 msgid "Cannot send: No device is connected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:848 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:852 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:856 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:860 msgid "No card" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:849 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:853 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:857 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:861 msgid "Cannot send: Device has no storage card" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:899 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:982 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1099 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:907 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:990 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1108 msgid "Auto convert the following books before uploading to the device?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:928 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:936 msgid "Sending catalogs to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1013 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1021 msgid "Sending news to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1066 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1075 msgid "Sending books to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1106 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1115 msgid "" "Could not upload the following books to the device, as no suitable formats " "were found. Convert the book(s) to a format supported by your device first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1170 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1179 msgid "No space on device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1171 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1180 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: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/library/delegates.py:424 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:255 #: /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: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/library/delegates.py:425 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:256 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:62 msgid "The template %s is invalid:" msgstr "" @@ -6544,22 +6801,48 @@ msgid "Select available formats and their order for this device" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:82 -msgid "Use sub directories" +msgid "" +"If checked, books are placed into sub directories based on their metadata on " +"the device. If unchecked, books are all put into the top level directory." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:83 -msgid "Use author sort for author" +msgid "Use sub directories" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:84 +msgid "Use author sort for author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:85 msgid "Save &template:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:19 +msgid "How many empty books?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:24 +msgid "How many empty books should be added?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:32 +msgid "Set the author of the new books to:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:44 +msgid "Reset author to Unknown" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:63 msgid "Add books by ISBN" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:64 +msgid "&Paste from clipboard" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:65 msgid "" "

Enter a list of ISBNs in the box to the left, one per line. calibre will " "automatically create entries for books based on the ISBN and download " @@ -6570,115 +6853,205 @@ msgid "" "

9788842915232 >> %s

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:53 -msgid "&Paste from clipboard" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:69 +msgid "&Tags to set on created book entries:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:80 msgid "Fit &cover within view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:81 -msgid "&Previous" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:82 -msgid "&Next" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:33 msgid "My Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 #: /home/kovid/work/calibre/src/calibre/gui2/tools.py:309 msgid "Generate catalog" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:93 msgid "Generate catalog for {0} books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:94 msgid "Catalog &format:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:95 msgid "" "Catalog &title (existing catalog with the same title will be replaced):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:96 msgid "&Send catalog to device automatically" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:97 msgid "Catalog options" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:25 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:26 -msgid "Check Library" +msgid "Checking database integrity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:35 -msgid "&Run the check" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:55 +msgid "Dumping database to SQL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:81 +msgid "Loading database from SQL" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:148 +msgid "Check Library -- Problems Found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:158 +msgid "" +"

Help

\n" +"\n" +"

calibre stores the list of your books and their metadata in a\n" +" database. The actual book files and covers are stored as normal\n" +" files in the calibre library folder. The database contains a list of " +"the files\n" +" and covers belonging to each book entry. This tool checks that the\n" +" actual files in the library folder on your computer match the\n" +" information in the database.

\n" +"\n" +"

The result of each type of check is shown to the left. The " +"various\n" +" checks are:\n" +"

\n" +" \n" +"\n" +"

There are two kinds of automatic fixes possible: Delete\n" +" marked and Fix marked.

\n" +"

Delete marked is used to remove extra files/folders/covers " +"that\n" +" have no entries in the database. Check the box next to the item you " +"want\n" +" to delete. Use with caution.

\n" +"

Fix marked is applicable only to covers (the two lines " +"marked\n" +" 'fixable'). In the case of missing cover files, checking the " +"fixable\n" +" box and pushing this button will remove the cover mark from the\n" +" database for all the files in that category. In the case of extra\n" +" cover files, checking the fixable box and pushing this button will\n" +" add the cover mark to the database for all the files in that\n" +" category.

\n" +" " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:218 +msgid "&Run the check again" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:221 msgid "Copy &to clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:228 msgid "Delete marked files (checked subitems)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:234 msgid "Fix marked sections (checked fixable items)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:244 msgid "Names to ignore:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:249 msgid "" "Enter comma-separated standard file name wildcards, such as synctoy*.dat" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:252 msgid "Extensions to ignore" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:257 msgid "" "Enter comma-separated extensions without a leading dot. Used only in book " "folders" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:306 msgid "(fixable)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:329 msgid "Path from library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:329 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:89 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:253 msgid "Name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:354 msgid "" "The marked files and folders will be permanently deleted. Are you " "sure?" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_device_ui.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:45 msgid "Choose Format" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_device_ui.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1162 +msgid "Format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_device_ui.py:50 +msgid "Existing" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_device_ui.py:51 +msgid "Convertible" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:43 msgid "Choose location for calibre library" msgstr "" @@ -6716,7 +7089,7 @@ msgid "No location selected" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:89 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:654 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:670 msgid "Bad location" msgstr "" @@ -6768,10 +7141,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:61 msgid "&Title:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:155 msgid "&Author(s):" msgstr "" @@ -6780,19 +7155,19 @@ msgid "&Profile:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comments_dialog.py:24 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_dialog.py:23 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_dialog.py:30 msgid "&OK" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comments_dialog.py:25 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_dialog.py:24 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_dialog.py:31 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tweak_epub_ui.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:225 msgid "&Cancel" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comments_dialog_ui.py:43 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_dialog_ui.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_dialog_ui.py:70 msgid "Edit Comments" msgstr "" @@ -6835,33 +7210,39 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:69 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:909 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:972 #: /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:589 msgid "Date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1099 -msgid "Format" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device_ui.py:55 msgid "Delete from device" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/drm_error_ui.py:54 +msgid "This book is DRMed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/drm_error_ui.py:55 +msgid "" +"

This book is locked by DRM. To learn more about DRM and why you " +"cannot read or convert this book in calibre, \n" +"click here." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:35 msgid "Author sort" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:117 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:828 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:893 msgid "Invalid author name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:118 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:829 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:894 msgid "Author names cannot contain & characters." msgstr "" @@ -6991,81 +7372,103 @@ msgstr "" msgid "Stop &all non device jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:57 -msgid "Title/Author" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:43 +msgid "&Copy to clipboard" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:48 +msgid "Show &details" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:49 +msgid "Hide &details" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:53 +msgid "Show detailed information about this error" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:525 +msgid "Copied" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:58 -msgid "Standard metadata" +msgid "Title/Author" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:59 -msgid "Custom metadata" +msgid "Standard metadata" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:60 +msgid "Custom metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:61 msgid "Search/Replace" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress.py:76 msgid "Working" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:248 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:386 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:257 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:384 msgid "Lower Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:249 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:258 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:383 msgid "Upper Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:250 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:259 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:386 msgid "Title Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:260 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:387 msgid "Capitalize" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:254 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:263 msgid "Character match" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:255 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:264 msgid "Regular Expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:258 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:267 msgid "Replace field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:259 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:268 msgid "Prepend to field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:260 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:269 msgid "Append to field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:271 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:279 msgid "Editing meta information for %d books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:320 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:339 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:378 msgid "Book %d:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:393 msgid "" "You can destroy your library using this feature. Changes are " "permanent. There is no undo function. You are strongly encouraged to back up " @@ -7073,7 +7476,7 @@ msgid "" "character matching or regular expressions. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:401 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 " @@ -7083,7 +7486,7 @@ msgid "" "text will match both upper- and lower-case letters" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:373 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:412 msgid "" "In regular expression mode, the search text is an arbitrary python-" "compatible regular expression. The replacement text can contain " @@ -7098,114 +7501,145 @@ msgid "" "function." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:428 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:476 msgid "S/R TEMPLATE ERROR" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:596 msgid "You must specify a destination when source is a composite field" msgstr "" -#: /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 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:699 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:707 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:811 msgid "Search/replace invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:652 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:700 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:660 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:708 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:755 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:812 msgid "Search pattern is invalid: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:799 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:863 msgid "" "Applying changes to %d books.\n" "Phase {0} {1}%%." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:396 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:892 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:555 +msgid "Delete saved search/replace" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:893 +msgid "The selected saved search/replace will be deleted. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:910 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:918 +msgid "Save search/replace" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:911 +msgid "Search/replace name:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:919 +msgid "" +"That saved search/replace already exists and will be overwritten. Are you " +"sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:494 msgid "Edit Meta information" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:398 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:496 msgid "A&utomatically set author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:399 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:497 +msgid "&Swap title and author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:498 msgid "Author s&ort: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:400 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:499 msgid "" "Specify how the author(s) of this book should be sorted. For example Charles " "Dickens should be sorted as Dickens, Charles." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:401 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:409 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:500 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:424 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:774 msgid "&Rating:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:402 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:403 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:410 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:411 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:425 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:426 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:775 msgid "Rating of this book. 0-5 stars" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:503 msgid "No change" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:405 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:412 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:504 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:427 msgid " stars" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:407 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:506 msgid "Add ta&gs: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:409 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:410 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:433 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:434 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:431 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:432 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:138 msgid "Open Tag Editor" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:411 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:510 msgid "&Remove tags:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:412 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:511 msgid "Comma separated list of tags to remove from the books. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:413 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:512 msgid "Check this box to remove all tags from the books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:414 -msgid "Remove all" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:513 +msgid "Remove &all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:418 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:517 msgid "If checked, the series will be cleared" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:419 -msgid "Clear series" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:518 +msgid "&Clear series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:420 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:519 msgid "" "If not checked, the series number for the books will be set to 1.\n" "If checked, selected books will be automatically numbered, in the order\n" @@ -7213,134 +7647,182 @@ msgid "" "Book A will have series number 1 and Book B series number 2." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:424 -msgid "Automatically number books in this series" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:523 +msgid "&Automatically number books in this series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:425 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:524 msgid "" "Series will normally be renumbered from the highest number in the database\n" "for that series. Checking this box will tell calibre to start numbering\n" "from the value in the box" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:429 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:527 +msgid "&Force numbers to start with:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:528 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:957 +msgid "&Date:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:529 +msgid "d MMM yyyy" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:536 +msgid "&Apply date" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:532 +msgid "&Published:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:534 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:444 +msgid "Clear published date" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:537 msgid "Remove &format:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:430 -msgid "&Swap title and author" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:431 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:538 msgid "" "Force the title to be in title case. If both this and swap authors are " "checked,\n" "title and author are swapped before the title case is set" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:433 -msgid "Change title to title case" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:540 +msgid "Change title to title &case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:434 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:541 msgid "" "Remove stored conversion settings for the selected books.\n" "\n" "Future conversion of these books will use the default settings." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:437 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:544 msgid "Remove &stored conversion settings for the selected books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:438 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:545 msgid "Change &cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:439 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:546 msgid "&Generate default cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:547 msgid "&Remove cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:441 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:548 msgid "Set from &ebook file(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:442 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:457 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:465 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:380 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:509 msgid "&Basic metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:443 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:458 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:387 msgid "&Custom metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:444 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:551 +msgid "Load searc&h/replace:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:552 +msgid "Select saved search/replace to load." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:553 +msgid "Save current search/replace" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:554 +msgid "Sa&ve" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:556 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 +msgid "Delete" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:557 msgid "Search &field:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:445 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:558 msgid "The name of the field that you want to search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:446 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:559 msgid "Search &mode:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:447 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:560 msgid "" "Choose whether to use basic text matching or advanced regular expression " "matching" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:448 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:561 msgid "Te&mplate:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:449 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:562 msgid "Enter a template to be used as the source for the search/replace" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:563 msgid "&Search for:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:564 msgid "" "Enter the what you are looking for, either plain text or a regular " "expression, depending on the mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:452 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:565 msgid "" "Check this box if the search string must match exactly upper and lower case. " "Uncheck it if case is to be ignored" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:453 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:566 msgid "Cas&e sensitive" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:454 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:567 msgid "&Replace with:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:455 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:568 msgid "" "The replacement text. The matched search text will be replaced with this " "string" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:456 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:569 msgid "&Apply function after replace:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:457 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:570 msgid "" "Specify how the text is to be processed after matching and replacement. In " "character mode, the entire\n" @@ -7348,25 +7830,25 @@ msgid "" "processed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:459 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:572 msgid "&Destination field:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:460 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:573 msgid "" "The field that the text will be put into after all replacements.\n" "If blank, the source field is used if the field is modifiable" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:462 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:575 msgid "M&ode:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:463 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:576 msgid "Specify how the text should be copied into the destination." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:464 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:577 msgid "" "Specifies whether result items should be split into multiple values or\n" "left as single values. This option has the most effect when the source field " @@ -7374,284 +7856,289 @@ msgid "" "not multiple and the destination field is multiple" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:467 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:580 msgid "Split &result" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:468 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:581 msgid "For multiple-valued fields, sho&w" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:582 msgid "values starting a&t" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:470 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:583 msgid "with values separated b&y" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:471 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:584 msgid "" "Used when displaying test results to separate values in multiple-valued " "fields" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:472 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:585 msgid "Test text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:473 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:586 msgid "Test result" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:474 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:587 msgid "Your test:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:475 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:588 msgid "&Search and replace" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:420 msgid "Last modified: %s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:122 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:249 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:256 msgid "Could not read cover" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:250 msgid "Could not read cover from %s format" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:257 msgid "The cover in the %s format is invalid" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:734 msgid "Cover size: %dx%d pixels" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:658 msgid "Not a valid picture" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:685 msgid "Specify title and author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:686 msgid "You must specify a title and author before generating a cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:244 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:246 msgid "Downloading cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:260 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:265 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:271 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:276 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:267 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:278 msgid "Cannot fetch cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:261 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:272 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:277 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:279 msgid "Could not fetch cover.
" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:264 msgid "The download timed out." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:266 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:268 msgid "Could not find cover for this book. Try specifying the ISBN first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:280 msgid "" "For the error message from each cover source, click Show details below." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:287 msgid "Bad cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:288 msgid "The cover is not a valid picture" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:305 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:515 msgid "Choose formats for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:336 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:338 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:547 msgid "No permission" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:337 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:339 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:548 msgid "You do not have permission to read the following files:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:364 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:365 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:366 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:367 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:579 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:580 msgid "No format selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:591 msgid "Could not read metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:377 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:379 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:592 msgid "Could not read metadata from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:449 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:225 msgid "" " The green color indicates that the current author sort matches the current " "author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:452 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:454 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:228 msgid "" " The red color indicates that the current author sort does not match the " "current author. No action is required if this is what you want." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:459 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:461 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:119 msgid "" " The green color indicates that the current title sort matches the current " "title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:462 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:464 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:122 msgid "" " The red color warns that the current title sort does not match the current " "title. No action is required if this is what you want." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:468 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:470 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:47 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:102 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:221 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:384 msgid "Previous" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:471 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:479 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:473 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:481 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:351 msgid "Save changes and edit the metadata of %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:476 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:478 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:44 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:103 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:211 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:401 msgid "Next" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:673 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:678 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:682 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:687 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:897 msgid "This ISBN number is valid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:681 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:690 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:904 msgid "This ISBN number is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:757 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:770 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:848 msgid "Tags changed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:758 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:771 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:849 msgid "" "You have changed the tags. In order to use the tags editor, you must either " -"discard or apply these changes" +"discard or apply these changes. Apply changes?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:796 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:805 +msgid "Timed out" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:806 +msgid "" +"The download of social metadata timed out, the servers are probably busy. " +"Try again later." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:813 msgid "There were errors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:797 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:814 msgid "There were errors downloading social metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:831 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:848 msgid "Cannot fetch metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:832 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:849 msgid "You must specify at least one of ISBN, Title, Authors or Publisher" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:927 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:302 msgid "Permission denied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:928 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:945 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:303 msgid "Could not open %s. Is it being used by another program?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:399 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:406 msgid "Edit Meta Information" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:400 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:407 msgid "Meta information" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:403 -msgid "Title &sort: " -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:404 -msgid "" -"Specify how this book should be sorted when by title. For example, The " -"Exorcist might be sorted as Exorcist, The." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:406 -msgid "Author S&ort: " -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:407 -msgid "" -"Specify how the author(s) of this book should be sorted. For example Charles " -"Dickens should be sorted as Dickens, Charles.\n" -"If the box is colored green, then text matches the individual author's sort " -"strings. If it is colored red, then the authors and this text do not match." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:419 -msgid "IS&BN:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:420 -msgid "&Date:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:421 -msgid "dd MMM yyyy" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:422 -msgid "Publishe&d:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:424 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:410 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:87 msgid "" "Automatically create the title sort entry based on the current title entry.\n" "Using this button to create title sort will change title sort from red to " "green." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:427 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:413 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:109 msgid "Swap the author and title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:429 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:415 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:98 msgid "" "Automatically create the author sort entry based on the current author " "entry.\n" @@ -7659,67 +8146,114 @@ msgid "" "green." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:435 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:418 +msgid "Title &sort: " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:419 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:109 +msgid "" +"Specify how this book should be sorted when by title. For example, The " +"Exorcist might be sorted as Exorcist, The." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:421 +msgid "Author S&ort: " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:422 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:211 +msgid "" +"Specify how the author(s) of this book should be sorted. For example Charles " +"Dickens should be sorted as Dickens, Charles.\n" +"If the box is colored green, then text matches the individual author's sort " +"strings. If it is colored red, then the authors and this text do not match." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:436 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:116 msgid "Remove unused series (Series that have no books)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:437 -msgid "&Fetch metadata from server" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:440 -msgid "&Browse" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:439 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:870 +msgid "IS&BN:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:441 -msgid "Remove border (if any) from cover" +msgid "dd MMM yyyy" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:442 -msgid "T&rim" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:443 -msgid "Reset cover to default" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:444 -msgid "&Remove" +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1008 +msgid "Publishe&d:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:445 -msgid "Download co&ver" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:446 -msgid "Generate a default cover based on the title and author" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:447 -msgid "&Generate cover" +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:154 +msgid "&Fetch metadata from server" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:448 -msgid "Available Formats" +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:609 +msgid "&Browse" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:449 -msgid "Add a new format for this book to the database" +msgid "Remove border (if any) from cover" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:611 +msgid "T&rim" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:451 -msgid "Remove the selected formats for this book from the database." +msgid "Reset cover to default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:452 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:613 +msgid "&Remove" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:453 -msgid "Set the cover for the book from the selected format" +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:619 +msgid "Download co&ver" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:454 +msgid "Generate a default cover based on the title and author" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:455 -msgid "Update metadata from the metadata in the selected format" +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:620 +msgid "&Generate cover" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:456 +msgid "Available Formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:457 +msgid "Add a new format for this book to the database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:459 +msgid "Remove the selected formats for this book from the database." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:461 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:437 +msgid "Set the cover for the book from the selected format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:463 +msgid "Update metadata from the metadata in the selected format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:464 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:568 msgid "&Comments" msgstr "" @@ -7752,6 +8286,41 @@ msgstr "" msgid "Aborting..." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:23 +msgid "" +"Restoring database from backups, do not interrupt, this will happen in three " +"stages" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:25 +msgid "Restoring database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:79 +msgid "" +"Your list of books, with all their metadata is stored in a single file, " +"called a database. In addition, metadata for each individual book is stored " +"in that books' folder, as a backup.

This operation will rebuild the " +"database from the individual book metadata. This is useful if the database " +"has been corrupted and you get a blank list of books. Note that restoring " +"only restores books, not any settings stored in the database, or any custom " +"recipes.

Do you want to restore the database?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:102 +msgid "Restoring database failed, click Show details to see details" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:107 +msgid "" +"Restoring the database succeeded with some warnings click Show details to " +"see the details." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:112 +msgid "Restoring database was successful" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor.py:55 msgid "" "The current saved search will be permanently deleted. Are you sure?" @@ -7838,16 +8407,16 @@ msgstr "" msgid "Download all scheduled new sources" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:353 msgid "No internet connection" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:349 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:354 msgid "Cannot download news as no internet connection is active" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:198 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:284 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321 msgid "Recipes" msgstr "" @@ -8040,6 +8609,7 @@ msgid "&Author:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:815 msgid "Ta&gs:" msgstr "" @@ -8057,6 +8627,7 @@ msgid "Enter tags separated by spaces" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions_ui.py:101 msgid "&Clear" msgstr "" @@ -8082,63 +8653,78 @@ msgstr "" msgid "Publishers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:128 msgid " (not on any book)" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions.py:151 +msgid "Name already used" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:198 +msgid "That name is already used, perhaps with different case." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:211 msgid "" "The current tag category will be permanently deleted. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:166 msgid "User Categories Editor" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:159 -msgid "A&vailable items" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:160 -msgid "Apply tags to current tag category" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:162 -msgid "A&pplied items" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:163 -msgid "Unapply (remove) tag from current tag category" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:167 msgid "Category name: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:168 msgid "Select a category to edit" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:169 msgid "Delete this selected tag category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:169 -msgid "Enter a new category name. Select the kind before adding it." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:170 -msgid "Add the new category" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:171 +msgid "Enter a category name, then use the add button or the rename button" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:172 +msgid "Add a new category" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:174 +msgid "Rename the current category to the what is in the box" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:176 msgid "Category filter: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:177 msgid "Select the content kind of the new category" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:178 +msgid "A&vailable items" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:179 +msgid "Apply tags to current tag category" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:181 +msgid "A&pplied items" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:182 +msgid "Unapply (remove) tag from current tag category" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:105 msgid "Are your sure?" @@ -8195,12 +8781,12 @@ msgid "%s (was %s)" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:818 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:883 msgid "Item is blank" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:819 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:884 msgid "An item cannot be set to nothing. Delete it instead." msgstr "" @@ -8247,6 +8833,19 @@ msgstr "" msgid "Ctrl+S" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_dialog_ui.py:71 +msgid "Function &name:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_dialog_ui.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions_ui.py:100 +msgid "&Documentation:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_dialog_ui.py:73 +msgid "Python &code:" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:56 msgid "Test email settings" msgstr "" @@ -8256,7 +8855,7 @@ msgid "Send test mail from %s to:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:123 msgid "&Test" msgstr "" @@ -8334,40 +8933,42 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:233 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:242 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:292 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:329 msgid "Invalid input" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:234 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:243 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:330 msgid "

Could not create recipe. Error:
%s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:269 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:296 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:333 msgid "Replace recipe?" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:270 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334 msgid "A custom recipe named %s already exists. Do you want to replace it?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:263 -msgid "Pick recipe" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:274 +msgid "Choose builtin recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:263 -msgid "Pick the recipe to customize" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320 msgid "Choose a recipe file" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:361 +msgid "" +"You will lose any unsaved changes. To save your changes, click the " +"Add/Update recipe button. Continue?" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:253 msgid "Add custom news source" msgstr "" @@ -8486,7 +9087,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:106 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:186 msgid "by" msgstr "" @@ -8519,7 +9120,7 @@ msgstr "" msgid "Sent news to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:115 msgid "" "\n" @@ -8543,64 +9144,64 @@ msgid "" "metadata entries are documented in tooltips.

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:122 msgid "Regular &expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:124 msgid "File &name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:126 msgid "Title:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:127 msgid "Regular expression (?P<title>)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:125 #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:128 #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:131 #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:134 #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:137 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:93 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:102 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:107 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:122 msgid "No match" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:129 msgid "Authors:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:130 msgid "Regular expression (?P)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:132 msgid "Series:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:133 msgid "Regular expression (?P)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:135 msgid "Series index:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:136 msgid "Regular expression (?P)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:138 msgid "ISBN:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:139 msgid "Regular expression (?P)" msgstr "" @@ -8630,7 +9231,7 @@ msgstr "" msgid "created by Kovid Goyal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:165 msgid "Connected " msgstr "" @@ -8714,6 +9315,14 @@ msgstr "" msgid " - Jobs" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:424 +msgid "Do you really want to stop the selected job?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:430 +msgid "Do you really want to stop all non-device jobs?" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:53 msgid "Eject this device" msgstr "" @@ -8727,7 +9336,7 @@ msgid "Show books in the main memory of the device" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:67 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:855 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:901 msgid "Card A" msgstr "" @@ -8736,7 +9345,7 @@ msgid "Show books in storage card A" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:69 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:857 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:903 msgid "Card B" msgstr "" @@ -8767,39 +9376,45 @@ msgid "" "etc.

Words separated by spaces are ANDed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:181 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:183 msgid "&Go!" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:189 msgid "Do Quick Search (you can also press the Enter key)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:195 msgid "Reset Quick Search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:198 +msgid "&Highlight" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:199 +msgid "" +"When searching, highlight matched books, instead of restricting the book " +"list to the matches.

You can use the N or F3 keys to go to the next match." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:215 msgid "Copy current search text (instead of search name)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:221 msgid "Save current search under the name shown in the box" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:227 msgid "Delete current saved search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:340 -msgid "N" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:376 msgid "Y" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:375 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:411 msgid "Edit template" msgstr "" @@ -8813,38 +9428,38 @@ msgstr "" msgid "Size (MB)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:389 msgid "Book %s of %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:675 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1219 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:738 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1282 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:589 msgid "The lookup/search name is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:681 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1221 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:744 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1284 msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:906 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:969 msgid "In Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:910 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:973 msgid "Size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1119 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1182 msgid "Book %s of %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1199 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1262 msgid "Marked for deletion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1202 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1265 msgid "Double click to edit me

" msgstr "" @@ -8888,7 +9503,7 @@ msgstr "" msgid "Restore default layout" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:765 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:781 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -8919,7 +9534,7 @@ msgid "No matches for the search phrase %s were found." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:453 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:454 msgid "No matches found" msgstr "" @@ -8936,12 +9551,12 @@ msgid "LRF Viewer toolbar" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:538 msgid "Next Page" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:539 msgid "Previous Page" msgstr "" @@ -8984,107 +9599,113 @@ msgstr "" msgid "Do not check for updates" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:662 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:38 +msgid "" +"Ignore custom plugins, useful if you installed a plugin that is preventing " +"calibre from starting" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:678 msgid "Calibre Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:89 msgid "Choose a location for your calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:95 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:98 msgid "Failed to create library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:99 msgid "Failed to create calibre library at: %r." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:99 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:188 msgid "Choose a location for your new calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:157 msgid "Initializing user interface..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:182 msgid "Repairing failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:183 msgid "The database repair failed. Starting with a new empty library." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:194 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 msgid "Bad database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:198 msgid "Bad database location %r. calibre will now quit." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:208 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:210 msgid "Corrupted database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:211 msgid "" "Your calibre database appears to be corrupted. Do you want calibre to try " "and repair it automatically? If you say No, a new empty calibre library will " "be created." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:217 msgid "" "Repairing database. This can take a very long time for a large collection" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:230 msgid "" "Bad database location %r. Will start with a new, empty calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:238 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:240 msgid "Starting %s: Loading books..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:320 msgid "If you are sure it is not running" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:320 -msgid "Cannot Start " -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:321 -msgid "%s is already running." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:324 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:323 msgid "may be running in the system tray, in the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:325 msgid "upper right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:327 msgid "lower right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:331 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:330 msgid "try rebooting your computer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:333 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:332 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:346 msgid "try deleting the file" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:335 +msgid "Cannot Start " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:336 +msgid "%s is already running." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/main_window.py:20 msgid "" "Redirect console output to a dialog window (both stdout and stderr). Useful " @@ -9100,52 +9721,119 @@ msgid "&Quit" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main_window.py:90 -#: /home/kovid/work/calibre/src/calibre/utils/pyconsole/console.py:109 -msgid "ERROR: Unhandled exception" +msgid "Unhandled exception" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:111 +msgid "Title &sort:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:216 +msgid "Author s&ort:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:339 +msgid "&Number:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:704 +msgid "Invalid cover" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:705 +msgid "Could not change cover as the image is invalid." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:732 +msgid "This book has no cover" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:782 +msgid "stars" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:816 +msgid "" +"Tags categorize the book. This is particularly useful while searching. " +"

They can be any wordsor phrases, separated by commas." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:911 +msgid "&Publisher:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:976 +msgid "Clear date" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:109 msgid "Book has neither title nor ISBN" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:138 msgid "No matches found for this book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:191 msgid "Failed to download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:224 msgid "cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:225 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:225 msgid "Downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:225 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:225 msgid "Failed to get" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:229 msgid "%s %s for: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:288 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:162 msgid "Done" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:289 msgid "Successfully downloaded metadata for %d out of %d books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:291 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:661 msgid "Details" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:208 +msgid "Edit Metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:426 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:587 +msgid "Change cover" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:474 +msgid "Co&mments" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:496 +msgid "&Metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:501 +msgid "&Cover and formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:556 +msgid "C&ustom metadata" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/preferences/__init__.py:36 msgid "" "Restore settings to default values. You have to click Apply to actually save " @@ -9323,7 +10011,7 @@ msgstr "" msgid "Add &custom column" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/conversion.py:37 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/conversion.py:39 msgid "" "Restore settings to default values. Only settings for the currently selected " "section are restored." @@ -9783,25 +10471,29 @@ msgstr "" msgid "&Install command line tools" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:44 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:31 +msgid "Open Editor" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:65 msgid "Device currently connected: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:68 msgid "Device currently connected: None" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:207 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:228 msgid "" "That format and device already has a plugboard or conflicts with another " "plugboard." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:240 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:261 msgid "Invalid destination" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:262 msgid "The destination field cannot be blank" msgstr "" @@ -9861,84 +10553,118 @@ msgstr "" msgid "Delete plugboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:179 msgid "%(plugin_type)s %(plugins)s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:180 msgid "plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:189 msgid "" "\n" "Customization: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:218 +msgid "Search for plugin" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:226 +msgid "No matches" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:227 +msgid "Could not find any matching plugins" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:268 +msgid "Add plugin" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:276 +msgid "" +"Installing plugins is a security risk. Plugins can contain a " +"virus/malware. Only install it if you got it from a trusted source. Are you " +"sure you want to proceed?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:287 +msgid "" +"Plugin {0} successfully installed under {1} plugins. You may " +"have to restart calibre for the plugin to take effect." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:295 msgid "No valid plugin path" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:296 msgid "%s is not a valid plugin path" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:164 -msgid "Choose plugin" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:305 +msgid "Select an actual plugin under %s to customize" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:311 msgid "Plugin cannot be disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:312 msgid "The plugin: %s cannot be disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:322 msgid "Plugin not customizable" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:323 msgid "Plugin: %s does not need customization" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:329 +msgid "Must restart" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:330 +msgid "" +"You must restart calibre before you can configure the %s plugin" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:335 +msgid "Plugin {0} successfully removed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:343 msgid "Cannot remove builtin plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:344 msgid " cannot be removed. It is a builtin plugin. Try disabling it instead." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:87 msgid "" "Here you can customize the behavior of Calibre by controlling what plugins " "it uses." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:90 msgid "Enable/&Disable plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:91 msgid "&Customize plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:92 msgid "&Remove plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:86 -msgid "Add new plugin" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:87 -msgid "Plugin &file:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:89 -msgid "&Add" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:93 +msgid "&Add a new plugin" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:33 @@ -10053,7 +10779,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:341 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:381 msgid "Failed to start content server" msgstr "" @@ -10146,10 +10872,138 @@ msgid "" "the IP address of the computer calibre is running on." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/social.py:34 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/social.py:39 msgid "Downloading social metadata, please wait..." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions.py:23 +msgid "" +"\n" +"

Here you can add and remove functions used in template " +"processing. A\n" +" template function is written in python. It takes information from " +"the\n" +" book, processes it in some way, then returns a string result. " +"Functions\n" +" defined here are usable in templates in the same way that builtin\n" +" functions are usable. The function must be named evaluate, " +"and\n" +" must have the signature shown below.

\n" +"

evaluate(self, formatter, kwargs, mi, locals, your " +"parameters)\n" +" → returning a unicode string

\n" +"

The parameters of the evaluate function are:\n" +"

    \n" +"
  • formatter: the instance of the formatter being used to\n" +" evaluate the current template. You can use this to do recursive\n" +" template evaluation.
  • \n" +"
  • kwargs: a dictionary of metadata. Field values are in " +"this\n" +" dictionary.\n" +"
  • mi: a Metadata instance. Used to get field information.\n" +" This parameter can be None in some cases, such as when evaluating\n" +" non-book templates.
  • \n" +"
  • locals: the local variables assigned to by the current\n" +" template program.
  • \n" +"
  • your parameters: You must supply one or more formal\n" +" parameters. The number must match the arg count box, unless arg " +"count is\n" +" -1 (variable number or arguments), in which case the last argument " +"must\n" +" be *args. At least one argument is required, and is usually the " +"value of\n" +" the field being operated upon. Note that when writing in basic " +"template\n" +" mode, the user does not provide this first argument. Instead it is\n" +" supplied by the formatter.
  • \n" +"

\n" +"

\n" +" The following example function checks the value of the field. If " +"the\n" +" field is not empty, the field's value is returned, otherwise the " +"value\n" +" EMPTY is returned.\n" +"

\n"
+"        name: my_ifempty\n"
+"        arg count: 1\n"
+"        doc: my_ifempty(val) -- return val if it is not empty, otherwise the "
+"string 'EMPTY'\n"
+"        program code:\n"
+"        def evaluate(self, formatter, kwargs, mi, locals, val):\n"
+"            if val:\n"
+"                return val\n"
+"            else:\n"
+"                return 'EMPTY'
\n" +" This function can be called in any of the three template program " +"modes:\n" +"