From 1035de793d7feb398966aa2c83c5e42b11a260c4 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 29 May 2011 15:04:37 -0600 Subject: [PATCH 1/2] ... --- src/calibre/translations/calibre.pot | 945 ++++++++++++++++----------- 1 file changed, 547 insertions(+), 398 deletions(-) diff --git a/src/calibre/translations/calibre.pot b/src/calibre/translations/calibre.pot index a8273ccac2..50576b12ae 100644 --- a/src/calibre/translations/calibre.pot +++ b/src/calibre/translations/calibre.pot @@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: calibre 0.8.3\n" -"POT-Creation-Date: 2011-05-27 10:15+MDT\n" -"PO-Revision-Date: 2011-05-27 10:15+MDT\n" +"POT-Creation-Date: 2011-05-29 15:03+MDT\n" +"PO-Revision-Date: 2011-05-29 15:03+MDT\n" "Last-Translator: Automatically generated\n" "Language-Team: LANGUAGE\n" "MIME-Version: 1.0\n" @@ -46,10 +46,10 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:253 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:34 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:35 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:89 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:455 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:460 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:724 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:88 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:454 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:459 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:729 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:36 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:61 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/extz.py:23 @@ -123,8 +123,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:102 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:313 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:315 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:347 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:356 #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:156 #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:364 #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:367 @@ -145,11 +145,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:152 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:167 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:401 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1012 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1188 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1191 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1018 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1194 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1279 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1197 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1200 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1285 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:82 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:212 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:231 @@ -158,23 +158,23 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:160 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/store/google_books_plugin.py:90 -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:163 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:199 #: /home/kovid/work/calibre/src/calibre/library/cli.py:217 #: /home/kovid/work/calibre/src/calibre/library/database.py:914 #: /home/kovid/work/calibre/src/calibre/library/database2.py:506 #: /home/kovid/work/calibre/src/calibre/library/database2.py:514 #: /home/kovid/work/calibre/src/calibre/library/database2.py:525 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1804 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1941 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2948 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2950 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3083 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1805 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1942 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2949 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2951 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3084 #: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:233 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:156 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:159 #: /home/kovid/work/calibre/src/calibre/library/server/xml.py:79 -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:131 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:134 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:46 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:64 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:78 @@ -328,7 +328,7 @@ msgid "Change the way calibre behaves" msgstr "" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:906 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:221 msgid "Add your own columns" msgstr "" @@ -801,7 +801,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:445 #: /home/kovid/work/calibre/src/calibre/library/database2.py:302 #: /home/kovid/work/calibre/src/calibre/library/database2.py:315 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2812 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2813 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:159 msgid "News" msgstr "" @@ -809,8 +809,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2669 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:643 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2772 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2790 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2773 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2791 msgid "Catalog" msgstr "" @@ -2304,27 +2304,32 @@ msgstr "" msgid "Extract common e-book formats from archives (zip/rar) files. Also try to autodetect if they are actually cbz/cbr files." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:145 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:51 +msgid "Value: unknown field " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:144 msgid "TEMPLATE ERROR" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:628 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:627 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:563 msgid "No" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:628 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:627 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:563 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:601 msgid "Yes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:723 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:728 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:45 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:64 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1017 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1023 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:152 #: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/models.py:23 @@ -2334,32 +2339,32 @@ msgstr "" msgid "Title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:724 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:729 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:66 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1018 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1024 #: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/models.py:23 msgid "Author(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:725 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:730 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:149 msgid "Publisher" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:726 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:731 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:49 msgid "Producer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:727 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:732 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:871 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:147 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:211 msgid "Comments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:729 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:734 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:170 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:72 @@ -2370,7 +2375,7 @@ msgstr "" msgid "Tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:731 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:736 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:168 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:73 @@ -2380,16 +2385,16 @@ msgstr "" msgid "Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:732 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:737 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:154 msgid "Language" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:734 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:739 msgid "Timestamp" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:736 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:741 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:167 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:69 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:132 @@ -2397,7 +2402,7 @@ msgstr "" msgid "Published" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:738 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:743 msgid "Rights" msgstr "" @@ -3086,131 +3091,131 @@ msgstr "" msgid "Do not remove font color from output. This is only useful when txt-output-formatting is set to textile. Textile is the only formatting that supports setting font color. If this option is not specified font color will not be set and default to the color displayed by the reader (generally this is black)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:104 msgid "Send file to storage card instead of main memory by default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:106 msgid "Confirm before deleting" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:108 msgid "Main window geometry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:110 msgid "Notify when a new version is available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:112 msgid "Use Roman numerals for series number" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:114 msgid "Sort tags list by name, popularity, or rating" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:116 msgid "Match tags by any or all." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:118 msgid "Number of covers to show in the cover browsing mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:120 msgid "Defaults for conversion to LRF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:122 msgid "Options for the LRF ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:125 msgid "Formats that are viewed using the internal viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:127 msgid "Columns to be displayed in the book list" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:128 msgid "Automatically launch content server on application startup" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:129 msgid "Oldest news kept in database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:130 msgid "Show system tray icon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:132 msgid "Upload downloaded news to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:134 msgid "Delete books from library after uploading to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:136 msgid "Show the cover flow in a separate window instead of in the main calibre window" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:138 msgid "Disable notifications from the system tray icon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:140 msgid "Default action to perform when send to device button is clicked" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:145 msgid "Start searching as you type. If this is disabled then search will only take place when the Enter or Return key is pressed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:148 msgid "When searching, show all books with search results highlighted instead of showing only the matches. You can use the N or F3 keys to go to the next match." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:166 msgid "Maximum number of simultaneous conversion/news download jobs. This number is twice the actual value for historical reasons." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:170 msgid "Download social metadata (tags/rating/etc.)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:172 msgid "Overwrite author and title with new metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:174 msgid "Automatically download the cover, if available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:176 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:178 msgid "The layout of the user interface" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:180 msgid "Show the average rating per item indication in the tag browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:181 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:182 msgid "Disable UI animations" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:187 msgid "tag browser categories not to display" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:461 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:462 msgid "Choose Files" msgstr "" @@ -3340,11 +3345,11 @@ msgstr "" msgid "Select books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:329 msgid "Merged some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:330 msgid "The following duplicate books were found and incoming book formats were processed and merged into your Calibre database according to your automerge settings:" msgstr "" @@ -3364,9 +3369,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:376 #: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:127 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:78 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/actions/tweak_epub.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:185 @@ -3644,7 +3649,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:405 #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:167 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:857 msgid "Not allowed" msgstr "" @@ -4071,7 +4076,7 @@ msgid "Move to next highlighted match" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/next_match.py:13 -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:373 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:388 msgid "N" msgstr "" @@ -4274,35 +4279,35 @@ msgstr "" msgid "Stores" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:43 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/chooser_dialog.py:18 -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/search.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/search.py:270 msgid "Choose stores" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:78 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:111 msgid "Cannot search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:130 msgid "Calibre helps you find the ebooks you want by searching the websites of various commercial and public domain book sources for you." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:134 msgid "Using the integrated search you can easily find which store has the book you are looking for, at the best price. You also get DRM status and other useful information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:138 msgid "All transactions (paid or otherwise) are handled between you and the book seller. Calibre is not part of this process and any issues related to a purchase should be directed to the website you are buying from. Be sure to double check that any books you get will work with your e-book reader, especially if the book you are buying has DRM." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:148 msgid "Show this message again" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:149 msgid "About Get Books" msgstr "" @@ -4569,7 +4574,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar_ui.py:110 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:80 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:85 -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/chooser_widget_ui.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/chooser_widget_ui.py:79 #: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/store_dialog_ui.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/search_ui.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/search_ui.py:139 @@ -4606,7 +4611,7 @@ msgid "Book %s of %s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:144 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1021 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1027 msgid "Collections" msgstr "" @@ -4732,7 +4737,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar_ui.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/tweaks_ui.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/store/basic_config_widget_ui.py:37 -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/chooser_widget_ui.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/chooser_widget_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/search/search_widget_ui.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/search_widget_ui.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:123 @@ -5333,7 +5338,7 @@ msgstr "" msgid "" "

This wizard will help you choose an appropriate font size key for your needs. Just enter the base font size of the input document and then enter an input font size. The wizard will display what font size it will be mapped to, by the font rescaling algorithm. You can adjust the algorithm by adjusting the output base font size and font key below. When you find values suitable for you, click OK.

\n" "

By default, if the output base font size is zero and/or no font size key is specified, calibre will use the values from the current Output Profile.

\n" -"

See the User Manual for a discussion of how font size rescaling works.

" +"

See the User Manual for a discussion of how font size rescaling works.

" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:108 @@ -5396,7 +5401,7 @@ msgid "Modify the document text and structure using common patterns." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:113 -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." +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:114 @@ -5810,8 +5815,9 @@ msgid "PDB Output" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:48 -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:215 -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:225 +#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/adv_search_builder_ui.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:205 msgid "&Format:" msgstr "" @@ -5970,7 +5976,7 @@ 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." +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 @@ -6286,7 +6292,7 @@ msgid "(A regular expression)" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:89 -msgid "

For example, to match all h2 tags that have class=\"chapter\", set tag to h2, attribute to class and value to chapter.

Leaving attribute blank will match any attribute and leaving value blank will match any value. Setting tag to * will match any tag.

To learn more advanced usage of XPath see the XPath Tutorial." +msgid "

For example, to match all h2 tags that have class=\"chapter\", set tag to h2, attribute to class and value to chapter.

Leaving attribute blank will match any attribute and leaving value blank will match any value. Setting tag to * will match any tag.

To learn more advanced usage of XPath see the XPath Tutorial." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:128 @@ -6312,8 +6318,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:128 #: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:230 -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:263 -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:267 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:279 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:283 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1139 msgid "Undefined" msgstr "" @@ -6569,7 +6575,7 @@ msgstr "" #: #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget.py:148 -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:421 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:437 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:273 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:61 msgid "Invalid template" @@ -6577,7 +6583,7 @@ msgstr "" #: #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget.py:149 -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:422 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:438 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:274 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:62 msgid "The template %s is invalid:" @@ -6937,7 +6943,8 @@ 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:73 -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/adv_search_builder_ui.py:181 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:199 msgid "&Title:" msgstr "" @@ -6951,12 +6958,12 @@ 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:218 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_dialog.py:222 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:219 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_dialog.py:223 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tweak_epub_ui.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:233 msgid "&Cancel" @@ -7011,7 +7018,7 @@ 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:68 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1019 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1025 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:73 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:321 @@ -8019,91 +8026,105 @@ msgid "Negate" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:196 -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/adv_search_builder_ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:186 msgid "Advanced Search" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:197 -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:207 +#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/adv_search_builder_ui.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:187 msgid "&What kind of match to use:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:198 -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:208 +#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/adv_search_builder_ui.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:188 msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:199 -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/adv_search_builder_ui.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:189 msgid "Equals: the word or phrase must match the entire metadata field" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:200 -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/adv_search_builder_ui.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:190 msgid "Regular expression: the expression must match anywhere in the metadata field" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:201 -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:181 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/adv_search_builder_ui.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:191 msgid "Find entries that have..." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:202 -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/adv_search_builder_ui.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:192 msgid "&All these words:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:203 -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:183 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/adv_search_builder_ui.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:193 msgid "This exact &phrase:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:204 -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:184 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/adv_search_builder_ui.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:194 msgid "&One or more of these words:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:205 -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/adv_search_builder_ui.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:195 msgid "But dont show entries that have..." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:206 -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/adv_search_builder_ui.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:196 msgid "Any of these &unwanted words:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:207 -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:187 -msgid "See the User Manual for more help" +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:197 +msgid "See the User Manual for more help" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:210 -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:208 -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/adv_search_builder_ui.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:198 msgid "A&dvanced Search" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:212 -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:210 -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/adv_search_builder_ui.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:200 msgid "Enter the title." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:213 -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/adv_search_builder_ui.py:183 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:201 msgid "&Author:" msgstr "" @@ -8126,14 +8147,16 @@ 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 -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:213 -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/adv_search_builder_ui.py:184 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:203 msgid "&Clear" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:220 -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:214 -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/adv_search_builder_ui.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:204 msgid "Search only in specific fields:" msgstr "" @@ -8341,6 +8364,10 @@ msgstr "" msgid "Ctrl+S" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_dialog.py:249 +msgid "EXCEPTION: " +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_dialog_ui.py:71 msgid "Function &name:" msgstr "" @@ -8355,53 +8382,90 @@ msgid "Python &code:" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:36 msgid "Open Template Editor" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:39 msgid "Open Tag Wizard" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:41 -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:408 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:424 msgid "Edit template" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:52 msgid "Invalid text" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:53 msgid "The text in the box was not generated by this wizard" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:64 msgid "Tag Wizard" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:68 -msgid "Tags (more than one per box permitted)" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:72 +msgid "Tags (see the popup help for more information)" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:69 -msgid "Color" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:74 +msgid "You can enter more than one tag per box, separated by commas. The comparison ignores letter case.
A tag value can be a regular expression. Check the box to turn them on. When using regular expressions, note that the wizard puts anchors (^ and $) around the expression, so you must ensure your expression matches from the beginning to the end of the tag.
Regular expression examples:" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:82 +msgid "

  • .* matches any tag. No empty tags are checked, so you don't need to worry about empty strings
  • A.* matches any tag beginning with A
  • .*mystery.* matches any tag containing the word \"mystery\"
  • " +msgstr "" + +#: +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:89 +msgid "is RE" +msgstr "" + +#: +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:91 +msgid "Check this box if the tag box contains regular expressions" +msgstr "" + +#: +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:94 +msgid "Color if tag found" +msgstr "" + +#: +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:96 +msgid "At least one of the two color boxes must have a value. Leave one color box empty if you want the template to use the next line in this wizard. If both boxes are filled in, the rest of the lines in this wizard will be ignored." +msgstr "" + +#: +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:101 +msgid "Color if tag not found" +msgstr "" + +#: +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:103 +msgid "This box is usually filled in only on the last test. If it is filled in before the last test, then the color for tag found box must be empty or all the rest of the tests will be ignored." +msgstr "" + +#: +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:183 msgid "Invalid color" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:184 msgid "The color {0} is not valid" msgstr "" @@ -8623,7 +8687,7 @@ msgid "&Add feed" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:286 -msgid "For help with writing advanced news recipes, please visit User Recipes" +msgid "For help with writing advanced news recipes, please visit User Recipes" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:287 @@ -8719,7 +8783,7 @@ msgstr "" msgid "" "
    \n" "

    Set a regular expression pattern to use when trying to guess ebook metadata from filenames.

    \n" -"

    A tutorial on using regular expressions is available.

    \n" +"

    A tutorial on using regular expressions is available.

    \n" "

    Use the Test functionality below to test your regular expression on a few sample filenames (remember to include the file extension). The group names for the various metadata entries are documented in tooltips.

    " msgstr "" @@ -8941,7 +9005,7 @@ msgid "Show books in the main memory of the device" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:72 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1023 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1024 msgid "Card A" msgstr "" @@ -8950,7 +9014,7 @@ msgid "Show books in storage card A" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:74 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1025 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1026 msgid "Card B" msgstr "" @@ -8990,7 +9054,7 @@ msgstr "" msgid "Copy current search text (instead of search name)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:373 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:388 msgid "Y" msgstr "" @@ -9008,75 +9072,75 @@ msgstr "" msgid "Modified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:760 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1317 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:766 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1323 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:797 msgid "The lookup/search name is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:766 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1319 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:772 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1325 msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1016 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1022 msgid "In Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1020 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1026 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:311 msgid "Size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1297 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1303 msgid "Marked for deletion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1300 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1306 msgid "Double click to edit me

    " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:159 msgid "Hide column %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:164 msgid "Sort on %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:165 msgid "Ascending" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 msgid "Descending" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:180 msgid "Change text alignment for %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:181 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:182 msgid "Left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:181 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:182 msgid "Right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:183 msgid "Center" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202 msgid "Show column" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:214 msgid "Restore default layout" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:855 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:858 msgid "Dropping onto a device is not supported. First add the book to the calibre library." msgstr "" @@ -9995,7 +10059,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:41 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:66 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:73 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:156 msgid "Yes/No" msgstr "" @@ -10027,7 +10091,7 @@ msgstr "" #: #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:65 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:155 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:27 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:124 @@ -10071,117 +10135,127 @@ msgid "Selected column is not a user-defined column" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:157 msgid "My Tags" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:158 msgid "My Series" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:159 msgid "My Rating" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:160 msgid "People" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:185 -msgid "No lookup name was provided" -msgstr "" - -#: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:189 -msgid "The lookup name must contain only lower case letters, digits and underscores, and start with a letter" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:187 +msgid "Examples: The format {0:0>4d} gives a 4-digit number with leading zeros. The format {0:d} days prints the number then the word \"days\"" msgstr "" #: #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:192 +msgid "Examples: The format {0:.1f} gives a floating point number with 1 digit after the decimal point. The format Price: $ {0:,.2f} prints \"Price $ \" then displays the number with 2 digits after the decimal point and thousands separated by commas." +msgstr "" + +#: +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:201 +msgid "No lookup name was provided" +msgstr "" + +#: +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:205 +msgid "The lookup name must contain only lower case letters, digits and underscores, and start with a letter" +msgstr "" + +#: +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:208 msgid "Lookup names cannot end with _index, because these names are reserved for the index of a series column." msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:218 msgid "No column heading was provided" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:228 msgid "The lookup name %s is already used" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:240 msgid "The heading %s is already used" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:251 msgid "You must enter a template for composite columns" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:244 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:260 msgid "You must enter at least one value for enumeration columns" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:264 msgid "You cannot provide the empty value, as it is included by default" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:252 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:268 msgid "The value \"{0}\" is in the list more than once" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:260 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:276 msgid "The colors box must be empty or contain the same number of items as the value box" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:265 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:281 msgid "The color {0} is unknown" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:217 msgid "&Lookup name" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:218 msgid "Column &heading" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:219 msgid "Used for searching the column. Must contain only digits and lower case letters." msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:220 msgid "Column heading in the library view and category name in the tag browser" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:221 msgid "&Column type" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:222 msgid "What kind of information will be kept in the column." msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:207 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:223 msgid "" "Show check marks in the GUI. Values of 'yes', 'checked', and 'true'\n" "will show a green check. Values of 'no', 'unchecked', and 'false' will show a red X.\n" @@ -10189,22 +10263,22 @@ msgid "" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:226 msgid "Show checkmarks" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:227 msgid "Check this box if this column contains names, like the authors column." msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:228 msgid "Contains names" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:229 msgid "" "

    Date format. Use 1-4 'd's for day, 1-4 'M's for month, and 2 or 4 'y's for year.

    \n" "

    For example:\n" @@ -10215,68 +10289,86 @@ msgid "" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:235 msgid "Use MMM yyyy for month + year, yyyy for year only" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:236 msgid "Default: dd MMM yyyy." msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:237 +msgid "" +"

    The format specifier must begin with {0:\n" +"and end with } You can have text before and after the format specifier.\n" +" " +msgstr "" + +#: +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:240 +msgid "

    Default: Not formatted. For format language details see the python documentation" +msgstr "" + +#: +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:241 msgid "Format for &dates" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:242 +msgid "Format for &numbers" +msgstr "" + +#: +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:243 msgid "&Template" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:244 msgid "Field template. Uses the same syntax as save templates." msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:245 msgid "Similar to save templates. For example, {title} {isbn}" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:225 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:246 msgid "Default: (nothing)" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:226 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:247 msgid "&Sort/search column by" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:248 msgid "How this column should handled in the GUI when sorting and searching" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:249 msgid "If checked, this column will appear in the tags browser as a category" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:250 msgid "Show in tags browser" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:230 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:256 msgid "Values" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:231 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:252 msgid "" "A comma-separated list of permitted values. The empty value is always\n" "included, and is the default. For example, the list 'one,two,three' has\n" @@ -10284,19 +10376,19 @@ msgid "" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:234 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:255 msgid "The empty string is always the first value" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:236 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:257 msgid "" "A list of color names to use when displaying an item. The\n" "list must be empty or contain a color for each value." msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:238 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:259 msgid "Colors" msgstr "" @@ -10418,7 +10510,7 @@ msgid "Always" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:132 -msgid "Automatic" +msgid "If there is enough room" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:133 @@ -10438,7 +10530,7 @@ msgid "Partitioned" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:163 -msgid "Here you can specify coloring rules for columns shown in the library view. Choose the column you wish to color, then supply a template that specifies the color to use based on the values in the column. There is a tutorial on using templates." +msgid "Here you can specify coloring rules for columns shown in the library view. Choose the column you wish to color, then supply a template that specifies the color to use based on the values in the column. There is a tutorial on using templates." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:170 @@ -10920,7 +11012,7 @@ msgid "Search for plugin" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:230 -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/search.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/search.py:321 msgid "No matches" msgstr "" @@ -11561,7 +11653,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:95 #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:279 -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/chooser_widget_ui.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/chooser_widget_ui.py:80 #: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/store_dialog_ui.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/search_ui.py:134 #: /home/kovid/work/calibre/src/calibre/gui2/store/search_ui.py:109 @@ -11646,6 +11738,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/chooser_widget_ui.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/search_ui.py:138 #: /home/kovid/work/calibre/src/calibre/gui2/store/search_ui.py:113 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:351 @@ -11718,54 +11811,87 @@ msgid "Open store in external web browswer" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:219 msgid "&Name:" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:221 msgid "&Description:" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:222 msgid "&Headquarters:" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:226 msgid "Enabled:" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:227 msgid "DRM:" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:218 -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:230 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:207 msgid "true" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:219 -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:231 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:234 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:208 msgid "false" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:232 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:206 +msgid "Affiliate:" +msgstr "" + +#: +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:235 msgid "Nam&e/Description ..." msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/chooser_widget_ui.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/chooser_widget_ui.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/search_ui.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/store/search_ui.py:108 msgid "Query:" msgstr "" +#: +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/chooser_widget_ui.py:81 +msgid "Enable" +msgstr "" + +#: +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/chooser_widget_ui.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/search_ui.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search_ui.py:111 +msgid "All" +msgstr "" + +#: +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/chooser_widget_ui.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/search_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search_ui.py:112 +msgid "Invert" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 +msgid "Affiliate" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 msgid "Enabled" msgstr "" @@ -11779,33 +11905,44 @@ msgid "No DRM" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:108 -msgid "

    This store is currently diabled and cannot be used in other parts of calibre.

    " +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:129 +msgid "This store is currently diabled and cannot be used in other parts of calibre." msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:110 -msgid "

    This store is currently enabled and can be used in other parts of calibre.

    " +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:131 +msgid "This store is currently enabled and can be used in other parts of calibre." msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:115 -msgid "

    This store only distributes ebooks with DRM.

    " +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:136 +msgid "This store only distributes ebooks with DRM." msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:117 -msgid "

    This store distributes ebooks with DRM. It may have some titles without DRM, but you will need to check on a per title basis.

    " +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:138 +msgid "This store distributes ebooks with DRM. It may have some titles without DRM, but you will need to check on a per title basis." msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:119 -msgid "

    This store is headquartered in %s. This is a good indication of what market the store caters to. However, this does not necessarily mean that the store is limited to that market only.

    " +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:140 +msgid "This store is headquartered in %s. This is a good indication of what market the store caters to. However, this does not necessarily mean that the store is limited to that market only." msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:121 -msgid "

    This store distributes ebooks in the following formats: %s

    " +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:203 +msgid "Buying from this store supports the calibre developer: %s." +msgstr "" + +#: +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:145 +msgid "This store distributes ebooks in the following formats: %s" +msgstr "" + +#: +#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/results_view.py:47 +msgid "Configure..." msgstr "" #: @@ -11898,6 +12035,17 @@ msgstr "" msgid "Not Available" msgstr "" +#: +#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/adv_search_builder_ui.py:179 +msgid "See the User Manual for more help" +msgstr "" + +#: +#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/adv_search_builder_ui.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:209 +msgid "Titl&e/Author/Price ..." +msgstr "" + #: #: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/cache_progress_dialog_ui.py:51 msgid "Updating book cache" @@ -11955,13 +12103,12 @@ msgid "Search:" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:202 msgid "&Price:" msgstr "" -#: -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:196 -msgid "Titl&e/Author/Price ..." +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:36 +msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:36 @@ -11972,31 +12119,35 @@ msgstr "" msgid "Price" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:191 msgid "Detected price as: %s. Check with the store before making a purchase to verify this price is correct. This price often does not include promotions the store may be running." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:183 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:194 msgid "This book as been detected as having DRM restrictions. This book may not work with your reader and you will have limitations placed upon you as to what you can do with this book. Check with the store before making any purchases to ensure you can actually read this book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:196 msgid "This book has been detected as being DRM Free. You should be able to use this book on any device provided it is in a format calibre supports for conversion. However, before making a purchase double check the DRM status with the store. The store may not be disclosing the use of DRM." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:198 msgid "The DRM status of this book could not be determined. There is a very high likelihood that this book is actually DRM restricted." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/search.py:252 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/search.py:105 +msgid "Buying from this store supports the calibre developer: %s

    " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/search.py:261 msgid "Customize get books search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/search.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/search.py:271 msgid "Configure search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/search.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/store/search/search.py:321 msgid "Couldn't find any books matching your query." msgstr "" @@ -12005,16 +12156,6 @@ msgstr "" msgid "Get Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/search_ui.py:136 -#: /home/kovid/work/calibre/src/calibre/gui2/store/search_ui.py:111 -msgid "All" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/store/search/search_ui.py:137 -#: /home/kovid/work/calibre/src/calibre/gui2/store/search_ui.py:112 -msgid "Invert" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/store/search/search_ui.py:140 msgid "Open a selected book in the system's web browser" msgstr "" @@ -12381,15 +12522,19 @@ msgstr "" msgid "%s has been updated to version %s. See the new features." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/update.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/update.py:55 +msgid "Update only if one of the new features or bug fixes is important to you. If the current version works well for you, do not update." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/update.py:60 msgid "Update available!" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/update.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/update.py:65 msgid "Show this notification for future updates" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/update.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/update.py:70 msgid "&Get update" msgstr "" @@ -12960,7 +13105,7 @@ msgid "

    Demo videos

    Videos demonstrating the various features of calibre msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:51 -msgid "

    User Manual

    A User Manual is also available online." +msgid "

    User Manual

    A User Manual is also available online." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:49 @@ -13166,63 +13311,63 @@ msgid "Turn on the &content server" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/caches.py:161 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:562 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:576 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:586 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:567 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:581 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:591 msgid "checked" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/caches.py:161 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:562 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:576 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:586 -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:214 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:567 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:581 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:591 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:216 msgid "yes" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/caches.py:163 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:561 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:573 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:583 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:566 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:578 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:588 msgid "unchecked" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/caches.py:163 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:561 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:573 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:583 -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:214 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:566 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:578 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:588 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:216 msgid "no" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:356 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:361 msgid "today" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:359 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:364 msgid "yesterday" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:362 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:367 msgid "thismonth" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:365 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:366 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:370 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:371 msgid "daysago" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:563 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:580 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:568 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:585 msgid "blank" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:563 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:580 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:568 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:585 msgid "empty" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:564 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:569 msgid "Invalid boolean query \"{0}\"" msgstr "" @@ -13980,19 +14125,19 @@ msgstr "" msgid "%sAverage rating is %3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1021 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1022 msgid "Main" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3109 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3110 msgid "

    Migrating old database to ebook library in %s

    " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3138 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3139 msgid "Copying %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3155 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3156 msgid "Compacting database" msgstr "" @@ -14117,8 +14262,8 @@ msgstr "" msgid "Replace whitespace with underscores." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:370 -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:398 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:372 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:400 msgid "Requested formats not available" msgstr "" @@ -14447,35 +14592,35 @@ msgstr "" msgid "syntax error - program ends before EOF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:101 -msgid "unknown id " +#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:103 +msgid "Unknown identifier " msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:107 +#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:110 msgid "unknown function {0}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:126 +#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:129 msgid "missing closing parenthesis" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:145 +#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:148 msgid "expression is not function or constant" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:179 +#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:182 msgid "format: type {0} requires an integer value, got {1}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:185 +#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:188 msgid "format: type {0} requires a decimal (float) value, got {1}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:296 +#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:299 msgid "%s: unknown function" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:343 +#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:348 msgid "No such variable " msgstr "" @@ -14483,167 +14628,171 @@ msgstr "" msgid "No documentation provided" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:79 -msgid "Exception " -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:97 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:90 msgid "strcmp(x, y, lt, eq, gt) -- does a case-insensitive comparison of x and y as strings. Returns lt if x < y. Returns eq if x == y. Otherwise returns gt." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:112 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:105 msgid "cmp(x, y, lt, eq, gt) -- compares x and y after converting both to numbers. Returns lt if x < y. Returns eq if x == y. Otherwise returns gt." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:127 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:120 msgid "strcat(a, b, ...) -- can take any number of arguments. Returns a string formed by concatenating all the arguments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:140 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:133 msgid "add(x, y) -- returns x + y. Throws an exception if either x or y are not numbers." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:150 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:143 msgid "subtract(x, y) -- returns x - y. Throws an exception if either x or y are not numbers." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:160 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:153 msgid "multiply(x, y) -- returns x * y. Throws an exception if either x or y are not numbers." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:170 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:163 msgid "divide(x, y) -- returns x / y. Throws an exception if either x or y are not numbers." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:180 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:173 msgid "template(x) -- evaluates x as a template. The evaluation is done in its own context, meaning that variables are not shared between the caller and the template evaluation. Because the { and } characters are special, you must use [[ for the { character and ]] for the } character; they are converted automatically. For example, template('[[title_sort]]') will evaluate the template {title_sort} and return its value." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:195 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:188 msgid "eval(template) -- evaluates the template, passing the local variables (those 'assign'ed to) instead of the book metadata. This permits using the template processor to construct complex results from local variables." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:208 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:201 msgid "assign(id, val) -- assigns val to id, then returns val. id must be an identifier, not an expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:218 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:211 msgid "print(a, b, ...) -- prints the arguments to standard output. Unless you start calibre from the command line (calibre-debug -g), the output will go to a black hole." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:229 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:222 msgid "field(name) -- returns the metadata field named by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:237 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:230 msgid "raw_field(name) -- returns the metadata field named by name without applying any formatting." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:246 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:239 msgid "substr(str, start, end) -- returns the start'th through the end'th characters of str. The first character in str is the zero'th character. If end is negative, then it indicates that many characters counting from the right. If end is zero, then it indicates the last character. For example, substr('12345', 1, 0) returns '2345', and substr('12345', 1, -1) returns '234'." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:259 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:252 msgid "lookup(val, pattern, field, pattern, field, ..., else_field) -- like switch, except the arguments are field (metadata) names, not text. The value of the appropriate field will be fetched and used. Note that because composite columns are fields, you can use this function in one composite field to use the value of some other composite field. This is extremely useful when constructing variable save paths" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:274 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:267 msgid "lookup requires either 2 or an odd number of arguments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:286 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:279 msgid "test(val, text if not empty, text if empty) -- return `text if not empty` if the field is not empty, otherwise return `text if empty`" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:298 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:291 msgid "contains(val, pattern, text if match, text if not match) -- checks if field contains matches for the regular expression `pattern`. Returns `text if match` if matches are found, otherwise it returns `text if no match`" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:313 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:306 msgid "switch(val, pattern, value, pattern, value, ..., else_value) -- for each `pattern, value` pair, checks if the field matches the regular expression `pattern` and if so, returns that `value`. If no pattern matches, then else_value is returned. You can have as many `pattern, value` pairs as you want" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:321 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:314 msgid "switch requires an odd number of arguments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:333 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:326 msgid "in_list(val, separator, pattern, found_val, not_found_val) -- treat val as a list of items separated by separator, comparing the pattern against each value in the list. If the pattern matches a value, return found_val, otherwise return not_found_val." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:349 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:342 +msgid "str_in_list(val, separator, string, found_val, not_found_val) -- treat val as a list of items separated by separator, comparing the string against each value in the list. If the string matches a value, return found_val, otherwise return not_found_val. If the string contains separators, then it is also treated as a list and each value is checked." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:361 msgid "re(val, pattern, replacement) -- return the field after applying the regular expression. All instances of `pattern` are replaced with `replacement`. As in all of calibre, these are python-compatible regular expressions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:360 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:372 msgid "ifempty(val, text if empty) -- return val if val is not empty, otherwise return `text if empty`" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:372 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:384 msgid "shorten(val, left chars, middle text, right chars) -- Return a shortened version of the field, consisting of `left chars` characters from the beginning of the field, followed by `middle text`, followed by `right chars` characters from the end of the string. `Left chars` and `right chars` must be integers. For example, assume the title of the book is `Ancient English Laws in the Times of Ivanhoe`, and you want it to fit in a space of at most 15 characters. If you use {title:shorten(9,-,5)}, the result will be `Ancient E-nhoe`. If the field's length is less than left chars + right chars + the length of `middle text`, then the field will be used intact. For example, the title `The Dome` would not be changed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:397 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:409 msgid "count(val, separator) -- interprets the value as a list of items separated by `separator`, returning the number of items in the list. Most lists use a comma as the separator, but authors uses an ampersand. Examples: {tags:count(,)}, {authors:count(&)}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:408 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:420 msgid "list_item(val, index, separator) -- interpret the value as a list of items separated by `separator`, returning the `index`th item. The first item is number zero. The last item can be returned using `list_item(-1,separator)`. If the item is not in the list, then the empty value is returned. The separator has the same meaning as in the count function." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:428 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:440 msgid "select(val, key) -- interpret the value as a comma-separated list of items, with the items being \"id:value\". Find the pair with theid equal to key, and return the corresponding value." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:445 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:457 msgid "sublist(val, start_index, end_index, separator) -- interpret the value as a list of items separated by `separator`, returning a new list made from the `start_index`th to the `end_index`th item. The first item is number zero. If an index is negative, then it counts from the end of the list. As a special case, an end_index of zero is assumed to be the length of the list. Examples using basic template mode and assuming that the tags column (which is comma-separated) contains \"A, B, C\": {tags:sublist(0,1,\\,)} returns \"A\". {tags:sublist(-1,0,\\,)} returns \"C\". {tags:sublist(0,-1,\\,)} returns \"A, B\"." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:474 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:486 msgid "subitems(val, start_index, end_index) -- This function is used to break apart lists of items such as genres. It interprets the value as a comma-separated list of items, where each item is a period-separated list. Returns a new list made by first finding all the period-separated items, then for each such item extracting the start_index`th to the `end_index`th components, then combining the results back together. The first component in a period-separated list has an index of zero. If an index is negative, then it counts from the end of the list. As a special case, an end_index of zero is assumed to be the length of the list. Example using basic template mode and assuming a #genre value of \"A.B.C\": {#genre:subitems(0,1)} returns \"A\". {#genre:subitems(0,2)} returns \"A.B\". {#genre:subitems(1,0)} returns \"B.C\". Assuming a #genre value of \"A.B.C, D.E.F\", {#genre:subitems(0,1)} returns \"A, D\". {#genre:subitems(0,2)} returns \"A.B, D.E\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:511 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:523 msgid "format_date(val, format_string) -- format the value, which must be a date field, using the format_string, returning a string. The formatting codes are: d : the day as number without a leading zero (1 to 31) dd : the day as number with a leading zero (01 to 31) ddd : the abbreviated localized day name (e.g. \"Mon\" to \"Sun\"). dddd : the long localized day name (e.g. \"Monday\" to \"Sunday\"). M : the month as number without a leading zero (1 to 12). MM : the month as number with a leading zero (01 to 12) MMM : the abbreviated localized month name (e.g. \"Jan\" to \"Dec\"). MMMM : the long localized month name (e.g. \"January\" to \"December\"). yy : the year as two digit number (00 to 99). yyyy : the year as four digit number. iso : the date with time and timezone. Must be the only format present" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:539 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:551 msgid "uppercase(val) -- return value of the field in upper case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:547 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:559 msgid "lowercase(val) -- return value of the field in lower case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:555 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:567 msgid "titlecase(val) -- return value of the field in title case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:563 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:575 msgid "capitalize(val) -- return value of the field capitalized" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:571 -msgid "booksize() -- return value of the field capitalized" +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:583 +msgid "booksize() -- return value of the size field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:584 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:596 +msgid "ondevice() -- return Yes if ondevice is set, otherwise return the empty string" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:607 msgid "first_non_empty(value, value, ...) -- returns the first value that is not empty. If all values are empty, then the empty value is returned.You can have as many values as you want." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:600 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:623 msgid "and(value, value, ...) -- returns the string \"1\" if all values are not empty, otherwise returns the empty string. This function works well with test or first_non_empty. You can have as many values as you want." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:616 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:639 msgid "or(value, value, ...) -- returns the string \"1\" if any value is not empty, otherwise returns the empty string. This function works well with test or first_non_empty. You can have as many values as you want." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:632 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:655 msgid "not(value) -- returns the string \"1\" if the value is empty, otherwise returns the empty string. This function works well with test or first_non_empty. You can have as many values as you want." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:648 +#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:671 msgid "merge_lists(list1, list2, separator) -- return a list made by merging the items in list1 and list2, removing duplicate items using a case-insensitive compare. If items differ in case, the one in list1 is used. The items in list1 and list2 are separated by separator, as are the items in the returned list." msgstr "" @@ -14663,147 +14812,147 @@ msgstr "" msgid "Working..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:95 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:98 msgid "Brazilian Portuguese" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:96 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:99 msgid "English (UK)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:97 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:100 msgid "Simplified Chinese" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:98 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:101 msgid "Chinese (HK)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:99 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:102 msgid "Traditional Chinese" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:100 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:103 msgid "English" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:101 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:104 msgid "English (Australia)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:102 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:105 msgid "English (New Zealand)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:103 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:106 msgid "English (Canada)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:104 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:107 msgid "English (India)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:105 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:108 msgid "English (Thailand)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:106 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:109 msgid "English (Cyprus)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:107 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:110 msgid "English (Czechoslovakia)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:108 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:111 msgid "English (Pakistan)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:109 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:112 msgid "English (Croatia)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:110 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:113 msgid "English (Indonesia)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:111 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:114 msgid "English (Israel)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:112 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:115 msgid "English (Singapore)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:113 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:116 msgid "English (Yemen)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:114 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:117 msgid "English (Ireland)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:115 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:118 msgid "English (China)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:116 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:119 msgid "Spanish (Paraguay)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:117 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:120 msgid "Spanish (Uruguay)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:118 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:121 msgid "Spanish (Argentina)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:119 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:122 msgid "Spanish (Mexico)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:120 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:123 msgid "Spanish (Cuba)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:121 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:124 msgid "Spanish (Chile)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:122 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:125 msgid "Spanish (Ecuador)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:123 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:126 msgid "Spanish (Honduras)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:124 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:127 msgid "Spanish (Venezuela)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:125 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:128 msgid "Spanish (Bolivia)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:126 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:129 msgid "Spanish (Nicaragua)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:127 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:130 msgid "German (AT)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:128 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:131 msgid "French (BE)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:129 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:132 msgid "Dutch (NL)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:130 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:133 msgid "Dutch (BE)" msgstr "" From c319d4f6c567d418a881280ed417a71794011754 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 29 May 2011 22:52:36 -0600 Subject: [PATCH 2/2] Alt om Herning and Version2.dk by Rasmus Lauritsen --- recipes/alt_om_herning.recipe | 43 +++++++++++++++++++++ recipes/version2.recipe | 64 +++++++++++++++++++++++++++++++ resources/template-functions.json | 14 ++++--- 3 files changed, 115 insertions(+), 6 deletions(-) create mode 100644 recipes/alt_om_herning.recipe create mode 100644 recipes/version2.recipe diff --git a/recipes/alt_om_herning.recipe b/recipes/alt_om_herning.recipe new file mode 100644 index 0000000000..c60d142a85 --- /dev/null +++ b/recipes/alt_om_herning.recipe @@ -0,0 +1,43 @@ +__license__ = 'GPL v3' +__copyright__ = '2011, Rasmus Lauritsen ' +''' +aoh.dk +''' + +from calibre.web.feeds.news import BasicNewsRecipe + +class aoh_dk(BasicNewsRecipe): + title = 'Alt om Herning' + __author__ = 'Rasmus Lauritsen' + description = 'Nyheder fra Herning om omegn' + publisher = 'Mediehuset Herning Folkeblad' + category = 'news, local, Denmark' + oldest_article = 14 + max_articles_per_feed = 50 + no_stylesheets = True + delay = 1 + encoding = 'utf8' + use_embedded_content = False + language = 'da' + extra_css = """ body{font-family: Verdana,Arial,sans-serif } + img{margin-bottom: 0.4em} + .txtContent,.stamp{font-size: small} + """ + + conversion_options = { + 'comment' : description + , 'tags' : category + , 'publisher' : publisher + , 'language' : language + } + + feeds = [(u'All news', u'http://aoh.dk/rss.xml')] + + keep_only_tags = [ + dict(name='h1') + ,dict(name='span', attrs={'class':['frontpage_body']}) + ] + + remove_tags = [ + dict(name=['object','link']) + ] diff --git a/recipes/version2.recipe b/recipes/version2.recipe new file mode 100644 index 0000000000..7dc257246a --- /dev/null +++ b/recipes/version2.recipe @@ -0,0 +1,64 @@ +import re + +__license__ = 'GPL v3' +__copyright__ = '2011, Rasmus Lauritsen ' +''' +version2.dk +''' + +from calibre.web.feeds.news import BasicNewsRecipe + +class version2(BasicNewsRecipe): + title = 'Version2.dk' + __author__ = 'Rasmus Lauritsen' + description = 'IT News' + publisher = 'version2.dk' + category = 'news, IT, hardware, software, Denmark' + oldest_article = 14 + max_articles_per_feed = 50 + no_stylesheets = True + remove_empty_feeds = True + use_embedded_content = False + encoding = 'iso-8859-1' + language = 'da' + + extra_css = """ + body {font-family: "Verdana",Times,serif} + .articleauthor{color: #9F9F9F; + font-family: Arial, sans-serif; + font-size: small; + text-transform: uppercase} + .rubric,.dd,h6#credit{color: #CD0021; + font-family: Arial, sans-serif; + font-size: small; + text-transform: uppercase} + .descender:first-letter{display: inline; font-size: xx-large; font-weight: bold} + .dd,h6#credit{color: gray} + .c{display: block} + .caption,h2#articleintro{font-style: italic} + .caption{font-size: small} + """ + + preprocess_regexps = [ (re.compile(r']*>'),lambda match: ''), + (re.compile(r']*article-link-id.*?'), lambda match: '')] + + keep_only_tags = [dict(name='div', attrs={'class':'article'})] + + remove_tags = [ + dict(name='p',attrs={'class':'meta links'}), + dict(name='div',attrs={'class':'float-right'}), + dict(name='span',attrs={'class':'article-link-id'}) + ] + + feeds = [ + (u'Seneste nyheder' , u'http://www.version2.dk/feeds/nyheder') + ,(u'Forretningssoftware' , u'http://www.version2.dk/feeds/forretningssoftware') + ,(u'Internet & styresystemer' , u'http://www.version2.dk/feeds/styresystemer') + ,(u'It-arkitektur' , u'http://www.version2.dk/feeds/it-arkitektur') + ,(u'It-styring & outsourcing' , u'http://www.version2.dk/feeds/it-styring') + ,(u'Job & karriere' , u'http://www.version2.dk/feeds/karriere') + ,(u'Mobil it & tele' , u'http://www.version2.dk/feeds/tele') + ,(u'Server/storage & netværk' , u'http://www.version2.dk/feeds/server-storage') + ,(u'Sikkerhed' , u'http://www.version2.dk/feeds/sikkerhed') + ,(u'Softwareudvikling' , u'http://www.version2.dk/feeds/softwareudvikling') + ] diff --git a/resources/template-functions.json b/resources/template-functions.json index 9fdc1782ea..606b102d41 100644 --- a/resources/template-functions.json +++ b/resources/template-functions.json @@ -1,26 +1,27 @@ { "and": "def evaluate(self, formatter, kwargs, mi, locals, *args):\n i = 0\n while i < len(args):\n if not args[i]:\n return ''\n i += 1\n return '1'\n", - "contains": "def evaluate(self, formatter, kwargs, mi, locals,\n val, test, value_if_present, value_if_not):\n if re.search(test, val):\n return value_if_present\n else:\n return value_if_not\n", + "contains": "def evaluate(self, formatter, kwargs, mi, locals,\n val, test, value_if_present, value_if_not):\n if re.search(test, val, flags=re.I):\n return value_if_present\n else:\n return value_if_not\n", "divide": "def evaluate(self, formatter, kwargs, mi, locals, x, y):\n x = float(x if x else 0)\n y = float(y if y else 0)\n return unicode(x / y)\n", "uppercase": "def evaluate(self, formatter, kwargs, mi, locals, val):\n return val.upper()\n", "strcat": "def evaluate(self, formatter, kwargs, mi, locals, *args):\n i = 0\n res = ''\n for i in range(0, len(args)):\n res += args[i]\n return res\n", - "in_list": "def evaluate(self, formatter, kwargs, mi, locals, val, sep, pat, fv, nfv):\n l = [v.strip() for v in val.split(sep) if v.strip()]\n for v in l:\n if re.search(pat, v):\n return fv\n return nfv\n", + "in_list": "def evaluate(self, formatter, kwargs, mi, locals, val, sep, pat, fv, nfv):\n l = [v.strip() for v in val.split(sep) if v.strip()]\n if l:\n for v in l:\n if re.search(pat, v, flags=re.I):\n return fv\n return nfv\n", "multiply": "def evaluate(self, formatter, kwargs, mi, locals, x, y):\n x = float(x if x else 0)\n y = float(y if y else 0)\n return unicode(x * y)\n", "ifempty": "def evaluate(self, formatter, kwargs, mi, locals, val, value_if_empty):\n if val:\n return val\n else:\n return value_if_empty\n", "booksize": "def evaluate(self, formatter, kwargs, mi, locals):\n if mi.book_size is not None:\n try:\n return str(mi.book_size)\n except:\n pass\n return ''\n", "select": "def evaluate(self, formatter, kwargs, mi, locals, val, key):\n if not val:\n return ''\n vals = [v.strip() for v in val.split(',')]\n for v in vals:\n if v.startswith(key+':'):\n return v[len(key)+1:]\n return ''\n", "strcmp": "def evaluate(self, formatter, kwargs, mi, locals, x, y, lt, eq, gt):\n v = strcmp(x, y)\n if v < 0:\n return lt\n if v == 0:\n return eq\n return gt\n", "first_non_empty": "def evaluate(self, formatter, kwargs, mi, locals, *args):\n i = 0\n while i < len(args):\n if args[i]:\n return args[i]\n i += 1\n return ''\n", - "re": "def evaluate(self, formatter, kwargs, mi, locals, val, pattern, replacement):\n return re.sub(pattern, replacement, val)\n", + "re": "def evaluate(self, formatter, kwargs, mi, locals, val, pattern, replacement):\n return re.sub(pattern, replacement, val, flags=re.I)\n", "subtract": "def evaluate(self, formatter, kwargs, mi, locals, x, y):\n x = float(x if x else 0)\n y = float(y if y else 0)\n return unicode(x - y)\n", "list_item": "def evaluate(self, formatter, kwargs, mi, locals, val, index, sep):\n if not val:\n return ''\n index = int(index)\n val = val.split(sep)\n try:\n return val[index]\n except:\n return ''\n", "shorten": "def evaluate(self, formatter, kwargs, mi, locals,\n val, leading, center_string, trailing):\n l = max(0, int(leading))\n t = max(0, int(trailing))\n if len(val) > l + len(center_string) + t:\n return val[0:l] + center_string + ('' if t == 0 else val[-t:])\n else:\n return val\n", "field": "def evaluate(self, formatter, kwargs, mi, locals, name):\n return formatter.get_value(name, [], kwargs)\n", "add": "def evaluate(self, formatter, kwargs, mi, locals, x, y):\n x = float(x if x else 0)\n y = float(y if y else 0)\n return unicode(x + y)\n", - "lookup": "def evaluate(self, formatter, kwargs, mi, locals, val, *args):\n if len(args) == 2: # here for backwards compatibility\n if val:\n return formatter.vformat('{'+args[0].strip()+'}', [], kwargs)\n else:\n return formatter.vformat('{'+args[1].strip()+'}', [], kwargs)\n if (len(args) % 2) != 1:\n raise ValueError(_('lookup requires either 2 or an odd number of arguments'))\n i = 0\n while i < len(args):\n if i + 1 >= len(args):\n return formatter.vformat('{' + args[i].strip() + '}', [], kwargs)\n if re.search(args[i], val):\n return formatter.vformat('{'+args[i+1].strip() + '}', [], kwargs)\n i += 2\n", + "lookup": "def evaluate(self, formatter, kwargs, mi, locals, val, *args):\n if len(args) == 2: # here for backwards compatibility\n if val:\n return formatter.vformat('{'+args[0].strip()+'}', [], kwargs)\n else:\n return formatter.vformat('{'+args[1].strip()+'}', [], kwargs)\n if (len(args) % 2) != 1:\n raise ValueError(_('lookup requires either 2 or an odd number of arguments'))\n i = 0\n while i < len(args):\n if i + 1 >= len(args):\n return formatter.vformat('{' + args[i].strip() + '}', [], kwargs)\n if re.search(args[i], val, flags=re.I):\n return formatter.vformat('{'+args[i+1].strip() + '}', [], kwargs)\n i += 2\n", "template": "def evaluate(self, formatter, kwargs, mi, locals, template):\n template = template.replace('[[', '{').replace(']]', '}')\n return formatter.__class__().safe_format(template, kwargs, 'TEMPLATE', mi)\n", "print": "def evaluate(self, formatter, kwargs, mi, locals, *args):\n print args\n return None\n", "merge_lists": "def evaluate(self, formatter, kwargs, mi, locals, list1, list2, separator):\n l1 = [l.strip() for l in list1.split(separator) if l.strip()]\n l2 = [l.strip() for l in list2.split(separator) if l.strip()]\n lcl1 = set([icu_lower(l) for l in l1])\n res = []\n for i in l1:\n res.append(i)\n for i in l2:\n if icu_lower(i) not in lcl1:\n res.append(i)\n return ', '.join(sorted(res, key=sort_key))\n", + "str_in_list": "def evaluate(self, formatter, kwargs, mi, locals, val, sep, str, fv, nfv):\n l = [v.strip() for v in val.split(sep) if v.strip()]\n c = [v.strip() for v in str.split(sep) if v.strip()]\n if l:\n for v in l:\n for t in c:\n if strcmp(t, v) == 0:\n return fv\n return nfv\n", "titlecase": "def evaluate(self, formatter, kwargs, mi, locals, val):\n return titlecase(val)\n", "subitems": "def evaluate(self, formatter, kwargs, mi, locals, val, start_index, end_index):\n if not val:\n return ''\n si = int(start_index)\n ei = int(end_index)\n items = [v.strip() for v in val.split(',')]\n rv = set()\n for item in items:\n component = item.split('.')\n try:\n if ei == 0:\n rv.add('.'.join(component[si:]))\n else:\n rv.add('.'.join(component[si:ei]))\n except:\n pass\n return ', '.join(sorted(rv, key=sort_key))\n", "sublist": "def evaluate(self, formatter, kwargs, mi, locals, val, start_index, end_index, sep):\n if not val:\n return ''\n si = int(start_index)\n ei = int(end_index)\n val = val.split(sep)\n try:\n if ei == 0:\n return sep.join(val[si:])\n else:\n return sep.join(val[si:ei])\n except:\n return ''\n", @@ -32,9 +33,10 @@ "count": "def evaluate(self, formatter, kwargs, mi, locals, val, sep):\n return unicode(len(val.split(sep)))\n", "lowercase": "def evaluate(self, formatter, kwargs, mi, locals, val):\n return val.lower()\n", "substr": "def evaluate(self, formatter, kwargs, mi, locals, str_, start_, end_):\n return str_[int(start_): len(str_) if int(end_) == 0 else int(end_)]\n", - "assign": "def evaluate(self, formatter, kwargs, mi, locals, target, value):\n locals[target] = value\n return value\n", - "switch": "def evaluate(self, formatter, kwargs, mi, locals, val, *args):\n if (len(args) % 2) != 1:\n raise ValueError(_('switch requires an odd number of arguments'))\n i = 0\n while i < len(args):\n if i + 1 >= len(args):\n return args[i]\n if re.search(args[i], val):\n return args[i+1]\n i += 2\n", "or": "def evaluate(self, formatter, kwargs, mi, locals, *args):\n i = 0\n while i < len(args):\n if args[i]:\n return '1'\n i += 1\n return ''\n", + "switch": "def evaluate(self, formatter, kwargs, mi, locals, val, *args):\n if (len(args) % 2) != 1:\n raise ValueError(_('switch requires an odd number of arguments'))\n i = 0\n while i < len(args):\n if i + 1 >= len(args):\n return args[i]\n if re.search(args[i], val, flags=re.I):\n return args[i+1]\n i += 2\n", + "ondevice": "def evaluate(self, formatter, kwargs, mi, locals):\n if mi.ondevice_col:\n return _('Yes')\n return ''\n", + "assign": "def evaluate(self, formatter, kwargs, mi, locals, target, value):\n locals[target] = value\n return value\n", "raw_field": "def evaluate(self, formatter, kwargs, mi, locals, name):\n return unicode(getattr(mi, name, None))\n", "cmp": "def evaluate(self, formatter, kwargs, mi, locals, x, y, lt, eq, gt):\n x = float(x if x else 0)\n y = float(y if y else 0)\n if x < y:\n return lt\n if x == y:\n return eq\n return gt\n" } \ No newline at end of file