From 1df664673cb27e0739545f4e2b6c0e6a836746db Mon Sep 17 00:00:00 2001 From: Translators <> Date: Mon, 1 Feb 2010 04:45:08 +0000 Subject: [PATCH 001/164] Launchpad automatic translations update. --- src/calibre/translations/ar.po | 17 +- src/calibre/translations/ast.po | 6 +- src/calibre/translations/es.po | 6 +- src/calibre/translations/gl.po | 761 +-- src/calibre/translations/ko.po | 6 +- src/calibre/translations/lv.po | 4 +- src/calibre/translations/ms.po | 7860 +++++++++++++++++++++++++++++ src/calibre/translations/nb.po | 6 +- src/calibre/translations/nl.po | 8 +- src/calibre/translations/pl.po | 6 +- src/calibre/translations/ru.po | 184 +- src/calibre/translations/sq.po | 4 +- src/calibre/translations/sv.po | 6 +- src/calibre/translations/tr.po | 6 +- src/calibre/translations/zh_TW.po | 4 +- 15 files changed, 8425 insertions(+), 459 deletions(-) create mode 100644 src/calibre/translations/ms.po diff --git a/src/calibre/translations/ar.po b/src/calibre/translations/ar.po index 9cd812b9af..f882e24deb 100644 --- a/src/calibre/translations/ar.po +++ b/src/calibre/translations/ar.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-01-25 18:58+0000\n" -"PO-Revision-Date: 2010-01-27 06:24+0000\n" -"Last-Translator: meshari alnaim \n" +"PO-Revision-Date: 2010-01-31 21:41+0000\n" +"Last-Translator: Kovid Goyal \n" "Language-Team: Arabic \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-01-28 04:34+0000\n" +"X-Launchpad-Export-Date: 2010-02-01 04:43+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -403,7 +403,7 @@ msgid "" " Customize calibre by loading external plugins.\n" " " msgstr "" -" %خيارات البرنامج\n" +" %prog البرنامج\n" "\n" " المقدرة على التخصيص بتحميل الملحقات الخارجية .\n" " " @@ -436,7 +436,7 @@ msgstr "تعطيل الملحق المسمى" #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:13 msgid "Communicate with Android phones." -msgstr "" +msgstr "التواصل مع هواتف أندرويد ." #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:26 msgid "" @@ -624,11 +624,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:734 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:736 msgid "The reader has no storage card in this slot." -msgstr "" +msgstr "لا يوجد بطاقات تخزين في القارئ ." #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:738 msgid "Selected slot: %s is not supported." -msgstr "" +msgstr "الفتحة المختارة : %s ليست مدعومة ." #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:771 msgid "There is insufficient free space in main memory" @@ -711,6 +711,9 @@ msgid "" "\n" "%s" msgstr "" +"فشل في معالجة الصور : \n" +"\n" +"%s ." #: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:278 msgid "" diff --git a/src/calibre/translations/ast.po b/src/calibre/translations/ast.po index 12567467f5..9178b57886 100644 --- a/src/calibre/translations/ast.po +++ b/src/calibre/translations/ast.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-01-25 18:58+0000\n" -"PO-Revision-Date: 2010-01-27 22:39+0000\n" -"Last-Translator: Yagüe \n" +"PO-Revision-Date: 2010-01-31 21:37+0000\n" +"Last-Translator: Kovid Goyal \n" "Language-Team: Asturian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-01-29 04:51+0000\n" +"X-Launchpad-Export-Date: 2010-02-01 04:43+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 diff --git a/src/calibre/translations/es.po b/src/calibre/translations/es.po index b786e6cac0..230ea68f65 100644 --- a/src/calibre/translations/es.po +++ b/src/calibre/translations/es.po @@ -11,13 +11,13 @@ msgstr "" "Project-Id-Version: es\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-01-25 18:58+0000\n" -"PO-Revision-Date: 2010-01-27 20:31+0000\n" -"Last-Translator: Jellby \n" +"PO-Revision-Date: 2010-01-31 21:38+0000\n" +"Last-Translator: Kovid Goyal \n" "Language-Team: Spanish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-01-28 04:34+0000\n" +"X-Launchpad-Export-Date: 2010-02-01 04:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 diff --git a/src/calibre/translations/gl.po b/src/calibre/translations/gl.po index 487a3635c9..8a31627097 100644 --- a/src/calibre/translations/gl.po +++ b/src/calibre/translations/gl.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-01-25 18:58+0000\n" -"PO-Revision-Date: 2010-01-29 17:58+0000\n" +"PO-Revision-Date: 2010-01-31 21:42+0000\n" "Last-Translator: Miguel Anxo Bouzada \n" "Language-Team: Galician \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-01-30 04:38+0000\n" +"X-Launchpad-Export-Date: 2010-02-01 04:43+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -337,7 +337,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:213 msgid "Output profile" -msgstr "" +msgstr "Perfil de saída" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:217 msgid "" @@ -366,23 +366,23 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/customize/ui.py:31 msgid "Installed plugins" -msgstr "" +msgstr "Complementos instalados" #: /home/kovid/work/calibre/src/calibre/customize/ui.py:32 msgid "Mapping for filetype plugins" -msgstr "" +msgstr "Rastrexando os complementos por tipo de ficheiro" #: /home/kovid/work/calibre/src/calibre/customize/ui.py:33 msgid "Local plugin customization" -msgstr "" +msgstr "Personalización de complemento local" #: /home/kovid/work/calibre/src/calibre/customize/ui.py:34 msgid "Disabled plugins" -msgstr "" +msgstr "Complementos desactivados" #: /home/kovid/work/calibre/src/calibre/customize/ui.py:77 msgid "No valid plugin found in " -msgstr "" +msgstr "Non se acharon complementos válidos en " #: /home/kovid/work/calibre/src/calibre/customize/ui.py:263 msgid "Initialization of plugin %s failed with traceback:" @@ -412,15 +412,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/customize/ui.py:430 msgid "List all installed plugins" -msgstr "" +msgstr "Listar todos os complementos instalados" #: /home/kovid/work/calibre/src/calibre/customize/ui.py:432 msgid "Enable the named plugin" -msgstr "" +msgstr "Activar o complemento sinalado" #: /home/kovid/work/calibre/src/calibre/customize/ui.py:434 msgid "Disable the named plugin" -msgstr "" +msgstr "Desactivar o complemento sinalado" #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:13 msgid "Communicate with Android phones." @@ -482,11 +482,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/irexdr/driver.py:18 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:30 msgid "John Schember" -msgstr "" +msgstr "Nome Apelidos" #: /home/kovid/work/calibre/src/calibre/devices/interface.py:22 msgid "Device Interface" -msgstr "" +msgstr "Interface do Dispositivo" #: /home/kovid/work/calibre/src/calibre/devices/irexdr/driver.py:16 msgid "Communicate with the IRex Digital Reader 1000 eBook reader." @@ -565,19 +565,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:116 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:118 msgid "Transferring books to device..." -msgstr "" +msgstr "A transferir os libros ao dispositivo..." #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:174 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:181 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:145 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:162 msgid "Removing books from device..." -msgstr "" +msgstr "A eliminar os libros do dispositivo..." #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:209 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:177 msgid "Sending metadata to device..." -msgstr "" +msgstr "A enviar metadatos ao dispositivo..." #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:215 msgid "Communicate with the Sony PRS-600/700/900 eBook reader." @@ -593,7 +593,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:484 msgid "Unable to detect the %s disk drive." -msgstr "" +msgstr "Non se puido detectar a unidade de disco %s." #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:577 msgid "Could not find mount helper: %s." @@ -616,7 +616,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:738 msgid "Selected slot: %s is not supported." -msgstr "" +msgstr "A bahía %s seleccionada non está soportada." #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:771 msgid "There is insufficient free space in main memory" @@ -635,15 +635,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/database2.py:1072 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1452 msgid "News" -msgstr "" +msgstr "Noticias" #: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:12 msgid "Configure Device" -msgstr "" +msgstr "Configurar o Dispositivo" #: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:28 msgid "settings for device drivers" -msgstr "" +msgstr "Configuración para os controladores de dispositivo" #: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:30 msgid "Ordered list of formats the device will accept" @@ -665,7 +665,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:39 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:80 msgid "Extra customization" -msgstr "" +msgstr "Personalización adicional" #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:29 msgid "Communicate with an eBook reader." @@ -673,7 +673,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:37 msgid "Get device information..." -msgstr "" +msgstr "Obter información do dispositivo..." #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:133 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:141 @@ -687,11 +687,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:200 msgid "Rendered %s" -msgstr "" +msgstr "Renderizado %s" #: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:203 msgid "Failed %s" -msgstr "" +msgstr "Errou %s" #: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:260 msgid "" @@ -699,6 +699,9 @@ msgid "" "\n" "%s" msgstr "" +"Erro ao procesar o cómic:\n" +"\n" +"%s" #: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:278 msgid "" @@ -718,7 +721,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:287 msgid "Disable sharpening." -msgstr "" +msgstr "Desactivar a definición." #: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:289 msgid "" @@ -763,12 +766,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:312 msgid "Apply no processing to the image" -msgstr "" +msgstr "Non se aplica proceso ningún á imaxe" #: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:441 #: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:452 msgid "Page" -msgstr "" +msgstr "Páxina" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:19 msgid "" @@ -798,7 +801,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:97 msgid "INPUT OPTIONS" -msgstr "" +msgstr "OPCIÓNS DE ENTRADA" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:98 msgid "Options to control the processing of the input %s file" @@ -806,7 +809,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 msgid "OUTPUT OPTIONS" -msgstr "" +msgstr "OPCIÓNS DE SAÍDA" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:105 msgid "Options to control the processing of the output %s" @@ -837,11 +840,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:183 msgid "List builtin recipes" -msgstr "" +msgstr "Listar os agregadores predefinidos" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:252 msgid "Output saved to" -msgstr "" +msgstr "Saída gardada en" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:92 msgid "Level of verbosity. Specify multiple times for greater verbosity." @@ -1092,7 +1095,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:409 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:37 msgid "Set the title." -msgstr "" +msgstr "Definir o título." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:413 msgid "Set the authors. Multiple authors should be separated by ampersands." @@ -1109,17 +1112,17 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:426 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:51 msgid "Set the cover to the specified file." -msgstr "" +msgstr "Definir a capa do ficheiro especificado." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:430 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:53 msgid "Set the ebook description." -msgstr "" +msgstr "Definir a descrición do libro." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:434 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:55 msgid "Set the ebook publisher." -msgstr "" +msgstr "Definir o/a editor/a do libro." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:438 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:59 @@ -1139,7 +1142,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:450 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:65 msgid "Set the ISBN of the book." -msgstr "" +msgstr "Definir o ISBN do libro." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:454 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:67 @@ -1149,12 +1152,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:458 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:69 msgid "Set the book producer." -msgstr "" +msgstr "Definir o produtor do libro." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:462 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:71 msgid "Set the language." -msgstr "" +msgstr "Definir o idioma." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:562 msgid "Could not find an ebook inside the archive" @@ -1166,7 +1169,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:740 msgid "Converting input to HTML..." -msgstr "" +msgstr "A converter a entrada a HTML..." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:763 msgid "Running transforms on ebook..." @@ -1174,7 +1177,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:850 msgid "Creating" -msgstr "" +msgstr "A crear" #: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:57 msgid "" @@ -1210,7 +1213,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/rb/rbml.py:102 #: /home/kovid/work/calibre/src/calibre/ebooks/txt/txtml.py:77 msgid "Table of Contents:" -msgstr "" +msgstr "Índice de Contidos:" #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:32 msgid "Do not insert a Table of Contents at the beginning of the book." @@ -1261,7 +1264,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:322 msgid "\tParsing HTML..." -msgstr "" +msgstr "\tTratando o HTML..." #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:345 msgid "\tBaen file detected. Re-parsing..." @@ -1269,46 +1272,48 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:361 msgid "Written preprocessed HTML to " -msgstr "" +msgstr "A escribir o HTML preprocesado en " #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:379 msgid "Processing %s" -msgstr "" +msgstr "A procesar %s" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:393 msgid "\tConverting to BBeB..." -msgstr "" +msgstr "\tA converter para BBeB..." #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:539 #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:552 msgid "Could not parse file: %s" -msgstr "" +msgstr "Non se puido tratar o ficheiro: %s" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:544 msgid "%s is an empty file" -msgstr "" +msgstr "%s é un ficheiro baleiro" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:564 msgid "Failed to parse link %s %s" -msgstr "" +msgstr "Erro ao tratar a ligazón %s %s" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:608 msgid "Cannot add link %s to TOC" -msgstr "" +msgstr "Non se puido engadir a ligazón %a a TOC" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:957 msgid "Unable to process image %s. Error: %s" -msgstr "" +msgstr "Non se puido procesar a imaxe %s. Erro: %s" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1002 msgid "Unable to process interlaced PNG %s" -msgstr "" +msgstr "Non se puido procesar o PNG entrelazado %s" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1017 msgid "" "Could not process image: %s\n" "%s" msgstr "" +"Non se puido procesar a imaxe: %s\n" +"%s" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1772 msgid "" @@ -1320,6 +1325,8 @@ msgid "" "Bad table:\n" "%s" msgstr "" +"Táboa incorrecta:\n" +"%s" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1796 msgid "Table has cell that is too large" @@ -1327,15 +1334,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1862 msgid "Could not read cover image: %s" -msgstr "" +msgstr "Non se puido ler a imaxe da capa: %s" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1865 msgid "Cannot read from: %s" -msgstr "" +msgstr "Non se puido ler en: %s" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1994 msgid "Failed to process opf file" -msgstr "" +msgstr "Erro ao procesar o ficheiro opf" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:136 msgid "" @@ -1345,7 +1352,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:137 msgid "Output LRS file" -msgstr "" +msgstr "Ficheiro LRS de saída" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:139 msgid "Do not save embedded image and font files to disk" @@ -1353,19 +1360,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:158 msgid "Parsing LRF..." -msgstr "" +msgstr "A tratar o LRF..." #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:161 msgid "Creating XML..." -msgstr "" +msgstr "A crear o XML..." #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:163 msgid "LRS written to " -msgstr "" +msgstr "LRS gardado en " #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrs/convert_from.py:267 msgid "Could not read from thumbnail file:" -msgstr "" +msgstr "Non se puido ler o ficheiro da miniatura:" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrs/convert_from.py:287 msgid "" @@ -1375,12 +1382,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrs/convert_from.py:288 msgid "Path to output file" -msgstr "" +msgstr "Traxectoria do ficheiro de saída" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrs/convert_from.py:290 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:113 msgid "Verbose processing" -msgstr "" +msgstr "Procesado por petición" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrs/convert_from.py:292 msgid "Convert LRS to LRS, useful for debugging." @@ -1401,7 +1408,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:589 msgid "Set the book title" -msgstr "" +msgstr "Definir o título do libro" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:591 msgid "Set sort key for the title" @@ -1409,7 +1416,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:593 msgid "Set the author" -msgstr "" +msgstr "Definir o/a autor/a" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:595 msgid "Set sort key for the author" @@ -1430,23 +1437,23 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:607 msgid "Extract thumbnail from LRF file" -msgstr "" +msgstr "Extraer a miniatura do ficheiro LRF" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:608 msgid "Set the publisher" -msgstr "" +msgstr "Definir o/a editor/a" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:609 msgid "Set the book classification" -msgstr "" +msgstr "Definir a clasificación do libro" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:610 msgid "Set the book creator" -msgstr "" +msgstr "Definir o/a creador do libro" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:611 msgid "Set the book producer" -msgstr "" +msgstr "Definir o/a produtor/a do libro" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:613 msgid "" @@ -1456,7 +1463,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:615 msgid "Set book ID" -msgstr "" +msgstr "Definir o ID do libro" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:90 msgid "Enable autorotation of images that are wider than the screen width." @@ -1512,7 +1519,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:152 msgid "Comic" -msgstr "" +msgstr "Cómic" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:358 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:45 @@ -1523,7 +1530,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/library.py:399 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:1111 msgid "Title" -msgstr "" +msgstr "Título" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:57 @@ -1531,7 +1538,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/library.py:404 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:1112 msgid "Author(s)" -msgstr "" +msgstr "Autores/as" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:360 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:59 @@ -1551,7 +1558,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/library.py:360 #: /home/kovid/work/calibre/src/calibre/gui2/status.py:94 msgid "Comments" -msgstr "" +msgstr "Comentarios" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:370 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:170 @@ -1561,7 +1568,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/status.py:96 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 msgid "Tags" -msgstr "" +msgstr "Etiquetas" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:372 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:171 @@ -1573,30 +1580,30 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:373 msgid "Language" -msgstr "" +msgstr "Idioma" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:375 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:1054 msgid "Timestamp" -msgstr "" +msgstr "Marca temporal" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:377 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:61 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:167 msgid "Published" -msgstr "" +msgstr "Publicado" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:379 msgid "Rights" -msgstr "" +msgstr "Dereitos" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/amazon.py:78 msgid "EDITORIAL REVIEW" -msgstr "" +msgstr "SUMARIO DA EDITORIAL" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:19 msgid "options" -msgstr "" +msgstr "opcións" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:20 msgid "" @@ -1632,7 +1639,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:57 msgid "Set the book category." -msgstr "" +msgstr "Definir a categoría do libro." #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:74 msgid "Get the cover from the ebook and save it at as the specified file." @@ -1657,31 +1664,31 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:148 msgid "No file specified" -msgstr "" +msgstr "Non se especificou ficheiro ningún" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:163 msgid "Original metadata" -msgstr "" +msgstr "Metadatos orixinais" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:180 msgid "Changed metadata" -msgstr "" +msgstr "Metadatos modificados" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:192 msgid "OPF created in" -msgstr "" +msgstr "OPF creado en" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:198 msgid "Cover saved to" -msgstr "" +msgstr "Capa gardada en" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:200 msgid "No cover found" -msgstr "" +msgstr "Non se achou capa ningunha" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:34 msgid "Metadata download" -msgstr "" +msgstr "Descarga de metadatos" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:111 msgid "ratings" @@ -1689,15 +1696,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:111 msgid "tags" -msgstr "" +msgstr "etiquetas" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:112 msgid "description/reviews" -msgstr "" +msgstr "descrición/críticas" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:113 msgid "Download %s from %s" -msgstr "" +msgstr "Descargar %s desde %s" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:137 msgid "Downloads metadata from Google Books" @@ -1759,7 +1766,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:61 msgid " not found." -msgstr "" +msgstr " non se achou." #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:64 msgid "LibraryThing.com server error. Try again later." @@ -1776,7 +1783,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1083 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1328 msgid "Cover" -msgstr "" +msgstr "Capa" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:22 msgid "Modify images to meet Palm device size limitations." @@ -1799,26 +1806,26 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:37 msgid "Disable compression of the file contents." -msgstr "" +msgstr "Desactivar a compresión dos contidos do ficheiro." #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:102 msgid "All articles" -msgstr "" +msgstr "Todos os artigos" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1329 msgid "Title Page" -msgstr "" +msgstr "Páxina de título" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1330 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:53 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:188 msgid "Table of Contents" -msgstr "" +msgstr "Índice de Contidos" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1331 msgid "Index" -msgstr "" +msgstr "Índice" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1332 msgid "Glossary" @@ -1838,7 +1845,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1336 msgid "Copyright" -msgstr "" +msgstr "Dereitos de copia" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1337 msgid "Dedication" @@ -1854,15 +1861,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1340 msgid "List of Illustrations" -msgstr "" +msgstr "Lista de Ilustracións" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1341 msgid "List of Tables" -msgstr "" +msgstr "Lista de Táboas" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1342 msgid "Notes" -msgstr "" +msgstr "Notas" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1343 msgid "Preface" @@ -1870,11 +1877,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1344 msgid "Main Text" -msgstr "" +msgstr "Texto Principal" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:39 msgid "%s format books are not supported" -msgstr "" +msgstr "O formato de libros %s non está soportado" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:54 msgid "HTML TOC generation options." @@ -1882,7 +1889,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:108 msgid "Book Jacket" -msgstr "" +msgstr "Envoltorio do Libro" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/split.py:34 msgid "" @@ -1891,7 +1898,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:68 msgid "Unnamed" -msgstr "" +msgstr "Sen nome" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/writer.py:32 msgid "OPF/NCX/etc. generation options." @@ -1912,7 +1919,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/reader132.py:133 msgid "Sidebar" -msgstr "" +msgstr "Barra lateral" #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:22 #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/input.py:23 @@ -2011,7 +2018,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:73 msgid "Crop Options:" -msgstr "" +msgstr "Opcións de Recorte:" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:73 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/decrypt.py:60 @@ -2032,7 +2039,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/decrypt.py:60 msgid "Decrypt Options:" -msgstr "" +msgstr "Opcións de Descifrado:" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/encrypt.py:25 msgid "" @@ -2043,7 +2050,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/encrypt.py:54 msgid "Encrypt Options:" -msgstr "" +msgstr "Opcións de Cifrado:" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:21 msgid "" @@ -2054,27 +2061,27 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:46 msgid "Author" -msgstr "" +msgstr "Autor" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:47 msgid "Subject" -msgstr "" +msgstr "Asunto" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:48 msgid "Creator" -msgstr "" +msgstr "Creador" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:50 msgid "Pages" -msgstr "" +msgstr "Páxinas" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:51 msgid "File Size" -msgstr "" +msgstr "Tamaño do Ficheiro:" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:52 msgid "PDF Version" -msgstr "" +msgstr "Versión de PDF" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/merge.py:25 msgid "" @@ -2087,7 +2094,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/merge.py:56 msgid "Merge Options:" -msgstr "" +msgstr "Opcións de Combinación:" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/reverse.py:25 msgid "" @@ -2098,7 +2105,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/reverse.py:54 msgid "Reverse Options:" -msgstr "" +msgstr "Opcións de Reverso:" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:24 msgid "" @@ -2109,7 +2116,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:53 msgid "Rotate Options:" -msgstr "" +msgstr "Opcións de Rotación:" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:25 msgid "" @@ -2128,7 +2135,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:61 msgid "Split Options:" -msgstr "" +msgstr "Opcións de División:" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:31 msgid "" @@ -2222,11 +2229,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:30 msgid "Confirm before deleting" -msgstr "" +msgstr "Confirmar antes de borrar" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:32 msgid "Toolbar icon size" -msgstr "" +msgstr "Tamaño da icona da barra de ferramentas" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:34 msgid "Show button labels in the toolbar" @@ -2234,11 +2241,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:36 msgid "Main window geometry" -msgstr "" +msgstr "Xeometría da xanela principal" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:38 msgid "Notify when a new version is available" -msgstr "" +msgstr "Notificar se hai versións novas dispoñíbeis" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:40 msgid "Use Roman numerals for series number" @@ -2278,7 +2285,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 msgid "Show system tray icon" -msgstr "" +msgstr "Amosar a icona na área de notificación do sistema" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:58 msgid "Upload downloaded news to device" @@ -2317,27 +2324,27 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:130 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:439 msgid "Copied" -msgstr "" +msgstr "Copiado" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 msgid "Copy" -msgstr "" +msgstr "Copiar" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 msgid "Copy to Clipboard" -msgstr "" +msgstr "Copiar no Portapapeis" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:395 msgid "Choose Files" -msgstr "" +msgstr "Escoller os Ficheiros" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:54 msgid "Searching in" -msgstr "" +msgstr "A Buscar" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:163 msgid "Adding..." -msgstr "" +msgstr "A engadir..." #: /home/kovid/work/calibre/src/calibre/gui2/add.py:176 msgid "Searching in all sub-directories..." @@ -2345,28 +2352,28 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:189 msgid "Path error" -msgstr "" +msgstr "Erro na traxectoria" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:190 msgid "The specified directory could not be processed." -msgstr "" +msgstr "Non se puido procesar o directorio especificado." #: /home/kovid/work/calibre/src/calibre/gui2/add.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:495 msgid "No books" -msgstr "" +msgstr "Sen libros" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:195 msgid "No books found" -msgstr "" +msgstr "Non se acharon libros" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:261 msgid "Added" -msgstr "" +msgstr "Engadido" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:274 msgid "Adding failed" -msgstr "" +msgstr "Erro ao engadir" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:275 msgid "" @@ -2376,7 +2383,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:287 msgid "Duplicates found!" -msgstr "" +msgstr "Acháronse duplicados!" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:288 msgid "" @@ -2386,15 +2393,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:291 msgid "Adding duplicates..." -msgstr "" +msgstr "A engadir os duplicados..." #: /home/kovid/work/calibre/src/calibre/gui2/add.py:352 msgid "Saving..." -msgstr "" +msgstr "A gardar..." #: /home/kovid/work/calibre/src/calibre/gui2/add.py:405 msgid "Saved" -msgstr "" +msgstr "Gardado" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:16 msgid "CSV/XML Options" @@ -2416,7 +2423,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:13 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:17 msgid "Options specific to" -msgstr "" +msgstr "Opcións específicas para" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:18 @@ -2429,7 +2436,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:17 msgid "output" -msgstr "" +msgstr "saída" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:36 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:51 @@ -2461,7 +2468,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:107 msgid "Form" -msgstr "" +msgstr "Formulario" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:37 msgid "Fields to include in output:" @@ -2507,16 +2514,16 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:67 msgid "Bulk Convert" -msgstr "" +msgstr "Conversión por Petición" #: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:80 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 msgid "Options specific to the output format." -msgstr "" +msgstr "Opcións específicas do formato de saida." #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:15 msgid "Comic Input" -msgstr "" +msgstr "Entrada de Cómic" #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:13 @@ -2524,27 +2531,27 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:13 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:13 msgid "input" -msgstr "" +msgstr "entrada" #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:94 msgid "&Number of Colors:" -msgstr "" +msgstr "&Número de Cores:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96 msgid "Disable &normalize" -msgstr "" +msgstr "Desactivar &normalizar" #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 msgid "Keep &aspect ratio" -msgstr "" +msgstr "Manter a &proporción" #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:88 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:98 msgid "Disable &Sharpening" -msgstr "" +msgstr "Desactivar a &Definición" #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:89 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:104 @@ -2554,22 +2561,22 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:90 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:103 msgid "&Wide" -msgstr "" +msgstr "&Vertical" #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:99 msgid "&Landscape" -msgstr "" +msgstr "&Horizontal" #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:92 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:101 msgid "&Right to left" -msgstr "" +msgstr "&Dereita a esquerda" #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:100 msgid "Don't so&rt" -msgstr "" +msgstr "Non o&rdenar" #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:94 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:102 @@ -2578,33 +2585,33 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:95 msgid "&Disable comic processing" -msgstr "" +msgstr "&Desactivar o procesamento de cómic" #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:96 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:111 msgid "&Output format:" -msgstr "" +msgstr "Formato de &Saída:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:19 msgid "Debug" -msgstr "" +msgstr "Depurar" #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:21 msgid "Debug the conversion process." -msgstr "" +msgstr "Depurar o proceso de conversión." #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:38 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:51 msgid "Choose debug folder" -msgstr "" +msgstr "Escoller o cartafol de depuración" #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:57 msgid "Invalid debug directory" -msgstr "" +msgstr "Directorio de depuración non válido" #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:58 msgid "Failed to create debug directory" -msgstr "" +msgstr "Erro ao crear o directorio de depuración" #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:50 msgid "" @@ -2660,7 +2667,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:15 msgid "EPUB Output" -msgstr "" +msgstr "Saída EPUB" #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:42 msgid "Do not &split on page breaks" @@ -2672,15 +2679,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:44 msgid " KB" -msgstr "" +msgstr " KB" #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:45 msgid "No default &cover" -msgstr "" +msgstr "Sen &capa predeterminada" #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:12 msgid "FB2 Input" -msgstr "" +msgstr "Entrada FB2" #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:29 msgid "Do not insert a &Table of Contents at the beginning of the book." @@ -2688,18 +2695,18 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:14 msgid "FB2 Output" -msgstr "" +msgstr "Saída FB2" #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:29 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:37 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:29 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:47 msgid "&Inline TOC" -msgstr "" +msgstr "TOC &en liña" #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:99 msgid "Font rescaling wizard" -msgstr "" +msgstr "Asistente de reescalamento do tipo de letra" #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:100 msgid "" @@ -2719,17 +2726,17 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:103 msgid "&Output document" -msgstr "" +msgstr "Documento de &saída" #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:109 msgid "&Base font size:" -msgstr "" +msgstr "Tamaño do tipo de letra &base:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:105 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:122 msgid "Font size &key:" -msgstr "" +msgstr "&Clave do tipo de letra:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:110 @@ -2748,19 +2755,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:107 msgid "Use &default values" -msgstr "" +msgstr "Usar os valores &predeterminados" #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:108 msgid "&Input document" -msgstr "" +msgstr "Documento de &entrada" #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:111 msgid "&Font size: " -msgstr "" +msgstr "&Tamaño do tipo de letra: " #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:113 msgid " will map to size: " -msgstr "" +msgstr " escalarase ao tamaño: " #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:114 msgid "0.0 pt" @@ -2776,11 +2783,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:119 msgid "&Disable font size rescaling" -msgstr "" +msgstr "&Desactivar o reescalamento do tamaño de tipo de letra" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:120 msgid "Base &font size:" -msgstr "" +msgstr "&Tamaño do tipo de letra base" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:123 msgid "Wizard to help you choose an appropriate font size key" @@ -2788,19 +2795,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:125 msgid "Line &height:" -msgstr "" +msgstr "&Altura de liña:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:127 msgid "Input character &encoding:" -msgstr "" +msgstr "&Codificación do carácter de entrada:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:128 msgid "Remove &spacing between paragraphs" -msgstr "" +msgstr "Elliminar o &espazo entre parágrafos" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:129 msgid "Indent size:" -msgstr "" +msgstr "Tamaño da sangría:a" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:130 msgid "" @@ -2815,15 +2822,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:132 msgid "Insert &blank line" -msgstr "" +msgstr "Inserir liña en &branco" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:133 msgid "No text &justification" -msgstr "" +msgstr "Texto sen &xustificación" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:134 msgid "&Linearize tables" -msgstr "" +msgstr "&Aliñar as táboas" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:135 msgid "&Transliterate unicode characters to ASCII." @@ -2831,15 +2838,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:136 msgid "Extra &CSS" -msgstr "" +msgstr "&CSS adicional" #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:19 msgid "LRF Output" -msgstr "" +msgstr "Saída LRF" #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:116 msgid "Enable &autorotation of wide images" -msgstr "" +msgstr "Activar a rotación &automática de imaxes grandes" #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:117 msgid "&Wordspace:" @@ -2847,11 +2854,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:119 msgid "Minimum para. &indent:" -msgstr "" +msgstr "Sangría &mínima:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:121 msgid "Render &tables as images" -msgstr "" +msgstr "Renderizar &táboas como imaxes" #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:122 msgid "Text size multiplier for text in rendered tables:" @@ -2859,31 +2866,31 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:123 msgid "Add &header" -msgstr "" +msgstr "Engadir &Encabezado" #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:124 msgid "Header &separation:" -msgstr "" +msgstr "&Separación do encabezado" #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:126 msgid "Header &format:" -msgstr "" +msgstr "&Formato do encabezado" #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:127 msgid "&Embed fonts" -msgstr "" +msgstr "&Aniñar os tipos de letra" #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:128 msgid "&Serif font family:" -msgstr "" +msgstr "Familia de tipos de letra con &serifa:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:129 msgid "S&ans-serif font family:" -msgstr "" +msgstr "Familia de tipos de letra s&en serifa:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:130 msgid "&Monospaced font family:" -msgstr "" +msgstr "Familia de tipos de letra de &largo uniforme" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:41 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:114 @@ -2900,23 +2907,23 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:160 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:99 msgid "Choose cover for " -msgstr "" +msgstr "Escoller a capa para " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:167 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:106 msgid "Cannot read" -msgstr "" +msgstr "Non se puido ler" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:168 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:107 msgid "You do not have permission to read the file: " -msgstr "" +msgstr "Non ten permiso para ler o ficheiro " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:176 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:183 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:115 msgid "Error reading file" -msgstr "" +msgstr "Erro ao ler o ficheiro" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:177 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:116 @@ -2926,12 +2933,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:184 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:124 msgid " is not a valid picture" -msgstr "" +msgstr " non é unha imaxe válida" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:166 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393 msgid "Book Cover" -msgstr "" +msgstr "Capa do Libro" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:167 msgid "Use cover from &source file" @@ -2940,7 +2947,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:168 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:394 msgid "Change &cover image:" -msgstr "" +msgstr "Mudar a imaxe da &capa" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:169 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:395 @@ -2950,7 +2957,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:171 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:354 msgid "&Title: " -msgstr "" +msgstr "&Título " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:355 @@ -2961,11 +2968,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:138 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:358 msgid "&Author(s): " -msgstr "" +msgstr "&Autores/as: " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:174 msgid "Author So&rt:" -msgstr "" +msgstr "&Ordenación por autor/a" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:175 msgid "" @@ -2982,7 +2989,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:177 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:368 msgid "Ta&gs: " -msgstr "" +msgstr "&Etiquetas " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:178 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 @@ -3010,15 +3017,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:379 msgid "Book " -msgstr "" +msgstr "Libro " #: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:15 msgid "MOBI Output" -msgstr "" +msgstr "Saída MOBI" #: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:45 msgid "&Title for Table of Contents:" -msgstr "" +msgstr "&Título do Índice de Contidos:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:46 msgid "Rescale images for &Palm devices" @@ -3026,11 +3033,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:47 msgid "Use author &sort for author" -msgstr "" +msgstr "Usar a &ordenación por autores/as" #: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:48 msgid "Disable compression of the file contents" -msgstr "" +msgstr "Desactivar a compresión dos contidos do ficheiro" #: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:49 msgid "Do not add Table of Contents to book" @@ -3038,43 +3045,43 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup.py:35 msgid "Page Setup" -msgstr "" +msgstr "Configuración da Páxina" #: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:111 msgid "&Output profile:" -msgstr "" +msgstr "Perfil de &Saída:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:112 msgid "Profile description" -msgstr "" +msgstr "Descrición do perfil" #: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:113 msgid "&Input profile:" -msgstr "" +msgstr "Perfil de &Entrada:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:114 msgid "Margins" -msgstr "" +msgstr "Marxes" #: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:115 msgid "&Left:" -msgstr "" +msgstr "&Esquerdo:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:117 msgid "&Top:" -msgstr "" +msgstr "&Superior:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:119 msgid "&Right:" -msgstr "" +msgstr "&Dereita:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:121 msgid "&Bottom:" -msgstr "" +msgstr "&Inferior:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input.py:12 msgid "PDB Input" -msgstr "" +msgstr "Entrada PDB" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input_ui.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:43 @@ -3084,19 +3091,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input_ui.py:33 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:44 msgid "Assume print formatting" -msgstr "" +msgstr "Asumir o formatado de impresión" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output.py:16 msgid "PDB Output" -msgstr "" +msgstr "Saída PDB" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:36 msgid "&Format:" -msgstr "" +msgstr "&Formato:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:12 msgid "PDF Input" -msgstr "" +msgstr "Entrada PDF" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:39 msgid "Line &Un-Wrapping Factor:" @@ -3104,28 +3111,28 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:40 msgid "No &Images" -msgstr "" +msgstr "Sen &Imaxes" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output.py:17 msgid "PDF Output" -msgstr "" +msgstr "Saída PDF" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:40 msgid "&Paper Size:" -msgstr "" +msgstr "Tamaño de &Papel" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:41 msgid "&Orientation:" -msgstr "" +msgstr "&Orientación" #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output.py:14 msgid "RB Output" -msgstr "" +msgstr "Saída RB" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1637 msgid "Choose the format to view" -msgstr "" +msgstr "Escoller o formato de visualización" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:83 msgid "Cannot build regex using the GUI builder without a book." @@ -3133,11 +3140,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:83 msgid "No formats available" -msgstr "" +msgstr "Non hai formatos dispoñíbeis" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:99 msgid "Open book" -msgstr "" +msgstr "Abrir o libro" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:99 msgid "~" @@ -3149,7 +3156,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:47 msgid "Preview" -msgstr "" +msgstr "Previsualizar" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:48 msgid "Regex:" @@ -3157,22 +3164,22 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:171 msgid "Convert" -msgstr "" +msgstr "Converter" #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:196 msgid "Options specific to the input format." -msgstr "" +msgstr "Opcións específicas do formato de entrada." #: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:108 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:64 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:48 msgid "Dialog" -msgstr "" +msgstr "Diálogo" #: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:109 msgid "&Input format:" -msgstr "" +msgstr "Formato de &entrada:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:110 msgid "Use &saved conversion settings for individual books" @@ -3183,6 +3190,8 @@ msgid "" "Structure\n" "Detection" msgstr "" +"Detección da\n" +"Estrutura" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:19 msgid "" @@ -3199,35 +3208,35 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:37 msgid "Header regular expression:" -msgstr "" +msgstr "Expresión regular do encabezado:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:40 msgid "Footer regular expression:" -msgstr "" +msgstr "Expresión regular do pé de páxina:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:56 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:71 msgid "Invalid regular expression" -msgstr "" +msgstr "Expresión regular non válida" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:72 msgid "Invalid regular expression: %s" -msgstr "" +msgstr "Expresión regular non válida: %s" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:62 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:38 msgid "Invalid XPath" -msgstr "" +msgstr "XPath non válida" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39 msgid "The XPath expression %s is invalid." -msgstr "" +msgstr "A expresión da XPath %s non é válida." #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:60 msgid "Chapter &mark:" -msgstr "" +msgstr "´&Marca de capítulo" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:61 msgid "Remove first &image" @@ -3347,7 +3356,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:69 msgid "*" -msgstr "" +msgstr "*" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:70 msgid "a" @@ -3734,11 +3743,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:196 msgid "General" -msgstr "" +msgstr "Xeral" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:196 msgid "Interface" -msgstr "" +msgstr "Interface" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:197 msgid "Add/Save" @@ -3752,7 +3761,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:198 msgid "Advanced" -msgstr "" +msgstr "Avanzado" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:198 msgid "" @@ -3762,7 +3771,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:198 msgid "Plugins" -msgstr "" +msgstr "Complementos" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:216 msgid "Auto send" @@ -3770,7 +3779,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:216 msgid "Email" -msgstr "" +msgstr "Correo electrónico" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:221 msgid "Formats to email. The first matching format will be sent." @@ -3792,7 +3801,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1246 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 msgid "Error" -msgstr "" +msgstr "Erro" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:478 msgid "Failed to install command line tools." @@ -4004,7 +4013,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:366 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 msgid "Preferences" -msgstr "" +msgstr "Preferencias" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:502 msgid "" @@ -4044,15 +4053,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 msgid "Normal" -msgstr "" +msgstr "Normal" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 msgid "High" -msgstr "" +msgstr "Alto" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 msgid "Low" -msgstr "" +msgstr "Baixo" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 msgid "Job &priority:" @@ -4104,15 +4113,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 msgid "Large" -msgstr "" +msgstr "Grande" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 msgid "Medium" -msgstr "" +msgstr "Medio" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 msgid "Small" -msgstr "" +msgstr "Pequeno" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 msgid "&Button size in toolbar" @@ -4337,7 +4346,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/conversion_error_ui.py:41 msgid "ERROR" -msgstr "" +msgstr "ERRO" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:58 msgid "Author Sort" @@ -4411,7 +4420,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/job_view_ui.py:37 msgid "Details of job" -msgstr "" +msgstr "Detalles do traballo" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:44 msgid "Active Jobs" @@ -4512,7 +4521,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:165 msgid "No permission" -msgstr "" +msgstr "Permiso denegado" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:166 msgid "You do not have permission to read the following files:" @@ -4758,31 +4767,31 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:198 msgid "Monday" -msgstr "" +msgstr "Luns" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:199 msgid "Tuesday" -msgstr "" +msgstr "Martes" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:200 msgid "Wednesday" -msgstr "" +msgstr "Mércores" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:201 msgid "Thursday" -msgstr "" +msgstr "Xoves" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:202 msgid "Friday" -msgstr "" +msgstr "Venres" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203 msgid "Saturday" -msgstr "" +msgstr "Sábado" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:204 msgid "Sunday" -msgstr "" +msgstr "Domingo" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:205 msgid "at" @@ -5171,7 +5180,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:117 msgid "Test" -msgstr "" +msgstr "Proba" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:118 msgid "Title:" @@ -5228,15 +5237,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:53 msgid "Job" -msgstr "" +msgstr "Traballo" #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:54 msgid "Status" -msgstr "" +msgstr "Estado" #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:55 msgid "Progress" -msgstr "" +msgstr "Progreso" #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:56 msgid "Running time" @@ -5285,11 +5294,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/library.py:166 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:1114 msgid "Date" -msgstr "" +msgstr "Data" #: /home/kovid/work/calibre/src/calibre/gui2/library.py:168 msgid "Rating" -msgstr "" +msgstr "Puntuación" #: /home/kovid/work/calibre/src/calibre/gui2/library.py:348 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:354 @@ -5299,7 +5308,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:440 msgid "None" -msgstr "" +msgstr "Ningún" #: /home/kovid/work/calibre/src/calibre/gui2/library.py:365 msgid "Book %s of %s." @@ -5307,7 +5316,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/library.py:877 msgid "Not allowed" -msgstr "" +msgstr "Non permitido" #: /home/kovid/work/calibre/src/calibre/gui2/library.py:878 msgid "" @@ -5317,7 +5326,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/library.py:1049 msgid "Format" -msgstr "" +msgstr "Formato" #: /home/kovid/work/calibre/src/calibre/gui2/library.py:1103 msgid "Double click to edit me

" @@ -5375,7 +5384,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:182 msgid "Back" -msgstr "" +msgstr "Voltar" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:134 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:183 @@ -5393,7 +5402,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:137 msgid "Configure" -msgstr "" +msgstr "Configurar" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:24 msgid "Use the library located at the specified path." @@ -5498,7 +5507,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:348 msgid "Del" -msgstr "" +msgstr "Supr" #: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:349 msgid "Edit meta information" @@ -5540,7 +5549,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:358 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:314 msgid "View" -msgstr "" +msgstr "Ver" #: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:359 msgid "V" @@ -5606,7 +5615,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:71 msgid "Search" -msgstr "" +msgstr "Buscar" #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:58 msgid "Press a key..." @@ -5662,7 +5671,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:73 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:78 msgid "Clear" -msgstr "" +msgstr "Limpar" #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:75 msgid "&Alternate shortcut:" @@ -5696,7 +5705,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 msgid "Authors" -msgstr "" +msgstr "Autores" #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 msgid "Publishers" @@ -5899,7 +5908,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:877 msgid "Connected " -msgstr "" +msgstr "Conectado " #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:889 msgid "Device database corrupted" @@ -5968,7 +5977,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1013 msgid "Archives" -msgstr "" +msgstr "Arquivos" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1017 msgid "Supported books" @@ -6264,7 +6273,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:89 msgid "Name" -msgstr "" +msgstr "Nome" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:56 msgid "Bookmark Manager" @@ -6272,27 +6281,27 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:57 msgid "Actions" -msgstr "" +msgstr "Accións" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:58 msgid "Edit" -msgstr "" +msgstr "Editar" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:59 msgid "Delete" -msgstr "" +msgstr "Borrar" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:60 msgid "Reset" -msgstr "" +msgstr "Restaurar" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:61 msgid "Export" -msgstr "" +msgstr "Exportar" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:62 msgid "Import" -msgstr "" +msgstr "Importar" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:154 msgid "Configure Ebook viewer" @@ -6424,7 +6433,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 msgid "Font options" -msgstr "" +msgstr "Opcións de tipo de letra" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:53 msgid "The serif font family" @@ -6488,19 +6497,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:36 msgid "Scroll down" -msgstr "" +msgstr "Desprazar cara a abaixo" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:39 msgid "Scroll up" -msgstr "" +msgstr "Desprazar cara a arriba" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:42 msgid "Scroll left" -msgstr "" +msgstr "Desprazar cara á esquerda" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:45 msgid "Scroll right" -msgstr "" +msgstr "Desprazar cara á dereita" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:115 msgid "Book format" @@ -6612,11 +6621,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:184 msgid "Next page" -msgstr "" +msgstr "Páxina seguinte" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:185 msgid "Previous page" -msgstr "" +msgstr "Páxina anterior" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:186 msgid "Font size larger" @@ -6648,7 +6657,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:197 msgid "Print" -msgstr "" +msgstr "Imprimir" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/printing.py:114 msgid "Print eBook" @@ -6888,7 +6897,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:130 msgid "Bad configuration" -msgstr "" +msgstr "Configuración errada" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:124 msgid "You must set the From email address" @@ -6900,7 +6909,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:108 msgid "Send email &from:" -msgstr "" +msgstr "Enviar correos &desde:" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:109 msgid "" @@ -6916,7 +6925,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:111 msgid "Mail &Server" -msgstr "" +msgstr "&Servidor de Correo" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:112 msgid "calibre can optionally use a server to send mail" @@ -6924,7 +6933,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:113 msgid "&Hostname:" -msgstr "" +msgstr "Nome do &host:" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:114 msgid "The hostname of your mail server. For e.g. smtp.gmail.com" @@ -6932,7 +6941,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:115 msgid "&Port:" -msgstr "" +msgstr "&Porto:" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:116 msgid "" @@ -6941,19 +6950,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:118 msgid "Your username on the mail server" -msgstr "" +msgstr "O seu nome de usuario/a no servidor de correo" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:120 msgid "Your password on the mail server" -msgstr "" +msgstr "O seu contrasinal no servidor de correo" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:121 msgid "&Show" -msgstr "" +msgstr "&Amosar" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:122 msgid "&Encryption:" -msgstr "" +msgstr "&Cifrado:" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:123 msgid "" @@ -6963,7 +6972,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:124 msgid "&TLS" -msgstr "" +msgstr "&TLS" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:125 msgid "Use SSL encryption when connecting to the mail server." @@ -6971,15 +6980,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:126 msgid "&SSL" -msgstr "" +msgstr "&SSL" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:127 msgid "Use Gmail" -msgstr "" +msgstr "Usar Gmail" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:128 msgid "&Test email" -msgstr "" +msgstr "&Probar o correo" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:44 msgid "" @@ -6991,7 +7000,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:45 msgid "Turn on the &content server" -msgstr "" +msgstr "Prender o servidor de &contidos" #: /home/kovid/work/calibre/src/calibre/library/__init__.py:8 msgid "Settings to control the calibre content server" @@ -7164,7 +7173,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/cli.py:234 msgid "Invalid fields. Available fields:" -msgstr "" +msgstr "Campos non válidos. Campos dispoñíbeis:" #: /home/kovid/work/calibre/src/calibre/library/cli.py:241 msgid "Invalid sort field. Available fields:" @@ -7193,7 +7202,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/cli.py:346 msgid "Process directories recursively" -msgstr "" +msgstr "Procesar os directorios recursivamente" #: /home/kovid/work/calibre/src/calibre/library/cli.py:348 msgid "" @@ -7233,7 +7242,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/cli.py:428 msgid "ebook file must have an extension" -msgstr "" +msgstr "O ficheiro de libro electrónico debe ter unha extensión" #: /home/kovid/work/calibre/src/calibre/library/cli.py:436 msgid "" @@ -7265,7 +7274,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/cli.py:488 msgid "You must specify an id" -msgstr "" +msgstr "Debe especificar un id" #: /home/kovid/work/calibre/src/calibre/library/cli.py:501 msgid "" @@ -7367,31 +7376,31 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/database2.py:1725 msgid "Copying %s" -msgstr "" +msgstr "A copiar %s" #: /home/kovid/work/calibre/src/calibre/library/database2.py:1742 msgid "Compacting database" -msgstr "" +msgstr "A compactar a base de datos" #: /home/kovid/work/calibre/src/calibre/library/database2.py:1835 msgid "Checking SQL integrity..." -msgstr "" +msgstr "A comprobar a integridade SQL..." #: /home/kovid/work/calibre/src/calibre/library/database2.py:1872 msgid "Checking for missing files." -msgstr "" +msgstr "A comprobar os ficheiros perdidos." #: /home/kovid/work/calibre/src/calibre/library/database2.py:1894 msgid "Checked id" -msgstr "" +msgstr "id comprobada" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:24 msgid "The title" -msgstr "" +msgstr "O título" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:25 msgid "The authors" -msgstr "" +msgstr "Os/as autores/as" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:26 msgid "" @@ -7401,7 +7410,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:28 msgid "The tags" -msgstr "" +msgstr "As etiquetas" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:29 msgid "The series" @@ -7413,7 +7422,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:31 msgid "The rating" -msgstr "" +msgstr "A nota" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:32 msgid "The ISBN" @@ -7425,15 +7434,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:34 msgid "The date" -msgstr "" +msgstr "A data" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:35 msgid "The published date" -msgstr "" +msgstr "Data de publicación" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:36 msgid "The calibre internal id" -msgstr "" +msgstr "O id interno de Calibre" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:46 msgid "Options to control saving to disk" @@ -7495,15 +7504,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:85 msgid "Convert paths to lowercase." -msgstr "" +msgstr "Converter as traxectorias a minúsculas." #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:87 msgid "Replace whitespace with underscores." -msgstr "" +msgstr "Substituír os espazos por suliñados." #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:256 msgid "Requested formats not available" -msgstr "" +msgstr "Os formatos requiridos non están dispoñíbeis" #: /home/kovid/work/calibre/src/calibre/library/server.py:378 msgid "Password to access your calibre library. Username is " @@ -7526,7 +7535,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/config.py:92 msgid "Created by " -msgstr "" +msgstr "Creado por " #: /home/kovid/work/calibre/src/calibre/utils/config.py:93 msgid "" @@ -7568,11 +7577,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/config.py:668 msgid "Read metadata from files" -msgstr "" +msgstr "Ler os metadatos dos ficheiros" #: /home/kovid/work/calibre/src/calibre/utils/config.py:670 msgid "The priority of worker processes" -msgstr "" +msgstr "A prioridade dos procesos do traballador" #: /home/kovid/work/calibre/src/calibre/utils/config.py:672 msgid "Swap author first and last names when reading metadata" @@ -7580,43 +7589,43 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:43 msgid "Waiting..." -msgstr "" +msgstr "A esperar..." #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:51 msgid "Stopped" -msgstr "" +msgstr "Detido" #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 msgid "Finished" -msgstr "" +msgstr "Rematado" #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:72 msgid "Working..." -msgstr "" +msgstr "A traballar..." #: /home/kovid/work/calibre/src/calibre/utils/localization.py:93 msgid "Brazilian Portuguese" -msgstr "" +msgstr "Portugués (brasileiro)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:94 msgid "English (UK)" -msgstr "" +msgstr "Inglés (Reino Unido)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:95 msgid "Simplified Chinese" -msgstr "" +msgstr "Chinés (simplificado)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:96 msgid "Chinese (HK)" -msgstr "" +msgstr "Chinés (Hong Kong)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:97 msgid "Traditional Chinese" -msgstr "" +msgstr "Chinés (tradicional)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:98 msgid "English" -msgstr "" +msgstr "Inglés" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:99 msgid "English (Australia)" @@ -7656,15 +7665,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:108 msgid "German (AT)" -msgstr "" +msgstr "Alemán (Austria)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:109 msgid "Dutch (NL)" -msgstr "" +msgstr "Flamenco (Holanda)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:110 msgid "Dutch (BE)" -msgstr "" +msgstr "Flamenco (Bélxica)" #: /home/kovid/work/calibre/src/calibre/utils/sftp.py:53 msgid "URL must have the scheme sftp" @@ -7680,21 +7689,21 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/sftp.py:71 msgid "Failed to authenticate with server: %s" -msgstr "" +msgstr "Erro ao se autenticar no servidor: %s" #: /home/kovid/work/calibre/src/calibre/utils/smtp.py:234 msgid "Control email delivery" -msgstr "" +msgstr "Controlar o envío de correo" #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:103 #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:125 msgid "Unknown feed" -msgstr "" +msgstr "Fluxo descoñecido" #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:143 #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:166 msgid "Untitled article" -msgstr "" +msgstr "Artigo sen título" #: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:21 msgid "Download periodical content from the internet" @@ -7721,7 +7730,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:40 msgid "Unknown News Source" -msgstr "" +msgstr "Fonte de Novas Descoñecida" #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:533 msgid "The \"%s\" recipe needs a username and password." @@ -7729,7 +7738,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:619 msgid "Download finished" -msgstr "" +msgstr "Rematou a descarga" #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:621 msgid "Failed to download the following articles:" @@ -7741,11 +7750,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:629 msgid " from " -msgstr "" +msgstr " desde " #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:631 msgid "\tFailed links:" -msgstr "" +msgstr "\tLigazóns erradas:" #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:712 msgid "Could not fetch article. Run with -vv to see the reason" @@ -7753,7 +7762,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:733 msgid "Fetching feeds..." -msgstr "" +msgstr "A obter os fluxos..." #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:738 msgid "Got feeds from index page" @@ -7761,54 +7770,54 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:744 msgid "Trying to download cover..." -msgstr "" +msgstr "Tratando de descargar a capa..." #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:802 msgid "Starting download [%d thread(s)]..." -msgstr "" +msgstr "A comezar a descarga [%d fío(s)]..." #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:818 msgid "Feeds downloaded to %s" -msgstr "" +msgstr "Fluxos descargados en %s" #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828 msgid "Could not download cover: %s" -msgstr "" +msgstr "Non se puido descargar a capa: %s" #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:840 msgid "Downloading cover from %s" -msgstr "" +msgstr "A descargar a capa desde %s" #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:983 msgid "Untitled Article" -msgstr "" +msgstr "Artigo sen Título" #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054 msgid "Article downloaded: %s" -msgstr "" +msgstr "Artigo descargado: %s" #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1065 msgid "Article download failed: %s" -msgstr "" +msgstr "Erro ao descargar o artigo: %s" #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1082 msgid "Fetching feed" -msgstr "" +msgstr "A obter o fluxo" #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:46 msgid "You" -msgstr "" +msgstr "Vostede" #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:73 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:82 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:181 msgid "Scheduled" -msgstr "" +msgstr "Programado" #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:84 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:182 msgid "Custom" -msgstr "" +msgstr "Personalizado" #: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:461 msgid "" diff --git a/src/calibre/translations/ko.po b/src/calibre/translations/ko.po index fbcfefe2c1..f23e37d744 100644 --- a/src/calibre/translations/ko.po +++ b/src/calibre/translations/ko.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-01-25 18:58+0000\n" -"PO-Revision-Date: 2010-01-28 15:44+0000\n" -"Last-Translator: xster \n" +"PO-Revision-Date: 2010-01-31 21:46+0000\n" +"Last-Translator: Kovid Goyal \n" "Language-Team: Korean \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-01-29 04:52+0000\n" +"X-Launchpad-Export-Date: 2010-02-01 04:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 diff --git a/src/calibre/translations/lv.po b/src/calibre/translations/lv.po index 67b574fde9..5301869ced 100644 --- a/src/calibre/translations/lv.po +++ b/src/calibre/translations/lv.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-01-25 18:58+0000\n" -"PO-Revision-Date: 2010-01-25 18:46+0000\n" +"PO-Revision-Date: 2010-01-31 21:40+0000\n" "Last-Translator: Kovid Goyal \n" "Language-Team: Latvian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-01-26 04:50+0000\n" +"X-Launchpad-Export-Date: 2010-02-01 04:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" "X-Poedit-Country: LATVIA\n" "X-Poedit-Language: Latvian\n" diff --git a/src/calibre/translations/ms.po b/src/calibre/translations/ms.po new file mode 100644 index 0000000000..0aa860e264 --- /dev/null +++ b/src/calibre/translations/ms.po @@ -0,0 +1,7860 @@ +# Malay translation for calibre +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the calibre package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: calibre\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2010-01-25 18:58+0000\n" +"PO-Revision-Date: 2010-01-31 12:05+0000\n" +"Last-Translator: abuyop \n" +"Language-Team: Malay \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-02-01 04:44+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 +msgid "Does absolutely nothing" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:46 +#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:72 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:54 +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:70 +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:71 +#: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:205 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:417 +#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67 +#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:69 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:319 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:322 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1894 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1896 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:24 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:225 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:256 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:259 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:359 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:35 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:60 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:46 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:36 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:62 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:106 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:171 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:329 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:444 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:894 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:28 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:49 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/topaz.py:29 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/txt.py:14 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:44 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:70 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:79 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:121 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:155 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:607 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:797 +#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49 +#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:51 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:896 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:901 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:961 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:137 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:139 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:105 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:171 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:172 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/palmdoc/writer.py:29 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ztxt/writer.py:27 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:82 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:83 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/decrypt.py:73 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/decrypt.py:74 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/encrypt.py:63 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/encrypt.py:64 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:52 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/merge.py:65 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/merge.py:66 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/reverse.py:63 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/reverse.py:64 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:62 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:63 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:81 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:28 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:29 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:233 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:280 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:21 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:839 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:842 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:454 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:424 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:919 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1045 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:183 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:281 +#: /home/kovid/work/calibre/src/calibre/library/database.py:913 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:703 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:715 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1143 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1180 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1552 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1554 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1670 +#: /home/kovid/work/calibre/src/calibre/library/server.py:645 +#: /home/kovid/work/calibre/src/calibre/library/server.py:721 +#: /home/kovid/work/calibre/src/calibre/library/server.py:768 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:111 +#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45 +#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63 +#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:77 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:46 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:49 +msgid "Unknown" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:64 +msgid "Base" +msgstr "Asas" + +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:150 +msgid "File type" +msgstr "Jenis fail" + +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:184 +msgid "Metadata reader" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:215 +msgid "Metadata writer" +msgstr "Penulis metadata" + +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:241 +msgid "Catalog generator" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:14 +msgid "" +"Follow all local links in an HTML file and create a ZIP file containing all " +"linked files. This plugin is run every time you add an HTML file to the " +"library." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:49 +msgid "" +"Character encoding for the input HTML files. Common choices include: cp1252, " +"latin1, iso-8859-1 and utf-8." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:56 +msgid "" +"Create a PMLZ archive containing the PML file and all images in the " +"directory pmlname_img or images. This plugin is run every time you add a PML " +"file to the library." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:87 +msgid "Extract cover from comic files" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:108 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:120 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:130 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:140 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:151 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:161 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:171 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:181 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:191 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:201 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:212 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:223 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:235 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:256 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:267 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:277 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:287 +msgid "Read metadata from %s files" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:246 +msgid "Read metadata from ebooks in RAR archives" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:298 +msgid "Read metadata from ebooks in ZIP archives" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:309 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:319 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:329 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:351 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:362 +msgid "Set metadata in %s files" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:340 +msgid "Set metadata from %s files" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:102 +msgid "Conversion Input" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:125 +msgid "" +"Specify the character encoding of the input document. If set this option " +"will override any encoding declared by the document itself. Particularly " +"useful for documents that do not declare an encoding or that have erroneous " +"encoding declarations." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:228 +msgid "Conversion Output" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:242 +msgid "" +"If specified, the output plugin will try to create output that is as human " +"readable as possible. May not have any effect for some output plugins." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:44 +msgid "Input profile" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:48 +msgid "" +"This profile tries to provide sane defaults and is useful if you know " +"nothing about the input document." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:56 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:235 +msgid "" +"This profile is intended for the SONY PRS line. The 500/505/600/700 etc." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:68 +msgid "This profile is intended for the SONY PRS 300." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:77 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:257 +msgid "This profile is intended for the SONY PRS-900." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:85 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:287 +msgid "This profile is intended for the Microsoft Reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:96 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:298 +msgid "This profile is intended for the Mobipocket books." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:109 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:311 +msgid "This profile is intended for the Hanlin V3 and its clones." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:121 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:323 +msgid "This profile is intended for the Hanlin V5 and its clones." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:131 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:331 +msgid "This profile is intended for the Cybook G3." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:144 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:344 +msgid "This profile is intended for the Cybook Opus." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:156 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:355 +msgid "This profile is intended for the Amazon Kindle." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:168 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:388 +msgid "This profile is intended for the Irex Illiad." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:180 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:401 +msgid "This profile is intended for the IRex Digital Reader 1000." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:194 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:415 +msgid "This profile is intended for the B&N Nook." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:213 +msgid "Output profile" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:217 +msgid "" +"This profile tries to provide sane defaults and is useful if you want to " +"produce a document intended to be read at a computer or on a range of " +"devices." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:248 +msgid "This profile is intended for the SONY PRS-300." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:266 +msgid "This profile is intended for the 5-inch JetBook." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:275 +msgid "" +"This profile is intended for the SONY PRS line. The 500/505/700 etc, in " +"landscape mode. Mainly useful for comics." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:372 +msgid "This profile is intended for the Amazon Kindle DX." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:31 +msgid "Installed plugins" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:32 +msgid "Mapping for filetype plugins" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:33 +msgid "Local plugin customization" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:34 +msgid "Disabled plugins" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:77 +msgid "No valid plugin found in " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:263 +msgid "Initialization of plugin %s failed with traceback:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:418 +msgid "" +" %prog options\n" +"\n" +" Customize calibre by loading external plugins.\n" +" " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:424 +msgid "Add a plugin by specifying the path to the zip file containing it." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:426 +msgid "Remove a custom plugin by name. Has no effect on builtin plugins" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:428 +msgid "" +"Customize plugin. Specify name of plugin and customization string separated " +"by a comma." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:430 +msgid "List all installed plugins" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:432 +msgid "Enable the named plugin" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:434 +msgid "Disable the named plugin" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:13 +msgid "Communicate with Android phones." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:26 +msgid "" +"Comma separated list of directories to send e-books to on the device. The " +"first one that exists will be used" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/binatone/driver.py:17 +msgid "Communicate with the Binatone Readme eBook reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:13 +msgid "Communicate with the Blackberry smart phone." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:14 +#: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:18 +#: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:90 +msgid "Kovid Goyal" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/cybook/driver.py:22 +msgid "Communicate with the Cybook Gen 3 / Opus eBook reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:24 +msgid "Communicate with the EB600 eBook reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/eslick/driver.py:16 +msgid "Communicate with the ESlick eBook reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/hanlin/driver.py:19 +msgid "Communicate with Hanlin V3 eBook readers." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/hanlin/driver.py:95 +msgid "Communicate with Hanlin V5 eBook readers." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/hanlin/driver.py:113 +msgid "Communicate with the BOOX eBook reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:17 +msgid "Communicate with the Hanvon N520 eBook reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/iliad/driver.py:16 +msgid "Communicate with the IRex Iliad eBook reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/iliad/driver.py:17 +#: /home/kovid/work/calibre/src/calibre/devices/irexdr/driver.py:18 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:30 +msgid "John Schember" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/interface.py:22 +msgid "Device Interface" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/irexdr/driver.py:16 +msgid "Communicate with the IRex Digital Reader 1000 eBook reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/iriver/driver.py:15 +msgid "Communicate with the Iriver Story reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:20 +msgid "Communicate with the JetBook eBook reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:22 +msgid "Communicate with the Kindle eBook reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:67 +msgid "Communicate with the Kindle 2 eBook reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:77 +msgid "Communicate with the Kindle DX eBook reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:17 +msgid "Communicate with the Nokia 770 internet tablet." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:40 +msgid "Communicate with the Nokia 810 internet tablet." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:20 +msgid "The Nook" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:21 +msgid "Communicate with the Nook eBook reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 +msgid "Communicate with the Nuut2 eBook reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:89 +msgid "Communicate with the Sony PRS-500 eBook reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:150 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:102 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:105 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:108 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:119 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:45 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:48 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:51 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:71 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:81 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:90 +msgid "Getting list of books on device..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:26 +msgid "Communicate with the Sony PRS-300/505/500 eBook reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:58 +msgid "" +"Comma separated list of metadata fields to turn into collections on the " +"device. Possibilities include: " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:139 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:141 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:116 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:118 +msgid "Transferring books to device..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:174 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:181 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:145 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:162 +msgid "Removing books from device..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:209 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:177 +msgid "Sending metadata to device..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:215 +msgid "Communicate with the Sony PRS-600/700/900 eBook reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:250 +msgid "Unable to detect the %s disk drive. Try rebooting." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:429 +msgid "Unable to detect the %s mount point. Try rebooting." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:484 +msgid "Unable to detect the %s disk drive." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:577 +msgid "Could not find mount helper: %s." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:589 +msgid "" +"Unable to detect the %s disk drive. Your kernel is probably exporting a " +"deprecated version of SYSFS." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:597 +msgid "Unable to mount main memory (Error code: %d)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:734 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:736 +msgid "The reader has no storage card in this slot." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:738 +msgid "Selected slot: %s is not supported." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:771 +msgid "There is insufficient free space in main memory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:773 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:775 +msgid "There is insufficient free space on the storage card" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:799 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:822 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:232 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1068 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1072 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1452 +msgid "News" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:12 +msgid "Configure Device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:28 +msgid "settings for device drivers" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:30 +msgid "Ordered list of formats the device will accept" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:32 +msgid "Place files in sub directories if the device supports them" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:34 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:78 +msgid "Read metadata from files on device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:36 +msgid "Template to control how books are saved" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:80 +msgid "Extra customization" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:29 +msgid "Communicate with an eBook reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:37 +msgid "Get device information..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:133 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:141 +msgid "Adding books to device metadata listing..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:166 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:171 +msgid "Removing books from device metadata listing..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:200 +msgid "Rendered %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:203 +msgid "Failed %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:260 +msgid "" +"Failed to process comic: \n" +"\n" +"%s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:278 +msgid "" +"Number of colors for grayscale image conversion. Default: %default. Values " +"of less than 256 may result in blurred text on your device if you are " +"creating your comics in EPUB format." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:282 +msgid "" +"Disable normalize (improve contrast) color range for pictures. Default: False" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:285 +msgid "Maintain picture aspect ratio. Default is to fill the screen." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:287 +msgid "Disable sharpening." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:289 +msgid "" +"Disable trimming of comic pages. For some comics, trimming might remove " +"content as well as borders." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:292 +msgid "Don't split landscape images into two portrait images" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:294 +msgid "" +"Keep aspect ratio and scale image using screen height as image width for " +"viewing in landscape mode." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:297 +msgid "" +"Used for right-to-left publications like manga. Causes landscape pages to be " +"split into portrait pages from right to left." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:301 +msgid "" +"Enable Despeckle. Reduces speckle noise. May greatly increase processing " +"time." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:304 +msgid "" +"Don't sort the files found in the comic alphabetically by name. Instead use " +"the order they were added to the comic." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:308 +msgid "" +"The format that images in the created ebook are converted to. You can " +"experiment to see which format gives you optimal size and look on your " +"device." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:312 +msgid "Apply no processing to the image" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:441 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:452 +msgid "Page" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:19 +msgid "" +"input_file output_file [options]\n" +"\n" +"Convert an ebook from one format to another.\n" +"\n" +"input_file is the input and output_file is the output. Both must be " +"specified as the first two arguments to the command.\n" +"\n" +"The output ebook format is guessed from the file extension of output_file. " +"output_file can also be of the special format .EXT where EXT is the output " +"file extension. In this case, the name of the output file is derived the " +"name of the input file. Note that the filenames must not start with a " +"hyphen. Finally, if output_file has no extension, then it is treated as a " +"directory and an \"open ebook\" (OEB) consisting of HTML files is written to " +"that directory. These files are the files that would normally have been " +"passed to the output plugin.\n" +"\n" +"After specifying the input and output file you can customize the conversion " +"by specifying various options. The available options depend on the input and " +"output file types. To get help on them specify the input and output file and " +"then use the -h option.\n" +"\n" +"For full documentation of the conversion system see\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:97 +msgid "INPUT OPTIONS" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:98 +msgid "Options to control the processing of the input %s file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +msgid "OUTPUT OPTIONS" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:105 +msgid "Options to control the processing of the output %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:119 +msgid "Options to control the look and feel of the output" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:135 +msgid "Control auto-detection of document structure." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:145 +msgid "" +"Control the automatic generation of a Table of Contents. By default, if the " +"source file has a Table of Contents, it will be used in preference to the " +"automatically generated one." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:155 +msgid "Options to set metadata in the output" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:158 +msgid "Options to help with debugging the conversion" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:183 +msgid "List builtin recipes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:252 +msgid "Output saved to" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:92 +msgid "Level of verbosity. Specify multiple times for greater verbosity." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:99 +msgid "" +"Save the output from different stages of the conversion pipeline to the " +"specified directory. Useful if you are unsure at which stage of the " +"conversion process a bug is occurring." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:108 +msgid "" +"Specify the input profile. The input profile gives the conversion system " +"information on how to interpret various information in the input document. " +"For example resolution dependent lengths (i.e. lengths in pixels). Choices " +"are:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:119 +msgid "" +"Specify the output profile. The output profile tells the conversion system " +"how to optimize the created document for the specified device. In some " +"cases, an output profile is required to produce documents that will work on " +"a device. For example EPUB on the SONY reader. Choices are:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:130 +msgid "" +"The base font size in pts. All font sizes in the produced book will be " +"rescaled based on this size. By choosing a larger size you can make the " +"fonts in the output bigger and vice versa. By default, the base font size is " +"chosen based on the output profile you chose." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:140 +msgid "" +"Mapping from CSS font names to font sizes in pts. An example setting is " +"12,12,14,16,18,20,22,24. These are the mappings for the sizes xx-small to xx-" +"large, with the final size being for huge fonts. The font rescaling " +"algorithm uses these sizes to intelligently rescale fonts. The default is to " +"use a mapping based on the output profile you chose." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:152 +msgid "Disable all rescaling of font sizes." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:159 +msgid "" +"The line height in pts. Controls spacing between consecutive lines of text. " +"By default no line height manipulation is performed." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:167 +msgid "" +"Some badly designed documents use tables to control the layout of text on " +"the page. When converted these documents often have text that runs off the " +"page and other artifacts. This option will extract the content from the " +"tables and present it in a linear fashion." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:177 +msgid "" +"XPath expression that specifies all tags that should be added to the Table " +"of Contents at level one. If this is specified, it takes precedence over " +"other forms of auto-detection." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:186 +msgid "" +"XPath expression that specifies all tags that should be added to the Table " +"of Contents at level two. Each entry is added under the previous level one " +"entry." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:194 +msgid "" +"XPath expression that specifies all tags that should be added to the Table " +"of Contents at level three. Each entry is added under the previous level two " +"entry." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:202 +msgid "" +"Normally, if the source file already has a Table of Contents, it is used in " +"preference to the auto-generated one. With this option, the auto-generated " +"one is always used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:210 +msgid "Don't add auto-detected chapters to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:217 +msgid "" +"If fewer than this number of chapters is detected, then links are added to " +"the Table of Contents. Default: %default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:224 +msgid "" +"Maximum number of links to insert into the TOC. Set to 0 to disable. Default " +"is: %default. Links are only added to the TOC if less than the threshold " +"number of chapters were detected." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:232 +msgid "" +"Remove entries from the Table of Contents whose titles match the specified " +"regular expression. Matching entries and all their children are removed." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:243 +msgid "" +"An XPath expression to detect chapter titles. The default is to consider " +"

or

tags that contain the words \"chapter\",\"book\",\"section\" or " +"\"part\" as chapter titles as well as any tags that have class=\"chapter\". " +"The expression used must evaluate to a list of elements. To disable chapter " +"detection, use the expression \"/\". See the XPath Tutorial in the calibre " +"User Manual for further help on using this feature." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:257 +msgid "" +"Specify how to mark detected chapters. A value of \"pagebreak\" will insert " +"page breaks before chapters. A value of \"rule\" will insert a line before " +"chapters. A value of \"none\" will disable chapter marking and a value of " +"\"both\" will use both page breaks and lines to mark chapters." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:267 +msgid "" +"Either the path to a CSS stylesheet or raw CSS. This CSS will be appended to " +"the style rules from the source file, so it can be used to override those " +"rules." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:276 +msgid "" +"An XPath expression. Page breaks are inserted before the specified elements." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:282 +msgid "" +"Set the top margin in pts. Default is %default. Note: 72 pts equals 1 inch" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:287 +msgid "" +"Set the bottom margin in pts. Default is %default. Note: 72 pts equals 1 inch" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:292 +msgid "" +"Set the left margin in pts. Default is %default. Note: 72 pts equals 1 inch" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:297 +msgid "" +"Set the right margin in pts. Default is %default. Note: 72 pts equals 1 inch" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:302 +msgid "" +"Do not force text to be justified in output. Whether text is actually " +"displayed justified or not depends on whether the ebook format and reading " +"device support justification." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:309 +msgid "" +"Remove spacing between paragraphs. Also sets an indent on paragraphs of " +"1.5em. Spacing removal will not work if the source file does not use " +"paragraphs (

or

tags)." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:316 +msgid "" +"When calibre removes inter paragraph spacing, it automatically sets a " +"paragraph indent, to ensure that paragraphs can be easily distinguished. " +"This option controls the width of that indent." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:323 +msgid "" +"Use the cover detected from the source file in preference to the specified " +"cover." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:329 +msgid "" +"Insert a blank line between paragraphs. Will not work if the source file " +"does not use paragraphs (

or

tags)." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:336 +msgid "" +"Remove the first image from the input ebook. Useful if the first image in " +"the source file is a cover and you are specifying an external cover." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:344 +msgid "" +"Insert the book metadata at the start of the book. This is useful if your " +"ebook reader does not support displaying/searching metadata directly." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:352 +msgid "" +"Attempt to detect and correct hard line breaks and other problems in the " +"source file. This may make things worse, so use with care." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:360 +msgid "Use a regular expression to try and remove the header." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:367 +msgid "The regular expression to use to remove the header." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:373 +msgid "Use a regular expression to try and remove the footer." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:380 +msgid "The regular expression to use to remove the footer." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:387 +msgid "" +"Read metadata from the specified OPF file. Metadata read from this file will " +"override any metadata in the source file." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:394 +msgid "" +"Transliterate unicode characters to an ASCII representation. Use with care " +"because this will replace unicode characters with ASCII. For instance it " +"will replace \"%s\" with \"Mikhail Gorbachiov\". Also, note that in cases " +"where there are multiple representations of a character (characters shared " +"by Chinese and Japanese for instance) the representation used by the largest " +"number of people will be used (Chinese in the previous example)." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:409 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:37 +msgid "Set the title." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:413 +msgid "Set the authors. Multiple authors should be separated by ampersands." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:418 +msgid "The version of the title to be used for sorting. " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:422 +msgid "String to be used when sorting by author. " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:426 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:51 +msgid "Set the cover to the specified file." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:430 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:53 +msgid "Set the ebook description." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:434 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:55 +msgid "Set the ebook publisher." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:438 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:59 +msgid "Set the series this ebook belongs to." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:442 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:61 +msgid "Set the index of the book in this series." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:446 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:63 +msgid "Set the rating. Should be a number between 1 and 5." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:450 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:65 +msgid "Set the ISBN of the book." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:454 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:67 +msgid "Set the tags for the book. Should be a comma separated list." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:458 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:69 +msgid "Set the book producer." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:462 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:71 +msgid "Set the language." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:562 +msgid "Could not find an ebook inside the archive" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:620 +msgid "Values of series index and rating must be numbers. Ignoring" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:740 +msgid "Converting input to HTML..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:763 +msgid "Running transforms on ebook..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:850 +msgid "Creating" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:57 +msgid "" +"Extract the contents of the generated EPUB file to the specified directory. " +"The contents of the directory are first deleted, so be careful." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:63 +msgid "" +"Turn off splitting at page breaks. Normally, input files are automatically " +"split at every page break into two files. This gives an output ebook that " +"can be parsed faster and with less resources. However, splitting is slow and " +"if your source file contains a very large number of page breaks, you should " +"turn off splitting on page breaks." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:74 +msgid "" +"Split all HTML files larger than this size (in KB). This is necessary as " +"most EPUB readers cannot handle large file sizes. The default of %defaultKB " +"is the size required for Adobe Digital Editions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:81 +msgid "" +"Normally, if the input file has no cover and you don't specify one, a " +"default cover is generated with the title, authors, etc. This option " +"disables the generation of this cover." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/fb2ml.py:144 +#: /home/kovid/work/calibre/src/calibre/ebooks/pml/pmlml.py:129 +#: /home/kovid/work/calibre/src/calibre/ebooks/rb/rbml.py:102 +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/txtml.py:77 +msgid "Table of Contents:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:32 +msgid "Do not insert a Table of Contents at the beginning of the book." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/output.py:21 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/output.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/pml/output.py:37 +#: /home/kovid/work/calibre/src/calibre/ebooks/rb/output.py:21 +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:35 +msgid "Add Table of Contents to beginning of the book." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:243 +msgid "" +"Traverse links in HTML files breadth first. Normally, they are traversed " +"depth first." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:250 +msgid "" +"Maximum levels of recursion when following links in HTML files. Must be non-" +"negative. 0 implies that no links in the root HTML file are followed. " +"Default is %default." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:259 +msgid "" +"Normally this input plugin re-arranges all the input files into a standard " +"folder hierarchy. Only use this option if you know what you are doing as it " +"can result in various nasty side effects in the rest of of the conversion " +"pipeline." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:267 +msgid "" +"Average line length for line breaking if the HTML is from a previous partial " +"conversion of a PDF file. Default is %default which disables this." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lit/from_any.py:47 +msgid "Creating LIT file from EPUB..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:320 +msgid "\tBook Designer file detected." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:322 +msgid "\tParsing HTML..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:345 +msgid "\tBaen file detected. Re-parsing..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:361 +msgid "Written preprocessed HTML to " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:379 +msgid "Processing %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:393 +msgid "\tConverting to BBeB..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:539 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:552 +msgid "Could not parse file: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:544 +msgid "%s is an empty file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:564 +msgid "Failed to parse link %s %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:608 +msgid "Cannot add link %s to TOC" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:957 +msgid "Unable to process image %s. Error: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1002 +msgid "Unable to process interlaced PNG %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1017 +msgid "" +"Could not process image: %s\n" +"%s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1772 +msgid "" +"An error occurred while processing a table: %s. Ignoring table markup." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1774 +msgid "" +"Bad table:\n" +"%s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1796 +msgid "Table has cell that is too large" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1862 +msgid "Could not read cover image: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1865 +msgid "Cannot read from: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1994 +msgid "Failed to process opf file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:136 +msgid "" +"%prog book.lrf\n" +"Convert an LRF file into an LRS (XML UTF-8 encoded) file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:137 +msgid "Output LRS file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:139 +msgid "Do not save embedded image and font files to disk" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:158 +msgid "Parsing LRF..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:161 +msgid "Creating XML..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:163 +msgid "LRS written to " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrs/convert_from.py:267 +msgid "Could not read from thumbnail file:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrs/convert_from.py:287 +msgid "" +"%prog [options] file.lrs\n" +"Compile an LRS file into an LRF file." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrs/convert_from.py:288 +msgid "Path to output file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrs/convert_from.py:290 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:113 +msgid "Verbose processing" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrs/convert_from.py:292 +msgid "Convert LRS to LRS, useful for debugging." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:457 +msgid "Invalid LRF file. Could not set metadata." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:582 +msgid "" +"%prog [options] mybook.lrf\n" +"\n" +"\n" +"Show/edit the metadata in an LRF file.\n" +"\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:589 +msgid "Set the book title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:591 +msgid "Set sort key for the title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:593 +msgid "Set the author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:595 +msgid "Set sort key for the author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:597 +msgid "The category this book belongs to. E.g.: History" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:600 +msgid "Path to a graphic that will be set as this files' thumbnail" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:603 +msgid "" +"Path to a txt file containing the comment to be stored in the lrf file." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:607 +msgid "Extract thumbnail from LRF file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:608 +msgid "Set the publisher" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:609 +msgid "Set the book classification" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:610 +msgid "Set the book creator" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:611 +msgid "Set the book producer" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:613 +msgid "" +"Extract cover from LRF file. Note that the LRF format has no defined cover, " +"so we use some heuristics to guess the cover." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:615 +msgid "Set book ID" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:90 +msgid "Enable autorotation of images that are wider than the screen width." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:94 +msgid "Set the space between words in pts. Default is %default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:97 +msgid "Add a header to all the pages with title and author." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:100 +msgid "" +"Set the format of the header. %a is replaced by the author and %t by the " +"title. Default is %default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:104 +msgid "Add extra spacing below the header. Default is %default pt." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:107 +msgid "" +"Minimum paragraph indent (the indent of the first line of a paragraph) in " +"pts. Default: %default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:112 +msgid "" +"Render tables in the HTML as images (useful if the document has large or " +"complex tables)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:117 +msgid "" +"Multiply the size of text in rendered tables by this factor. Default is " +"%default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:121 +msgid "The serif family of fonts to embed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:124 +msgid "The sans-serif family of fonts to embed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:127 +msgid "The monospace family of fonts to embed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:152 +msgid "Comic" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:358 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:399 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1111 +msgid "Title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1112 +msgid "Author(s)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:169 +msgid "Publisher" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:361 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:49 +msgid "Producer" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:183 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:94 +msgid "Comments" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:370 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:349 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1055 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1115 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 +msgid "Tags" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:372 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:365 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:95 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 +msgid "Series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:373 +msgid "Language" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:375 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1054 +msgid "Timestamp" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:377 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:167 +msgid "Published" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:379 +msgid "Rights" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/amazon.py:78 +msgid "EDITORIAL REVIEW" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:19 +msgid "options" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:20 +msgid "" +"\n" +"Read/Write metadata from/to ebook files.\n" +"\n" +"Supported formats for reading metadata: %s\n" +"\n" +"Supported formats for writing metadata: %s\n" +"\n" +"Different file types support different kinds of metadata. If you try to set\n" +"some metadata on a file type that does not support it, the metadata will be\n" +"silently ignored.\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:39 +msgid "" +"Set the authors. Multiple authors should be separated by the & character. " +"Author names should be in the order Firstname Lastname." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:43 +msgid "" +"The version of the title to be used for sorting. If unspecified, and the " +"title is specified, it will be auto-generated from the title." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:47 +msgid "" +"String to be used when sorting by author. If unspecified, and the author(s) " +"are specified, it will be auto-generated from the author(s)." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:57 +msgid "Set the book category." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:74 +msgid "Get the cover from the ebook and save it at as the specified file." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:77 +msgid "" +"Specify the name of an OPF file. The metadata will be written to the OPF " +"file." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:80 +msgid "" +"Read metadata from the specified OPF file and use it to set metadata in the " +"ebook. Metadata specified on the command line will override metadata read " +"from the OPF file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:85 +msgid "Set the BookID in LRF files" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:148 +msgid "No file specified" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:163 +msgid "Original metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:180 +msgid "Changed metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:192 +msgid "OPF created in" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:198 +msgid "Cover saved to" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:200 +msgid "No cover found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:34 +msgid "Metadata download" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:111 +msgid "ratings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:111 +msgid "tags" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:112 +msgid "description/reviews" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:113 +msgid "Download %s from %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:137 +msgid "Downloads metadata from Google Books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:153 +msgid "Downloads metadata from isbndb.com" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:181 +msgid "" +"To use isbndb.com you must sign up for a %sfree account%s and enter your " +"access key below." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:189 +msgid "Downloads social metadata from amazon.com" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:94 +msgid "" +"\n" +"%prog [options] key\n" +"\n" +"Fetch metadata for books from isndb.com. You can specify either the\n" +"books ISBN ID or its title and author. If you specify the title and author,\n" +"then more than one book may be returned.\n" +"\n" +"key is the account key you generate after signing up for a free account from " +"isbndb.com.\n" +"\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:105 +msgid "The ISBN ID of the book you want metadata for." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:107 +msgid "The author whose book to search for." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:109 +msgid "The title of the book to search for." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:111 +msgid "The publisher of the book to search for." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:53 +msgid "LibraryThing.com timed out. Try again later." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:60 +msgid "" +"Could not fetch cover as server is experiencing high load. Please try again " +"later." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:61 +msgid " not found." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:64 +msgid "LibraryThing.com server error. Try again later." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:71 +msgid "" +"\n" +"%prog [options] ISBN\n" +"\n" +"Fetch a cover image for the book identified by ISBN from LibraryThing.com\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1083 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1328 +msgid "Cover" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:22 +msgid "Modify images to meet Palm device size limitations." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:26 +msgid "When present, use author sort field as author." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:30 +msgid "" +"Don't add Table of Contents to end of book. Useful if the book has its own " +"table of contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:33 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:56 +msgid "Title for any generated in-line table of contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:37 +msgid "Disable compression of the file contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:102 +msgid "All articles" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1329 +msgid "Title Page" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1330 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:188 +msgid "Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1331 +msgid "Index" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1332 +msgid "Glossary" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1333 +msgid "Acknowledgements" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1334 +msgid "Bibliography" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1335 +msgid "Colophon" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1336 +msgid "Copyright" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1337 +msgid "Dedication" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1338 +msgid "Epigraph" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1339 +msgid "Foreword" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1340 +msgid "List of Illustrations" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1341 +msgid "List of Tables" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1342 +msgid "Notes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1343 +msgid "Preface" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1344 +msgid "Main Text" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:39 +msgid "%s format books are not supported" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:54 +msgid "HTML TOC generation options." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:108 +msgid "Book Jacket" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/split.py:34 +msgid "" +"Could not find reasonable point at which to split: %s Sub-tree size: %d KB" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:68 +msgid "Unnamed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/writer.py:32 +msgid "OPF/NCX/etc. generation options." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/writer.py:35 +msgid "OPF version to generate. Default is %default." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/writer.py:37 +msgid "" +"Generate an Adobe \"page-map\" file if pagination information is available." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/reader132.py:126 +msgid "Footnotes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/reader132.py:133 +msgid "Sidebar" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:22 +#: /home/kovid/work/calibre/src/calibre/ebooks/tcr/input.py:23 +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:22 +msgid "" +"Normally calibre treats blank lines as paragraph markers. With this option " +"it will assume that every line represents a paragraph instead." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:26 +#: /home/kovid/work/calibre/src/calibre/ebooks/tcr/input.py:27 +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:26 +msgid "" +"Normally calibre treats blank lines as paragraph markers. With this option " +"it will assume that every line starting with an indent (either a tab or 2+ " +"spaces) represents a paragraph. Paragraphs end when the next line that " +"starts with an indent is reached." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/output.py:23 +msgid "Format to use inside the pdb container. Choices are:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/output.py:27 +msgid "" +"Specify the character encoding of the output document. The default is " +"cp1252. Note: This option is not honored by all formats." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:24 +msgid "Do not extract images from the document" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:26 +msgid "" +"Scale used to determine the length at which a line should be unwrapped. " +"Valid values are a decimal between 0 and 1. The default is 0.5, this is the " +"median line length." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:30 +msgid "Use the new PDF conversion engine." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/cli.py:31 +msgid "" +"command ...\n" +"\n" +"command can be one of the following:\n" +"[%%commands]\n" +"\n" +"Use %prog command --help to get more information about a specific command\n" +"\n" +"Manipulate a PDF.\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:29 +msgid "" +"[options] file.pdf\n" +"\n" +"Crop a PDF file.\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:38 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/decrypt.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/encrypt.py:34 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/merge.py:36 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/reverse.py:34 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:33 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:41 +msgid "" +"Path to output file. By default a file is created in the current directory." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:41 +msgid "Number of pixels to crop from the left most x (default is %s)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:44 +msgid "Number of pixels to crop from the left most y (default is %s)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:47 +msgid "Number of pixels to crop from the right most x (default is %s)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:50 +msgid "Number of pixels to crop from the right most y (default is %s)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:53 +msgid "" +"A file generated by ghostscript which allows each page to be individually " +"cropped `gs -dSAFER -dNOPAUSE -dBATCH -sDEVICE=bbox file.pdf 2> bounding`" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:73 +msgid "Crop Options:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:73 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/decrypt.py:60 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/encrypt.py:54 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/merge.py:56 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/reverse.py:54 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:53 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:61 +msgid "Options to control the transformation of pdf" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/decrypt.py:23 +msgid "" +"[options] file.pdf password\n" +"\n" +"Decrypt a PDF.\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/decrypt.py:60 +msgid "Decrypt Options:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/encrypt.py:25 +msgid "" +"[options] file.pdf password\n" +"\n" +"Encrypt a PDF.\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/encrypt.py:54 +msgid "Encrypt Options:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:21 +msgid "" +"file.pdf ...\n" +"\n" +"Get info about a PDF.\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:46 +msgid "Author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:47 +msgid "Subject" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:48 +msgid "Creator" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:50 +msgid "Pages" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:51 +msgid "File Size" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:52 +msgid "PDF Version" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/merge.py:25 +msgid "" +"[options] file1.pdf file2.pdf ...\n" +"\n" +"Metadata will be used from the first PDF specified.\n" +"\n" +"Merges individual PDFs.\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/merge.py:56 +msgid "Merge Options:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/reverse.py:25 +msgid "" +"[options] file.pdf\n" +"\n" +"Reverse a PDF.\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/reverse.py:54 +msgid "Reverse Options:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:24 +msgid "" +"file.pdf degrees\n" +"\n" +"Rotate pages of a PDF clockwise.\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:53 +msgid "Rotate Options:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:25 +msgid "" +"\n" +"%prog %%name [options] file.pdf page_to_split_on ...\n" +"%prog %%name [options] file.pdf page_range_to_split_on ...\n" +"\t\n" +"Ex.\n" +"\t\n" +"%prog %%name file.pdf 6\n" +"%prog %%name file.pdf 6-12\n" +"%prog %%name file.pdf 6-12 8 10 9-20\n" +"\n" +"Split a PDF.\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:61 +msgid "Split Options:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:31 +msgid "" +"The unit of measure. Default is inch. Choices are %s Note: This does not " +"override the unit for margins!" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:36 +msgid "" +"The size of the paper. This size will be overridden when an output profile " +"is used. Default is letter. Choices are %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:40 +msgid "" +"Custom size of the document. Use the form widthxheight EG. `123x321` to " +"specify the width and height. This overrides any specified paper-size." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:45 +msgid "The orientation of the page. Default is portrait. Choices are %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/pdftohtml.py:55 +msgid "Could not find pdftohtml, check it is in your PATH" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pml/output.py:33 +msgid "" +"Specify the character encoding of the output document. The default is cp1252." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:199 +msgid "" +"This RTF file has a feature calibre does not support. Convert it to HTML " +"first and then try it." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:23 +msgid "" +"Specify the character encoding of the output document. The default is utf-8." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:27 +msgid "" +"Specify the compression level to use. Scale 1 - 10. 1 being the lowest " +"compression but the fastest and 10 being the highest compression but the " +"slowest." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:32 +msgid "" +"Run the text input through the markdown pre-processor. To learn more about " +"markdown see" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:35 +msgid "Do not insert a Table of Contents into the output text." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:24 +msgid "" +"Type of newline to use. Options are %s. Default is 'system'. Use 'old_mac' " +"for compatibility with Mac OS 9 and earlier. For Mac OS X use 'unix'. " +"'system' will default to the newline type used by this OS." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:30 +msgid "" +"Specify the character encoding of the output document. The default is utf-8. " +"Note: This option is not honored by all formats." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:38 +msgid "" +"The maximum number of characters per line. This splits on the first space " +"before the specified value. If no space is found the line will be broken at " +"the space after and will exceed the specified value. Also, there is a " +"minimum of 25 characters. Use 0 to disable line splitting." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:45 +msgid "" +"Force splitting on the max-line-length value when no space is present. Also " +"allows max-line-length to be below the minimum" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:28 +msgid "Send file to storage card instead of main memory by default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:30 +msgid "Confirm before deleting" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:32 +msgid "Toolbar icon size" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:34 +msgid "Show button labels in the toolbar" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:36 +msgid "Main window geometry" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:38 +msgid "Notify when a new version is available" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:40 +msgid "Use Roman numerals for series number" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:42 +msgid "Sort tags list by popularity" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:44 +msgid "Number of covers to show in the cover browsing mode" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:46 +msgid "Defaults for conversion to LRF" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:48 +msgid "Options for the LRF ebook viewer" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:51 +msgid "Formats that are viewed using the internal viewer" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:53 +msgid "Columns to be displayed in the book list" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 +msgid "Automatically launch content server on application startup" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 +msgid "Oldest news kept in database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 +msgid "Show system tray icon" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:58 +msgid "Upload downloaded news to device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:60 +msgid "Delete books from library after uploading to device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:62 +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:64 +msgid "Disable notifications from the system tray icon" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:66 +msgid "Default action to perform when send to device button is clicked" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:88 +msgid "Maximum number of waiting worker processes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:90 +msgid "Download social metadata (tags/rating/etc.)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:92 +msgid "Limit max simultaneous jobs to number of CPUs" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:439 +msgid "Copied" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 +msgid "Copy" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 +msgid "Copy to Clipboard" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:395 +msgid "Choose Files" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:54 +msgid "Searching in" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:163 +msgid "Adding..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:176 +msgid "Searching in all sub-directories..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:189 +msgid "Path error" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:190 +msgid "The specified directory could not be processed." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:495 +msgid "No books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:195 +msgid "No books found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:261 +msgid "Added" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:274 +msgid "Adding failed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:275 +msgid "" +"The add books process seems to have hung. Try restarting calibre and adding " +"the books in smaller increments, until you find the problem book." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:287 +msgid "Duplicates found!" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:288 +msgid "" +"Books with the same title as the following already exist in the database. " +"Add them anyway?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:291 +msgid "Adding duplicates..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:352 +msgid "Saving..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:405 +msgid "Saved" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:16 +msgid "CSV/XML Options" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:18 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:13 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:20 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input.py:13 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:13 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output.py:18 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:13 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:17 +msgid "Options specific to" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:18 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:20 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output.py:18 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:17 +msgid "output" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:36 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:41 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:44 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input_ui.py:31 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template_ui.py:41 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:107 +msgid "Form" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:37 +msgid "Fields to include in output:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:17 +msgid "E-book options" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:256 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1416 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1430 +msgid "Catalog" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:52 +msgid "Tags to exclude as genres (regex):" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:53 +msgid "'Don't include this book' tag:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:54 +msgid "'Mark this book as read' tag:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:55 +msgid "Additional note tag prefix:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:28 +msgid "Tab template for catalog.ui" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:36 +msgid "" +"For settings that cannot be specified in this dialog, use the values saved " +"in a previous conversion (if they exist) instead of using the defaults " +"specified in the Preferences" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:67 +msgid "Bulk Convert" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 +msgid "Options specific to the output format." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:15 +msgid "Comic Input" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:13 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input.py:13 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:13 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:13 +msgid "input" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:94 +msgid "&Number of Colors:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96 +msgid "Disable &normalize" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 +msgid "Keep &aspect ratio" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:98 +msgid "Disable &Sharpening" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:104 +msgid "Disable &Trimming" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:103 +msgid "&Wide" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:99 +msgid "&Landscape" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:101 +msgid "&Right to left" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:100 +msgid "Don't so&rt" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:102 +msgid "De&speckle" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:95 +msgid "&Disable comic processing" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:111 +msgid "&Output format:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:19 +msgid "Debug" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:21 +msgid "Debug the conversion process." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:51 +msgid "Choose debug folder" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:57 +msgid "Invalid debug directory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:58 +msgid "Failed to create debug directory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:50 +msgid "" +"Choose a folder to put the debug output into. If you specify a folder, " +"calibre will place a lot of debug output into it. This will be useful in " +"understanding the conversion process and figuring out the correct values for " +"conversion parameters like Table of Contents and Chapter Detection." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:570 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:387 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:391 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:396 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:398 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:267 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:269 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:270 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:332 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:180 +msgid "..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:54 +msgid "" +"The debug process outputs the intermediate HTML generated at various stages " +"of the conversion process. This HTML can sometimes serve as a good starting " +"point for hand editing a conversion." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:15 +msgid "EPUB Output" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:42 +msgid "Do not &split on page breaks" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:43 +msgid "Split files &larger than:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:44 +msgid " KB" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:45 +msgid "No default &cover" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:12 +msgid "FB2 Input" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:29 +msgid "Do not insert a &Table of Contents at the beginning of the book." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:14 +msgid "FB2 Output" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:29 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:37 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:29 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:47 +msgid "&Inline TOC" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:99 +msgid "Font rescaling wizard" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:100 +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.

" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:103 +msgid "&Output document" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:109 +msgid "&Base font size:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:122 +msgid "Font size &key:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:122 +msgid " pt" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:107 +msgid "Use &default values" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:108 +msgid "&Input document" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:111 +msgid "&Font size: " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:113 +msgid " will map to size: " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:114 +msgid "0.0 pt" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:16 +msgid "Look & Feel" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:18 +msgid "Control the look and feel of the output" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:119 +msgid "&Disable font size rescaling" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:120 +msgid "Base &font size:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:123 +msgid "Wizard to help you choose an appropriate font size key" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:125 +msgid "Line &height:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:127 +msgid "Input character &encoding:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:128 +msgid "Remove &spacing between paragraphs" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:129 +msgid "Indent size:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:130 +msgid "" +"

When calibre removes inter paragraph spacing, it automatically sets a " +"paragraph indent, to ensure that paragraphs can be easily distinguished. " +"This option controls the width of that indent." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:131 +msgid " em" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:132 +msgid "Insert &blank line" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:133 +msgid "No text &justification" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:134 +msgid "&Linearize tables" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:135 +msgid "&Transliterate unicode characters to ASCII." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:136 +msgid "Extra &CSS" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:19 +msgid "LRF Output" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:116 +msgid "Enable &autorotation of wide images" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:117 +msgid "&Wordspace:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:119 +msgid "Minimum para. &indent:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:121 +msgid "Render &tables as images" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:122 +msgid "Text size multiplier for text in rendered tables:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:123 +msgid "Add &header" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:124 +msgid "Header &separation:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:126 +msgid "Header &format:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:127 +msgid "&Embed fonts" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:128 +msgid "&Serif font family:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:129 +msgid "S&ans-serif font family:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:130 +msgid "&Monospaced font family:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:41 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:189 +msgid "Metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:43 +msgid "" +"Set the metadata. The output file will contain as much of this metadata as " +"possible." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:99 +msgid "Choose cover for " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:106 +msgid "Cannot read" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:107 +msgid "You do not have permission to read the file: " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:183 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:115 +msgid "Error reading file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:116 +msgid "

There was an error reading from file:
" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:184 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:124 +msgid " is not a valid picture" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393 +msgid "Book Cover" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:167 +msgid "Use cover from &source file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:394 +msgid "Change &cover image:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:395 +msgid "Browse for an image to use as the cover of this book." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:354 +msgid "&Title: " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:355 +msgid "Change the title of this book" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:358 +msgid "&Author(s): " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:174 +msgid "Author So&rt:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:175 +msgid "" +"Change the author(s) of this book. Multiple authors should be separated by a " +"comma" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367 +msgid "&Publisher: " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:368 +msgid "Ta&gs: " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:369 +msgid "" +"Tags categorize the book. This is particularly useful while searching. " +"

They can be any words or phrases, separated by commas." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:372 +msgid "&Series:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:181 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:373 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374 +msgid "List of known series. You can add new series." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:379 +msgid "Book " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:15 +msgid "MOBI Output" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:45 +msgid "&Title for Table of Contents:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:46 +msgid "Rescale images for &Palm devices" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:47 +msgid "Use author &sort for author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:48 +msgid "Disable compression of the file contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:49 +msgid "Do not add Table of Contents to book" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup.py:35 +msgid "Page Setup" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:111 +msgid "&Output profile:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:112 +msgid "Profile description" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:113 +msgid "&Input profile:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:114 +msgid "Margins" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:115 +msgid "&Left:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:117 +msgid "&Top:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:119 +msgid "&Right:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:121 +msgid "&Bottom:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input.py:12 +msgid "PDB Input" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input_ui.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:43 +msgid "Treat each &line as a paragraph" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input_ui.py:33 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:44 +msgid "Assume print formatting" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output.py:16 +msgid "PDB Output" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:36 +msgid "&Format:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:12 +msgid "PDF Input" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:39 +msgid "Line &Un-Wrapping Factor:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:40 +msgid "No &Images" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output.py:17 +msgid "PDF Output" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:40 +msgid "&Paper Size:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:41 +msgid "&Orientation:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output.py:14 +msgid "RB Output" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1637 +msgid "Choose the format to view" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:83 +msgid "Cannot build regex using the GUI builder without a book." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:83 +msgid "No formats available" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:99 +msgid "Open book" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:99 +msgid "~" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:46 +msgid "Regex Builder" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:47 +msgid "Preview" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:48 +msgid "Regex:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:171 +msgid "Convert" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:196 +msgid "Options specific to the input format." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:48 +msgid "Dialog" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:109 +msgid "&Input format:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:110 +msgid "Use &saved conversion settings for individual books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17 +msgid "" +"Structure\n" +"Detection" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:19 +msgid "" +"Fine tune the detection of chapter headings and other document structure." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:34 +msgid "Detect chapters at (XPath expression):" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:35 +msgid "Insert page breaks before (XPath expression):" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:37 +msgid "Header regular expression:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:40 +msgid "Footer regular expression:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:71 +msgid "Invalid regular expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:72 +msgid "Invalid regular expression: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:38 +msgid "Invalid XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39 +msgid "The XPath expression %s is invalid." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:60 +msgid "Chapter &mark:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:61 +msgid "Remove first &image" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:62 +msgid "Insert &metadata as page at start of book" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:63 +msgid "&Preprocess input file to possibly improve structure detection" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:64 +msgid "Remove F&ooter" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:65 +msgid "Remove H&eader" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:16 +msgid "" +"Table of\n" +"Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:18 +msgid "Control the creation/conversion of the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:29 +msgid "Level &1 TOC (XPath expression):" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:30 +msgid "Level &2 TOC (XPath expression):" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:31 +msgid "Level &3 TOC (XPath expression):" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:63 +msgid "Do not add &detected chapters to the Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:64 +msgid "Number of &links to add to Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:65 +msgid "Chapter &threshold" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:66 +msgid "&Force use of auto-generated Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:67 +msgid "TOC &Filter:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:12 +msgid "TXT Input" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:45 +msgid "Process using markdown" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:46 +msgid "" +"

Markdown is a simple markup language for text files, that allows for " +"advanced formatting. To learn more visit markdown." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:47 +msgid "Do not insert Table of Contents into output text when using markdown" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:16 +msgid "TXT Output" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:46 +msgid "&Line ending style:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:48 +msgid "&Maximum line length:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:49 +msgid "Force maximum line lenght" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:41 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:50 +msgid "TextLabel" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:51 +msgid "Use a wizard to help construct the XPath expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:68 +msgid "Match HTML &tags with tag name:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:69 +msgid "*" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:70 +msgid "a" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:71 +msgid "br" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:72 +msgid "div" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:73 +msgid "h1" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:74 +msgid "h2" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:75 +msgid "h3" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:76 +msgid "h4" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:77 +msgid "h5" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:78 +msgid "h6" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:79 +msgid "hr" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:80 +msgid "span" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:81 +msgid "Having the &attribute:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:82 +msgid "With &value:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:83 +msgid "(A regular expression)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:84 +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/device.py:38 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:132 +msgid "No details available." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:120 +msgid "Device no longer connected." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:208 +msgid "Get device information" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:219 +msgid "Get list of books on device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:228 +msgid "Send metadata to device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:237 +msgid "Upload %d books to device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:252 +msgid "Delete books from device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:269 +msgid "Download books from device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:279 +msgid "View book on device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:286 +msgid "and delete from library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:307 +msgid "Set default send to device action" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:323 +msgid "Email to" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:341 +msgid "Send to main memory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:336 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:343 +msgid "Send to storage card A" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:338 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:345 +msgid "Send to storage card B" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:348 +msgid "Send specific format to main memory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:350 +msgid "Send specific format to storage card A" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:352 +msgid "Send specific format to storage card B" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:496 +msgid "selected to send" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:501 +msgid "Choose format to send to device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:508 +msgid "No device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:509 +msgid "Cannot send: No device is connected" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:512 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:516 +msgid "No card" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:513 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:517 +msgid "Cannot send: Device has no storage card" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:558 +msgid "E-book:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:561 +msgid "Attached, you will find the e-book" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:177 +msgid "by" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:563 +msgid "in the %s format." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:576 +msgid "Sending email to" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:606 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:613 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:705 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:765 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:888 +msgid "No suitable formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:607 +msgid "Auto convert the following books before sending via email?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:614 +msgid "" +"Could not email the following books as no suitable formats were found:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:632 +msgid "Failed to email books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:633 +msgid "Failed to email the following books:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:637 +msgid "Sent by email:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:664 +msgid "News:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:665 +msgid "Attached is the" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:676 +msgid "Sent news to" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:766 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:882 +msgid "Auto convert the following books before uploading to the device?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:735 +msgid "Sending catalogs to device." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:796 +msgid "Sending news to device." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:850 +msgid "Sending books to device." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:889 +msgid "" +"Could not upload the following books to the device, as no suitable formats " +"were found. Convert the book(s) to a format supported by your device first." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:937 +msgid "No space on device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:938 +msgid "" +"

Cannot upload books to device there is no more free space available " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:75 +msgid "Select available formats and their order for this device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:79 +msgid "Use sub directories" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:81 +msgid "Save &template:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1050 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:92 +msgid "Path" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 +msgid "Formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:68 +msgid "Fit &cover to view" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:69 +msgid "&Previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:70 +msgid "&Next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:37 +msgid "My Books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:262 +msgid "Generate catalog" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:68 +msgid "Catalog &format:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:69 +msgid "" +"Catalog &title (existing catalog with the same title will be replaced):" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:70 +msgid "&Send catalog to device automatically" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:71 +msgid "Catalog options" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:72 +msgid "Generate catalog for {0} books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:40 +msgid "Choose Format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:34 +msgid "Set defaults for conversion of comics (CBR/CBZ files)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:49 +msgid "Set options for converting %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:92 +msgid "&Title:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:93 +msgid "&Author(s):" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:95 +msgid "&Profile:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:170 +msgid "%(plugin_type)s %(plugins)s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:171 +msgid "plugins" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:180 +msgid "" +"\n" +"Customization: " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:196 +msgid "Conversion" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:196 +msgid "General" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:196 +msgid "Interface" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:197 +msgid "Add/Save" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:197 +msgid "" +"Email\n" +"Delivery" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:198 +msgid "Advanced" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:198 +msgid "" +"Content\n" +"Server" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:198 +msgid "Plugins" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:216 +msgid "Auto send" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:216 +msgid "Email" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:221 +msgid "Formats to email. The first matching format will be sent." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:222 +msgid "" +"If checked, downloaded news will be automatically mailed
to this email " +"address (provided it is in one of the listed formats)." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:296 +msgid "new email address" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:477 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:821 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1246 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 +msgid "Error" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:478 +msgid "Failed to install command line tools." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:481 +msgid "Command line tools installed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:482 +msgid "Command line tools installed in" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:483 +msgid "" +"If you move calibre.app, you have to re-install the command line tools." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:534 +msgid "No valid plugin path" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:535 +msgid "%s is not a valid plugin path" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:538 +msgid "Choose plugin" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:550 +msgid "Plugin cannot be disabled" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551 +msgid "The plugin: %s cannot be disabled" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:560 +msgid "Plugin not customizable" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:561 +msgid "Plugin: %s does not need customization" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:569 +msgid "Customize" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:607 +msgid "Cannot remove builtin plugin" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:608 +msgid " cannot be removed. It is a builtin plugin. Try disabling it instead." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:641 +msgid "Error log:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:648 +msgid "Access log:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:676 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:659 +msgid "Failed to start content server" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:550 +msgid "Select location for books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:708 +msgid "Invalid size" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:709 +msgid "The size %s is invalid. must be of the form widthxheight" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:762 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:767 +msgid "Invalid database location" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:763 +msgid "Invalid database location " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:764 +msgid "
Must be a directory." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:768 +msgid "Invalid database location.
Cannot write to " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:802 +msgid "Checking database integrity" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:822 +msgid "Failed to check database integrity" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:827 +msgid "Some inconsistencies found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:828 +msgid "" +"The following books had formats listed in the database that are not actually " +"available. The entries for the formats have been removed. You should check " +"them manually. This can happen if you manipulate the files in the library " +"folder directly." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:100 +msgid "TabWidget" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:101 +msgid "" +"Here you can control how calibre will read metadata from the files you add " +"to it. calibre can either read metadata from the contents of the file, or " +"from the filename." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:102 +msgid "Read metadata only from &file name" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:103 +msgid "" +"Swap the firstname and lastname of the author. This affects only metadata " +"read from file names." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:104 +msgid "&Swap author firstname and lastname" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:105 +msgid "&Configure metadata from file name" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:106 +msgid "&Adding books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:107 +msgid "" +"Here you can control how calibre will save your books when you click the " +"Save to Disk button:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:108 +msgid "Save &cover separately" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:109 +msgid "Update &metadata in saved copies" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:110 +msgid "Save metadata in &OPF file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:111 +msgid "Convert non-English characters to &English equivalents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:112 +msgid "Format &dates as:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:113 +msgid "File &formats to save:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:114 +msgid "Replace space with &underscores" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:115 +msgid "Change paths to &lowercase" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:116 +msgid "&Saving books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:117 +msgid "" +"Here you can control how calibre will save your books when you click the " +"Send to Device button. This setting can be overriden for individual devices " +"by customizing the device interface plugins in Preferences->Plugins" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:118 +msgid "Sending to &device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:366 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 +msgid "Preferences" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:502 +msgid "" +"&Location of ebooks (The ebooks are stored in folders sorted by author and " +"metadata is stored in the file metadata.db)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:503 +msgid "Browse for the new database location" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 +msgid "Show notification when &new version is available" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 +msgid "Download &social metadata (tags/ratings/etc.) by default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507 +msgid "Default network &timeout:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 +msgid "" +"Set the default timeout for network fetches (i.e. anytime we go out to the " +"internet to get information)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 +msgid " seconds" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 +msgid "Choose &language (requires restart):" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 +msgid "Normal" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 +msgid "High" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 +msgid "Low" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 +msgid "Job &priority:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 +msgid "Preferred &output format:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 +msgid "Preferred &input format order:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 +msgid "Use &Roman numerals for series number" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 +msgid "Enable system &tray icon (needs restart)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 +msgid "Show ¬ifications in system tray" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 +msgid "Show cover &browser in a separate window (needs restart)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 +msgid "Search as you type" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 +msgid "Automatically send downloaded &news to ebook reader" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 +msgid "&Delete news from library when it is automatically sent to reader" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 +msgid "&Number of covers to show in browse mode (needs restart):" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 +msgid "Toolbar" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 +msgid "Large" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 +msgid "Medium" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 +msgid "Small" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 +msgid "&Button size in toolbar" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 +msgid "Show &text in toolbar buttons" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 +msgid "Select visible &columns in library view" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 +msgid "Use internal &viewer for:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 +msgid "Add an email address to which to send books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +msgid "&Add email" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +msgid "Make &default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 +msgid "&Remove email" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 +msgid "calibre can send your books to you (or your reader) by email" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 +msgid "&Maximum number of waiting worker processes (needs restart):" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 +msgid "&Check database integrity" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 +msgid "&Install command line tools" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 +msgid "Open calibre &configuration directory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 +msgid "Limit the max. simultaneous jobs to the available CPU &cores" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 +msgid "Debug &device detection" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 +msgid "" +"calibre contains a network server that allows you to access your book " +"collection using a browser from anywhere in the world. Any changes to the " +"settings will only take effect after a server restart." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549 +msgid "Server &port:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117 +msgid "&Username:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119 +msgid "&Password:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 +msgid "" +"If you leave the password blank, anyone will be able to access your book " +"collection using the web interface." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553 +msgid "" +"The maximum size (widthxheight) for displayed covers. Larger covers are " +"resized. " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 +msgid "Max. &cover size:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212 +msgid "&Show password" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 +msgid "Max. &OPDS items per query:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 +msgid "&Start Server" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558 +msgid "St&op Server" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 +msgid "&Test Server" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560 +msgid "Run server &automatically on startup" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561 +msgid "View &server logs" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46 +msgid "" +"

Remember to leave calibre running as the server only runs as long as " +"calibre is running.\n" +"

Stanza should see your calibre collection automatically. If not, try " +"adding the URL http://myhostname:8080 as a new catalog in the Stanza reader " +"on your iPhone. Here myhostname should be the fully qualified hostname or " +"the IP address of the computer calibre is running on." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:564 +msgid "" +"Here you can customize the behavior of Calibre by controlling what plugins " +"it uses." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:565 +msgid "Enable/&Disable plugin" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:566 +msgid "&Customize plugin" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:567 +msgid "&Remove plugin" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:568 +msgid "Add new plugin" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:569 +msgid "Plugin &file:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:571 +msgid "&Add" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/device_debug.py:21 +msgid "Getting debug information" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/device_debug.py:22 +msgid "Copy to &clipboard" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/device_debug.py:24 +msgid "Debug device detection" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template.py:44 +msgid "Invalid template" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template.py:45 +msgid "The template %s is invalid:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template_ui.py:42 +msgid "Save &template" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template_ui.py:43 +msgid "" +"By adjusting the template below, you can control what folders the files are " +"saved in and what filenames they are given. You can use the / character to " +"indicate sub-folders. Available metadata variables are described below. If a " +"particular book does not have some metadata, the variable will be replaced " +"by the empty string." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template_ui.py:44 +msgid "Available variables:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/social.py:34 +msgid "Downloading social metadata, please wait..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:48 +msgid "Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:50 +msgid "&Show this warning again" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/conversion_error_ui.py:41 +msgid "ERROR" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:58 +msgid "Author Sort" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:60 +msgid "ISBN" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:150 +msgid "Finding metadata..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:162 +msgid "Could not find metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:163 +msgid "The metadata download seems to have stalled. Try again later." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:172 +msgid "Warning" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:173 +msgid "Could not fetch metadata from:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:177 +msgid "No metadata found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:178 +msgid "" +"No metadata found, try adjusting the title and author or the ISBN key." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:81 +msgid "Fetch metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:82 +msgid "" +"

calibre can find metadata for your books from two locations: Google " +"Books and isbndb.com.

To use isbndb.com you must sign up for a " +"free account and enter your access key " +"below." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:83 +msgid "&Access Key:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:84 +msgid "Fetch" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85 +msgid "Matches" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:86 +msgid "" +"Select the book that most closely matches your copy from the list below" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87 +msgid "Download &social metadata (tags/rating/etc.) for the selected book" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/job_view_ui.py:37 +msgid "Details of job" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:44 +msgid "Active Jobs" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:45 +msgid "&Stop selected job" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:46 +msgid "Show job &details" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:47 +msgid "Stop &all jobs" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:136 +msgid "Edit Meta information" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:353 +msgid "Meta information" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:139 +msgid "A&utomatically set author sort" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:140 +msgid "Author s&ort: " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360 +msgid "" +"Specify how the author(s) of this book should be sorted. For example Charles " +"Dickens should be sorted as Dickens, Charles." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:363 +msgid "&Rating:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:365 +msgid "Rating of this book. 0-5 stars" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:366 +msgid " stars" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:147 +msgid "Add ta&gs: " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:370 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371 +msgid "Open Tag Editor" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:151 +msgid "&Remove tags:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:152 +msgid "Comma separated list of tags to remove from the books. " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:156 +msgid "Remove &format:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:157 +msgid "&Swap title and author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:123 +msgid "Not a valid picture" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:136 +msgid "Choose formats for " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1004 +msgid "Books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:165 +msgid "No permission" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:166 +msgid "You do not have permission to read the following files:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:190 +msgid "No format selected" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:201 +msgid "Could not read metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:202 +msgid "Could not read metadata from %s format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:247 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:253 +msgid "Could not read cover" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:248 +msgid "Could not read cover from %s format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:254 +msgid "The cover in the %s format is invalid" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:291 +msgid "Abort the editing of all remaining books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:407 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:412 +msgid "This ISBN number is valid" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:415 +msgid "This ISBN number is invalid" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:511 +msgid "Downloading cover..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:523 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:528 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:534 +msgid "Cannot fetch cover" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:535 +msgid "Could not fetch cover.
" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:525 +msgid "The download timed out." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:529 +msgid "Could not find cover for this book. Try specifying the ISBN first." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:541 +msgid "Bad cover" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:542 +msgid "The cover is not a valid picture" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:572 +msgid "There were errors" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:573 +msgid "There were errors downloading social metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:597 +msgid "Cannot fetch metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:598 +msgid "You must specify at least one of ISBN, Title, Authors or Publisher" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:660 +msgid "Permission denied" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:661 +msgid "Could not open %s. Is it being used by another program?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:352 +msgid "Edit Meta Information" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:356 +msgid "Swap the author and title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:359 +msgid "Author S&ort: " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:361 +msgid "" +"Automatically create the author sort entry based on the current author entry" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375 +msgid "Remove unused series (Series that have no books)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:377 +msgid "IS&BN:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:378 +msgid "Publishe&d:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:381 +msgid "dd MMM yyyy" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:382 +msgid "&Date:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:383 +msgid "&Comments" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:384 +msgid "&Fetch metadata from server" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:385 +msgid "Available Formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:386 +msgid "Add a new format for this book to the database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:388 +msgid "Remove the selected formats for this book from the database." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:390 +msgid "Set the cover for the book from the selected format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:392 +msgid "Update metadata from the metadata in the selected format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:397 +msgid "Reset cover to default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:399 +msgid "Download &cover" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:56 +msgid "Password needed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress.py:53 +msgid "Aborting..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:117 +msgid "Need username and password" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:118 +msgid "You must provide a username and/or password to use this news source." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:169 +msgid "Created by: " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:176 +msgid "Last downloaded: never" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:191 +msgid "%d days, %d hours and %d minutes ago" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:193 +msgid "Last downloaded" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:190 +msgid "Schedule news download" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:216 +msgid "Add a custom news source" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:278 +msgid "Recipes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:192 +msgid "Download all scheduled recipes at once" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:193 +msgid "Download &all scheduled" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:194 +msgid "blurb" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:195 +msgid "&Schedule for download:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:206 +msgid "Every " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:197 +msgid "day" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:198 +msgid "Monday" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:199 +msgid "Tuesday" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:200 +msgid "Wednesday" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:201 +msgid "Thursday" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:202 +msgid "Friday" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203 +msgid "Saturday" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:204 +msgid "Sunday" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:205 +msgid "at" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:207 +msgid "" +"Interval at which to download this recipe. A value of zero means that the " +"recipe will be downloaded every hour." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:208 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:263 +msgid " days" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:209 +msgid "&Account" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213 +msgid "For the scheduling to work, you must leave calibre running." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:214 +msgid "&Schedule" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:215 +msgid "Add &title as tag" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:216 +msgid "&Extra tags:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:217 +msgid "&Advanced" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:218 +msgid "&Download now" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:219 +msgid "" +"Delete downloaded news older than the specified number of days. Set to zero " +"to disable." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:221 +msgid "Delete downloaded news older than " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:36 +msgid "contains" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:37 +msgid "The text to search for. It is interpreted as a regular expression." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:38 +msgid "" +"

Negate this match. That is, only return results that do not match " +"this query." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:39 +msgid "Negate" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:88 +msgid "Advanced Search" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:89 +msgid "Find entries that have..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:90 +msgid "&All these words:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:91 +msgid "This exact &phrase:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:92 +msgid "&One or more of these words:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:93 +msgid "But dont show entries that have..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:94 +msgid "Any of these &unwanted words:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:95 +msgid "" +"See the User Manual for more help" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/select_formats.py:45 +msgid "Choose formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:66 +msgid "Are your sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:67 +msgid "" +"The following tags are used by one or more books. Are you certain you want " +"to delete them?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:123 +msgid "Tag Editor" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:124 +msgid "A&vailable tags" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:125 +msgid "" +"Delete tag from database. This will unapply the tag from all books and then " +"remove it from the database." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:127 +msgid "Apply tag to current book" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:129 +msgid "A&pplied tags" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:130 +msgid "Unapply (remove) tag from current book" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:132 +msgid "&Add tag:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:133 +msgid "" +"If the tag you want is not in the available list, you can add it here. " +"Accepts a comma separated list of tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:134 +msgid "Add tag to available tags and apply it to current book" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:50 +msgid "Test email settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:51 +msgid "Send test mail from %s to:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:115 +msgid "&Test" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:127 +msgid "No recipe selected" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:132 +msgid "The attached file: %s is a recipe to download %s." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:133 +msgid "Recipe for " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:255 +msgid "Switch to Advanced mode" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:164 +msgid "Switch to Basic mode" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:174 +msgid "Feed must have a title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175 +msgid "The feed must have a title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:179 +msgid "Feed must have a URL" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180 +msgid "The feed %s must have a URL" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:185 +msgid "Already exists" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:186 +msgid "This feed has already been added to the recipe" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:236 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:286 +msgid "Invalid input" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:237 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:287 +msgid "

Could not create recipe. Error:
%s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:290 +msgid "Replace recipe?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:291 +msgid "A custom recipe named %s already exists. Do you want to replace it?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257 +msgid "Pick recipe" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257 +msgid "Pick the recipe to customize" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:277 +msgid "Choose a recipe file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:248 +msgid "Add custom news source" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:249 +msgid "Available user recipes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:250 +msgid "Add/Update &recipe" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:251 +msgid "&Remove recipe" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:252 +msgid "&Share recipe" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:253 +msgid "Customize &builtin recipe" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:254 +msgid "&Load recipe from file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:256 +msgid "" +"\n" +"

Create a basic news " +"recipe, by adding RSS feeds to it.
For most feeds, you will have to " +"use the \"Advanced mode\" to further customize the fetch " +"process.

" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:260 +msgid "Recipe &title:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:261 +msgid "&Oldest article:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:262 +msgid "The oldest article to download" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:264 +msgid "&Max. number of articles per feed:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265 +msgid "Maximum number of articles to download per feed." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:266 +msgid "Feeds in recipe" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:268 +msgid "Remove feed from recipe" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:271 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:274 +msgid "Add feed to recipe" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:272 +msgid "&Feed title:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:273 +msgid "Feed &URL:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:275 +msgid "&Add feed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:276 +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:277 +msgid "Recipe source code (python)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:107 +msgid "" +"\n" +"\n" +"

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

\n" +"

A reference on the syntax " +"of regular expressions is available.

\n" +"

Use the Test functionality below to test your regular " +"expression on a few sample filenames. The group names for the various " +"metadata entries are documented in tooltips.

" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:114 +msgid "Regular &expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:116 +msgid "File &name:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:117 +msgid "Test" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:118 +msgid "Title:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:119 +msgid "Regular expression (?P<title>)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:94 +msgid "No match" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:121 +msgid "Authors:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:122 +msgid "Regular expression (?P)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:124 +msgid "Series:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:125 +msgid "Regular expression (?P)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:127 +msgid "Series index:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:128 +msgid "Regular expression (?P)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:130 +msgid "ISBN:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:131 +msgid "Regular expression (?P)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:53 +msgid "Job" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:54 +msgid "Status" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:55 +msgid "Progress" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:56 +msgid "Running time" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:68 +msgid "There are %d running jobs:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:94 +msgid "Unknown job" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:75 +msgid "There are %d waiting jobs:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:214 +msgid "Cannot kill job" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:212 +msgid "Cannot kill jobs that communicate with the device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:215 +msgid "Job has already run" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:243 +msgid "Unavailable" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:254 +msgid " - Jobs" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1113 +msgid "Size (MB)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1114 +msgid "Date" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:168 +msgid "Rating" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:440 +msgid "None" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:365 +msgid "Book %s of %s." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:877 +msgid "Not allowed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:878 +msgid "" +"Dropping onto a device is not supported. First add the book to the calibre " +"library." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1049 +msgid "Format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1103 +msgid "Double click to edit me

" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/config_ui.py:47 +msgid "Configure Viewer" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/config_ui.py:48 +msgid "Use white background" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/config_ui.py:49 +msgid "Hyphenate" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/config_ui.py:50 +msgid "Changes will only take effect after a restart." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:70 +msgid " - LRF Viewer" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 +msgid "No matches for the search phrase %s were found." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:410 +msgid "No matches found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:128 +msgid "LRF Viewer" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:129 +msgid "Parsing LRF file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:130 +msgid "LRF Viewer toolbar" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:131 +msgid "Next Page" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:132 +msgid "Previous Page" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:182 +msgid "Back" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:183 +msgid "Forward" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:135 +msgid "Next match" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:190 +msgid "Open ebook" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:137 +msgid "Configure" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:24 +msgid "Use the library located at the specified path." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:26 +msgid "Start minimized to system tray." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:28 +msgid "Log debugging information to console" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:30 +msgid "Do not check for updates" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:80 +msgid "If you are sure it is not running" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:82 +msgid "Cannot Start " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:83 +msgid "%s is already running." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:86 +msgid "may be running in the system tray, in the" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:88 +msgid "upper right region of the screen." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:90 +msgid "lower right region of the screen." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:93 +msgid "try rebooting your computer." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:95 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 +msgid "try deleting the file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:331 +msgid "calibre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:333 +msgid "Advanced search" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:335 +msgid "Alt+S" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:336 +msgid "&Search:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:337 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:338 +msgid "" +"

Search the list of books by title, author, publisher, tags, comments, " +"etc.

Words separated by spaces are ANDed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:339 +msgid "Reset Quick Search" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:341 +msgid "Sort by &popularity" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:342 +msgid "Match any" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:343 +msgid "Match all" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:344 +msgid "Add books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:345 +msgid "A" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:346 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:347 +msgid "Remove books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:348 +msgid "Del" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:349 +msgid "Edit meta information" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:350 +msgid "E" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:351 +msgid "Send to device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:304 +msgid "Save to disk" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:353 +msgid "S" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:354 +msgid "Fetch news" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:355 +msgid "F" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:356 +msgid "Convert E-books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:357 +msgid "C" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:314 +msgid "View" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:359 +msgid "V" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:360 +msgid "Open containing folder" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:361 +msgid "Show book details" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:362 +msgid "Books by same author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:363 +msgid "Books in this series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:364 +msgid "Books by this publisher" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:365 +msgid "Books with the same tags" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:367 +msgid "Configure calibre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:368 +msgid "Ctrl+P" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_window.py:20 +msgid "" +"Redirect console output to a dialog window (both stdout and stderr). Useful " +"on windows where GUI apps do not have a output streams." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_window.py:59 +msgid "&Preferences" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_window.py:60 +msgid "&Quit" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_window.py:85 +msgid "ERROR: Unhandled exception" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:88 +msgid "Book has neither title nor ISBN" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:110 +msgid "No matches found for this book" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:71 +msgid "Search" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:58 +msgid "Press a key..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:79 +msgid "Already assigned" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:81 +msgid "already assigned to" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 +msgid " or " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:68 +msgid "&Default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:135 +msgid "Customize shortcuts for" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 +msgid "Keys" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:225 +msgid "Double click to change" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:67 +msgid "Frame" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:69 +msgid "&Custom" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:70 +msgid "&Shortcut:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:76 +msgid "Click to change" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:78 +msgid "Clear" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:75 +msgid "&Alternate shortcut:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:149 +msgid "Jobs:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:158 +msgid "Click to see list of active jobs." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:196 +msgid "Click to browse books by their covers" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:196 +msgid "Click to turn off Cover Browsing" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:201 +msgid "" +"

Browsing books by their covers is disabled.
Import of pictureflow " +"module failed:
" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:209 +msgid "Click to browse books by tags" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 +msgid "Authors" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 +msgid "Publishers" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:182 +msgid "Convert book %d of %d (%s)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:202 +msgid "Could not convert some books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:203 +msgid "" +"Could not convert %d of %d books, because no suitable source format was " +"found." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:120 +msgid "Queueing books for bulk conversion" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:181 +msgid "Queueing " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:237 +msgid "Fetch news from " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:274 +msgid "Convert existing" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:275 +msgid "" +"The following books have already been converted to %s format. Do you wish to " +"reconvert them?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:63 +msgid "Save single format to disk..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:142 +msgid "Search (For Advanced Search click the button to the left)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:159 +msgid "Error communicating with device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:176 +msgid "&Restore" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:178 +msgid "&Donate to support calibre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:183 +msgid "&Restart" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:222 +msgid "

For help see the: User Manual
" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:224 +msgid "%s: %s by Kovid Goyal %%(version)s
%%(device)s

" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:247 +msgid "Edit metadata individually" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:249 +msgid "Edit metadata in bulk" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:251 +msgid "Download metadata and covers" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:252 +msgid "Download only metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:253 +msgid "Download only covers" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:254 +msgid "Download only social metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:257 +msgid "Add books from a single directory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:258 +msgid "" +"Add books from directories, including sub-directories (One book per " +"directory, assumes every ebook file is the same book in a different format)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:261 +msgid "" +"Add books from directories, including sub directories (Multiple books per " +"directory, assumes every ebook file is a different book)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:264 +msgid "Add Empty book. (Book entry with no formats)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:305 +msgid "Save to disk in a single directory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1745 +msgid "Save only %s format to disk" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:315 +msgid "View specific format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:319 +msgid "Remove selected books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:321 +msgid "Remove files of a specific format from selected books.." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:323 +msgid "Remove all formats from selected books, except..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:325 +msgid "Remove covers from selected books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:356 +msgid "Convert individually" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:357 +msgid "Bulk convert" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:360 +msgid "Create catalog of books in your calibre library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:376 +msgid "Run welcome wizard" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:412 +msgid "Similar books..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:472 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:473 +msgid "Bad database location" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:475 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:558 +msgid "Calibre Library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:485 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1901 +msgid "Choose a location for your ebook library." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:523 +msgid "Calibre Quick Start Guide" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:703 +msgid "Browse by covers" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:851 +msgid "Device: " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:853 +msgid " detected." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:877 +msgid "Connected " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:889 +msgid "Device database corrupted" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:890 +msgid "" +"\n" +"

The database of books on the reader is corrupted. Try the " +"following:\n" +"

    \n" +"
  1. Unplug the reader. Wait for it to finish regenerating " +"the database (i.e. wait till it is ready to be used). Plug it back in. Now " +"it should work with %(app)s. If not try the next step.
  2. \n" +"
  3. Quit %(app)s. Find the file media.xml in the reader's " +"main memory. Delete it. Unplug the reader. Wait for it to regenerate the " +"file. Re-connect it and start %(app)s.
  4. \n" +"
\n" +" " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:952 +msgid "How many empty books?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:953 +msgid "How many empty books should be added?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:997 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1043 +msgid "Uploading books to device." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1005 +msgid "EPUB Books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1006 +msgid "LRF Books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1007 +msgid "HTML Books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1008 +msgid "LIT Books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1009 +msgid "MOBI Books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1010 +msgid "Text books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1011 +msgid "PDF Books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1012 +msgid "Comics" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1013 +msgid "Archives" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1017 +msgid "Supported books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1052 +msgid "Failed to read metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1053 +msgid "Failed to read metadata from the following" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1072 +msgid "Cannot delete" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1075 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1631 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1650 +msgid "No book selected" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1085 +msgid "Choose formats to be deleted" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1103 +msgid "Choose formats not to be deleted" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1141 +msgid "" +"The selected books will be permanently deleted and the files removed " +"from your computer. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1168 +msgid "Deleting books from device." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1199 +msgid "Cannot download metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1200 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1257 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1290 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1315 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1374 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1487 +msgid "No books selected" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1215 +msgid "social metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217 +msgid "covers" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217 +msgid "metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 +msgid "Downloading %s for %d book(s)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1241 +msgid "Failed to download some metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1242 +msgid "Failed to download metadata for the following:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1245 +msgid "Failed to download metadata:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1256 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1289 +msgid "Cannot edit metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1314 +msgid "Cannot save to disk" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1317 +msgid "Choose destination directory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1344 +msgid "Error while saving" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1345 +msgid "There was an error while saving." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1352 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1353 +msgid "Could not save some books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1354 +msgid "Click the show details button to see which ones." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1375 +msgid "No books selected to generate catalog for" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1392 +msgid "Generating %s catalog..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1403 +msgid "Catalog generated." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1406 +msgid "Export Catalog Directory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1407 +msgid "Select destination for %s.%s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1421 +msgid "Fetching news from " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1435 +msgid " fetched." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1486 +msgid "Cannot convert" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1515 +msgid "Starting conversion of %d book(s)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1631 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1687 +msgid "Cannot view" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1649 +msgid "Cannot open folder" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1671 +msgid "Multiple Books Selected" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1672 +msgid "" +"You are attempting to open %d books. Opening too many books at once can be " +"slow and have a negative effect on the responsiveness of your computer. Once " +"started the process cannot be stopped until complete. Do you wish to " +"continue?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1688 +msgid "%s has no available formats." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1729 +msgid "Cannot configure" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1730 +msgid "Cannot configure while there are running jobs." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1773 +msgid "No detailed info available" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1774 +msgid "No detailed information is available for books on the device." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1829 +msgid "Error talking to device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1830 +msgid "" +"There was a temporary error talking to the device. Please unplug and " +"reconnect the device and or reboot." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1853 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1881 +msgid "Conversion Error" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1854 +msgid "" +"

Could not convert: %s

It is a DRMed book. You must " +"first remove the DRM using third party tools." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1867 +msgid "Recipe Disabled" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1882 +msgid "Failed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1910 +msgid "Invalid library location" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1911 +msgid "Could not access %s. Using %s as the library." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1961 +msgid "" +"is the result of the efforts of many volunteers from all over the world. If " +"you find it useful, please consider donating to support its development." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1986 +msgid "There are active jobs. Are you sure you want to quit?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1989 +msgid "" +" is communicating with the device!
\n" +" Quitting may cause corruption on the device.
\n" +" Are you sure you want to quit?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1993 +msgid "WARNING: Active jobs" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2045 +msgid "" +"will keep running in the system tray. To close it, choose Quit in the " +"context menu of the system tray." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2064 +msgid "" +"Latest version: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2072 +msgid "Update available" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2073 +msgid "" +"%s has been updated to version %s. See the new features. Visit the download page?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +msgid "Edit bookmark" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +msgid "New title for bookmark:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:52 +msgid "Export Bookmarks" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:54 +msgid "Saved Bookmarks (*.pickle)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +msgid "Import Bookmarks" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +msgid "Pickled Bookmarks (*.pickle)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:89 +msgid "Name" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:56 +msgid "Bookmark Manager" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:57 +msgid "Actions" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:58 +msgid "Edit" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:59 +msgid "Delete" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:60 +msgid "Reset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:61 +msgid "Export" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:62 +msgid "Import" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:154 +msgid "Configure Ebook viewer" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:155 +msgid "&Font options" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:156 +msgid "Se&rif family:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:157 +msgid "&Sans family:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:158 +msgid "&Monospace family:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:159 +msgid "&Default font size:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:168 +msgid " px" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:161 +msgid "Monospace &font size:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:163 +msgid "S&tandard font:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:164 +msgid "Serif" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:165 +msgid "Sans-serif" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:166 +msgid "Monospace" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:167 +msgid "Remember last used &window size" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:169 +msgid "Maximum &view width:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:170 +msgid "H&yphenate (break line in the middle of large words)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:171 +msgid "" +"The default language to use for hyphenation rules. If the book does not " +"specify a language, this will be used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:172 +msgid "Default &language for hyphenation:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:173 +msgid "&Resize images larger than the viewer window (needs restart)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:174 +msgid "&User stylesheet" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:175 +msgid "&General" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:176 +msgid "Double click to change a keyboard shortcut" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:177 +msgid "&Keyboard shortcuts" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/dictionary.py:53 +msgid "No results found for:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:33 +msgid "Options to customize the ebook viewer" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:40 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:648 +msgid "Remember last used window size" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 +msgid "" +"Set the user CSS stylesheet. This can be used to customize the look of all " +"books." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:44 +msgid "Maximum width of the viewer window, in pixels." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:46 +msgid "Resize images larger than the viewer window to fit inside it" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 +msgid "Hyphenate text" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 +msgid "Default language for hyphenation rules" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 +msgid "Font options" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:53 +msgid "The serif font family" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 +msgid "The sans-serif font family" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:57 +msgid "The monospaced font family" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:58 +msgid "The standard font size in px" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 +msgid "The monospaced font size in px" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 +msgid "The standard font type" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:408 +msgid "&Lookup in dictionary" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:12 +msgid "Scroll to the next page" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:15 +msgid "Scroll to the previous page" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:18 +msgid "Scroll to the next section" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:21 +msgid "Scroll to the previous section" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:24 +msgid "Scroll to the bottom of the section" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:27 +msgid "Scroll to the top of the section" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:30 +msgid "Scroll to the end of the document" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:33 +msgid "Scroll to the start of the document" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:36 +msgid "Scroll down" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:39 +msgid "Scroll up" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:42 +msgid "Scroll left" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:45 +msgid "Scroll right" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:115 +msgid "Book format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:138 +msgid "Go to..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:182 +msgid "Position in book" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:188 +msgid "Go to a reference. To get reference numbers, use the reference mode." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:195 +msgid "Search for text in book" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:259 +msgid "Print Preview" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:271 +msgid "Connecting to dict.org to lookup: %s…" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:370 +msgid "Choose ebook" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:371 +msgid "Ebooks" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:390 +msgid "Add bookmark" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:390 +msgid "Enter title for bookmark:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:411 +msgid "No matches found for: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:451 +msgid "Loading flow..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:487 +msgid "Laying out %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:516 +msgid "Manage Bookmarks" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:551 +msgid "Loading ebook..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:559 +msgid "DRM Error" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:560 +msgid "

This book is protected by DRM" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:564 +msgid "Could not open ebook" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:638 +msgid "Options to control the ebook viewer" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:645 +msgid "" +"If specified, viewer window will try to come to the front when started." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:650 +msgid "Print javascript alert and console messages to the console" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:656 +msgid "" +"%prog [options] file\n" +"\n" +"View an ebook.\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:178 +msgid "Ebook Viewer" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:179 +msgid "Close dictionary" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:181 +msgid "toolBar" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:184 +msgid "Next page" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:185 +msgid "Previous page" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:186 +msgid "Font size larger" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:187 +msgid "Font size smaller" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:191 +msgid "Find next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:192 +msgid "Copy to clipboard" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:194 +msgid "Reference Mode" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:195 +msgid "Bookmark" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:196 +msgid "Toggle full screen" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:197 +msgid "Print" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/printing.py:114 +msgid "Print eBook" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:196 +msgid "Copy Image" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:197 +msgid "Paste Image" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:226 +msgid "" +"Library\n" +"%d\n" +"books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:227 +msgid "" +"Reader\n" +"%s\n" +"available" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:228 +msgid "" +"Card A\n" +"%s\n" +"available" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:229 +msgid "" +"Card B\n" +"%s\n" +"available" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:234 +msgid "Click to see the books available on your computer" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:235 +msgid "Click to see the books in the main memory of your reader" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:236 +msgid "Click to see the books on storage card A in your reader" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:237 +msgid "Click to see the books on storage card B in your reader" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:530 +msgid "Change Case" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:531 +msgid "Upper Case" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:532 +msgid "Lower Case" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:533 +msgid "Swap Case" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:534 +msgid "Title Case" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:330 +msgid "" +"If you use the WordPlayer e-book app on your Android phone, you can access " +"your calibre book collection directly on the device. To do this you have to " +"turn on the content server." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:334 +msgid "" +"Remember to leave calibre running as the server only runs as long as calibre " +"is running." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:336 +msgid "" +"You have to add the URL http://myhostname:8080 as your calibre library in " +"WordPlayer. Here myhostname should be the fully qualified hostname or the IP " +"address of the computer calibre is running on." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:413 +msgid "Moving library..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:429 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:430 +msgid "Failed to move library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:484 +msgid "Invalid database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:485 +msgid "" +"

An invalid library already exists at %s, delete it before trying to move " +"the existing library.
Error: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:496 +msgid "Could not move library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:625 +msgid "welcome wizard" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:42 +msgid "Welcome to calibre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:43 +msgid "The one stop solution to all your e-book needs." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:51 +msgid "" +"Choose your book reader. This will set the conversion options to produce " +"books optimized for your device." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:52 +msgid "&Manufacturers" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:53 +msgid "&Devices" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:41 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:41 +msgid "WizardPage" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:48 +msgid "" +"

Congratulations!

You have successfully setup calibre. Press the %s " +"button to apply your settings." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:49 +msgid "" +"

Demo videos

Videos demonstrating the various features of calibre are " +"available online." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:50 +msgid "" +"

User Manual

A User Manual is also available online." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:44 +msgid "" +"

calibre can automatically send books by email to your Kindle. To do that " +"you have to setup email delivery below. The easiest way is to setup a free " +"gmail account and click the Use gmail " +"button below. You will also have to register your gmail address in your " +"Amazon account." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:45 +msgid "&Kindle email:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:52 +msgid "Choose your &language:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:53 +msgid "" +"Choose a location for your books. When you add books to calibre, they will " +"be copied here:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:54 +msgid "&Change" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:55 +msgid "" +"If you have an existing calibre library, it will be copied to the new " +"location. If a calibre library already exists at the new location, calibre " +"will switch to using it." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:32 +msgid "Using: %s:%s@%s:%s and %s encryption" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:37 +msgid "Sending..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:42 +msgid "Mail successfully sent" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:114 +msgid "Finish gmail setup" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:115 +msgid "" +"Dont forget to enter your gmail username and password. You can sign up for a " +"free gmail account at http://gmail.com" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:130 +msgid "Bad configuration" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:124 +msgid "You must set the From email address" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:131 +msgid "You must set the username and password for the mail server." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:108 +msgid "Send email &from:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:109 +msgid "" +"

This is what will be present in the From: field of emails sent by " +"calibre.
Set it to your email address" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:110 +msgid "" +"

A mail server is useful if the service you are sending mail to only " +"accepts email from well know mail services." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:111 +msgid "Mail &Server" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:112 +msgid "calibre can optionally use a server to send mail" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:113 +msgid "&Hostname:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:114 +msgid "The hostname of your mail server. For e.g. smtp.gmail.com" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:115 +msgid "&Port:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:116 +msgid "" +"The port your mail server listens for connections on. The default is 25" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:118 +msgid "Your username on the mail server" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:120 +msgid "Your password on the mail server" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:121 +msgid "&Show" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:122 +msgid "&Encryption:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:123 +msgid "" +"Use TLS encryption when connecting to the mail server. This is the most " +"common." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:124 +msgid "&TLS" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:125 +msgid "Use SSL encryption when connecting to the mail server." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:126 +msgid "&SSL" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:127 +msgid "Use Gmail" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:128 +msgid "&Test email" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:44 +msgid "" +"

If you use the Stanza e-" +"book app on your iPhone/iTouch, you can access your calibre book collection " +"directly on the device. To do this you have to turn on the calibre content " +"server." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:45 +msgid "Turn on the &content server" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/__init__.py:8 +msgid "Settings to control the calibre content server" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/__init__.py:12 +msgid "The port on which to listen. Default is %default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/__init__.py:14 +msgid "The server timeout in seconds. Default is %default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/__init__.py:16 +msgid "The max number of worker threads to use. Default is %default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/__init__.py:18 +msgid "Set a password to restrict access. By default access is unrestricted." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/__init__.py:20 +msgid "Username for access. By default, it is: %default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/__init__.py:24 +msgid "The maximum size for displayed covers. Default is %default." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/__init__.py:26 +msgid "" +"The maximum number of matches to return per OPDS query. This affects Stanza, " +"WordPlayer, etc. integration." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:34 +msgid "" +"The fields to output when cataloging books in the database. Should be a " +"comma-separated list of fields.\n" +"Available fields: %s.\n" +"Default: '%%default'\n" +"Applies to: CSV, XML output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:43 +msgid "" +"Output field to sort on.\n" +"Available fields: author_sort, id, rating, size, timestamp, title.\n" +"Default: '%default'\n" +"Applies to: CSV, XML output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:238 +msgid "" +"Title of generated catalog used as title in metadata.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:244 +msgid "" +"Save the output from different stages of the conversion pipeline to the " +"specified directory. Useful if you are unsure at which stage of the " +"conversion process a bug is occurring.\n" +"Default: '%default'None\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:253 +msgid "" +"Regex describing tags to exclude as genres.\n" +"Default: '%default' excludes bracketed tags, e.g. '[]'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:258 +msgid "" +"Comma-separated list of tag words indicating book should be excluded from " +"output. Case-insensitive.\n" +"--exclude-tags=skip will match 'skip this book' and 'Skip will like this'.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:265 +msgid "" +"Tag indicating book has been read.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:270 +msgid "" +"Tag prefix for user notes, e.g. '*Jeff might enjoy reading this'.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:276 +msgid "" +"Specifies the output profile. In some cases, an output profile is required " +"to optimize the catalog for the device. For example, 'kindle' or " +"'kindle_dx' creates a structured Table of Contents with Sections and " +"Articles.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:121 +msgid "" +"Path to the calibre library. Default is to use the path stored in the " +"settings." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:200 +msgid "" +"%prog list [options]\n" +"\n" +"List the books available in the calibre database.\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:208 +msgid "" +"The fields to display when listing books in the database. Should be a comma " +"separated list of fields.\n" +"Available fields: %s\n" +"Default: %%default. The special field \"all\" can be used to select all " +"fields. Only has effect in the text output format." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:210 +msgid "" +"The field by which to sort the results.\n" +"Available fields: %s\n" +"Default: %%default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:212 +msgid "Sort results in ascending order" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:214 +msgid "" +"Filter the results by the search query. For the format of the search query, " +"please see the search related documentation in the User Manual. Default is " +"to do no filtering." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:216 +msgid "" +"The maximum width of a single line in the output. Defaults to detecting " +"screen size." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:217 +msgid "The string used to separate fields. Default is a space." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:218 +msgid "" +"The prefix for all file paths. Default is the absolute path to the library " +"folder." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:221 +msgid "" +"The format in which to output the data. Available choices: %s. Defaults is " +"text." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:234 +msgid "Invalid fields. Available fields:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:241 +msgid "Invalid sort field. Available fields:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:312 +msgid "" +"The following books were not added as they already exist in the database " +"(see --duplicates option):" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:335 +msgid "" +"%prog add [options] file1 file2 file3 ...\n" +"\n" +"Add the specified files as books to the database. You can also specify " +"directories, see\n" +"the directory related options below.\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:344 +msgid "" +"Assume that each directory has only a single logical book and that all files " +"in it are different e-book formats of that book" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:346 +msgid "Process directories recursively" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:348 +msgid "" +"Add books to database even if they already exist. Comparison is done based " +"on book titles." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:358 +msgid "You must specify at least one file to add" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:374 +msgid "" +"%prog remove ids\n" +"\n" +"Remove the books identified by ids from the database. ids should be a comma " +"separated list of id numbers (you can get id numbers by using the list " +"command). For example, 23,34,57-85\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:389 +msgid "You must specify at least one book to remove" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:408 +msgid "" +"%prog add_format [options] id ebook_file\n" +"\n" +"Add the ebook in ebook_file to the available formats for the logical book " +"identified by id. You can get id by using the list command. If the format " +"already exists, it is replaced.\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:423 +msgid "You must specify an id and an ebook file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:428 +msgid "ebook file must have an extension" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:436 +msgid "" +"\n" +"%prog remove_format [options] id fmt\n" +"\n" +"Remove the format fmt from the logical book identified by id. You can get id " +"by using the list command. fmt should be a file extension like LRF or TXT or " +"EPUB. If the logical book does not have fmt available, do nothing.\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:453 +msgid "You must specify an id and a format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:471 +msgid "" +"\n" +"%prog show_metadata [options] id\n" +"\n" +"Show the metadata stored in the calibre database for the book identified by " +"id.\n" +"id is an id number from the list command.\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:479 +msgid "Print metadata in OPF form (XML)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:488 +msgid "You must specify an id" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:501 +msgid "" +"\n" +"%prog set_metadata [options] id /path/to/metadata.opf\n" +"\n" +"Set the metadata stored in the calibre database for the book identified by " +"id\n" +"from the OPF file metadata.opf. id is an id number from the list command. " +"You\n" +"can get a quick feel for the OPF format by using the --as-opf switch to the\n" +"show_metadata command.\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:517 +msgid "You must specify an id and a metadata file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:537 +msgid "" +"%prog export [options] ids\n" +"\n" +"Export the books specified by ids (a comma separated list) to the " +"filesystem.\n" +"The export operation saves all formats of the book, its cover and metadata " +"(in\n" +"an opf file). You can get id numbers from the list command.\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:545 +msgid "Export all books in database, ignoring the list of ids." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:547 +msgid "Export books to the specified directory. Default is" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:549 +msgid "Export all books into a single directory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:556 +msgid "Specifying this switch will turn this behavior off." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:579 +msgid "You must specify some ids or the %s option" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:634 +msgid "" +"\n" +" %prog catalog /path/to/destination.(csv|epub|mobi|xml ...) [options]\n" +"\n" +" Export a catalog in format specified by path/to/destination extension.\n" +" Options control how entries are displayed in the generated catalog " +"ouput.\n" +" " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:648 +msgid "" +"Comma-separated list of database IDs to catalog.\n" +"If declared, --search is ignored.\n" +"Default: all" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:652 +msgid "" +"Filter the results by the search query. For the format of the search query, " +"please see the search-related documentation in the User Manual.\n" +"Default: no filtering" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:658 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:484 +msgid "Show detailed output information. Useful for debugging" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:671 +msgid "Error: You must specify a catalog output file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:689 +msgid "" +"%%prog command [options] [arguments]\n" +"\n" +"%%prog is the command line interface to the calibre books database.\n" +"\n" +"command is one of:\n" +" %s\n" +"\n" +"For help on an individual command: %%prog command --help\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1696 +msgid "

Migrating old database to ebook library in %s

" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1725 +msgid "Copying %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1742 +msgid "Compacting database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1835 +msgid "Checking SQL integrity..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1872 +msgid "Checking for missing files." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1894 +msgid "Checked id" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:24 +msgid "The title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:25 +msgid "The authors" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:26 +msgid "" +"The author sort string. To use only the first letter of the name use " +"{author_sort[0]}" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:28 +msgid "The tags" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:29 +msgid "The series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:30 +msgid "The series number. To get leading zeros use {series_index:0>3s}" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:31 +msgid "The rating" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:32 +msgid "The ISBN" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:33 +msgid "The publisher" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:34 +msgid "The date" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:35 +msgid "The published date" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:36 +msgid "The calibre internal id" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:46 +msgid "Options to control saving to disk" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:52 +msgid "" +"Normally, calibre will update the metadata in the saved files from what is " +"in the calibre library. Makes saving to disk slower." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:55 +msgid "" +"Normally, calibre will write the metadata into a separate OPF file along " +"with the actual e-book files." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:58 +msgid "" +"Normally, calibre will save the cover in a separate file along with the " +"actual e-book file(s)." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:61 +msgid "" +"Comma separated list of formats to save for each book. By default all " +"available books are saved." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:64 +msgid "" +"The template to control the filename and directory structure of the saved " +"files. Default is \"%s\" which will save books into a per-author " +"subdirectory with filenames containing title and author. Available controls " +"are: {%s}" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:69 +msgid "" +"The template to control the filename and directory structure of files sent " +"to the device. Default is \"%s\" which will save books into a per-author " +"directory with filenames containing title and author. Available controls " +"are: {%s}" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:76 +msgid "" +"Normally, calibre will convert all non English characters into English " +"equivalents for the file names. WARNING: If you turn this off, you may " +"experience errors when saving, depending on how well the filesystem you are " +"saving to supports unicode." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:82 +msgid "" +"The format in which to display dates. %d - day, %b - month, %Y - year. " +"Default is: %b, %Y" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:85 +msgid "Convert paths to lowercase." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:87 +msgid "Replace whitespace with underscores." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:256 +msgid "Requested formats not available" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server.py:378 +msgid "Password to access your calibre library. Username is " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server.py:860 +msgid "" +"[options]\n" +"\n" +"Start the calibre content server." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server.py:862 +msgid "Path to the library folder to serve with the content server" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:48 +msgid "%sUsage%s: %s\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:92 +msgid "Created by " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:93 +msgid "" +"Whenever you pass arguments to %prog that have spaces in them, enclose the " +"arguments in quotation marks." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:650 +msgid "Path to the database in which books are stored" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:652 +msgid "Pattern to guess metadata from filenames" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:654 +msgid "Access key for isbndb.com" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:656 +msgid "Default timeout for network operations (seconds)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:658 +msgid "Path to directory in which your library of books is stored" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:660 +msgid "The language in which to display the user interface" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:662 +msgid "The default output format for ebook conversions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:666 +msgid "Ordered list of formats to prefer for input." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:668 +msgid "Read metadata from files" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:670 +msgid "The priority of worker processes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:672 +msgid "Swap author first and last names when reading metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:43 +msgid "Waiting..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:51 +msgid "Stopped" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 +msgid "Finished" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:72 +msgid "Working..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:93 +msgid "Brazilian Portuguese" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:94 +msgid "English (UK)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:95 +msgid "Simplified Chinese" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:96 +msgid "Chinese (HK)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:97 +msgid "Traditional Chinese" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:98 +msgid "English" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:99 +msgid "English (Australia)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:100 +msgid "English (New Zealand)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:101 +msgid "English (Canada)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:102 +msgid "English (India)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:103 +msgid "English (Thailand)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:104 +msgid "English (Cyprus)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:105 +msgid "English (Pakistan)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:106 +msgid "English (Singapore)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:107 +msgid "English (Yemen)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:108 +msgid "German (AT)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:109 +msgid "Dutch (NL)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:110 +msgid "Dutch (BE)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/sftp.py:53 +msgid "URL must have the scheme sftp" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/sftp.py:57 +msgid "host must be of the form user@hostname" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/sftp.py:68 +msgid "Failed to negotiate SSH session: " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/sftp.py:71 +msgid "Failed to authenticate with server: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/smtp.py:234 +msgid "Control email delivery" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:103 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:125 +msgid "Unknown feed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:143 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:166 +msgid "Untitled article" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:21 +msgid "Download periodical content from the internet" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:36 +msgid "" +"Useful for recipe development. Forces max_articles_per_feed to 2 and " +"downloads at most 2 feeds." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:39 +msgid "Username for sites that require a login to access content." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:42 +msgid "Password for sites that require a login to access content." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:46 +msgid "" +"Do not download latest version of builtin recipes from the calibre server" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:40 +msgid "Unknown News Source" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:533 +msgid "The \"%s\" recipe needs a username and password." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:619 +msgid "Download finished" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:621 +msgid "Failed to download the following articles:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:627 +msgid "Failed to download parts of the following articles:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:629 +msgid " from " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:631 +msgid "\tFailed links:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:712 +msgid "Could not fetch article. Run with -vv to see the reason" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:733 +msgid "Fetching feeds..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:738 +msgid "Got feeds from index page" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:744 +msgid "Trying to download cover..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:802 +msgid "Starting download [%d thread(s)]..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:818 +msgid "Feeds downloaded to %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828 +msgid "Could not download cover: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:840 +msgid "Downloading cover from %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:983 +msgid "Untitled Article" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054 +msgid "Article downloaded: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1065 +msgid "Article download failed: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1082 +msgid "Fetching feed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:46 +msgid "You" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:73 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:82 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:181 +msgid "Scheduled" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:84 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:182 +msgid "Custom" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:461 +msgid "" +"%prog URL\n" +"\n" +"Where URL is for example http://google.com" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:464 +msgid "Base directory into which URL is saved. Default is %default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:467 +msgid "" +"Timeout in seconds to wait for a response from the server. Default: %default " +"s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:470 +msgid "" +"Maximum number of levels to recurse i.e. depth of links to follow. Default " +"%default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:473 +msgid "" +"The maximum number of files to download. This only applies to files from tags. Default is %default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:475 +msgid "" +"Minimum interval in seconds between consecutive fetches. Default is %default " +"s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:477 +msgid "" +"The character encoding for the websites you are trying to download. The " +"default is to try and guess the encoding." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:479 +msgid "" +"Only links that match this regular expression will be followed. This option " +"can be specified multiple times, in which case as long as a link matches any " +"one regexp, it will be followed. By default all links are followed." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:481 +msgid "" +"Any link that matches this regular expression will be ignored. This option " +"can be specified multiple times, in which case as long as any regexp matches " +"a link, it will be ignored.By default, no links are ignored. If both --" +"filter-regexp and --match-regexp are specified, then --filter-regexp is " +"applied first." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:483 +msgid "Do not download CSS stylesheets." +msgstr "" diff --git a/src/calibre/translations/nb.po b/src/calibre/translations/nb.po index 87f9463b43..e9d7f9ae47 100644 --- a/src/calibre/translations/nb.po +++ b/src/calibre/translations/nb.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-01-25 18:58+0000\n" -"PO-Revision-Date: 2010-01-28 11:25+0000\n" -"Last-Translator: Øyvind Øritsland \n" +"PO-Revision-Date: 2010-01-31 21:38+0000\n" +"Last-Translator: Kovid Goyal \n" "Language-Team: Norwegian Bokmal \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-01-29 04:52+0000\n" +"X-Launchpad-Export-Date: 2010-02-01 04:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 diff --git a/src/calibre/translations/nl.po b/src/calibre/translations/nl.po index 12a80d6efd..497e0f709a 100644 --- a/src/calibre/translations/nl.po +++ b/src/calibre/translations/nl.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-01-25 18:58+0000\n" -"PO-Revision-Date: 2010-01-30 08:58+0000\n" -"Last-Translator: Marc van den Dikkenberg \n" +"PO-Revision-Date: 2010-01-31 21:36+0000\n" +"Last-Translator: Kovid Goyal \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-01-31 04:50+0000\n" +"X-Launchpad-Export-Date: 2010-02-01 04:43+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:340 @@ -5176,7 +5176,7 @@ msgstr "Uitegeve&n" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:381 msgid "dd MMM yyyy" -msgstr "dd MMM jjjj" +msgstr "dd MMM yyyy" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:382 msgid "&Date:" diff --git a/src/calibre/translations/pl.po b/src/calibre/translations/pl.po index cbb50247ab..ef4e16e052 100644 --- a/src/calibre/translations/pl.po +++ b/src/calibre/translations/pl.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-01-25 18:58+0000\n" -"PO-Revision-Date: 2010-01-27 02:48+0000\n" -"Last-Translator: alcik \n" +"PO-Revision-Date: 2010-01-31 21:39+0000\n" +"Last-Translator: Kovid Goyal \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-01-28 04:34+0000\n" +"X-Launchpad-Export-Date: 2010-02-01 04:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 diff --git a/src/calibre/translations/ru.po b/src/calibre/translations/ru.po index ede7ac2012..15300ef6a9 100644 --- a/src/calibre/translations/ru.po +++ b/src/calibre/translations/ru.po @@ -7,13 +7,13 @@ msgstr "" "Project-Id-Version: calibre 0.4.55\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-01-25 18:58+0000\n" -"PO-Revision-Date: 2010-01-31 04:16+0000\n" -"Last-Translator: cyberbob \n" +"PO-Revision-Date: 2010-02-01 03:56+0000\n" +"Last-Translator: Boris Rybalkin \n" "Language-Team: American English \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-01-31 04:51+0000\n" +"X-Launchpad-Export-Date: 2010-02-01 04:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" "X-Poedit-Country: RUSSIAN FEDERATION\n" "X-Poedit-Language: Russian\n" @@ -581,6 +581,8 @@ msgid "" "Comma separated list of metadata fields to turn into collections on the " "device. Possibilities include: " msgstr "" +"Разделенный запятыми список полей метаданных преобразовать в коллекции на " +"устройстве. Возможности включают: " #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:139 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:141 @@ -1437,6 +1439,8 @@ msgid "" "Average line length for line breaking if the HTML is from a previous partial " "conversion of a PDF file. Default is %default which disables this." msgstr "" +"Средняя длина строки для переноса строк, если HTML из предыдущей частичной " +"конвертации PDF файла. Значение по умолчанию %default." #: /home/kovid/work/calibre/src/calibre/ebooks/lit/from_any.py:47 msgid "Creating LIT file from EPUB..." @@ -1854,20 +1858,24 @@ msgid "" "The version of the title to be used for sorting. If unspecified, and the " "title is specified, it will be auto-generated from the title." msgstr "" +"Версия заголовка для сортировки. Если не указан, а заголовок указан, будет " +"авто-сгенерирован из заголовока." #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:47 msgid "" "String to be used when sorting by author. If unspecified, and the author(s) " "are specified, it will be auto-generated from the author(s)." msgstr "" +"Срока для сортировки по автору. Если не указана, а авторы указаны, будет " +"авто-сгенерирована из списка авторов." #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:57 msgid "Set the book category." -msgstr "" +msgstr "Установить категорию книги" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:74 msgid "Get the cover from the ebook and save it at as the specified file." -msgstr "" +msgstr "Получить обложку из книги и сохранить её в указанном файле." #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:77 msgid "" @@ -1900,7 +1908,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:192 msgid "OPF created in" -msgstr "" +msgstr "OPF создан в" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:198 msgid "Cover saved to" @@ -1916,7 +1924,7 @@ msgstr "Загрузка метаданных" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:111 msgid "ratings" -msgstr "" +msgstr "рейтинги" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:111 msgid "tags" @@ -1924,7 +1932,7 @@ msgstr "теги" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:112 msgid "description/reviews" -msgstr "" +msgstr "описание/обзоры" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:113 msgid "Download %s from %s" @@ -1963,6 +1971,16 @@ msgid "" "isbndb.com.\n" "\n" msgstr "" +"\n" +"%prog [опции] ключ\n" +"\n" +"Получить метаданные для книг с isndb.com. Вы можете указать либо\n" +"ISBN номер или название и автора. Вы можете получить более одной книги,\n" +"если вы указываете название и автора.\n" +"\n" +"Ключ это ключ учетной записи (account key), сгенерированный при бесплатной " +"регистрации на isbndb.com.\n" +"\n" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:105 msgid "The ISBN ID of the book you want metadata for." @@ -2120,7 +2138,7 @@ msgstr "%s формат книг не поддерживается" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:54 msgid "HTML TOC generation options." -msgstr "" +msgstr "Варианты создания HTML содержания" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:108 msgid "Book Jacket" @@ -2138,16 +2156,18 @@ msgstr "Безымянный" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/writer.py:32 msgid "OPF/NCX/etc. generation options." -msgstr "" +msgstr "Варианты создания OPF/NCX/др." #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/writer.py:35 msgid "OPF version to generate. Default is %default." -msgstr "" +msgstr "OPF вариант для создания. По умолчанию %default." #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/writer.py:37 msgid "" "Generate an Adobe \"page-map\" file if pagination information is available." msgstr "" +"Создать Adobe \"page-map\" файл если доступна информация о разбиении на " +"страницы." #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/reader132.py:126 msgid "Footnotes" @@ -2164,6 +2184,8 @@ msgid "" "Normally calibre treats blank lines as paragraph markers. With this option " "it will assume that every line represents a paragraph instead." msgstr "" +"Обычно calible воспринимает пустые строки как разделители абзацев. С этой " +"установкой каждый перенос будет воспринят как новый абзац." #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:26 #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/input.py:27 @@ -2184,10 +2206,12 @@ msgid "" "Specify the character encoding of the output document. The default is " "cp1252. Note: This option is not honored by all formats." msgstr "" +"Укажите кодировку исходящего документа. Кодировка по умолчанию cp1252. " +"Примечание: Этот параметр учитывается не всеми форматами." #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:24 msgid "Do not extract images from the document" -msgstr "" +msgstr "Не извлекать изображения из документа" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:26 msgid "" @@ -2198,7 +2222,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:30 msgid "Use the new PDF conversion engine." -msgstr "" +msgstr "Использовать новый PDF конвертер." #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/cli.py:31 msgid "" @@ -2211,6 +2235,14 @@ msgid "" "\n" "Manipulate a PDF.\n" msgstr "" +"команда ...\n" +"\n" +"доступные команды:\n" +"[%%commands]\n" +"\n" +"Используйте %prog команда --help для получения помощи по конкретной команде\n" +"\n" +"Управление PDF.\n" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:29 msgid "" @@ -2218,6 +2250,9 @@ msgid "" "\n" "Crop a PDF file.\n" msgstr "" +"[опции] файл.pdf\n" +"\n" +"Обрезать PDF файл.\n" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:38 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/decrypt.py:32 @@ -2234,25 +2269,28 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:41 msgid "Number of pixels to crop from the left most x (default is %s)" -msgstr "" +msgstr "Количество точек для обрезания от самой левой x (по умолчанию: %s)" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:44 msgid "Number of pixels to crop from the left most y (default is %s)" -msgstr "" +msgstr "Количество точек для обрезания от самой левой y (по умолчанию: %s)" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:47 msgid "Number of pixels to crop from the right most x (default is %s)" -msgstr "" +msgstr "Количество точек для обрезания от самой правой x (по умолчанию: %s)" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:50 msgid "Number of pixels to crop from the right most y (default is %s)" -msgstr "" +msgstr "Количество точек для обрезания от самой правой y (по умолчанию: %s)" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:53 msgid "" "A file generated by ghostscript which allows each page to be individually " "cropped `gs -dSAFER -dNOPAUSE -dBATCH -sDEVICE=bbox file.pdf 2> bounding`" msgstr "" +"Файл, созданный с помощью ghostscript, который позволит уникально обрезать " +"каждую страницу `gs -dSAFER -dNOPAUSE -dBATCH -sDEVICE=bbox file.pdf 2> " +"bounding`" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:73 msgid "Crop Options:" @@ -2274,10 +2312,13 @@ msgid "" "\n" "Decrypt a PDF.\n" msgstr "" +"[опции] файл.pdf пароль\n" +"\n" +"Дешифровать PDF.\n" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/decrypt.py:60 msgid "Decrypt Options:" -msgstr "" +msgstr "Параметры дешифрования:" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/encrypt.py:25 msgid "" @@ -2285,10 +2326,13 @@ msgid "" "\n" "Encrypt a PDF.\n" msgstr "" +"[опции] файл.pdf пароль\n" +"\n" +"Шифровать PDF.\n" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/encrypt.py:54 msgid "Encrypt Options:" -msgstr "" +msgstr "Параметры шифрования:" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:21 msgid "" @@ -2296,6 +2340,9 @@ msgid "" "\n" "Get info about a PDF.\n" msgstr "" +"файл.pdf ...\n" +"\n" +"Получить информацию о PDF.\n" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:46 msgid "Author" @@ -2329,6 +2376,11 @@ msgid "" "\n" "Merges individual PDFs.\n" msgstr "" +"[опции] файл1.pdf файл2.pdf ...\n" +"\n" +"Метаданные первого указанного файла будут использованы.\n" +"\n" +"Объединение отдельных PDF файлов.\n" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/merge.py:56 msgid "Merge Options:" @@ -2351,6 +2403,9 @@ msgid "" "\n" "Rotate pages of a PDF clockwise.\n" msgstr "" +"файл.pdf градус\n" +"\n" +"Повернуть по часовой стрелке страницы PDF файла.\n" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:53 msgid "Rotate Options:" @@ -2370,6 +2425,17 @@ msgid "" "\n" "Split a PDF.\n" msgstr "" +"\n" +"%prog %%name [опции] файл.pdf страница_по_которой_разбить ...\n" +"%prog %%name [опции] файл.pdf диапазон_страниц_по_которым_разбить ...\n" +"\t\n" +"Пример:\n" +"\t\n" +"%prog %%name файл.pdf 6\n" +"%prog %%name файл.pdf 6-12\n" +"%prog %%name файл.pdf 6-12 8 10 9-20\n" +"\n" +"Разбить PDF файл.\n" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:61 msgid "Split Options:" @@ -2380,6 +2446,8 @@ msgid "" "The unit of measure. Default is inch. Choices are %s Note: This does not " "override the unit for margins!" msgstr "" +"Единица измерения. По умолчанию дюйм. Варианты: %s Примечание: Данная " +"установка не переопределит единицу измерения для полей!" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:36 msgid "" @@ -2394,6 +2462,9 @@ msgid "" "Custom size of the document. Use the form widthxheight EG. `123x321` to " "specify the width and height. This overrides any specified paper-size." msgstr "" +"Произвольный размер документа. Используйте следующую форму, например: " +"`123x321` для указания ширины и высоты. Данная установка переопределяет " +"любой определенный формат бумаги." #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:45 msgid "The orientation of the page. Default is portrait. Choices are %s" @@ -2406,18 +2477,20 @@ msgstr "Не могу найти pdftohtml, проверьте наличе по #: /home/kovid/work/calibre/src/calibre/ebooks/pml/output.py:33 msgid "" "Specify the character encoding of the output document. The default is cp1252." -msgstr "" +msgstr "Укажите кодировку для создаваемого документа. По умолчанию cp1252." #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:199 msgid "" "This RTF file has a feature calibre does not support. Convert it to HTML " "first and then try it." msgstr "" +"RTF файл имеет функциональность которую calibre не поддерживает. " +"Сконвертируйте сначала в HTML, а затем попробуйте еще раз." #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:23 msgid "" "Specify the character encoding of the output document. The default is utf-8." -msgstr "" +msgstr "Укажите кодировку для создаваемого документа. По умолчанию utf-8." #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:27 msgid "" @@ -2425,6 +2498,8 @@ msgid "" "compression but the fastest and 10 being the highest compression but the " "slowest." msgstr "" +"Укажите степень сжатия. По шкале от 1 до 10, где 1 это минимальное сжатие на " +"высокой скорости, а 10 это максимальное сжатие на низкой скорости." #: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:32 msgid "" @@ -2434,7 +2509,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:35 msgid "Do not insert a Table of Contents into the output text." -msgstr "" +msgstr "Не вставлять Содержимое в резултирующий текст." #: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:24 msgid "" @@ -2442,12 +2517,17 @@ msgid "" "for compatibility with Mac OS 9 and earlier. For Mac OS X use 'unix'. " "'system' will default to the newline type used by this OS." msgstr "" +"Тип переноса строк. Варианты: %s. По умолчанию 'system'. Используйте " +"'old_mac' для совместимости с Mac OS 9 и раньше. Для Mac OS X используйте " +"'unix'. 'system' будет использовать тип переноса по умолчанию для этой ОС." #: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:30 msgid "" "Specify the character encoding of the output document. The default is utf-8. " "Note: This option is not honored by all formats." msgstr "" +"Укажите кодировку для результирующего документа. По умолчанию utf-8. " +"Примечание: Это параметр учитывают не все форматы." #: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:38 msgid "" @@ -2555,7 +2635,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:90 msgid "Download social metadata (tags/rating/etc.)" -msgstr "" +msgstr "Скачать социальные метаданные (тэги/рейтинги/и т.д.)" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:92 msgid "Limit max simultaneous jobs to number of CPUs" @@ -2590,15 +2670,15 @@ msgstr "Добавление..." #: /home/kovid/work/calibre/src/calibre/gui2/add.py:176 msgid "Searching in all sub-directories..." -msgstr "" +msgstr "Ищем во всех под-каталогах ..." #: /home/kovid/work/calibre/src/calibre/gui2/add.py:189 msgid "Path error" -msgstr "" +msgstr "Ошибка пути" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:190 msgid "The specified directory could not be processed." -msgstr "" +msgstr "Специальных каталог не может быть обработан." #: /home/kovid/work/calibre/src/calibre/gui2/add.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:495 @@ -2615,13 +2695,15 @@ msgstr "Добавлена" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:274 msgid "Adding failed" -msgstr "" +msgstr "Ошибка при добавлении" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:275 msgid "" "The add books process seems to have hung. Try restarting calibre and adding " "the books in smaller increments, until you find the problem book." msgstr "" +"Добавление книг видимо зависло. Попробуйте перезапустить calibre и добавить " +"книги меньшими порциями до тех пор пока не найдете проблемную книгу." #: /home/kovid/work/calibre/src/calibre/gui2/add.py:287 msgid "Duplicates found!" @@ -2632,10 +2714,11 @@ msgid "" "Books with the same title as the following already exist in the database. " "Add them anyway?" msgstr "" +"Книги со следующими названиями уже имеются в базе. Все равно добавить их?" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:291 msgid "Adding duplicates..." -msgstr "" +msgstr "Добавляем дубликаты ..." #: /home/kovid/work/calibre/src/calibre/gui2/add.py:352 msgid "Saving..." @@ -2647,7 +2730,7 @@ msgstr "Сохранено" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:16 msgid "CSV/XML Options" -msgstr "" +msgstr "CVS/XML Параметры" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:18 @@ -2665,7 +2748,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:13 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:17 msgid "Options specific to" -msgstr "" +msgstr "Параметры относящиеся к" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:18 @@ -2714,11 +2797,11 @@ msgstr "Форма" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:37 msgid "Fields to include in output:" -msgstr "" +msgstr "Поля для добавления к результату:" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:17 msgid "E-book options" -msgstr "" +msgstr "Параметры книг" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:256 @@ -2729,7 +2812,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:52 msgid "Tags to exclude as genres (regex):" -msgstr "" +msgstr "Тэги для исключения жанров (регулярное выражение):" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:53 msgid "'Don't include this book' tag:" @@ -2753,15 +2836,18 @@ msgid "" "in a previous conversion (if they exist) instead of using the defaults " "specified in the Preferences" msgstr "" +"Для настроек, которые не могут быть указаны в этом диалоге, использовать " +"сохраненные во время предыдущей конвертиции (если таковые есть) вместо " +"значений по умолчанию указанных в основном окне настроек." #: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:67 msgid "Bulk Convert" -msgstr "" +msgstr "Массовое конвертирование" #: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:80 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 msgid "Options specific to the output format." -msgstr "" +msgstr "Параметры для определенного формата вывода." #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:15 msgid "Comic Input" @@ -2773,7 +2859,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:13 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:13 msgid "input" -msgstr "" +msgstr "ввод" #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:94 @@ -2827,7 +2913,7 @@ msgstr "Конт&раст" #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:95 msgid "&Disable comic processing" -msgstr "" +msgstr "Отключить обработку комиксов" #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:96 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:111 @@ -2862,6 +2948,11 @@ msgid "" "understanding the conversion process and figuring out the correct values for " "conversion parameters like Table of Contents and Chapter Detection." msgstr "" +"Выберите каталог для сохранения отладочной информации. Если вы укажете " +"каталог, calibre будет сохранять туда большой объем информации для отладки. " +"Она может быть использована для понимания процесса конвертации и для подбора " +"подходящих значений параметров конвертирования, например таких как " +"Содержание и Распознавание Глав." #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:53 @@ -2906,10 +2997,13 @@ msgid "" "of the conversion process. This HTML can sometimes serve as a good starting " "point for hand editing a conversion." msgstr "" +"Процесс отладки сохраняет промежуточный HTML созданный на различных стадиях " +"процесса конвертации. Этот HTML иногда может быть использован как хороший " +"материал для ручного редактирования конвертации." #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:15 msgid "EPUB Output" -msgstr "" +msgstr "EPUB Вывод" #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:42 msgid "Do not &split on page breaks" @@ -2925,15 +3019,15 @@ msgstr " кб" #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:45 msgid "No default &cover" -msgstr "" +msgstr "Без &обложки по умолчанию" #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:12 msgid "FB2 Input" -msgstr "" +msgstr "FB2 Ввод" #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:29 msgid "Do not insert a &Table of Contents at the beginning of the book." -msgstr "" +msgstr "Не вставлять &Содержание в начало книги." #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:14 msgid "FB2 Output" @@ -2948,7 +3042,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:99 msgid "Font rescaling wizard" -msgstr "" +msgstr "Мастер масштабирования шрифта" #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:100 msgid "" @@ -2997,7 +3091,7 @@ msgstr " тчк." #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:107 msgid "Use &default values" -msgstr "" +msgstr "Использовать &значения по умолчанию" #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:108 msgid "&Input document" @@ -3021,11 +3115,11 @@ msgstr "Вид и функции" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:18 msgid "Control the look and feel of the output" -msgstr "" +msgstr "Изменить внешний вид документа" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:119 msgid "&Disable font size rescaling" -msgstr "" +msgstr "&Отключить масштабирование шрифта" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:120 msgid "Base &font size:" diff --git a/src/calibre/translations/sq.po b/src/calibre/translations/sq.po index 6ba3b78f1f..23f531e10d 100644 --- a/src/calibre/translations/sq.po +++ b/src/calibre/translations/sq.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-01-25 18:58+0000\n" -"PO-Revision-Date: 2010-01-25 18:56+0000\n" +"PO-Revision-Date: 2010-01-31 21:38+0000\n" "Last-Translator: Besnik \n" "Language-Team: Albanian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-01-26 04:49+0000\n" +"X-Launchpad-Export-Date: 2010-02-01 04:43+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 diff --git a/src/calibre/translations/sv.po b/src/calibre/translations/sv.po index 410b81ed4c..434750a750 100644 --- a/src/calibre/translations/sv.po +++ b/src/calibre/translations/sv.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-01-25 18:58+0000\n" -"PO-Revision-Date: 2010-01-25 23:11+0000\n" -"Last-Translator: Merarom \n" +"PO-Revision-Date: 2010-01-31 21:37+0000\n" +"Last-Translator: Kovid Goyal \n" "Language-Team: Swedish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-01-27 04:44+0000\n" +"X-Launchpad-Export-Date: 2010-02-01 04:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 diff --git a/src/calibre/translations/tr.po b/src/calibre/translations/tr.po index 2e2482d62c..cac783dba1 100644 --- a/src/calibre/translations/tr.po +++ b/src/calibre/translations/tr.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-01-25 18:58+0000\n" -"PO-Revision-Date: 2010-01-29 18:39+0000\n" -"Last-Translator: Bugra Gokalp Okcu \n" +"PO-Revision-Date: 2010-01-31 21:43+0000\n" +"Last-Translator: Kovid Goyal \n" "Language-Team: Turkish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-01-30 04:39+0000\n" +"X-Launchpad-Export-Date: 2010-02-01 04:45+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 diff --git a/src/calibre/translations/zh_TW.po b/src/calibre/translations/zh_TW.po index 925a80b5b0..087b2b356a 100644 --- a/src/calibre/translations/zh_TW.po +++ b/src/calibre/translations/zh_TW.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-01-25 18:58+0000\n" -"PO-Revision-Date: 2010-01-26 11:10+0000\n" +"PO-Revision-Date: 2010-01-31 21:45+0000\n" "Last-Translator: Chien Cheng Wei \n" "Language-Team: Traditional Chinese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-01-27 04:44+0000\n" +"X-Launchpad-Export-Date: 2010-02-01 04:45+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 From b5fb7d6c42030529fe783797bf1951e1882c4b06 Mon Sep 17 00:00:00 2001 From: Starson17 Date: Mon, 1 Feb 2010 11:55:29 -0500 Subject: [PATCH 002/164] Make use filename metadata only apply only to manually added books, not recipes --- src/calibre/ebooks/metadata/meta.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/calibre/ebooks/metadata/meta.py b/src/calibre/ebooks/metadata/meta.py index 60228f57dd..d013784c9a 100644 --- a/src/calibre/ebooks/metadata/meta.py +++ b/src/calibre/ebooks/metadata/meta.py @@ -84,11 +84,10 @@ def get_metadata(stream, stream_type='lrf', use_libprs_metadata=False): return opf mi = MetaInformation(None, None) - if prefs['read_file_metadata']: - mi = get_file_type_metadata(stream, stream_type) - name = os.path.basename(getattr(stream, 'name', '')) base = metadata_from_filename(name) + if ((name.find('calibre') != -1 and name.find('recipe') != -1) or prefs['read_file_metadata']): + mi = get_file_type_metadata(stream, stream_type) if base.title == os.path.splitext(name)[0] and base.authors is None: # Assume that there was no metadata in the file and the user set pattern # to match meta info from the file name did not match. From 6e78824177e22cc2e2f8ffc69c6868753e188edb Mon Sep 17 00:00:00 2001 From: Translators <> Date: Tue, 2 Feb 2010 04:47:31 +0000 Subject: [PATCH 003/164] Launchpad automatic translations update. --- src/calibre/translations/fr.po | 801 ++++++++++++++++++--------------- src/calibre/translations/ru.po | 768 ++++++++++++++++--------------- 2 files changed, 846 insertions(+), 723 deletions(-) diff --git a/src/calibre/translations/fr.po b/src/calibre/translations/fr.po index 596b4ec6a7..ad30f548d5 100644 --- a/src/calibre/translations/fr.po +++ b/src/calibre/translations/fr.po @@ -6,14 +6,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre 0.4.22\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-01-25 18:58+0000\n" -"PO-Revision-Date: 2010-01-25 02:45+0000\n" -"Last-Translator: Kovid Goyal \n" +"POT-Creation-Date: 2010-02-01 07:47+0000\n" +"PO-Revision-Date: 2010-02-01 19:05+0000\n" +"Last-Translator: Vincent C. \n" "Language-Team: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-01-26 04:50+0000\n" +"X-Launchpad-Export-Date: 2010-02-02 04:47+0000\n" "X-Generator: Launchpad (build Unknown)\n" "Generated-By: pygettext.py 1.5\n" @@ -30,7 +30,7 @@ msgstr "Ne fait strictement rien" #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58 #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:205 -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:417 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:418 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:69 #: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:319 @@ -50,7 +50,6 @@ msgstr "Ne fait strictement rien" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:104 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:106 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:171 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:329 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:444 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:894 @@ -65,18 +64,18 @@ msgstr "Ne fait strictement rien" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:79 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:121 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:155 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:607 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:797 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:609 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:799 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:51 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:896 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:901 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:961 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:898 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:903 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:969 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:137 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:139 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:105 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:171 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:172 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:173 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:174 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:39 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/palmdoc/writer.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ztxt/writer.py:27 @@ -99,10 +98,10 @@ msgstr "Ne fait strictement rien" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:233 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:235 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:273 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:121 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:276 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:132 @@ -113,7 +112,7 @@ msgstr "Ne fait strictement rien" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:842 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:109 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:144 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:454 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:402 @@ -655,7 +654,7 @@ msgid "There is insufficient free space on the storage card" msgstr "Espace insuffisant sur la carte mémoire" #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:799 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:822 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:824 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:232 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1068 @@ -818,8 +817,8 @@ msgstr "" msgid "Apply no processing to the image" msgstr "N'applique aucun traitement sur l'image" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:441 -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:452 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:442 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:453 msgid "Page" msgstr "Page" @@ -2078,7 +2077,7 @@ msgstr "" "LibraryThing.com\n" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1083 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1328 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1336 msgid "Cover" msgstr "Couverture" @@ -2109,74 +2108,74 @@ msgstr "Titre pour les tables des matières générées." msgid "Disable compression of the file contents." msgstr "Désactiver la compression du contenu du fichier." -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:102 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:105 msgid "All articles" msgstr "Tous les articles" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1329 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1337 msgid "Title Page" msgstr "Page de titre" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1330 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1338 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:53 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:188 msgid "Table of Contents" msgstr "Tables des matières" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1331 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1339 msgid "Index" msgstr "Index" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1332 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1340 msgid "Glossary" msgstr "Glossaire" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1333 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1341 msgid "Acknowledgements" msgstr "Remerciements" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1334 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1342 msgid "Bibliography" msgstr "Bibliographie" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1335 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1343 msgid "Colophon" msgstr "Marque de l'imprimeur" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1336 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1344 msgid "Copyright" msgstr "Copyright" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1337 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1345 msgid "Dedication" msgstr "Dédicace" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1338 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1346 msgid "Epigraph" msgstr "Epigraphe" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1339 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1347 msgid "Foreword" msgstr "Avant-propos" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1340 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1348 msgid "List of Illustrations" msgstr "Liste d'illustrations" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1341 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1349 msgid "List of Tables" msgstr "Liste de Tables" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1342 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1350 msgid "Notes" msgstr "Notes" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1343 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1351 msgid "Preface" msgstr "Préface" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1344 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1352 msgid "Main Text" msgstr "Texte principal" @@ -2546,10 +2545,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:199 msgid "" "This RTF file has a feature calibre does not support. Convert it to HTML " -"first and then try it." +"first and then try it.\n" +"%s" msgstr "" -"Ce fichier RTF a une fonctionnalité non supportée par calibre. Le convertir " -"en HTML d'abord et puis essayer le." +"Ce fichier RTF comporte une fonctionnalité qui n'est pas supportée par " +"Calibre. Convertissez-le en HTML puis réessayez.\n" +"%s" #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:23 msgid "" @@ -2621,85 +2622,85 @@ msgstr "" "n'espace n'est présent. Autorise aussi la valeur maximale de la longueur de " "ligne à être en dessous du minimum" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:29 msgid "Send file to storage card instead of main memory by default" msgstr "" "Par défaut, envoyer le fichier dans la carte mémoire à la place de la " "mémoire principale" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:30 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:31 msgid "Confirm before deleting" msgstr "Confirmer avant la suppression" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:33 msgid "Toolbar icon size" msgstr "Taille de la barre d'icone" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:34 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:35 msgid "Show button labels in the toolbar" msgstr "Affiche les libellés dans la barre d'outils" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:36 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:37 msgid "Main window geometry" msgstr "Géométrie de l'écran principal" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:39 msgid "Notify when a new version is available" msgstr "Avertir lorsqu'une nouvelle version est disponible" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:40 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:41 msgid "Use Roman numerals for series number" msgstr "Utiliser les chiffres romains pour les numéros de séries" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:43 msgid "Sort tags list by popularity" msgstr "Trier la liste des étiquettes par popularité" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:44 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:45 msgid "Number of covers to show in the cover browsing mode" msgstr "" "Nombre de couvertures à afficher dans le mode de navigation par couverture" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:47 msgid "Defaults for conversion to LRF" msgstr "Valeurs par défaut pour la conversion vers LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:49 msgid "Options for the LRF ebook viewer" msgstr "Options pour l'afficheur d'ebook LFR" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:52 msgid "Formats that are viewed using the internal viewer" msgstr "Formats qui sont affichés par l'afficheur interne" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 msgid "Columns to be displayed in the book list" msgstr "Colonnes affichées dans la liste de livres" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 msgid "Automatically launch content server on application startup" msgstr "" "Démarrer automatiquement le serveur de contenu au démarrage de l'application" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 msgid "Oldest news kept in database" msgstr "Anciennes informations conservées dans la base" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:57 msgid "Show system tray icon" msgstr "Afficher l'icône dans la zone de notification" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:59 msgid "Upload downloaded news to device" msgstr "Envoyer les News téléchargées vers l'appareil" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:61 msgid "Delete books from library after uploading to device" msgstr "" "Supprimer les livres de la librairie après les avoir téléchargés dans " "l'appareil" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:63 msgid "" "Show the cover flow in a separate window instead of in the main calibre " "window" @@ -2707,83 +2708,87 @@ msgstr "" "Afficher la navigation par couverture dans une fenêtre séparée au lieu de la " "fenêtre principale de calibre." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:65 msgid "Disable notifications from the system tray icon" msgstr "Désactiver les alertes dans la zone de notification" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:67 msgid "Default action to perform when send to device button is clicked" msgstr "" "Action par défaut à réaliser quand le bouton 'envoyer au lecteur' est cliqué" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:89 msgid "Maximum number of waiting worker processes" msgstr "Nombre maximum de processus de travail en attente" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:91 msgid "Download social metadata (tags/rating/etc.)" msgstr "Télécharger les métadonnés sociales (étiquettes/classement/etc...)" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:93 +msgid "Overwrite author and title with new metadata" +msgstr "Remplacer l'auteur et le titreavec de nouvelles metadata" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:95 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "" "Limiter le nombre maximum de travaux simultanés au nombre de processeurs." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:439 msgid "Copied" msgstr "Copié" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:167 msgid "Copy" msgstr "Copier" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:167 msgid "Copy to Clipboard" msgstr "Copier dans le Presse-papiers" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:395 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:398 msgid "Choose Files" msgstr "Choisir les fichiers" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:56 msgid "Searching in" msgstr "Recherche dans" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:167 msgid "Adding..." msgstr "Ajout..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:180 msgid "Searching in all sub-directories..." msgstr "Cherche dans tous les sous-répertoires..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:193 msgid "Path error" msgstr "Chemin de l'erreur" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:194 msgid "The specified directory could not be processed." msgstr "Le chemin spécifié ne peut pas être traité." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:198 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:495 msgid "No books" msgstr "Aucun livre" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:199 msgid "No books found" msgstr "Aucun livre trouvé" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:265 msgid "Added" msgstr "Ajouté" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:278 msgid "Adding failed" msgstr "L'ajout a échoué" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:279 msgid "" "The add books process seems to have hung. Try restarting calibre and adding " "the books in smaller increments, until you find the problem book." @@ -2792,11 +2797,11 @@ msgstr "" "redémarrer calibre et ajouter les livres avec un incrément plus petit, " "jusqu'à ce que vous trouviez le problème." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:287 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:291 msgid "Duplicates found!" msgstr "Des doublons ont été détectés !" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:292 msgid "" "Books with the same title as the following already exist in the database. " "Add them anyway?" @@ -2804,15 +2809,15 @@ msgstr "" "Des livres avec des titres identiques à ceux qui suivent existent déjà la " "base. Voulez-vous quand-même les ajouter ?" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:295 msgid "Adding duplicates..." msgstr "Ajoute les dupliqués..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:356 msgid "Saving..." msgstr "Sauvegarde..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:409 msgid "Saved" msgstr "Sauvegardé" @@ -2852,7 +2857,7 @@ msgid "output" msgstr "sortie" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:36 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:27 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:49 @@ -2892,28 +2897,45 @@ msgid "E-book options" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:256 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:271 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1416 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1430 msgid "Catalog" msgstr "Catalogue" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:52 -msgid "Tags to exclude as genres (regex):" -msgstr "Etiquettes pour exclure les genres (regex):" - -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:68 msgid "'Don't include this book' tag:" msgstr "Etiquette 'Ne pas inclure ce livre':" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:69 msgid "'Mark this book as read' tag:" msgstr "Etiquette 'Marquer ce livre comme lu':" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:70 msgid "Additional note tag prefix:" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:71 +msgid "Sort numbers as text" +msgstr "Trier les chiffres comme du texte" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:72 +msgid "Regex pattern describing tags to exclude as genres:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:73 +msgid "Special marker tags for catalog generation" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:74 +msgid "" +"Regex tips:\n" +"- The default regex of '\\[[\\w]*\\]' ignores tags of the form '[tag]', " +"e.g., '[Amazon Freebie]'\n" +"- A regex of '.' ignores all tags, generating no genre categories in the " +"catalog" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:28 msgid "Tab template for catalog.ui" msgstr "" @@ -3050,12 +3072,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:570 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:574 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:357 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376 @@ -3408,7 +3430,7 @@ msgid "Change the title of this book" msgstr "Modifie le titre du livre" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:173 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:140 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:358 msgid "&Author(s): " msgstr "&Auteurs : " @@ -3426,7 +3448,7 @@ msgstr "" "virgules." #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:149 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367 msgid "&Publisher: " msgstr "&Editeur : " @@ -3437,7 +3459,7 @@ msgid "Ta&gs: " msgstr "Ta&gs : " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:178 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:151 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:369 msgid "" "Tags categorize the book. This is particularly useful while searching. " @@ -3447,15 +3469,15 @@ msgstr "" "
Cela peut être n'importe quels mots, séparés par des virgules." #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:179 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:156 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:372 msgid "&Series:" msgstr "&Séries :" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:181 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:154 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:158 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:373 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374 msgid "List of known series. You can add new series." @@ -3577,7 +3599,7 @@ msgid "RB Output" msgstr "Sortie RB" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1637 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1639 msgid "Choose the format to view" msgstr "Choisir le format à afficher" @@ -3885,7 +3907,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:38 -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:132 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:135 msgid "No details available." msgstr "Pas de détail disponible." @@ -4146,7 +4168,7 @@ msgid "My Books" msgstr "Mes Livres" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:67 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:264 msgid "Generate catalog" msgstr "Générer le catalogue" @@ -4278,131 +4300,131 @@ msgstr "" msgid "new email address" msgstr "Nouvelle adresse email" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:477 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:821 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:478 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:823 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1248 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 msgid "Error" msgstr "Erreur" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:478 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:479 msgid "Failed to install command line tools." msgstr "L'installation des outils en ligne de commande a échouée." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:481 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:482 msgid "Command line tools installed" msgstr "Outils en ligne de commande installés." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:482 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:483 msgid "Command line tools installed in" msgstr "Outils en ligne de commande installés dans" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:483 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:484 msgid "" "If you move calibre.app, you have to re-install the command line tools." msgstr "" "Si vous déplacez calibre.app, vous devez réinstaller les outils en ligne de " "commande." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:534 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:535 msgid "No valid plugin path" msgstr "Pas de répertoire valide pour les plugins" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:536 msgid "%s is not a valid plugin path" msgstr "%s n'est pas un répertoire valide pour les plugins" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:539 msgid "Choose plugin" msgstr "Choisir le plugin" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551 msgid "Plugin cannot be disabled" msgstr "Le plugin ne peut pas être désactivé" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:552 msgid "The plugin: %s cannot be disabled" msgstr "Le plugin %s ne peut pas être désactivé" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:561 msgid "Plugin not customizable" msgstr "Le plugin ne peut pas être personnalisé" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:561 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:562 msgid "Plugin: %s does not need customization" msgstr "Le plugin %s ne peut pas être personnalisé" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:569 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:570 msgid "Customize" msgstr "Personnaliser" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:608 msgid "Cannot remove builtin plugin" msgstr "Impossible de supprimer les plugins natifs" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:609 msgid " cannot be removed. It is a builtin plugin. Try disabling it instead." msgstr "" " ne peut pas être retiré. C'est un plugin natif. Essayer plutôt de le " "désactiver" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:641 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:642 msgid "Error log:" msgstr "Journal d'erreur:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:648 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:649 msgid "Access log:" msgstr "Journal des accès:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:676 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:677 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:659 msgid "Failed to start content server" msgstr "A échoué lors du démarrage du serveur de contenu" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:701 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:550 msgid "Select location for books" msgstr "Sélectionner l'emplacement pour les livres" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:708 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:709 msgid "Invalid size" msgstr "Taille invalide" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:709 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:710 msgid "The size %s is invalid. must be of the form widthxheight" msgstr "La taille %s est invalide. Doit être au format largeurxhauteur" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:762 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:767 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:764 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:769 msgid "Invalid database location" msgstr "Chemin de la database invalide" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:763 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:765 msgid "Invalid database location " msgstr "Chemin de la database invalide " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:764 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:766 msgid "
Must be a directory." msgstr "
Doit être un répertoire." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:768 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:770 msgid "Invalid database location.
Cannot write to " msgstr "Chemin de la database invalide.
Erreur en écriture " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:802 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:804 msgid "Checking database integrity" msgstr "Vérifier l'intégrité de la base de données" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:822 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:824 msgid "Failed to check database integrity" msgstr "La vérification de l'intégrité de la base de données a échouée" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:827 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:829 msgid "Some inconsistencies found" msgstr "Des incohérences ont été trouvées" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:828 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:830 msgid "" "The following books had formats listed in the database that are not actually " "available. The entries for the formats have been removed. You should check " @@ -4502,18 +4524,22 @@ msgid "" "Send to Device button. This setting can be overriden for individual devices " "by customizing the device interface plugins in Preferences->Plugins" msgstr "" +"Ici vous pouvez contrôler la façon dont Calibre sauvegardera vos ebooks " +"quand vous cliquez sur le bouton \"Envoyer au lecteur\". Ces paramètres " +"peuvent être outrepassés par votre lecteur en personnalisant l'interface de " +"gestion des pluggins des lecteurs dans Préférences->Plugins" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:118 msgid "Sending to &device" msgstr "Envoi vers l'appareil" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504 #: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:366 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 msgid "Preferences" msgstr "Préférences" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 msgid "" "&Location of ebooks (The ebooks are stored in folders sorted by author and " "metadata is stored in the file metadata.db)" @@ -4521,25 +4547,29 @@ msgstr "" "&Localisation des ebooks (Les ebooks sont stockés dans les répertoires triés " "par auteur et les métadonnées sont stockées dans le fichier metadata.db)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:503 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 msgid "Browse for the new database location" msgstr "Choisir un nouvel emplacement pour la base de données" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 msgid "Show notification when &new version is available" msgstr "Envoyer une notification quand une nouvelle version est disponible." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 msgid "Download &social metadata (tags/ratings/etc.) by default" msgstr "" "Télécharger les métadonnées &sociales (étiquettes/classement/etc...) par " "défaut" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 +msgid "Overwrite & author/title by default when fetching metadata" +msgstr "Remplacer & auteur/titre par défaut en récupérant les métadonnées" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 msgid "Default network &timeout:" msgstr "&Timeout par défaut pour les connexions réseau :" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 msgid "" "Set the default timeout for network fetches (i.e. anytime we go out to the " "internet to get information)" @@ -4547,159 +4577,159 @@ msgstr "" "Indiquer le timeout par défaut pour les recherches réseau (c-à-d le temps " "utilisé pour aller rechercher l'information par internet)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 msgid " seconds" msgstr " secondes" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 msgid "Choose &language (requires restart):" msgstr "Choisir la &langue (nécessite un redémarrage):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 msgid "Normal" msgstr "Normale" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 msgid "High" msgstr "Haute" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 msgid "Low" msgstr "Basse" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 msgid "Job &priority:" msgstr "&Priorité du travail:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 msgid "Preferred &output format:" msgstr "Format de &sortie préféré:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 msgid "Preferred &input format order:" msgstr "Ordre préféré pour le format d'entrée" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 msgid "Use &Roman numerals for series number" msgstr "Utiliser les chiffres &romains pour les numéros de séries" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 msgid "Enable system &tray icon (needs restart)" msgstr "" "Ac&tiver l'affichage dans la zone de notification (redémarrage nécessaire)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 msgid "Show ¬ifications in system tray" msgstr "Afficher les alertes dans la zone de ¬ification" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 msgid "Show cover &browser in a separate window (needs restart)" msgstr "" "Afficher la navigation par couverture dans une fenêtre séparée (redémarrage " "nécessaire)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 msgid "Search as you type" msgstr "Rechercher lors de la saisie" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 msgid "Automatically send downloaded &news to ebook reader" msgstr "Envoyer automatiquement les i&nformations vers le lecteur d'ebook" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 msgid "&Delete news from library when it is automatically sent to reader" msgstr "" "Supprimer les News de la librairie lorsque l'envoi est automatique vers " "l'appareil" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 msgid "&Number of covers to show in browse mode (needs restart):" msgstr "" "&Nombre de couvertures à afficher dans le mode navigation (nécessite un " "redémarrage):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 msgid "Toolbar" msgstr "Barre d'outils" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 msgid "Large" msgstr "Large" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 msgid "Medium" msgstr "Moyen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 msgid "Small" msgstr "Petit" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 msgid "&Button size in toolbar" msgstr "Taille des boutons dans la barre d'outils" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 msgid "Show &text in toolbar buttons" msgstr "Afficher le &texte pour les boutons de la barre d'outils" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 msgid "Select visible &columns in library view" msgstr "Sélectionner les &colonnes visibles dans la vue librairie" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 msgid "Use internal &viewer for:" msgstr "Utiliser l'afficheur interne pour:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 msgid "Add an email address to which to send books" msgstr "Ajouter une adresse email où les livres seront envoyés" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 msgid "&Add email" msgstr "&Ajouter un email" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 msgid "Make &default" msgstr "Par &défaut" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 msgid "&Remove email" msgstr "&Supprimer un email" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 msgid "calibre can send your books to you (or your reader) by email" msgstr "" "calibre peut envoyer vos livres vers vous (ou votre lecteur) par email" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 msgid "&Maximum number of waiting worker processes (needs restart):" msgstr "" "Nombre &maximum de processus de travail en attente (nécessite un " "redémarrage):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 msgid "&Check database integrity" msgstr "Vérifier l'intégrité de la base de données" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 msgid "&Install command line tools" msgstr "&Installer les outils en ligne de commande" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549 msgid "Open calibre &configuration directory" msgstr "Ouvrir le répertoire de &configuration de calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 msgid "Limit the max. simultaneous jobs to the available CPU &cores" msgstr "" "Limiter le nombre max de travaux simultanés au nombre de cœurs de " "processeurs disponibles" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 msgid "Debug &device detection" msgstr "Déboguer la &détection de l'appareil" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 msgid "" "calibre contains a network server that allows you to access your book " "collection using a browser from anywhere in the world. Any changes to the " @@ -4710,25 +4740,25 @@ msgstr "" "monde. Toutes modifications des paramètres ne prendra effet qu'après un " "redémarrage du serveur." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553 msgid "Server &port:" msgstr "&Port du serveur:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117 msgid "&Username:" msgstr "Nom d'&utilisateur:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119 msgid "&Password:" msgstr "Mot de &passe :" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 msgid "" "If you leave the password blank, anyone will be able to access your book " "collection using the web interface." @@ -4736,7 +4766,7 @@ msgstr "" "Si vous laisser le mot de passe à vide, tout le monde pourra accéder à votre " "collection de livres en utilisant une interface web." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " @@ -4744,41 +4774,41 @@ msgstr "" "Taille maximale (largeurxhauteur) pour l'affichage des couvertures. Les " "couvertures plus larges sont redimensionnées. " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558 msgid "Max. &cover size:" msgstr "Taille max. de la couverture:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212 msgid "&Show password" msgstr "&Montrer le mot de passe" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560 msgid "Max. &OPDS items per query:" msgstr "Nombre d'articles OPDS max. par requête:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561 msgid "&Start Server" msgstr "Démarrer le &Serveur" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:562 msgid "St&op Server" msgstr "Arrêter le serveur" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:563 msgid "&Test Server" msgstr "&Tester le serveur" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:564 msgid "Run server &automatically on startup" msgstr "Lancer &automatiquement le serveur au démarrage" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:565 msgid "View &server logs" msgstr "Afficher les logs du &serveur" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:566 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46 msgid "" "

Remember to leave calibre running as the server only runs as long as " @@ -4795,7 +4825,7 @@ msgstr "" "Stanza de votre iPhone. Ici nomhote doit être le nom d'hôte complet ou " "l'adresse IP de l'ordinateur sur lequel calibre est démarré." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:564 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:568 msgid "" "Here you can customize the behavior of Calibre by controlling what plugins " "it uses." @@ -4803,27 +4833,27 @@ msgstr "" "Ici vous pouvez personnaliser le comportement de Calibre en choisissant les " "plugins que vous souhaitez utiliser." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:565 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:569 msgid "Enable/&Disable plugin" msgstr "Activer/Désactiver le plugin" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:566 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:570 msgid "&Customize plugin" msgstr "Personnaliser le plugin" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:567 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:571 msgid "&Remove plugin" msgstr "Supprimer le plugin" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:568 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:572 msgid "Add new plugin" msgstr "Ajouter un nouveau plugin" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:569 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:573 msgid "Plugin &file:" msgstr "&Fichier plugin:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:571 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:575 msgid "&Add" msgstr "&Ajouter" @@ -4894,44 +4924,44 @@ msgstr "Triage Auteur" msgid "ISBN" msgstr "ISBN" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:151 msgid "Finding metadata..." msgstr "Cherche les métadonnées..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:164 msgid "Could not find metadata" msgstr "Impossible de trouver les métadonnées" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:165 msgid "The metadata download seems to have stalled. Try again later." msgstr "" "Le téléchargement des métadonnées semble s'être arrêté. Essayer de nouveau " "plus tard." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:174 msgid "Warning" msgstr "Avertissement" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:175 msgid "Could not fetch metadata from:" msgstr "Impossible de récupérer les métadonnées de:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:179 msgid "No metadata found" msgstr "Aucune métadonnée trouvée" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:180 msgid "" "No metadata found, try adjusting the title and author or the ISBN key." msgstr "" "Aucune métadonnée trouvée, essayer en modifiant le titre et l'auteur ou la " "clé ISBN." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:84 msgid "Fetch metadata" msgstr "Récupérer des métadonnées" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85 msgid "" "

calibre can find metadata for your books from two locations: Google " "Books and isbndb.com.

To use isbndb.com you must sign up for a " @@ -4944,31 +4974,35 @@ msgstr "" "href=\"http://www.isbndb.com\">compte gratuit et entrer votre clef " "d'accès ci-dessous." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:86 msgid "&Access Key:" msgstr "Clef d'&accès" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87 msgid "Fetch" msgstr "Récupérer" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:88 msgid "Matches" msgstr "Résultats correspondants" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:89 msgid "" "Select the book that most closely matches your copy from the list below" msgstr "" "Sélectionnez le livre qui correspond le mieux au votre dans la liste ci-" "dessous." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:90 msgid "Download &social metadata (tags/rating/etc.) for the selected book" msgstr "" "Télécharger les métadonnées &sociales (étiquettes/classement/etc...) pour le " "livre sélectionné" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:91 +msgid "Overwrite &author/title with author/title of selected book" +msgstr "Remplacer &auteur/titre par auteur/titre de l'ebook sélectionné" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/job_view_ui.py:37 msgid "Details of job" msgstr "Détail du travail" @@ -4989,24 +5023,24 @@ msgstr "Afficher les &détails du travail" msgid "Stop &all jobs" msgstr "Arrêter tous les travaux" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:138 msgid "Edit Meta information" msgstr "Editer les informations de Métadonnées" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:353 msgid "Meta information" msgstr "Informations métadonnées" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:141 msgid "A&utomatically set author sort" msgstr "Effectuer un tri a&utomatique par auteur" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:142 msgid "Author s&ort: " msgstr "Tri par auteur: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:143 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360 msgid "" "Specify how the author(s) of this book should be sorted. For example Charles " @@ -5015,48 +5049,52 @@ msgstr "" "Définit comment l'auteur de ce livre doit être classé. Par exemple, Charles " "Dickens peut être classé comme Dickens, Charles." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:144 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:363 msgid "&Rating:" msgstr "&Note :" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:143 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:364 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:365 msgid "Rating of this book. 0-5 stars" msgstr "Note de ce livre. de 0 à 5 étoiles" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:147 +msgid "No change" +msgstr "Aucune modification" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:366 msgid " stars" msgstr " étoiles" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:150 msgid "Add ta&gs: " msgstr "Ajouter des étiquettes: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:149 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:370 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371 msgid "Open Tag Editor" msgstr "Ouvre l'éditeur de mots-clefs" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:154 msgid "&Remove tags:" msgstr "&Supprime des étiquettes :" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:155 msgid "Comma separated list of tags to remove from the books. " msgstr "" "Liste d'étiquettes séparées par des virgules à supprimer des livres. " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:159 msgid "Remove &format:" msgstr "Supprimer le &format:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:160 msgid "&Swap title and author" msgstr "Intervertir le titre et l'auteur" @@ -5162,20 +5200,20 @@ msgid "There were errors downloading social metadata" msgstr "" "Il y a eu des erreurs lors du téléchargement des métadonnées sociales" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:598 msgid "Cannot fetch metadata" msgstr "Impossible de récupérer les métadonnées" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:598 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:599 msgid "You must specify at least one of ISBN, Title, Authors or Publisher" msgstr "" "Vous devez spécifier au moins un ISBN, un titre, des auteurs ou un éditeur" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:660 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:664 msgid "Permission denied" msgstr "Permission refusée" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:661 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:665 msgid "Could not open %s. Is it being used by another program?" msgstr "" "Impossible d'ouvrir %s. Est-il en cours d'utilisation par un autre programme " @@ -6028,52 +6066,52 @@ msgstr "Ouvrir le livre" msgid "Configure" msgstr "Configurer" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:24 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:25 msgid "Use the library located at the specified path." msgstr "Utiliser la librairie présente dans le répertoire spécifié." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:27 msgid "Start minimized to system tray." msgstr "Démarrer en mode minimisé dans la zone de notification." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:29 msgid "Log debugging information to console" msgstr "Loggue les informations de débogage dans la console" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:30 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:31 msgid "Do not check for updates" msgstr "Ne pas vérifier les mises à jour" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:83 msgid "If you are sure it is not running" msgstr "Si vous êtes sûr qu'il n'est pas démarré" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:85 msgid "Cannot Start " msgstr "Impossible de lancer " -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:86 msgid "%s is already running." msgstr "%s est déjà démarré." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:89 msgid "may be running in the system tray, in the" msgstr "peut être démarré dans la zone de notification, dans la" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:91 msgid "upper right region of the screen." msgstr "région en haut et à droite de l'écran." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:93 msgid "lower right region of the screen." msgstr "région en bas et à droite de l'écran." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:96 msgid "try rebooting your computer." msgstr "Essayer de redémarrer l'ordinateur." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:95 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:110 msgid "try deleting the file" msgstr "Essayer de supprimer le fichier" @@ -6235,11 +6273,11 @@ msgstr "&Quitter" msgid "ERROR: Unhandled exception" msgstr "ERREUR: Exception non traitée" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:89 msgid "Book has neither title nor ISBN" msgstr "Le livre n'a ni titre ni ISBN" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:115 msgid "No matches found for this book" msgstr "Aucune correspondance pour ce livre" @@ -6374,11 +6412,11 @@ msgstr "Mise en file d'attente " msgid "Fetch news from " msgstr "Récupérer des News de " -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:276 msgid "Convert existing" msgstr "Conversion existante" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:277 msgid "" "The following books have already been converted to %s format. Do you wish to " "reconvert them?" @@ -6473,7 +6511,7 @@ msgid "Save to disk in a single directory" msgstr "Sauvegarder sur le disque dans un seul répertoire" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1745 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1747 msgid "Save only %s format to disk" msgstr "Sauvegarder seulement le format %s vers le disque" @@ -6529,7 +6567,7 @@ msgid "Calibre Library" msgstr "Librairie calibre" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:485 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1901 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1903 msgid "Choose a location for your ebook library." msgstr "Choisir un emplacement pour votre librairie d'ebook" @@ -6639,33 +6677,33 @@ msgstr "Archives" msgid "Supported books" msgstr "Livres supportés" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1052 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1054 msgid "Failed to read metadata" msgstr "Impossible de lire les métadonnées" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1053 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1055 msgid "Failed to read metadata from the following" msgstr "Impossible de lire les métadonnées à partir de" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1072 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1074 msgid "Cannot delete" msgstr "Impossible de supprimer" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1075 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1631 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1650 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1077 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1633 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1652 msgid "No book selected" msgstr "Aucun livre sélectionné" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1085 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1087 msgid "Choose formats to be deleted" msgstr "Choisir les formats à supprimer" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1103 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1105 msgid "Choose formats not to be deleted" msgstr "Choisir les formats à ne pas supprimer" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1141 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1143 msgid "" "The selected books will be permanently deleted and the files removed " "from your computer. Are you sure?" @@ -6673,131 +6711,131 @@ msgstr "" "Les livres sélectionnés vont être supprimés définitivement et les " "fichiers seront supprimés de votre ordinateur. Etes-vous sûr ?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1168 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1170 msgid "Deleting books from device." msgstr "Suppression des livres dans l'appareil" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1199 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1201 msgid "Cannot download metadata" msgstr "Impossible de télécharger les métadonnées" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1200 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1257 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1290 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1315 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1374 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1487 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1202 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1259 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1292 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1317 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1376 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1489 msgid "No books selected" msgstr "Aucun livre sélectionné" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1215 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217 msgid "social metadata" msgstr "Métadonnées sociales" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 msgid "covers" msgstr "couvertures" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 msgid "metadata" msgstr "métadonnées" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1221 msgid "Downloading %s for %d book(s)" msgstr "Télécharge les livres %s sur %d" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1241 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1243 msgid "Failed to download some metadata" msgstr "Le téléchargement d'une partie des métadonnées a échoué" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1242 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1244 msgid "Failed to download metadata for the following:" msgstr "Le téléchargement des métadonnées a échoué pour :" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1245 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1247 msgid "Failed to download metadata:" msgstr "Le téléchargement des métadonnées a échoué:" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1256 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1289 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1258 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1291 msgid "Cannot edit metadata" msgstr "Impossible d'éditer les métadonnées" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1314 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1316 msgid "Cannot save to disk" msgstr "Impossible de sauvegarder sur le disque" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1317 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1319 msgid "Choose destination directory" msgstr "Choisir le répertoire de destination" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1344 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1346 msgid "Error while saving" msgstr "Erreur pendant la sauvegarde" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1345 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1347 msgid "There was an error while saving." msgstr "Il y a eu une erreur lors de la sauvegarde." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1352 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1353 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1354 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1355 msgid "Could not save some books" msgstr "Impossible de sauvegarder certains livres" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1354 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1356 msgid "Click the show details button to see which ones." msgstr "Cliquer le bouton afficher les détails pour voir lesquels." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1375 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1377 msgid "No books selected to generate catalog for" msgstr "Aucun livre sélectionné pour générer le catalogue pour" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1392 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1394 msgid "Generating %s catalog..." msgstr "Génère le catalogue %s..." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1403 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1405 msgid "Catalog generated." msgstr "Catalogue généré." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1406 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1408 msgid "Export Catalog Directory" msgstr "Répertoire d'export du catalogue" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1407 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1409 msgid "Select destination for %s.%s" msgstr "Sélectionner la destination pour %s.%s" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1421 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1423 msgid "Fetching news from " msgstr "Récupération des News de " -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1435 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1437 msgid " fetched." msgstr " récupéré." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1486 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1488 msgid "Cannot convert" msgstr "Conversion impossible" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1515 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1517 msgid "Starting conversion of %d book(s)" msgstr "Démarrer la conversion de %d livre(s)" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1631 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1687 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1633 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1689 msgid "Cannot view" msgstr "Impossible de visualiser" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1649 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1651 msgid "Cannot open folder" msgstr "Impossible d'ouvrir le répertoire" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1671 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1673 msgid "Multiple Books Selected" msgstr "Plusieurs livres sélectionnés" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1672 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1674 msgid "" "You are attempting to open %d books. Opening too many books at once can be " "slow and have a negative effect on the responsiveness of your computer. Once " @@ -6809,32 +6847,32 @@ msgstr "" "réponses de l'ordinateur. Une fois démarré le processus ne peut pas être " "arrêté avant la fin. Voulez-vous continuer ?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1688 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1690 msgid "%s has no available formats." msgstr "%s n'a pas de format disponible." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1729 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1731 msgid "Cannot configure" msgstr "Configuration impossible" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1730 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1732 msgid "Cannot configure while there are running jobs." msgstr "Impossible de configurer pendant que des travaux sont en cours." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1773 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1775 msgid "No detailed info available" msgstr "Pas d'information détaillée disponible" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1774 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1776 msgid "No detailed information is available for books on the device." msgstr "" "Pas d'information détaillée disponible pour les livres dans l'appareil." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1829 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1831 msgid "Error talking to device" msgstr "Erreur pendant la communication avec le lecteur électronique" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1830 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1832 msgid "" "There was a temporary error talking to the device. Please unplug and " "reconnect the device and or reboot." @@ -6843,12 +6881,12 @@ msgstr "" "lecteur électronique. Veuillez déconnecter et reconnecter le lecteur " "électronique et redémarrer." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1853 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1881 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1855 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1883 msgid "Conversion Error" msgstr "Erreur lors de la conversion" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1854 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1856 msgid "" "

Could not convert: %s

It is a DRMed book. You must " "first remove the DRM using third party tools." @@ -6857,23 +6895,23 @@ msgstr "" "href=\"%s\">DRM. Vous devez d'abord enlever les DRM avec des outils " "tiers." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1867 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1869 msgid "Recipe Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1882 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1884 msgid "Failed" msgstr "Échoué" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1910 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1912 msgid "Invalid library location" msgstr "Emplacement de la librairie invalide" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1911 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1913 msgid "Could not access %s. Using %s as the library." msgstr "Impossible d'accéder à %s. Utilise %s comme librairie." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1961 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1963 msgid "" "is the result of the efforts of many volunteers from all over the world. If " "you find it useful, please consider donating to support its development." @@ -6882,11 +6920,11 @@ msgstr "" "Si vous le trouvez utile, pensez à donner afin de supporter son " "développement." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1986 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1988 msgid "There are active jobs. Are you sure you want to quit?" msgstr "Il y a des travaux actifs. Voulez-vous vraiment finir ?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1989 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1991 msgid "" " is communicating with the device!
\n" " Quitting may cause corruption on the device.
\n" @@ -6897,11 +6935,11 @@ msgstr "" "l'appareil.
\n" " Êtes-vous sûr de vouloir quitter ?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1993 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1995 msgid "WARNING: Active jobs" msgstr "ATTENTION: Travaux actifs" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2045 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2047 msgid "" "will keep running in the system tray. To close it, choose Quit in the " "context menu of the system tray." @@ -6909,7 +6947,7 @@ msgstr "" "continuera à tourner dans la zone de notification. Pour le fermer, choisir " "Quitter dans le menu contextuel de la zone de notification." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2064 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2066 msgid "" "Latest version: %s" @@ -6917,11 +6955,11 @@ msgstr "" "Dernière version: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2072 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2074 msgid "Update available" msgstr "Mise à jour disponible" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2073 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2075 msgid "" "%s has been updated to version %s. See the new features. Visit the download page?" @@ -7063,6 +7101,8 @@ msgstr "&Langue par défaut pour la césure:" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:173 msgid "&Resize images larger than the viewer window (needs restart)" msgstr "" +"&Redimensionner les images plus grandes que la fenêtre du visualisateur " +"(nécessite un redémarrage)" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:174 msgid "&User stylesheet" @@ -7796,7 +7836,7 @@ msgstr "" "Le nombre maximum de correspondances retournées par une requête OPDS. Ceci " "affecte l'intégration dans Stanza, Wordplayer,etc..." -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:34 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:35 msgid "" "The fields to output when cataloging books in the database. Should be a " "comma-separated list of fields.\n" @@ -7805,7 +7845,7 @@ msgid "" "Applies to: CSV, XML output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:43 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:44 msgid "" "Output field to sort on.\n" "Available fields: author_sort, id, rating, size, timestamp, title.\n" @@ -7813,14 +7853,17 @@ msgid "" "Applies to: CSV, XML output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:238 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:253 msgid "" "Title of generated catalog used as title in metadata.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" +"Titre du catalogue généré utilisé comme titre dans les métadonnées.\n" +"Par défaut : '%default'\n" +"Applicable pour les formats de sortie ePub, MOBI" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:244 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:259 msgid "" "Save the output from different stages of the conversion pipeline to the " "specified directory. Useful if you are unsure at which stage of the " @@ -7829,14 +7872,17 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:253 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:268 msgid "" "Regex describing tags to exclude as genres.\n" "Default: '%default' excludes bracketed tags, e.g. '[]'\n" "Applies to: ePub, MOBI output formats" msgstr "" +"Expression régulière décrivant les étiquettes à exclure comme genres.\n" +"Par défaut: '%default' exclue les étiquettes entre crochets, ex. '[]'\n" +"Applicable pour les formats de sortie ePub, MOBI" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:258 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:273 msgid "" "Comma-separated list of tag words indicating book should be excluded from " "output. Case-insensitive.\n" @@ -7845,21 +7891,23 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:265 -msgid "" -"Tag indicating book has been read.\n" -"Default: '%default'\n" -"Applies to: ePub, MOBI output formats" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:270 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:280 msgid "" "Tag prefix for user notes, e.g. '*Jeff might enjoy reading this'.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:276 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:286 +msgid "" +"Sort titles with leading numbers as text, e.g.,\n" +"'2001: A Space Odyssey' sorts as \n" +"'Two Thousand One: A Space Odyssey'.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:292 msgid "" "Specifies the output profile. In some cases, an output profile is required " "to optimize the catalog for the device. For example, 'kindle' or " @@ -7869,6 +7917,13 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:298 +msgid "" +"Tag indicating book has been read.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/library/cli.py:121 msgid "" "Path to the calibre library. Default is to use the path stored in the " @@ -8199,7 +8254,7 @@ msgstr "Affiche des informations détaillées. Utile pour le débogage" msgid "Error: You must specify a catalog output file" msgstr "Erreur: Vous devez spécifier un fichier de sortie pour le catalogue" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:689 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:687 msgid "" "%%prog command [options] [arguments]\n" "\n" @@ -8410,6 +8465,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/server.py:862 msgid "Path to the library folder to serve with the content server" msgstr "" +"Chemin vers le répertoire de la librairie à utiliser avec le serveur de " +"contenu" #: /home/kovid/work/calibre/src/calibre/utils/config.py:48 msgid "%sUsage%s: %s\n" @@ -8485,7 +8542,7 @@ msgstr "Arrêté" msgid "Finished" msgstr "Terminé" -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:72 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:75 msgid "Working..." msgstr "Traitement en cours..." @@ -8547,7 +8604,7 @@ msgstr "Anglais (Singapour)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:107 msgid "English (Yemen)" -msgstr "" +msgstr "Anglais (Yemen)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:108 msgid "German (AT)" @@ -8624,79 +8681,87 @@ msgstr "" msgid "Unknown News Source" msgstr "Source de News inconnue" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:533 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:550 msgid "The \"%s\" recipe needs a username and password." msgstr "" "La recette \"%s\" a besoin d'un nom d'utilisateur et d'un mot de passe." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:619 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:635 msgid "Download finished" msgstr "Téléchargement effectué" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:621 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:637 msgid "Failed to download the following articles:" msgstr "Impossible de télécharger les articles suivants;" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:627 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:643 msgid "Failed to download parts of the following articles:" msgstr "" "Impossible de télécharger certaines parties pour les articles suivants:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:629 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:645 msgid " from " msgstr " de " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:631 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:647 msgid "\tFailed links:" msgstr "\tLiens qui ont échoués:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:712 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:728 msgid "Could not fetch article. Run with -vv to see the reason" msgstr "" "Impossible de récupérer l'article. Le lancer avec -w pour en connaitre la " "raison" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:733 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:749 msgid "Fetching feeds..." msgstr "Récupération des flux..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:738 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:754 msgid "Got feeds from index page" msgstr "Obtient les flux à partir de la page d'index" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:744 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:760 msgid "Trying to download cover..." msgstr "Essaie de télécharger la couverture..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:802 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:762 +msgid "Generating masthead..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:835 msgid "Starting download [%d thread(s)]..." msgstr "Commence le téléchargement [processus %d]..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:818 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:851 msgid "Feeds downloaded to %s" msgstr "Flux téléchargés de %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:861 msgid "Could not download cover: %s" msgstr "Impossible de télécharger la couverture: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:840 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:873 msgid "Downloading cover from %s" msgstr "Télécharge la couverture de %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:983 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:908 +msgid "Masthead image downloaded" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1124 msgid "Untitled Article" msgstr "Article sans titre" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1195 msgid "Article downloaded: %s" msgstr "Article téléchargé : %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1065 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1206 msgid "Article download failed: %s" msgstr "Impossible de télécharger l'article: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1082 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 msgid "Fetching feed" msgstr "Récupération du flux" @@ -10780,6 +10845,13 @@ msgstr "Ne pas télécharger les feuilles de style CSS." #~ msgid "Character encoding for input. Default is to auto detect." #~ msgstr "Encodage de caractère de l'entrée. Par défaut : auto-détection" +#~ msgid "" +#~ "This RTF file has a feature calibre does not support. Convert it to HTML " +#~ "first and then try it." +#~ msgstr "" +#~ "Ce fichier RTF a une fonctionnalité non supportée par calibre. Le convertir " +#~ "en HTML d'abord et puis essayer le." + #~ msgid "Default" #~ msgstr "Par défaut" @@ -10955,3 +11027,6 @@ msgstr "Ne pas télécharger les feuilles de style CSS." #~ msgid "E-book Options" #~ msgstr "Options E-book" + +#~ msgid "Tags to exclude as genres (regex):" +#~ msgstr "Etiquettes pour exclure les genres (regex):" diff --git a/src/calibre/translations/ru.po b/src/calibre/translations/ru.po index 15300ef6a9..df08383599 100644 --- a/src/calibre/translations/ru.po +++ b/src/calibre/translations/ru.po @@ -6,14 +6,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre 0.4.55\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-01-25 18:58+0000\n" +"POT-Creation-Date: 2010-02-01 07:47+0000\n" "PO-Revision-Date: 2010-02-01 03:56+0000\n" "Last-Translator: Boris Rybalkin \n" "Language-Team: American English \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-02-01 04:44+0000\n" +"X-Launchpad-Export-Date: 2010-02-02 04:47+0000\n" "X-Generator: Launchpad (build Unknown)\n" "X-Poedit-Country: RUSSIAN FEDERATION\n" "X-Poedit-Language: Russian\n" @@ -34,7 +34,7 @@ msgstr "Ничего не делает" #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58 #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:205 -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:417 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:418 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:69 #: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:319 @@ -54,7 +54,6 @@ msgstr "Ничего не делает" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:104 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:106 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:171 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:329 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:444 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:894 @@ -69,18 +68,18 @@ msgstr "Ничего не делает" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:79 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:121 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:155 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:607 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:797 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:609 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:799 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:51 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:896 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:901 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:961 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:898 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:903 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:969 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:137 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:139 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:105 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:171 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:172 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:173 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:174 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:39 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/palmdoc/writer.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ztxt/writer.py:27 @@ -103,10 +102,10 @@ msgstr "Ничего не делает" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:233 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:235 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:273 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:121 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:276 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:132 @@ -117,7 +116,7 @@ msgstr "Ничего не делает" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:842 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:109 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:144 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:454 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:402 @@ -654,7 +653,7 @@ msgid "There is insufficient free space on the storage card" msgstr "Не хватает свободного места на карте памяти" #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:799 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:822 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:824 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:232 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1068 @@ -812,8 +811,8 @@ msgstr "" msgid "Apply no processing to the image" msgstr "Не обрабатывать изображения" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:441 -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:452 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:442 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:453 msgid "Page" msgstr "Страница" @@ -2032,7 +2031,7 @@ msgstr "" "LibraryThing.com\n" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1083 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1328 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1336 msgid "Cover" msgstr "Обложка" @@ -2061,74 +2060,74 @@ msgstr "Заголовок для любых сгенерированных in-l msgid "Disable compression of the file contents." msgstr "Отказаться от сжатия содержимого файла." -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:102 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:105 msgid "All articles" msgstr "Все статьи" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1329 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1337 msgid "Title Page" msgstr "Титульная страница" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1330 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1338 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:53 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:188 msgid "Table of Contents" msgstr "Содержание" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1331 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1339 msgid "Index" msgstr "Индекс" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1332 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1340 msgid "Glossary" msgstr "Глоссарий" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1333 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1341 msgid "Acknowledgements" msgstr "Подтверждения" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1334 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1342 msgid "Bibliography" msgstr "Библиография" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1335 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1343 msgid "Colophon" msgstr "эмблема издательства" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1336 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1344 msgid "Copyright" msgstr "Копирайт" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1337 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1345 msgid "Dedication" msgstr "Посвящение" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1338 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1346 msgid "Epigraph" msgstr "Эпиграф" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1339 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1347 msgid "Foreword" msgstr "Предисловие" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1340 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1348 msgid "List of Illustrations" msgstr "Список иллюстраций" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1341 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1349 msgid "List of Tables" msgstr "Оглавление" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1342 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1350 msgid "Notes" msgstr "Заметки" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1343 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1351 msgid "Preface" msgstr "Введение" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1344 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1352 msgid "Main Text" msgstr "Основной текст" @@ -2482,10 +2481,9 @@ msgstr "Укажите кодировку для создаваемого док #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:199 msgid "" "This RTF file has a feature calibre does not support. Convert it to HTML " -"first and then try it." +"first and then try it.\n" +"%s" msgstr "" -"RTF файл имеет функциональность которую calibre не поддерживает. " -"Сконвертируйте сначала в HTML, а затем попробуйте еще раз." #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:23 msgid "" @@ -2543,161 +2541,165 @@ msgid "" "allows max-line-length to be below the minimum" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:29 msgid "Send file to storage card instead of main memory by default" msgstr "По умолчанию, отправлять файл в карту памяти, вместо основной памяти" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:30 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:31 msgid "Confirm before deleting" msgstr "Подтвердить перед удалением" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:33 msgid "Toolbar icon size" msgstr "Размер иконок рабочей панели" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:34 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:35 msgid "Show button labels in the toolbar" msgstr "Показать название кнопок на рабочей панали" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:36 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:37 msgid "Main window geometry" msgstr "Геометрия основного окна" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:39 msgid "Notify when a new version is available" msgstr "Сообщить, если доступна новая версия" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:40 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:41 msgid "Use Roman numerals for series number" msgstr "Использовать Римские цифры для нумерации" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:43 msgid "Sort tags list by popularity" msgstr "Сортировать список эпилогов по популярности" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:44 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:45 msgid "Number of covers to show in the cover browsing mode" msgstr "Количество обложек показываемых в режиме просмотра обложек" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:47 msgid "Defaults for conversion to LRF" msgstr "По умолчанию преобразование в LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:49 msgid "Options for the LRF ebook viewer" msgstr "Опции для просмотра электронной книги LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:52 msgid "Formats that are viewed using the internal viewer" msgstr "Форматы для просмотра во встроенной программе" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 msgid "Columns to be displayed in the book list" msgstr "Показывать колонки в списке книг" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 msgid "Automatically launch content server on application startup" msgstr "Автоматически запускать сервер конента при запуске приложения" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 msgid "Oldest news kept in database" msgstr "В базе данных содержатся старые новости" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:57 msgid "Show system tray icon" msgstr "Показывать иконку в панели задач" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:59 msgid "Upload downloaded news to device" msgstr "Загрузить в устройство закаченные новости" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:61 msgid "Delete books from library after uploading to device" msgstr "Удалить книги из библиотеки после загрузки в устройство" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:63 msgid "" "Show the cover flow in a separate window instead of in the main calibre " "window" msgstr "Показать обложку в отдельном окне вместо основного окна calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:65 msgid "Disable notifications from the system tray icon" msgstr "Отключить уведомления от иконки в трее" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:67 msgid "Default action to perform when send to device button is clicked" msgstr "Действие по умолчанию по нажатию кнопки \"отправить в устройство\"" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:89 msgid "Maximum number of waiting worker processes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:91 msgid "Download social metadata (tags/rating/etc.)" msgstr "Скачать социальные метаданные (тэги/рейтинги/и т.д.)" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:93 +msgid "Overwrite author and title with new metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:95 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "" "Ограничить максимальное количество одновременных задач количеством " "процессоров CPU" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:439 msgid "Copied" msgstr "Скопирована" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:167 msgid "Copy" msgstr "Копировать" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:167 msgid "Copy to Clipboard" msgstr "Копирования в буфер обмена" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:395 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:398 msgid "Choose Files" msgstr "Выберите файлы" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:56 msgid "Searching in" msgstr "Поиск" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:167 msgid "Adding..." msgstr "Добавление..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:180 msgid "Searching in all sub-directories..." msgstr "Ищем во всех под-каталогах ..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:193 msgid "Path error" msgstr "Ошибка пути" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:194 msgid "The specified directory could not be processed." msgstr "Специальных каталог не может быть обработан." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:198 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:495 msgid "No books" msgstr "Нет книг" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:199 msgid "No books found" msgstr "Книги не найдены" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:265 msgid "Added" msgstr "Добавлена" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:278 msgid "Adding failed" msgstr "Ошибка при добавлении" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:279 msgid "" "The add books process seems to have hung. Try restarting calibre and adding " "the books in smaller increments, until you find the problem book." @@ -2705,26 +2707,26 @@ msgstr "" "Добавление книг видимо зависло. Попробуйте перезапустить calibre и добавить " "книги меньшими порциями до тех пор пока не найдете проблемную книгу." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:287 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:291 msgid "Duplicates found!" msgstr "Есть повторения!" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:292 msgid "" "Books with the same title as the following already exist in the database. " "Add them anyway?" msgstr "" "Книги со следующими названиями уже имеются в базе. Все равно добавить их?" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:295 msgid "Adding duplicates..." msgstr "Добавляем дубликаты ..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:356 msgid "Saving..." msgstr "Сохранение..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:409 msgid "Saved" msgstr "Сохранено" @@ -2764,7 +2766,7 @@ msgid "output" msgstr "вывод" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:36 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:27 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:49 @@ -2804,28 +2806,45 @@ msgid "E-book options" msgstr "Параметры книг" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:256 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:271 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1416 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1430 msgid "Catalog" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:52 -msgid "Tags to exclude as genres (regex):" -msgstr "Тэги для исключения жанров (регулярное выражение):" - -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:68 msgid "'Don't include this book' tag:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:69 msgid "'Mark this book as read' tag:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:70 msgid "Additional note tag prefix:" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:71 +msgid "Sort numbers as text" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:72 +msgid "Regex pattern describing tags to exclude as genres:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:73 +msgid "Special marker tags for catalog generation" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:74 +msgid "" +"Regex tips:\n" +"- The default regex of '\\[[\\w]*\\]' ignores tags of the form '[tag]', " +"e.g., '[Amazon Freebie]'\n" +"- A regex of '.' ignores all tags, generating no genre categories in the " +"catalog" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:28 msgid "Tab template for catalog.ui" msgstr "" @@ -2961,12 +2980,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:570 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:574 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:357 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376 @@ -3301,7 +3320,7 @@ msgid "Change the title of this book" msgstr "Изменить заголовок книги" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:173 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:140 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:358 msgid "&Author(s): " msgstr "&Автор(ы) " @@ -3318,7 +3337,7 @@ msgstr "" "Измените Автора(ов) книги. Несколько авторов должны быть разделены запятой." #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:149 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367 msgid "&Publisher: " msgstr "&Издательство: " @@ -3329,7 +3348,7 @@ msgid "Ta&gs: " msgstr "Пометки: " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:178 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:151 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:369 msgid "" "Tags categorize the book. This is particularly useful while searching. " @@ -3339,15 +3358,15 @@ msgstr "" "

Вы можете разделить слова и фразы запятыми." #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:179 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:156 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:372 msgid "&Series:" msgstr "Серии:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:181 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:154 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:158 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:373 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374 msgid "List of known series. You can add new series." @@ -3469,7 +3488,7 @@ msgid "RB Output" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1637 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1639 msgid "Choose the format to view" msgstr "Выберете для просмотра формат" @@ -3762,7 +3781,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:38 -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:132 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:135 msgid "No details available." msgstr "" @@ -4012,7 +4031,7 @@ msgid "My Books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:67 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:264 msgid "Generate catalog" msgstr "" @@ -4140,128 +4159,128 @@ msgstr "" msgid "new email address" msgstr "новый email адрес" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:477 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:821 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:478 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:823 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1248 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 msgid "Error" msgstr "Ошибка" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:478 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:479 msgid "Failed to install command line tools." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:481 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:482 msgid "Command line tools installed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:482 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:483 msgid "Command line tools installed in" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:483 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:484 msgid "" "If you move calibre.app, you have to re-install the command line tools." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:534 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:535 msgid "No valid plugin path" msgstr "Неверный путь к плагинам" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:536 msgid "%s is not a valid plugin path" msgstr "%s - неверный путь к плагинам" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:539 msgid "Choose plugin" msgstr "Использовать плагин" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551 msgid "Plugin cannot be disabled" msgstr "Плагин не может быть выключен" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:552 msgid "The plugin: %s cannot be disabled" msgstr "Плагин %s не может быть выключен" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:561 msgid "Plugin not customizable" msgstr "Плагин не настраиваемый" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:561 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:562 msgid "Plugin: %s does not need customization" msgstr "Плагин: %s не требует настройки" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:569 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:570 msgid "Customize" msgstr "Настроить" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:608 msgid "Cannot remove builtin plugin" msgstr "Не могу удалить встроеный плагин" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:609 msgid " cannot be removed. It is a builtin plugin. Try disabling it instead." msgstr "" " не может быть удален. Это встроенный плагин. Попробуйте отключить его." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:641 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:642 msgid "Error log:" msgstr "Лог ошибок:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:648 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:649 msgid "Access log:" msgstr "Лог доступа:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:676 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:677 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:659 msgid "Failed to start content server" msgstr "Сбой запуска контент-сервера" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:701 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:550 msgid "Select location for books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:708 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:709 msgid "Invalid size" msgstr "Неверный размер" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:709 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:710 msgid "The size %s is invalid. must be of the form widthxheight" msgstr "Размер %s указан неверно. Должен быть задан в виде [ширина]x[высота]" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:762 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:767 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:764 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:769 msgid "Invalid database location" msgstr "Неправильное расположение базы данных" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:763 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:765 msgid "Invalid database location " msgstr "Неправильное расположение базы данных " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:764 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:766 msgid "
Must be a directory." msgstr "
Должна быть дирректория." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:768 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:770 msgid "Invalid database location.
Cannot write to " msgstr "Неправильное расположение базы данных.
Немогу записать " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:802 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:804 msgid "Checking database integrity" msgstr "Проверка целостности базы данных" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:822 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:824 msgid "Failed to check database integrity" msgstr "Не удалось проверить целостность базы данных" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:827 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:829 msgid "Some inconsistencies found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:828 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:830 msgid "" "The following books had formats listed in the database that are not actually " "available. The entries for the formats have been removed. You should check " @@ -4355,35 +4374,39 @@ msgstr "" msgid "Sending to &device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504 #: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:366 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 msgid "Preferences" msgstr "Настройки" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 msgid "" "&Location of ebooks (The ebooks are stored in folders sorted by author and " "metadata is stored in the file metadata.db)" msgstr "&Расположение книг" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:503 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 msgid "Browse for the new database location" msgstr "Просмотреть расположение новой базы данных" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 msgid "Show notification when &new version is available" msgstr "Сообщить о выходе &новой версии." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 msgid "Download &social metadata (tags/ratings/etc.) by default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 +msgid "Overwrite & author/title by default when fetching metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 msgid "Default network &timeout:" msgstr "&Задержка сети по умолчанию:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 msgid "" "Set the default timeout for network fetches (i.e. anytime we go out to the " "internet to get information)" @@ -4391,149 +4414,149 @@ msgstr "" "Установить задержку по умолчанию для сетевых вызовов (т.е. в любое время вы " "выходите в интернет для получения информации)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 msgid " seconds" msgstr " секунд" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 msgid "Choose &language (requires restart):" msgstr "Выбрать &язык (необходим рестарт):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 msgid "Normal" msgstr "Обычный" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 msgid "High" msgstr "Высокий" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 msgid "Low" msgstr "Низкий" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 msgid "Job &priority:" msgstr "&Приоритет задачи" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 msgid "Preferred &output format:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 msgid "Preferred &input format order:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 msgid "Use &Roman numerals for series number" msgstr "Использовать &Римские цифры для нумерации" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 msgid "Enable system &tray icon (needs restart)" msgstr "использовать иконку в трее (необходим перезапуск)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 msgid "Show ¬ifications in system tray" msgstr "Показывать уведомления в трее" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 msgid "Show cover &browser in a separate window (needs restart)" msgstr "Показывать обложку в отдельном окне (нужен перезапуск)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 msgid "Search as you type" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 msgid "Automatically send downloaded &news to ebook reader" msgstr "Отправлять автоматически закаченные новости в устройство для чтения" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 msgid "&Delete news from library when it is automatically sent to reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 msgid "&Number of covers to show in browse mode (needs restart):" msgstr "" "Количество обложек показываемых в режиме просмотра (нужна перезагрузка " "calibre)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 msgid "Toolbar" msgstr "Панель инструментов" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 msgid "Large" msgstr "Большой" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 msgid "Medium" msgstr "Средний" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 msgid "Small" msgstr "Маленький" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 msgid "&Button size in toolbar" msgstr "&Размер кнопок на панеле инструментов" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 msgid "Show &text in toolbar buttons" msgstr "Показать надписи на кнопках панели инструментов" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 msgid "Select visible &columns in library view" msgstr "Выбрать видимые &столбцы в просмотре библиотеки" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 msgid "Use internal &viewer for:" msgstr "Использовать внутренний вьювер для:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 msgid "Add an email address to which to send books" msgstr "Добавить email адрес получателя" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 msgid "&Add email" msgstr "Добавить email" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 msgid "Make &default" msgstr "По умолчанию" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 msgid "&Remove email" msgstr "Удалить email" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 msgid "calibre can send your books to you (or your reader) by email" msgstr "calibre может отправить Ваши книги Вам (или Вашим читателям) email" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 msgid "&Maximum number of waiting worker processes (needs restart):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 msgid "&Check database integrity" msgstr "Проверка целостности базы данных" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 msgid "&Install command line tools" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549 msgid "Open calibre &configuration directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 msgid "Limit the max. simultaneous jobs to the available CPU &cores" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 msgid "Debug &device detection" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 msgid "" "calibre contains a network server that allows you to access your book " "collection using a browser from anywhere in the world. Any changes to the " @@ -4543,25 +4566,25 @@ msgstr "" "коллекции ваших книг из любой точки мира с помощью браузера. Любые изменения " "в настройках вступят в силу после перезапуска сервера." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553 msgid "Server &port:" msgstr "&Порт сервера:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117 msgid "&Username:" msgstr "&Пользователь:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119 msgid "&Password:" msgstr "&Пароль:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 msgid "" "If you leave the password blank, anyone will be able to access your book " "collection using the web interface." @@ -4569,7 +4592,7 @@ msgstr "" "Если вы не установили свой пароль, то кто угодно сможет получить доступ к " "вашим книгам через веб-интерфейс." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " @@ -4577,41 +4600,41 @@ msgstr "" "Максимальный размер ([ширина]x[высота]) обложек при отображении. Более " "крупные обложки подгоняются по размеру. " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558 msgid "Max. &cover size:" msgstr "Макс. размер обложки:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212 msgid "&Show password" msgstr "&Показать пароль" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560 msgid "Max. &OPDS items per query:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561 msgid "&Start Server" msgstr "&Запустить сервер" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:562 msgid "St&op Server" msgstr "Ост&ановить сервер" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:563 msgid "&Test Server" msgstr "&Проверить сервер" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:564 msgid "Run server &automatically on startup" msgstr "Запустить сервер авт&оматически после загрузки" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:565 msgid "View &server logs" msgstr "Просмотреть логи &сервера" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:566 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46 msgid "" "

Remember to leave calibre running as the server only runs as long as " @@ -4622,34 +4645,34 @@ msgid "" "the IP address of the computer calibre is running on." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:564 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:568 msgid "" "Here you can customize the behavior of Calibre by controlling what plugins " "it uses." msgstr "" "Здесь можно настроить поведение Calibre, указав какие плагины он использует." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:565 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:569 msgid "Enable/&Disable plugin" msgstr "Включить/Выключить плагин" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:566 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:570 msgid "&Customize plugin" msgstr "Настроить плагин" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:567 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:571 msgid "&Remove plugin" msgstr "Удалить плагин" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:568 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:572 msgid "Add new plugin" msgstr "Добавить новый плагин" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:569 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:573 msgid "Plugin &file:" msgstr "Файл плагина:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:571 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:575 msgid "&Add" msgstr "Добавить" @@ -4714,41 +4737,41 @@ msgstr "Сортировка по Автору" msgid "ISBN" msgstr "ISBN" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:151 msgid "Finding metadata..." msgstr "Поиск матаданных" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:164 msgid "Could not find metadata" msgstr "Не могу найти матаданные" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:165 msgid "The metadata download seems to have stalled. Try again later." msgstr "Загрузка метаданных похоже остановилась. Попробуйте позже." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:174 msgid "Warning" msgstr "Предупреждение" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:175 msgid "Could not fetch metadata from:" msgstr "Не могу извлечь метаданные из:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:179 msgid "No metadata found" msgstr "Нет метаданных" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:180 msgid "" "No metadata found, try adjusting the title and author or the ISBN key." msgstr "" "Нет метаданных, попробуйте откорректировать заглавие и автора или ISBN ключ." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:84 msgid "Fetch metadata" msgstr "Получение метаданных" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85 msgid "" "

calibre can find metadata for your books from two locations: Google " "Books and isbndb.com.

To use isbndb.com you must sign up for a " @@ -4760,27 +4783,31 @@ msgstr "" "href=\"http://www.isbndb.com\">бесплатный эккаунт и прописать полученный " "ключ ниже." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:86 msgid "&Access Key:" msgstr "Пароль доступа:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87 msgid "Fetch" msgstr "Получить" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:88 msgid "Matches" msgstr "Совпадения" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:89 msgid "" "Select the book that most closely matches your copy from the list below" msgstr "Из списка выберете книгу, которая более соответствует вашей." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:90 msgid "Download &social metadata (tags/rating/etc.) for the selected book" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:91 +msgid "Overwrite &author/title with author/title of selected book" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/job_view_ui.py:37 msgid "Details of job" msgstr "Рабочее уточнение" @@ -4801,24 +4828,24 @@ msgstr "" msgid "Stop &all jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:138 msgid "Edit Meta information" msgstr "Редактировать мета информацию" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:353 msgid "Meta information" msgstr "Мета информация" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:141 msgid "A&utomatically set author sort" msgstr "Автоматически выставить сортировку по автору" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:142 msgid "Author s&ort: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:143 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360 msgid "" "Specify how the author(s) of this book should be sorted. For example Charles " @@ -4827,47 +4854,51 @@ msgstr "" "Выставить, как автор(ы) этой книги будут отсортированы. Для примера Чарльз " "Дикенс будет сортироваться, как Дикенс, Чарлз." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:144 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:363 msgid "&Rating:" msgstr "Оценка:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:143 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:364 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:365 msgid "Rating of this book. 0-5 stars" msgstr "Оценка этой книги. 0-5 звезды" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:147 +msgid "No change" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:366 msgid " stars" msgstr " звезды" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:150 msgid "Add ta&gs: " msgstr "Добавить теги: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:149 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:370 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371 msgid "Open Tag Editor" msgstr "Открыть редактор описания" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:154 msgid "&Remove tags:" msgstr "Удалить тэги:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:155 msgid "Comma separated list of tags to remove from the books. " msgstr "Запятая разделяет список описаний удаляемых из книги. " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:159 msgid "Remove &format:" msgstr "Удалить формат:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:160 msgid "&Swap title and author" msgstr "" @@ -4970,19 +5001,19 @@ msgstr "Произошли ошибки" msgid "There were errors downloading social metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:598 msgid "Cannot fetch metadata" msgstr "Не могу доставить метаданные" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:598 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:599 msgid "You must specify at least one of ISBN, Title, Authors or Publisher" msgstr "Нужно указаить ISBN, название, автора или издателя" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:660 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:664 msgid "Permission denied" msgstr "Доступ запрещён" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:661 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:665 msgid "Could not open %s. Is it being used by another program?" msgstr "" @@ -5802,52 +5833,52 @@ msgstr "Открыть книгу" msgid "Configure" msgstr "Настроить" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:24 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:25 msgid "Use the library located at the specified path." msgstr "Использовать библиотеку по указанному пути." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:27 msgid "Start minimized to system tray." msgstr "Старт минимизированным в трей" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:29 msgid "Log debugging information to console" msgstr "Выводить отладочную информацию на консоль" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:30 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:31 msgid "Do not check for updates" msgstr "Не проверять наличие обновлений" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:83 msgid "If you are sure it is not running" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:85 msgid "Cannot Start " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:86 msgid "%s is already running." msgstr "%s уже запущен." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:89 msgid "may be running in the system tray, in the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:91 msgid "upper right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:93 msgid "lower right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:96 msgid "try rebooting your computer." msgstr "попробуйте перезагрузить ваш компьютер" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:95 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:110 msgid "try deleting the file" msgstr "попробуйте удалить файл" @@ -6006,11 +6037,11 @@ msgstr "&Выход" msgid "ERROR: Unhandled exception" msgstr "ОШИБКА: Необработанное исключение" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:89 msgid "Book has neither title nor ISBN" msgstr "У книги нет ни названия, ни ISBN" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:115 msgid "No matches found for this book" msgstr "Нет совпадений в этой книге" @@ -6143,11 +6174,11 @@ msgstr "" msgid "Fetch news from " msgstr "Выбрать новости из " -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:276 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:277 msgid "" "The following books have already been converted to %s format. Do you wish to " "reconvert them?" @@ -6239,7 +6270,7 @@ msgid "Save to disk in a single directory" msgstr "Сохранить на диск в одну директорию" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1745 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1747 msgid "Save only %s format to disk" msgstr "Сохранять на диск только формат %s" @@ -6294,7 +6325,7 @@ msgid "Calibre Library" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:485 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1901 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1903 msgid "Choose a location for your ebook library." msgstr "Выбрите расположение Вашей библиотеки электронных книг." @@ -6405,33 +6436,33 @@ msgstr "Архивы" msgid "Supported books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1052 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1054 msgid "Failed to read metadata" msgstr "Сбой чтения метаданных" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1053 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1055 msgid "Failed to read metadata from the following" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1072 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1074 msgid "Cannot delete" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1075 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1631 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1650 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1077 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1633 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1652 msgid "No book selected" msgstr "Нет выбранных книг" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1085 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1087 msgid "Choose formats to be deleted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1103 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1105 msgid "Choose formats not to be deleted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1141 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1143 msgid "" "The selected books will be permanently deleted and the files removed " "from your computer. Are you sure?" @@ -6439,131 +6470,131 @@ msgstr "" "Выбранные книги будут навсегда удалены вместе с файлами с Вашего " "компьютера. Вы уверены?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1168 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1170 msgid "Deleting books from device." msgstr "Удаляются книги из устройства." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1199 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1201 msgid "Cannot download metadata" msgstr "Не удалось загрузить метаданные" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1200 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1257 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1290 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1315 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1374 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1487 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1202 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1259 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1292 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1317 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1376 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1489 msgid "No books selected" msgstr "Нет Выбранных книг" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1215 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217 msgid "social metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 msgid "covers" msgstr "обложек" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 msgid "metadata" msgstr "метаданных" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1221 msgid "Downloading %s for %d book(s)" msgstr "Загрузка %s для %d книг(и)" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1241 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1243 msgid "Failed to download some metadata" msgstr "Не удалось загрузить некоторые метаданные" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1242 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1244 msgid "Failed to download metadata for the following:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1245 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1247 msgid "Failed to download metadata:" msgstr "Не удалось загрузить метаданные:" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1256 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1289 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1258 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1291 msgid "Cannot edit metadata" msgstr "Невозможно редактировать метаданные" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1314 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1316 msgid "Cannot save to disk" msgstr "Невозможно сохранить на диск" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1317 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1319 msgid "Choose destination directory" msgstr "Выберете директорию получателя" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1344 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1346 msgid "Error while saving" msgstr "Ошибка при сохранении" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1345 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1347 msgid "There was an error while saving." msgstr "Произошла ошибка при сохранении." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1352 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1353 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1354 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1355 msgid "Could not save some books" msgstr "Не удалось сохранить некоторые книги" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1354 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1356 msgid "Click the show details button to see which ones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1375 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1377 msgid "No books selected to generate catalog for" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1392 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1394 msgid "Generating %s catalog..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1403 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1405 msgid "Catalog generated." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1406 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1408 msgid "Export Catalog Directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1407 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1409 msgid "Select destination for %s.%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1421 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1423 msgid "Fetching news from " msgstr "Вызвать новость из " -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1435 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1437 msgid " fetched." msgstr " загружено." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1486 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1488 msgid "Cannot convert" msgstr "Не преобразуется" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1515 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1517 msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1631 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1687 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1633 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1689 msgid "Cannot view" msgstr "Невозможно просмотреть" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1649 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1651 msgid "Cannot open folder" msgstr "Не могу открыть папку" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1671 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1673 msgid "Multiple Books Selected" msgstr "Выбраны несколько книг" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1672 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1674 msgid "" "You are attempting to open %d books. Opening too many books at once can be " "slow and have a negative effect on the responsiveness of your computer. Once " @@ -6571,31 +6602,31 @@ msgid "" "continue?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1688 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1690 msgid "%s has no available formats." msgstr "%s неизвестный формат." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1729 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1731 msgid "Cannot configure" msgstr "Невозможно настроить" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1730 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1732 msgid "Cannot configure while there are running jobs." msgstr "Пока запущено задание, не могу настроить" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1773 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1775 msgid "No detailed info available" msgstr "Нет доступной подробной информации" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1774 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1776 msgid "No detailed information is available for books on the device." msgstr "Не доступна подробная информация книг на устройстве" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1829 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1831 msgid "Error talking to device" msgstr "Ошибка согласования устройства" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1830 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1832 msgid "" "There was a temporary error talking to the device. Please unplug and " "reconnect the device and or reboot." @@ -6603,34 +6634,34 @@ msgstr "" "Была временная ошибка общения с устройством. Пожалуста, переподключите " "устройство или перегрузите его." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1853 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1881 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1855 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1883 msgid "Conversion Error" msgstr "Ошибка преобразования" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1854 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1856 msgid "" "

Could not convert: %s

It is a DRMed book. You must " "first remove the DRM using third party tools." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1867 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1869 msgid "Recipe Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1882 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1884 msgid "Failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1910 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1912 msgid "Invalid library location" msgstr "Неверное расположение библиотеки" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1911 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1913 msgid "Could not access %s. Using %s as the library." msgstr "Нет доступа к %s. Использование %s в качестве библиотеки." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1961 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1963 msgid "" "is the result of the efforts of many volunteers from all over the world. If " "you find it useful, please consider donating to support its development." @@ -6638,22 +6669,22 @@ msgstr "" "является результато труда многих добровольцев по всему миру. Если Вы сочли " "его полезным, будьте добры пожертвовать на его развитие." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1986 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1988 msgid "There are active jobs. Are you sure you want to quit?" msgstr "Имеется активное задание. Вы все равно хотите выйти?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1989 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1991 msgid "" " is communicating with the device!
\n" " Quitting may cause corruption on the device.
\n" " Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1993 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1995 msgid "WARNING: Active jobs" msgstr "ПРЕДУПРЕЖДЕНИЕ: Активные задания" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2045 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2047 msgid "" "will keep running in the system tray. To close it, choose Quit in the " "context menu of the system tray." @@ -6661,7 +6692,7 @@ msgstr "" "продолжит работать в трее. Для завершения работы выберитеQuit в " "контекстном меню трея." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2064 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2066 msgid "" "Latest version: %s" @@ -6669,11 +6700,11 @@ msgstr "" "Последняя версия: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2072 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2074 msgid "Update available" msgstr "Доступно обновление" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2073 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2075 msgid "" "%s has been updated to version %s. See the new features. Visit the download page?" @@ -7490,7 +7521,7 @@ msgid "" "WordPlayer, etc. integration." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:34 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:35 msgid "" "The fields to output when cataloging books in the database. Should be a " "comma-separated list of fields.\n" @@ -7499,7 +7530,7 @@ msgid "" "Applies to: CSV, XML output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:43 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:44 msgid "" "Output field to sort on.\n" "Available fields: author_sort, id, rating, size, timestamp, title.\n" @@ -7507,14 +7538,14 @@ msgid "" "Applies to: CSV, XML output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:238 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:253 msgid "" "Title of generated catalog used as title in metadata.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:244 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:259 msgid "" "Save the output from different stages of the conversion pipeline to the " "specified directory. Useful if you are unsure at which stage of the " @@ -7523,14 +7554,14 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:253 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:268 msgid "" "Regex describing tags to exclude as genres.\n" "Default: '%default' excludes bracketed tags, e.g. '[]'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:258 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:273 msgid "" "Comma-separated list of tag words indicating book should be excluded from " "output. Case-insensitive.\n" @@ -7539,21 +7570,23 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:265 -msgid "" -"Tag indicating book has been read.\n" -"Default: '%default'\n" -"Applies to: ePub, MOBI output formats" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:270 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:280 msgid "" "Tag prefix for user notes, e.g. '*Jeff might enjoy reading this'.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:276 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:286 +msgid "" +"Sort titles with leading numbers as text, e.g.,\n" +"'2001: A Space Odyssey' sorts as \n" +"'Two Thousand One: A Space Odyssey'.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:292 msgid "" "Specifies the output profile. In some cases, an output profile is required " "to optimize the catalog for the device. For example, 'kindle' or " @@ -7563,6 +7596,13 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:298 +msgid "" +"Tag indicating book has been read.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/library/cli.py:121 msgid "" "Path to the calibre library. Default is to use the path stored in the " @@ -7874,7 +7914,7 @@ msgstr "Показать детальную информацию. Использ msgid "Error: You must specify a catalog output file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:689 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:687 msgid "" "%%prog command [options] [arguments]\n" "\n" @@ -8126,7 +8166,7 @@ msgstr "" msgid "Finished" msgstr "Закончил" -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:72 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:75 msgid "Working..." msgstr "" @@ -8261,75 +8301,83 @@ msgstr "" msgid "Unknown News Source" msgstr "Неизвестный новостной ресурс" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:533 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:550 msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:619 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:635 msgid "Download finished" msgstr "Закачка завершена" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:621 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:637 msgid "Failed to download the following articles:" msgstr "Неудачная загрузка следующих статей:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:627 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:643 msgid "Failed to download parts of the following articles:" msgstr "Неудачная загрузка частей следующих статей:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:629 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:645 msgid " from " msgstr " из " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:631 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:647 msgid "\tFailed links:" msgstr "\tБитые ссылки:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:712 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:728 msgid "Could not fetch article. Run with -vv to see the reason" msgstr "Не может быть вызвана статья. Запустите с -w чтобы увидеть причину." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:733 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:749 msgid "Fetching feeds..." msgstr "Вызываются заготовки..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:738 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:754 msgid "Got feeds from index page" msgstr "Получить заготовки для оглавления" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:744 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:760 msgid "Trying to download cover..." msgstr "Попытка скачать обложку..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:802 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:762 +msgid "Generating masthead..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:835 msgid "Starting download [%d thread(s)]..." msgstr "Начало загрузки [%d поток(и)]..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:818 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:851 msgid "Feeds downloaded to %s" msgstr "Заготовки закачиватся в %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:861 msgid "Could not download cover: %s" msgstr "Невозможно скачать обложку: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:840 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:873 msgid "Downloading cover from %s" msgstr "Скачивается обложка из %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:983 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:908 +msgid "Masthead image downloaded" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1124 msgid "Untitled Article" msgstr "Статья без названия" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1195 msgid "Article downloaded: %s" msgstr "Статья скачена: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1065 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1206 msgid "Article download failed: %s" msgstr "Ошибка загрузки статьи: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1082 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 msgid "Fetching feed" msgstr "Доставляется материал" From afe4270c5132776603b010975c2df29639d22549 Mon Sep 17 00:00:00 2001 From: Translators <> Date: Wed, 3 Feb 2010 04:46:00 +0000 Subject: [PATCH 004/164] Launchpad automatic translations update. --- src/calibre/translations/hu.po | 1793 +++++++++++++++++++------------- src/calibre/translations/ja.po | 1766 ++++++++++++++++++------------- 2 files changed, 2071 insertions(+), 1488 deletions(-) diff --git a/src/calibre/translations/hu.po b/src/calibre/translations/hu.po index eee4bfb75f..666db469ce 100644 --- a/src/calibre/translations/hu.po +++ b/src/calibre/translations/hu.po @@ -7,21 +7,21 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2010-01-11 00:36+0000\n" -"PO-Revision-Date: 2010-01-10 23:11+0000\n" -"Last-Translator: Muszela Balázs \n" +"POT-Creation-Date: 2010-02-01 07:47+0000\n" +"PO-Revision-Date: 2010-02-02 18:44+0000\n" +"Last-Translator: Devilinside \n" "Language-Team: Hungarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-01-12 04:45+0000\n" +"X-Launchpad-Export-Date: 2010-02-03 04:45+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:42 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 msgid "Does absolutely nothing" msgstr "Semmit nem csinál" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:45 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:46 #: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:72 #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:54 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:70 @@ -29,8 +29,8 @@ msgstr "Semmit nem csinál" #: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267 #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58 #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:203 -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:414 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:205 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:418 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:69 #: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:319 @@ -50,14 +50,13 @@ msgstr "Semmit nem csinál" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:104 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:106 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:171 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:329 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:444 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:894 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:39 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:28 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:22 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:48 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:49 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/topaz.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/txt.py:14 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:44 @@ -65,18 +64,18 @@ msgstr "Semmit nem csinál" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:79 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:121 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:155 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:597 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:787 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:609 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:799 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:51 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:896 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:901 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:961 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:898 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:903 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:969 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:137 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:139 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:105 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:171 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:172 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:173 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:174 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:39 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/palmdoc/writer.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ztxt/writer.py:27 @@ -97,29 +96,29 @@ msgstr "Semmit nem csinál" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:28 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:29 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:217 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:219 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:272 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:279 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:121 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:128 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:233 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:276 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:134 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:565 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:574 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:794 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:797 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:839 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:842 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:109 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:143 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:454 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:397 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:419 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:914 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1040 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:424 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:919 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1045 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:183 #: /home/kovid/work/calibre/src/calibre/library/cli.py:281 #: /home/kovid/work/calibre/src/calibre/library/database.py:913 @@ -127,13 +126,13 @@ msgstr "Semmit nem csinál" #: /home/kovid/work/calibre/src/calibre/library/database2.py:715 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1143 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1180 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1517 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1519 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1630 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1552 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1554 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1670 #: /home/kovid/work/calibre/src/calibre/library/server.py:645 -#: /home/kovid/work/calibre/src/calibre/library/server.py:717 -#: /home/kovid/work/calibre/src/calibre/library/server.py:764 -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:109 +#: /home/kovid/work/calibre/src/calibre/library/server.py:721 +#: /home/kovid/work/calibre/src/calibre/library/server.py:768 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:111 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:77 @@ -142,22 +141,26 @@ msgstr "Semmit nem csinál" msgid "Unknown" msgstr "Ismeretlen" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:63 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:64 msgid "Base" msgstr "Alap" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:149 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:150 msgid "File type" msgstr "Fájltípus" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:183 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:184 msgid "Metadata reader" msgstr "Metaadat olvasó" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:214 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:215 msgid "Metadata writer" msgstr "Metaadat író" +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:241 +msgid "Catalog generator" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:14 msgid "" "Follow all local links in an HTML file and create a ZIP file containing all " @@ -230,11 +233,11 @@ msgstr "Metaadatok beállítása a %s típusú fájlokban." msgid "Set metadata from %s files" msgstr "Metadatok beállítása a következő fájlokból: %s" -#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:99 +#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:102 msgid "Conversion Input" msgstr "Konverzió bemenet" -#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:122 +#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:125 msgid "" "Specify the character encoding of the input document. If set this option " "will override any encoding declared by the document itself. Particularly " @@ -245,11 +248,11 @@ msgstr "" "dokumentum eredetei beállításait. Különösen hasznos olyan dokumentumoknál, " "ahol nincs, vagy hibásan van beállítva a karakterkódolás." -#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:225 +#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:228 msgid "Conversion Output" msgstr "Konverzió kimenet" -#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:239 +#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:242 msgid "" "If specified, the output plugin will try to create output that is as human " "readable as possible. May not have any effect for some output plugins." @@ -274,6 +277,7 @@ msgstr "" msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "" +"Ez a SONY PRS sorozathoz készült profil, úgymint 500/505/600/700 stb." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:68 msgid "This profile is intended for the SONY PRS 300." @@ -392,7 +396,7 @@ msgstr "Nem találtam érvényes bővítményt itt: " msgid "Initialization of plugin %s failed with traceback:" msgstr "A %s bővítmény indítása a következő hibaüzenettel meghiusult:" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:397 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:418 msgid "" " %prog options\n" "\n" @@ -404,17 +408,17 @@ msgstr "" " Igazítsa Calibret saját igényeihez külső pluginok betöltésével.\n" " " -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:403 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:424 msgid "Add a plugin by specifying the path to the zip file containing it." msgstr "Bővítmény hozzáadása a ZIP fájl elérési útjának megadásával." -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:405 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:426 msgid "Remove a custom plugin by name. Has no effect on builtin plugins" msgstr "" "Egy telepített bővítmény eltávolítása név alapján. Nincs hatással a " "beépített bővítményekre." -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:407 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:428 msgid "" "Customize plugin. Specify name of plugin and customization string separated " "by a comma." @@ -422,15 +426,15 @@ msgstr "" "Bővítmény testreszabása. Adja meg a bővítmény nevét, és a kért beállítást, " "vesszővel elválasztva." -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:409 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:430 msgid "List all installed plugins" msgstr "A telepített bővítőmodulok listázása" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:411 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:432 msgid "Enable the named plugin" msgstr "A bővítmény engedélyezése" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:413 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:434 msgid "Disable the named plugin" msgstr "A bővítmény letiltása" @@ -438,7 +442,7 @@ msgstr "A bővítmény letiltása" msgid "Communicate with Android phones." msgstr "Kapcsolódás Android telefonhoz." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:25 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:26 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" @@ -448,11 +452,11 @@ msgstr "" msgid "Communicate with the Binatone Readme eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:12 +#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:13 msgid "Communicate with the Blackberry smart phone." msgstr "Kapcsolódás Blackberry telefonhoz." -#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:13 +#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:14 #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:18 #: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:90 msgid "Kovid Goyal" @@ -462,7 +466,7 @@ msgstr "Kovid Goyal" msgid "Communicate with the Cybook Gen 3 / Opus eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:23 +#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:24 msgid "Communicate with the EB600 eBook reader." msgstr "Kapcsolódás EB600 olvasóhoz." @@ -579,40 +583,40 @@ msgstr "" msgid "Transferring books to device..." msgstr "Könyvek küldése az eszközre..." -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:173 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:180 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:174 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:181 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:145 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:160 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:162 msgid "Removing books from device..." msgstr "Könyvek eltávolítása az eszközről" -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:208 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:175 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:209 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:177 msgid "Sending metadata to device..." msgstr "Metaadatok küldése az eszközre" -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:214 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:215 msgid "Communicate with the Sony PRS-600/700/900 eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:271 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:250 msgid "Unable to detect the %s disk drive. Try rebooting." msgstr "" "Nem tudtam érzékelni a %s lemezmeghajtót. Próbálkozzon újraindítással!" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:440 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:429 msgid "Unable to detect the %s mount point. Try rebooting." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:495 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:484 msgid "Unable to detect the %s disk drive." msgstr "A(z) %s meghajtó nem található" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:588 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:577 msgid "Could not find mount helper: %s." msgstr "Nem található felcsatlakozást segítő: %s" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:600 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:589 msgid "" "Unable to detect the %s disk drive. Your kernel is probably exporting a " "deprecated version of SYSFS." @@ -620,35 +624,35 @@ msgstr "" "Nem lehet felismerni a %s meghajtót. A kernel egy érvénytelen verziójú SYSFS-" "t támogat. http://calibre.kovidgoyal.net/user_manual/faq.html#id21" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:608 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:597 msgid "Unable to mount main memory (Error code: %d)" msgstr "A belső memória nem felismerhető. (Hiba kód: %d)" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:745 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:747 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:734 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:736 msgid "The reader has no storage card in this slot." msgstr "Ebben csatlakozóban nincs memóriakártya" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:749 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:738 msgid "Selected slot: %s is not supported." msgstr "A következő kártyahely nem támogatott: %s" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:782 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:771 msgid "There is insufficient free space in main memory" msgstr "Nincs elég hely a fő memóriában" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:784 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:786 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:773 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:775 msgid "There is insufficient free space on the storage card" msgstr "Nincs elég hely a memóriakártyán." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:803 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:826 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:799 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:824 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:232 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1068 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1072 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1417 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1452 msgid "News" msgstr "Hírek (RSS)" @@ -695,8 +699,8 @@ msgstr "Eszköz-információ lekérdezése" msgid "Adding books to device metadata listing..." msgstr "Könyvek hozzáadása az eszköz metaadat listához..." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:164 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:169 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:166 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:171 msgid "Removing books from device metadata listing..." msgstr "Könyvek eltávolítása az eszköz metaadat listáról..." @@ -799,8 +803,8 @@ msgstr "" msgid "Apply no processing to the image" msgstr "Képek változatlan megtartása módosítás nélkül." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:438 -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:449 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:442 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:453 msgid "Page" msgstr "Oldal" @@ -1365,9 +1369,9 @@ msgstr "" "egyet, akkor egy generált borító készül a könyvhöz a címmel, szerzővel stb. " "Ez az opció letiltja ezt az automatikusan generált borítót." -#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/fb2ml.py:143 -#: /home/kovid/work/calibre/src/calibre/ebooks/pml/pmlml.py:128 -#: /home/kovid/work/calibre/src/calibre/ebooks/rb/rbml.py:101 +#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/fb2ml.py:144 +#: /home/kovid/work/calibre/src/calibre/ebooks/pml/pmlml.py:129 +#: /home/kovid/work/calibre/src/calibre/ebooks/rb/rbml.py:102 #: /home/kovid/work/calibre/src/calibre/ebooks/txt/txtml.py:77 msgid "Table of Contents:" msgstr "Tartalomjegyzék:" @@ -1711,20 +1715,20 @@ msgstr "Képregény" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:358 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:45 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:69 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:56 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:163 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:394 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1106 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:399 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1111 msgid "Title" msgstr "Cím" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:164 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:399 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1107 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1112 msgid "Author(s)" msgstr "Szerző(k)" @@ -1741,18 +1745,18 @@ msgstr "Producer" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:362 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:71 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:64 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:360 #: /home/kovid/work/calibre/src/calibre/gui2/status.py:94 msgid "Comments" msgstr "Megjegyzés" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:370 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:170 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:344 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1050 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1110 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:349 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1055 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1115 #: /home/kovid/work/calibre/src/calibre/gui2/status.py:96 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 msgid "Tags" @@ -1760,7 +1764,7 @@ msgstr "Címkék" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:372 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:171 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:365 #: /home/kovid/work/calibre/src/calibre/gui2/status.py:95 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 msgid "Series" @@ -1771,7 +1775,7 @@ msgid "Language" msgstr "Nyelv" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:375 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1049 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1054 msgid "Timestamp" msgstr "Dátum" @@ -1785,7 +1789,7 @@ msgstr "Kiadás ideje" msgid "Rights" msgstr "Jogok" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/amazon.py:77 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/amazon.py:78 msgid "EDITORIAL REVIEW" msgstr "" @@ -1869,27 +1873,27 @@ msgstr "" msgid "Set the BookID in LRF files" msgstr "BookID(azonosító) beállítása LRF fájlokban" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:144 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:148 msgid "No file specified" msgstr "Nincs megadva fájl" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:159 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:163 msgid "Original metadata" msgstr "Eredeti metaadatok" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:176 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:180 msgid "Changed metadata" msgstr "Megváltozott metaadat" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:188 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:192 msgid "OPF created in" msgstr "OPF fájl létrehozva:" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:194 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:198 msgid "Cover saved to" msgstr "Borító elmentve" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:196 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:200 msgid "No cover found" msgstr "Borító nem található" @@ -1931,7 +1935,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:189 msgid "Downloads social metadata from amazon.com" -msgstr "" +msgstr "Közösségi metaadatok letöltése az amazon.com-ról" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:94 msgid "" @@ -2006,7 +2010,7 @@ msgstr "" "Töltse le a könyv ISBN által megadott borítóját a LibraryThing.com-ról\n" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1083 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1328 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1336 msgid "Cover" msgstr "Borító" @@ -2036,101 +2040,77 @@ msgstr "A generált Tartalomjegyzék címe." msgid "Disable compression of the file contents." msgstr "A fájltartalom tömörítésének tiltása." -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:102 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:105 msgid "All articles" msgstr "Minden cikk" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1329 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1337 msgid "Title Page" msgstr "Címlap" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1330 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1338 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:53 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:188 msgid "Table of Contents" msgstr "Tartalomjegyzék" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1331 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1339 msgid "Index" msgstr "Index" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1332 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1340 msgid "Glossary" msgstr "Szószedet" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1333 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1341 msgid "Acknowledgements" msgstr "Köszönetnyilvánítás" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1334 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1342 msgid "Bibliography" msgstr "Irodalomjegyzék" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1335 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1343 msgid "Colophon" msgstr "Záradék" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1336 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1344 msgid "Copyright" msgstr "Szerzői jog" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1337 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1345 msgid "Dedication" msgstr "Ajánlás" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1338 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1346 msgid "Epigraph" msgstr "Mottó" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1339 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1347 msgid "Foreword" msgstr "Előszó" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1340 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1348 msgid "List of Illustrations" msgstr "Illusztrációk listája" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1341 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1349 msgid "List of Tables" msgstr "Táblázatok listája" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1342 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1350 msgid "Notes" msgstr "Megjegyzések" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1343 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1351 msgid "Preface" msgstr "Előszó (szerk.)" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1344 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1352 msgid "Main Text" msgstr "Fő szöveg" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:53 -msgid "Options to control e-book conversion." -msgstr "Az ebook konvertálás beállításai" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:60 -msgid "Character encoding for input. Default is to auto detect." -msgstr "Bemeneti karakterkódolás. Alapértelmezett: automatikus felismerés." - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:62 -msgid "Output file. Default is derived from input filename." -msgstr "Célfájl. Alapértelmezés szerint a forrásfájl nevéből lesz generálva." - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:64 -msgid "Produce more human-readable XML output." -msgstr "Még olvashatóbb XML kimenet létrehozása." - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:66 -msgid "Useful for debugging." -msgstr "Hasznos hibakeresésnél." - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:71 -msgid "Usage: ebook-convert INFILE OUTFILE [OPTIONS..]" -msgstr "Használat: ebook-convert INFILE OUTFILE [OPTIONS..]" - #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:39 msgid "%s format books are not supported" msgstr "A %s formátumú könyvek sajnos nem támogatottak" @@ -2490,13 +2470,12 @@ msgid "" "Specify the character encoding of the output document. The default is cp1252." msgstr "A kimeneti karakterkódolás megadása. Az alapértelmezett: cp1252." -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:183 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:199 msgid "" "This RTF file has a feature calibre does not support. Convert it to HTML " -"first and then try it." +"first and then try it.\n" +"%s" msgstr "" -"Ez az RTF fájl olyan tulajdonságokat tartalmaz, melyeket a calibre nem " -"támogat. Konvertálja át először HTML-ba, majd próbálja újra." #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:23 msgid "" @@ -2560,162 +2539,166 @@ msgstr "" "Mindenképpen darabolja fel a sorokat a maximális sorhossz értéknél, akkor is " "ha nincs szóköz. A minimálisnál kisebb érték is megadható" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:29 msgid "Send file to storage card instead of main memory by default" msgstr "Alapbeállításként a memóriakártyára küldje a belső memória helyett" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:29 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:31 msgid "Confirm before deleting" msgstr "Megerősítés törlés előtt" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:31 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:33 msgid "Toolbar icon size" msgstr "Eszköztárikonok mérete" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:33 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:35 msgid "Show button labels in the toolbar" msgstr "Gombfeliratok mutatása az eszköztárban" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:37 msgid "Main window geometry" msgstr "A főablak méretei" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:37 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:39 msgid "Notify when a new version is available" msgstr "Figyelmeztetés új verzió esetén." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:41 msgid "Use Roman numerals for series number" msgstr "Római számok használata a könyvsorozatok számozásánál" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:41 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:43 msgid "Sort tags list by popularity" msgstr "Címkék rendezése darabszám szerint csökkenő sorrendben" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:45 msgid "Number of covers to show in the cover browsing mode" msgstr "A borító alapján történő böngészéskor a megjelenített borítók száma" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:47 msgid "Defaults for conversion to LRF" msgstr "Az LRF-be való konvertálás alapértelmezett értékei" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:49 msgid "Options for the LRF ebook viewer" msgstr "A beépített LRF olvasóprogram beállításai" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:52 msgid "Formats that are viewed using the internal viewer" msgstr "A beépített olvasóprogram által megjelenített formátumok" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 msgid "Columns to be displayed in the book list" msgstr "A könyvlistában megjelenítendő oszlopok" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 msgid "Automatically launch content server on application startup" msgstr "A tartalomkiszolgáló automatikus indítása az alkalmazás indulásakor." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 msgid "Oldest news kept in database" msgstr "A legrégebbi adatbázisban megtartandó hír" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:57 msgid "Show system tray icon" msgstr "Ikon megjelenítése a tálcán" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:59 msgid "Upload downloaded news to device" msgstr "Letöltött hírek küldése az eszközre" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:61 msgid "Delete books from library after uploading to device" msgstr "Könyvek törlése az adatbázisból az eszközre való feltöltés utén" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:63 msgid "" "Show the cover flow in a separate window instead of in the main calibre " "window" msgstr "A borítók megjelenítése külön ablakban a calibre főablaka helyett." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:65 msgid "Disable notifications from the system tray icon" msgstr "A tálcaikon ne mutassa a figyelmeztetéseket" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:67 msgid "Default action to perform when send to device button is clicked" msgstr "" "Az alapértelmezett művelet a 'Küldés eszközre' gombra való kattintáskor" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:89 msgid "Maximum number of waiting worker processes" msgstr "A sorban álló műveletek maximális száma" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:91 msgid "Download social metadata (tags/rating/etc.)" +msgstr "Közösségi metaadatok letöltése (címkék, értékelés stb.)" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:93 +msgid "Overwrite author and title with new metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:95 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "" "A maximális párhuzamosan végrehajtandó műveletek számának korlátozása a " "processzorok számára" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:439 msgid "Copied" msgstr "Másolva" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:167 msgid "Copy" msgstr "Másolás" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:167 msgid "Copy to Clipboard" msgstr "Másolás a vágólapra" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:394 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:398 msgid "Choose Files" msgstr "Válasszon a fájlok közül" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:56 msgid "Searching in" msgstr "Keresés a következőben:" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:167 msgid "Adding..." msgstr "Hozzáadás..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:180 msgid "Searching in all sub-directories..." msgstr "Keresés minden almappában..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:193 msgid "Path error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:194 msgid "The specified directory could not be processed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:197 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:495 msgid "No books" msgstr "Nincsenek könyvek" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:199 msgid "No books found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:265 msgid "Added" msgstr "Hozzáadva" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:277 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:278 msgid "Adding failed" msgstr "A hozzáadás nem sikerült" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:279 msgid "" "The add books process seems to have hung. Try restarting calibre and adding " "the books in smaller increments, until you find the problem book." @@ -2723,49 +2706,35 @@ msgstr "" "Probléma történt a könyvek hozzáadása közben. Indítsa újra a calibre-t és " "válasszon ki kevesebbet, amíg meg nem találja a problémát okozó könyvet." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:291 msgid "Duplicates found!" msgstr "Már létezik egy ilyen példány!" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:292 msgid "" "Books with the same title as the following already exist in the database. " "Add them anyway?" msgstr "" "Ugyanezzel a címmel már létezik egy könyv az adatbázisban. Mégis hozzáadja?" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:295 msgid "Adding duplicates..." msgstr "Duplikációk hozzáadása..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:356 msgid "Saving..." msgstr "Mentés..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:408 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:409 msgid "Saved" msgstr "Elmentve" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:36 -msgid "" -"For settings that cannot be specified in this dialog, use the values saved " -"in a previous conversion (if they exist) instead of using the defaults " -"specified in the Preferences" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:16 +msgid "CSV/XML Options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:67 -msgid "Bulk Convert" -msgstr "Csoportos konvertálás" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:80 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 -msgid "Options specific to the output format." -msgstr "Az adott kimeneti formátumnak megfelelő beállítások" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:15 -msgid "Comic Input" -msgstr "Képregény bemenet" - +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:13 @@ -2782,14 +2751,22 @@ msgstr "Képregény bemenet" msgid "Options specific to" msgstr "Beállítás:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:13 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input.py:13 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:13 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:13 -msgid "input" -msgstr "bemenet" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:18 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:20 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output.py:18 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:17 +msgid "output" +msgstr "kimenet" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:36 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:27 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:49 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:41 @@ -2819,6 +2796,86 @@ msgstr "bemenet" msgid "Form" msgstr "Űrlap" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:37 +msgid "Fields to include in output:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:17 +msgid "E-book options" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:271 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1416 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1430 +msgid "Catalog" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:68 +msgid "'Don't include this book' tag:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:69 +msgid "'Mark this book as read' tag:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:70 +msgid "Additional note tag prefix:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:71 +msgid "Sort numbers as text" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:72 +msgid "Regex pattern describing tags to exclude as genres:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:73 +msgid "Special marker tags for catalog generation" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:74 +msgid "" +"Regex tips:\n" +"- The default regex of '\\[[\\w]*\\]' ignores tags of the form '[tag]', " +"e.g., '[Amazon Freebie]'\n" +"- A regex of '.' ignores all tags, generating no genre categories in the " +"catalog" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:28 +msgid "Tab template for catalog.ui" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:36 +msgid "" +"For settings that cannot be specified in this dialog, use the values saved " +"in a previous conversion (if they exist) instead of using the defaults " +"specified in the Preferences" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:67 +msgid "Bulk Convert" +msgstr "Csoportos konvertálás" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 +msgid "Options specific to the output format." +msgstr "Az adott kimeneti formátumnak megfelelő beállítások" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:15 +msgid "Comic Input" +msgstr "Képregény bemenet" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:13 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input.py:13 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:13 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:13 +msgid "input" +msgstr "bemenet" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:94 msgid "&Number of Colors:" @@ -2918,12 +2975,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:570 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:574 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:357 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376 @@ -2961,17 +3018,6 @@ msgstr "" msgid "EPUB Output" msgstr "EPUB kimenet" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:20 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:16 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output.py:18 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:17 -msgid "output" -msgstr "kimenet" - #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:42 msgid "Do not &split on page breaks" msgstr "Oldaltörésnél ne legyen darabolás" @@ -3270,7 +3316,7 @@ msgid "Change the title of this book" msgstr "Könyv címének megadása" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:173 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:140 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:358 msgid "&Author(s): " msgstr "Szerző(k) " @@ -3288,7 +3334,7 @@ msgstr "" "azokat elválasztani" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:149 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367 msgid "&Publisher: " msgstr "&Kiadó: " @@ -3299,7 +3345,7 @@ msgid "Ta&gs: " msgstr "Címkék: " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:178 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:151 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:369 msgid "" "Tags categorize the book. This is particularly useful while searching. " @@ -3309,15 +3355,15 @@ msgstr "" "vesszővel elválasztva." #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:179 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:156 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:372 msgid "&Series:" msgstr "&Sorozat:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:181 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:154 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:158 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:373 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374 msgid "List of known series. You can add new series." @@ -3439,7 +3485,7 @@ msgid "RB Output" msgstr "RB kimenet" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1551 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1639 msgid "Choose the format to view" msgstr "Válassza ki a kívánt formátumot olvasásra" @@ -3480,7 +3526,7 @@ msgid "Options specific to the input format." msgstr "A bemeneti formátumnak megfelelő beállítások" #: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:64 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:48 msgid "Dialog" @@ -3649,8 +3695,8 @@ msgid "Force maximum line lenght" msgstr "Mindenképpen a maximális sorhossz hazsnálata" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:50 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:66 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:41 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:49 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:57 @@ -3737,193 +3783,199 @@ msgid "" "href=\"http://calibre-ebook.com/user_manual/xpath.html\">XPath Tutorial." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:39 -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:38 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:135 msgid "No details available." msgstr "Részletek nem elérhetőek." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:120 msgid "Device no longer connected." msgstr "Az eszköz már nem csatlakozik." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:208 msgid "Get device information" msgstr "Eszköz-információk lekérdezése" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:219 msgid "Get list of books on device" msgstr "Az eszközön lévő könyvek listájának letöltése" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:228 msgid "Send metadata to device" msgstr "Metaadatok küldése az eszközre" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:237 msgid "Upload %d books to device" msgstr "%d könyv feltöltése az eszközre" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:266 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:252 msgid "Delete books from device" msgstr "Könyvek törlése az eszközről" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:269 msgid "Download books from device" msgstr "Könyvek letöltése az eszközről" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:279 msgid "View book on device" msgstr "Könyv megnyitása ez eszközön" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:286 msgid "and delete from library" msgstr "és törlés az adatbázisból" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:307 msgid "Set default send to device action" msgstr "Alapértelmezett eszközre küldési művelet beállítása" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:326 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:333 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:335 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:337 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:323 msgid "Email to" msgstr "Email küldése" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:348 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:341 msgid "Send to main memory" msgstr "Küldés a belső memóriába" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:350 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:336 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:343 msgid "Send to storage card A" msgstr "Küldés az 'A' memóriakártyára" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:352 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:338 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:345 msgid "Send to storage card B" msgstr "Küldés a 'B' memóriakártyára" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:348 msgid "Send specific format to main memory" msgstr "A meghatározott formátumú változat küldése a belső memóriába" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:350 msgid "Send specific format to storage card A" msgstr "A meghatározott formátum küldése az 'A' memóriakártyára" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:366 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:352 msgid "Send specific format to storage card B" msgstr "A meghatározott formátum küldése a 'B' memóriakártyára" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:496 msgid "selected to send" msgstr "kiválasztva küldéshez" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:501 msgid "Choose format to send to device" msgstr "Az eszközre küldendő formátum kiválasztása" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:508 msgid "No device" msgstr "Nincs eszköz" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:523 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:509 msgid "Cannot send: No device is connected" msgstr "Nem tudom küldeni: nincs csatlakoztatott eszköz" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:526 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:512 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:516 msgid "No card" msgstr "Nincs memóriakártya" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:527 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:513 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:517 msgid "Cannot send: Device has no storage card" msgstr "Nem tudom küldeni: az eszközben nincs memóriakártya" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:572 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:558 msgid "E-book:" msgstr "E-book:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:575 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:561 msgid "Attached, you will find the e-book" msgstr "Az ebook csatolva" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:576 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:562 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:177 msgid "by" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:577 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:563 msgid "in the %s format." msgstr "%s formátumban." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:590 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:576 msgid "Sending email to" msgstr "Email küldése:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:620 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:627 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:720 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:836 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:843 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:606 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:613 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:705 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:765 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:888 msgid "No suitable formats" msgstr "Nincs megfelelő formátum" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:621 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:607 msgid "Auto convert the following books before sending via email?" msgstr "" "Az email-ben való elküldés előtt automatikusan konvertáljam a kijelölt " "könyveket?" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:628 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:614 msgid "" "Could not email the following books as no suitable formats were found:" msgstr "" "Nem lehet elküldeni a következő könyveket, mert nem léteznek a megadott " "formátumokban:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:646 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:632 msgid "Failed to email books" msgstr "A könyvek elküdése nem sikerült" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:647 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:633 msgid "Failed to email the following books:" msgstr "Hiba a következő könyvek email-ben való elküldése közben:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:651 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:637 msgid "Sent by email:" msgstr "Emailbe elküldve:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:678 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:664 msgid "News:" msgstr "Hírek:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:679 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:665 msgid "Attached is the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:690 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:676 msgid "Sent news to" msgstr "Hírek elküldve:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:721 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:837 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:766 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:882 msgid "Auto convert the following books before uploading to the device?" msgstr "" "Az eszközre való feltöltés előtt automatikusan konvertáljam a kijelölt " "könyveket?" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:751 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:735 +msgid "Sending catalogs to device." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:796 msgid "Sending news to device." msgstr "Hírek küldése az eszközre" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:805 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:850 msgid "Sending books to device." msgstr "Könyvek küldése az eszközre." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:844 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:889 msgid "" "Could not upload the following books to the device, as no suitable formats " "were found. Convert the book(s) to a format supported by your device first." @@ -3932,11 +3984,11 @@ msgstr "" "formátumú változatuk. Konvertálja át a nem megfelelőeket valamelyik, az " "eszközöd által támogatott formátumra." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:892 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:937 msgid "No space on device" msgstr "Nincs elég hely az eszközön" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:893 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:938 msgid "" "

Cannot upload books to device there is no more free space available " msgstr "" @@ -3955,34 +4007,68 @@ msgstr "Almappák használata" msgid "Save &template:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:85 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:351 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1045 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1050 #: /home/kovid/work/calibre/src/calibre/gui2/status.py:92 msgid "Path" msgstr "Elérési út" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:87 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:89 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:216 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:355 #: /home/kovid/work/calibre/src/calibre/gui2/status.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 msgid "Formats" msgstr "Formátumok" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:68 +msgid "Fit &cover to view" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:69 msgid "&Previous" msgstr "&Előző" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:70 msgid "&Next" msgstr "&Következő" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:37 +msgid "My Books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:264 +msgid "Generate catalog" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:68 +msgid "Catalog &format:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:69 +msgid "" +"Catalog &title (existing catalog with the same title will be replaced):" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:70 +msgid "&Send catalog to device automatically" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:71 +msgid "Catalog options" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:72 +msgid "Generate catalog for {0} books" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:40 msgid "Choose Format" msgstr "Formátum kiválasztása" @@ -4087,133 +4173,133 @@ msgstr "" msgid "new email address" msgstr "új email cím" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:477 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:821 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:478 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:823 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1224 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1248 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 msgid "Error" msgstr "Hiba" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:478 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:479 msgid "Failed to install command line tools." msgstr "A parancssori eszközök telepítése nem sikerült." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:481 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:482 msgid "Command line tools installed" msgstr "Parancssori eszközök installálva" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:482 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:483 msgid "Command line tools installed in" msgstr "Parancssori eszközök installálva:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:483 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:484 msgid "" "If you move calibre.app, you have to re-install the command line tools." msgstr "" "Ha áthelyezi a calibre.app-ot, akkor a parancssori eszközöket újra kell " "installálnia." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:534 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:535 msgid "No valid plugin path" msgstr "Nincs érvényes plugin elérési útvonal" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:536 msgid "%s is not a valid plugin path" msgstr "Nem érvényes plugin elérési út: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:539 msgid "Choose plugin" msgstr "Plugin kiválasztása" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551 msgid "Plugin cannot be disabled" msgstr "Ezt a plugint nem lehet letiltani" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:552 msgid "The plugin: %s cannot be disabled" msgstr "A következő plugint nem lehet letiltani: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:561 msgid "Plugin not customizable" msgstr "A pluginnak nincsenek beállításai" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:561 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:562 msgid "Plugin: %s does not need customization" msgstr "A %s pluginnak nincsenek beállításai" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:569 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:570 msgid "Customize" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:608 msgid "Cannot remove builtin plugin" msgstr "A beépített pluginok nem távolíthatóak el" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:609 msgid " cannot be removed. It is a builtin plugin. Try disabling it instead." msgstr " nem törölhető. Ez egy beépített plugin. Tiltsd le inkább." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:641 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:642 msgid "Error log:" msgstr "Hibanapló:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:648 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:649 msgid "Access log:" msgstr "Hozzáférési naplófájl:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:676 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:641 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:677 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:659 msgid "Failed to start content server" msgstr "A tartalomkiszolgáló indítása nem sikerült" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:700 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:701 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:550 msgid "Select location for books" msgstr "Könyvek helyének kiválasztása" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:708 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:709 msgid "Invalid size" msgstr "Érvénytelen méret" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:709 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:710 msgid "The size %s is invalid. must be of the form widthxheight" msgstr "" "A következő méret érvénytelen: %s. A méretnek szélességxmagasság formátumban " "kell lennie." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:762 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:767 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:764 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:769 msgid "Invalid database location" msgstr "Érvénytelen adatbázis elérési útvonal" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:763 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:765 msgid "Invalid database location " msgstr "Érvénytelen adatbázis elérési útvonal " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:764 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:766 msgid "
Must be a directory." msgstr "
Mappának kell lennie." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:768 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:770 msgid "Invalid database location.
Cannot write to " msgstr "" "Érvénytelen adatbázis elérési útvonal.
A következő helyre nem lehet " "írni: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:802 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:804 msgid "Checking database integrity" msgstr "Adatbázis ellenőrzése" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:822 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:824 msgid "Failed to check database integrity" msgstr "Az adatbázis ellenőrzése nem sikerült" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:827 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:829 msgid "Some inconsistencies found" msgstr "Néhány hibát találtam" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:828 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:830 msgid "" "The following books had formats listed in the database that are not actually " "available. The entries for the formats have been removed. You should check " @@ -4314,13 +4400,13 @@ msgstr "" msgid "Sending to &device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504 #: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:366 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 msgid "Preferences" msgstr "Beállítások" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 msgid "" "&Location of ebooks (The ebooks are stored in folders sorted by author and " "metadata is stored in the file metadata.db)" @@ -4328,23 +4414,27 @@ msgstr "" "Könyvek helye (A könyvek ezen a mappán belül a szerző és a metadata.db " "fájlban található metaadatok alapján almappákban kerülnek tárolásra):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:503 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 msgid "Browse for the new database location" msgstr "Új adatbázis helyének kiválasztása" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 msgid "Show notification when &new version is available" msgstr "Figyelmeztetés, ha az új verzió elérhető" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 msgid "Download &social metadata (tags/ratings/etc.) by default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 +msgid "Overwrite & author/title by default when fetching metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 msgid "Default network &timeout:" msgstr "Alapértelmezett hálózati időtúllépés:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 msgid "" "Set the default timeout for network fetches (i.e. anytime we go out to the " "internet to get information)" @@ -4352,154 +4442,154 @@ msgstr "" "Alapértelmezett hálózati időtúllépés a letöltéshez (bármilyen internetet " "igénylő művelethez)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 msgid " seconds" msgstr " másodperc" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 msgid "Choose &language (requires restart):" msgstr "Nyelv kiválasztása (újraindítás szükséges):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 msgid "Normal" msgstr "Normál" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 msgid "High" msgstr "Magas" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 msgid "Low" msgstr "Alacsony" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 msgid "Job &priority:" msgstr "Műveletek prioritása:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 msgid "Preferred &output format:" msgstr "Kimeneti formátum:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 msgid "Preferred &input format order:" msgstr "Bemeneti formátumok preferált sorrendje:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 msgid "Use &Roman numerals for series number" msgstr "Római számok használata a könyvsorozatok számozásánál" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 msgid "Enable system &tray icon (needs restart)" msgstr "Ikon megjelenítése a tálcán (újraindítás szükséges)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 msgid "Show ¬ifications in system tray" msgstr "Figyelmeztetések megjelenítése a tálcaikonon" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 msgid "Show cover &browser in a separate window (needs restart)" msgstr "" "A borító alapján történő keresés külön ablakba (újraindítás szükséges)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 msgid "Search as you type" msgstr "Keresés gépelés közben" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 msgid "Automatically send downloaded &news to ebook reader" msgstr "Letöltött hírek automatikus küldése a csatlakoztatott eszközre" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 msgid "&Delete news from library when it is automatically sent to reader" msgstr "Hírek törlése az adatbázisból automatikus eszközre küldés után" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 msgid "&Number of covers to show in browse mode (needs restart):" msgstr "" "Megjelenített borítók száma böngészéskor (borító böngészés üzemmódban, " "újraindítást igényel)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 msgid "Toolbar" msgstr "Eszköztár" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 msgid "Large" msgstr "Nagy" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 msgid "Medium" msgstr "Közepes" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 msgid "Small" msgstr "Kicsi" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 msgid "&Button size in toolbar" msgstr "Eszköztár gombjainak mérete" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 msgid "Show &text in toolbar buttons" msgstr "Gombfeliratok mutatása az eszköztárban" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 msgid "Select visible &columns in library view" msgstr "Látható oszlopok kiválasztása az adatbázis nézetben" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 msgid "Use internal &viewer for:" msgstr "A beépített nézőke használata a következőkhöz:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 msgid "Add an email address to which to send books" msgstr "Email cím hozzáadása" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 msgid "&Add email" msgstr "Email hozzáadása" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 msgid "Make &default" msgstr "Legyen alapértelmezett" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 msgid "&Remove email" msgstr "Email eltávolítása" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 msgid "calibre can send your books to you (or your reader) by email" msgstr "" "A calibre el tudja küldeni könyveit emailben Önnek (vagy az eszközére, ha az " "alkalmas rá)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 msgid "&Maximum number of waiting worker processes (needs restart):" msgstr "A sorban álló &műveletek maximális száma (újraindítás szükséges):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 msgid "&Check database integrity" msgstr "Adatbázis ellenőrzése" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 msgid "&Install command line tools" msgstr "Parancssori eszközök installálása" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549 msgid "Open calibre &configuration directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 msgid "Limit the max. simultaneous jobs to the available CPU &cores" msgstr "" "A maximális párhuzamosan végrehajtandó műveletek számának korlátozása a " "processzor magok számára" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 msgid "Debug &device detection" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 msgid "" "calibre contains a network server that allows you to access your book " "collection using a browser from anywhere in the world. Any changes to the " @@ -4509,31 +4599,31 @@ msgstr "" "bárhonnan elérhető lesz gyűjteménye. A beállítások változtatása csak a " "szerver újraindítása után lép életbe." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553 msgid "Server &port:" msgstr "Szerver port:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117 msgid "&Username:" msgstr "&Felhasználónév:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119 msgid "&Password:" msgstr "&Jelszó:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 msgid "" "If you leave the password blank, anyone will be able to access your book " "collection using the web interface." msgstr "Ha nem ad meg jelszót, akkor bárki hozzáférhet az adatbázisához." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " @@ -4541,41 +4631,41 @@ msgstr "" "A megjelenített borító maximális mérete (szélességxmagasság). Nagyobb méretű " "borítók át lesznek méretezve. " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558 msgid "Max. &cover size:" msgstr "Max. borító méret:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212 msgid "&Show password" msgstr "Jelszó mutatása" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560 msgid "Max. &OPDS items per query:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561 msgid "&Start Server" msgstr "Szerver indítása" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:562 msgid "St&op Server" msgstr "Szerver leállítása" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:563 msgid "&Test Server" msgstr "Szerver teszt" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:564 msgid "Run server &automatically on startup" msgstr "Szerver automatikus indítása a program indulásakor" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:565 msgid "View &server logs" msgstr "Szerverüzenetek megtekintése" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:566 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46 msgid "" "

Remember to leave calibre running as the server only runs as long as " @@ -4591,7 +4681,7 @@ msgstr "" "Stanza olvasóprogramjában. A 'myhostname' helyére a calibre-t futtató " "számítógép teljes neve, vagy IP címe kerüljön." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:564 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:568 msgid "" "Here you can customize the behavior of Calibre by controlling what plugins " "it uses." @@ -4599,27 +4689,27 @@ msgstr "" "Itt beállíthatja a calibre működését, azzal, hogy milyen pluginokat " "használjon." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:565 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:569 msgid "Enable/&Disable plugin" msgstr "Plugin engedélyezése/tiltása" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:566 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:570 msgid "&Customize plugin" msgstr "Plugin testreszabása" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:567 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:571 msgid "&Remove plugin" msgstr "Plugin eltávolítása" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:568 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:572 msgid "Add new plugin" msgstr "Új plugin hozzáadása" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:569 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:573 msgid "Plugin &file:" msgstr "Plugin &fájl:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:571 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:575 msgid "&Add" msgstr "&Hozzáadás" @@ -4666,7 +4756,7 @@ msgstr "Engedélyezett változók:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/social.py:34 msgid "Downloading social metadata, please wait..." -msgstr "" +msgstr "Közösségi metaadatok letöltése, kérem várjon..." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:48 msgid "Are you sure?" @@ -4688,42 +4778,42 @@ msgstr "Rendezési forma" msgid "ISBN" msgstr "ISBN" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:151 msgid "Finding metadata..." msgstr "Metaadatok keresése..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:164 msgid "Could not find metadata" msgstr "Nem találhatók metaadatok" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:165 msgid "The metadata download seems to have stalled. Try again later." msgstr "A metaadat letöltés nem sikerült. Próbálja meg később." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:174 msgid "Warning" msgstr "Figyelem" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:175 msgid "Could not fetch metadata from:" msgstr "Metadatok nem letölthetőek a következő helyről:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:179 msgid "No metadata found" msgstr "Nem találhatók metaadatok" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:180 msgid "" "No metadata found, try adjusting the title and author or the ISBN key." msgstr "" "Nem található metaadat, próbálja meg finomítani a könyvcímet, szerzőt vagy " "az ISBN-t." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:84 msgid "Fetch metadata" msgstr "Metaadatok letöltése" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85 msgid "" "

calibre can find metadata for your books from two locations: Google " "Books and isbndb.com.

To use isbndb.com you must sign up for a " @@ -4736,26 +4826,32 @@ msgstr "" "href=\"http://www.isbndb.com\">felhasználói fiókkal és be kell írnia a " "kapott kulcsot az alábbi mezőbe." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:86 msgid "&Access Key:" msgstr "Felhasználói kulcs:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87 msgid "Fetch" msgstr "Letöltés" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:88 msgid "Matches" msgstr "Találatok" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:89 msgid "" "Select the book that most closely matches your copy from the list below" msgstr "Válassza ki azt, amelyik a leginkább illik a könyvéhez" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:90 msgid "Download &social metadata (tags/rating/etc.) for the selected book" msgstr "" +"Közösségi metaadatok (címkék, értékelés stb.) letöltése a kiválasztott " +"könyvhöz" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:91 +msgid "Overwrite &author/title with author/title of selected book" +msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/job_view_ui.py:37 msgid "Details of job" @@ -4777,24 +4873,24 @@ msgstr "Műveletek részleteinek megjelenítése" msgid "Stop &all jobs" msgstr "Minden művelet leállítása" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:138 msgid "Edit Meta information" msgstr "Metaadatok szerkesztése" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:353 msgid "Meta information" msgstr "Metaadat infromációk" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:141 msgid "A&utomatically set author sort" msgstr "Rendezési forma automatikus beállítása" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:142 msgid "Author s&ort: " msgstr "Rendezési forma: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:143 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360 msgid "" "Specify how the author(s) of this book should be sorted. For example Charles " @@ -4803,47 +4899,51 @@ msgstr "" "A szerző rendezési formájának megadása. Például Charles Dickens-t célszerű " "Dickens, Charles-ként rendezni." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:144 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:363 msgid "&Rating:" msgstr "Értékelés:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:143 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:364 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:365 msgid "Rating of this book. 0-5 stars" msgstr "A könyv értékelése. 0-5 csillag." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:147 +msgid "No change" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:366 msgid " stars" msgstr " csillag" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:150 msgid "Add ta&gs: " msgstr "Címkék hozzáadása: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:149 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:370 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371 msgid "Open Tag Editor" msgstr "Címke-szerkesztő megnyitása" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:154 msgid "&Remove tags:" msgstr "Címkék eltávolítása:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:155 msgid "Comma separated list of tags to remove from the books. " msgstr "A könyvből eltávolítandó címkék vesszővel elválasztott listája " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:159 msgid "Remove &format:" msgstr "Formátum eltávolítása:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:160 msgid "&Swap title and author" msgstr "" @@ -4856,113 +4956,113 @@ msgid "Choose formats for " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:137 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:985 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1004 msgid "Books" msgstr "Könyvek" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:165 msgid "No permission" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:166 msgid "You do not have permission to read the following files:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:190 msgid "No format selected" msgstr "Nincs formátum kiválasztva" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:201 msgid "Could not read metadata" msgstr "Nem lehet olvasni a metaadatokat" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:202 msgid "Could not read metadata from %s format" msgstr "Nem lehet kiolvasni a metaadtokat a %s formátumból." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:245 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:247 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:253 msgid "Could not read cover" msgstr "Nem lehet olvasni a borítót" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:246 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:248 msgid "Could not read cover from %s format" msgstr "Nem lehet kiolvasni a borítót a %s formátumból" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:252 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:254 msgid "The cover in the %s format is invalid" msgstr "A %s formátumban lévő borító érvénytelen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:291 msgid "Abort the editing of all remaining books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:404 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:409 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:407 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:412 msgid "This ISBN number is valid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:412 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:415 msgid "This ISBN number is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:511 msgid "Downloading cover..." msgstr "Borító letöltése..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:520 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:525 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:523 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:528 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:534 msgid "Cannot fetch cover" msgstr "Nem lehet letölteni a borítót" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:521 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:535 msgid "Could not fetch cover.
" msgstr "Nem lehet letölteni a borítót.
" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:525 msgid "The download timed out." msgstr "Időtúllépés letöltés közben" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:529 msgid "Could not find cover for this book. Try specifying the ISBN first." msgstr "" "Nem található borító ehhez a könyvhöz. Próbálja meg először az ISBN-t " "meghatározni." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:541 msgid "Bad cover" msgstr "Hibás borító" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:542 msgid "The cover is not a valid picture" msgstr "A borító nem érvényes képfájl" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:569 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:572 msgid "There were errors" msgstr "Hibák történtek" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:570 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:573 msgid "There were errors downloading social metadata" -msgstr "" +msgstr "Hiba történt a közösségi metaadatok letöltése közben" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:594 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:598 msgid "Cannot fetch metadata" msgstr "Metadatok nem letölthetőek" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:595 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:599 msgid "You must specify at least one of ISBN, Title, Authors or Publisher" msgstr "" "Legalább az egyik adatot meg kell adnia a következők közül: ISBN, könyv " "címe, szerző vagy kiadó" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:657 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:664 msgid "Permission denied" msgstr "Hozzáférés megtagadva" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:658 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:665 msgid "Could not open %s. Is it being used by another program?" msgstr "Nem lehet megnyitni: %s. Esetleg másik program használja?" @@ -5254,11 +5354,11 @@ msgstr "" msgid "Choose formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:66 msgid "Are your sure?" msgstr "Biztos benne?" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:67 msgid "" "The following tags are used by one or more books. Are you certain you want " "to delete them?" @@ -5656,12 +5756,12 @@ msgid " - Jobs" msgstr " - Műveletek" #: /home/kovid/work/calibre/src/calibre/gui2/library.py:165 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1108 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1113 msgid "Size (MB)" msgstr "Méret (MB)" #: /home/kovid/work/calibre/src/calibre/gui2/library.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1109 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1114 msgid "Date" msgstr "Dátum" @@ -5669,25 +5769,25 @@ msgstr "Dátum" msgid "Rating" msgstr "Értékelés" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:343 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:349 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:348 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:354 -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:72 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:410 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:440 msgid "None" msgstr "Nincs" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:365 msgid "Book %s of %s." msgstr "%s. rész - %s sorozat" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:872 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:877 msgid "Not allowed" msgstr "Nem engedélyezett" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:873 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:878 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -5695,11 +5795,11 @@ msgstr "" "Az eszközre húzás nem támogatott. Először adja hozzá a könyvet a calibre " "adatbázishoz." -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1044 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1049 msgid "Format" msgstr "Formátum" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1098 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1103 msgid "Double click to edit me

" msgstr "Duplakattintás a szerkesztéshez

" @@ -5775,52 +5875,52 @@ msgstr "eBook megnyitása" msgid "Configure" msgstr "Beállítás" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:24 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:25 msgid "Use the library located at the specified path." msgstr "A megadott elérési úton lévő adatbázis használata." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:27 msgid "Start minimized to system tray." msgstr "A tálcára összecsukott állapotban induljon" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:29 msgid "Log debugging information to console" msgstr "Hibakeresési információk megjelenítése a konzolon" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:30 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:31 msgid "Do not check for updates" msgstr "Ne ellenőrizze a frissítéseket" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:83 msgid "If you are sure it is not running" msgstr "Ha biztos benne, hogy nem fut" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:85 msgid "Cannot Start " msgstr "Indítás nem lehetséges " -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:86 msgid "%s is already running." msgstr "%s már fut." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:89 msgid "may be running in the system tray, in the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:91 msgid "upper right region of the screen." msgstr "a képernyő jobb felső sarka." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:93 msgid "lower right region of the screen." msgstr "a képernyő jobb alsó részén." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:96 msgid "try rebooting your computer." msgstr "próblja meg újraindítani a számítógépet" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:95 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:110 msgid "try deleting the file" msgstr "" @@ -5981,11 +6081,11 @@ msgstr "&Kilépés" msgid "ERROR: Unhandled exception" msgstr "Ismeretlen hiba történt" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:89 msgid "Book has neither title nor ISBN" msgstr "A könyvnek sem címe sem pedig ISBN azonosítója sincs." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:115 msgid "No matches found for this book" msgstr "Nem található ilyen könyv" @@ -5993,37 +6093,37 @@ msgstr "Nem található ilyen könyv" msgid "Search" msgstr "Keresés" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:58 msgid "Press a key..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:79 msgid "Already assigned" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:81 msgid "already assigned to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:121 -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 msgid " or " msgstr " vagy " -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:68 msgid "&Default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:135 msgid "Customize shortcuts for" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 msgid "Keys" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:225 msgid "Double click to change" msgstr "" @@ -6119,11 +6219,11 @@ msgstr "" msgid "Fetch news from " msgstr "Hírek letöltése a következő helyről: " -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:276 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:249 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:277 msgid "" "The following books have already been converted to %s format. Do you wish to " "reconvert them?" @@ -6218,7 +6318,7 @@ msgid "Save to disk in a single directory" msgstr "Mentés lemezre egy mappába" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1659 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1747 msgid "Save only %s format to disk" msgstr "Csak a(z) %s formátum mentése a lemezre" @@ -6250,50 +6350,58 @@ msgstr "Egy könyv konvertálása" msgid "Bulk convert" msgstr "Csoportos konvertálás" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:372 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:360 +msgid "Create catalog of books in your calibre library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:376 msgid "Run welcome wizard" msgstr "Beállítás Varázsló indítása" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:408 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:412 msgid "Similar books..." msgstr "Hasonló könyvek..." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:468 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:472 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:473 msgid "Bad database location" msgstr "Hibás adatbázis elérési útvonal" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:471 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:475 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:558 msgid "Calibre Library" msgstr "Calibre Library" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:481 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1815 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:485 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1903 msgid "Choose a location for your ebook library." msgstr "Válasszon elérési utat az adatbázisod számára" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:685 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:523 +msgid "Calibre Quick Start Guide" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:703 msgid "Browse by covers" msgstr "Böngészés borítók alapján" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:833 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:851 msgid "Device: " msgstr "Eszköz: " -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:835 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:853 msgid " detected." msgstr " felismerve" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:859 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:877 msgid "Connected " msgstr "Csatlakozva: " -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:871 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:889 msgid "Device database corrupted" msgstr "Az eszköz adatbázis hibás" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:872 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:890 msgid "" "\n" "

The database of books on the reader is corrupted. Try the " @@ -6322,86 +6430,86 @@ msgstr "" " \n" " " -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:933 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:952 msgid "How many empty books?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:934 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:953 msgid "How many empty books should be added?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:978 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1025 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:997 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1043 msgid "Uploading books to device." msgstr "Könyvek feltöltése az eszközre." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:986 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1005 msgid "EPUB Books" msgstr "EPUB könyvek" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:987 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1006 msgid "LRF Books" msgstr "LRF könyvek" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:988 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1007 msgid "HTML Books" msgstr "HTML könyvek" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:989 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1008 msgid "LIT Books" msgstr "LIT könyvek" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:990 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1009 msgid "MOBI Books" msgstr "MOBI könyvek" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:991 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1010 msgid "Text books" msgstr "Text könyvek" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:992 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1011 msgid "PDF Books" msgstr "PDF könyvek" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:993 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1012 msgid "Comics" msgstr "Képregény" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:994 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1013 msgid "Archives" msgstr "Archívumok" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:998 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1017 msgid "Supported books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1034 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1054 msgid "Failed to read metadata" msgstr "Hiba történt a metaadatok olvasása közben" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1035 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1055 msgid "Failed to read metadata from the following" msgstr "Nem sikerült a metaadatok olvasása a következőből:" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1054 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1074 msgid "Cannot delete" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1057 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1545 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1564 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1077 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1633 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1652 msgid "No book selected" msgstr "Nincs könyv kiválasztva" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1067 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1087 msgid "Choose formats to be deleted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1083 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1105 msgid "Choose formats not to be deleted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1119 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1143 msgid "" "The selected books will be permanently deleted and the files removed " "from your computer. Are you sure?" @@ -6409,110 +6517,131 @@ msgstr "" "A kiválasztott könyvek véglegesen törölve lesznek a számítógépedről. " "Biztosan törölni akarja?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1146 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1170 msgid "Deleting books from device." msgstr "Könyvek törlése az eszközről." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1177 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1201 msgid "Cannot download metadata" msgstr "Nem lehet letölteni a metaadatokat" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1178 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1235 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1268 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1293 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1406 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1202 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1259 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1292 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1317 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1376 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1489 msgid "No books selected" msgstr "Nincs könyv kiválasztva." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1193 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217 msgid "social metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1195 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 msgid "covers" msgstr "borítók" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1195 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 msgid "metadata" msgstr "metaadatok" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1197 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1221 msgid "Downloading %s for %d book(s)" msgstr "%s letöltése %d könyvhöz" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1243 msgid "Failed to download some metadata" msgstr "Néhány metaadatot nem sikerült letölteni" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1220 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1244 msgid "Failed to download metadata for the following:" msgstr "Hiba történt a metaadatok letöltése közben a következőhöz:" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1223 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1247 msgid "Failed to download metadata:" msgstr "Nem sikerült metaadatokat letölteni:" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1234 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1267 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1258 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1291 msgid "Cannot edit metadata" msgstr "Metaadat nem szerkeszthető" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1292 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1316 msgid "Cannot save to disk" msgstr "Nem lehet lemezre menteni" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1295 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1319 msgid "Choose destination directory" msgstr "Válassza ki a célkönyvtárt" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1322 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1346 msgid "Error while saving" msgstr "Mentési hiba" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1323 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1347 msgid "There was an error while saving." msgstr "Hiba történt mentés közben." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1330 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1331 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1354 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1355 msgid "Could not save some books" msgstr "Néhány könyvet nem sikerült menteni" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1332 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1356 msgid "Click the show details button to see which ones." msgstr "Kattintson a 'Részletek megjelenítése' gombra" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1351 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1377 +msgid "No books selected to generate catalog for" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1394 +msgid "Generating %s catalog..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1405 +msgid "Catalog generated." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1408 +msgid "Export Catalog Directory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1409 +msgid "Select destination for %s.%s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1423 msgid "Fetching news from " msgstr "Hírek letöltése: " -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1365 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1437 msgid " fetched." msgstr " letöltve" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1405 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1488 msgid "Cannot convert" msgstr "Nem lehet konvertálni" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1434 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1517 msgid "Starting conversion of %d book(s)" msgstr "%d könyv konvertálása" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1545 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1601 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1633 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1689 msgid "Cannot view" msgstr "Nem lehet a könyvet olvasni" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1563 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1651 msgid "Cannot open folder" msgstr "A mappát nem lehet megnyitni" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1585 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1673 msgid "Multiple Books Selected" msgstr "Több könyv is ki van választva" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1586 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1674 msgid "" "You are attempting to open %d books. Opening too many books at once can be " "slow and have a negative effect on the responsiveness of your computer. Once " @@ -6523,31 +6652,31 @@ msgstr "" "lelassíthatja a gépedet. Ha a művelet elindult, már nem lehet leállítani. " "Biztosan folytatja?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1602 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1690 msgid "%s has no available formats." msgstr "Nincs elérhető formátum a következőhöz: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1643 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1731 msgid "Cannot configure" msgstr "Beállítás nem lehetséges" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1644 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1732 msgid "Cannot configure while there are running jobs." msgstr "Művelet végrehajtása közben nem lehet a beállításokat változtatni" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1687 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1775 msgid "No detailed info available" msgstr "Nincs részletes információ" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1688 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1776 msgid "No detailed information is available for books on the device." msgstr "A könyvekhez nincsenek részletes információk az eszközön." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1743 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1831 msgid "Error talking to device" msgstr "Hiba a kapcsolatban" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1744 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1832 msgid "" "There was a temporary error talking to the device. Please unplug and " "reconnect the device and or reboot." @@ -6555,12 +6684,12 @@ msgstr "" "Hiba az eszközkapcsolatban. Válassza le majd csatlakoztassa újra az eszközt " "és/vagy indítssa újra az eszközt, esetleg a programot." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1767 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1795 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1855 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1883 msgid "Conversion Error" msgstr "Konvertálási hiba" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1768 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1856 msgid "" "

Could not convert: %s

It is a DRMed book. You must " "first remove the DRM using third party tools." @@ -6570,23 +6699,23 @@ msgstr "" "egy külső program segítségével a DRM-et (Digital Rights Management) el kell " "távolítania." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1781 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1869 msgid "Recipe Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1796 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1884 msgid "Failed" msgstr "Nem sikerült" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1824 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1912 msgid "Invalid library location" msgstr "Érvénytelen adatbázis elérési útvonal" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1825 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1913 msgid "Could not access %s. Using %s as the library." msgstr "Nem elérhető: %s. Helyette %s lesz az adatbázis." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1875 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1963 msgid "" "is the result of the efforts of many volunteers from all over the world. If " "you find it useful, please consider donating to support its development." @@ -6594,11 +6723,11 @@ msgstr "" "sok önkéntes erőfeszítéseinek eredménye a világ minden tájáról. Ha " "hasznosnak találja, kérem, támogassa a fejlesztést." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1900 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1988 msgid "There are active jobs. Are you sure you want to quit?" msgstr "Folyamatban van néhány művelet végrehajtása. Megszakítja?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1903 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1991 msgid "" " is communicating with the device!
\n" " Quitting may cause corruption on the device.
\n" @@ -6608,11 +6737,11 @@ msgstr "" " A kilépés adatvesztést okozhat az eszközön.
\n" " Biztos, hogy ki akarsz lépni??" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1907 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1995 msgid "WARNING: Active jobs" msgstr "FIGYELEM: Aktív műveletek" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1959 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2047 msgid "" "will keep running in the system tray. To close it, choose Quit in the " "context menu of the system tray." @@ -6620,7 +6749,7 @@ msgstr "" "tovább fut a tálcán. A bezáráshoz válassza a Kilépést a tálcaikon " "menüjéből." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1978 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2066 msgid "" "Latest version: %s" @@ -6628,11 +6757,11 @@ msgstr "" "Legújabb verzió: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1986 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2074 msgid "Update available" msgstr "Frissítés elérhető" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1987 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2075 msgid "" "%s has been updated to version %s. See the new features. Visit the download page?" @@ -6694,69 +6823,69 @@ msgstr "Exportálás" msgid "Import" msgstr "Importálás" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:154 msgid "Configure Ebook viewer" msgstr "Ebook olvasó beállítása" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:155 msgid "&Font options" msgstr "Betűbeállítások" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:156 msgid "Se&rif family:" msgstr "Serif ('talpas') betűkészlet:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:157 msgid "&Sans family:" msgstr "Sans ('talp nélküli') betűkészlet:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:158 msgid "&Monospace family:" msgstr "Monospace(rögzített szélességű) betűkészlet" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:159 msgid "&Default font size:" msgstr "Alap betűtípus" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:157 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:159 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:168 msgid " px" msgstr " képpont" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:161 msgid "Monospace &font size:" msgstr "Monospace(rögzített szélességű) betűméret" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:163 msgid "S&tandard font:" msgstr "&Alap betűtípus:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:164 msgid "Serif" msgstr "Serif(talpas)" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:165 msgid "Sans-serif" msgstr "Sans-serif ('talp nélküli')" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:166 msgid "Monospace" msgstr "Monospace(rögzített szélességű)" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:167 msgid "Remember last used &window size" msgstr "Az utoljára használt ablakméret megjegyzése" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:169 msgid "Maximum &view width:" msgstr "Maximális ablakszélesség" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:170 msgid "H&yphenate (break line in the middle of large words)" msgstr "Hosszú szavak elválasztása" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:171 msgid "" "The default language to use for hyphenation rules. If the book does not " "specify a language, this will be used." @@ -6764,23 +6893,27 @@ msgstr "" "Az elválasztás alapértelmezett nyelve. Ha a könyv nem tartalmaz nyelvi " "adatokat, akkor ez lesz használva." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:172 msgid "Default &language for hyphenation:" msgstr "Alapértelmezett elválasztási nyelv." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:173 +msgid "&Resize images larger than the viewer window (needs restart)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:174 msgid "&User stylesheet" msgstr "Felhasználói stíluslap" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:175 msgid "&General" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:176 msgid "Double click to change a keyboard shortcut" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:177 msgid "&Keyboard shortcuts" msgstr "" @@ -6798,7 +6931,7 @@ msgid "Remember last used window size" msgstr "Az utoljára használt ablakméret megjegyzése" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 msgid "" "Set the user CSS stylesheet. This can be used to customize the look of all " "books." @@ -6810,43 +6943,47 @@ msgstr "" msgid "Maximum width of the viewer window, in pixels." msgstr "Az olvasóprogram ablakának maximális szélessége képpontban." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:46 +msgid "Resize images larger than the viewer window to fit inside it" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 msgid "Hyphenate text" msgstr "Szöveg elválasztás" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 msgid "Default language for hyphenation rules" msgstr "Az elválasztási szabályok nyelve" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 msgid "Font options" msgstr "Betűbeállítások" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:53 msgid "The serif font family" msgstr "Serif(talpas) betűkészlet" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 msgid "The sans-serif font family" msgstr "Sans-serif ('talp nélküli') betűkészlet" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:57 msgid "The monospaced font family" msgstr "Monospace(rögzített szélességű) betűkészlet" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:58 msgid "The standard font size in px" msgstr "Az alap betűméret pixelben" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 msgid "The monospaced font size in px" msgstr "Monospace(rögzített szélességű) betűméret pixelben" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 msgid "The standard font type" msgstr "Alap betűtípus" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:408 msgid "&Lookup in dictionary" msgstr "" @@ -7059,6 +7196,14 @@ msgid "Print eBook" msgstr "eBook nyomtatása" #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:196 +msgid "Copy Image" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:197 +msgid "Paste Image" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:226 msgid "" "Library\n" "%d\n" @@ -7068,7 +7213,7 @@ msgstr "" "%d\n" "könyv és hír" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:227 msgid "" "Reader\n" "%s\n" @@ -7078,7 +7223,7 @@ msgstr "" "%s\n" "szabad" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:228 msgid "" "Card A\n" "%s\n" @@ -7088,7 +7233,7 @@ msgstr "" "%s\n" "szabad" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:229 msgid "" "Card B\n" "%s\n" @@ -7098,39 +7243,39 @@ msgstr "" "%s\n" "szabad" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:234 msgid "Click to see the books available on your computer" msgstr "A számítógépen lévő könyvek megjelenítése." -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:235 msgid "Click to see the books in the main memory of your reader" msgstr "A készülék belső memóriájában lévő könyvek megjelenítése" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:236 msgid "Click to see the books on storage card A in your reader" msgstr "A könyvolvasó eszköz 'A' memóriakártyáján lévő könyvek megjelenítése" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:207 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:237 msgid "Click to see the books on storage card B in your reader" msgstr "A könyvolvasó eszköz 'B' memóriakártyáján lévő könyvek megjelenítése" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:500 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:530 msgid "Change Case" msgstr "Kisbetű - nagybetű váltás" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:531 msgid "Upper Case" msgstr "Nagybetűk" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:532 msgid "Lower Case" msgstr "Kisbetűk" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:503 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:533 msgid "Swap Case" msgstr "Kisbetű - nagybetű váltás" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:504 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:534 msgid "Title Case" msgstr "Minden Szó Nagybetűvel Kezdődik" @@ -7186,7 +7331,7 @@ msgstr "" msgid "Could not move library" msgstr "Nem lehet áthelyezni az adatbázist" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:624 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:625 msgid "welcome wizard" msgstr "beállítás varázsló" @@ -7473,6 +7618,88 @@ msgid "" "WordPlayer, etc. integration." msgstr "" +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:35 +msgid "" +"The fields to output when cataloging books in the database. Should be a " +"comma-separated list of fields.\n" +"Available fields: %s.\n" +"Default: '%%default'\n" +"Applies to: CSV, XML output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:44 +msgid "" +"Output field to sort on.\n" +"Available fields: author_sort, id, rating, size, timestamp, title.\n" +"Default: '%default'\n" +"Applies to: CSV, XML output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:253 +msgid "" +"Title of generated catalog used as title in metadata.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:259 +msgid "" +"Save the output from different stages of the conversion pipeline to the " +"specified directory. Useful if you are unsure at which stage of the " +"conversion process a bug is occurring.\n" +"Default: '%default'None\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:268 +msgid "" +"Regex describing tags to exclude as genres.\n" +"Default: '%default' excludes bracketed tags, e.g. '[]'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:273 +msgid "" +"Comma-separated list of tag words indicating book should be excluded from " +"output. Case-insensitive.\n" +"--exclude-tags=skip will match 'skip this book' and 'Skip will like this'.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:280 +msgid "" +"Tag prefix for user notes, e.g. '*Jeff might enjoy reading this'.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:286 +msgid "" +"Sort titles with leading numbers as text, e.g.,\n" +"'2001: A Space Odyssey' sorts as \n" +"'Two Thousand One: A Space Odyssey'.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:292 +msgid "" +"Specifies the output profile. In some cases, an output profile is required " +"to optimize the catalog for the device. For example, 'kindle' or " +"'kindle_dx' creates a structured Table of Contents with Sections and " +"Articles.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:298 +msgid "" +"Tag indicating book has been read.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/library/cli.py:121 msgid "" "Path to the calibre library. Default is to use the path stored in the " @@ -7724,7 +7951,42 @@ msgstr "" msgid "You must specify some ids or the %s option" msgstr "Meg kell adnia néhány ID-t vagy a %s opciót" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:591 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:634 +msgid "" +"\n" +" %prog catalog /path/to/destination.(csv|epub|mobi|xml ...) [options]\n" +"\n" +" Export a catalog in format specified by path/to/destination extension.\n" +" Options control how entries are displayed in the generated catalog " +"ouput.\n" +" " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:648 +msgid "" +"Comma-separated list of database IDs to catalog.\n" +"If declared, --search is ignored.\n" +"Default: all" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:652 +msgid "" +"Filter the results by the search query. For the format of the search query, " +"please see the search-related documentation in the User Manual.\n" +"Default: no filtering" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:658 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:484 +msgid "Show detailed output information. Useful for debugging" +msgstr "" +"Részletes kimeneti információk megjelenítése. Hasznos hibakeresésnél." + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:671 +msgid "Error: You must specify a catalog output file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:687 msgid "" "%%prog command [options] [arguments]\n" "\n" @@ -7736,27 +7998,27 @@ msgid "" "For help on an individual command: %%prog command --help\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1656 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1696 msgid "

Migrating old database to ebook library in %s

" msgstr "

Régi adatbázis áthozatala a jelenlegibe: %s

" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1685 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1725 msgid "Copying %s" msgstr "Másolás: %s" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1702 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1742 msgid "Compacting database" msgstr "Adatbázis tömörítése" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1795 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1835 msgid "Checking SQL integrity..." msgstr "SQL adatbázis ellenőrzése" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1832 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1872 msgid "Checking for missing files." msgstr "Hiányzó fájlok keresése" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1854 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1894 msgid "Checked id" msgstr "Ellenőrzött ID" @@ -7769,50 +8031,52 @@ msgid "The authors" msgstr "Szerzők" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:26 -msgid "The author sort string" -msgstr "Szerző rendezési forma" +msgid "" +"The author sort string. To use only the first letter of the name use " +"{author_sort[0]}" +msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:27 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:28 msgid "The tags" msgstr "Címkék" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:28 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:29 msgid "The series" msgstr "Sorozat" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:29 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:30 msgid "The series number. To get leading zeros use {series_index:0>3s}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:30 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:31 msgid "The rating" msgstr "Értékelés" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:31 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:32 msgid "The ISBN" msgstr "ISBN szám" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:32 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:33 msgid "The publisher" msgstr "Kiadó" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:33 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:34 msgid "The date" msgstr "Dátum" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:34 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:35 msgid "The published date" msgstr "Kiadás dátuma" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:35 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:36 msgid "The calibre internal id" msgstr "Calibre azonosító" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:45 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:46 msgid "Options to control saving to disk" msgstr "Lemezre mentés beállításai" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:51 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:52 msgid "" "Normally, calibre will update the metadata in the saved files from what is " "in the calibre library. Makes saving to disk slower." @@ -7820,7 +8084,7 @@ msgstr "" "Alapesetben a calibre a mentett fájlokban felülírja a metaadatokat az " "adatbázisban lévőkkel. Ez lassítja a mentési folyamatot." -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:54 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:55 msgid "" "Normally, calibre will write the metadata into a separate OPF file along " "with the actual e-book files." @@ -7828,14 +8092,14 @@ msgstr "" "Alapesetben a calibre a metaadatokat egy különálló OPF fájlba írja is a " "könyv mappájában." -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:57 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:58 msgid "" "Normally, calibre will save the cover in a separate file along with the " "actual e-book file(s)." msgstr "" "Alapesetben a calibre a borítót önálló képfájlként a könyv mappájába menti." -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:60 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:61 msgid "" "Comma separated list of formats to save for each book. By default all " "available books are saved." @@ -7843,7 +8107,7 @@ msgstr "" "A mentendő formátumok vesszővel elválasztott listája. Alapesetben minden " "formátum mentve lesz." -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:63 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:64 msgid "" "The template to control the filename and directory structure of the saved " "files. Default is \"%s\" which will save books into a per-author " @@ -7854,7 +8118,7 @@ msgstr "" "szerzőnkénti mappákba menti, a fájlnév pedig tartalmazza a címet és a " "szerzőt. Elérhető opciók: {%s}" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:68 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:69 msgid "" "The template to control the filename and directory structure of files sent " "to the device. Default is \"%s\" which will save books into a per-author " @@ -7862,7 +8126,7 @@ msgid "" "are: {%s}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:75 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:76 msgid "" "Normally, calibre will convert all non English characters into English " "equivalents for the file names. WARNING: If you turn this off, you may " @@ -7874,22 +8138,22 @@ msgstr "" "az opciót, akkor néhány esetben hibát tapasztalhat, attól függően, hogy az " "Ön által használt fájlrendszernek milyen jó a UNICODE támogatása." -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:81 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:82 msgid "" "The format in which to display dates. %d - day, %b - month, %Y - year. " "Default is: %b, %Y" msgstr "" "A dátum formázása. %Y - év, %b - hónap, %d - nap. Alapértelmezett: %b, %Y." -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:84 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:85 msgid "Convert paths to lowercase." msgstr "Elérési út kisbetűssé alakítása" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:86 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:87 msgid "Replace whitespace with underscores." msgstr "Szóközök helyettesítése alsóvonallal" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:245 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:256 msgid "Requested formats not available" msgstr "A kívánt formátum nem elérhető" @@ -7897,7 +8161,7 @@ msgstr "A kívánt formátum nem elérhető" msgid "Password to access your calibre library. Username is " msgstr "A calibre adatbázis jelszava. Felhasználónév: " -#: /home/kovid/work/calibre/src/calibre/library/server.py:856 +#: /home/kovid/work/calibre/src/calibre/library/server.py:860 msgid "" "[options]\n" "\n" @@ -7907,7 +8171,7 @@ msgstr "" "\n" "A 'calibre' tartalom kiszolgáló indítása." -#: /home/kovid/work/calibre/src/calibre/library/server.py:858 +#: /home/kovid/work/calibre/src/calibre/library/server.py:862 msgid "Path to the library folder to serve with the content server" msgstr "" @@ -7927,47 +8191,47 @@ msgstr "" "Ha szóközöket tartalmazó paramétereket ad meg %prog-nak, akkor a paraméterek " "idézőjelek között legyenek." -#: /home/kovid/work/calibre/src/calibre/utils/config.py:631 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:650 msgid "Path to the database in which books are stored" msgstr "A könyveket tartalmazó adatbázis elérési útja" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:633 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:652 msgid "Pattern to guess metadata from filenames" msgstr "Minta a metaadatok kinyerésére a fájlnévből" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:635 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:654 msgid "Access key for isbndb.com" msgstr "Felhasználói kulcs az isbndb.com-hoz:" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:637 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:656 msgid "Default timeout for network operations (seconds)" msgstr "Alap időtúllépés a hálózati műveletekhez (másodpercben)" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:639 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:658 msgid "Path to directory in which your library of books is stored" msgstr "A könyveket tartalmazó adatbázisfájl mappájának elérési útja" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:641 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:660 msgid "The language in which to display the user interface" msgstr "A felhasználói felület nyelve:" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:643 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:662 msgid "The default output format for ebook conversions." msgstr "Az ebook konvertálás alapértelmezett kimeneti formátuma." -#: /home/kovid/work/calibre/src/calibre/utils/config.py:647 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:666 msgid "Ordered list of formats to prefer for input." msgstr "A bementi formátum listája preferált sorrendben" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:649 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:668 msgid "Read metadata from files" msgstr "Metaadatok olvasása a fájlokból" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:651 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:670 msgid "The priority of worker processes" msgstr "Műveletek prioritási sorrendje" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:653 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:672 msgid "Swap author first and last names when reading metadata" msgstr "" @@ -7983,7 +8247,7 @@ msgstr "Leállítva" msgid "Finished" msgstr "Kész" -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:70 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:75 msgid "Working..." msgstr "A művelet végrehajtása folyamatban..." @@ -8016,38 +8280,46 @@ msgid "English (Australia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:100 -msgid "English (Canada)" +msgid "English (New Zealand)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:101 -msgid "English (India)" +msgid "English (Canada)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:102 -msgid "English (Thailand)" +msgid "English (India)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:103 -msgid "English (Cyprus)" +msgid "English (Thailand)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:104 -msgid "English (Pakistan)" +msgid "English (Cyprus)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:105 -msgid "English (Singapore)" +msgid "English (Pakistan)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:106 -msgid "German (AT)" +msgid "English (Singapore)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:107 -msgid "Dutch (NL)" +msgid "English (Yemen)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:108 +msgid "German (AT)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:109 +msgid "Dutch (NL)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:110 msgid "Dutch (BE)" msgstr "" @@ -8110,77 +8382,85 @@ msgstr "" msgid "Unknown News Source" msgstr "Ismeretlen Hírforrás" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:520 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:550 msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:606 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:635 msgid "Download finished" msgstr "A letöltés befejeződött" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:608 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:637 msgid "Failed to download the following articles:" msgstr "A következő cikkek letöltése nem sikerült:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:614 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:643 msgid "Failed to download parts of the following articles:" msgstr "A következő cikkek részeinek letöltése nem sikerült:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:616 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:645 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:618 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:647 msgid "\tFailed links:" msgstr "\tHibás linkek:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:699 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:728 msgid "Could not fetch article. Run with -vv to see the reason" msgstr "" "Nem lehet a cikket letölteni. Futtassa a -vv paraméterrel a hibaüzenetek " "megjelenítéséhez" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:720 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:749 msgid "Fetching feeds..." msgstr "Hírek letöltése..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:725 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:754 msgid "Got feeds from index page" msgstr "Hírek letöltve az index oldalról" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:731 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:760 msgid "Trying to download cover..." msgstr "Borító letöltése..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:789 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:762 +msgid "Generating masthead..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:835 msgid "Starting download [%d thread(s)]..." msgstr "Letöltés megkezdve [%d szálon]..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:805 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:851 msgid "Feeds downloaded to %s" msgstr "Hírek letöltve: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:815 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:861 msgid "Could not download cover: %s" msgstr "Nem lehet borítót letölteni: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:827 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:873 msgid "Downloading cover from %s" msgstr "Borító letöltése a következő helyről: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:970 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:908 +msgid "Masthead image downloaded" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1124 msgid "Untitled Article" msgstr "Névtelen Cikk" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1041 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1195 msgid "Article downloaded: %s" msgstr "Cikk letöltve: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1052 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1206 msgid "Article download failed: %s" msgstr "A következő cikk letöltése nem sikerült: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1069 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 msgid "Fetching feed" msgstr "Hír letöltése" @@ -8199,7 +8479,7 @@ msgstr "Ütemezett" msgid "Custom" msgstr "Felhasználói" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:459 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:461 msgid "" "%prog URL\n" "\n" @@ -8208,24 +8488,24 @@ msgstr "" "%prog URL\n" "URL például a http://google.com" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:462 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:464 msgid "Base directory into which URL is saved. Default is %default" msgstr "Az az alapmappa, ahová az URL mentve lesz. Alapértelmezett: %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:465 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:467 msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " "s" msgstr "" "Az időtúllépés másodpercben a szerver válaszára várva. Alapérték: %default mp" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:468 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:470 msgid "" "Maximum number of levels to recurse i.e. depth of links to follow. Default " "%default" msgstr "A követendő linkmélység maximális értéke, Alapértelmezett %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:471 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:473 msgid "" "The maximum number of files to download. This only applies to files from tags. Default is %default" @@ -8233,7 +8513,7 @@ msgstr "" "A letöltendő fájlok maximális száma.Ez csak a HTML tag-ekben lévő " "fájlokra érvényes. Alapértelmezett: %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:473 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:475 msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" @@ -8241,7 +8521,7 @@ msgstr "" "A minimális időköz másodpercben az egymást követő letöltések között. " "Alapérték: %default mp." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:475 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:477 msgid "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." @@ -8249,7 +8529,7 @@ msgstr "" "A letölteni kívánt weboldal karakterkódolása. Alapbeállításként automatikus " "felismerés." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:477 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:479 msgid "" "Only links that match this regular expression will be followed. This option " "can be specified multiple times, in which case as long as a link matches any " @@ -8260,7 +8540,7 @@ msgstr "" "bármelyiknek, feldolgozásra kerül. Alapesetben minden link feldolgozásra " "kerül." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:479 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:481 msgid "" "Any link that matches this regular expression will be ignored. This option " "can be specified multiple times, in which case as long as any regexp matches " @@ -8269,15 +8549,10 @@ msgid "" "applied first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:481 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:483 msgid "Do not download CSS stylesheets." msgstr "Ne töltse le a CSS stíluslapokat." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:482 -msgid "Show detailed output information. Useful for debugging" -msgstr "" -"Részletes kimeneti információk megjelenítése. Hasznos hibakeresésnél." - #~ msgid "Path to the cover to be used for this book" #~ msgstr "Könyvborító elérési útja" @@ -8335,9 +8610,15 @@ msgstr "" #~ msgid "Set the publisher of this book." #~ msgstr "A könyv kiadója." +#~ msgid "Useful for debugging." +#~ msgstr "Hasznos hibakeresésnél." + #~ msgid "Output directory. Defaults to current directory." #~ msgstr "Célkönyvtár. Az alapértelmezett a jelenlegi könyvtár." +#~ msgid "Output file. Default is derived from input filename." +#~ msgstr "Célfájl. Alapértelmezés szerint a forrásfájl nevéből lesz generálva." + #~ msgid "" #~ "Set the author(s). Multiple authors should be set as a comma separated list. " #~ "Default: %default" @@ -9136,6 +9417,9 @@ msgstr "" #~ "

Felhasználói Kézikönyv

A Felhasználói Kézikönyv elérhető
online." +#~ msgid "Character encoding for input. Default is to auto detect." +#~ msgstr "Bemeneti karakterkódolás. Alapértelmezett: automatikus felismerés." + #~ msgid "Input character &encoding" #~ msgstr "Bemeneti karakterkódolás" @@ -9214,12 +9498,21 @@ msgstr "" #~ msgid "%d recipes" #~ msgstr "%d hírösszeállítás" +#~ msgid "Produce more human-readable XML output." +#~ msgstr "Még olvashatóbb XML kimenet létrehozása." + #~ msgid "Add a directory to the frequently used directories list" #~ msgstr "Mappa hozzáadása a leggyakrabban használt mappák listájához" #~ msgid "Customize %s" #~ msgstr "%s testreszabása" +#~ msgid "Usage: ebook-convert INFILE OUTFILE [OPTIONS..]" +#~ msgstr "Használat: ebook-convert INFILE OUTFILE [OPTIONS..]" + +#~ msgid "Options to control e-book conversion." +#~ msgstr "Az ebook konvertálás beállításai" + #~ msgid "" #~ "See the User Manual for more help" @@ -9259,6 +9552,13 @@ msgstr "" #~ msgid "The series number" #~ msgstr "Sorozaton belüli sorszám" +#~ msgid "" +#~ "This RTF file has a feature calibre does not support. Convert it to HTML " +#~ "first and then try it." +#~ msgstr "" +#~ "Ez az RTF fájl olyan tulajdonságokat tartalmaz, melyeket a calibre nem " +#~ "támogat. Konvertálja át először HTML-ba, majd próbálja újra." + #~ msgid "" #~ "

For example, to match all h2 tags that have class=\"chapter\", set tag to " #~ "h2, attribute to class and value to " @@ -9320,6 +9620,9 @@ msgstr "" #~ "Vigye a kurzort a megfelelő mező fölé és látni fogja a mezőhöz tartozó " #~ "kifejezés mintát.

" +#~ msgid "The author sort string" +#~ msgstr "Szerző rendezési forma" + #~ msgid "Must set account information" #~ msgstr "Fiókbeállítás szükséges" diff --git a/src/calibre/translations/ja.po b/src/calibre/translations/ja.po index e5102bc247..36d6fa2f95 100644 --- a/src/calibre/translations/ja.po +++ b/src/calibre/translations/ja.po @@ -7,21 +7,21 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2010-01-11 00:36+0000\n" -"PO-Revision-Date: 2010-01-10 23:24+0000\n" +"POT-Creation-Date: 2010-02-01 07:47+0000\n" +"PO-Revision-Date: 2010-02-02 15:01+0000\n" "Last-Translator: vbk \n" "Language-Team: Japanese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-01-12 04:45+0000\n" +"X-Launchpad-Export-Date: 2010-02-03 04:45+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:42 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 msgid "Does absolutely nothing" msgstr "まったく何もしません。(何も影響しません。)" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:45 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:46 #: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:72 #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:54 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:70 @@ -29,8 +29,8 @@ msgstr "まったく何もしません。(何も影響しません。)" #: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267 #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58 #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:203 -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:414 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:205 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:418 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:69 #: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:319 @@ -50,14 +50,13 @@ msgstr "まったく何もしません。(何も影響しません。)" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:104 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:106 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:171 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:329 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:444 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:894 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:39 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:28 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:22 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:48 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:49 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/topaz.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/txt.py:14 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:44 @@ -65,18 +64,18 @@ msgstr "まったく何もしません。(何も影響しません。)" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:79 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:121 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:155 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:597 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:787 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:609 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:799 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:51 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:896 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:901 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:961 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:898 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:903 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:969 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:137 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:139 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:105 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:171 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:172 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:173 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:174 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:39 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/palmdoc/writer.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ztxt/writer.py:27 @@ -97,29 +96,29 @@ msgstr "まったく何もしません。(何も影響しません。)" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:28 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:29 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:217 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:219 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:272 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:279 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:121 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:128 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:233 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:276 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:134 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:565 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:574 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:794 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:797 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:839 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:842 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:109 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:143 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:454 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:397 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:419 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:914 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1040 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:424 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:919 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1045 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:183 #: /home/kovid/work/calibre/src/calibre/library/cli.py:281 #: /home/kovid/work/calibre/src/calibre/library/database.py:913 @@ -127,13 +126,13 @@ msgstr "まったく何もしません。(何も影響しません。)" #: /home/kovid/work/calibre/src/calibre/library/database2.py:715 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1143 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1180 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1517 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1519 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1630 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1552 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1554 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1670 #: /home/kovid/work/calibre/src/calibre/library/server.py:645 -#: /home/kovid/work/calibre/src/calibre/library/server.py:717 -#: /home/kovid/work/calibre/src/calibre/library/server.py:764 -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:109 +#: /home/kovid/work/calibre/src/calibre/library/server.py:721 +#: /home/kovid/work/calibre/src/calibre/library/server.py:768 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:111 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:77 @@ -142,22 +141,26 @@ msgstr "まったく何もしません。(何も影響しません。)" msgid "Unknown" msgstr "不明です。" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:63 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:64 msgid "Base" msgstr "基礎" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:149 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:150 msgid "File type" msgstr "ファイル形式" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:183 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:184 msgid "Metadata reader" msgstr "メタデータ読み込み" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:214 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:215 msgid "Metadata writer" msgstr "メタデータ書き出し" +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:241 +msgid "Catalog generator" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:14 msgid "" "Follow all local links in an HTML file and create a ZIP file containing all " @@ -226,11 +229,11 @@ msgstr "%sファイルにメタデータを設定する" msgid "Set metadata from %s files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:99 +#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:102 msgid "Conversion Input" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:122 +#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:125 msgid "" "Specify the character encoding of the input document. If set this option " "will override any encoding declared by the document itself. Particularly " @@ -238,11 +241,11 @@ msgid "" "encoding declarations." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:225 +#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:228 msgid "Conversion Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:239 +#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:242 msgid "" "If specified, the output plugin will try to create output that is as human " "readable as possible. May not have any effect for some output plugins." @@ -376,7 +379,7 @@ msgstr "有効なプラグインが見つからない " msgid "Initialization of plugin %s failed with traceback:" msgstr "プラグイン%sの初期化に失敗してトレースバック" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:397 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:418 msgid "" " %prog options\n" "\n" @@ -384,29 +387,29 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:403 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:424 msgid "Add a plugin by specifying the path to the zip file containing it." msgstr "それが含まれているzipファイルへのパスを指定して、プラグインを追加します。" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:405 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:426 msgid "Remove a custom plugin by name. Has no effect on builtin plugins" msgstr "カスタムのプラグインを名前によって取り除きます。ビルトインのプラグインには影響はありません。" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:407 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:428 msgid "" "Customize plugin. Specify name of plugin and customization string separated " "by a comma." msgstr "プラグインをカスタマイズします。プラグインの名前とカスタマイズした文字列は、コンマで区切って指定します。" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:409 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:430 msgid "List all installed plugins" msgstr "インストールされたプラグインを一覧表示" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:411 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:432 msgid "Enable the named plugin" msgstr "名付けたプラグインを有効にする" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:413 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:434 msgid "Disable the named plugin" msgstr "名付けたプラグインを無効にする" @@ -414,7 +417,7 @@ msgstr "名付けたプラグインを無効にする" msgid "Communicate with Android phones." msgstr "Androidフォンと通信します。" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:25 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:26 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" @@ -424,11 +427,11 @@ msgstr "" msgid "Communicate with the Binatone Readme eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:12 +#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:13 msgid "Communicate with the Blackberry smart phone." msgstr "Blackberryスマートフォンと通信します。" -#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:13 +#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:14 #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:18 #: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:90 msgid "Kovid Goyal" @@ -438,7 +441,7 @@ msgstr "" msgid "Communicate with the Cybook Gen 3 / Opus eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:23 +#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:24 msgid "Communicate with the EB600 eBook reader." msgstr "" @@ -555,73 +558,73 @@ msgstr "" msgid "Transferring books to device..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:173 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:180 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:174 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:181 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:145 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:160 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:162 msgid "Removing books from device..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:208 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:175 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:209 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:177 msgid "Sending metadata to device..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:214 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:215 msgid "Communicate with the Sony PRS-600/700/900 eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:271 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:250 msgid "Unable to detect the %s disk drive. Try rebooting." msgstr "%sディスク・ドライブが検出できない場合は、再起動してください。" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:440 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:429 msgid "Unable to detect the %s mount point. Try rebooting." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:495 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:484 msgid "Unable to detect the %s disk drive." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:588 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:577 msgid "Could not find mount helper: %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:600 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:589 msgid "" "Unable to detect the %s disk drive. Your kernel is probably exporting a " "deprecated version of SYSFS." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:608 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:597 msgid "Unable to mount main memory (Error code: %d)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:745 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:747 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:734 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:736 msgid "The reader has no storage card in this slot." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:749 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:738 msgid "Selected slot: %s is not supported." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:782 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:771 msgid "There is insufficient free space in main memory" msgstr "メインメモリには十分な空きスペースがない" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:784 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:786 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:773 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:775 msgid "There is insufficient free space on the storage card" msgstr "記憶媒体のカードには十分な空きスペースがない" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:803 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:826 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:799 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:824 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:232 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1068 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1072 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1417 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1452 msgid "News" msgstr "ニュース" @@ -668,8 +671,8 @@ msgstr "" msgid "Adding books to device metadata listing..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:164 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:169 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:166 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:171 msgid "Removing books from device metadata listing..." msgstr "" @@ -753,8 +756,8 @@ msgstr "" msgid "Apply no processing to the image" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:438 -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:449 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:442 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:453 msgid "Page" msgstr "" @@ -1193,9 +1196,9 @@ msgid "" "disables the generation of this cover." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/fb2ml.py:143 -#: /home/kovid/work/calibre/src/calibre/ebooks/pml/pmlml.py:128 -#: /home/kovid/work/calibre/src/calibre/ebooks/rb/rbml.py:101 +#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/fb2ml.py:144 +#: /home/kovid/work/calibre/src/calibre/ebooks/pml/pmlml.py:129 +#: /home/kovid/work/calibre/src/calibre/ebooks/rb/rbml.py:102 #: /home/kovid/work/calibre/src/calibre/ebooks/txt/txtml.py:77 msgid "Table of Contents:" msgstr "" @@ -1504,20 +1507,20 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:358 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:45 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:69 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:56 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:163 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:394 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1106 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:399 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1111 msgid "Title" msgstr "書籍名" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:164 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:399 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1107 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1112 msgid "Author(s)" msgstr "著者" @@ -1534,18 +1537,18 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:362 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:71 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:64 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:360 #: /home/kovid/work/calibre/src/calibre/gui2/status.py:94 msgid "Comments" msgstr "コメント" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:370 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:170 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:344 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1050 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1110 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:349 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1055 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1115 #: /home/kovid/work/calibre/src/calibre/gui2/status.py:96 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 msgid "Tags" @@ -1553,7 +1556,7 @@ msgstr "タグ" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:372 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:171 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:365 #: /home/kovid/work/calibre/src/calibre/gui2/status.py:95 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 msgid "Series" @@ -1564,7 +1567,7 @@ msgid "Language" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:375 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1049 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1054 msgid "Timestamp" msgstr "" @@ -1578,7 +1581,7 @@ msgstr "発行日" msgid "Rights" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/amazon.py:77 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/amazon.py:78 msgid "EDITORIAL REVIEW" msgstr "" @@ -1643,27 +1646,27 @@ msgstr "" msgid "Set the BookID in LRF files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:144 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:148 msgid "No file specified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:159 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:163 msgid "Original metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:176 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:180 msgid "Changed metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:188 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:192 msgid "OPF created in" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:194 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:198 msgid "Cover saved to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:196 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:200 msgid "No cover found" msgstr "" @@ -1762,7 +1765,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1083 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1328 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1336 msgid "Cover" msgstr "" @@ -1789,101 +1792,77 @@ msgstr "" msgid "Disable compression of the file contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:102 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:105 msgid "All articles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1329 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1337 msgid "Title Page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1330 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1338 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:53 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:188 msgid "Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1331 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1339 msgid "Index" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1332 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1340 msgid "Glossary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1333 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1341 msgid "Acknowledgements" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1334 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1342 msgid "Bibliography" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1335 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1343 msgid "Colophon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1336 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1344 msgid "Copyright" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1337 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1345 msgid "Dedication" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1338 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1346 msgid "Epigraph" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1339 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1347 msgid "Foreword" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1340 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1348 msgid "List of Illustrations" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1341 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1349 msgid "List of Tables" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1342 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1350 msgid "Notes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1343 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1351 msgid "Preface" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1344 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1352 msgid "Main Text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:53 -msgid "Options to control e-book conversion." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:60 -msgid "Character encoding for input. Default is to auto detect." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:62 -msgid "Output file. Default is derived from input filename." -msgstr "出力ファイル名(デフォルトは入力ファイル名)" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:64 -msgid "Produce more human-readable XML output." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:66 -msgid "Useful for debugging." -msgstr "デバッグに有用" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:71 -msgid "Usage: ebook-convert INFILE OUTFILE [OPTIONS..]" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:39 msgid "%s format books are not supported" msgstr "%s フォーマットは対応してません" @@ -2173,10 +2152,11 @@ msgid "" "Specify the character encoding of the output document. The default is cp1252." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:183 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:199 msgid "" "This RTF file has a feature calibre does not support. Convert it to HTML " -"first and then try it." +"first and then try it.\n" +"%s" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:23 @@ -2228,206 +2208,196 @@ msgid "" "allows max-line-length to be below the minimum" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:29 msgid "Send file to storage card instead of main memory by default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:29 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:31 msgid "Confirm before deleting" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:31 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:33 msgid "Toolbar icon size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:33 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:35 msgid "Show button labels in the toolbar" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:37 msgid "Main window geometry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:37 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:39 msgid "Notify when a new version is available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:41 msgid "Use Roman numerals for series number" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:41 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:43 msgid "Sort tags list by popularity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:45 msgid "Number of covers to show in the cover browsing mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:47 msgid "Defaults for conversion to LRF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:49 msgid "Options for the LRF ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:52 msgid "Formats that are viewed using the internal viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 msgid "Columns to be displayed in the book list" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 msgid "Automatically launch content server on application startup" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 msgid "Oldest news kept in database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:57 msgid "Show system tray icon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:59 msgid "Upload downloaded news to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:61 msgid "Delete books from library after uploading to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:63 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:63 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:65 msgid "Disable notifications from the system tray icon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:67 msgid "Default action to perform when send to device button is clicked" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:89 msgid "Maximum number of waiting worker processes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:91 msgid "Download social metadata (tags/rating/etc.)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:93 +msgid "Overwrite author and title with new metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:95 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:439 msgid "Copied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:167 msgid "Copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:167 msgid "Copy to Clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:394 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:398 msgid "Choose Files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:56 msgid "Searching in" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:167 msgid "Adding..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:180 msgid "Searching in all sub-directories..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:193 msgid "Path error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:194 msgid "The specified directory could not be processed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:197 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:495 msgid "No books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:199 msgid "No books found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:265 msgid "Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:277 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:278 msgid "Adding failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:279 msgid "" "The add books process seems to have hung. Try restarting calibre and adding " "the books in smaller increments, until you find the problem book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:291 msgid "Duplicates found!" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:292 msgid "" "Books with the same title as the following already exist in the database. " "Add them anyway?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:295 msgid "Adding duplicates..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:356 msgid "Saving..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:408 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:409 msgid "Saved" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:36 -msgid "" -"For settings that cannot be specified in this dialog, use the values saved " -"in a previous conversion (if they exist) instead of using the defaults " -"specified in the Preferences" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:67 -msgid "Bulk Convert" -msgstr "まとめて変換" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:80 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 -msgid "Options specific to the output format." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:15 -msgid "Comic Input" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:16 +msgid "CSV/XML Options" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:13 @@ -2444,14 +2414,22 @@ msgstr "" msgid "Options specific to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:13 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input.py:13 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:13 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:13 -msgid "input" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:18 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:20 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output.py:18 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:17 +msgid "output" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:36 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:27 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:49 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:41 @@ -2481,6 +2459,86 @@ msgstr "" msgid "Form" msgstr "フォーム" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:37 +msgid "Fields to include in output:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:17 +msgid "E-book options" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:271 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1416 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1430 +msgid "Catalog" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:68 +msgid "'Don't include this book' tag:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:69 +msgid "'Mark this book as read' tag:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:70 +msgid "Additional note tag prefix:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:71 +msgid "Sort numbers as text" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:72 +msgid "Regex pattern describing tags to exclude as genres:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:73 +msgid "Special marker tags for catalog generation" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:74 +msgid "" +"Regex tips:\n" +"- The default regex of '\\[[\\w]*\\]' ignores tags of the form '[tag]', " +"e.g., '[Amazon Freebie]'\n" +"- A regex of '.' ignores all tags, generating no genre categories in the " +"catalog" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:28 +msgid "Tab template for catalog.ui" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:36 +msgid "" +"For settings that cannot be specified in this dialog, use the values saved " +"in a previous conversion (if they exist) instead of using the defaults " +"specified in the Preferences" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:67 +msgid "Bulk Convert" +msgstr "まとめて変換" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 +msgid "Options specific to the output format." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:15 +msgid "Comic Input" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:13 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input.py:13 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:13 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:13 +msgid "input" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:94 msgid "&Number of Colors:" @@ -2576,12 +2634,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:570 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:574 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:357 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376 @@ -2617,17 +2675,6 @@ msgstr "" msgid "EPUB Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:20 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:16 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output.py:18 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:17 -msgid "output" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:42 msgid "Do not &split on page breaks" msgstr "" @@ -2924,7 +2971,7 @@ msgid "Change the title of this book" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:173 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:140 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:358 msgid "&Author(s): " msgstr "作者(&A): " @@ -2940,7 +2987,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:149 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367 msgid "&Publisher: " msgstr "発行者(&P): " @@ -2951,7 +2998,7 @@ msgid "Ta&gs: " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:178 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:151 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:369 msgid "" "Tags categorize the book. This is particularly useful while searching. " @@ -2959,15 +3006,15 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:179 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:156 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:372 msgid "&Series:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:181 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:154 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:158 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:373 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374 msgid "List of known series. You can add new series." @@ -3089,7 +3136,7 @@ msgid "RB Output" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1551 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1639 msgid "Choose the format to view" msgstr "" @@ -3130,7 +3177,7 @@ msgid "Options specific to the input format." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:64 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:48 msgid "Dialog" @@ -3293,8 +3340,8 @@ msgid "Force maximum line lenght" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:50 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:66 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:41 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:49 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:57 @@ -3381,197 +3428,203 @@ msgid "" "href=\"http://calibre-ebook.com/user_manual/xpath.html\">XPath Tutorial." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:39 -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:38 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:135 msgid "No details available." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:120 msgid "Device no longer connected." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:208 msgid "Get device information" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:219 msgid "Get list of books on device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:228 msgid "Send metadata to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:237 msgid "Upload %d books to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:266 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:252 msgid "Delete books from device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:269 msgid "Download books from device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:279 msgid "View book on device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:286 msgid "and delete from library" -msgstr "" +msgstr "後、ライブラリから削除" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:307 msgid "Set default send to device action" msgstr "既定のデバイス送信処理を設定" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:326 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:333 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:335 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:337 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:323 msgid "Email to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:348 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:341 msgid "Send to main memory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:350 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:336 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:343 msgid "Send to storage card A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:352 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:338 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:345 msgid "Send to storage card B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:348 msgid "Send specific format to main memory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:350 msgid "Send specific format to storage card A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:366 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:352 msgid "Send specific format to storage card B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:496 msgid "selected to send" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:501 msgid "Choose format to send to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:508 msgid "No device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:523 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:509 msgid "Cannot send: No device is connected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:526 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:512 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:516 msgid "No card" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:527 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:513 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:517 msgid "Cannot send: Device has no storage card" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:572 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:558 msgid "E-book:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:575 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:561 msgid "Attached, you will find the e-book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:576 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:562 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:177 msgid "by" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:577 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:563 msgid "in the %s format." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:590 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:576 msgid "Sending email to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:620 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:627 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:720 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:836 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:843 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:606 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:613 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:705 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:765 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:888 msgid "No suitable formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:621 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:607 msgid "Auto convert the following books before sending via email?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:628 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:614 msgid "" "Could not email the following books as no suitable formats were found:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:646 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:632 msgid "Failed to email books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:647 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:633 msgid "Failed to email the following books:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:651 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:637 msgid "Sent by email:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:678 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:664 msgid "News:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:679 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:665 msgid "Attached is the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:690 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:676 msgid "Sent news to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:721 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:837 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:766 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:882 msgid "Auto convert the following books before uploading to the device?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:751 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:735 +msgid "Sending catalogs to device." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:796 msgid "Sending news to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:805 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:850 msgid "Sending books to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:844 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:889 msgid "" "Could not upload the following books to the device, as no suitable formats " "were found. Convert the book(s) to a format supported by your device first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:892 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:937 msgid "No space on device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:893 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:938 msgid "" "

Cannot upload books to device there is no more free space available " msgstr "" @@ -3588,34 +3641,68 @@ msgstr "" msgid "Save &template:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:85 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:351 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1045 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1050 #: /home/kovid/work/calibre/src/calibre/gui2/status.py:92 msgid "Path" msgstr "パス名" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:87 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:89 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:216 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:355 #: /home/kovid/work/calibre/src/calibre/gui2/status.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 msgid "Formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:68 +msgid "Fit &cover to view" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:69 msgid "&Previous" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:70 msgid "&Next" msgstr "次へ(&N)" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:37 +msgid "My Books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:264 +msgid "Generate catalog" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:68 +msgid "Catalog &format:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:69 +msgid "" +"Catalog &title (existing catalog with the same title will be replaced):" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:70 +msgid "&Send catalog to device automatically" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:71 +msgid "Catalog options" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:72 +msgid "Generate catalog for {0} books" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:40 msgid "Choose Format" msgstr "" @@ -3712,127 +3799,127 @@ msgstr "" msgid "new email address" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:477 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:821 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:478 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:823 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1224 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1248 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 msgid "Error" msgstr "エラー" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:478 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:479 msgid "Failed to install command line tools." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:481 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:482 msgid "Command line tools installed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:482 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:483 msgid "Command line tools installed in" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:483 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:484 msgid "" "If you move calibre.app, you have to re-install the command line tools." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:534 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:535 msgid "No valid plugin path" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:536 msgid "%s is not a valid plugin path" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:539 msgid "Choose plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551 msgid "Plugin cannot be disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:552 msgid "The plugin: %s cannot be disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:561 msgid "Plugin not customizable" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:561 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:562 msgid "Plugin: %s does not need customization" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:569 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:570 msgid "Customize" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:608 msgid "Cannot remove builtin plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:609 msgid " cannot be removed. It is a builtin plugin. Try disabling it instead." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:641 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:642 msgid "Error log:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:648 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:649 msgid "Access log:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:676 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:641 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:677 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:659 msgid "Failed to start content server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:700 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:701 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:550 msgid "Select location for books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:708 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:709 msgid "Invalid size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:709 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:710 msgid "The size %s is invalid. must be of the form widthxheight" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:762 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:767 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:764 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:769 msgid "Invalid database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:763 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:765 msgid "Invalid database location " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:764 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:766 msgid "
Must be a directory." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:768 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:770 msgid "Invalid database location.
Cannot write to " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:802 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:804 msgid "Checking database integrity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:822 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:824 msgid "Failed to check database integrity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:827 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:829 msgid "Some inconsistencies found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:828 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:830 msgid "" "The following books had formats listed in the database that are not actually " "available. The entries for the formats have been removed. You should check " @@ -3926,252 +4013,256 @@ msgstr "" msgid "Sending to &device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504 #: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:366 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 msgid "Preferences" msgstr "基本設定" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 msgid "" "&Location of ebooks (The ebooks are stored in folders sorted by author and " "metadata is stored in the file metadata.db)" msgstr "電子書籍の場所(&L) (電子書籍は著者別のフォルダに格納され、メタデータは metadata.db に格納されます。)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:503 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 msgid "Browse for the new database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 msgid "Show notification when &new version is available" msgstr "最新のバージョンが利用可能なときに通知する(&N)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 msgid "Download &social metadata (tags/ratings/etc.) by default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 +msgid "Overwrite & author/title by default when fetching metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 msgid "Default network &timeout:" msgstr "既定のネットワーク・タイムアウト(&T):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 msgid "" "Set the default timeout for network fetches (i.e. anytime we go out to the " "internet to get information)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 msgid " seconds" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 msgid "Choose &language (requires restart):" msgstr "言語を選択(&L) (再起動が必要です):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 msgid "Normal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 msgid "High" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 msgid "Low" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 msgid "Job &priority:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 msgid "Preferred &output format:" msgstr "既定の出力フォーマット(&O) :" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 msgid "Preferred &input format order:" msgstr "入力フォーマットの優先順位(&I):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 msgid "Use &Roman numerals for series number" msgstr "シリーズ番号にローマ数字を使用(&R)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 msgid "Enable system &tray icon (needs restart)" msgstr "システムトレイアイコンを有効にする(&T) (再起動が必要)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 msgid "Show ¬ifications in system tray" msgstr "システムトレイの通知を有効にする(&N)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 msgid "Show cover &browser in a separate window (needs restart)" msgstr "表紙ブラウズを別ウインドウで行う(&B) (再起動が必要)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 msgid "Search as you type" msgstr "入力中に検索する" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 msgid "Automatically send downloaded &news to ebook reader" msgstr "ダウンロードしたニュースを電子書籍リーダーに自動的に転送する(&N)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 msgid "&Delete news from library when it is automatically sent to reader" msgstr "ニュースが自動的にリーダーに転送されるとき、ライブラリから削除する(&D)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 msgid "&Number of covers to show in browse mode (needs restart):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 msgid "Toolbar" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 msgid "Large" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 msgid "Medium" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 msgid "Small" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 msgid "&Button size in toolbar" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 msgid "Show &text in toolbar buttons" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 msgid "Select visible &columns in library view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 msgid "Use internal &viewer for:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 msgid "Add an email address to which to send books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 msgid "&Add email" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 msgid "Make &default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 msgid "&Remove email" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 msgid "calibre can send your books to you (or your reader) by email" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 msgid "&Maximum number of waiting worker processes (needs restart):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 msgid "&Check database integrity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 msgid "&Install command line tools" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549 msgid "Open calibre &configuration directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 msgid "Limit the max. simultaneous jobs to the available CPU &cores" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 msgid "Debug &device detection" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 msgid "" "calibre contains a network server that allows you to access your book " "collection using a browser from anywhere in the world. Any changes to the " "settings will only take effect after a server restart." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553 msgid "Server &port:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117 msgid "&Username:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119 msgid "&Password:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 msgid "" "If you leave the password blank, anyone will be able to access your book " "collection using the web interface." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558 msgid "Max. &cover size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212 msgid "&Show password" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560 msgid "Max. &OPDS items per query:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561 msgid "&Start Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:562 msgid "St&op Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:563 msgid "&Test Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:564 msgid "Run server &automatically on startup" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:565 msgid "View &server logs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:566 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46 msgid "" "

Remember to leave calibre running as the server only runs as long as " @@ -4186,33 +4277,33 @@ msgstr "" "http://myhostname:8080 を登録してください。myhostname " "はcalibreが稼働しているコンピュータのホスト名、もしくはIPアドレスです。" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:564 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:568 msgid "" "Here you can customize the behavior of Calibre by controlling what plugins " "it uses." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:565 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:569 msgid "Enable/&Disable plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:566 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:570 msgid "&Customize plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:567 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:571 msgid "&Remove plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:568 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:572 msgid "Add new plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:569 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:573 msgid "Plugin &file:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:571 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:575 msgid "&Add" msgstr "" @@ -4277,40 +4368,40 @@ msgstr "" msgid "ISBN" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:151 msgid "Finding metadata..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:164 msgid "Could not find metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:165 msgid "The metadata download seems to have stalled. Try again later." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:174 msgid "Warning" msgstr "警告" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:175 msgid "Could not fetch metadata from:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:179 msgid "No metadata found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:180 msgid "" "No metadata found, try adjusting the title and author or the ISBN key." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:84 msgid "Fetch metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85 msgid "" "

calibre can find metadata for your books from two locations: Google " "Books and isbndb.com.

To use isbndb.com you must sign up for a " @@ -4318,27 +4409,31 @@ msgid "" "below." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:86 msgid "&Access Key:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87 msgid "Fetch" msgstr "取得" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:88 msgid "Matches" msgstr "該当箇所" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:89 msgid "" "Select the book that most closely matches your copy from the list below" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:90 msgid "Download &social metadata (tags/rating/etc.) for the selected book" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:91 +msgid "Overwrite &author/title with author/title of selected book" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/job_view_ui.py:37 msgid "Details of job" msgstr "" @@ -4359,71 +4454,75 @@ msgstr "" msgid "Stop &all jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:138 msgid "Edit Meta information" msgstr "メタ情報を編集" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:353 msgid "Meta information" msgstr "メタ情報" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:141 msgid "A&utomatically set author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:142 msgid "Author s&ort: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:143 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360 msgid "" "Specify how the author(s) of this book should be sorted. For example Charles " "Dickens should be sorted as Dickens, Charles." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:144 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:363 msgid "&Rating:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:143 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:364 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:365 msgid "Rating of this book. 0-5 stars" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:147 +msgid "No change" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:366 msgid " stars" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:150 msgid "Add ta&gs: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:149 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:370 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371 msgid "Open Tag Editor" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:154 msgid "&Remove tags:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:155 msgid "Comma separated list of tags to remove from the books. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:159 msgid "Remove &format:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:160 msgid "&Swap title and author" msgstr "" @@ -4436,109 +4535,109 @@ msgid "Choose formats for " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:137 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:985 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1004 msgid "Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:165 msgid "No permission" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:166 msgid "You do not have permission to read the following files:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:190 msgid "No format selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:201 msgid "Could not read metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:202 msgid "Could not read metadata from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:245 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:247 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:253 msgid "Could not read cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:246 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:248 msgid "Could not read cover from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:252 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:254 msgid "The cover in the %s format is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:291 msgid "Abort the editing of all remaining books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:404 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:409 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:407 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:412 msgid "This ISBN number is valid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:412 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:415 msgid "This ISBN number is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:511 msgid "Downloading cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:520 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:525 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:523 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:528 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:534 msgid "Cannot fetch cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:521 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:535 msgid "Could not fetch cover.
" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:525 msgid "The download timed out." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:529 msgid "Could not find cover for this book. Try specifying the ISBN first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:541 msgid "Bad cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:542 msgid "The cover is not a valid picture" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:569 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:572 msgid "There were errors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:570 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:573 msgid "There were errors downloading social metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:594 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:598 msgid "Cannot fetch metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:595 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:599 msgid "You must specify at least one of ISBN, Title, Authors or Publisher" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:657 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:664 msgid "Permission denied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:658 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:665 msgid "Could not open %s. Is it being used by another program?" msgstr "" @@ -4824,11 +4923,11 @@ msgstr "" msgid "Choose formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:66 msgid "Are your sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:67 msgid "" "The following tags are used by one or more books. Are you certain you want " "to delete them?" @@ -5208,12 +5307,12 @@ msgid " - Jobs" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/library.py:165 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1108 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1113 msgid "Size (MB)" msgstr "サイズ (MB)" #: /home/kovid/work/calibre/src/calibre/gui2/library.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1109 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1114 msgid "Date" msgstr "日付" @@ -5221,35 +5320,35 @@ msgstr "日付" msgid "Rating" msgstr "評価" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:343 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:349 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:348 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:354 -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:72 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:410 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:440 msgid "None" msgstr "なし" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:365 msgid "Book %s of %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:872 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:877 msgid "Not allowed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:873 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:878 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1044 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1049 msgid "Format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1098 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1103 msgid "Double click to edit me

" msgstr "" @@ -5325,52 +5424,52 @@ msgstr "" msgid "Configure" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:24 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:25 msgid "Use the library located at the specified path." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:27 msgid "Start minimized to system tray." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:29 msgid "Log debugging information to console" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:30 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:31 msgid "Do not check for updates" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:83 msgid "If you are sure it is not running" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:85 msgid "Cannot Start " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:86 msgid "%s is already running." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:89 msgid "may be running in the system tray, in the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:91 msgid "upper right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:93 msgid "lower right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:96 msgid "try rebooting your computer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:95 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:110 msgid "try deleting the file" msgstr "" @@ -5526,11 +5625,11 @@ msgstr "" msgid "ERROR: Unhandled exception" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:89 msgid "Book has neither title nor ISBN" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:115 msgid "No matches found for this book" msgstr "" @@ -5538,37 +5637,37 @@ msgstr "" msgid "Search" msgstr "検索" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:58 msgid "Press a key..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:79 msgid "Already assigned" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:81 msgid "already assigned to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:121 -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 msgid " or " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:68 msgid "&Default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:135 msgid "Customize shortcuts for" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 msgid "Keys" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:225 msgid "Double click to change" msgstr "" @@ -5661,11 +5760,11 @@ msgstr "" msgid "Fetch news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:276 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:249 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:277 msgid "" "The following books have already been converted to %s format. Do you wish to " "reconvert them?" @@ -5752,7 +5851,7 @@ msgid "Save to disk in a single directory" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1659 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1747 msgid "Save only %s format to disk" msgstr "" @@ -5784,50 +5883,58 @@ msgstr "個別に変換" msgid "Bulk convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:372 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:360 +msgid "Create catalog of books in your calibre library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:376 msgid "Run welcome wizard" msgstr "ウェルカム・ウィザードを開始" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:408 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:412 msgid "Similar books..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:468 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:472 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:473 msgid "Bad database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:471 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:475 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:558 msgid "Calibre Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:481 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1815 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:485 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1903 msgid "Choose a location for your ebook library." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:685 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:523 +msgid "Calibre Quick Start Guide" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:703 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:833 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:851 msgid "Device: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:835 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:853 msgid " detected." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:859 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:877 msgid "Connected " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:871 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:889 msgid "Device database corrupted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:872 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:890 msgid "" "\n" "

The database of books on the reader is corrupted. Try the " @@ -5843,195 +5950,216 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:933 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:952 msgid "How many empty books?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:934 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:953 msgid "How many empty books should be added?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:978 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1025 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:997 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1043 msgid "Uploading books to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:986 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1005 msgid "EPUB Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:987 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1006 msgid "LRF Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:988 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1007 msgid "HTML Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:989 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1008 msgid "LIT Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:990 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1009 msgid "MOBI Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:991 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1010 msgid "Text books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:992 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1011 msgid "PDF Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:993 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1012 msgid "Comics" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:994 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1013 msgid "Archives" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:998 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1017 msgid "Supported books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1034 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1054 msgid "Failed to read metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1035 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1055 msgid "Failed to read metadata from the following" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1054 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1074 msgid "Cannot delete" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1057 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1545 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1564 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1077 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1633 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1652 msgid "No book selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1067 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1087 msgid "Choose formats to be deleted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1083 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1105 msgid "Choose formats not to be deleted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1119 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1143 msgid "" "The selected books will be permanently deleted and the files removed " "from your computer. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1146 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1170 msgid "Deleting books from device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1177 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1201 msgid "Cannot download metadata" msgstr "メタデータをダウンロードできません" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1178 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1235 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1268 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1293 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1406 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1202 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1259 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1292 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1317 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1376 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1489 msgid "No books selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1193 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217 msgid "social metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1195 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 msgid "covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1195 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 msgid "metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1197 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1221 msgid "Downloading %s for %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1243 msgid "Failed to download some metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1220 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1244 msgid "Failed to download metadata for the following:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1223 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1247 msgid "Failed to download metadata:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1234 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1267 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1258 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1291 msgid "Cannot edit metadata" msgstr "メタデータを編集できません" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1292 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1316 msgid "Cannot save to disk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1295 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1319 msgid "Choose destination directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1322 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1346 msgid "Error while saving" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1323 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1347 msgid "There was an error while saving." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1330 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1331 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1354 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1355 msgid "Could not save some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1332 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1356 msgid "Click the show details button to see which ones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1351 -msgid "Fetching news from " +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1377 +msgid "No books selected to generate catalog for" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1365 -msgid " fetched." +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1394 +msgid "Generating %s catalog..." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1405 +msgid "Catalog generated." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1408 +msgid "Export Catalog Directory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1409 +msgid "Select destination for %s.%s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1423 +msgid "Fetching news from " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1437 +msgid " fetched." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1488 msgid "Cannot convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1434 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1517 msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1545 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1601 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1633 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1689 msgid "Cannot view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1563 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1651 msgid "Cannot open folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1585 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1673 msgid "Multiple Books Selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1586 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1674 msgid "" "You are attempting to open %d books. Opening too many books at once can be " "slow and have a negative effect on the responsiveness of your computer. Once " @@ -6039,101 +6167,101 @@ msgid "" "continue?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1602 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1690 msgid "%s has no available formats." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1643 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1731 msgid "Cannot configure" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1644 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1732 msgid "Cannot configure while there are running jobs." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1687 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1775 msgid "No detailed info available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1688 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1776 msgid "No detailed information is available for books on the device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1743 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1831 msgid "Error talking to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1744 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1832 msgid "" "There was a temporary error talking to the device. Please unplug and " "reconnect the device and or reboot." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1767 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1795 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1855 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1883 msgid "Conversion Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1768 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1856 msgid "" "

Could not convert: %s

It is a DRMed book. You must " "first remove the DRM using third party tools." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1781 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1869 msgid "Recipe Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1796 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1884 msgid "Failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1824 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1912 msgid "Invalid library location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1825 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1913 msgid "Could not access %s. Using %s as the library." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1875 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1963 msgid "" "is the result of the efforts of many volunteers from all over the world. If " "you find it useful, please consider donating to support its development." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1900 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1988 msgid "There are active jobs. Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1903 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1991 msgid "" " is communicating with the device!
\n" " Quitting may cause corruption on the device.
\n" " Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1907 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1995 msgid "WARNING: Active jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1959 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2047 msgid "" "will keep running in the system tray. To close it, choose Quit in the " "context menu of the system tray." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1978 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2066 msgid "" "Latest version: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1986 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2074 msgid "Update available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1987 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2075 msgid "" "%s has been updated to version %s. See the new features. Visit the download page?" @@ -6195,91 +6323,95 @@ msgstr "" msgid "Import" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:154 msgid "Configure Ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:155 msgid "&Font options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:156 msgid "Se&rif family:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:157 msgid "&Sans family:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:158 msgid "&Monospace family:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:159 msgid "&Default font size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:157 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:159 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:168 msgid " px" msgstr " ピクセル" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:161 msgid "Monospace &font size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:163 msgid "S&tandard font:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:164 msgid "Serif" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:165 msgid "Sans-serif" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:166 msgid "Monospace" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:167 msgid "Remember last used &window size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:169 msgid "Maximum &view width:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:170 msgid "H&yphenate (break line in the middle of large words)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:171 msgid "" "The default language to use for hyphenation rules. If the book does not " "specify a language, this will be used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:172 msgid "Default &language for hyphenation:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:173 +msgid "&Resize images larger than the viewer window (needs restart)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:174 msgid "&User stylesheet" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:175 msgid "&General" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:176 msgid "Double click to change a keyboard shortcut" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:177 msgid "&Keyboard shortcuts" msgstr "" @@ -6297,7 +6429,7 @@ msgid "Remember last used window size" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 msgid "" "Set the user CSS stylesheet. This can be used to customize the look of all " "books." @@ -6307,43 +6439,47 @@ msgstr "" msgid "Maximum width of the viewer window, in pixels." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:45 -msgid "Hyphenate text" +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:46 +msgid "Resize images larger than the viewer window to fit inside it" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 -msgid "Default language for hyphenation rules" +msgid "Hyphenate text" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 -msgid "Font options" +msgid "Default language for hyphenation rules" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 -msgid "The serif font family" +msgid "Font options" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:53 -msgid "The sans-serif font family" +msgid "The serif font family" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 -msgid "The monospaced font family" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:56 -msgid "The standard font size in px" +msgid "The sans-serif font family" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:57 -msgid "The monospaced font size in px" +msgid "The monospaced font family" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:58 +msgid "The standard font size in px" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 +msgid "The monospaced font size in px" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 msgid "The standard font type" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:408 msgid "&Lookup in dictionary" msgstr "" @@ -6548,6 +6684,14 @@ msgid "Print eBook" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:196 +msgid "Copy Image" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:197 +msgid "Paste Image" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:226 msgid "" "Library\n" "%d\n" @@ -6557,60 +6701,60 @@ msgstr "" "%d\n" "書籍あります" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:227 msgid "" "Reader\n" "%s\n" "available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:228 msgid "" "Card A\n" "%s\n" "available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:229 msgid "" "Card B\n" "%s\n" "available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:234 msgid "Click to see the books available on your computer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:235 msgid "Click to see the books in the main memory of your reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:236 msgid "Click to see the books on storage card A in your reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:207 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:237 msgid "Click to see the books on storage card B in your reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:500 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:530 msgid "Change Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:531 msgid "Upper Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:532 msgid "Lower Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:503 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:533 msgid "Swap Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:504 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:534 msgid "Title Case" msgstr "" @@ -6657,7 +6801,7 @@ msgstr "" msgid "Could not move library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:624 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:625 msgid "welcome wizard" msgstr "" @@ -6924,6 +7068,88 @@ msgid "" "WordPlayer, etc. integration." msgstr "" +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:35 +msgid "" +"The fields to output when cataloging books in the database. Should be a " +"comma-separated list of fields.\n" +"Available fields: %s.\n" +"Default: '%%default'\n" +"Applies to: CSV, XML output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:44 +msgid "" +"Output field to sort on.\n" +"Available fields: author_sort, id, rating, size, timestamp, title.\n" +"Default: '%default'\n" +"Applies to: CSV, XML output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:253 +msgid "" +"Title of generated catalog used as title in metadata.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:259 +msgid "" +"Save the output from different stages of the conversion pipeline to the " +"specified directory. Useful if you are unsure at which stage of the " +"conversion process a bug is occurring.\n" +"Default: '%default'None\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:268 +msgid "" +"Regex describing tags to exclude as genres.\n" +"Default: '%default' excludes bracketed tags, e.g. '[]'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:273 +msgid "" +"Comma-separated list of tag words indicating book should be excluded from " +"output. Case-insensitive.\n" +"--exclude-tags=skip will match 'skip this book' and 'Skip will like this'.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:280 +msgid "" +"Tag prefix for user notes, e.g. '*Jeff might enjoy reading this'.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:286 +msgid "" +"Sort titles with leading numbers as text, e.g.,\n" +"'2001: A Space Odyssey' sorts as \n" +"'Two Thousand One: A Space Odyssey'.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:292 +msgid "" +"Specifies the output profile. In some cases, an output profile is required " +"to optimize the catalog for the device. For example, 'kindle' or " +"'kindle_dx' creates a structured Table of Contents with Sections and " +"Articles.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:298 +msgid "" +"Tag indicating book has been read.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/library/cli.py:121 msgid "" "Path to the calibre library. Default is to use the path stored in the " @@ -7139,7 +7365,41 @@ msgstr "" msgid "You must specify some ids or the %s option" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:591 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:634 +msgid "" +"\n" +" %prog catalog /path/to/destination.(csv|epub|mobi|xml ...) [options]\n" +"\n" +" Export a catalog in format specified by path/to/destination extension.\n" +" Options control how entries are displayed in the generated catalog " +"ouput.\n" +" " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:648 +msgid "" +"Comma-separated list of database IDs to catalog.\n" +"If declared, --search is ignored.\n" +"Default: all" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:652 +msgid "" +"Filter the results by the search query. For the format of the search query, " +"please see the search-related documentation in the User Manual.\n" +"Default: no filtering" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:658 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:484 +msgid "Show detailed output information. Useful for debugging" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:671 +msgid "Error: You must specify a catalog output file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:687 msgid "" "%%prog command [options] [arguments]\n" "\n" @@ -7151,27 +7411,27 @@ msgid "" "For help on an individual command: %%prog command --help\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1656 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1696 msgid "

Migrating old database to ebook library in %s

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1685 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1725 msgid "Copying %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1702 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1742 msgid "Compacting database" msgstr "データベースのコンパクト化" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1795 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1835 msgid "Checking SQL integrity..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1832 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1872 msgid "Checking for missing files." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1854 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1894 msgid "Checked id" msgstr "" @@ -7184,74 +7444,76 @@ msgid "The authors" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:26 -msgid "The author sort string" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:27 -msgid "The tags" +msgid "" +"The author sort string. To use only the first letter of the name use " +"{author_sort[0]}" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:28 -msgid "The series" +msgid "The tags" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:29 -msgid "The series number. To get leading zeros use {series_index:0>3s}" +msgid "The series" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:30 -msgid "The rating" +msgid "The series number. To get leading zeros use {series_index:0>3s}" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:31 -msgid "The ISBN" +msgid "The rating" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:32 -msgid "The publisher" +msgid "The ISBN" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:33 -msgid "The date" +msgid "The publisher" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:34 -msgid "The published date" +msgid "The date" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:35 +msgid "The published date" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:36 msgid "The calibre internal id" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:45 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:46 msgid "Options to control saving to disk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:51 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:52 msgid "" "Normally, calibre will update the metadata in the saved files from what is " "in the calibre library. Makes saving to disk slower." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:54 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:55 msgid "" "Normally, calibre will write the metadata into a separate OPF file along " "with the actual e-book files." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:57 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:58 msgid "" "Normally, calibre will save the cover in a separate file along with the " "actual e-book file(s)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:60 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:61 msgid "" "Comma separated list of formats to save for each book. By default all " "available books are saved." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:63 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:64 msgid "" "The template to control the filename and directory structure of the saved " "files. Default is \"%s\" which will save books into a per-author " @@ -7259,7 +7521,7 @@ msgid "" "are: {%s}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:68 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:69 msgid "" "The template to control the filename and directory structure of files sent " "to the device. Default is \"%s\" which will save books into a per-author " @@ -7267,7 +7529,7 @@ msgid "" "are: {%s}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:75 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:76 msgid "" "Normally, calibre will convert all non English characters into English " "equivalents for the file names. WARNING: If you turn this off, you may " @@ -7275,21 +7537,21 @@ msgid "" "saving to supports unicode." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:81 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:82 msgid "" "The format in which to display dates. %d - day, %b - month, %Y - year. " "Default is: %b, %Y" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:84 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:85 msgid "Convert paths to lowercase." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:86 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:87 msgid "Replace whitespace with underscores." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:245 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:256 msgid "Requested formats not available" msgstr "" @@ -7297,14 +7559,14 @@ msgstr "" msgid "Password to access your calibre library. Username is " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server.py:856 +#: /home/kovid/work/calibre/src/calibre/library/server.py:860 msgid "" "[options]\n" "\n" "Start the calibre content server." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server.py:858 +#: /home/kovid/work/calibre/src/calibre/library/server.py:862 msgid "Path to the library folder to serve with the content server" msgstr "" @@ -7322,47 +7584,47 @@ msgid "" "arguments in quotation marks." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:631 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:650 msgid "Path to the database in which books are stored" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:633 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:652 msgid "Pattern to guess metadata from filenames" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:635 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:654 msgid "Access key for isbndb.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:637 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:656 msgid "Default timeout for network operations (seconds)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:639 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:658 msgid "Path to directory in which your library of books is stored" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:641 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:660 msgid "The language in which to display the user interface" msgstr "UIの言語" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:643 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:662 msgid "The default output format for ebook conversions." msgstr "ebook変換でのデフォルトフォーマット" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:647 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:666 msgid "Ordered list of formats to prefer for input." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:649 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:668 msgid "Read metadata from files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:651 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:670 msgid "The priority of worker processes" msgstr "ワーカープロセスの優先度" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:653 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:672 msgid "Swap author first and last names when reading metadata" msgstr "" @@ -7378,7 +7640,7 @@ msgstr "" msgid "Finished" msgstr "完了" -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:70 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:75 msgid "Working..." msgstr "" @@ -7411,38 +7673,46 @@ msgid "English (Australia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:100 -msgid "English (Canada)" +msgid "English (New Zealand)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:101 -msgid "English (India)" +msgid "English (Canada)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:102 -msgid "English (Thailand)" +msgid "English (India)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:103 -msgid "English (Cyprus)" +msgid "English (Thailand)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:104 -msgid "English (Pakistan)" +msgid "English (Cyprus)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:105 -msgid "English (Singapore)" +msgid "English (Pakistan)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:106 -msgid "German (AT)" +msgid "English (Singapore)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:107 -msgid "Dutch (NL)" +msgid "English (Yemen)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:108 +msgid "German (AT)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:109 +msgid "Dutch (NL)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:110 msgid "Dutch (BE)" msgstr "" @@ -7503,75 +7773,83 @@ msgstr "" msgid "Unknown News Source" msgstr "未知のニュースソース" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:520 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:550 msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:606 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:635 msgid "Download finished" msgstr "ダウンロード完了" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:608 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:637 msgid "Failed to download the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:614 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:643 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:616 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:645 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:618 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:647 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:699 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:728 msgid "Could not fetch article. Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:720 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:749 msgid "Fetching feeds..." msgstr "フィードの取得中" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:725 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:754 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:731 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:760 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:789 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:762 +msgid "Generating masthead..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:835 msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:805 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:851 msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:815 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:861 msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:827 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:873 msgid "Downloading cover from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:970 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:908 +msgid "Masthead image downloaded" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1124 msgid "Untitled Article" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1041 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1195 msgid "Article downloaded: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1052 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1206 msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1069 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 msgid "Fetching feed" msgstr "" @@ -7590,55 +7868,55 @@ msgstr "スケジュール" msgid "Custom" msgstr "カスタム" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:459 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:461 msgid "" "%prog URL\n" "\n" "Where URL is for example http://google.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:462 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:464 msgid "Base directory into which URL is saved. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:465 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:467 msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:468 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:470 msgid "" "Maximum number of levels to recurse i.e. depth of links to follow. Default " "%default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:471 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:473 msgid "" "The maximum number of files to download. This only applies to files from tags. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:473 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:475 msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:475 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:477 msgid "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:477 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:479 msgid "" "Only links that match this regular expression will be followed. This option " "can be specified multiple times, in which case as long as a link matches any " "one regexp, it will be followed. By default all links are followed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:479 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:481 msgid "" "Any link that matches this regular expression will be ignored. This option " "can be specified multiple times, in which case as long as any regexp matches " @@ -7647,14 +7925,10 @@ msgid "" "applied first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:481 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:483 msgid "Do not download CSS stylesheets." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:482 -msgid "Show detailed output information. Useful for debugging" -msgstr "" - #~ msgid "Options to control the conversion to EPUB" #~ msgstr "EPUBへの変換をコントロールするためのオプション" @@ -7730,9 +8004,15 @@ msgstr "" #~ msgid "Output HTML is \"pretty printed\" for easier parsing by humans" #~ msgstr "出力HTMLを人に読みやすいよう整形する" +#~ msgid "Useful for debugging." +#~ msgstr "デバッグに有用" + #~ msgid "Output directory. Defaults to current directory." #~ msgstr "出力先(デフォルトはカレント)" +#~ msgid "Output file. Default is derived from input filename." +#~ msgstr "出力ファイル名(デフォルトは入力ファイル名)" + #~ msgid "" #~ "Set the author(s). Multiple authors should be set as a comma separated list. " #~ "Default: %default" From 145d87273f515cce72e61cb05fd6f64758545b8a Mon Sep 17 00:00:00 2001 From: Translators <> Date: Thu, 4 Feb 2010 04:47:00 +0000 Subject: [PATCH 005/164] Launchpad automatic translations update. --- src/calibre/translations/en_GB.po | 4481 +++++++++++++++++------------ src/calibre/translations/fr.po | 33 +- src/calibre/translations/it.po | 932 +++--- src/calibre/translations/ja.po | 14 +- 4 files changed, 3205 insertions(+), 2255 deletions(-) diff --git a/src/calibre/translations/en_GB.po b/src/calibre/translations/en_GB.po index 7ab25f665a..b923d7e3bf 100644 --- a/src/calibre/translations/en_GB.po +++ b/src/calibre/translations/en_GB.po @@ -7,75 +7,77 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2009-10-26 17:36+0000\n" -"PO-Revision-Date: 2009-10-29 20:46+0000\n" -"Last-Translator: Kris Douglas \n" +"POT-Creation-Date: 2010-02-01 07:47+0000\n" +"PO-Revision-Date: 2010-02-03 15:29+0000\n" +"Last-Translator: lorenzov \n" "Language-Team: English (United Kingdom) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2009-10-30 08:28+0000\n" +"X-Launchpad-Export-Date: 2010-02-04 04:47+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 msgid "Does absolutely nothing" msgstr "Does absolutely nothing" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:44 -#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:94 -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:53 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:46 +#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:72 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:54 +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:70 +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:71 +#: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267 #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58 #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:730 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:733 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:177 -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:410 -#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:65 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:205 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:418 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67 -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:318 -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:321 -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1895 -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1897 +#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:69 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:319 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:322 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1894 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1896 #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:24 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:225 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:256 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:259 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:359 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:23 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:45 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:35 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:60 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:46 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:36 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:61 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:63 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:103 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:105 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:171 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:62 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:106 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:329 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:444 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:872 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:894 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:39 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:21 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:28 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:49 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/topaz.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/txt.py:14 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:44 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:70 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:79 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:121 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:154 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:591 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:778 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:155 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:609 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:799 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:51 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:886 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:891 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:951 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:135 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:898 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:903 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:969 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:137 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:139 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:105 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:185 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:186 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:173 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:174 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:39 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/palmdoc/writer.py:28 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/palmdoc/writer.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ztxt/writer.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:82 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:83 @@ -94,67 +96,72 @@ msgstr "Does absolutely nothing" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:28 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:29 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:217 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:219 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:266 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:273 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:120 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:127 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:233 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:276 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:21 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:99 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:124 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:126 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:543 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:552 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:771 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:774 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:839 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:842 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:48 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:106 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:139 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:431 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:454 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:391 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:404 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:876 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1002 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:211 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:277 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:424 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:919 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1045 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:183 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:281 #: /home/kovid/work/calibre/src/calibre/library/database.py:913 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:651 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:663 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1062 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1099 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1433 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1435 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1544 -#: /home/kovid/work/calibre/src/calibre/library/server.py:493 -#: /home/kovid/work/calibre/src/calibre/library/server.py:565 -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:103 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:703 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:715 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1143 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1180 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1552 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1554 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1670 +#: /home/kovid/work/calibre/src/calibre/library/server.py:645 +#: /home/kovid/work/calibre/src/calibre/library/server.py:721 +#: /home/kovid/work/calibre/src/calibre/library/server.py:768 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:111 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:77 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:43 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:46 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:49 msgid "Unknown" msgstr "Unknown" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:62 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:64 msgid "Base" msgstr "Base" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:148 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:150 msgid "File type" msgstr "File type" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:182 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:184 msgid "Metadata reader" msgstr "Metadata reader" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:213 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:215 msgid "Metadata writer" msgstr "Metadata writer" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:13 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:241 +msgid "Catalog generator" +msgstr "Catalogue generator" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:14 msgid "" "Follow all local links in an HTML file and create a ZIP file containing all " "linked files. This plugin is run every time you add an HTML file to the " @@ -164,7 +171,7 @@ msgstr "" "linked files. This plugin is run every time you add an HTML file to the " "library." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:48 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:49 msgid "" "Character encoding for the input HTML files. Common choices include: cp1252, " "latin1, iso-8859-1 and utf-8." @@ -173,53 +180,61 @@ msgstr "" "latin1, iso-8859-1 and utf-8." #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:56 +msgid "" +"Create a PMLZ archive containing the PML file and all images in the " +"directory pmlname_img or images. This plugin is run every time you add a PML " +"file to the library." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:87 msgid "Extract cover from comic files" msgstr "Extract cover from comic files" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:77 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:89 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:99 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:109 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:108 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:120 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:130 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:140 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:150 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:160 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:170 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:151 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:161 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:171 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:181 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:192 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:214 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:225 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:191 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:201 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:212 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:223 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:235 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:245 -msgid "Read metadata from %s files" -msgstr "Read metadata from %s files" - -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:204 -msgid "Read metadata from ebooks in RAR archives" -msgstr "Read metadata from ebooks in RAR archives" - #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:256 -msgid "Read metadata from ebooks in ZIP archives" -msgstr "Read metadata from ebooks in ZIP archives" - #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:267 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:277 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:287 +msgid "Read metadata from %s files" +msgstr "Read metadata from %s files" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:246 +msgid "Read metadata from ebooks in RAR archives" +msgstr "Read metadata from ebooks in RAR archives" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:298 +msgid "Read metadata from ebooks in ZIP archives" +msgstr "Read metadata from ebooks in ZIP archives" + #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:309 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:320 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:319 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:329 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:351 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:362 msgid "Set metadata in %s files" msgstr "Set metadata in %s files" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:298 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:340 msgid "Set metadata from %s files" msgstr "Set metadata from %s files" -#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:99 +#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:102 msgid "Conversion Input" msgstr "Conversion Input" -#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:122 +#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:125 msgid "" "Specify the character encoding of the input document. If set this option " "will override any encoding declared by the document itself. Particularly " @@ -231,11 +246,11 @@ msgstr "" "particularly useful for documents that do not declare any encoding or that " "have erroneous encoding declarations." -#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:225 +#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:228 msgid "Conversion Output" msgstr "Conversion Output" -#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:239 +#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:242 msgid "" "If specified, the output plugin will try to create output that is as human " "readable as possible. May not have any effect for some output plugins." @@ -256,55 +271,75 @@ msgstr "" "no information about the input document." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:56 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:194 -msgid "This profile is intended for the SONY PRS line. The 500/505/700 etc." -msgstr "This profile is intended for the SONY PRS line. The 500/505/700 etc." +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:235 +msgid "" +"This profile is intended for the SONY PRS line. The 500/505/600/700 etc." +msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:69 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:229 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:68 +msgid "This profile is intended for the SONY PRS 300." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:77 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:257 +msgid "This profile is intended for the SONY PRS-900." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:85 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:287 msgid "This profile is intended for the Microsoft Reader." msgstr "This profile is intended for Microsoft's Reader format." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:80 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:240 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:96 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:298 msgid "This profile is intended for the Mobipocket books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:93 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:253 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:109 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:311 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:105 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:265 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:121 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:323 +msgid "This profile is intended for the Hanlin V5 and its clones." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:131 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:331 msgid "This profile is intended for the Cybook G3." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:118 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:278 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:144 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:344 msgid "This profile is intended for the Cybook Opus." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:130 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:289 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:156 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:355 msgid "This profile is intended for the Amazon Kindle." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:142 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:322 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:168 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:388 msgid "This profile is intended for the Irex Illiad." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:154 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:335 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:180 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:401 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:172 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:194 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:415 +msgid "This profile is intended for the B&N Nook." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:213 msgid "Output profile" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:176 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:217 msgid "" "This profile tries to provide sane defaults and is useful if you want to " "produce a document intended to be read at a computer or on a range of " @@ -314,11 +349,15 @@ msgstr "" "you want to produce a document intended to be read on a computer, or on a " "range of different devices." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:206 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:248 +msgid "This profile is intended for the SONY PRS-300." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:266 msgid "This profile is intended for the 5-inch JetBook." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:217 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:275 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." @@ -326,35 +365,35 @@ msgstr "" "This profile is intended for the SONY PRS line. The 500, 505, 700 e.t.c., in " "landscape mode. Mainly useful for reading comics and similar print layouts." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:306 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:372 msgid "This profile is intended for the Amazon Kindle DX." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:30 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:31 msgid "Installed plugins" msgstr "Installed plugins" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:31 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:32 msgid "Mapping for filetype plugins" msgstr "Mapping for filetype plugins" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:32 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:33 msgid "Local plugin customization" msgstr "Local plugin customisation" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:33 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:34 msgid "Disabled plugins" msgstr "Disabled plugins" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:75 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:77 msgid "No valid plugin found in " msgstr "No valid plugin found in " -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:233 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:263 msgid "Initialization of plugin %s failed with traceback:" msgstr "Initialisation of plugin %s failed with traceback:" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:363 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:418 msgid "" " %prog options\n" "\n" @@ -366,15 +405,15 @@ msgstr "" " Customize calibre by loading external plugins.\n" " " -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:369 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:424 msgid "Add a plugin by specifying the path to the zip file containing it." msgstr "Add a plugin by specifying the path to the zip file containing it." -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:371 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:426 msgid "Remove a custom plugin by name. Has no effect on builtin plugins" msgstr "Remove a custom plugin by name. Has no effect on builtin plugins" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:373 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:428 msgid "" "Customize plugin. Specify name of plugin and customization string separated " "by a comma." @@ -382,15 +421,15 @@ msgstr "" "Customise plugin. Specify name of plugin and customisation string separated " "by a comma." -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:375 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:430 msgid "List all installed plugins" msgstr "List all installed plugins" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:377 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:432 msgid "Enable the named plugin" msgstr "Enable the named plugin" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:379 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:434 msgid "Disable the named plugin" msgstr "Disable the named plugin" @@ -398,56 +437,31 @@ msgstr "Disable the named plugin" msgid "Communicate with Android phones." msgstr "Communicate with Android devices." -#: /home/kovid/work/calibre/src/calibre/devices/bebook/driver.py:19 -msgid "Communicate with the BeBook eBook reader." +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:26 +msgid "" +"Comma separated list of directories to send e-books to on the device. The " +"first one that exists will be used" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/bebook/driver.py:95 -msgid "Communicate with the BeBook Mini eBook reader." +#: /home/kovid/work/calibre/src/calibre/devices/binatone/driver.py:17 +msgid "Communicate with the Binatone Readme eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:12 +#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:13 msgid "Communicate with the Blackberry smart phone." msgstr "Communicate with BlackBerry Smartphones." -#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:13 -#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:24 -#: /home/kovid/work/calibre/src/calibre/devices/eslick/driver.py:17 -#: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:88 +#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:14 +#: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:18 +#: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:90 msgid "Kovid Goyal" msgstr "Kovid Goyal" -#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:21 -msgid "Communicate with the Cybook Gen 3 eBook reader." +#: /home/kovid/work/calibre/src/calibre/devices/cybook/driver.py:22 +msgid "Communicate with the Cybook Gen 3 / Opus eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:22 -#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:86 -#: /home/kovid/work/calibre/src/calibre/devices/iliad/driver.py:17 -#: /home/kovid/work/calibre/src/calibre/devices/irexdr/driver.py:18 -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:22 -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:67 -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:78 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:30 -msgid "John Schember" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:74 -#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:76 -#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:76 -#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:78 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:130 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:132 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:99 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:101 -msgid "Transferring books to device..." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:85 -msgid "Communicate with the Cybook Opus eBook reader." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:23 +#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:24 msgid "Communicate with the EB600 eBook reader." msgstr "" @@ -455,11 +469,33 @@ msgstr "" msgid "Communicate with the ESlick eBook reader." msgstr "" +#: /home/kovid/work/calibre/src/calibre/devices/hanlin/driver.py:19 +msgid "Communicate with Hanlin V3 eBook readers." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/hanlin/driver.py:95 +msgid "Communicate with Hanlin V5 eBook readers." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/hanlin/driver.py:113 +msgid "Communicate with the BOOX eBook reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:17 +msgid "Communicate with the Hanvon N520 eBook reader." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/iliad/driver.py:16 msgid "Communicate with the IRex Iliad eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/interface.py:20 +#: /home/kovid/work/calibre/src/calibre/devices/iliad/driver.py:17 +#: /home/kovid/work/calibre/src/calibre/devices/irexdr/driver.py:18 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:30 +msgid "John Schember" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/interface.py:22 msgid "Device Interface" msgstr "" @@ -467,192 +503,236 @@ msgstr "" msgid "Communicate with the IRex Digital Reader 1000 eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:22 +#: /home/kovid/work/calibre/src/calibre/devices/iriver/driver.py:15 +msgid "Communicate with the Iriver Story reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:20 msgid "Communicate with the JetBook eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:23 -msgid "James Ralston" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:21 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:22 msgid "Communicate with the Kindle eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:66 -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:77 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:67 msgid "Communicate with the Kindle 2 eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:87 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:77 +msgid "Communicate with the Kindle DX eBook reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:17 +msgid "Communicate with the Nokia 770 internet tablet." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:40 +msgid "Communicate with the Nokia 810 internet tablet." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:20 +msgid "The Nook" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:21 +msgid "Communicate with the Nook eBook reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 +msgid "Communicate with the Nuut2 eBook reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:89 msgid "Communicate with the Sony PRS-500 eBook reader." msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:150 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:93 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:96 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:99 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:110 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:49 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:52 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:55 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:68 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:74 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:78 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:102 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:105 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:108 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:119 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:45 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:48 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:51 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:71 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:81 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:90 msgid "Getting list of books on device..." msgstr "Getting list of books on device..." #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:26 -msgid "Communicate with the Sony PRS-300/505 eBook reader." +msgid "Communicate with the Sony PRS-300/505/500 eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:27 -#: /home/kovid/work/calibre/src/calibre/devices/prs700/driver.py:18 -msgid "Kovid Goyal and John Schember" -msgstr "Kovid Goyal and John Schember" +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:58 +msgid "" +"Comma separated list of metadata fields to turn into collections on the " +"device. Possibilities include: " +msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:163 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:170 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:119 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:134 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:139 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:141 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:116 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:118 +msgid "Transferring books to device..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:174 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:181 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:145 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:162 msgid "Removing books from device..." msgstr "Removing books from device..." -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:198 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:149 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:209 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:177 msgid "Sending metadata to device..." msgstr "Sending metadata to device..." -#: /home/kovid/work/calibre/src/calibre/devices/prs700/driver.py:17 -msgid "Communicate with the Sony PRS-600/700 eBook reader." +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:215 +msgid "Communicate with the Sony PRS-600/700/900 eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:285 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:357 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:250 msgid "Unable to detect the %s disk drive. Try rebooting." msgstr "Unable to detect the %s disk drive. Try rebooting." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:425 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:429 +msgid "Unable to detect the %s mount point. Try rebooting." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:484 msgid "Unable to detect the %s disk drive." msgstr "Unable to detect the %s disk drive." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:518 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:577 msgid "Could not find mount helper: %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:530 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:589 msgid "" "Unable to detect the %s disk drive. Your kernel is probably exporting a " "deprecated version of SYSFS." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:538 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:597 msgid "Unable to mount main memory (Error code: %d)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:670 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:672 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:734 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:736 msgid "The reader has no storage card in this slot." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:674 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:738 msgid "Selected slot: %s is not supported." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:698 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:771 msgid "There is insufficient free space in main memory" msgstr "There is insufficient free space in main memory" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:700 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:702 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:773 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:775 msgid "There is insufficient free space on the storage card" msgstr "There is insufficient free space on the storage card" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:713 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:799 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:824 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:232 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:122 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1006 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1010 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1333 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1068 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1072 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1452 msgid "News" msgstr "News" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:11 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:12 msgid "Configure Device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:16 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:28 msgid "settings for device drivers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:17 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:30 msgid "Ordered list of formats the device will accept" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:18 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:32 msgid "Place files in sub directories if the device supports them" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:19 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:64 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:34 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:78 msgid "Read metadata from files on device" msgstr "" +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:36 +msgid "Template to control how books are saved" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:80 +msgid "Extra customization" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:29 msgid "Communicate with an eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:41 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:37 msgid "Get device information..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:107 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:115 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:133 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:141 msgid "Adding books to device metadata listing..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:138 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:143 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:166 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:171 msgid "Removing books from device metadata listing..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:196 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:200 msgid "Rendered %s" msgstr "Rendered %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:199 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:203 msgid "Failed %s" msgstr "Failed %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:256 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:260 msgid "" "Failed to process comic: \n" "\n" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:274 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:278 msgid "" "Number of colors for grayscale image conversion. Default: %default. Values " "of less than 256 may result in blurred text on your device if you are " "creating your comics in EPUB format." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:278 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:282 msgid "" "Disable normalize (improve contrast) color range for pictures. Default: False" msgstr "" "Disable normalize (improve contrast) color range for pictures. Default: False" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:285 msgid "Maintain picture aspect ratio. Default is to fill the screen." msgstr "Maintain picture aspect ratio. Default is to fill the screen." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:287 msgid "Disable sharpening." msgstr "Disable sharpening." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:285 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:289 msgid "" "Disable trimming of comic pages. For some comics, trimming might remove " "content as well as borders." @@ -660,11 +740,11 @@ msgstr "" "Disable trimming of comic pages. For some comics, trimming might remove " "content as well as borders." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:292 msgid "Don't split landscape images into two portrait images" msgstr "Don't split landscape images into two portrait images" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:290 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:294 msgid "" "Keep aspect ratio and scale image using screen height as image width for " "viewing in landscape mode." @@ -672,23 +752,23 @@ msgstr "" "Keep aspect ratio and scale image using screen height as image width for " "viewing in landscape mode." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:293 -msgid "" -"Used for right-to-left publications like manga. Causes landscape pages to be " -"split into portrait pages from right to left." -msgstr "" -"Used for right-to-left publications like manga. Causes landscape pages to be " -"split into portrait pages from right to left." - #: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:297 msgid "" +"Used for right-to-left publications like manga. Causes landscape pages to be " +"split into portrait pages from right to left." +msgstr "" +"Used for right-to-left publications like manga. Causes landscape pages to be " +"split into portrait pages from right to left." + +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:301 +msgid "" "Enable Despeckle. Reduces speckle noise. May greatly increase processing " "time." msgstr "" "Enable Despeckle. Reduces speckle noise. May greatly increase processing " "time." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:300 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:304 msgid "" "Don't sort the files found in the comic alphabetically by name. Instead use " "the order they were added to the comic." @@ -696,19 +776,19 @@ msgstr "" "Don't sort the files found in the comic alphabetically by name. Instead use " "the order they were added to the comic." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:304 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:308 msgid "" "The format that images in the created ebook are converted to. You can " "experiment to see which format gives you optimal size and look on your " "device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:308 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:312 msgid "Apply no processing to the image" msgstr "Apply no processing to the image" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:434 -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:445 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:442 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:453 msgid "Page" msgstr "" @@ -781,22 +861,22 @@ msgstr "" msgid "List builtin recipes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:251 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:252 msgid "Output saved to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:91 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:92 msgid "Level of verbosity. Specify multiple times for greater verbosity." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:98 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:99 msgid "" "Save the output from different stages of the conversion pipeline to the " "specified directory. Useful if you are unsure at which stage of the " "conversion process a bug is occurring." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:107 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:108 msgid "" "Specify the input profile. The input profile gives the conversion system " "information on how to interpret various information in the input document. " @@ -804,7 +884,7 @@ msgid "" "are:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:118 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:119 msgid "" "Specify the output profile. The output profile tells the conversion system " "how to optimize the created document for the specified device. In some " @@ -812,7 +892,7 @@ msgid "" "a device. For example EPUB on the SONY reader. Choices are:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:129 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:130 msgid "" "The base font size in pts. All font sizes in the produced book will be " "rescaled based on this size. By choosing a larger size you can make the " @@ -820,7 +900,7 @@ msgid "" "chosen based on the output profile you chose." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:139 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:140 msgid "" "Mapping from CSS font names to font sizes in pts. An example setting is " "12,12,14,16,18,20,22,24. These are the mappings for the sizes xx-small to xx-" @@ -829,17 +909,17 @@ msgid "" "use a mapping based on the output profile you chose." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:151 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:152 msgid "Disable all rescaling of font sizes." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:158 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:159 msgid "" "The line height in pts. Controls spacing between consecutive lines of text. " "By default no line height manipulation is performed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:166 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:167 msgid "" "Some badly designed documents use tables to control the layout of text on " "the page. When converted these documents often have text that runs off the " @@ -847,7 +927,7 @@ msgid "" "tables and present it in a linear fashion." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:176 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:177 msgid "" "XPath expression that specifies all tags that should be added to the Table " "of Contents at level one. If this is specified, it takes precedence over " @@ -857,7 +937,7 @@ msgstr "" "of Contents at level one. If this is specified, it takes precedence over " "other forms of auto-detection." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:185 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:186 msgid "" "XPath expression that specifies all tags that should be added to the Table " "of Contents at level two. Each entry is added under the previous level one " @@ -867,7 +947,7 @@ msgstr "" "of Contents at level two. Each entry is added under the previous level one " "entry." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:193 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:194 msgid "" "XPath expression that specifies all tags that should be added to the Table " "of Contents at level three. Each entry is added under the previous level two " @@ -877,7 +957,7 @@ msgstr "" "of Contents at level three. Each entry is added under the previous level two " "entry." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:201 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:202 msgid "" "Normally, if the source file already has a Table of Contents, it is used in " "preference to the auto-generated one. With this option, the auto-generated " @@ -887,11 +967,11 @@ msgstr "" "preference to the auto-generated one. With this option, the auto-generated " "one is always used." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:209 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:210 msgid "Don't add auto-detected chapters to the Table of Contents." msgstr "Don't add auto-detected chapters to the Table of Contents." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:216 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:217 msgid "" "If fewer than this number of chapters is detected, then links are added to " "the Table of Contents. Default: %default" @@ -899,20 +979,20 @@ msgstr "" "If fewer than this number of chapters is detected, then links are added to " "the Table of Contents. Default: %default" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:223 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:224 msgid "" "Maximum number of links to insert into the TOC. Set to 0 to disable. Default " "is: %default. Links are only added to the TOC if less than the threshold " "number of chapters were detected." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:231 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:232 msgid "" "Remove entries from the Table of Contents whose titles match the specified " "regular expression. Matching entries and all their children are removed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:242 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:243 msgid "" "An XPath expression to detect chapter titles. The default is to consider " "

or

tags that contain the words \"chapter\",\"book\",\"section\" or " @@ -922,7 +1002,7 @@ msgid "" "User Manual for further help on using this feature." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:256 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:257 msgid "" "Specify how to mark detected chapters. A value of \"pagebreak\" will insert " "page breaks before chapters. A value of \"rule\" will insert a line before " @@ -934,53 +1014,60 @@ msgstr "" "chapters. A value of \"none\" will disable chapter marking and a value of " "\"both\" will use both page breaks and lines to mark chapters." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:266 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:267 msgid "" "Either the path to a CSS stylesheet or raw CSS. This CSS will be appended to " "the style rules from the source file, so it can be used to override those " "rules." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:275 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:276 msgid "" "An XPath expression. Page breaks are inserted before the specified elements." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:281 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:282 msgid "" "Set the top margin in pts. Default is %default. Note: 72 pts equals 1 inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:286 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:287 msgid "" "Set the bottom margin in pts. Default is %default. Note: 72 pts equals 1 inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:291 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:292 msgid "" "Set the left margin in pts. Default is %default. Note: 72 pts equals 1 inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:296 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:297 msgid "" "Set the right margin in pts. Default is %default. Note: 72 pts equals 1 inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:301 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:302 msgid "" "Do not force text to be justified in output. Whether text is actually " "displayed justified or not depends on whether the ebook format and reading " "device support justification." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:308 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:309 msgid "" "Remove spacing between paragraphs. Also sets an indent on paragraphs of " "1.5em. Spacing removal will not work if the source file does not use " "paragraphs (

or

tags)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:315 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:316 +msgid "" +"When calibre removes inter paragraph spacing, it automatically sets a " +"paragraph indent, to ensure that paragraphs can be easily distinguished. " +"This option controls the width of that indent." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:323 msgid "" "Use the cover detected from the source file in preference to the specified " "cover." @@ -988,13 +1075,13 @@ msgstr "" "Use the cover detected from the source file in preference to the specified " "cover." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:321 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:329 msgid "" "Insert a blank line between paragraphs. Will not work if the source file " "does not use paragraphs (

or

tags)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:328 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:336 msgid "" "Remove the first image from the input ebook. Useful if the first image in " "the source file is a cover and you are specifying an external cover." @@ -1002,41 +1089,41 @@ msgstr "" "Remove the first image from the input ebook. Useful if the first image in " "the source file is a cover and you are specifying an external cover." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:336 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:344 msgid "" "Insert the book metadata at the start of the book. This is useful if your " "ebook reader does not support displaying/searching metadata directly." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:344 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:352 msgid "" "Attempt to detect and correct hard line breaks and other problems in the " "source file. This may make things worse, so use with care." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:352 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:360 msgid "Use a regular expression to try and remove the header." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:359 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:367 msgid "The regular expression to use to remove the header." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:365 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:373 msgid "Use a regular expression to try and remove the footer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:372 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:380 msgid "The regular expression to use to remove the footer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:379 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:387 msgid "" "Read metadata from the specified OPF file. Metadata read from this file will " "override any metadata in the source file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:386 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:394 msgid "" "Transliterate unicode characters to an ASCII representation. Use with care " "because this will replace unicode characters with ASCII. For instance it " @@ -1046,90 +1133,90 @@ msgid "" "number of people will be used (Chinese in the previous example)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:401 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:409 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:37 msgid "Set the title." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:405 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:413 msgid "Set the authors. Multiple authors should be separated by ampersands." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:410 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:418 msgid "The version of the title to be used for sorting. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:414 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:422 msgid "String to be used when sorting by author. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:418 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:426 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:51 msgid "Set the cover to the specified file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:422 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:430 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:53 msgid "Set the ebook description." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:426 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:434 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:55 msgid "Set the ebook publisher." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:430 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:438 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:59 msgid "Set the series this ebook belongs to." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:434 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:442 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:61 msgid "Set the index of the book in this series." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:438 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:446 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:63 msgid "Set the rating. Should be a number between 1 and 5." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:442 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:450 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:65 msgid "Set the ISBN of the book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:446 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:454 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:67 msgid "Set the tags for the book. Should be a comma separated list." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:450 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:458 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:69 msgid "Set the book producer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:454 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:462 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:71 msgid "Set the language." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:546 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:562 msgid "Could not find an ebook inside the archive" msgstr "Could not find an ebook inside the archive" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:604 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:620 msgid "Values of series index and rating must be numbers. Ignoring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:716 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:740 msgid "Converting input to HTML..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:739 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:763 msgid "Running transforms on ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:825 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:850 msgid "Creating" msgstr "" @@ -1167,9 +1254,9 @@ msgid "" "disables the generation of this cover." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/fb2ml.py:123 -#: /home/kovid/work/calibre/src/calibre/ebooks/pml/pmlml.py:113 -#: /home/kovid/work/calibre/src/calibre/ebooks/rb/rbml.py:98 +#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/fb2ml.py:144 +#: /home/kovid/work/calibre/src/calibre/ebooks/pml/pmlml.py:129 +#: /home/kovid/work/calibre/src/calibre/ebooks/rb/rbml.py:102 #: /home/kovid/work/calibre/src/calibre/ebooks/txt/txtml.py:77 msgid "Table of Contents:" msgstr "" @@ -1186,20 +1273,20 @@ msgstr "" msgid "Add Table of Contents to beginning of the book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:242 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:243 msgid "" "Traverse links in HTML files breadth first. Normally, they are traversed " "depth first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:249 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:250 msgid "" "Maximum levels of recursion when following links in HTML files. Must be non-" "negative. 0 implies that no links in the root HTML file are followed. " "Default is %default." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:258 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:259 msgid "" "Normally this input plugin re-arranges all the input files into a standard " "folder hierarchy. Only use this option if you know what you are doing as it " @@ -1207,7 +1294,7 @@ msgid "" "pipeline." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:266 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:267 msgid "" "Average line length for line breaking if the HTML is from a previous partial " "conversion of a PDF file. Default is %default which disables this." @@ -1217,56 +1304,56 @@ msgstr "" msgid "Creating LIT file from EPUB..." msgstr "Creating LIT file from EPUB..." -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:321 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:320 msgid "\tBook Designer file detected." msgstr "\tBook Designer file detected." -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:323 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:322 msgid "\tParsing HTML..." msgstr "\tParsing HTML..." -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:346 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:345 msgid "\tBaen file detected. Re-parsing..." msgstr "\tBaen file detected. Re-parsing..." -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:362 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:361 msgid "Written preprocessed HTML to " msgstr "Written preprocessed HTML to " -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:380 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:379 msgid "Processing %s" msgstr "Processing %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:394 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:393 msgid "\tConverting to BBeB..." msgstr "\tConverting to BBeB..." -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:540 -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:553 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:539 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:552 msgid "Could not parse file: %s" msgstr "Could not parse file: %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:545 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:544 msgid "%s is an empty file" msgstr "%s is an empty file" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:565 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:564 msgid "Failed to parse link %s %s" msgstr "Failed to parse link %s %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:609 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:608 msgid "Cannot add link %s to TOC" msgstr "Cannot add link %s to TOC" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:958 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:957 msgid "Unable to process image %s. Error: %s" msgstr "Unable to process image %s. Error: %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1003 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1002 msgid "Unable to process interlaced PNG %s" msgstr "Unable to process interlaced PNG %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1018 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1017 msgid "" "Could not process image: %s\n" "%s" @@ -1274,13 +1361,13 @@ msgstr "" "Could not process image: %s\n" "%s" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1773 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1772 msgid "" "An error occurred while processing a table: %s. Ignoring table markup." msgstr "" "An error occurred while processing a table: %s. Ignoring table markup." -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1775 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1774 msgid "" "Bad table:\n" "%s" @@ -1288,19 +1375,19 @@ msgstr "" "Bad table:\n" "%s" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1797 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1796 msgid "Table has cell that is too large" msgstr "Table has cell that is too large" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1863 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1862 msgid "Could not read cover image: %s" msgstr "Could not read cover image: %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1866 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1865 msgid "Cannot read from: %s" msgstr "Cannot read from: %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1996 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1994 msgid "Failed to process opf file" msgstr "Failed to process opf file" @@ -1503,26 +1590,26 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:358 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:45 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:69 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:388 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1068 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:399 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1111 msgid "Title" msgstr "Title" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:57 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:159 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:393 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1069 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1112 msgid "Author(s)" msgstr "Author(s)" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:360 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:59 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:169 msgid "Publisher" msgstr "Publisher" @@ -1533,28 +1620,28 @@ msgstr "Producer" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:362 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:71 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:64 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:349 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:94 msgid "Comments" msgstr "Comments" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:370 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:165 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:338 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1012 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1072 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:94 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:349 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1055 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1115 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 msgid "Tags" msgstr "Tags" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:372 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:354 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:93 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:365 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:95 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 msgid "Series" msgstr "Series" @@ -1563,13 +1650,13 @@ msgid "Language" msgstr "Language" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:375 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1011 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1054 msgid "Timestamp" msgstr "Timestamp" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:377 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:61 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:167 msgid "Published" msgstr "" @@ -1577,6 +1664,10 @@ msgstr "" msgid "Rights" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/amazon.py:78 +msgid "EDITORIAL REVIEW" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:19 msgid "options" msgstr "" @@ -1638,30 +1729,68 @@ msgstr "" msgid "Set the BookID in LRF files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:144 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:148 msgid "No file specified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:159 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:163 msgid "Original metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:176 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:180 msgid "Changed metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:188 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:192 msgid "OPF created in" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:194 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:198 msgid "Cover saved to" msgstr "Cover saved to" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:196 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:200 msgid "No cover found" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:34 +msgid "Metadata download" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:111 +msgid "ratings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:111 +msgid "tags" +msgstr "tags" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:112 +msgid "description/reviews" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:113 +msgid "Download %s from %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:137 +msgid "Downloads metadata from Google Books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:153 +msgid "Downloads metadata from isbndb.com" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:181 +msgid "" +"To use isbndb.com you must sign up for a %sfree account%s and enter your " +"access key below." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:189 +msgid "Downloads social metadata from amazon.com" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:94 msgid "" "\n" @@ -1734,8 +1863,8 @@ msgstr "" "\n" "Fetch a cover image for the book identified by ISBN from LibraryThing.com\n" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1057 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1314 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1083 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1336 msgid "Cover" msgstr "Cover" @@ -1762,101 +1891,77 @@ msgstr "Title for any generated in-line table of contents." msgid "Disable compression of the file contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:102 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:105 msgid "All articles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1315 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1337 msgid "Title Page" msgstr "Title Page" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1316 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1338 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:51 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:188 msgid "Table of Contents" msgstr "Table of Contents" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1317 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1339 msgid "Index" msgstr "Index" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1318 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1340 msgid "Glossary" msgstr "Glossary" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1319 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1341 msgid "Acknowledgements" msgstr "Acknowledgements" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1320 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1342 msgid "Bibliography" msgstr "Bibliography" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1321 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1343 msgid "Colophon" msgstr "Colophon" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1322 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1344 msgid "Copyright" msgstr "Copyright" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1323 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1345 msgid "Dedication" msgstr "Dedication" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1324 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1346 msgid "Epigraph" msgstr "Epigraph" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1325 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1347 msgid "Foreword" msgstr "Foreword" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1326 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1348 msgid "List of Illustrations" msgstr "List of Illustrations" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1327 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1349 msgid "List of Tables" msgstr "List of Tables" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1328 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1350 msgid "Notes" msgstr "Notes" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1329 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1351 msgid "Preface" msgstr "Preface" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1330 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1352 msgid "Main Text" msgstr "Main Text" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:53 -msgid "Options to control e-book conversion." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:60 -msgid "Character encoding for input. Default is to auto detect." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:62 -msgid "Output file. Default is derived from input filename." -msgstr "Output file. Default is derived from input filename." - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:64 -msgid "Produce more human-readable XML output." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:66 -msgid "Useful for debugging." -msgstr "Useful for debugging." - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:71 -msgid "Usage: ebook-convert INFILE OUTFILE [OPTIONS..]" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:39 msgid "%s format books are not supported" msgstr "%s format books are not supported" @@ -1892,11 +1997,11 @@ msgid "" "Generate an Adobe \"page-map\" file if pagination information is available." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/reader132.py:119 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/reader132.py:126 msgid "Footnotes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/reader132.py:128 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/reader132.py:133 msgid "Sidebar" msgstr "" @@ -1928,17 +2033,21 @@ msgid "" "cp1252. Note: This option is not honored by all formats." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:22 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:24 msgid "Do not extract images from the document" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:24 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:26 msgid "" "Scale used to determine the length at which a line should be unwrapped. " "Valid values are a decimal between 0 and 1. The default is 0.5, this is the " "median line length." msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:30 +msgid "Use the new PDF conversion engine." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/cli.py:31 msgid "" "command ...\n" @@ -2135,7 +2244,7 @@ msgstr "" msgid "The orientation of the page. Default is portrait. Choices are %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/pdftohtml.py:52 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/pdftohtml.py:55 msgid "Could not find pdftohtml, check it is in your PATH" msgstr "Could not find pdftohtml, check it is in your PATH" @@ -2144,10 +2253,11 @@ msgid "" "Specify the character encoding of the output document. The default is cp1252." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:183 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:199 msgid "" "This RTF file has a feature calibre does not support. Convert it to HTML " -"first and then try it." +"first and then try it.\n" +"%s" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:23 @@ -2168,6 +2278,10 @@ msgid "" "markdown see" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:35 +msgid "Do not insert a Table of Contents into the output text." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:24 msgid "" "Type of newline to use. Options are %s. Default is 'system'. Use 'old_mac' " @@ -2182,11 +2296,6 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:38 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:54 -msgid "Do not add a blank line between paragraphs." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:41 msgid "" "The maximum number of characters per line. This splits on the first space " "before the specified value. If no space is found the line will be broken at " @@ -2194,89 +2303,85 @@ msgid "" "minimum of 25 characters. Use 0 to disable line splitting." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:48 +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:45 msgid "" "Force splitting on the max-line-length value when no space is present. Also " "allows max-line-length to be below the minimum" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:52 -msgid "Add a tab at the beginning of each paragraph." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:29 msgid "Send file to storage card instead of main memory by default" msgstr "Send file to storage card instead of main memory by default" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:29 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:31 msgid "Confirm before deleting" msgstr "Confirm before deleting" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:31 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:33 msgid "Toolbar icon size" msgstr "Toolbar icon size" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:33 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:35 msgid "Show button labels in the toolbar" msgstr "Show button labels in the toolbar" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:37 msgid "Main window geometry" msgstr "Main window geometry" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:37 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:39 msgid "Notify when a new version is available" msgstr "Notify when a new version is available" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:41 msgid "Use Roman numerals for series number" msgstr "Use Roman numerals for series number" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:41 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:43 msgid "Sort tags list by popularity" msgstr "Sort tags list by popularity" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:45 msgid "Number of covers to show in the cover browsing mode" msgstr "Number of covers to show in the cover browsing mode" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:47 msgid "Defaults for conversion to LRF" msgstr "Defaults for conversion to LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:49 msgid "Options for the LRF ebook viewer" msgstr "Options for the LRF ebook viewer" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:52 msgid "Formats that are viewed using the internal viewer" msgstr "Formats that are viewed using the internal viewer" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 msgid "Columns to be displayed in the book list" msgstr "Columns to be displayed in the book list" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 msgid "Automatically launch content server on application startup" msgstr "Automatically launch content server on application startup" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 msgid "Oldest news kept in database" msgstr "Oldest news kept in database" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:57 msgid "Show system tray icon" msgstr "Show system tray icon" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:59 msgid "Upload downloaded news to device" msgstr "Upload downloaded news to device" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:61 msgid "Delete books from library after uploading to device" msgstr "Delete books from library after uploading to device" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:63 msgid "" "Show the cover flow in a separate window instead of in the main calibre " "window" @@ -2284,113 +2389,118 @@ msgstr "" "Show the cover flow in a separate window instead of in the main calibre " "window" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:65 msgid "Disable notifications from the system tray icon" msgstr "Disable notifications from the system tray icon" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:67 msgid "Default action to perform when send to device button is clicked" msgstr "Default action to perform when send to device button is clicked" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:89 msgid "Maximum number of waiting worker processes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:123 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:398 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:91 +msgid "Download social metadata (tags/rating/etc.)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:93 +msgid "Overwrite author and title with new metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:95 +msgid "Limit max simultaneous jobs to number of CPUs" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:439 msgid "Copied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:167 msgid "Copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:167 msgid "Copy to Clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:386 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:398 msgid "Choose Files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:56 msgid "Searching in" msgstr "Searching in" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:167 msgid "Adding..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:180 msgid "Searching in all sub-directories..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:193 msgid "Path error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:194 msgid "The specified directory could not be processed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:195 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:486 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:495 msgid "No books" msgstr "No books" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:199 msgid "No books found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:265 msgid "Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:278 msgid "Adding failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:276 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:279 msgid "" "The add books process seems to have hung. Try restarting calibre and adding " "the books in smaller increments, until you find the problem book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:291 msgid "Duplicates found!" msgstr "Duplicates found!" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:292 msgid "" "Books with the same title as the following already exist in the database. " "Add them anyway?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:292 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:295 msgid "Adding duplicates..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:356 msgid "Saving..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:406 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:409 msgid "Saved" msgstr "Saved" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:60 -msgid "Bulk Convert" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:73 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:184 -msgid "Options specific to the output format." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:15 -msgid "Comic Input" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:16 +msgid "CSV/XML Options" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:13 @@ -2407,20 +2517,28 @@ msgstr "" msgid "Options specific to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:13 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input.py:13 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:13 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:13 -msgid "input" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:18 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:20 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output.py:18 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:17 +msgid "output" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:36 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:27 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:49 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:41 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:28 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:118 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:115 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:165 #: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:44 @@ -2432,17 +2550,98 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:38 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:51 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:41 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:49 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:67 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template_ui.py:41 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:35 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:107 msgid "Form" msgstr "Form" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:37 +msgid "Fields to include in output:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:17 +msgid "E-book options" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:271 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1416 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1430 +msgid "Catalog" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:68 +msgid "'Don't include this book' tag:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:69 +msgid "'Mark this book as read' tag:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:70 +msgid "Additional note tag prefix:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:71 +msgid "Sort numbers as text" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:72 +msgid "Regex pattern describing tags to exclude as genres:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:73 +msgid "Special marker tags for catalog generation" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:74 +msgid "" +"Regex tips:\n" +"- The default regex of '\\[[\\w]*\\]' ignores tags of the form '[tag]', " +"e.g., '[Amazon Freebie]'\n" +"- A regex of '.' ignores all tags, generating no genre categories in the " +"catalog" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:28 +msgid "Tab template for catalog.ui" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:36 +msgid "" +"For settings that cannot be specified in this dialog, use the values saved " +"in a previous conversion (if they exist) instead of using the defaults " +"specified in the Preferences" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:67 +msgid "Bulk Convert" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 +msgid "Options specific to the output format." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:15 +msgid "Comic Input" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:13 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input.py:13 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:13 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:13 +msgid "input" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:94 msgid "&Number of Colors:" @@ -2498,7 +2697,7 @@ msgid "&Disable comic processing" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:96 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:111 msgid "&Output format:" msgstr "" @@ -2533,25 +2732,25 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:53 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:124 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:170 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:44 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:61 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:493 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:356 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:361 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:386 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:388 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:390 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:395 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:397 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:574 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:387 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:391 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:396 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:398 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:126 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:128 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:131 @@ -2559,9 +2758,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:267 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:269 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:270 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:332 #: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:334 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:336 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:342 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:180 msgid "..." msgstr "..." @@ -2576,17 +2778,6 @@ msgstr "" msgid "EPUB Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:20 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:16 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output.py:18 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:17 -msgid "output" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:42 msgid "Do not &split on page breaks" msgstr "Do not &split on page breaks" @@ -2618,7 +2809,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:29 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:37 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:29 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:47 msgid "&Inline TOC" msgstr "" @@ -2637,10 +2828,9 @@ msgid "" "

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:103 @@ -2653,15 +2843,15 @@ msgid "&Base font size:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:105 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:122 msgid "Font size &key:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:110 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:112 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:126 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:118 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:125 @@ -2700,47 +2890,62 @@ msgstr "Look & Feel" msgid "Control the look and feel of the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:100 -msgid "Base &font size:" -msgstr "Base &font size:" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:102 -msgid "Line &height:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:104 -msgid "Remove &spacing between paragraphs" -msgstr "Remove &spacing between paragraphs" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:105 -msgid "No text &justification" -msgstr "No text &justification" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:106 -msgid "&Linearize tables" -msgstr "&Linearize tables" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:107 -msgid "&Transliterate unicode characters to ASCII." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:109 -msgid "Input character &encoding:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:119 msgid "&Disable font size rescaling" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:111 -msgid "Insert &blank line" -msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:120 +msgid "Base &font size:" +msgstr "Base &font size:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:123 msgid "Wizard to help you choose an appropriate font size key" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:125 +msgid "Line &height:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:127 +msgid "Input character &encoding:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:128 +msgid "Remove &spacing between paragraphs" +msgstr "Remove &spacing between paragraphs" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:129 +msgid "Indent size:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:130 +msgid "" +"

When calibre removes inter paragraph spacing, it automatically sets a " +"paragraph indent, to ensure that paragraphs can be easily distinguished. " +"This option controls the width of that indent." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:131 +msgid " em" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:132 +msgid "Insert &blank line" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:133 +msgid "No text &justification" +msgstr "No text &justification" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:134 +msgid "&Linearize tables" +msgstr "&Linearize tables" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:135 +msgid "&Transliterate unicode characters to ASCII." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:136 msgid "Extra &CSS" msgstr "" @@ -2797,8 +3002,8 @@ msgid "&Monospaced font family:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:41 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:145 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:189 msgid "Metadata" msgstr "Metadata" @@ -2808,39 +3013,39 @@ msgid "" "possible." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:152 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:99 msgid "Choose cover for " msgstr "Choose cover for " -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:159 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:106 msgid "Cannot read" msgstr "Cannot read" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:107 msgid "You do not have permission to read the file: " msgstr "You do not have permission to read the file: " -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:168 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:175 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:183 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:115 msgid "Error reading file" msgstr "Error reading file" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:169 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:116 msgid "

There was an error reading from file:
" msgstr "

There was an error reading from file:
" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:184 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:124 msgid " is not a valid picture" msgstr " is not a valid picture" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:392 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393 msgid "Book Cover" msgstr "Book Cover" @@ -2849,28 +3054,28 @@ msgid "Use cover from &source file" msgstr "Use cover from &source file" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:168 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:394 msgid "Change &cover image:" msgstr "Change &cover image:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:169 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:394 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:395 msgid "Browse for an image to use as the cover of this book." msgstr "Browse for an image to use as the cover of this book." #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:171 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:354 msgid "&Title: " msgstr "&Title: " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:355 msgid "Change the title of this book" msgstr "Change the title of this book" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:173 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:358 msgid "&Author(s): " msgstr "&Author(s): " @@ -2887,19 +3092,19 @@ msgstr "" "comma" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:143 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:366 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367 msgid "&Publisher: " msgstr "&Publisher: " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:368 msgid "Ta&gs: " msgstr "Ta&gs: " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:178 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:145 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:368 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:369 msgid "" "Tags categorize the book. This is particularly useful while searching. " "

They can be any words or phrases, separated by commas." @@ -2908,22 +3113,22 @@ msgstr "" "

They can be any words or phrases, separated by commas." #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:179 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:150 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:372 msgid "&Series:" msgstr "&Series:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:181 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:152 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:372 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:158 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:373 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374 msgid "List of known series. You can add new series." msgstr "List of known series. You can add new series." #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:182 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:379 msgid "Book " msgstr "Book " @@ -2992,12 +3197,12 @@ msgid "PDB Input" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input_ui.py:32 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:43 msgid "Treat each &line as a paragraph" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input_ui.py:33 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:44 msgid "Assume print formatting" msgstr "" @@ -3038,7 +3243,7 @@ msgid "RB Output" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1371 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1639 msgid "Choose the format to view" msgstr "Choose the format to view" @@ -3070,25 +3275,29 @@ msgstr "" msgid "Regex:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:171 msgid "Convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:196 msgid "Options specific to the input format." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:105 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:64 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:48 msgid "Dialog" msgstr "Dialog" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:109 msgid "&Input format:" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:110 +msgid "Use &saved conversion settings for individual books" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17 msgid "" "Structure\n" @@ -3117,12 +3326,12 @@ msgid "Footer regular expression:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:71 msgid "Invalid regular expression" msgstr "Invalid regular expression" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:57 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:72 msgid "Invalid regular expression: %s" msgstr "Invalid regular expression: %s" @@ -3206,40 +3415,40 @@ msgstr "" msgid "TXT Input" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:40 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:45 msgid "Process using markdown" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:41 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:46 msgid "" "

Markdown is a simple markup language for text files, that allows for " "advanced formatting. To learn more visit markdown." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:47 +msgid "Do not insert Table of Contents into output text when using markdown" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:16 msgid "TXT Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:46 msgid "&Line ending style:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:55 -msgid "Add a tab at the beginning of each paragraph" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:48 msgid "&Maximum line length:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:49 msgid "Force maximum line lenght" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:66 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:41 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:49 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:57 @@ -3248,7 +3457,7 @@ msgstr "" msgid "TextLabel" msgstr "TextLabel" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:51 msgid "Use a wizard to help construct the XPath expression" msgstr "" @@ -3323,243 +3532,286 @@ msgid "" "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." +"href=\"http://calibre-ebook.com/user_manual/xpath.html\">XPath Tutorial." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:39 -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:38 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:135 msgid "No details available." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:120 msgid "Device no longer connected." msgstr "Device no longer connected." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:208 msgid "Get device information" msgstr "Get device information" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:219 msgid "Get list of books on device" msgstr "Get list of books on device" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:228 msgid "Send metadata to device" msgstr "Send metadata to device" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:237 msgid "Upload %d books to device" msgstr "Upload %d books to device" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:243 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:252 msgid "Delete books from device" msgstr "Delete books from device" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:260 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:269 msgid "Download books from device" msgstr "Download books from device" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:270 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:279 msgid "View book on device" msgstr "View book on device" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:277 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:286 msgid "and delete from library" msgstr "and delete from library" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:298 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:307 msgid "Set default send to device action" msgstr "Set default send to device action" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:303 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:310 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:312 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:314 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:323 msgid "Email to" msgstr "Email to" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:325 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:332 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:341 msgid "Send to main memory" msgstr "Send to main memory" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:327 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:336 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:343 msgid "Send to storage card A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:329 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:336 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:338 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:345 msgid "Send to storage card B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:339 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:348 msgid "Send specific format to main memory" msgstr "Send specific format to main memory" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:341 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:350 msgid "Send specific format to storage card A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:343 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:352 msgid "Send specific format to storage card B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:487 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:496 msgid "selected to send" msgstr "selected to send" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:492 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:501 msgid "Choose format to send to device" msgstr "Choose format to send to device" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:499 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:508 msgid "No device" msgstr "No device" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:500 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:509 msgid "Cannot send: No device is connected" msgstr "Cannot send: No device is connected" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:503 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:512 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:516 msgid "No card" msgstr "No card" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:504 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:513 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:517 msgid "Cannot send: Device has no storage card" msgstr "Cannot send: Device has no storage card" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:558 msgid "E-book:" msgstr "E-book:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:561 msgid "Attached, you will find the e-book" msgstr "Attached, you will find the e-book" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:562 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:177 msgid "by" msgstr "by" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:563 msgid "in the %s format." msgstr "in the %s format." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:568 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:576 msgid "Sending email to" msgstr "Sending email to" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:598 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:605 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:698 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:812 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:819 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:606 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:613 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:705 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:765 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:888 msgid "No suitable formats" msgstr "No suitable formats" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:599 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:607 msgid "Auto convert the following books before sending via email?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:606 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:614 msgid "" "Could not email the following books as no suitable formats were found:" msgstr "" "Could not email the following books as no suitable formats were found:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:625 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:632 msgid "Failed to email books" msgstr "Failed to email books" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:626 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:633 msgid "Failed to email the following books:" msgstr "Failed to email the following books:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:630 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:637 msgid "Sent by email:" msgstr "Sent by email:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:657 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:664 msgid "News:" msgstr "News:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:658 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:665 msgid "Attached is the" msgstr "Attached is the" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:669 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:676 msgid "Sent news to" msgstr "Sent news to" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:699 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:813 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:766 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:882 msgid "Auto convert the following books before uploading to the device?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:730 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:735 +msgid "Sending catalogs to device." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:796 msgid "Sending news to device." msgstr "Sending news to device." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:782 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:850 msgid "Sending books to device." msgstr "Sending books to device." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:820 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:889 msgid "" "Could not upload the following books to the device, as no suitable formats " "were found. Convert the book(s) to a format supported by your device first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:868 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:937 msgid "No space on device" msgstr "No space on device" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:869 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:938 msgid "" "

Cannot upload books to device there is no more free space available " msgstr "" "

Cannot upload books to device there is no more free space available " -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:75 msgid "Select available formats and their order for this device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:79 msgid "Use sub directories" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:85 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:345 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1007 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:81 +msgid "Save &template:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1050 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:92 msgid "Path" msgstr "Path" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:87 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:89 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:216 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:344 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 msgid "Formats" msgstr "Formats" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:68 +msgid "Fit &cover to view" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:69 msgid "&Previous" msgstr "&Previous" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:70 msgid "&Next" msgstr "&Next" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:37 +msgid "My Books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:264 +msgid "Generate catalog" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:68 +msgid "Catalog &format:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:69 +msgid "" +"Catalog &title (existing catalog with the same title will be replaced):" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:70 +msgid "&Send catalog to device automatically" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:71 +msgid "Catalog options" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:72 +msgid "Generate catalog for {0} books" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:40 msgid "Choose Format" msgstr "Choose Format" @@ -3592,6 +3844,12 @@ msgstr "" msgid "plugins" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:180 +msgid "" +"\n" +"Customization: " +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:196 msgid "Conversion" msgstr "" @@ -3656,128 +3914,128 @@ msgstr "" msgid "new email address" msgstr "new email address" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:465 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:795 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:140 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1045 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:478 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:823 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1248 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 msgid "Error" msgstr "Error" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:479 msgid "Failed to install command line tools." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:482 msgid "Command line tools installed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:470 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:483 msgid "Command line tools installed in" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:471 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:484 msgid "" "If you move calibre.app, you have to re-install the command line tools." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:535 msgid "No valid plugin path" msgstr "No valid plugin path" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:523 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:536 msgid "%s is not a valid plugin path" msgstr "%s is not a valid plugin path" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:539 msgid "Choose plugin" msgstr "Choose plugin" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551 msgid "Plugin cannot be disabled" msgstr "Plugin cannot be disabled" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:552 msgid "The plugin: %s cannot be disabled" msgstr "The plugin: %s cannot be disabled" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:561 msgid "Plugin not customizable" msgstr "Plugin not customizable" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:562 msgid "Plugin: %s does not need customization" msgstr "Plugin: %s does not need customization" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:573 -msgid "Customize %s" -msgstr "Customize %s" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:570 +msgid "Customize" +msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:583 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:608 msgid "Cannot remove builtin plugin" msgstr "Cannot remove builtin plugin" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:584 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:609 msgid " cannot be removed. It is a builtin plugin. Try disabling it instead." msgstr "" " cannot be removed. It is a builtin plugin. Try disabling it instead." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:617 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:642 msgid "Error log:" msgstr "Error log:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:624 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:649 msgid "Access log:" msgstr "Access log:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:652 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:589 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:677 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:659 msgid "Failed to start content server" msgstr "Failed to start content server" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:676 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:503 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:701 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:550 msgid "Select location for books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:684 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:709 msgid "Invalid size" msgstr "Invalid size" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:685 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:710 msgid "The size %s is invalid. must be of the form widthxheight" msgstr "The size %s is invalid. Must be of the form widthxheight" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:736 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:741 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:764 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:769 msgid "Invalid database location" msgstr "Invalid database location" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:737 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:765 msgid "Invalid database location " msgstr "Invalid database location " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:738 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:766 msgid "
Must be a directory." msgstr "
Must be a directory." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:742 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:770 msgid "Invalid database location.
Cannot write to " msgstr "Invalid database location.
Cannot write to " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:776 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:804 msgid "Checking database integrity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:796 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:824 msgid "Failed to check database integrity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:801 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:829 msgid "Some inconsistencies found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:802 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:830 msgid "" "The following books had formats listed in the database that are not actually " "available. The entries for the formats have been removed. You should check " @@ -3785,14 +4043,6 @@ msgid "" "folder directly." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save.py:68 -msgid "Invalid template" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save.py:69 -msgid "The template %s is invalid:" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:100 msgid "TabWidget" msgstr "" @@ -3809,239 +4059,259 @@ msgid "Read metadata only from &file name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:103 -msgid "&Configure metadata from file name" +msgid "" +"Swap the firstname and lastname of the author. This affects only metadata " +"read from file names." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:104 -msgid "&Adding books" +msgid "&Swap author firstname and lastname" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:105 +msgid "&Configure metadata from file name" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:106 +msgid "&Adding books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:107 msgid "" "Here you can control how calibre will save your books when you click the " "Save to Disk button:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:108 msgid "Save &cover separately" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:109 msgid "Update &metadata in saved copies" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:110 msgid "Save metadata in &OPF file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:111 msgid "Convert non-English characters to &English equivalents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:112 msgid "Format &dates as:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:113 msgid "File &formats to save:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:112 -msgid "Save &template" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:113 -msgid "" -"By adjusting the template below, you can control what folders the files are " -"saved in and what filenames they are given. You can use the / character to " -"indicate sub-folders. Available metadata variables are described below. If a " -"particular book does not have some metadata, the variable will be replaced " -"by the empty string." -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:114 -msgid "Available variables:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:115 msgid "Replace space with &underscores" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:115 msgid "Change paths to &lowercase" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:116 msgid "&Saving books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:490 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:368 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:173 -msgid "Preferences" -msgstr "Preferences" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:491 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:117 msgid "" -"&Location of ebooks (The ebooks are stored in folders sorted by author and " -"metadata is stored in the file metadata.db)" +"Here you can control how calibre will save your books when you click the " +"Send to Device button. This setting can be overriden for individual devices " +"by customizing the device interface plugins in Preferences->Plugins" msgstr "" -"&Location of ebooks (The ebooks are stored in folders sorted by author and " -"metadata is stored in the file metadata.db)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:492 -msgid "Browse for the new database location" -msgstr "Browse for the new database location" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:494 -msgid "Show notification when &new version is available" -msgstr "Show notification when &new version is available" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:495 -msgid "Default network &timeout:" -msgstr "Default network &timeout:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:496 -msgid "" -"Set the default timeout for network fetches (i.e. anytime we go out to the " -"internet to get information)" -msgstr "" -"Set the default timeout for network fetches (i.e. anytime we go out to the " -"internet to get information)" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:497 -msgid " seconds" -msgstr " seconds" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:498 -msgid "Choose &language (requires restart):" -msgstr "Choose &language (requires restart):" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:499 -msgid "Normal" -msgstr "Normal" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:500 -msgid "High" -msgstr "High" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:501 -msgid "Low" -msgstr "Low" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:502 -msgid "Job &priority:" -msgstr "Job &priority:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:503 -msgid "Preferred &output format:" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:118 +msgid "Sending to &device" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:366 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 +msgid "Preferences" +msgstr "Preferences" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 +msgid "" +"&Location of ebooks (The ebooks are stored in folders sorted by author and " +"metadata is stored in the file metadata.db)" +msgstr "" +"&Location of ebooks (The ebooks are stored in folders sorted by author and " +"metadata is stored in the file metadata.db)" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 +msgid "Browse for the new database location" +msgstr "Browse for the new database location" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 +msgid "Show notification when &new version is available" +msgstr "Show notification when &new version is available" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 +msgid "Download &social metadata (tags/ratings/etc.) by default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 +msgid "Overwrite & author/title by default when fetching metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 +msgid "Default network &timeout:" +msgstr "Default network &timeout:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 +msgid "" +"Set the default timeout for network fetches (i.e. anytime we go out to the " +"internet to get information)" +msgstr "" +"Set the default timeout for network fetches (i.e. anytime we go out to the " +"internet to get information)" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 +msgid " seconds" +msgstr " seconds" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 +msgid "Choose &language (requires restart):" +msgstr "Choose &language (requires restart):" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 +msgid "Normal" +msgstr "Normal" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 +msgid "High" +msgstr "High" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 +msgid "Low" +msgstr "Low" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 +msgid "Job &priority:" +msgstr "Job &priority:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 +msgid "Preferred &output format:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 msgid "Preferred &input format order:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 msgid "Use &Roman numerals for series number" msgstr "Use &Roman numerals for series number" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 msgid "Enable system &tray icon (needs restart)" msgstr "Enable system &tray icon (needs restart)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 msgid "Show ¬ifications in system tray" msgstr "Show ¬ifications in system tray" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 msgid "Show cover &browser in a separate window (needs restart)" msgstr "Show cover &browser in a separate window (needs restart)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 msgid "Search as you type" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 msgid "Automatically send downloaded &news to ebook reader" msgstr "Automatically send downloaded &news to ebook reader" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 msgid "&Delete news from library when it is automatically sent to reader" msgstr "&Delete news from library when it is automatically sent to reader" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 msgid "&Number of covers to show in browse mode (needs restart):" msgstr "&Number of covers to show in browse mode (needs restart):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 msgid "Toolbar" msgstr "Toolbar" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 msgid "Large" msgstr "Large" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 msgid "Medium" msgstr "Medium" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 msgid "Small" msgstr "Small" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 msgid "&Button size in toolbar" msgstr "&Button size in toolbar" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 msgid "Show &text in toolbar buttons" msgstr "Show &text in toolbar buttons" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 msgid "Select visible &columns in library view" msgstr "Select visible &columns in library view" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 msgid "Use internal &viewer for:" msgstr "Use internal &viewer for:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 msgid "Add an email address to which to send books" msgstr "Add an email address to which to send books" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 msgid "&Add email" msgstr "&Add email" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 msgid "Make &default" msgstr "Make &default" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 msgid "&Remove email" msgstr "&Remove email" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 msgid "calibre can send your books to you (or your reader) by email" msgstr "calibre can send your books to you (or your reader) by email" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 msgid "&Maximum number of waiting worker processes (needs restart):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 msgid "&Check database integrity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 msgid "&Install command line tools" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549 msgid "Open calibre &configuration directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 +msgid "Limit the max. simultaneous jobs to the available CPU &cores" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 +msgid "Debug &device detection" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 msgid "" "calibre contains a network server that allows you to access your book " "collection using a browser from anywhere in the world. Any changes to the " @@ -4051,25 +4321,25 @@ msgstr "" "collection using a browser from anywhere in the world. Any changes to the " "settings will only take effect after a server restart." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553 msgid "Server &port:" msgstr "Server &port:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117 msgid "&Username:" msgstr "&Username:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119 msgid "&Password:" msgstr "&Password:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 msgid "" "If you leave the password blank, anyone will be able to access your book " "collection using the web interface." @@ -4077,7 +4347,7 @@ msgstr "" "If you leave the password blank, anyone will be able to access your book " "collection using the web interface." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " @@ -4085,41 +4355,41 @@ msgstr "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558 msgid "Max. &cover size:" msgstr "Max. &cover size:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212 msgid "&Show password" msgstr "&Show password" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560 msgid "Max. &OPDS items per query:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561 msgid "&Start Server" msgstr "&Start Server" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:562 msgid "St&op Server" msgstr "St&op Server" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:563 msgid "&Test Server" msgstr "&Test Server" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:564 msgid "Run server &automatically on startup" msgstr "Run server &automatically on startup" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:565 msgid "View &server logs" msgstr "View &server logs" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:566 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46 msgid "" "

Remember to leave calibre running as the server only runs as long as " @@ -4130,7 +4400,7 @@ msgid "" "the IP address of the computer calibre is running on." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:568 msgid "" "Here you can customize the behavior of Calibre by controlling what plugins " "it uses." @@ -4138,30 +4408,71 @@ msgstr "" "Here you can customize the behavior of Calibre by controlling what plugins " "it uses." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:569 msgid "Enable/&Disable plugin" msgstr "Enable/&Disable plugin" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:570 msgid "&Customize plugin" msgstr "&Customize plugin" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:571 msgid "&Remove plugin" msgstr "&Remove plugin" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:572 msgid "Add new plugin" msgstr "Add new plugin" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:573 msgid "Plugin &file:" msgstr "Plugin &file:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:575 msgid "&Add" msgstr "&Add" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/device_debug.py:21 +msgid "Getting debug information" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/device_debug.py:22 +msgid "Copy to &clipboard" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/device_debug.py:24 +msgid "Debug device detection" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template.py:44 +msgid "Invalid template" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template.py:45 +msgid "The template %s is invalid:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template_ui.py:42 +msgid "Save &template" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template_ui.py:43 +msgid "" +"By adjusting the template below, you can control what folders the files are " +"saved in and what filenames they are given. You can use the / character to " +"indicate sub-folders. Available metadata variables are described below. If a " +"particular book does not have some metadata, the variable will be replaced " +"by the empty string." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template_ui.py:44 +msgid "Available variables:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/social.py:34 +msgid "Downloading social metadata, please wait..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:48 msgid "Are you sure?" msgstr "Are you sure?" @@ -4182,41 +4493,41 @@ msgstr "Author Sort" msgid "ISBN" msgstr "ISBN" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:151 msgid "Finding metadata..." msgstr "Finding metadata..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:164 msgid "Could not find metadata" msgstr "Could not find metadata" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:159 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:165 msgid "The metadata download seems to have stalled. Try again later." msgstr "The metadata download seems to have stalled. Try again later." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:174 msgid "Warning" msgstr "Warning" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:175 msgid "Could not fetch metadata from:" msgstr "Could not fetch metadata from:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:179 msgid "No metadata found" msgstr "No metadata found" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:180 msgid "" "No metadata found, try adjusting the title and author or the ISBN key." msgstr "" "No metadata found, try adjusting the title and author or the ISBN key." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:84 msgid "Fetch metadata" msgstr "Fetch metadata" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85 msgid "" "

calibre can find metadata for your books from two locations: Google " "Books and isbndb.com.

To use isbndb.com you must sign up for a " @@ -4228,24 +4539,32 @@ msgstr "" "free account and enter your access key " "below." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:86 msgid "&Access Key:" msgstr "&Access Key:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87 msgid "Fetch" msgstr "Fetch" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:88 msgid "Matches" msgstr "Matches" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:89 msgid "" "Select the book that most closely matches your copy from the list below" msgstr "" "Select the book that most closely matches your copy from the list below" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:90 +msgid "Download &social metadata (tags/rating/etc.) for the selected book" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:91 +msgid "Overwrite &author/title with author/title of selected book" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/job_view_ui.py:37 msgid "Details of job" msgstr "Details of job" @@ -4266,25 +4585,25 @@ msgstr "" msgid "Stop &all jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:138 msgid "Edit Meta information" msgstr "Edit Meta information" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:134 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:353 msgid "Meta information" msgstr "Meta information" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:141 msgid "A&utomatically set author sort" msgstr "A&utomatically set author sort" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:142 msgid "Author s&ort: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:138 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360 msgid "" "Specify how the author(s) of this book should be sorted. For example Charles " "Dickens should be sorted as Dickens, Charles." @@ -4292,211 +4611,240 @@ msgstr "" "Specify how the author(s) of this book should be sorted. For example Charles " "Dickens should be sorted as Dickens, Charles." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:139 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:363 msgid "&Rating:" msgstr "&Rating:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:140 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:141 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:365 msgid "Rating of this book. 0-5 stars" msgstr "Rating of this book. 0-5 stars" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:142 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:365 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:147 +msgid "No change" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:366 msgid " stars" msgstr " stars" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:150 msgid "Add ta&gs: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:146 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:147 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:369 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:370 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371 msgid "Open Tag Editor" msgstr "Open Tag Editor" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:154 msgid "&Remove tags:" msgstr "&Remove tags:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:155 msgid "Comma separated list of tags to remove from the books. " msgstr "Comma separated list of tags to remove from the books. " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:159 msgid "Remove &format:" msgstr "Remove &format:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:160 +msgid "&Swap title and author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:123 msgid "Not a valid picture" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:136 msgid "Choose formats for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:134 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:885 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1004 msgid "Books" msgstr "Books" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:165 +msgid "No permission" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:166 msgid "You do not have permission to read the following files:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:184 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:190 msgid "No format selected" msgstr "No format selected" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:201 msgid "Could not read metadata" msgstr "Could not read metadata" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:202 msgid "Could not read metadata from %s format" msgstr "Could not read metadata from %s format" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:241 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:247 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:253 msgid "Could not read cover" msgstr "Could not read cover" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:248 msgid "Could not read cover from %s format" msgstr "Could not read cover from %s format" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:254 msgid "The cover in the %s format is invalid" msgstr "The cover in the %s format is invalid" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:291 msgid "Abort the editing of all remaining books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:488 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:407 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:412 +msgid "This ISBN number is valid" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:415 +msgid "This ISBN number is invalid" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:511 msgid "Downloading cover..." msgstr "Downloading cover..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:500 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:505 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:511 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:523 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:528 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:534 msgid "Cannot fetch cover" msgstr "Cannot fetch cover" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:501 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:512 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:535 msgid "Could not fetch cover.
" msgstr "Could not fetch cover.
" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:525 msgid "The download timed out." msgstr "The download timed out." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:506 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:529 msgid "Could not find cover for this book. Try specifying the ISBN first." msgstr "Could not find cover for this book. Try specifying the ISBN first." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:518 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:541 msgid "Bad cover" msgstr "Bad cover" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:519 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:542 msgid "The cover is not a valid picture" msgstr "The cover is not a valid picture" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:559 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:572 +msgid "There were errors" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:573 +msgid "There were errors downloading social metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:598 msgid "Cannot fetch metadata" msgstr "Cannot fetch metadata" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:599 msgid "You must specify at least one of ISBN, Title, Authors or Publisher" msgstr "You must specify at least one of ISBN, Title, Authors or Publisher" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:612 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:664 msgid "Permission denied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:613 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:665 msgid "Could not open %s. Is it being used by another program?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:352 msgid "Edit Meta Information" msgstr "Edit Meta Information" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:356 msgid "Swap the author and title" msgstr "Swap the author and title" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:359 msgid "Author S&ort: " msgstr "Author S&ort: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:361 msgid "" "Automatically create the author sort entry based on the current author entry" msgstr "" "Automatically create the author sort entry based on the current author entry" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375 msgid "Remove unused series (Series that have no books)" msgstr "Remove unused series (Series that have no books)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:377 msgid "IS&BN:" msgstr "IS&BN:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:377 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:378 msgid "Publishe&d:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:380 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:381 msgid "dd MMM yyyy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:381 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:382 msgid "&Date:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:383 msgid "&Comments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:383 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:384 msgid "&Fetch metadata from server" msgstr "&Fetch metadata from server" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:385 msgid "Available Formats" msgstr "Available Formats" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:386 msgid "Add a new format for this book to the database" msgstr "Add a new format for this book to the database" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:387 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:388 msgid "Remove the selected formats for this book from the database." msgstr "Remove the selected formats for this book from the database." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:390 msgid "Set the cover for the book from the selected format" msgstr "Set the cover for the book from the selected format" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:391 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:392 msgid "Update metadata from the metadata in the selected format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:396 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:397 msgid "Reset cover to default" msgstr "Reset cover to default" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:398 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:399 msgid "Download &cover" msgstr "Download &cover" @@ -4707,17 +5055,19 @@ msgstr "Any of these &unwanted words:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:95 msgid "" -"See the User Manual for more help" +"See the User Manual for more help" msgstr "" -"See the User Manual for more help" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/select_formats.py:45 +msgid "Choose formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:66 msgid "Are your sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:67 msgid "" "The following tags are used by one or more books. Are you certain you want " "to delete them?" @@ -4776,7 +5126,7 @@ msgid "Send test mail from %s to:" msgstr "Send test mail from %s to:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:115 msgid "&Test" msgstr "&Test" @@ -4972,7 +5322,7 @@ msgstr "" msgid "Recipe source code (python)" msgstr "Recipe source code (python)" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:107 msgid "" "\n" @@ -4996,142 +5346,155 @@ msgid "" "metadata entries are documented in tooltips.

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:114 msgid "Regular &expression" msgstr "Regular &expression" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:116 msgid "File &name:" msgstr "File &name:" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:117 msgid "Test" msgstr "Test" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:118 msgid "Title:" msgstr "Title:" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:119 msgid "Regular expression (?P<title>)" msgstr "Regular expression (?P<title>)" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:110 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:113 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:119 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:80 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:92 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:94 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:96 msgid "No match" msgstr "No match" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:121 msgid "Authors:" msgstr "Authors:" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:122 msgid "Regular expression (?P)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:124 msgid "Series:" msgstr "Series:" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:125 msgid "Regular expression (?P)" msgstr "Regular expression (?P)" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:127 msgid "Series index:" msgstr "Series index:" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:128 msgid "Regular expression (?P)" msgstr "Regular expression (?P)" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:130 msgid "ISBN:" msgstr "ISBN:" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:131 msgid "Regular expression (?P)" msgstr "Regular expression (?P)" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:53 msgid "Job" msgstr "Job" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:54 msgid "Status" msgstr "Status" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:55 msgid "Progress" msgstr "Progress" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:56 msgid "Running time" msgstr "Running time" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:68 +msgid "There are %d running jobs:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:94 msgid "Unknown job" msgstr "Unknown job" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:189 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:75 +msgid "There are %d waiting jobs:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:214 msgid "Cannot kill job" msgstr "Cannot kill job" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:212 msgid "Cannot kill jobs that communicate with the device" msgstr "Cannot kill jobs that communicate with the device" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:215 msgid "Job has already run" msgstr "Job has already run" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:243 msgid "Unavailable" msgstr "Unavailable" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:232 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:254 msgid " - Jobs" msgstr " - Jobs" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1070 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1113 msgid "Size (MB)" msgstr "Size (MB)" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:161 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1071 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1114 msgid "Date" msgstr "Date" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:168 msgid "Rating" msgstr "Rating" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:337 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:343 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:348 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:408 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:440 msgid "None" msgstr "None" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:365 msgid "Book %s of %s." msgstr "Book %s of %s." -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:834 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:877 msgid "Not allowed" msgstr "Not allowed" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:835 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:878 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -5139,11 +5502,11 @@ msgstr "" "Dropping onto a device is not supported. First add the book to the calibre " "library." -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1006 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1049 msgid "Format" msgstr "Format" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1060 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1103 msgid "Double click to edit me

" msgstr "Double click to edit me

" @@ -5163,16 +5526,16 @@ msgstr "Hyphenate" msgid "Changes will only take effect after a restart." msgstr "Changes will only take effect after a restart." -#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:70 msgid " - LRF Viewer" msgstr " - LRF Viewer" -#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 msgid "No matches for the search phrase %s were found." msgstr "No matches for the search phrase %s were found." -#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:157 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:421 +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:410 msgid "No matches found" msgstr "No matches found" @@ -5197,12 +5560,12 @@ msgid "Previous Page" msgstr "Previous Page" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:182 msgid "Back" msgstr "Back" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:134 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:183 msgid "Forward" msgstr "Forward" @@ -5211,7 +5574,7 @@ msgid "Next match" msgstr "Next match" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:136 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:190 msgid "Open ebook" msgstr "Open ebook" @@ -5219,635 +5582,186 @@ msgstr "Open ebook" msgid "Configure" msgstr "Configure" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:57 -msgid "Save single format to disk..." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:124 -msgid "Search (For Advanced Search click the button to the left)" -msgstr "Search (For Advanced Search click the button to the left)" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:141 -msgid "Error communicating with device" -msgstr "Error communicating with device" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:155 -msgid "&Restore" -msgstr "&Restore" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:157 -msgid "&Donate to support calibre" -msgstr "&Donate to support calibre" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:162 -msgid "&Restart" -msgstr "&Restart" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:201 -msgid "" -"

For help visit %s.kovidgoyal.net
" -msgstr "" -"

For help visit %s.kovidgoyal.net
" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:204 -msgid "%s: %s by Kovid Goyal %%(version)s
%%(device)s

" -msgstr "%s: %s by Kovid Goyal %%(version)s
%%(device)s

" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:227 -msgid "Edit metadata individually" -msgstr "Edit metadata individually" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 -msgid "Edit metadata in bulk" -msgstr "Edit metadata in bulk" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:231 -msgid "Download metadata and covers" -msgstr "Download metadata and covers" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:232 -msgid "Download only metadata" -msgstr "Download only metadata" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:233 -msgid "Download only covers" -msgstr "Download only covers" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:236 -msgid "Add books from a single directory" -msgstr "Add books from a single directory" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:237 -msgid "" -"Add books from directories, including sub-directories (One book per " -"directory, assumes every ebook file is the same book in a different format)" -msgstr "" -"Add books from directories, including sub-directories (One book per " -"directory, assumes every ebook file is the same book in a different format)" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:240 -msgid "" -"Add books from directories, including sub directories (Multiple books per " -"directory, assumes every ebook file is a different book)" -msgstr "" -"Add books from directories, including sub directories (Multiple books per " -"directory, assumes every ebook file is a different book)" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:243 -msgid "Add Empty book. (Book entry with no formats)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:354 -msgid "Save to disk" -msgstr "Save to disk" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:281 -msgid "Save to disk in a single directory" -msgstr "Save to disk in a single directory" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:282 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1473 -msgid "Save only %s format to disk" -msgstr "Save only %s format to disk" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:290 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:360 -msgid "View" -msgstr "View" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:291 -msgid "View specific format" -msgstr "View specific format" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:317 -msgid "Convert individually" -msgstr "Convert individually" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:318 -msgid "Bulk convert" -msgstr "Bulk convert" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:333 -msgid "Run welcome wizard" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:367 -msgid "Similar books..." -msgstr "Similar books..." - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:427 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:428 -msgid "Bad database location" -msgstr "Bad database location" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:430 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:511 -msgid "Calibre Library" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:440 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1616 -msgid "Choose a location for your ebook library." -msgstr "Choose a location for your ebook library." - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:632 -msgid "Browse by covers" -msgstr "Browse by covers" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:739 -msgid "Device: " -msgstr "Device: " - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:741 -msgid " detected." -msgstr " detected." - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:763 -msgid "Connected " -msgstr "Connected " - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:775 -msgid "Device database corrupted" -msgstr "Device database corrupted" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:776 -msgid "" -"\n" -"

The database of books on the reader is corrupted. Try the " -"following:\n" -"

    \n" -"
  1. Unplug the reader. Wait for it to finish regenerating " -"the database (i.e. wait till it is ready to be used). Plug it back in. Now " -"it should work with %(app)s. If not try the next step.
  2. \n" -"
  3. Quit %(app)s. Find the file media.xml in the reader's " -"main memory. Delete it. Unplug the reader. Wait for it to regenerate the " -"file. Re-connect it and start %(app)s.
  4. \n" -"
\n" -" " -msgstr "" -"\n" -"

The database of books on the reader is corrupted. Try the " -"following:\n" -"

    \n" -"
  1. Unplug the reader. Wait for it to finish regenerating " -"the database (i.e. wait till it is ready to be used). Plug it back in. Now " -"it should work with %(app)s. If not try the next step.
  2. \n" -"
  3. Quit %(app)s. Find the file media.xml in the reader's " -"main memory. Delete it. Unplug the reader. Wait for it to regenerate the " -"file. Re-connect it and start %(app)s.
  4. \n" -"
\n" -" " - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:877 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:920 -msgid "Uploading books to device." -msgstr "Uploading books to device." - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:886 -msgid "EPUB Books" -msgstr "EPUB Books" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:887 -msgid "LRF Books" -msgstr "LRF Books" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:888 -msgid "HTML Books" -msgstr "HTML Books" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:889 -msgid "LIT Books" -msgstr "LIT Books" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:890 -msgid "MOBI Books" -msgstr "MOBI Books" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:891 -msgid "Text books" -msgstr "Text books" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:892 -msgid "PDF Books" -msgstr "PDF Books" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:893 -msgid "Comics" -msgstr "Comics" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:894 -msgid "Archives" -msgstr "Archives" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:929 -msgid "Failed to read metadata" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:930 -msgid "Failed to read metadata from the following" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:949 -msgid "" -"The selected books will be permanently deleted and the files removed " -"from your computer. Are you sure?" -msgstr "" -"The selected books will be permanently deleted and the files removed " -"from your computer. Are you sure?" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:976 -msgid "Deleting books from device." -msgstr "Deleting books from device." - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1007 -msgid "Cannot download metadata" -msgstr "Cannot download metadata" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1008 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1056 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1089 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1114 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1226 -msgid "No books selected" -msgstr "No books selected" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1017 -msgid "covers" -msgstr "covers" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1017 -msgid "metadata" -msgstr "metadata" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1019 -msgid "Downloading %s for %d book(s)" -msgstr "Downloading %s for %d book(s)" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1040 -msgid "Failed to download some metadata" -msgstr "Failed to download some metadata" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1041 -msgid "Failed to download metadata for the following:" -msgstr "Failed to download metadata for the following:" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1044 -msgid "Failed to download metadata:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1055 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1088 -msgid "Cannot edit metadata" -msgstr "Cannot edit metadata" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1113 -msgid "Cannot save to disk" -msgstr "Cannot save to disk" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1116 -msgid "Choose destination directory" -msgstr "Choose destination directory" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1143 -msgid "Error while saving" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1144 -msgid "There was an error while saving." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1151 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1152 -msgid "Could not save some books" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1153 -msgid "Click the show details button to see which ones." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1172 -msgid "Fetching news from " -msgstr "Fetching news from " - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1185 -msgid " fetched." -msgstr " fetched." - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1225 -msgid "Cannot convert" -msgstr "Cannot convert" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1254 -msgid "Starting conversion of %d book(s)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1365 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1384 -msgid "No book selected" -msgstr "No book selected" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1365 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1415 -msgid "Cannot view" -msgstr "Cannot view" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1383 -msgid "Cannot open folder" -msgstr "Cannot open folder" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1400 -msgid "Multiple Books Selected" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1401 -msgid "" -"You are attempting to open %d books. Opening too many books at once can be " -"slow and have a negative effect on the responsiveness of your computer. Once " -"started the process cannot be stopped until complete. Do you wish to " -"continue?" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1416 -msgid "%s has no available formats." -msgstr "%s has no available formats." - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1457 -msgid "Cannot configure" -msgstr "Cannot configure" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1458 -msgid "Cannot configure while there are running jobs." -msgstr "Cannot configure while there are running jobs." - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1501 -msgid "No detailed info available" -msgstr "No detailed info available" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1502 -msgid "No detailed information is available for books on the device." -msgstr "No detailed information is available for books on the device." - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1554 -msgid "Error talking to device" -msgstr "Error talking to device" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1555 -msgid "" -"There was a temporary error talking to the device. Please unplug and " -"reconnect the device and or reboot." -msgstr "" -"There was a temporary error talking to the device. Please unplug and " -"reconnect the device and or reboot." - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1578 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1596 -msgid "Conversion Error" -msgstr "Conversion Error" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1579 -msgid "" -"

Could not convert: %s

It is a DRMed book. You must " -"first remove the DRM using third party tools." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1597 -msgid "Failed" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1625 -msgid "Invalid library location" -msgstr "Invalid library location" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1626 -msgid "Could not access %s. Using %s as the library." -msgstr "Could not access %s. Using %s as the library." - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1674 -msgid "" -"is the result of the efforts of many volunteers from all over the world. If " -"you find it useful, please consider donating to support its development." -msgstr "" -"is the result of the efforts of many volunteers from all over the world. If " -"you find it useful, please consider donating to support its development." - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1698 -msgid "There are active jobs. Are you sure you want to quit?" -msgstr "There are active jobs. Are you sure you want to quit?" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1701 -msgid "" -" is communicating with the device!
\n" -" Quitting may cause corruption on the device.
\n" -" Are you sure you want to quit?" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1705 -msgid "WARNING: Active jobs" -msgstr "WARNING: Active jobs" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1756 -msgid "" -"will keep running in the system tray. To close it, choose Quit in the " -"context menu of the system tray." -msgstr "" -"will keep running in the system tray. To close it, choose Quit in the " -"context menu of the system tray." - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1775 -msgid "" -"Latest version: %s" -msgstr "" -"Latest version: %s" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1783 -msgid "Update available" -msgstr "Update available" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1784 -msgid "" -"%s has been updated to version %s. See the new features. " -"Visit the download page?" -msgstr "" -"%s has been updated to version %s. See the new features. " -"Visit the download page?" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1802 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:25 msgid "Use the library located at the specified path." msgstr "Use the library located at the specified path." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1804 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:27 msgid "Start minimized to system tray." msgstr "Start minimized to system tray." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1806 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:29 msgid "Log debugging information to console" msgstr "Log debugging information to console" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1808 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:31 msgid "Do not check for updates" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1856 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:83 msgid "If you are sure it is not running" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1858 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:85 msgid "Cannot Start " msgstr "Cannot Start " -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1859 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:86 msgid "%s is already running." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1862 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:89 msgid "may be running in the system tray, in the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1864 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:91 msgid "upper right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1866 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:93 msgid "lower right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1869 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:96 msgid "try rebooting your computer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1871 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1883 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:110 msgid "try deleting the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:333 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:331 msgid "calibre" msgstr "calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:335 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:333 msgid "Advanced search" msgstr "Advanced search" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:337 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:335 msgid "Alt+S" msgstr "Alt+S" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:338 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:336 msgid "&Search:" msgstr "&Search:" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:339 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:337 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:338 msgid "" "

Search the list of books by title, author, publisher, tags, comments, " "etc.

Words separated by spaces are ANDed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:341 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:339 msgid "Reset Quick Search" msgstr "Reset Quick Search" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:343 -msgid "Match any" -msgstr "Match any" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:344 -msgid "Match all" -msgstr "Match all" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:341 msgid "Sort by &popularity" msgstr "Sort by &popularity" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:346 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:342 +msgid "Match any" +msgstr "Match any" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:343 +msgid "Match all" +msgstr "Match all" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:344 msgid "Add books" msgstr "Add books" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:345 msgid "A" msgstr "A" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:348 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:349 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:346 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:347 msgid "Remove books" msgstr "Remove books" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:348 msgid "Del" msgstr "Del" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:349 msgid "Edit meta information" msgstr "Edit meta information" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:350 msgid "E" msgstr "E" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:351 msgid "Send to device" msgstr "Send to device" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:304 +msgid "Save to disk" +msgstr "Save to disk" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:353 msgid "S" msgstr "S" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:354 msgid "Fetch news" msgstr "Fetch news" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:355 msgid "F" msgstr "F" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:356 msgid "Convert E-books" msgstr "Convert E-books" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:357 msgid "C" msgstr "C" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:314 +msgid "View" +msgstr "View" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:359 msgid "V" msgstr "V" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:360 msgid "Open containing folder" msgstr "Open containing folder" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:361 msgid "Show book details" msgstr "Show book details" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:362 msgid "Books by same author" msgstr "Books by same author" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:365 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:363 msgid "Books in this series" msgstr "Books in this series" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:366 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:364 msgid "Books by this publisher" msgstr "Books by this publisher" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:367 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:365 msgid "Books with the same tags" msgstr "Books with the same tags" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:369 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:367 msgid "Configure calibre" msgstr "Configure calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:370 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:368 msgid "Ctrl+P" msgstr "Ctrl+P" @@ -5871,11 +5785,11 @@ msgstr "&Quit" msgid "ERROR: Unhandled exception" msgstr "ERROR: Unhandled exception" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:89 msgid "Book has neither title nor ISBN" msgstr "Book has neither title nor ISBN" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:115 msgid "No matches found for this book" msgstr "No matches found for this book" @@ -5883,6 +5797,66 @@ msgstr "No matches found for this book" msgid "Search" msgstr "Search" +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:58 +msgid "Press a key..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:79 +msgid "Already assigned" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:81 +msgid "already assigned to" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 +msgid " or " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:68 +msgid "&Default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:135 +msgid "Customize shortcuts for" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 +msgid "Keys" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:225 +msgid "Double click to change" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:67 +msgid "Frame" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:69 +msgid "&Custom" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:70 +msgid "&Shortcut:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:76 +msgid "Click to change" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:78 +msgid "Clear" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:75 +msgid "&Alternate shortcut:" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/status.py:149 msgid "Jobs:" msgstr "Jobs:" @@ -5891,15 +5865,15 @@ msgstr "Jobs:" msgid "Click to see list of active jobs." msgstr "Click to see list of active jobs." -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:196 msgid "Click to browse books by their covers" msgstr "Click to browse books by their covers" -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:196 msgid "Click to turn off Cover Browsing" msgstr "Click to turn off Cover Browsing" -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:201 msgid "" "

Browsing books by their covers is disabled.
Import of pictureflow " "module failed:
" @@ -5907,15 +5881,15 @@ msgstr "" "

Browsing books by their covers is disabled.
Import of pictureflow " "module failed:
" -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:209 msgid "Click to browse books by tags" msgstr "Click to browse books by tags" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 msgid "Authors" msgstr "Authors" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 msgid "Publishers" msgstr "Publishers" @@ -5936,7 +5910,7 @@ msgid "" "found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:120 msgid "Queueing books for bulk conversion" msgstr "" @@ -5948,16 +5922,539 @@ msgstr "" msgid "Fetch news from " msgstr "Fetch news from " -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:276 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:249 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:277 msgid "" "The following books have already been converted to %s format. Do you wish to " "reconvert them?" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:63 +msgid "Save single format to disk..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:142 +msgid "Search (For Advanced Search click the button to the left)" +msgstr "Search (For Advanced Search click the button to the left)" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:159 +msgid "Error communicating with device" +msgstr "Error communicating with device" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:176 +msgid "&Restore" +msgstr "&Restore" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:178 +msgid "&Donate to support calibre" +msgstr "&Donate to support calibre" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:183 +msgid "&Restart" +msgstr "&Restart" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:222 +msgid "

For help see the: User Manual
" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:224 +msgid "%s: %s by Kovid Goyal %%(version)s
%%(device)s

" +msgstr "%s: %s by Kovid Goyal %%(version)s
%%(device)s

" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:247 +msgid "Edit metadata individually" +msgstr "Edit metadata individually" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:249 +msgid "Edit metadata in bulk" +msgstr "Edit metadata in bulk" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:251 +msgid "Download metadata and covers" +msgstr "Download metadata and covers" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:252 +msgid "Download only metadata" +msgstr "Download only metadata" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:253 +msgid "Download only covers" +msgstr "Download only covers" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:254 +msgid "Download only social metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:257 +msgid "Add books from a single directory" +msgstr "Add books from a single directory" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:258 +msgid "" +"Add books from directories, including sub-directories (One book per " +"directory, assumes every ebook file is the same book in a different format)" +msgstr "" +"Add books from directories, including sub-directories (One book per " +"directory, assumes every ebook file is the same book in a different format)" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:261 +msgid "" +"Add books from directories, including sub directories (Multiple books per " +"directory, assumes every ebook file is a different book)" +msgstr "" +"Add books from directories, including sub directories (Multiple books per " +"directory, assumes every ebook file is a different book)" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:264 +msgid "Add Empty book. (Book entry with no formats)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:305 +msgid "Save to disk in a single directory" +msgstr "Save to disk in a single directory" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1747 +msgid "Save only %s format to disk" +msgstr "Save only %s format to disk" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:315 +msgid "View specific format" +msgstr "View specific format" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:319 +msgid "Remove selected books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:321 +msgid "Remove files of a specific format from selected books.." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:323 +msgid "Remove all formats from selected books, except..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:325 +msgid "Remove covers from selected books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:356 +msgid "Convert individually" +msgstr "Convert individually" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:357 +msgid "Bulk convert" +msgstr "Bulk convert" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:360 +msgid "Create catalog of books in your calibre library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:376 +msgid "Run welcome wizard" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:412 +msgid "Similar books..." +msgstr "Similar books..." + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:472 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:473 +msgid "Bad database location" +msgstr "Bad database location" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:475 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:558 +msgid "Calibre Library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:485 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1903 +msgid "Choose a location for your ebook library." +msgstr "Choose a location for your ebook library." + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:523 +msgid "Calibre Quick Start Guide" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:703 +msgid "Browse by covers" +msgstr "Browse by covers" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:851 +msgid "Device: " +msgstr "Device: " + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:853 +msgid " detected." +msgstr " detected." + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:877 +msgid "Connected " +msgstr "Connected " + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:889 +msgid "Device database corrupted" +msgstr "Device database corrupted" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:890 +msgid "" +"\n" +"

The database of books on the reader is corrupted. Try the " +"following:\n" +"

    \n" +"
  1. Unplug the reader. Wait for it to finish regenerating " +"the database (i.e. wait till it is ready to be used). Plug it back in. Now " +"it should work with %(app)s. If not try the next step.
  2. \n" +"
  3. Quit %(app)s. Find the file media.xml in the reader's " +"main memory. Delete it. Unplug the reader. Wait for it to regenerate the " +"file. Re-connect it and start %(app)s.
  4. \n" +"
\n" +" " +msgstr "" +"\n" +"

The database of books on the reader is corrupted. Try the " +"following:\n" +"

    \n" +"
  1. Unplug the reader. Wait for it to finish regenerating " +"the database (i.e. wait till it is ready to be used). Plug it back in. Now " +"it should work with %(app)s. If not try the next step.
  2. \n" +"
  3. Quit %(app)s. Find the file media.xml in the reader's " +"main memory. Delete it. Unplug the reader. Wait for it to regenerate the " +"file. Re-connect it and start %(app)s.
  4. \n" +"
\n" +" " + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:952 +msgid "How many empty books?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:953 +msgid "How many empty books should be added?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:997 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1043 +msgid "Uploading books to device." +msgstr "Uploading books to device." + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1005 +msgid "EPUB Books" +msgstr "EPUB Books" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1006 +msgid "LRF Books" +msgstr "LRF Books" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1007 +msgid "HTML Books" +msgstr "HTML Books" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1008 +msgid "LIT Books" +msgstr "LIT Books" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1009 +msgid "MOBI Books" +msgstr "MOBI Books" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1010 +msgid "Text books" +msgstr "Text books" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1011 +msgid "PDF Books" +msgstr "PDF Books" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1012 +msgid "Comics" +msgstr "Comics" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1013 +msgid "Archives" +msgstr "Archives" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1017 +msgid "Supported books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1054 +msgid "Failed to read metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1055 +msgid "Failed to read metadata from the following" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1074 +msgid "Cannot delete" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1077 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1633 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1652 +msgid "No book selected" +msgstr "No book selected" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1087 +msgid "Choose formats to be deleted" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1105 +msgid "Choose formats not to be deleted" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1143 +msgid "" +"The selected books will be permanently deleted and the files removed " +"from your computer. Are you sure?" +msgstr "" +"The selected books will be permanently deleted and the files removed " +"from your computer. Are you sure?" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1170 +msgid "Deleting books from device." +msgstr "Deleting books from device." + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1201 +msgid "Cannot download metadata" +msgstr "Cannot download metadata" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1202 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1259 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1292 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1317 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1376 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1489 +msgid "No books selected" +msgstr "No books selected" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217 +msgid "social metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 +msgid "covers" +msgstr "covers" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 +msgid "metadata" +msgstr "metadata" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1221 +msgid "Downloading %s for %d book(s)" +msgstr "Downloading %s for %d book(s)" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1243 +msgid "Failed to download some metadata" +msgstr "Failed to download some metadata" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1244 +msgid "Failed to download metadata for the following:" +msgstr "Failed to download metadata for the following:" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1247 +msgid "Failed to download metadata:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1258 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1291 +msgid "Cannot edit metadata" +msgstr "Cannot edit metadata" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1316 +msgid "Cannot save to disk" +msgstr "Cannot save to disk" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1319 +msgid "Choose destination directory" +msgstr "Choose destination directory" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1346 +msgid "Error while saving" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1347 +msgid "There was an error while saving." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1354 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1355 +msgid "Could not save some books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1356 +msgid "Click the show details button to see which ones." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1377 +msgid "No books selected to generate catalog for" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1394 +msgid "Generating %s catalog..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1405 +msgid "Catalog generated." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1408 +msgid "Export Catalog Directory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1409 +msgid "Select destination for %s.%s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1423 +msgid "Fetching news from " +msgstr "Fetching news from " + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1437 +msgid " fetched." +msgstr " fetched." + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1488 +msgid "Cannot convert" +msgstr "Cannot convert" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1517 +msgid "Starting conversion of %d book(s)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1633 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1689 +msgid "Cannot view" +msgstr "Cannot view" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1651 +msgid "Cannot open folder" +msgstr "Cannot open folder" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1673 +msgid "Multiple Books Selected" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1674 +msgid "" +"You are attempting to open %d books. Opening too many books at once can be " +"slow and have a negative effect on the responsiveness of your computer. Once " +"started the process cannot be stopped until complete. Do you wish to " +"continue?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1690 +msgid "%s has no available formats." +msgstr "%s has no available formats." + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1731 +msgid "Cannot configure" +msgstr "Cannot configure" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1732 +msgid "Cannot configure while there are running jobs." +msgstr "Cannot configure while there are running jobs." + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1775 +msgid "No detailed info available" +msgstr "No detailed info available" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1776 +msgid "No detailed information is available for books on the device." +msgstr "No detailed information is available for books on the device." + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1831 +msgid "Error talking to device" +msgstr "Error talking to device" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1832 +msgid "" +"There was a temporary error talking to the device. Please unplug and " +"reconnect the device and or reboot." +msgstr "" +"There was a temporary error talking to the device. Please unplug and " +"reconnect the device and or reboot." + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1855 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1883 +msgid "Conversion Error" +msgstr "Conversion Error" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1856 +msgid "" +"

Could not convert: %s

It is a DRMed book. You must " +"first remove the DRM using third party tools." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1869 +msgid "Recipe Disabled" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1884 +msgid "Failed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1912 +msgid "Invalid library location" +msgstr "Invalid library location" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1913 +msgid "Could not access %s. Using %s as the library." +msgstr "Could not access %s. Using %s as the library." + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1963 +msgid "" +"is the result of the efforts of many volunteers from all over the world. If " +"you find it useful, please consider donating to support its development." +msgstr "" +"is the result of the efforts of many volunteers from all over the world. If " +"you find it useful, please consider donating to support its development." + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1988 +msgid "There are active jobs. Are you sure you want to quit?" +msgstr "There are active jobs. Are you sure you want to quit?" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1991 +msgid "" +" is communicating with the device!
\n" +" Quitting may cause corruption on the device.
\n" +" Are you sure you want to quit?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1995 +msgid "WARNING: Active jobs" +msgstr "WARNING: Active jobs" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2047 +msgid "" +"will keep running in the system tray. To close it, choose Quit in the " +"context menu of the system tray." +msgstr "" +"will keep running in the system tray. To close it, choose Quit in the " +"context menu of the system tray." + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2066 +msgid "" +"Latest version: %s" +msgstr "" +"Latest version: %s" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2074 +msgid "Update available" +msgstr "Update available" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2075 +msgid "" +"%s has been updated to version %s. See the new features. Visit the download page?" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 msgid "Edit bookmark" msgstr "" @@ -6014,93 +6511,113 @@ msgstr "" msgid "Import" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:154 msgid "Configure Ebook viewer" msgstr "Configure Ebook viewer" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:155 msgid "&Font options" msgstr "&Font options" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:156 msgid "Se&rif family:" msgstr "Se&rif family:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:157 msgid "&Sans family:" msgstr "&Sans family:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:158 msgid "&Monospace family:" msgstr "&Monospace family:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:159 msgid "&Default font size:" msgstr "&Default font size:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:139 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:141 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:168 msgid " px" msgstr " px" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:161 msgid "Monospace &font size:" msgstr "Monospace &font size:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:163 msgid "S&tandard font:" msgstr "S&tandard font:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:164 msgid "Serif" msgstr "Serif" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:165 msgid "Sans-serif" msgstr "Sans-serif" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:166 msgid "Monospace" msgstr "Monospace" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:167 msgid "Remember last used &window size" msgstr "Remember last used &window size" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:169 msgid "Maximum &view width:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:170 msgid "H&yphenate (break line in the middle of large words)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:171 msgid "" "The default language to use for hyphenation rules. If the book does not " "specify a language, this will be used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:172 msgid "Default &language for hyphenation:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:173 +msgid "&Resize images larger than the viewer window (needs restart)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:174 msgid "&User stylesheet" msgstr "&User stylesheet" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:30 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:175 +msgid "&General" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:176 +msgid "Double click to change a keyboard shortcut" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:177 +msgid "&Keyboard shortcuts" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/dictionary.py:53 +msgid "No results found for:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:33 msgid "Options to customize the ebook viewer" msgstr "Options to customize the ebook viewer" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:37 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:650 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:40 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:648 msgid "Remember last used window size" msgstr "Remember last used window size" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:39 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 msgid "" "Set the user CSS stylesheet. This can be used to customize the look of all " "books." @@ -6108,133 +6625,193 @@ msgstr "" "Set the user CSS stylesheet. This can be used to customize the look of all " "books." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:41 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:44 msgid "Maximum width of the viewer window, in pixels." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:46 +msgid "Resize images larger than the viewer window to fit inside it" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 msgid "Hyphenate text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:44 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 msgid "Default language for hyphenation rules" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 msgid "Font options" msgstr "Font options" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:53 msgid "The serif font family" msgstr "The serif font family" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 msgid "The sans-serif font family" msgstr "The sans-serif font family" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:57 msgid "The monospaced font family" msgstr "The monospaced font family" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:58 msgid "The standard font size in px" msgstr "The standard font size in px" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 msgid "The monospaced font size in px" msgstr "The monospaced font size in px" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 msgid "The standard font type" msgstr "The standard font type" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:408 +msgid "&Lookup in dictionary" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:12 +msgid "Scroll to the next page" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:15 +msgid "Scroll to the previous page" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:18 +msgid "Scroll to the next section" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:21 +msgid "Scroll to the previous section" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:24 +msgid "Scroll to the bottom of the section" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:27 +msgid "Scroll to the top of the section" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:30 +msgid "Scroll to the end of the document" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:33 +msgid "Scroll to the start of the document" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:36 +msgid "Scroll down" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:39 +msgid "Scroll up" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:42 +msgid "Scroll left" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:45 +msgid "Scroll right" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:115 msgid "Book format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:138 msgid "Go to..." msgstr "Go to..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:182 msgid "Position in book" msgstr "Position in book" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:188 msgid "Go to a reference. To get reference numbers, use the reference mode." msgstr "Go to a reference. To get reference numbers, use the reference mode." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:195 msgid "Search for text in book" msgstr "Search for text in book" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:259 msgid "Print Preview" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:381 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:271 +msgid "Connecting to dict.org to lookup: %s…" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:370 msgid "Choose ebook" msgstr "Choose ebook" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:371 msgid "Ebooks" msgstr "Ebooks" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:401 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:390 msgid "Add bookmark" msgstr "Add bookmark" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:401 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:390 msgid "Enter title for bookmark:" msgstr "Enter title for bookmark:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:422 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:411 msgid "No matches found for: %s" msgstr "No matches found for: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:462 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:451 msgid "Loading flow..." msgstr "Loading flow..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:489 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:487 msgid "Laying out %s" msgstr "Laying out %s" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:518 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:516 msgid "Manage Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:551 msgid "Loading ebook..." msgstr "Loading ebook..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:561 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:559 msgid "DRM Error" msgstr "DRM Error" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:560 msgid "

This book is protected by DRM" msgstr "

This book is protected by DRM" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:566 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:564 msgid "Could not open ebook" msgstr "Could not open ebook" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:640 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:638 msgid "Options to control the ebook viewer" msgstr "Options to control the ebook viewer" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:647 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:645 msgid "" "If specified, viewer window will try to come to the front when started." msgstr "" "If specified, viewer window will try to come to the front when started." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:652 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:650 msgid "Print javascript alert and console messages to the console" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:658 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:656 msgid "" "%prog [options] file\n" "\n" @@ -6244,59 +6821,71 @@ msgstr "" "\n" "View an ebook.\n" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:178 msgid "Ebook Viewer" msgstr "Ebook Viewer" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:179 +msgid "Close dictionary" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:181 msgid "toolBar" msgstr "toolBar" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:184 msgid "Next page" msgstr "Next page" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:185 msgid "Previous page" msgstr "Previous page" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:186 msgid "Font size larger" msgstr "Font size larger" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:187 msgid "Font size smaller" msgstr "Font size smaller" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:191 msgid "Find next" msgstr "Find next" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:192 msgid "Copy to clipboard" msgstr "Copy to clipboard" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:194 msgid "Reference Mode" msgstr "Reference Mode" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:195 msgid "Bookmark" msgstr "Bookmark" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:196 msgid "Toggle full screen" msgstr "Toggle full screen" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:197 msgid "Print" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/printing.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/printing.py:114 msgid "Print eBook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:196 +msgid "Copy Image" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:197 +msgid "Paste Image" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:226 msgid "" "Library\n" "%d\n" @@ -6306,7 +6895,7 @@ msgstr "" "%d\n" "books" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:227 msgid "" "Reader\n" "%s\n" @@ -6316,100 +6905,100 @@ msgstr "" "%s\n" "available" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:228 msgid "" "Card A\n" "%s\n" "available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:229 msgid "" "Card B\n" "%s\n" "available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:234 msgid "Click to see the books available on your computer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:207 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:235 msgid "Click to see the books in the main memory of your reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:208 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:236 msgid "Click to see the books on storage card A in your reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:237 msgid "Click to see the books on storage card B in your reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:498 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:530 msgid "Change Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:499 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:531 msgid "Upper Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:500 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:532 msgid "Lower Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:533 msgid "Swap Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:534 msgid "Title Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:330 msgid "" "If you use the WordPlayer e-book app on your Android phone, you can access " "your calibre book collection directly on the device. To do this you have to " "turn on the content server." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:334 msgid "" "Remember to leave calibre running as the server only runs as long as calibre " "is running." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:336 msgid "" "You have to add the URL http://myhostname:8080 as your calibre library in " "WordPlayer. Here myhostname should be the fully qualified hostname or the IP " "address of the computer calibre is running on." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:372 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:413 msgid "Moving library..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:388 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:429 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:430 msgid "Failed to move library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:484 msgid "Invalid database" msgstr "Invalid database" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:444 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:485 msgid "" "

An invalid library already exists at %s, delete it before trying to move " "the existing library.
Error: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:455 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:496 msgid "Could not move library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:574 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:625 msgid "welcome wizard" msgstr "" @@ -6460,14 +7049,13 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:49 msgid "" "

Demo videos

Videos demonstrating the various features of calibre are " -"available online." +"available online." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:50 msgid "" -"

User Manual

A User Manual is also available online." +"

User Manual

A User Manual is also available online." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:44 @@ -6676,7 +7264,89 @@ msgid "" "WordPlayer, etc. integration." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:117 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:35 +msgid "" +"The fields to output when cataloging books in the database. Should be a " +"comma-separated list of fields.\n" +"Available fields: %s.\n" +"Default: '%%default'\n" +"Applies to: CSV, XML output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:44 +msgid "" +"Output field to sort on.\n" +"Available fields: author_sort, id, rating, size, timestamp, title.\n" +"Default: '%default'\n" +"Applies to: CSV, XML output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:253 +msgid "" +"Title of generated catalog used as title in metadata.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:259 +msgid "" +"Save the output from different stages of the conversion pipeline to the " +"specified directory. Useful if you are unsure at which stage of the " +"conversion process a bug is occurring.\n" +"Default: '%default'None\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:268 +msgid "" +"Regex describing tags to exclude as genres.\n" +"Default: '%default' excludes bracketed tags, e.g. '[]'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:273 +msgid "" +"Comma-separated list of tag words indicating book should be excluded from " +"output. Case-insensitive.\n" +"--exclude-tags=skip will match 'skip this book' and 'Skip will like this'.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:280 +msgid "" +"Tag prefix for user notes, e.g. '*Jeff might enjoy reading this'.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:286 +msgid "" +"Sort titles with leading numbers as text, e.g.,\n" +"'2001: A Space Odyssey' sorts as \n" +"'Two Thousand One: A Space Odyssey'.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:292 +msgid "" +"Specifies the output profile. In some cases, an output profile is required " +"to optimize the catalog for the device. For example, 'kindle' or " +"'kindle_dx' creates a structured Table of Contents with Sections and " +"Articles.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:298 +msgid "" +"Tag indicating book has been read.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:121 msgid "" "Path to the calibre library. Default is to use the path stored in the " "settings." @@ -6684,7 +7354,7 @@ msgstr "" "Path to the calibre library. Default is to use the path stored in the " "settings." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:196 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:200 msgid "" "%prog list [options]\n" "\n" @@ -6694,65 +7364,65 @@ msgstr "" "\n" "List the books available in the calibre database.\n" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:204 -msgid "" -"The fields to display when listing books in the database. Should be a comma " -"separated list of fields.\n" -"Available fields: %s\n" -"Default: %%default. The special field \"all\" can be used to select all " -"fields. Only has effect in the text output format." -msgstr "" -"The fields to display when listing books in the database. Should be a comma " -"separated list of fields.\n" -"Available fields: %s\n" -"Default: %%default. The special field \"all\" can be used to select all " -"fields. Only has effect in the text output format." - -#: /home/kovid/work/calibre/src/calibre/library/cli.py:206 -msgid "" -"The field by which to sort the results.\n" -"Available fields: %s\n" -"Default: %%default" -msgstr "" -"The field by which to sort the results.\n" -"Available fields: %s\n" -"Default: %%default" - #: /home/kovid/work/calibre/src/calibre/library/cli.py:208 -msgid "Sort results in ascending order" -msgstr "Sort results in ascending order" +msgid "" +"The fields to display when listing books in the database. Should be a comma " +"separated list of fields.\n" +"Available fields: %s\n" +"Default: %%default. The special field \"all\" can be used to select all " +"fields. Only has effect in the text output format." +msgstr "" +"The fields to display when listing books in the database. Should be a comma " +"separated list of fields.\n" +"Available fields: %s\n" +"Default: %%default. The special field \"all\" can be used to select all " +"fields. Only has effect in the text output format." #: /home/kovid/work/calibre/src/calibre/library/cli.py:210 msgid "" -"Filter the results by the search query. For the format of the search query, " -"please see the search related documentation in the User Manual. Default is " -"to do no filtering." +"The field by which to sort the results.\n" +"Available fields: %s\n" +"Default: %%default" msgstr "" -"Filter the results by the search query. For the format of the search query, " -"please see the search related documentation in the User Manual. Default is " -"to do no filtering." +"The field by which to sort the results.\n" +"Available fields: %s\n" +"Default: %%default" #: /home/kovid/work/calibre/src/calibre/library/cli.py:212 -msgid "" -"The maximum width of a single line in the output. Defaults to detecting " -"screen size." -msgstr "" -"The maximum width of a single line in the output. Defaults to detecting " -"screen size." - -#: /home/kovid/work/calibre/src/calibre/library/cli.py:213 -msgid "The string used to separate fields. Default is a space." -msgstr "The string used to separate fields. Default is a space." +msgid "Sort results in ascending order" +msgstr "Sort results in ascending order" #: /home/kovid/work/calibre/src/calibre/library/cli.py:214 msgid "" +"Filter the results by the search query. For the format of the search query, " +"please see the search related documentation in the User Manual. Default is " +"to do no filtering." +msgstr "" +"Filter the results by the search query. For the format of the search query, " +"please see the search related documentation in the User Manual. Default is " +"to do no filtering." + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:216 +msgid "" +"The maximum width of a single line in the output. Defaults to detecting " +"screen size." +msgstr "" +"The maximum width of a single line in the output. Defaults to detecting " +"screen size." + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:217 +msgid "The string used to separate fields. Default is a space." +msgstr "The string used to separate fields. Default is a space." + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:218 +msgid "" "The prefix for all file paths. Default is the absolute path to the library " "folder." msgstr "" "The prefix for all file paths. Default is the absolute path to the library " "folder." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:217 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:221 msgid "" "The format in which to output the data. Available choices: %s. Defaults is " "text." @@ -6760,15 +7430,15 @@ msgstr "" "The format in which to output the data. Available choices: %s. Defaults is " "text." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:230 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:234 msgid "Invalid fields. Available fields:" msgstr "Invalid fields. Available fields:" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:237 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:241 msgid "Invalid sort field. Available fields:" msgstr "Invalid sort field. Available fields:" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:308 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:312 msgid "" "The following books were not added as they already exist in the database " "(see --duplicates option):" @@ -6776,7 +7446,7 @@ msgstr "" "The following books were not added as they already exist in the database " "(see --duplicates option):" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:331 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:335 msgid "" "%prog add [options] file1 file2 file3 ...\n" "\n" @@ -6790,31 +7460,31 @@ msgstr "" "directories, see\n" "the directory related options below.\n" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:340 -msgid "" -"Assume that each directory has only a single logical book and that all files " -"in it are different e-book formats of that book" -msgstr "" -"Assume that each directory has only a single logical book and that all files " -"in it are different e-book formats of that book" - -#: /home/kovid/work/calibre/src/calibre/library/cli.py:342 -msgid "Process directories recursively" -msgstr "Process directories recursively" - #: /home/kovid/work/calibre/src/calibre/library/cli.py:344 msgid "" +"Assume that each directory has only a single logical book and that all files " +"in it are different e-book formats of that book" +msgstr "" +"Assume that each directory has only a single logical book and that all files " +"in it are different e-book formats of that book" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:346 +msgid "Process directories recursively" +msgstr "Process directories recursively" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:348 +msgid "" "Add books to database even if they already exist. Comparison is done based " "on book titles." msgstr "" "Add books to database even if they already exist. Comparison is done based " "on book titles." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:354 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:358 msgid "You must specify at least one file to add" msgstr "You must specify at least one file to add" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:370 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:374 msgid "" "%prog remove ids\n" "\n" @@ -6828,11 +7498,11 @@ msgstr "" "separated list of id numbers (you can get id numbers by using the list " "command). For example, 23,34,57-85\n" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:385 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:389 msgid "You must specify at least one book to remove" msgstr "You must specify at least one book to remove" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:404 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:408 msgid "" "%prog add_format [options] id ebook_file\n" "\n" @@ -6846,15 +7516,15 @@ msgstr "" "identified by id. You can get id by using the list command. If the format " "already exists, it is replaced.\n" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:419 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:423 msgid "You must specify an id and an ebook file" msgstr "You must specify an id and an ebook file" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:424 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:428 msgid "ebook file must have an extension" msgstr "ebook file must have an extension" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:432 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:436 msgid "" "\n" "%prog remove_format [options] id fmt\n" @@ -6870,11 +7540,11 @@ msgstr "" "by using the list command. fmt should be a file extension like LRF or TXT or " "EPUB. If the logical book does not have fmt available, do nothing.\n" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:449 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:453 msgid "You must specify an id and a format" msgstr "You must specify an id and a format" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:467 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:471 msgid "" "\n" "%prog show_metadata [options] id\n" @@ -6890,15 +7560,15 @@ msgstr "" "id.\n" "id is an id number from the list command.\n" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:475 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:479 msgid "Print metadata in OPF form (XML)" msgstr "Print metadata in OPF form (XML)" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:484 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:488 msgid "You must specify an id" msgstr "You must specify an id" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:497 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:501 msgid "" "\n" "%prog set_metadata [options] id /path/to/metadata.opf\n" @@ -6920,11 +7590,11 @@ msgstr "" "can get a quick feel for the OPF format by using the --as-opf switch to the\n" "show_metadata command.\n" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:513 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:517 msgid "You must specify an id and a metadata file" msgstr "You must specify an id and a metadata file" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:533 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:537 msgid "" "%prog export [options] ids\n" "\n" @@ -6942,27 +7612,61 @@ msgstr "" "(in\n" "an opf file). You can get id numbers from the list command.\n" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:541 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:545 msgid "Export all books in database, ignoring the list of ids." msgstr "Export all books in database, ignoring the list of ids." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:543 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:547 msgid "Export books to the specified directory. Default is" msgstr "Export books to the specified directory. Default is" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:545 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:549 msgid "Export all books into a single directory" msgstr "Export all books into a single directory" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:552 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:556 msgid "Specifying this switch will turn this behavior off." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:575 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:579 msgid "You must specify some ids or the %s option" msgstr "You must specify some ids or the %s option" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:587 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:634 +msgid "" +"\n" +" %prog catalog /path/to/destination.(csv|epub|mobi|xml ...) [options]\n" +"\n" +" Export a catalog in format specified by path/to/destination extension.\n" +" Options control how entries are displayed in the generated catalog " +"ouput.\n" +" " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:648 +msgid "" +"Comma-separated list of database IDs to catalog.\n" +"If declared, --search is ignored.\n" +"Default: all" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:652 +msgid "" +"Filter the results by the search query. For the format of the search query, " +"please see the search-related documentation in the User Manual.\n" +"Default: no filtering" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:658 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:484 +msgid "Show detailed output information. Useful for debugging" +msgstr "Show detailed output information. Useful for debugging" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:671 +msgid "Error: You must specify a catalog output file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:687 msgid "" "%%prog command [options] [arguments]\n" "\n" @@ -6982,107 +7686,109 @@ msgstr "" "\n" "For help on an individual command: %%prog command --help\n" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1570 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1696 msgid "

Migrating old database to ebook library in %s

" msgstr "

Migrating old database to ebook library in %s

" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1599 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1725 msgid "Copying %s" msgstr "Copying %s" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1616 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1742 msgid "Compacting database" msgstr "Compacting database" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1709 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1835 msgid "Checking SQL integrity..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1746 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1872 msgid "Checking for missing files." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1770 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1894 msgid "Checked id" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:22 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:24 msgid "The title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:23 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:25 msgid "The authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:24 -msgid "The author sort string" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:25 -msgid "The tags" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:26 -msgid "The series" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:27 -msgid "The series number" +msgid "" +"The author sort string. To use only the first letter of the name use " +"{author_sort[0]}" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:28 -msgid "The rating" +msgid "The tags" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:29 -msgid "The ISBN" +msgid "The series" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:30 -msgid "The publisher" +msgid "The series number. To get leading zeros use {series_index:0>3s}" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:31 -msgid "The date" +msgid "The rating" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:32 -msgid "The published date" +msgid "The ISBN" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:33 +msgid "The publisher" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:34 +msgid "The date" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:35 +msgid "The published date" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:36 msgid "The calibre internal id" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:43 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:46 msgid "Options to control saving to disk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:49 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:52 msgid "" "Normally, calibre will update the metadata in the saved files from what is " "in the calibre library. Makes saving to disk slower." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:52 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:55 msgid "" "Normally, calibre will write the metadata into a separate OPF file along " "with the actual e-book files." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:55 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:58 msgid "" "Normally, calibre will save the cover in a separate file along with the " "actual e-book file(s)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:58 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:61 msgid "" "Comma separated list of formats to save for each book. By default all " "available books are saved." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:61 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:64 msgid "" "The template to control the filename and directory structure of the saved " "files. Default is \"%s\" which will save books into a per-author " @@ -7090,7 +7796,15 @@ msgid "" "are: {%s}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:66 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:69 +msgid "" +"The template to control the filename and directory structure of files sent " +"to the device. Default is \"%s\" which will save books into a per-author " +"directory with filenames containing title and author. Available controls " +"are: {%s}" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:76 msgid "" "Normally, calibre will convert all non English characters into English " "equivalents for the file names. WARNING: If you turn this off, you may " @@ -7098,29 +7812,29 @@ msgid "" "saving to supports unicode." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:72 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:82 msgid "" "The format in which to display dates. %d - day, %b - month, %Y - year. " "Default is: %b, %Y" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:75 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:85 msgid "Convert paths to lowercase." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:77 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:87 msgid "Replace whitespace with underscores." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:230 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:256 msgid "Requested formats not available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server.py:222 +#: /home/kovid/work/calibre/src/calibre/library/server.py:378 msgid "Password to access your calibre library. Username is " msgstr "Password to access your calibre library. Username is " -#: /home/kovid/work/calibre/src/calibre/library/server.py:645 +#: /home/kovid/work/calibre/src/calibre/library/server.py:860 msgid "" "[options]\n" "\n" @@ -7130,60 +7844,68 @@ msgstr "" "\n" "Start the calibre content server." -#: /home/kovid/work/calibre/src/calibre/utils/config.py:47 +#: /home/kovid/work/calibre/src/calibre/library/server.py:862 +msgid "Path to the library folder to serve with the content server" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:48 msgid "%sUsage%s: %s\n" msgstr "%sUsage%s: %s\n" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:91 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:92 msgid "Created by " msgstr "Created by " -#: /home/kovid/work/calibre/src/calibre/utils/config.py:92 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:93 msgid "" "Whenever you pass arguments to %prog that have spaces in them, enclose the " "arguments in quotation marks." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:559 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:650 msgid "Path to the database in which books are stored" msgstr "Path to the database in which books are stored" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:561 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:652 msgid "Pattern to guess metadata from filenames" msgstr "Pattern to guess metadata from filenames" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:563 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:654 msgid "Access key for isbndb.com" msgstr "Access key for isbndb.com" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:565 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:656 msgid "Default timeout for network operations (seconds)" msgstr "Default timeout for network operations (seconds)" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:567 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:658 msgid "Path to directory in which your library of books is stored" msgstr "Path to directory in which your library of books is stored" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:569 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:660 msgid "The language in which to display the user interface" msgstr "The language in which to display the user interface" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:571 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:662 msgid "The default output format for ebook conversions." msgstr "The default output format for ebook conversions." -#: /home/kovid/work/calibre/src/calibre/utils/config.py:575 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:666 msgid "Ordered list of formats to prefer for input." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:577 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:668 msgid "Read metadata from files" msgstr "Read metadata from files" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:579 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:670 msgid "The priority of worker processes" msgstr "The priority of worker processes" +#: /home/kovid/work/calibre/src/calibre/utils/config.py:672 +msgid "Swap author first and last names when reading metadata" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:43 msgid "Waiting..." msgstr "" @@ -7196,44 +7918,80 @@ msgstr "" msgid "Finished" msgstr "Finished" -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:70 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:75 msgid "Working..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:94 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:93 msgid "Brazilian Portuguese" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:95 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:94 msgid "English (UK)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:96 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:95 msgid "Simplified Chinese" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:97 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:96 msgid "Chinese (HK)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:98 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:97 msgid "Traditional Chinese" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:99 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:98 msgid "English" msgstr "English" +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:99 +msgid "English (Australia)" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/utils/localization.py:100 -msgid "English (AU)" +msgid "English (New Zealand)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:101 -msgid "English (CA)" +msgid "English (Canada)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:102 -msgid "English (IND)" +msgid "English (India)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:103 +msgid "English (Thailand)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:104 +msgid "English (Cyprus)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:105 +msgid "English (Pakistan)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:106 +msgid "English (Singapore)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:107 +msgid "English (Yemen)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:108 +msgid "German (AT)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:109 +msgid "Dutch (NL)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:110 +msgid "Dutch (BE)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/sftp.py:53 @@ -7256,21 +8014,21 @@ msgstr "Failed to authenticate with server: %s" msgid "Control email delivery" msgstr "Control email delivery" -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:101 -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:123 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:103 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:125 msgid "Unknown feed" msgstr "Unknown feed" -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:141 -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:164 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:143 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:166 msgid "Untitled article" msgstr "Untitled article" -#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:17 +#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:21 msgid "Download periodical content from the internet" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:32 +#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:36 msgid "" "Useful for recipe development. Forces max_articles_per_feed to 2 and " "downloads at most 2 feeds." @@ -7278,106 +8036,119 @@ msgstr "" "Useful for recipe development. Forces max_articles_per_feed to 2 and " "downloads at most 2 feeds." -#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:35 +#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:39 msgid "Username for sites that require a login to access content." msgstr "Username for sites that require a login to access content." -#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:38 +#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:42 msgid "Password for sites that require a login to access content." msgstr "Password for sites that require a login to access content." +#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:46 +msgid "" +"Do not download latest version of builtin recipes from the calibre server" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:40 msgid "Unknown News Source" msgstr "Unknown News Source" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:507 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:550 msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:590 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:635 msgid "Download finished" msgstr "Download finished" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:592 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:637 msgid "Failed to download the following articles:" msgstr "Failed to download the following articles:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:598 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:643 msgid "Failed to download parts of the following articles:" msgstr "Failed to download parts of the following articles:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:600 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:645 msgid " from " msgstr " from " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:602 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:647 msgid "\tFailed links:" msgstr "\tFailed links:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:683 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:728 msgid "Could not fetch article. Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:704 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:749 msgid "Fetching feeds..." msgstr "Fetching feeds..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:708 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:754 msgid "Got feeds from index page" msgstr "Got feeds from index page" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:714 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:760 msgid "Trying to download cover..." msgstr "Trying to download cover..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:768 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:762 +msgid "Generating masthead..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:835 msgid "Starting download [%d thread(s)]..." msgstr "Starting download [%d thread(s)]..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:784 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:851 msgid "Feeds downloaded to %s" msgstr "Feeds downloaded to %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:794 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:861 msgid "Could not download cover: %s" msgstr "Could not download cover: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:801 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:873 msgid "Downloading cover from %s" msgstr "Downloading cover from %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:927 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:908 +msgid "Masthead image downloaded" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1124 msgid "Untitled Article" msgstr "Untitled Article" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:998 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1195 msgid "Article downloaded: %s" msgstr "Article downloaded: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1009 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1206 msgid "Article download failed: %s" msgstr "Article download failed: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1026 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 msgid "Fetching feed" msgstr "Fetching feed" -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:43 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:46 msgid "You" msgstr "You" #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:73 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:82 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:172 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:181 msgid "Scheduled" msgstr "Scheduled" #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:84 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:173 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:182 msgid "Custom" msgstr "Custom" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:458 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:461 msgid "" "%prog URL\n" "\n" @@ -7387,35 +8158,35 @@ msgstr "" "\n" "Where URL is for example http://google.com" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:461 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:464 msgid "Base directory into which URL is saved. Default is %default" msgstr "Base directory into which URL is saved. Default is %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:464 -msgid "" -"Timeout in seconds to wait for a response from the server. Default: %default " -"s" -msgstr "" -"Timeout in seconds to wait for a response from the server. Default: %default " -"s" - #: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:467 msgid "" -"Maximum number of levels to recurse i.e. depth of links to follow. Default " -"%default" +"Timeout in seconds to wait for a response from the server. Default: %default " +"s" msgstr "" -"Maximum number of levels to recurse i.e. depth of links to follow. Default " -"%default" +"Timeout in seconds to wait for a response from the server. Default: %default " +"s" #: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:470 msgid "" +"Maximum number of levels to recurse i.e. depth of links to follow. Default " +"%default" +msgstr "" +"Maximum number of levels to recurse i.e. depth of links to follow. Default " +"%default" + +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:473 +msgid "" "The maximum number of files to download. This only applies to files from tags. Default is %default" msgstr "" "The maximum number of files to download. This only applies to files from tags. Default is %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:472 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:475 msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" @@ -7423,7 +8194,7 @@ msgstr "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:474 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:477 msgid "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." @@ -7431,7 +8202,7 @@ msgstr "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:476 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:479 msgid "" "Only links that match this regular expression will be followed. This option " "can be specified multiple times, in which case as long as a link matches any " @@ -7441,7 +8212,7 @@ msgstr "" "can be specified multiple times, in which case as long as a link matches any " "one regexp, it will be followed. By default all links are followed." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:478 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:481 msgid "" "Any link that matches this regular expression will be ignored. This option " "can be specified multiple times, in which case as long as any regexp matches " @@ -7455,13 +8226,12 @@ msgstr "" "filter-regexp and --match-regexp are specified, then --filter-regexp is " "applied first." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:480 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:483 msgid "Do not download CSS stylesheets." msgstr "Do not download CSS stylesheets." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:481 -msgid "Show detailed output information. Useful for debugging" -msgstr "Show detailed output information. Useful for debugging" +#~ msgid "Useful for debugging." +#~ msgstr "Useful for debugging." #~ msgid "Number of colors for grayscale image conversion. Default: %default" #~ msgstr "Number of colors for grayscale image conversion. Default: %default" @@ -7475,6 +8245,23 @@ msgstr "Show detailed output information. Useful for debugging" #~ msgid "Remove a directory from the frequently used directories list" #~ msgstr "Remove a directory from the frequently used directories list" +#~ msgid "" +#~ "See the User Manual for more help" +#~ msgstr "" +#~ "See the User Manual for more help" + +#~ msgid "" +#~ "

For help visit %s.kovidgoyal.net
" +#~ msgstr "" +#~ "

For help visit %s.kovidgoyal.net
" + +#~ msgid "Output file. Default is derived from input filename." +#~ msgstr "Output file. Default is derived from input filename." + #~ msgid "%d recipes" #~ msgstr "%d recipes" @@ -7494,6 +8281,18 @@ msgstr "Show detailed output information. Useful for debugging" #~ "

Could not convert: %s

It is a DRMed book. You must " #~ "first remove the DRM using 3rd party tools." +#~ msgid "" +#~ "%s has been updated to version %s. See the new features. " +#~ "Visit the download page?" +#~ msgstr "" +#~ "%s has been updated to version %s. See the new features. " +#~ "Visit the download page?" + +#~ msgid "Customize %s" +#~ msgstr "Customize %s" + #~ msgid "You must set a username and password for %s" #~ msgstr "You must set a username and password for %s" @@ -7535,3 +8334,9 @@ msgstr "Show detailed output information. Useful for debugging" #~ msgid "Hungarian" #~ msgstr "Hungarian" + +#~ msgid "This profile is intended for the SONY PRS line. The 500/505/700 etc." +#~ msgstr "This profile is intended for the SONY PRS line. The 500/505/700 etc." + +#~ msgid "Kovid Goyal and John Schember" +#~ msgstr "Kovid Goyal and John Schember" diff --git a/src/calibre/translations/fr.po b/src/calibre/translations/fr.po index ad30f548d5..4148994639 100644 --- a/src/calibre/translations/fr.po +++ b/src/calibre/translations/fr.po @@ -7,13 +7,13 @@ msgstr "" "Project-Id-Version: calibre 0.4.22\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-02-01 07:47+0000\n" -"PO-Revision-Date: 2010-02-01 19:05+0000\n" -"Last-Translator: Vincent C. \n" +"PO-Revision-Date: 2010-02-03 22:11+0000\n" +"Last-Translator: WhimsicalAbyss \n" "Language-Team: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-02-02 04:47+0000\n" +"X-Launchpad-Export-Date: 2010-02-04 04:46+0000\n" "X-Generator: Launchpad (build Unknown)\n" "Generated-By: pygettext.py 1.5\n" @@ -2935,6 +2935,11 @@ msgid "" "- A regex of '.' ignores all tags, generating no genre categories in the " "catalog" msgstr "" +"Expressions régulières:\n" +"- L'expression régulière '\\[[\\w]*\\]' ignore tout les tags de la forme " +"'[tag]', par exemple '[Amazon Freebie]'\n" +"- L'expression '.' ignore tout les tags; ne générant ainsi aucun genre de " +"catégories dans le catalogue" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:28 msgid "Tab template for catalog.ui" @@ -4153,7 +4158,7 @@ msgstr "Formats" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:68 msgid "Fit &cover to view" -msgstr "" +msgstr "Couverture à afficher" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:69 msgid "&Previous" @@ -6343,7 +6348,7 @@ msgstr "Effacer" #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:75 msgid "&Alternate shortcut:" -msgstr "" +msgstr "Changer les raccourcis" #: /home/kovid/work/calibre/src/calibre/gui2/status.py:149 msgid "Jobs:" @@ -7844,6 +7849,11 @@ msgid "" "Default: '%%default'\n" "Applies to: CSV, XML output formats" msgstr "" +"Champ à afficher lors du parcours du catalogue de livres. Liste de champs à " +"séparer par des virgules\n" +"Champs disponible: %s.\n" +"Défaut: '%%default'\n" +"S'applique au formats : CSV, XML" #: /home/kovid/work/calibre/src/calibre/library/catalog.py:44 msgid "" @@ -7852,6 +7862,10 @@ msgid "" "Default: '%default'\n" "Applies to: CSV, XML output formats" msgstr "" +"Champ de sortie à trier.\n" +"Champs disponible: auteur, nom, note, taille, date, titre.\n" +"Défaut: '%default'\n" +"S'applique au formats : CSV, XML" #: /home/kovid/work/calibre/src/calibre/library/catalog.py:253 msgid "" @@ -7871,6 +7885,11 @@ msgid "" "Default: '%default'None\n" "Applies to: ePub, MOBI output formats" msgstr "" +"Sauvegarde les différentes étapes de conversions dans un répertoire " +"spécifique. Permet d'identifier les étapes du processus de conversion " +"sources d'erreurs.\n" +"Défaut: '%default'None\n" +"S'applique au formats: ePub et MOBI" #: /home/kovid/work/calibre/src/calibre/library/catalog.py:268 msgid "" @@ -7897,6 +7916,10 @@ msgid "" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" +"Étiquette pour note utilisateur, par exemple, '*Jeff devrait apprécier cette " +"lecture'.\n" +"Défaut: '%default'\n" +"S'applique au formats: ePub et MOBI" #: /home/kovid/work/calibre/src/calibre/library/catalog.py:286 msgid "" diff --git a/src/calibre/translations/it.po b/src/calibre/translations/it.po index ec8efb7b5d..b1a79980e6 100644 --- a/src/calibre/translations/it.po +++ b/src/calibre/translations/it.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre_calibre-it\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-01-23 00:18+0000\n" -"PO-Revision-Date: 2010-01-22 18:25+0000\n" -"Last-Translator: Kovid Goyal \n" +"POT-Creation-Date: 2010-02-01 07:47+0000\n" +"PO-Revision-Date: 2010-02-03 15:26+0000\n" +"Last-Translator: lorenzov \n" "Language-Team: italiano\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-01-23 04:43+0000\n" +"X-Launchpad-Export-Date: 2010-02-04 04:46+0000\n" "X-Generator: Launchpad (build Unknown)\n" "X-Poedit-Bookmarks: -1,-1,-1,-1,-1,1105,-1,1312,-1,-1\n" "Generated-By: pygettext.py 1.5\n" @@ -33,7 +33,7 @@ msgstr "Non fa assolutamente niente" #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58 #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:205 -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:414 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:418 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:69 #: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:319 @@ -53,7 +53,6 @@ msgstr "Non fa assolutamente niente" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:104 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:106 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:171 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:329 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:444 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:894 @@ -68,18 +67,18 @@ msgstr "Non fa assolutamente niente" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:79 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:121 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:155 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:607 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:797 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:609 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:799 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:51 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:896 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:901 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:961 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:898 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:903 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:969 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:137 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:139 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:105 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:171 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:172 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:173 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:174 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:39 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/palmdoc/writer.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ztxt/writer.py:27 @@ -102,10 +101,10 @@ msgstr "Non fa assolutamente niente" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:233 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:235 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:273 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:121 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:276 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:132 @@ -116,7 +115,7 @@ msgstr "Non fa assolutamente niente" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:842 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:109 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:144 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:454 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:402 @@ -130,12 +129,12 @@ msgstr "Non fa assolutamente niente" #: /home/kovid/work/calibre/src/calibre/library/database2.py:715 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1143 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1180 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1547 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1549 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1665 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1552 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1554 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1670 #: /home/kovid/work/calibre/src/calibre/library/server.py:645 -#: /home/kovid/work/calibre/src/calibre/library/server.py:717 -#: /home/kovid/work/calibre/src/calibre/library/server.py:764 +#: /home/kovid/work/calibre/src/calibre/library/server.py:721 +#: /home/kovid/work/calibre/src/calibre/library/server.py:768 #: /home/kovid/work/calibre/src/calibre/utils/localization.py:111 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63 @@ -460,11 +459,11 @@ msgstr "" msgid "Communicate with the Binatone Readme eBook reader." msgstr "Comunica con il dispositivo di lettura Binatone Readme" -#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:12 +#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:13 msgid "Communicate with the Blackberry smart phone." msgstr "Comunica con lo smart phone Blackberry." -#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:13 +#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:14 #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:18 #: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:90 msgid "Kovid Goyal" @@ -658,12 +657,12 @@ msgid "There is insufficient free space on the storage card" msgstr "Non c'è spazio sufficiente nella scheda di memoria" #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:799 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:822 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:824 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:232 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1068 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1072 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1447 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1452 msgid "News" msgstr "Notizie" @@ -825,8 +824,8 @@ msgstr "" msgid "Apply no processing to the image" msgstr "Non applica alcuna elaborazione all'immagine" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:438 -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:449 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:442 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:453 msgid "Page" msgstr "Pagina" @@ -1854,7 +1853,7 @@ msgstr "Pubblicato" msgid "Rights" msgstr "Privilegi" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/amazon.py:77 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/amazon.py:78 msgid "EDITORIAL REVIEW" msgstr "Rassegna Editoriale" @@ -2081,7 +2080,7 @@ msgstr "" "LibraryThing.com\n" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1083 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1328 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1336 msgid "Cover" msgstr "Copertina" @@ -2111,74 +2110,74 @@ msgstr "Titolo per tutti gli indici di contenuto in-line." msgid "Disable compression of the file contents." msgstr "Disabilitare la compressione dei file di contenuto" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:102 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:105 msgid "All articles" msgstr "Tutti gli articoli" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1329 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1337 msgid "Title Page" msgstr "Pagina iniziale" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1330 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1338 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:53 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:188 msgid "Table of Contents" msgstr "Sommario" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1331 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1339 msgid "Index" msgstr "Indice" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1332 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1340 msgid "Glossary" msgstr "Glossario" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1333 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1341 msgid "Acknowledgements" msgstr "Ringraziamenti" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1334 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1342 msgid "Bibliography" msgstr "Bibliografia" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1335 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1343 msgid "Colophon" msgstr "Colophon" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1336 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1344 msgid "Copyright" msgstr "Diritti d'autore" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1337 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1345 msgid "Dedication" msgstr "Dedica" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1338 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1346 msgid "Epigraph" msgstr "Epigrafe" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1339 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1347 msgid "Foreword" msgstr "Premessa" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1340 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1348 msgid "List of Illustrations" msgstr "Indice delle figure" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1341 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1349 msgid "List of Tables" msgstr "Indice delle tabelle" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1342 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1350 msgid "Notes" msgstr "Note" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1343 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1351 msgid "Preface" msgstr "Prefazione" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1344 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1352 msgid "Main Text" msgstr "Corpo del testo" @@ -2559,10 +2558,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:199 msgid "" "This RTF file has a feature calibre does not support. Convert it to HTML " -"first and then try it." +"first and then try it.\n" +"%s" msgstr "" -"Questo documento RTF ha caratteristiche non supportate da Calibre. Si " -"consiglia di convertire il documento in HTML e rirpovare." +"Questo documento RTF ha alcune caratteristiche non supportate da Calibre. " +"Provate a convertire il documento in HTML e riprovate." #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:23 msgid "" @@ -2635,85 +2635,85 @@ msgstr "" "linea quando non esistono spazi. Inoltre permette di specificare l valore " "della massima lunghezza di linea al di sotto del minimo (25 caratteri)" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:29 msgid "Send file to storage card instead of main memory by default" msgstr "" "Invia il file alla scheda di memoria invece che alla memoria principale come " "impostazione predefinita" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:30 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:31 msgid "Confirm before deleting" msgstr "Chiedi conferma prima di eliminare" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:33 msgid "Toolbar icon size" msgstr "Dimensione bottoni nella barra degli strumenti" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:34 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:35 msgid "Show button labels in the toolbar" msgstr "Mostra testo nei bottoni della barra degli strumenti" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:36 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:37 msgid "Main window geometry" msgstr "Geometria della finestra principale" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:39 msgid "Notify when a new version is available" msgstr "Avverti quando è disponibile una nuova versione" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:40 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:41 msgid "Use Roman numerals for series number" msgstr "Usa numeri romani per i numeri delle serie" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:43 msgid "Sort tags list by popularity" msgstr "Ordina la lista dei tag per popolarità" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:44 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:45 msgid "Number of covers to show in the cover browsing mode" msgstr "" "Numero di copertine da visualizzare nella modalità di sfogliatura copertine" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:47 msgid "Defaults for conversion to LRF" msgstr "Parametri predefiniti per la conversione in LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:49 msgid "Options for the LRF ebook viewer" msgstr "Opzioni del lettore di libri LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:52 msgid "Formats that are viewed using the internal viewer" msgstr "Formati visualizzati utilizzando il lettore interno" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 msgid "Columns to be displayed in the book list" msgstr "Colonne da mostrare nella lista dei libri" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 msgid "Automatically launch content server on application startup" msgstr "" "Avvia automaticamente il server dei contenuti quando si apre l'applicazione" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 msgid "Oldest news kept in database" msgstr "Notizie più vecchie da mantenere nel database" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:57 msgid "Show system tray icon" msgstr "Mostra un'icona nel vassoio di sistema" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:59 msgid "Upload downloaded news to device" msgstr "Invia le notizie scaricate al dispositivo di lettura" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:61 msgid "Delete books from library after uploading to device" msgstr "" "Elimina i libri dalla biblioteca dopo averle caricate sul dispositivo di " "lettura" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:63 msgid "" "Show the cover flow in a separate window instead of in the main calibre " "window" @@ -2721,83 +2721,87 @@ msgstr "" "Fai vedere la vetrina delle copertine in una finestra separata invece della " "finestra prinicpale di Calibre." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:65 msgid "Disable notifications from the system tray icon" msgstr "Disabilita messaggi dall'icona nella barra di sistema" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:67 msgid "Default action to perform when send to device button is clicked" msgstr "" "Azione predefinita da attuare quando si seleziona il tasto di invio al " "dispositivo di lettura." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:89 msgid "Maximum number of waiting worker processes" msgstr "Limite masimo di processi in attesa" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:91 msgid "Download social metadata (tags/rating/etc.)" msgstr "Scaricare metadati sociali (categorie/valutazioni/etc.)" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:93 +msgid "Overwrite author and title with new metadata" +msgstr "Usa i nuovi meta-dati per cambiare l'autore e il titolo" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:95 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "Limita il massimo numero di job simultanei al numero delle CPU." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:439 msgid "Copied" msgstr "Copiato" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:167 msgid "Copy" msgstr "Copia" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:167 msgid "Copy to Clipboard" msgstr "Copia negli appunti" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:395 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:398 msgid "Choose Files" msgstr "Seleziona documenti" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:56 msgid "Searching in" msgstr "Cercando in" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:167 msgid "Adding..." msgstr "Aggiungendo..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:180 msgid "Searching in all sub-directories..." msgstr "Cercando in tutte le sotto cartelle" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:193 msgid "Path error" msgstr "Errore di percorso" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:194 msgid "The specified directory could not be processed." msgstr "Non é possibile elaborare la cartella indicata." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:198 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:495 msgid "No books" msgstr "Nessun libro." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:199 msgid "No books found" msgstr "Nessun libro trovato" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:265 msgid "Added" msgstr "Aggiunto" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:278 msgid "Adding failed" msgstr "L' aggiunta é fallita" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:279 msgid "" "The add books process seems to have hung. Try restarting calibre and adding " "the books in smaller increments, until you find the problem book." @@ -2806,11 +2810,11 @@ msgstr "" "di far ripartire Calibre e aggiungere i libri in incrementi piu' piccoli, " "fino a quando si indentifica il libro che causa il problema." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:287 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:291 msgid "Duplicates found!" msgstr "Scoperti duplicati!" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:292 msgid "" "Books with the same title as the following already exist in the database. " "Add them anyway?" @@ -2818,21 +2822,21 @@ msgstr "" "Libri con lo stesso titolo sono giá presenti nella lista. Volete aggiungere " "in ogni caso?" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:295 msgid "Adding duplicates..." msgstr "Aggiunta dei duplicati..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:356 msgid "Saving..." msgstr "Salvataggio..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:409 msgid "Saved" msgstr "Salvato" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:16 msgid "CSV/XML Options" -msgstr "" +msgstr "Opzioni CSV/XML" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:18 @@ -2866,7 +2870,7 @@ msgid "output" msgstr "output" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:36 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:27 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:49 @@ -2899,31 +2903,60 @@ msgstr "Formato" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:37 msgid "Fields to include in output:" -msgstr "" +msgstr "Campi da includere nell'output" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:17 -msgid "E-book Options" -msgstr "" +msgid "E-book options" +msgstr "Opzioni per il libro elettronico" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:52 -msgid "Tags to exclude as genres (regex):" -msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:271 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1416 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1430 +msgid "Catalog" +msgstr "Catalogo" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:68 msgid "'Don't include this book' tag:" -msgstr "" +msgstr "Etichetta per 'Non usare questo libro':" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:69 msgid "'Mark this book as read' tag:" -msgstr "" +msgstr "Etichetta per 'Marcare questo libro come letto':" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:70 msgid "Additional note tag prefix:" +msgstr "Etichetta per note aggiuntive" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:71 +msgid "Sort numbers as text" +msgstr "Ordina i numeri come testo" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:72 +msgid "Regex pattern describing tags to exclude as genres:" +msgstr "Stringa Regex per definire etichette che escludono generi:" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:73 +msgid "Special marker tags for catalog generation" +msgstr "Etichette speciali per la produzione di cataloghi" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:74 +msgid "" +"Regex tips:\n" +"- The default regex of '\\[[\\w]*\\]' ignores tags of the form '[tag]', " +"e.g., '[Amazon Freebie]'\n" +"- A regex of '.' ignores all tags, generating no genre categories in the " +"catalog" msgstr "" +"Suggerimenti per stringhe Regex:\n" +"- La stringa regex '\\[[\\w]*\\]' ignora le etichette nella forma " +"'[etichette]', e.g., '[Amazon Freebie]'\n" +"- La stringa '.' ignora tutte le etichette producendo categorie senza generi " +"definite nel catalogo" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:28 msgid "Tab template for catalog.ui" -msgstr "" +msgstr "Esempio paginazione per il catalog.ui" #: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:36 msgid "" @@ -3056,12 +3089,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:570 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:574 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:357 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376 @@ -3418,7 +3451,7 @@ msgid "Change the title of this book" msgstr "Cambia il titolo di questo libro" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:173 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:140 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:358 msgid "&Author(s): " msgstr "A&utore(i): " @@ -3436,7 +3469,7 @@ msgstr "" "una virgola" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:149 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367 msgid "&Publisher: " msgstr "&Editore: " @@ -3447,7 +3480,7 @@ msgid "Ta&gs: " msgstr "T&ag: " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:178 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:151 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:369 msgid "" "Tags categorize the book. This is particularly useful while searching. " @@ -3458,15 +3491,15 @@ msgstr "" "virgola" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:179 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:156 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:372 msgid "&Series:" msgstr "&Serie:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:181 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:154 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:158 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:373 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374 msgid "List of known series. You can add new series." @@ -3588,7 +3621,7 @@ msgid "RB Output" msgstr "Output RB" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1637 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1639 msgid "Choose the format to view" msgstr "Scegliere il formato da leggere" @@ -3898,7 +3931,7 @@ msgstr "" "lettura." #: /home/kovid/work/calibre/src/calibre/gui2/device.py:38 -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:130 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:135 msgid "No details available." msgstr "Nessun dettaglio disponibile." @@ -4161,7 +4194,7 @@ msgid "My Books" msgstr "I miei libri" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:67 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:264 msgid "Generate catalog" msgstr "Crea catalogo" @@ -4294,133 +4327,133 @@ msgstr "" msgid "new email address" msgstr "nuovo indirizzo di posta elettronica." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:477 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:821 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:478 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:823 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1248 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 msgid "Error" msgstr "Errore" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:478 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:479 msgid "Failed to install command line tools." msgstr "" "Non é stato possibile installare gli strumenti per i comandi di linea." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:481 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:482 msgid "Command line tools installed" msgstr "Strumenti per i comandi di linea installati" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:482 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:483 msgid "Command line tools installed in" msgstr "Strumenti per i comandi di linea installati in" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:483 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:484 msgid "" "If you move calibre.app, you have to re-install the command line tools." msgstr "" "Se muovete calibre.app, sará necessario reinstallare anche gli strumenti per " "i comandi di linea." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:534 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:535 msgid "No valid plugin path" msgstr "Percorso del plugin non valido" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:536 msgid "%s is not a valid plugin path" msgstr "%s non é un percorso di plugin valido" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:539 msgid "Choose plugin" msgstr "Selezionare plugin" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551 msgid "Plugin cannot be disabled" msgstr "Il plugin non puó essere disattivato" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:552 msgid "The plugin: %s cannot be disabled" msgstr "il plugin: %s non puó essere disattivato" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:561 msgid "Plugin not customizable" msgstr "Non é possibile personalizzare il plugin" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:561 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:562 msgid "Plugin: %s does not need customization" msgstr "Plugin: %s non richiede personalizzazione" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:569 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:570 msgid "Customize" msgstr "Personalizzazione" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:608 msgid "Cannot remove builtin plugin" msgstr "Non é possibile rimuovere un plugin incorporato" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:609 msgid " cannot be removed. It is a builtin plugin. Try disabling it instead." msgstr "" " Non é possibile rimuoverlo. Questo é un plugin incorporato. Provate invece " "a disattivarlo." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:641 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:642 msgid "Error log:" msgstr "File di log degli errori:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:648 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:649 msgid "Access log:" msgstr "File di log degli accessi:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:676 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:677 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:659 msgid "Failed to start content server" msgstr "Avvio del server dei contenuti fallito" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:701 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:550 msgid "Select location for books" msgstr "Selezionare un percorso per i libri" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:708 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:709 msgid "Invalid size" msgstr "Dimensione non valida" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:709 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:710 msgid "The size %s is invalid. must be of the form widthxheight" msgstr "" "La dimensione %s non è valida. Deve essere nella forma larghezzaxaltezza" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:762 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:767 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:764 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:769 msgid "Invalid database location" msgstr "Percorso database non valido" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:763 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:765 msgid "Invalid database location " msgstr "Percorso database non valido " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:764 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:766 msgid "
Must be a directory." msgstr "
Deve essere una cartella" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:768 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:770 msgid "Invalid database location.
Cannot write to " msgstr "Percorso database non valido.
Impossibile scrivere su " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:802 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:804 msgid "Checking database integrity" msgstr "Controllo dell'integritá del database." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:822 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:824 msgid "Failed to check database integrity" msgstr "Controllo dell'integritá del database fallito." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:827 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:829 msgid "Some inconsistencies found" msgstr "Sono stati trovati problemi di consistenza" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:828 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:830 msgid "" "The following books had formats listed in the database that are not actually " "available. The entries for the formats have been removed. You should check " @@ -4530,13 +4563,13 @@ msgstr "" msgid "Sending to &device" msgstr "Invio al &device in corso" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504 #: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:366 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 msgid "Preferences" msgstr "Preferenze" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 msgid "" "&Location of ebooks (The ebooks are stored in folders sorted by author and " "metadata is stored in the file metadata.db)" @@ -4544,24 +4577,28 @@ msgstr "" "Per&corso dei libri (I libri sono salvati in cartelle salvate per autore e i " "metadati sono salvati nel file metadata.db)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:503 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 msgid "Browse for the new database location" msgstr "Sfoglia per specificare una nuova posizione del database" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 msgid "Show notification when &new version is available" msgstr "&Visualizza un avvertimento quando è disponibile una nuova versione" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 msgid "Download &social metadata (tags/ratings/etc.) by default" msgstr "" "Scarica i &social metadati (etichette, valutazioni, etc.) automaticamente" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 +msgid "Overwrite & author/title by default when fetching metadata" +msgstr "Modificare sempre & author/title quando si scaricano i metadati" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 msgid "Default network &timeout:" msgstr "&Timeout predefinito della rete:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 msgid "" "Set the default timeout for network fetches (i.e. anytime we go out to the " "internet to get information)" @@ -4569,159 +4606,159 @@ msgstr "" "Imposta il timeout predefinito per gli scaricamenti dalla rete (cioè ogni " "volta che si usa Internet per prelevare informazioni)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 msgid " seconds" msgstr " secondi" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 msgid "Choose &language (requires restart):" msgstr "Scegliere la ling&ua (richiede il riavvio):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 msgid "Normal" msgstr "Normale" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 msgid "High" msgstr "Massima" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 msgid "Low" msgstr "Minima" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 msgid "Job &priority:" msgstr "&Priorità lavoro:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 msgid "Preferred &output format:" msgstr "Formato preferito per &output:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 msgid "Preferred &input format order:" msgstr "Ordine dei formati preferiti per &input:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 msgid "Use &Roman numerals for series number" msgstr "&Usa numeri romani per i numeri delle serie" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 msgid "Enable system &tray icon (needs restart)" msgstr "Abilita l'icona nel vassoio di sistema (richiede il riavvio)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 msgid "Show ¬ifications in system tray" msgstr "Visualizza le ¬ifications nella barra di sistema." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 msgid "Show cover &browser in a separate window (needs restart)" msgstr "" "Visualizza il &browser di copertine in una finestra separata (richiede " "ricaricamento del programma)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 msgid "Search as you type" msgstr "Cerc mentre si scrive" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 msgid "Automatically send downloaded &news to ebook reader" msgstr "Invia automaticamente le noti&zie scaricate al lettore di libri" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 msgid "&Delete news from library when it is automatically sent to reader" msgstr "" "&Delete le notizie dalla libreria quando sono inviate automaticamente al " "dispositivo di lettura." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 msgid "&Number of covers to show in browse mode (needs restart):" msgstr "" "&Number di copertine da visualizzare in modalitá sfoglia (richiede rilancio " "del programma):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 msgid "Toolbar" msgstr "Barra degli strumenti" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 msgid "Large" msgstr "Grande" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 msgid "Medium" msgstr "Media" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 msgid "Small" msgstr "Piccola" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 msgid "&Button size in toolbar" msgstr "&Dimensione bottoni nella barra degli strumenti" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 msgid "Show &text in toolbar buttons" msgstr "&Mostra testo nei bottoni della barra degli strumenti" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 msgid "Select visible &columns in library view" msgstr "&Selezionare le colonne visibili nella vista biblioteca" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 msgid "Use internal &viewer for:" msgstr "Utilizza il &viewer interno per:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 msgid "Add an email address to which to send books" msgstr "Aggiungi un indirizzo di posta elettronica a cui inviare i libri" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 msgid "&Add email" msgstr "&Add messaggio di posta elettronica" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 msgid "Make &default" msgstr "Creare &default" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 msgid "&Remove email" msgstr "&remove messaggio di posta elettronica" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 msgid "calibre can send your books to you (or your reader) by email" msgstr "" "Calibre puó mandare i vostri libri a voi (o i vostri lettori) con posta " "elettronica." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 msgid "&Maximum number of waiting worker processes (needs restart):" msgstr "" "Numero &Maximum di elaboratori di processi in attesa (richiede rilancio del " "programma):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 msgid "&Check database integrity" msgstr "&Check dell'integritá del database" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 msgid "&Install command line tools" msgstr "&Install gli strumenti per i comandi di linea" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549 msgid "Open calibre &configuration directory" msgstr "Apri la cartella per la &configuration di Calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 msgid "Limit the max. simultaneous jobs to the available CPU &cores" msgstr "" "Limita il massimo numero di job simultanei al numero dei &Core disponibili " "della CPU" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 msgid "Debug &device detection" msgstr "&Debug e riconoscimento dei dispositivi" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 msgid "" "calibre contains a network server that allows you to access your book " "collection using a browser from anywhere in the world. Any changes to the " @@ -4732,25 +4769,25 @@ msgstr "" "Qualsiasi cambiamento nella configurazione verrà attivato solo dopo il " "riavvio del server." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553 msgid "Server &port:" msgstr "&Porta del server:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117 msgid "&Username:" msgstr "&Nome utente:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119 msgid "&Password:" msgstr "&Password:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 msgid "" "If you leave the password blank, anyone will be able to access your book " "collection using the web interface." @@ -4758,7 +4795,7 @@ msgstr "" "Se si lascia la password in bianco, chiunque potrà accedere alla propria " "collezione di libri utilizzando l'interfaccia web." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " @@ -4766,41 +4803,41 @@ msgstr "" "La dimensione massima (larghezzaxaltezza) per le copertine visualizzate. Le " "copertine più larghe vengono ridimensionate. " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558 msgid "Max. &cover size:" msgstr "Dimensi&one massima copertina:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212 msgid "&Show password" msgstr "&Mostra password" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560 msgid "Max. &OPDS items per query:" msgstr "Massimo elementi &OPDS per richiesta:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561 msgid "&Start Server" msgstr "A&vvia il server" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:562 msgid "St&op Server" msgstr "&Ferma il server" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:563 msgid "&Test Server" msgstr "&Test sul server" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:564 msgid "Run server &automatically on startup" msgstr "Avvia a&utomaticamente il server all'apertura" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:565 msgid "View &server logs" msgstr "Visualizza i file di l&og del server" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:566 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46 msgid "" "

Remember to leave calibre running as the server only runs as long as " @@ -4818,7 +4855,7 @@ msgstr "" "intendersi come il valore IP appropriato del computer su cui Calibre é " "attivo." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:564 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:568 msgid "" "Here you can customize the behavior of Calibre by controlling what plugins " "it uses." @@ -4826,27 +4863,27 @@ msgstr "" "Qui ee possibile personalizzare le funzioni di Calibre modificando quali " "plugin sono usati dal programma." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:565 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:569 msgid "Enable/&Disable plugin" msgstr "Attivare/&Disable il plugin" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:566 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:570 msgid "&Customize plugin" msgstr "&Customize il plugin" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:567 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:571 msgid "&Remove plugin" msgstr "&Remove il plugin" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:568 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:572 msgid "Add new plugin" msgstr "Aggiungi un nuovo plugin" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:569 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:573 msgid "Plugin &file:" msgstr "Plugin &file:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:571 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:575 msgid "&Add" msgstr "&Aggiungi" @@ -4916,43 +4953,43 @@ msgstr "Classificazione autore" msgid "ISBN" msgstr "ISBN" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:151 msgid "Finding metadata..." msgstr "Cercando metadati..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:164 msgid "Could not find metadata" msgstr "Non é stato possibile trovare metadati" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:165 msgid "The metadata download seems to have stalled. Try again later." msgstr "" "Sembra che lo scaricamento dei metadati si sia bloccato. Provare piú tardi." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:174 msgid "Warning" msgstr "Avvertenza" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:175 msgid "Could not fetch metadata from:" msgstr "Non é stato possibile scaricare i metadati da:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:179 msgid "No metadata found" msgstr "Messun metadato trovato" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:180 msgid "" "No metadata found, try adjusting the title and author or the ISBN key." msgstr "" "Nessun metadato trovato, provare ad aggiustare il titolo e l'autore o il " "codice ISBN." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:84 msgid "Fetch metadata" msgstr "Scarica metadati" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85 msgid "" "

calibre can find metadata for your books from two locations: Google " "Books and isbndb.com.

To use isbndb.com you must sign up for a " @@ -4964,31 +5001,36 @@ msgstr "" "registrarsi per un account gratis e " "immettere la vostra chiave d'accesso qui di seguito." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:86 msgid "&Access Key:" msgstr "&Chiave d'accesso:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87 msgid "Fetch" msgstr "Scarica" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:88 msgid "Matches" msgstr "Corrispondenze" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:89 msgid "" "Select the book that most closely matches your copy from the list below" msgstr "" "Selezionare il libro che corrisponde maggiormente alla propria copia " "dall'elenco sottostante" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:90 msgid "Download &social metadata (tags/rating/etc.) for the selected book" msgstr "" "Scaricare i &social metadati (etichette, valutazioni, etc) per il libro " "selezionato" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:91 +msgid "Overwrite &author/title with author/title of selected book" +msgstr "" +"Modificare & author/title con l'autore/titolo di un libro specificato" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/job_view_ui.py:37 msgid "Details of job" msgstr "Dettagli del lavoro" @@ -5009,24 +5051,24 @@ msgstr "Visualizza i &details del processo in corso" msgid "Stop &all jobs" msgstr "Ferma &all i processi in corso" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:138 msgid "Edit Meta information" msgstr "Modifica metadati" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:353 msgid "Meta information" msgstr "Metadati" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:141 msgid "A&utomatically set author sort" msgstr "Imposta a&utomaticamente la Classificazione autore" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:142 msgid "Author s&ort: " msgstr "Author s&ort: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:143 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360 msgid "" "Specify how the author(s) of this book should be sorted. For example Charles " @@ -5035,47 +5077,51 @@ msgstr "" "Specifica come deve essere classificato l'autore di questo libro. Ad " "esempio, Charles Dickens deve essere classificato come Dickens, Charles." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:144 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:363 msgid "&Rating:" msgstr "&Giudizio:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:143 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:364 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:365 msgid "Rating of this book. 0-5 stars" msgstr "Giudizio su questo libro. 0-5 stelle" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:147 +msgid "No change" +msgstr "Nessuna modifica" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:366 msgid " stars" msgstr " stelle" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:150 msgid "Add ta&gs: " msgstr "Aggiungi ta&gs: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:149 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:370 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371 msgid "Open Tag Editor" msgstr "Apri l'editor dei tag" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:154 msgid "&Remove tags:" msgstr "&Rimuovi tag:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:155 msgid "Comma separated list of tags to remove from the books. " msgstr "Lista separata da virgole dei tag da rimuovere dal libro " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:159 msgid "Remove &format:" msgstr "Rimuovi for&mato:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:160 msgid "&Swap title and author" msgstr "&Swap titolo per autore" @@ -5180,20 +5226,20 @@ msgstr "Si sono verificati errori" msgid "There were errors downloading social metadata" msgstr "Si sono verficiati errori nello scaricamento dei metadati sociali" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:598 msgid "Cannot fetch metadata" msgstr "Non é possibile scaricare i metadati." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:598 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:599 msgid "You must specify at least one of ISBN, Title, Authors or Publisher" msgstr "" "Dovete specificare alemno uno fra codice ISBN, titolo, autore o editore" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:660 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:664 msgid "Permission denied" msgstr "Permesso negato" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:661 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:665 msgid "Could not open %s. Is it being used by another program?" msgstr "" "Non é possibile aprire %s. Potrebbe essere in uso in un altro programma." @@ -6038,52 +6084,52 @@ msgstr "Apri libro" msgid "Configure" msgstr "Configurazione" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:24 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:25 msgid "Use the library located at the specified path." msgstr "Usa la biblioteca collocata nel percorso specificato." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:27 msgid "Start minimized to system tray." msgstr "Incominciare minimizato nella barra di sistema" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:29 msgid "Log debugging information to console" msgstr "Invia le informazioni di debug alla console" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:30 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:31 msgid "Do not check for updates" msgstr "Non controllare gli aggiornamenti" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:83 msgid "If you are sure it is not running" msgstr "Se siete certi che l'operzione non é in corso" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:85 msgid "Cannot Start " msgstr "Non e' possibile incominciare " -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:86 msgid "%s is already running." msgstr "%s é giá in funzione." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:89 msgid "may be running in the system tray, in the" msgstr "potrebbe essere attivo nella barra di sistema, nel" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:91 msgid "upper right region of the screen." msgstr "la parte in alto a destra dello schermo." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:93 msgid "lower right region of the screen." msgstr "la parte in basso a destra dello schermo." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:96 msgid "try rebooting your computer." msgstr "Provate a far ripartire il computer." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:95 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:110 msgid "try deleting the file" msgstr "provate a rimuovere il documento" @@ -6243,11 +6289,11 @@ msgstr "& Esci" msgid "ERROR: Unhandled exception" msgstr "ERRORE: eccezione non gestita" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:89 msgid "Book has neither title nor ISBN" msgstr "Il Libro non ha ne titolo ne ISBN" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:115 msgid "No matches found for this book" msgstr "Nessun risultato é stato trovato per questo libro" @@ -6382,11 +6428,11 @@ msgstr "Creazione ordine " msgid "Fetch news from " msgstr "Scarica notizie da " -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:276 msgid "Convert existing" msgstr "Conversione i documenti presenti" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:277 msgid "" "The following books have already been converted to %s format. Do you wish to " "reconvert them?" @@ -6482,7 +6528,7 @@ msgid "Save to disk in a single directory" msgstr "Salva su disco in una singola cartella" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1745 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1747 msgid "Save only %s format to disk" msgstr "Salva sul disco solo il formato %s" @@ -6516,7 +6562,7 @@ msgstr "Converti in gruppo" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:360 msgid "Create catalog of books in your calibre library" -msgstr "" +msgstr "Crea un catologo di libri dalla vostra collezione in Calibre" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:376 msgid "Run welcome wizard" @@ -6537,13 +6583,13 @@ msgid "Calibre Library" msgstr "Libreeria di Calibre" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:485 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1901 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1903 msgid "Choose a location for your ebook library." msgstr "Scegliere un percorso per la propria biblioteca." #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:523 msgid "Calibre Quick Start Guide" -msgstr "" +msgstr "Guida rapida di Calibre" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:703 msgid "Browse by covers" @@ -6647,33 +6693,33 @@ msgstr "Archivi" msgid "Supported books" msgstr "Libri supportati" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1052 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1054 msgid "Failed to read metadata" msgstr "Non é stato possibile leggere i metadati" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1053 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1055 msgid "Failed to read metadata from the following" msgstr "Non é stato possibile leggere i metadati dai seguenti:" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1072 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1074 msgid "Cannot delete" msgstr "Non si può cancellare" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1075 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1631 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1650 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1077 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1633 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1652 msgid "No book selected" msgstr "Nessun libro selezionato" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1085 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1087 msgid "Choose formats to be deleted" msgstr "Seleziona i formati da cancellare" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1103 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1105 msgid "Choose formats not to be deleted" msgstr "Seleziona i formati da non cancellare" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1141 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1143 msgid "" "The selected books will be permanently deleted and the files removed " "from your computer. Are you sure?" @@ -6681,131 +6727,131 @@ msgstr "" "I libri selezionati saranno cancellati permanentemente e i documenti " "rimossi dal computer. Siete sicuri?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1168 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1170 msgid "Deleting books from device." msgstr "Cancellamento libri dal dispositivo di lettura." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1199 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1201 msgid "Cannot download metadata" msgstr "Non é possibile scaricare i metadati" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1200 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1257 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1290 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1315 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1374 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1487 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1202 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1259 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1292 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1317 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1376 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1489 msgid "No books selected" msgstr "Nessun libro selezionato" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1215 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217 msgid "social metadata" msgstr "metadati sociali" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 msgid "covers" msgstr "copertine" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 msgid "metadata" msgstr "metadati" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1221 msgid "Downloading %s for %d book(s)" msgstr "Scaricamento %s per %d libri" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1241 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1243 msgid "Failed to download some metadata" msgstr "Non si é riusciti a scaricare alcuni metadati" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1242 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1244 msgid "Failed to download metadata for the following:" msgstr "Non si é riusciti a scaricare i metadati per i seguenti:" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1245 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1247 msgid "Failed to download metadata:" msgstr "Lo scaricamento dei metadati é fallito:" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1256 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1289 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1258 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1291 msgid "Cannot edit metadata" msgstr "Impossibile modificare i metadati" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1314 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1316 msgid "Cannot save to disk" msgstr "Impossibile salvare sul disco" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1317 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1319 msgid "Choose destination directory" msgstr "Scegliere la cartella di destinazione" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1344 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1346 msgid "Error while saving" msgstr "Errore durante il salvataggio" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1345 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1347 msgid "There was an error while saving." msgstr "Si é verificato un errore durante il salvataggio" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1352 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1353 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1354 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1355 msgid "Could not save some books" msgstr "Non é stato possibile salvare tutti i libri" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1354 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1356 msgid "Click the show details button to see which ones." msgstr "Selezionare il tasto dei dettagli per vedere quali." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1375 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1377 msgid "No books selected to generate catalog for" msgstr "Nessun libro selezionato per la generazione del catalogo" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1392 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1394 msgid "Generating %s catalog..." msgstr "Generando %s catalogo..." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1403 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1405 msgid "Catalog generated." msgstr "Catalogo generato" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1406 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1408 msgid "Export Catalog Directory" -msgstr "" +msgstr "Esporta il catalogo" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1407 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1409 msgid "Select destination for %s.%s" -msgstr "" +msgstr "Selezionare una destinazione per %s.%s" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1421 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1423 msgid "Fetching news from " msgstr "Scaricamento notizie da " -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1435 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1437 msgid " fetched." msgstr " preso." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1486 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1488 msgid "Cannot convert" msgstr "Impossibile convertire" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1515 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1517 msgid "Starting conversion of %d book(s)" msgstr "Conversione di %d libro/libri incominciata" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1631 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1687 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1633 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1689 msgid "Cannot view" msgstr "Impossibile leggere" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1649 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1651 msgid "Cannot open folder" msgstr "Impossibile aprire la cartella" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1671 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1673 msgid "Multiple Books Selected" msgstr "Piú di un libro selezionato" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1672 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1674 msgid "" "You are attempting to open %d books. Opening too many books at once can be " "slow and have a negative effect on the responsiveness of your computer. Once " @@ -6817,33 +6863,33 @@ msgstr "" "vostro computer. Una volta cominciato questa azione non puó essere fermata " "finché il processo é completato. Siete sicuri di voler continuare?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1688 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1690 msgid "%s has no available formats." msgstr "%s non ha formati disponibili" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1729 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1731 msgid "Cannot configure" msgstr "Impossibile configurare" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1730 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1732 msgid "Cannot configure while there are running jobs." msgstr "Impossibile configurare mentre ci sono lavori in esecuzione" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1773 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1775 msgid "No detailed info available" msgstr "Nessuna informazione dettagliata disponibile" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1774 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1776 msgid "No detailed information is available for books on the device." msgstr "" "Non è disponibile alcuna informazione dettagliata per i libri nel " "dispositivo di lettura." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1829 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1831 msgid "Error talking to device" msgstr "Errore di comunicazione col dispositivo di lettura" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1830 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1832 msgid "" "There was a temporary error talking to the device. Please unplug and " "reconnect the device and or reboot." @@ -6851,12 +6897,12 @@ msgstr "" "Si è verificato un errore di comunicazione temporaneo col dispositivo di " "lettura. Disconnettere e riconnettere il dispositivo e/o riavviare" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1853 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1881 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1855 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1883 msgid "Conversion Error" msgstr "Errore di conversione" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1854 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1856 msgid "" "

Could not convert: %s

It is a DRMed book. You must " "first remove the DRM using third party tools." @@ -6865,23 +6911,23 @@ msgstr "" "href=\"%s\">DRM. É necessario rimuovere la DRM usando un prodotto da " "terzi." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1867 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1869 msgid "Recipe Disabled" msgstr "Ricetta deattivata" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1882 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1884 msgid "Failed" msgstr "Operazione Fallita" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1910 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1912 msgid "Invalid library location" msgstr "Percorso della libreria invalido" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1911 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1913 msgid "Could not access %s. Using %s as the library." msgstr "Non é possibile accedere a %s. Si sta utilizzando %s come libreria." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1961 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1963 msgid "" "is the result of the efforts of many volunteers from all over the world. If " "you find it useful, please consider donating to support its development." @@ -6889,11 +6935,11 @@ msgstr "" "è il risultato degli sforzi di tanti volontari da tutto il mondo. Se lo " "trovi utile, puoi fare una donazione per supportare il suo sviluppo." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1986 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1988 msgid "There are active jobs. Are you sure you want to quit?" msgstr "Ci sono lavori attivi. Uscire comunque?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1989 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1991 msgid "" " is communicating with the device!
\n" " Quitting may cause corruption on the device.
\n" @@ -6904,11 +6950,11 @@ msgstr "" "sul dispositivo di lettura.
\n" " Siete sicuri di voler interrompere il processo?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1993 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1995 msgid "WARNING: Active jobs" msgstr "ATTENZIONE: Lavori attivi" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2045 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2047 msgid "" "will keep running in the system tray. To close it, choose Quit in the " "context menu of the system tray." @@ -6916,7 +6962,7 @@ msgstr "" "continuerà a lavorare nel vassoio di sistema. Per chiuderlo, selezionare " "Esci nel menu contestuale del vassoio di sistema." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2064 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2066 msgid "" "Latest version: %s" @@ -6924,11 +6970,11 @@ msgstr "" "Ultima versione: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2072 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2074 msgid "Update available" msgstr "Aggiornamento disponibile" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2073 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2075 msgid "" "%s has been updated to version %s. See the new features. Visit the download page?" @@ -7071,6 +7117,8 @@ msgstr "&language predefinito per sillabazione:" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:173 msgid "&Resize images larger than the viewer window (needs restart)" msgstr "" +"&Resize le immagini piu' grandi della finestra del visializzatore (richiede " +"riavvio)" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:174 msgid "&User stylesheet" @@ -7117,6 +7165,8 @@ msgstr "Larghezza maassima della finestra di visualizzazione in pixel." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:46 msgid "Resize images larger than the viewer window to fit inside it" msgstr "" +"Modifica la grandezza delle immagini piu' grandi della finestra del " +"visualizzatore per farle rientrare nella pagina" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 msgid "Hyphenate text" @@ -7817,7 +7867,7 @@ msgstr "" "Il valore massimo di risultati da presentare per una richiesta OPDS. Questo " "ha effetto sull'integrazione con Stanza, WordPlayer, etc." -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:34 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:35 msgid "" "The fields to output when cataloging books in the database. Should be a " "comma-separated list of fields.\n" @@ -7825,8 +7875,13 @@ msgid "" "Default: '%%default'\n" "Applies to: CSV, XML output formats" msgstr "" +"I campi da includere nel catalogo di libri nel database. Questi devono " +"essere campi separati da virgole\n" +"Campi disponibili: %s.\n" +"Valori predefiniti: '%%default'\n" +"Applicabile per i formati di output: CSV, XML" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:43 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:44 msgid "" "Output field to sort on.\n" "Available fields: author_sort, id, rating, size, timestamp, title.\n" @@ -7838,21 +7893,42 @@ msgstr "" "Campi di default: '%default'\n" "Si applica a: CSV, XML formati di output" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:238 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:253 msgid "" "Title of generated catalog used as title in metadata.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" +"La creazione del catalogo usa il Titolo presente nei metadati\n" +"Valore predefinito: '%default'\n" +"Applicabile ai formati di output: ePub, MOBI" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:244 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:259 +msgid "" +"Save the output from different stages of the conversion pipeline to the " +"specified directory. Useful if you are unsure at which stage of the " +"conversion process a bug is occurring.\n" +"Default: '%default'None\n" +"Applies to: ePub, MOBI output formats" +msgstr "" +"Salva l'output a diversi passi del processo di conversione nella cartella " +"specificata. Questo é utile se volete verificara a che punto si verifica un " +"errore nella procedura.\n" +"Valore predefinito: '%default' Nessuno\n" +"Applicabile ai formati di output: ePub, MOBI" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:268 msgid "" "Regex describing tags to exclude as genres.\n" "Default: '%default' excludes bracketed tags, e.g. '[]'\n" "Applies to: ePub, MOBI output formats" msgstr "" +"Stringa regex per escludere etichette che definiscono i generi\n" +"Valore predefinito: '%default' che esclude etichette con parantesi, e.g. " +"'[]'\n" +"Applicabile ai formati di output: ePub, MOBI" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:249 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:273 msgid "" "Comma-separated list of tag words indicating book should be excluded from " "output. Case-insensitive.\n" @@ -7860,22 +7936,39 @@ msgid "" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" +"Lista di etichette separate da virgole per indicare quali libri devono " +"essere esclusi dall'output. Si noti che le maiuscole sono ignorate\n" +"--exclude-tags=skip troverá risultati nelle frasi 'skip this book' and 'Skip " +"will like this'\n" +"Valore predefinito: '%default'\n" +"Applicabile ai formati di output: ePub, MOBI" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:256 -msgid "" -"Tag indicating book has been read.\n" -"Default: '%default'\n" -"Applies to: ePub, MOBI output formats" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:261 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:280 msgid "" "Tag prefix for user notes, e.g. '*Jeff might enjoy reading this'.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" +"Prefissi di etichette per le vostre annotazioni, e.g. '*questo libro " +"piacerebbe a Giovanni' \n" +"Valore predefinito: '%default'\n" +"Applicabile ai formati di output: ePub, MOBI" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:267 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:286 +msgid "" +"Sort titles with leading numbers as text, e.g.,\n" +"'2001: A Space Odyssey' sorts as \n" +"'Two Thousand One: A Space Odyssey'.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" +"Ordina i titoli con numeri iniziali come testo, e.g.\n" +"'2001: Un'odissea nello spazio' viene elencato come\n" +"'Duemilauno: Un'odissea nello spazio'.\n" +"Valore predefinito: '%default'\n" +"Applicabile ai formati di output: ePub, MOBI" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:292 msgid "" "Specifies the output profile. In some cases, an output profile is required " "to optimize the catalog for the device. For example, 'kindle' or " @@ -7884,6 +7977,22 @@ msgid "" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" +"Specifica un profilo di output. In alcuni casi un profilo di output é " +"necessario per ottimizzare il catalogo per alcuni dispositivi. Per esempio, " +"i dispositivi Kindle e Kindle dx creano indici organizzati con sezioni e " +"articoli.\n" +"Valore predefinito: '%default'\n" +"Applicabile ai formati di output: ePub, MOBI" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:298 +msgid "" +"Tag indicating book has been read.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" +"Etichetta per indicare che il libro é stato letto\n" +"Valore predefinito: '%default'\n" +"Applicabile per i formati di output: ePub, MOBI" #: /home/kovid/work/calibre/src/calibre/library/cli.py:121 msgid "" @@ -8196,6 +8305,9 @@ msgid "" "If declared, --search is ignored.\n" "Default: all" msgstr "" +"Lista degli identificativi ID per il catalogo in campi separati da virgole\n" +"Se dichiarati, --la ricerca é ignorata\n" +"Valore predefinito: tutti" #: /home/kovid/work/calibre/src/calibre/library/cli.py:652 msgid "" @@ -8209,7 +8321,7 @@ msgstr "" "Default: nessun filtraggio" #: /home/kovid/work/calibre/src/calibre/library/cli.py:658 -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:482 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:484 msgid "Show detailed output information. Useful for debugging" msgstr "Mostra un output dettagliato. Utile per il debugging" @@ -8217,7 +8329,7 @@ msgstr "Mostra un output dettagliato. Utile per il debugging" msgid "Error: You must specify a catalog output file" msgstr "Errore: devi specificate un file di output del catalogo" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:689 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:687 msgid "" "%%prog command [options] [arguments]\n" "\n" @@ -8237,33 +8349,28 @@ msgstr "" "\n" "Per aiuto su un comando particolare: %%prog command --help\n" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1416 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1429 -msgid "Catalog" -msgstr "Catalogo" - -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1691 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1696 msgid "

Migrating old database to ebook library in %s

" msgstr "" "

Sto migrando il vecchio database nella nuova biblioteca in %s

" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1720 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1725 msgid "Copying %s" msgstr "Sto copiando %s" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1737 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1742 msgid "Compacting database" msgstr "Compattazione database" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1830 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1835 msgid "Checking SQL integrity..." msgstr "Controllo di integrita' SQL..." -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1867 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1872 msgid "Checking for missing files." msgstr "Controllo per file mancanti" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1889 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1894 msgid "Checked id" msgstr "ID controllate" @@ -8409,7 +8516,7 @@ msgstr "Conversione dei percorsi in letttere minuscole." msgid "Replace whitespace with underscores." msgstr "Sostituire gli spazi vuoti con sottolineature." -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:255 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:256 msgid "Requested formats not available" msgstr "I formati richiesti non sono disponibili." @@ -8418,7 +8525,7 @@ msgid "Password to access your calibre library. Username is " msgstr "" "Password per accedere alla propria biblioteca di calibre. Il nome utente è " -#: /home/kovid/work/calibre/src/calibre/library/server.py:856 +#: /home/kovid/work/calibre/src/calibre/library/server.py:860 msgid "" "[options]\n" "\n" @@ -8428,7 +8535,7 @@ msgstr "" "\n" "Avvia il server dei contenuti di calibre." -#: /home/kovid/work/calibre/src/calibre/library/server.py:858 +#: /home/kovid/work/calibre/src/calibre/library/server.py:862 msgid "Path to the library folder to serve with the content server" msgstr "" "Percorso per la cartella da cui la libreria e' disponibile per il server di " @@ -8506,7 +8613,7 @@ msgstr "Fermato" msgid "Finished" msgstr "Finito" -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:70 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:75 msgid "Working..." msgstr "In esecuzione..." @@ -8568,7 +8675,7 @@ msgstr "Inglese (Singapore)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:107 msgid "English (Yemen)" -msgstr "" +msgstr "Inglese (Yemen)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:108 msgid "German (AT)" @@ -8647,77 +8754,85 @@ msgstr "" msgid "Unknown News Source" msgstr "Sorgente di notizie sconosciuta" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:528 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:550 msgid "The \"%s\" recipe needs a username and password." msgstr "La ricetta \"%s\" richiede un nome utente e password." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:614 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:635 msgid "Download finished" msgstr "Scaricamento completato" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:616 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:637 msgid "Failed to download the following articles:" msgstr "Scaricamento dei seguenti articoli fallito:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:622 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:643 msgid "Failed to download parts of the following articles:" msgstr "Scaricamento dei seguenti articoli fallito parzialmente:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:624 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:645 msgid " from " msgstr " da " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:626 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:647 msgid "\tFailed links:" msgstr "\tLink falliti:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:707 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:728 msgid "Could not fetch article. Run with -vv to see the reason" msgstr "" "Non é stato possibile ottnere l'articolo. Provare a eseguire con l'opzione -" "vv per maggiori informazioni sulla ragione." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:728 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:749 msgid "Fetching feeds..." msgstr "Scaricamento feed..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:733 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:754 msgid "Got feeds from index page" msgstr "Ricevuti feed dalla pagina principale" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:739 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:760 msgid "Trying to download cover..." msgstr "Tentativo di scaricamento della copertina..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:797 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:762 +msgid "Generating masthead..." +msgstr "Preparazione dell'immagine principale in corso" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:835 msgid "Starting download [%d thread(s)]..." msgstr "Inizio scaricamento [%d articolo(i)]..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:813 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:851 msgid "Feeds downloaded to %s" msgstr "Feed scaricati in %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:823 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:861 msgid "Could not download cover: %s" msgstr "Impossibile scaricare la copertina: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:835 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:873 msgid "Downloading cover from %s" msgstr "Scaricamento copertina da %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:978 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:908 +msgid "Masthead image downloaded" +msgstr "Immagine principale scaricata" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1124 msgid "Untitled Article" msgstr "Articolo senza titolo" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1049 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1195 msgid "Article downloaded: %s" msgstr "Articolo scaricato: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1060 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1206 msgid "Article download failed: %s" msgstr "Scaricamento fallito dell'articolo: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1077 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 msgid "Fetching feed" msgstr "Scaricamento feed" @@ -8736,7 +8851,7 @@ msgstr "Pianificato" msgid "Custom" msgstr "Personalizzato" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:459 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:461 msgid "" "%prog URL\n" "\n" @@ -8746,11 +8861,11 @@ msgstr "" "\n" "Dov'è l'URL. Esempio: http://google.com" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:462 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:464 msgid "Base directory into which URL is saved. Default is %default" msgstr "Cartella base in cui le URL sono salvate. Predefinita: %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:465 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:467 msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " "s" @@ -8758,7 +8873,7 @@ msgstr "" "Timeout in secondi da aspettare per una risposta dal server. Predefinito: " "%default s" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:468 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:470 msgid "" "Maximum number of levels to recurse i.e. depth of links to follow. Default " "%default" @@ -8766,7 +8881,7 @@ msgstr "" "Numero massimo di livelli ricorsivi, cioè profondità dei link da seguire. " "Predefinito: %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:471 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:473 msgid "" "The maximum number of files to download. This only applies to files from tags. Default is %default" @@ -8774,7 +8889,7 @@ msgstr "" "Il numero massimo di file da scaricare. Questa si applica solo ai file dai " "tag . Predefinito: %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:473 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:475 msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" @@ -8782,7 +8897,7 @@ msgstr "" "Intervallo minimo in secondi tra due scaricamenti consecutivi. Predefinito: " "%default s" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:475 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:477 msgid "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." @@ -8790,7 +8905,7 @@ msgstr "" "La codifica caratteri del sito web che si sta cercando di scaricare. " "L'impostazione predefinita è quella di provare a indovinare la codifica" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:477 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:479 msgid "" "Only links that match this regular expression will be followed. This option " "can be specified multiple times, in which case as long as a link matches any " @@ -8801,7 +8916,7 @@ msgstr "" "un link corrisponde a una delle espressioni regolari verrà seguito. Per " "impostazione predefinita i link non vengono seguiti" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:479 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:481 msgid "" "Any link that matches this regular expression will be ignored. This option " "can be specified multiple times, in which case as long as any regexp matches " @@ -8816,7 +8931,7 @@ msgstr "" "sia --filter-regexp che --match-regexp, --filter-regexp viene applicata per " "prima" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:481 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:483 msgid "Do not download CSS stylesheets." msgstr "Non scaricare i fogli di stile CSS" @@ -10320,6 +10435,13 @@ msgstr "Non scaricare i fogli di stile CSS" #~ msgid "Usage: ebook-convert INFILE OUTFILE [OPTIONS..]" #~ msgstr "Modo d'uso: ebook-convert INFILE OUTFILE [OPTIONS..]" +#~ msgid "" +#~ "This RTF file has a feature calibre does not support. Convert it to HTML " +#~ "first and then try it." +#~ msgstr "" +#~ "Questo documento RTF ha caratteristiche non supportate da Calibre. Si " +#~ "consiglia di convertire il documento in HTML e rirpovare." + #~ msgid "Do not add a blank line between paragraphs." #~ msgstr "Non aggiungere una linea vuota fra i paragrafi." diff --git a/src/calibre/translations/ja.po b/src/calibre/translations/ja.po index 36d6fa2f95..22c4dcd78a 100644 --- a/src/calibre/translations/ja.po +++ b/src/calibre/translations/ja.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-02-01 07:47+0000\n" -"PO-Revision-Date: 2010-02-02 15:01+0000\n" +"PO-Revision-Date: 2010-02-03 06:50+0000\n" "Last-Translator: vbk \n" "Language-Team: Japanese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-02-03 04:45+0000\n" +"X-Launchpad-Export-Date: 2010-02-04 04:46+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -3747,7 +3747,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:196 msgid "General" -msgstr "" +msgstr "全般" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:196 msgid "Interface" @@ -4105,7 +4105,7 @@ msgstr "入力中に検索する" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 msgid "Automatically send downloaded &news to ebook reader" -msgstr "ダウンロードしたニュースを電子書籍リーダーに自動的に転送する(&N)" +msgstr "ダウンロードしたニュースを電子書籍リーダーに自動的に送信する(&N)" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 msgid "&Delete news from library when it is automatically sent to reader" @@ -5539,7 +5539,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:351 msgid "Send to device" -msgstr "デバイスに転送" +msgstr "デバイスに送信" #: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:352 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:304 @@ -6405,7 +6405,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:175 msgid "&General" -msgstr "" +msgstr "全般(&G)" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:176 msgid "Double click to change a keyboard shortcut" @@ -6907,7 +6907,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:37 msgid "Sending..." -msgstr "" +msgstr "送信中..." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:42 msgid "Mail successfully sent" From ae023e6093b4eac5c34a4f804131a341ebabea1b Mon Sep 17 00:00:00 2001 From: Translators <> Date: Fri, 5 Feb 2010 05:01:06 +0000 Subject: [PATCH 006/164] Launchpad automatic translations update. --- src/calibre/translations/de.po | 795 ++++++++++++++++++--------------- 1 file changed, 432 insertions(+), 363 deletions(-) diff --git a/src/calibre/translations/de.po b/src/calibre/translations/de.po index c80f81ffd6..a6ac29b0e8 100644 --- a/src/calibre/translations/de.po +++ b/src/calibre/translations/de.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: de\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-01-25 18:58+0000\n" -"PO-Revision-Date: 2010-01-25 18:52+0000\n" -"Last-Translator: Kovid Goyal \n" +"POT-Creation-Date: 2010-02-01 07:47+0000\n" +"PO-Revision-Date: 2010-02-04 20:47+0000\n" +"Last-Translator: S. Dorscht \n" "Language-Team: American English \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-01-26 04:50+0000\n" +"X-Launchpad-Export-Date: 2010-02-05 05:01+0000\n" "X-Generator: Launchpad (build Unknown)\n" "Generated-By: pygettext.py 1.5\n" @@ -31,7 +31,7 @@ msgstr "Macht absolut gar nichts" #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58 #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:205 -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:417 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:418 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:69 #: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:319 @@ -51,7 +51,6 @@ msgstr "Macht absolut gar nichts" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:104 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:106 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:171 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:329 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:444 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:894 @@ -66,18 +65,18 @@ msgstr "Macht absolut gar nichts" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:79 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:121 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:155 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:607 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:797 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:609 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:799 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:51 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:896 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:901 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:961 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:898 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:903 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:969 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:137 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:139 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:105 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:171 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:172 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:173 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:174 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:39 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/palmdoc/writer.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ztxt/writer.py:27 @@ -100,10 +99,10 @@ msgstr "Macht absolut gar nichts" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:233 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:235 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:273 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:121 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:276 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:132 @@ -114,7 +113,7 @@ msgstr "Macht absolut gar nichts" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:842 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:109 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:144 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:454 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:402 @@ -658,7 +657,7 @@ msgid "There is insufficient free space on the storage card" msgstr "Nicht genügend freier Speicherplatz auf der Speicherkarte" #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:799 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:822 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:824 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:232 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1068 @@ -820,8 +819,8 @@ msgstr "" msgid "Apply no processing to the image" msgstr "Auf das Bild keine Verarbeitung anwenden" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:441 -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:452 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:442 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:453 msgid "Page" msgstr "Seite" @@ -2083,7 +2082,7 @@ msgstr "" "abrufen\n" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1083 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1328 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1336 msgid "Cover" msgstr "Umschlagbild" @@ -2112,74 +2111,74 @@ msgstr "Titel für alle in den Büchern erstellten Inhaltsverzeichnisse" msgid "Disable compression of the file contents." msgstr "Komprimierung der Datei-Inhalte ausschalten." -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:102 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:105 msgid "All articles" msgstr "Alle Artikel" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1329 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1337 msgid "Title Page" msgstr "Titelseite" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1330 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1338 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:53 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:188 msgid "Table of Contents" msgstr "Inhaltsverzeichnis" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1331 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1339 msgid "Index" msgstr "Index" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1332 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1340 msgid "Glossary" msgstr "Glossar" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1333 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1341 msgid "Acknowledgements" msgstr "Danksagung" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1334 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1342 msgid "Bibliography" msgstr "Literaturverzeichnis" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1335 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1343 msgid "Colophon" msgstr "Schlussschrift" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1336 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1344 msgid "Copyright" msgstr "Copyright" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1337 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1345 msgid "Dedication" msgstr "Widmung" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1338 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1346 msgid "Epigraph" msgstr "Epigraph" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1339 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1347 msgid "Foreword" msgstr "Vorwort" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1340 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1348 msgid "List of Illustrations" msgstr "Abbildungsverzeichnis" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1341 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1349 msgid "List of Tables" msgstr "Tabellenverzeichnis" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1342 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1350 msgid "Notes" msgstr "Anmerkungen" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1343 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1351 msgid "Preface" msgstr "Vorwort" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1344 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1352 msgid "Main Text" msgstr "Haupttext" @@ -2556,10 +2555,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:199 msgid "" "This RTF file has a feature calibre does not support. Convert it to HTML " -"first and then try it." +"first and then try it.\n" +"%s" msgstr "" -"Diese RTF Datei enthält eine Funktion, die Calibre nicht unterstützt. " -"Wandeln Sie sie in HTML um und versuchen Sie es damit nochmal." +"Diese RTF Datei beinhaltet eine Funktion, die von Calibre nicht unterstützt " +"wird. Konvertieren Sie sie zunächst in HTML und versuchen Sie es erneut.\n" +"%s" #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:23 msgid "" @@ -2632,82 +2633,82 @@ msgstr "" "Leerzeichen vorhanden ist. Gestattet auch, die maximale Zeilenlänge unter " "das Minimum zu setzen." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:29 msgid "Send file to storage card instead of main memory by default" msgstr "" "Datei auf die Speicherkarte anstatt in den Hauptspeicher des Gerätes " "(Voreinstellung) senden" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:30 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:31 msgid "Confirm before deleting" msgstr "Bestätigung vor dem Löschen" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:33 msgid "Toolbar icon size" msgstr "Schaltflächengröße der Symbolleiste" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:34 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:35 msgid "Show button labels in the toolbar" msgstr "Zeige Schaltflächenbeschriftung in der Symbolleiste" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:36 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:37 msgid "Main window geometry" msgstr "Aufteilung des Hauptfensters" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:39 msgid "Notify when a new version is available" msgstr "Benachrichtigen, wenn eine neue Version verfügbar ist" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:40 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:41 msgid "Use Roman numerals for series number" msgstr "Benutze römische Ziffern für Reihennummerierung" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:43 msgid "Sort tags list by popularity" msgstr "Liste der Etiketten nach Beliebtheit sortieren" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:44 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:45 msgid "Number of covers to show in the cover browsing mode" msgstr "" "Anzahl der Umschlagbilder, die im Cover-Ansicht Modus angezeit werden" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:47 msgid "Defaults for conversion to LRF" msgstr "Voreinstellungen für Konvertierung zu LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:49 msgid "Options for the LRF ebook viewer" msgstr "Optionen für den LRF eBook Viewer" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:52 msgid "Formats that are viewed using the internal viewer" msgstr "Formate, die mithilfe des internen Viewers angesehen werden" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 msgid "Columns to be displayed in the book list" msgstr "Spalten, die in der Liste der Bücher angezeigt werden sollen" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 msgid "Automatically launch content server on application startup" msgstr "Content Server automatisch beim Aufrufen von Calibre starten" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 msgid "Oldest news kept in database" msgstr "Älteste in der Datenbank gespeicherte Nachrichten" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:57 msgid "Show system tray icon" msgstr "Symbol im Systembereich der Kontrollleiste anzeigen" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:59 msgid "Upload downloaded news to device" msgstr "Geladene Nachrichten auf das Gerät übertragen" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:61 msgid "Delete books from library after uploading to device" msgstr "Bücher nach der Übertragung auf das Gerät aus der Bibliothek löschen" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:63 msgid "" "Show the cover flow in a separate window instead of in the main calibre " "window" @@ -2715,85 +2716,89 @@ msgstr "" "Zeige Cover-Ansicht in einem eigenen Fenster anstatt im Hauptfenster von " "Calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:65 msgid "Disable notifications from the system tray icon" msgstr "" "Benachrichtigungen aus dem Systembereich der Kontrollleiste deaktivieren" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:67 msgid "Default action to perform when send to device button is clicked" msgstr "" "Voreingestellte Übertragungsart beim Verwenden des \"An Reader übertragen\" " "Buttons" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:89 msgid "Maximum number of waiting worker processes" msgstr "Maximale Anzahl der Arbeitsprozesse in der Warteschlange" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:91 msgid "Download social metadata (tags/rating/etc.)" msgstr "Soziale Metadaten (Etikettierung/Bewertung/etc.) laden" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:93 +msgid "Overwrite author and title with new metadata" +msgstr "Autor und Titel mit neuen Metadaten überschreiben" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:95 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "" "Maximale Anzahl gleichzeitiger Aufträge auf die Anzahl der CPUs beschränken" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:439 msgid "Copied" msgstr "Kopiert" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:167 msgid "Copy" msgstr "Kopieren" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:167 msgid "Copy to Clipboard" msgstr "In die Zwischenablage kopieren" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:395 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:398 msgid "Choose Files" msgstr "Dateien wählen" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:56 msgid "Searching in" msgstr "Suche in" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:167 msgid "Adding..." msgstr "Füge hinzu..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:180 msgid "Searching in all sub-directories..." msgstr "Suche in allen Unterverzeichnissen..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:193 msgid "Path error" msgstr "Verzeichnis Fehler" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:194 msgid "The specified directory could not be processed." msgstr "Das angegebene Verzeichnis konnte nicht bearbeitet werden." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:198 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:495 msgid "No books" msgstr "Keine Bücher" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:199 msgid "No books found" msgstr "Keine Bücher gefunden" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:265 msgid "Added" msgstr "Hinzugefügt" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:278 msgid "Adding failed" msgstr "Hinzufügen schlug fehl" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:279 msgid "" "The add books process seems to have hung. Try restarting calibre and adding " "the books in smaller increments, until you find the problem book." @@ -2802,11 +2807,11 @@ msgstr "" "Versuchen Sie Calibre neu zu starten und fügen Sie die Bücher in kleineren " "Mengen hinzu, bis Sie das verantwortliche Buch finden." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:287 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:291 msgid "Duplicates found!" msgstr "Duplikate gefunden!" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:292 msgid "" "Books with the same title as the following already exist in the database. " "Add them anyway?" @@ -2814,15 +2819,15 @@ msgstr "" "Es gibt schon Bücher mit dem selben Titel wie die folgenden in der " "Datenbank. Trotzdem hinzufügen?" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:295 msgid "Adding duplicates..." msgstr "Füge Duplikate hinzu..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:356 msgid "Saving..." msgstr "Speichere..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:409 msgid "Saved" msgstr "Gespeichert" @@ -2862,7 +2867,7 @@ msgid "output" msgstr "Ausgabe" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:36 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:27 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:49 @@ -2899,31 +2904,48 @@ msgstr "Felder, die in der Ausgabe erscheinen sollen:" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:17 msgid "E-book options" -msgstr "" +msgstr "eBook Einstellungen" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:256 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:271 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1416 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1430 msgid "Catalog" msgstr "Katalog" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:52 -msgid "Tags to exclude as genres (regex):" -msgstr "Als Genres ausgeschlossene Etiketten (regex):" - -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:68 msgid "'Don't include this book' tag:" msgstr "'Dieses Buch nicht einschließen' Etikett:" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:69 msgid "'Mark this book as read' tag:" msgstr "'Buch als gelesen markieren' Etikett:" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:70 msgid "Additional note tag prefix:" msgstr "Zusätzliches Etiketten-Präfix für Anmerkungen:" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:71 +msgid "Sort numbers as text" +msgstr "Zahlen als Text sortieren" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:72 +msgid "Regex pattern describing tags to exclude as genres:" +msgstr "Regex Ausdruck für Etiketten, die als Genres ausgeschlossen werden:" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:73 +msgid "Special marker tags for catalog generation" +msgstr "Spezielle Markierungsetiketten zur Katalogerstellung" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:74 +msgid "" +"Regex tips:\n" +"- The default regex of '\\[[\\w]*\\]' ignores tags of the form '[tag]', " +"e.g., '[Amazon Freebie]'\n" +"- A regex of '.' ignores all tags, generating no genre categories in the " +"catalog" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:28 msgid "Tab template for catalog.ui" msgstr "Tab-Template für catalog.ui" @@ -3060,12 +3082,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:570 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:574 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:357 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376 @@ -3423,7 +3445,7 @@ msgid "Change the title of this book" msgstr "Titel dieses Buches ändern" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:173 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:140 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:358 msgid "&Author(s): " msgstr "&Autor(en): " @@ -3441,7 +3463,7 @@ msgstr "" "werden" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:149 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367 msgid "&Publisher: " msgstr "&Herausgeber: " @@ -3452,7 +3474,7 @@ msgid "Ta&gs: " msgstr "&Etiketten: " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:178 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:151 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:369 msgid "" "Tags categorize the book. This is particularly useful while searching. " @@ -3463,15 +3485,15 @@ msgstr "" "oder Sätze verwenden." #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:179 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:156 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:372 msgid "&Series:" msgstr "&Reihen:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:181 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:154 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:158 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:373 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374 msgid "List of known series. You can add new series." @@ -3593,7 +3615,7 @@ msgid "RB Output" msgstr "RB-Ausgabe" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1637 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1639 msgid "Choose the format to view" msgstr "Format zur Vorschau wählen" @@ -3909,7 +3931,7 @@ msgstr "" "ebook.com/user_manual/xpath.html\">XPath Tutorial." #: /home/kovid/work/calibre/src/calibre/gui2/device.py:38 -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:132 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:135 msgid "No details available." msgstr "Keine weiteren Informationen verfügbar." @@ -4166,7 +4188,7 @@ msgid "My Books" msgstr "Meine Bücher" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:67 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:264 msgid "Generate catalog" msgstr "Erstelle Katalog" @@ -4298,132 +4320,132 @@ msgstr "" msgid "new email address" msgstr "Neue eMail-Adresse" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:477 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:821 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:478 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:823 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1248 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 msgid "Error" msgstr "Fehler" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:478 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:479 msgid "Failed to install command line tools." msgstr "Die Installation der Befehlszeilen-Tools schlug fehl." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:481 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:482 msgid "Command line tools installed" msgstr "Kommandozeilen-Tools installiert" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:482 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:483 msgid "Command line tools installed in" msgstr "Kommandozeilen-Tools installiert in" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:483 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:484 msgid "" "If you move calibre.app, you have to re-install the command line tools." msgstr "" "Wenn Sie Calibre.app verschieben, müssen Sie die Befehlszeilen-Tools neu " "installieren." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:534 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:535 msgid "No valid plugin path" msgstr "Kein gültiger Plugin-Pfad" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:536 msgid "%s is not a valid plugin path" msgstr "%s ist kein gültiger Plugin-Pfad" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:539 msgid "Choose plugin" msgstr "Plugin wählen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551 msgid "Plugin cannot be disabled" msgstr "Plugin kann nicht ausgeschaltet werden" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:552 msgid "The plugin: %s cannot be disabled" msgstr "Das Plugin: %s kann nicht ausgeschaltet werden" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:561 msgid "Plugin not customizable" msgstr "Plugin nicht anpassbar" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:561 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:562 msgid "Plugin: %s does not need customization" msgstr "Plugin: %s bedarf keines Anpassens" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:569 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:570 msgid "Customize" msgstr "Anpassen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:608 msgid "Cannot remove builtin plugin" msgstr "Kann festinstalliertes Plugin nicht entfernen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:609 msgid " cannot be removed. It is a builtin plugin. Try disabling it instead." msgstr "" " kann nicht entfernt werden, da es ein festinstalliertes Plugin ist. " "Versuchen Sie, es auszuschalten." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:641 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:642 msgid "Error log:" msgstr "Fehler Log:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:648 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:649 msgid "Access log:" msgstr "Zugriffs-Protokolldatei:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:676 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:677 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:659 msgid "Failed to start content server" msgstr "Content Server konnte nicht gestartet werden" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:701 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:550 msgid "Select location for books" msgstr "Speicherort für Bücher wählen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:708 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:709 msgid "Invalid size" msgstr "Ungültige Größe" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:709 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:710 msgid "The size %s is invalid. must be of the form widthxheight" msgstr "" "Die Größe %s ist ungültig. Sie muss der Form BreitexHöhe entsprechen." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:762 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:767 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:764 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:769 msgid "Invalid database location" msgstr "Ortsangabe der Datenbank ungültig" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:763 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:765 msgid "Invalid database location " msgstr "Ortsangabe der Datenbank ungültig " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:764 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:766 msgid "
Must be a directory." msgstr "
Muss ein Verzeichnis sein." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:768 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:770 msgid "Invalid database location.
Cannot write to " msgstr "Ortsangabe der Datenbank ungültig.
Speichern nicht möglich " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:802 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:804 msgid "Checking database integrity" msgstr "Überprüfe Vollständigkeit der Datenbank" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:822 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:824 msgid "Failed to check database integrity" msgstr "Überprüfung der Vollständigkeit der Datenbank schlug fehl" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:827 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:829 msgid "Some inconsistencies found" msgstr "Einige Inkonsistenzen gefunden." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:828 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:830 msgid "" "The following books had formats listed in the database that are not actually " "available. The entries for the formats have been removed. You should check " @@ -4532,13 +4554,13 @@ msgstr "" msgid "Sending to &device" msgstr "An das Gerät sen&den" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504 #: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:366 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 msgid "Preferences" msgstr "Einstellungen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 msgid "" "&Location of ebooks (The ebooks are stored in folders sorted by author and " "metadata is stored in the file metadata.db)" @@ -4547,24 +4569,28 @@ msgstr "" "sortiert gespeichert und die Metadaten werden in der Datei metadata.db " "gespeichert)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:503 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 msgid "Browse for the new database location" msgstr "Zu einem neuen Ort der Datenbank wechseln" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 msgid "Show notification when &new version is available" msgstr "Benachrichtigung anzeigen, wenn &neue Version verfügbar ist" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 msgid "Download &social metadata (tags/ratings/etc.) by default" msgstr "" "&Soziale Metadaten (Etikettierung/Bewertung/etc.) laden als Voreinstellung" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 +msgid "Overwrite & author/title by default when fetching metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 msgid "Default network &timeout:" msgstr "Voreinstellung für Zei&tüberschreitung bei Netzwerkverbindungen:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 msgid "" "Set the default timeout for network fetches (i.e. anytime we go out to the " "internet to get information)" @@ -4572,157 +4598,157 @@ msgstr "" "Voreinstellung der Zeitüberschreitung für Netzwerkabrufe festsetzen (Gilt " "immer dann, wenn aus dem Internet Informationen abgerufen werden sollen)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 msgid " seconds" msgstr " Sekunden" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 msgid "Choose &language (requires restart):" msgstr "Sprache wäh&len (erfordert Neustart):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 msgid "Normal" msgstr "Normal" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 msgid "High" msgstr "Hoch" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 msgid "Low" msgstr "Niedrig" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 msgid "Job &priority:" msgstr "Auftrags&priorität:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 msgid "Preferred &output format:" msgstr "Bev&orzugtes Ausgabe-Format:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 msgid "Preferred &input format order:" msgstr "Bevorzugte Reihenfolge des E&ingabe-Formats:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 msgid "Use &Roman numerals for series number" msgstr "&Römische Ziffern für Reihennummerierung verwenden" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 msgid "Enable system &tray icon (needs restart)" msgstr "" "Symbol im Sys&tembereich der Kontrollleiste aktivieren (erfordert Neustart)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 msgid "Show ¬ifications in system tray" msgstr "Be&nachrichtigungen im Systembereich der Kontrollleiste anzeigen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 msgid "Show cover &browser in a separate window (needs restart)" msgstr "Zeige Cover-Ansicht in einem eigenen Fenster (erfordert Neustart)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 msgid "Search as you type" msgstr "Suchen während der Eingabe" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 msgid "Automatically send downloaded &news to ebook reader" msgstr "Geladene &Nachrichten automatisch an das Gerät senden" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 msgid "&Delete news from library when it is automatically sent to reader" msgstr "" "Nachrichten nach der automatischen Übertragung auf das Gerät aus der " "Bibliothek &löschen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 msgid "&Number of covers to show in browse mode (needs restart):" msgstr "" "A&nzahl der anzuzeigenden Umschlagbilder in der Cover-Ansicht (erfordert " "Neustart):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 msgid "Toolbar" msgstr "Symbolleiste" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 msgid "Large" msgstr "Groß" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 msgid "Medium" msgstr "Mittel" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 msgid "Small" msgstr "Klein" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 msgid "&Button size in toolbar" msgstr "&Größe der Schaltflächen in der Symbolleiste" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 msgid "Show &text in toolbar buttons" msgstr "Zeige &Text in Schaltflächen der Symbolleiste" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 msgid "Select visible &columns in library view" msgstr "Si&chtbare Spalten in Bibliothek-Ansicht wählen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 msgid "Use internal &viewer for:" msgstr "Internen &Viewer verwenden für:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 msgid "Add an email address to which to send books" msgstr "Eine eMail-Adresse hinzufügen, an die die Bücher gesendet werden" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 msgid "&Add email" msgstr "eM&ail hinzufügen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 msgid "Make &default" msgstr "Als Voreinstellung verwenden" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 msgid "&Remove email" msgstr "eMail entfe&rnen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 msgid "calibre can send your books to you (or your reader) by email" msgstr "" "Calibre kann Ihre Bücher an Sie (oder Ihr Lesegerät) per eMail versenden" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 msgid "&Maximum number of waiting worker processes (needs restart):" msgstr "" "&Maximale Anzahl der Arbeitsprozesse in der Warteschlange (erfordert " "Neustart):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 msgid "&Check database integrity" msgstr "Vollständigkeit der &Datenbank überprüfen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 msgid "&Install command line tools" msgstr "Kommandozeilen-Tools &installieren" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549 msgid "Open calibre &configuration directory" msgstr "&Calibre Einstellungsverzeichnis öffnen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 msgid "Limit the max. simultaneous jobs to the available CPU &cores" msgstr "" "Die maximale Anzahl gleichzeitiger Aufträge auf die Anzahl der &CPU-Kerne " "beschränken." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 msgid "Debug &device detection" msgstr "Fehlersuche bei &der Geräteerkennung" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 msgid "" "calibre contains a network server that allows you to access your book " "collection using a browser from anywhere in the world. Any changes to the " @@ -4732,25 +4758,25 @@ msgstr "" "von überall aus mit Hilfe eines Browsers auf Ihre Büchersammlung zugreifen " "können. Einstellungsänderungen erfolgen erst nach einem Neustart des Servers." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553 msgid "Server &port:" msgstr "Server &Port:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117 msgid "&Username:" msgstr "Ben&utzername:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119 msgid "&Password:" msgstr "&Passwort:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 msgid "" "If you leave the password blank, anyone will be able to access your book " "collection using the web interface." @@ -4758,7 +4784,7 @@ msgstr "" "Wenn Sie das Kennwort leer lassen, kann jeder auf Ihre Büchersammlung über " "das Webinterface zugreifen." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " @@ -4766,41 +4792,41 @@ msgstr "" "Maximale Größe (BreitexHöhe) der angezeigten Umschlagbilder. Größere " "Umschlagbilder werden verkleinert. " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558 msgid "Max. &cover size:" msgstr "Maximale Ums&chlagbild-Größe:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212 msgid "&Show password" msgstr "Pa&sswort anzeigen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560 msgid "Max. &OPDS items per query:" msgstr "Maximale &ODPS Einträge pro Anfrage:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561 msgid "&Start Server" msgstr "Server &starten" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:562 msgid "St&op Server" msgstr "Server st&oppen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:563 msgid "&Test Server" msgstr "Server &testen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:564 msgid "Run server &automatically on startup" msgstr "Server &automatisch beim Starten hochfahren" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:565 msgid "View &server logs" msgstr "Server Logs ansehen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:566 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46 msgid "" "

Remember to leave calibre running as the server only runs as long as " @@ -4818,7 +4844,7 @@ msgstr "" "vollständige Servername oder die IP-Adresse des Rechners sein, auf dem " "Calibre läuft." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:564 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:568 msgid "" "Here you can customize the behavior of Calibre by controlling what plugins " "it uses." @@ -4826,27 +4852,27 @@ msgstr "" "Hier können Sie das Verhalten von Calibrie anpassen, indem sie festlegen, " "welche Plugins verwendet werden." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:565 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:569 msgid "Enable/&Disable plugin" msgstr "Plugin &ein-/ausschalten" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:566 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:570 msgid "&Customize plugin" msgstr "Plugin &anpassen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:567 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:571 msgid "&Remove plugin" msgstr "Plugin entfe&rnen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:568 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:572 msgid "Add new plugin" msgstr "Neues Plugin hinzufügen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:569 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:573 msgid "Plugin &file:" msgstr "&Plugin-Datei:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:571 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:575 msgid "&Add" msgstr "&Hinzufügen" @@ -4917,44 +4943,44 @@ msgstr "Sortierung nach Autor" msgid "ISBN" msgstr "ISBN" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:151 msgid "Finding metadata..." msgstr "Finde Metadaten..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:164 msgid "Could not find metadata" msgstr "Konnte Metadaten nicht finden" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:165 msgid "The metadata download seems to have stalled. Try again later." msgstr "" "Der Download der Metadaten scheint zum Stillstand gekommen zu sein. " "Versuchen Sie es später erneut." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:174 msgid "Warning" msgstr "Warnung" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:175 msgid "Could not fetch metadata from:" msgstr "Konnte Metadaten nicht abrufen von:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:179 msgid "No metadata found" msgstr "Keine Metadaten gefunden" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:180 msgid "" "No metadata found, try adjusting the title and author or the ISBN key." msgstr "" "Keine Metadaten gefunden, versuchen Sie, den Titel und den Autor oder die " "ISBN anzupassen." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:84 msgid "Fetch metadata" msgstr "Metadaten abrufen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85 msgid "" "

calibre can find metadata for your books from two locations: Google " "Books and isbndb.com.

To use isbndb.com you must sign up for a " @@ -4966,31 +4992,35 @@ msgstr "" "müssen Sie einen kostenfreien Account " "anlegen und den Zugangsschlüssel unten angeben." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:86 msgid "&Access Key:" msgstr "Zug&angsschlüssel:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87 msgid "Fetch" msgstr "Abrufen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:88 msgid "Matches" msgstr "Treffer" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:89 msgid "" "Select the book that most closely matches your copy from the list below" msgstr "" "Wählen Sie aus der unten stehenden Liste das Buch, das Ihrer Ausgabe " "entspricht" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:90 msgid "Download &social metadata (tags/rating/etc.) for the selected book" msgstr "" "Soziale Metadaten (Etikettierung/Bewertung/etc.) für das ausgewählte Buch " "laden" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:91 +msgid "Overwrite &author/title with author/title of selected book" +msgstr "&Autor/Titel mit Autor/Titel des gewählten Buches überschreiben" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/job_view_ui.py:37 msgid "Details of job" msgstr "Details des Auftrags" @@ -5011,24 +5041,24 @@ msgstr "Zeige Auftrag&details" msgid "Stop &all jobs" msgstr "&Alle Aufträge abbrechen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:138 msgid "Edit Meta information" msgstr "Meta-Informationen bearbeiten" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:353 msgid "Meta information" msgstr "Meta-Informationen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:141 msgid "A&utomatically set author sort" msgstr "Automatisch Sortierung nach Autor setzen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:142 msgid "Author s&ort: " msgstr "S&ortierung nach Autor: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:143 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360 msgid "" "Specify how the author(s) of this book should be sorted. For example Charles " @@ -5037,49 +5067,53 @@ msgstr "" "Geben Sie an, wie der Autor dieses Buches sortiert werden soll. \"Charles " "Dickens\" zum Beispiel als \"Dickens, Charles\"." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:144 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:363 msgid "&Rating:" msgstr "&Bewertung:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:143 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:364 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:365 msgid "Rating of this book. 0-5 stars" msgstr "Bewertung dieses Buches: 0-5 Sterne" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:147 +msgid "No change" +msgstr "Keine Änderung" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:366 msgid " stars" msgstr " Sterne" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:150 msgid "Add ta&gs: " msgstr "Etiketten hinzufü&gen: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:149 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:370 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371 msgid "Open Tag Editor" msgstr "Etiketten-Editor öffnen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:154 msgid "&Remove tags:" msgstr "Etiketten entfe&rnen:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:155 msgid "Comma separated list of tags to remove from the books. " msgstr "" "Durch Kommata getrennte Liste der Etiketten, die von den Büchern entfernt " "werden. " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:159 msgid "Remove &format:" msgstr "&Format entfernen:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:160 msgid "&Swap title and author" msgstr "Titel und Autor vertau&schen" @@ -5184,19 +5218,19 @@ msgstr "Es sind Fehler aufgetreten" msgid "There were errors downloading social metadata" msgstr "Während des Ladens von sozialen Metadaten sind Fehler aufgetreten" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:598 msgid "Cannot fetch metadata" msgstr "Konnte Metadaten nicht abrufen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:598 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:599 msgid "You must specify at least one of ISBN, Title, Authors or Publisher" msgstr "Sie müssen wenigstens ISBN, Titel, Autor oder Herausgeber angeben" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:660 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:664 msgid "Permission denied" msgstr "Zugriff verweigert" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:661 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:665 msgid "Could not open %s. Is it being used by another program?" msgstr "" "Konnte %s nicht öffnen. Wird es von einem anderen Programm verwendet?" @@ -6046,52 +6080,52 @@ msgstr "eBook öffnen" msgid "Configure" msgstr "Konfigurieren" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:24 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:25 msgid "Use the library located at the specified path." msgstr "Die im angegebenen Pfad sich befindende Bibliothek verwenden" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:27 msgid "Start minimized to system tray." msgstr "Minimiert im Systembereich der Kontrollleiste starten." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:29 msgid "Log debugging information to console" msgstr "Information zur Fehlersuche auf die Konsole ausgeben" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:30 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:31 msgid "Do not check for updates" msgstr "Nicht nach Updates suchen" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:83 msgid "If you are sure it is not running" msgstr "Wenn Sie sicher sind, dass es nicht gestartet ist" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:85 msgid "Cannot Start " msgstr "Start nicht möglich " -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:86 msgid "%s is already running." msgstr "%s ist schon gestartet." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:89 msgid "may be running in the system tray, in the" msgstr "kann im Systemtray gestartet sein, im" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:91 msgid "upper right region of the screen." msgstr "oberen rechten Bereich des Bildschirms." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:93 msgid "lower right region of the screen." msgstr "unteren rechten Bereich des Bildschirms." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:96 msgid "try rebooting your computer." msgstr "Versuchen Sie Ihren Rechner neu zu starten." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:95 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:110 msgid "try deleting the file" msgstr "Versuche Sie die Datei zu löschen" @@ -6253,11 +6287,11 @@ msgstr "Be&enden" msgid "ERROR: Unhandled exception" msgstr "FEHLER: Unbehandelte Ausnahme" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:89 msgid "Book has neither title nor ISBN" msgstr "Buch hat weder Titel noch ISBN" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:115 msgid "No matches found for this book" msgstr "Keine Treffer für dieses Buch" @@ -6392,11 +6426,11 @@ msgstr "Sammle " msgid "Fetch news from " msgstr "Nachrichten abrufen von " -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:276 msgid "Convert existing" msgstr "Konvertiere bestehende" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:277 msgid "" "The following books have already been converted to %s format. Do you wish to " "reconvert them?" @@ -6491,7 +6525,7 @@ msgid "Save to disk in a single directory" msgstr "Auf Festplatte in ein einziges Verzeichnis speichern" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1745 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1747 msgid "Save only %s format to disk" msgstr "Nur das %s Format auf Festplatte speichern" @@ -6546,7 +6580,7 @@ msgid "Calibre Library" msgstr "Calibre Bibliothek" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:485 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1901 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1903 msgid "Choose a location for your ebook library." msgstr "Wählen Sie einen Speicherort für Ihre eBook Bibliothek." @@ -6658,33 +6692,33 @@ msgstr "Archive" msgid "Supported books" msgstr "Unterstützte Bücher" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1052 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1054 msgid "Failed to read metadata" msgstr "Lesen der Metadaten schlug fehl" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1053 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1055 msgid "Failed to read metadata from the following" msgstr "Lesen der Metadaten schlug fehl bei folgenden" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1072 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1074 msgid "Cannot delete" msgstr "Löschen nicht möglich" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1075 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1631 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1650 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1077 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1633 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1652 msgid "No book selected" msgstr "Kein Buch ausgewählt" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1085 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1087 msgid "Choose formats to be deleted" msgstr "Zu löschende Formate auswählen" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1103 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1105 msgid "Choose formats not to be deleted" msgstr "Nicht zu löschende Formate auswählen" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1141 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1143 msgid "" "The selected books will be permanently deleted and the files removed " "from your computer. Are you sure?" @@ -6692,132 +6726,132 @@ msgstr "" "Die gewählten Bücher werden dauerhaft gelöscht und die Dateien vom " "Computer entfernt. Sicher?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1168 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1170 msgid "Deleting books from device." msgstr "Lösche Bücher vom Gerät." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1199 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1201 msgid "Cannot download metadata" msgstr "Konnte Metadaten nicht laden" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1200 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1257 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1290 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1315 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1374 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1487 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1202 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1259 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1292 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1317 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1376 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1489 msgid "No books selected" msgstr "Keine Bücher ausgewählt" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1215 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217 msgid "social metadata" msgstr "soziale Metadaten" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 msgid "covers" msgstr "Umschlagbilder" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 msgid "metadata" msgstr "Metadaten" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1221 msgid "Downloading %s for %d book(s)" msgstr "Lade %s für %d Bücher" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1241 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1243 msgid "Failed to download some metadata" msgstr "Das Laden der Metadaten schlug teilweise fehl" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1242 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1244 msgid "Failed to download metadata for the following:" msgstr "Das Laden der Metadaten schlug für folgende Bücher fehl:" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1245 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1247 msgid "Failed to download metadata:" msgstr "Laden der Metadaten schlug fehl:" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1256 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1289 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1258 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1291 msgid "Cannot edit metadata" msgstr "Kann Metadaten nicht bearbeiten" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1314 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1316 msgid "Cannot save to disk" msgstr "Speichern auf Festplatte nicht möglich" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1317 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1319 msgid "Choose destination directory" msgstr "Zielverzeichnis auswählen" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1344 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1346 msgid "Error while saving" msgstr "Fehler während des Speicherns" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1345 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1347 msgid "There was an error while saving." msgstr "Es gab einen Fehler während des Speicherns." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1352 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1353 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1354 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1355 msgid "Could not save some books" msgstr "Konnte einige Bücher nicht speichern" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1354 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1356 msgid "Click the show details button to see which ones." msgstr "" "Klicken Sie auf die Schaltfläche Details zeigen, um zu sehen, welche es gibt." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1375 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1377 msgid "No books selected to generate catalog for" msgstr "Keine Bücher ausgewählt, für die ein Katalog erstellt werden soll" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1392 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1394 msgid "Generating %s catalog..." msgstr "Erstelle %s Katalog..." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1403 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1405 msgid "Catalog generated." msgstr "Katalog erstellt." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1406 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1408 msgid "Export Catalog Directory" msgstr "Katalog-Verzeichnis exportieren" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1407 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1409 msgid "Select destination for %s.%s" msgstr "Wählen Sie das Ziel für %s.%s" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1421 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1423 msgid "Fetching news from " msgstr "Rufe Nachrichten ab von " -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1435 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1437 msgid " fetched." msgstr " abgerufen." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1486 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1488 msgid "Cannot convert" msgstr "Konvertierung nicht möglich" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1515 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1517 msgid "Starting conversion of %d book(s)" msgstr "Starte Konvertierung von %d Büchern" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1631 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1687 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1633 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1689 msgid "Cannot view" msgstr "Ansehen nicht möglich" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1649 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1651 msgid "Cannot open folder" msgstr "Konnte Verzeichnis nicht öffnen" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1671 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1673 msgid "Multiple Books Selected" msgstr "Mehrere Bücher ausgewählt" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1672 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1674 msgid "" "You are attempting to open %d books. Opening too many books at once can be " "slow and have a negative effect on the responsiveness of your computer. Once " @@ -6829,32 +6863,32 @@ msgstr "" "Rechners haben. Einmal gestartet kann der Prozess nicht beendet werden, " "bevor er abgeschlossen ist. Möchten Sie fortfahren?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1688 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1690 msgid "%s has no available formats." msgstr "%s hat keine verfügbaren Formate." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1729 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1731 msgid "Cannot configure" msgstr "Konfiguration nicht möglich" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1730 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1732 msgid "Cannot configure while there are running jobs." msgstr "Konfiguration nicht möglich während Aufträge abgearbeitet werden." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1773 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1775 msgid "No detailed info available" msgstr "Es sind keine genaueren Informationen verfügbar" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1774 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1776 msgid "No detailed information is available for books on the device." msgstr "" "Es sind keine weitere Informationen über Bücher auf dem Gerät verfügbar" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1829 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1831 msgid "Error talking to device" msgstr "Fehler in der Kommunikation zum Gerät" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1830 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1832 msgid "" "There was a temporary error talking to the device. Please unplug and " "reconnect the device and or reboot." @@ -6862,12 +6896,12 @@ msgstr "" "Es trat ein Fehler in der Kommunikation mit dem Gerät auf. Bitte entfernen " "und schließen Sie das Gerät wieder an und - oder starten Sie neu." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1853 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1881 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1855 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1883 msgid "Conversion Error" msgstr "Konvertierungsfehler" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1854 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1856 msgid "" "

Could not convert: %s

It is a DRMed book. You must " "first remove the DRM using third party tools." @@ -6876,23 +6910,23 @@ msgstr "" "href=\"%s\">DRM geschütztes Buch. Sie müssen zuerst das DRM mit Hilfe " "anderer Programme entfernen." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1867 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1869 msgid "Recipe Disabled" msgstr "Downloadschema ausgeschalten" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1882 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1884 msgid "Failed" msgstr "Misslungen" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1910 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1912 msgid "Invalid library location" msgstr "Ungültiger Ort der Bibliothek" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1911 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1913 msgid "Could not access %s. Using %s as the library." msgstr "Konnte nicht auf %s zugreifen. Verwende %s als Bibliothek." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1961 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1963 msgid "" "is the result of the efforts of many volunteers from all over the world. If " "you find it useful, please consider donating to support its development." @@ -6901,12 +6935,12 @@ msgstr "" "Falls Sie es nützlich finden, sollten Sie eine Spende zur Unterstützung " "seiner Entwicklung in Betracht ziehen." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1986 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1988 msgid "There are active jobs. Are you sure you want to quit?" msgstr "" "Es bestehen aktive Aufträge. Sind Sie sicher, dass sie es beenden wollen?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1989 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1991 msgid "" " is communicating with the device!
\n" " Quitting may cause corruption on the device.
\n" @@ -6917,11 +6951,11 @@ msgstr "" "verursachen.
\n" " Sind Sie sicher, dass sie beenden möchten?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1993 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1995 msgid "WARNING: Active jobs" msgstr "WARNUNG: Aktive Aufträge" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2045 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2047 msgid "" "will keep running in the system tray. To close it, choose Quit in the " "context menu of the system tray." @@ -6929,7 +6963,7 @@ msgstr "" "wird im System Tray weiter laufen. Zum Schließen wählen Sie Beenden " "im Kontextmenü des System Tray." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2064 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2066 msgid "" "Latest version: %s" @@ -6937,11 +6971,11 @@ msgstr "" "Letzte Version: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2072 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2074 msgid "Update available" msgstr "Neue Version verfügbar" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2073 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2075 msgid "" "%s has been updated to version %s. See the new features. Visit the download page?" @@ -7821,7 +7855,7 @@ msgstr "" "Maximale Anzahl an Treffern bei Ergebnissen von ODPS Anfragen. Dies betrifft " "Stanza, WordPlayer, etc. Integration." -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:34 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:35 msgid "" "The fields to output when cataloging books in the database. Should be a " "comma-separated list of fields.\n" @@ -7830,7 +7864,7 @@ msgid "" "Applies to: CSV, XML output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:43 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:44 msgid "" "Output field to sort on.\n" "Available fields: author_sort, id, rating, size, timestamp, title.\n" @@ -7842,14 +7876,14 @@ msgstr "" "Voreinstellung: '%default'\n" "Wird angewendet auf: CSV, XML Ausgabeformate" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:238 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:253 msgid "" "Title of generated catalog used as title in metadata.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:244 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:259 msgid "" "Save the output from different stages of the conversion pipeline to the " "specified directory. Useful if you are unsure at which stage of the " @@ -7858,14 +7892,14 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:253 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:268 msgid "" "Regex describing tags to exclude as genres.\n" "Default: '%default' excludes bracketed tags, e.g. '[]'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:258 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:273 msgid "" "Comma-separated list of tag words indicating book should be excluded from " "output. Case-insensitive.\n" @@ -7874,21 +7908,28 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:265 -msgid "" -"Tag indicating book has been read.\n" -"Default: '%default'\n" -"Applies to: ePub, MOBI output formats" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:270 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:280 msgid "" "Tag prefix for user notes, e.g. '*Jeff might enjoy reading this'.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:276 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:286 +msgid "" +"Sort titles with leading numbers as text, e.g.,\n" +"'2001: A Space Odyssey' sorts as \n" +"'Two Thousand One: A Space Odyssey'.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" +"Titel mit vorangehenden Nummern als Text sortieren, z.B.,\n" +"'2001: A Space Odyssey' wird sortiert als \n" +"'Two Thousand One: A Space Odyssey'.\n" +"Voreinstellung: '%default'\n" +"Gilt für: ePub, MOBI Ausgabeformate" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:292 msgid "" "Specifies the output profile. In some cases, an output profile is required " "to optimize the catalog for the device. For example, 'kindle' or " @@ -7898,6 +7939,16 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:298 +msgid "" +"Tag indicating book has been read.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" +"Etikett zeigt an, dass das Buch gelesen wurde.\n" +"Voreinstellung: '%default'\n" +"Gilt für: ePub, MOBI Ausgabeformate" + #: /home/kovid/work/calibre/src/calibre/library/cli.py:121 msgid "" "Path to the calibre library. Default is to use the path stored in the " @@ -8236,7 +8287,7 @@ msgstr "Detaillierte Ausgabeinformation anzeigen. Hilfreich zur Fehlersuche." msgid "Error: You must specify a catalog output file" msgstr "Fehler: Sie müssen eine Katalog-Ausgabedatei angeben" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:689 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:687 msgid "" "%%prog command [options] [arguments]\n" "\n" @@ -8521,7 +8572,7 @@ msgstr "Angehalten" msgid "Finished" msgstr "Fertig" -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:72 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:75 msgid "Working..." msgstr "Bei der Arbeit..." @@ -8660,77 +8711,85 @@ msgstr "" msgid "Unknown News Source" msgstr "Nachrichtenquelle unbekannt" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:533 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:550 msgid "The \"%s\" recipe needs a username and password." msgstr "" "Das \"%s\" Downloadschema benötigt einen Benutzernamen und ein Passwort." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:619 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:635 msgid "Download finished" msgstr "Download beendet" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:621 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:637 msgid "Failed to download the following articles:" msgstr "Der Download der folgenden Artikel schlug fehl:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:627 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:643 msgid "Failed to download parts of the following articles:" msgstr "Der Download von Teilen der folgenden Artikel schlug fehl:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:629 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:645 msgid " from " msgstr " von " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:631 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:647 msgid "\tFailed links:" msgstr "\tFehlgeschlagene Verknüpfungen:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:712 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:728 msgid "Could not fetch article. Run with -vv to see the reason" msgstr "" "Konnte Artikel nicht abrufen. Mit -vv starten, um den Grund dafür zu sehen" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:733 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:749 msgid "Fetching feeds..." msgstr "Rufe Feeds ab..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:738 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:754 msgid "Got feeds from index page" msgstr "Feeds der Index-Seite erhalten" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:744 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:760 msgid "Trying to download cover..." msgstr "Umschlagbild versuchen heruterzuladen ..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:802 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:762 +msgid "Generating masthead..." +msgstr "Erstelle Impressum..." + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:835 msgid "Starting download [%d thread(s)]..." msgstr "Download von [%d Thread(s)] starten ..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:818 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:851 msgid "Feeds downloaded to %s" msgstr "Feeds wurden nach %s heruntergeladen" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:861 msgid "Could not download cover: %s" msgstr "Umschlagbild konnte nicht heruntergeladen werden: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:840 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:873 msgid "Downloading cover from %s" msgstr "Umschlagbild von %s herunterladen" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:983 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:908 +msgid "Masthead image downloaded" +msgstr "Impressumskopie geladen" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1124 msgid "Untitled Article" msgstr "Artikel ohne Titel" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1195 msgid "Article downloaded: %s" msgstr "Artikel heruntergeladen: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1065 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1206 msgid "Article download failed: %s" msgstr "Herunterladen der Artikel schlug fehl: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1082 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 msgid "Fetching feed" msgstr "Feed abrufen" @@ -10869,6 +10928,13 @@ msgstr "CSS-Stylesheets nicht herunterladen." #~ msgid "Portuguese" #~ msgstr "Portugiesisch" +#~ msgid "" +#~ "This RTF file has a feature calibre does not support. Convert it to HTML " +#~ "first and then try it." +#~ msgstr "" +#~ "Diese RTF Datei enthält eine Funktion, die Calibre nicht unterstützt. " +#~ "Wandeln Sie sie in HTML um und versuchen Sie es damit nochmal." + #~ msgid "Input character &encoding" #~ msgstr "Zeichenkodi&erung der Eingabe" @@ -11107,3 +11173,6 @@ msgstr "CSS-Stylesheets nicht herunterladen." #~ msgid "E-book Options" #~ msgstr "eBook Einstellungen" + +#~ msgid "Tags to exclude as genres (regex):" +#~ msgstr "Als Genres ausgeschlossene Etiketten (regex):" From 0081dbabbec06eb643956e27a86e6580c3f960a9 Mon Sep 17 00:00:00 2001 From: Translators <> Date: Sat, 6 Feb 2010 04:52:36 +0000 Subject: [PATCH 007/164] Launchpad automatic translations update. --- src/calibre/translations/hu.po | 8 +- src/calibre/translations/tr.po | 774 ++++++++++++++++++--------------- 2 files changed, 416 insertions(+), 366 deletions(-) diff --git a/src/calibre/translations/hu.po b/src/calibre/translations/hu.po index 666db469ce..389edb12d2 100644 --- a/src/calibre/translations/hu.po +++ b/src/calibre/translations/hu.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-02-01 07:47+0000\n" -"PO-Revision-Date: 2010-02-02 18:44+0000\n" -"Last-Translator: Devilinside \n" +"PO-Revision-Date: 2010-02-05 12:50+0000\n" +"Last-Translator: Muszela Balázs \n" "Language-Team: Hungarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-02-03 04:45+0000\n" +"X-Launchpad-Export-Date: 2010-02-06 04:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -4041,7 +4041,7 @@ msgstr "&Következő" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:37 msgid "My Books" -msgstr "" +msgstr "Könyveim" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/tools.py:264 diff --git a/src/calibre/translations/tr.po b/src/calibre/translations/tr.po index cac783dba1..0f60d53b21 100644 --- a/src/calibre/translations/tr.po +++ b/src/calibre/translations/tr.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2010-01-25 18:58+0000\n" -"PO-Revision-Date: 2010-01-31 21:43+0000\n" -"Last-Translator: Kovid Goyal \n" +"POT-Creation-Date: 2010-02-01 07:47+0000\n" +"PO-Revision-Date: 2010-02-05 13:53+0000\n" +"Last-Translator: Yiğit Ateş \n" "Language-Team: Turkish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-02-01 04:45+0000\n" +"X-Launchpad-Export-Date: 2010-02-06 04:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -30,7 +30,7 @@ msgstr "Hiçbir şey yapmaz" #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58 #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:205 -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:417 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:418 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:69 #: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:319 @@ -50,7 +50,6 @@ msgstr "Hiçbir şey yapmaz" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:104 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:106 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:171 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:329 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:444 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:894 @@ -65,18 +64,18 @@ msgstr "Hiçbir şey yapmaz" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:79 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:121 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:155 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:607 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:797 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:609 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:799 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:51 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:896 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:901 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:961 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:898 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:903 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:969 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:137 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:139 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:105 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:171 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:172 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:173 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:174 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:39 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/palmdoc/writer.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ztxt/writer.py:27 @@ -99,10 +98,10 @@ msgstr "Hiçbir şey yapmaz" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:233 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:235 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:273 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:121 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:276 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:132 @@ -113,7 +112,7 @@ msgstr "Hiçbir şey yapmaz" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:842 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:109 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:144 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:454 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:402 @@ -615,7 +614,7 @@ msgstr "%s disk sürücüsü bulunamıyor." #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:577 msgid "Could not find mount helper: %s." -msgstr "" +msgstr "Bağlama yardımcısı bulunamıyor: %s." #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:589 msgid "" @@ -646,7 +645,7 @@ msgid "There is insufficient free space on the storage card" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:799 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:822 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:824 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:232 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1068 @@ -661,7 +660,7 @@ msgstr "Aygıtı Yapılandır" #: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:28 msgid "settings for device drivers" -msgstr "" +msgstr "aygıt sürücüleri için ayarlar" #: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:30 msgid "Ordered list of formats the device will accept" @@ -783,8 +782,8 @@ msgstr "" msgid "Apply no processing to the image" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:441 -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:452 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:442 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:453 msgid "Page" msgstr "" @@ -1792,7 +1791,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1083 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1328 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1336 msgid "Cover" msgstr "" @@ -1819,74 +1818,74 @@ msgstr "" msgid "Disable compression of the file contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:102 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:105 msgid "All articles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1329 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1337 msgid "Title Page" msgstr "Başlık Sayfası" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1330 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1338 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:53 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:188 msgid "Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1331 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1339 msgid "Index" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1332 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1340 msgid "Glossary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1333 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1341 msgid "Acknowledgements" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1334 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1342 msgid "Bibliography" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1335 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1343 msgid "Colophon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1336 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1344 msgid "Copyright" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1337 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1345 msgid "Dedication" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1338 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1346 msgid "Epigraph" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1339 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1347 msgid "Foreword" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1340 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1348 msgid "List of Illustrations" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1341 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1349 msgid "List of Tables" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1342 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1350 msgid "Notes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1343 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1351 msgid "Preface" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1344 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1352 msgid "Main Text" msgstr "" @@ -2182,7 +2181,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:199 msgid "" "This RTF file has a feature calibre does not support. Convert it to HTML " -"first and then try it." +"first and then try it.\n" +"%s" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:23 @@ -2234,183 +2234,187 @@ msgid "" "allows max-line-length to be below the minimum" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:29 msgid "Send file to storage card instead of main memory by default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:30 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:31 msgid "Confirm before deleting" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:33 msgid "Toolbar icon size" msgstr "Araç çubuğu simge boyutu" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:34 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:35 msgid "Show button labels in the toolbar" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:36 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:37 msgid "Main window geometry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:39 msgid "Notify when a new version is available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:40 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:41 msgid "Use Roman numerals for series number" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:43 msgid "Sort tags list by popularity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:44 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:45 msgid "Number of covers to show in the cover browsing mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:47 msgid "Defaults for conversion to LRF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:49 msgid "Options for the LRF ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:52 msgid "Formats that are viewed using the internal viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 msgid "Columns to be displayed in the book list" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 msgid "Automatically launch content server on application startup" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 msgid "Oldest news kept in database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:57 msgid "Show system tray icon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:59 msgid "Upload downloaded news to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:61 msgid "Delete books from library after uploading to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:63 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:64 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:65 msgid "Disable notifications from the system tray icon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:67 msgid "Default action to perform when send to device button is clicked" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:89 msgid "Maximum number of waiting worker processes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:91 msgid "Download social metadata (tags/rating/etc.)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:93 +msgid "Overwrite author and title with new metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:95 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:439 msgid "Copied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:167 msgid "Copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:167 msgid "Copy to Clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:395 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:398 msgid "Choose Files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:56 msgid "Searching in" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:167 msgid "Adding..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:180 msgid "Searching in all sub-directories..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:193 msgid "Path error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:194 msgid "The specified directory could not be processed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:198 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:495 msgid "No books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:199 msgid "No books found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:265 msgid "Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:278 msgid "Adding failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:279 msgid "" "The add books process seems to have hung. Try restarting calibre and adding " "the books in smaller increments, until you find the problem book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:287 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:291 msgid "Duplicates found!" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:292 msgid "" "Books with the same title as the following already exist in the database. " "Add them anyway?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:295 msgid "Adding duplicates..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:356 msgid "Saving..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:409 msgid "Saved" msgstr "" @@ -2450,7 +2454,7 @@ msgid "output" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:36 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:27 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:49 @@ -2490,28 +2494,45 @@ msgid "E-book options" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:256 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:271 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1416 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1430 msgid "Catalog" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:52 -msgid "Tags to exclude as genres (regex):" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:68 msgid "'Don't include this book' tag:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:69 msgid "'Mark this book as read' tag:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:70 msgid "Additional note tag prefix:" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:71 +msgid "Sort numbers as text" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:72 +msgid "Regex pattern describing tags to exclude as genres:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:73 +msgid "Special marker tags for catalog generation" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:74 +msgid "" +"Regex tips:\n" +"- The default regex of '\\[[\\w]*\\]' ignores tags of the form '[tag]', " +"e.g., '[Amazon Freebie]'\n" +"- A regex of '.' ignores all tags, generating no genre categories in the " +"catalog" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:28 msgid "Tab template for catalog.ui" msgstr "" @@ -2639,12 +2660,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:570 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:574 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:357 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376 @@ -2976,7 +2997,7 @@ msgid "Change the title of this book" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:173 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:140 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:358 msgid "&Author(s): " msgstr "" @@ -2992,7 +3013,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:149 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367 msgid "&Publisher: " msgstr "" @@ -3003,7 +3024,7 @@ msgid "Ta&gs: " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:178 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:151 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:369 msgid "" "Tags categorize the book. This is particularly useful while searching. " @@ -3011,15 +3032,15 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:179 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:156 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:372 msgid "&Series:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:181 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:154 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:158 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:373 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374 msgid "List of known series. You can add new series." @@ -3141,7 +3162,7 @@ msgid "RB Output" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1637 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1639 msgid "Choose the format to view" msgstr "" @@ -3434,7 +3455,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:38 -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:132 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:135 msgid "No details available." msgstr "" @@ -3683,7 +3704,7 @@ msgid "My Books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:67 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:264 msgid "Generate catalog" msgstr "" @@ -3804,127 +3825,127 @@ msgstr "" msgid "new email address" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:477 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:821 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:478 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:823 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1248 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 msgid "Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:478 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:479 msgid "Failed to install command line tools." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:481 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:482 msgid "Command line tools installed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:482 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:483 msgid "Command line tools installed in" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:483 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:484 msgid "" "If you move calibre.app, you have to re-install the command line tools." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:534 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:535 msgid "No valid plugin path" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:536 msgid "%s is not a valid plugin path" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:539 msgid "Choose plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551 msgid "Plugin cannot be disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:552 msgid "The plugin: %s cannot be disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:561 msgid "Plugin not customizable" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:561 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:562 msgid "Plugin: %s does not need customization" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:569 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:570 msgid "Customize" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:608 msgid "Cannot remove builtin plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:609 msgid " cannot be removed. It is a builtin plugin. Try disabling it instead." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:641 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:642 msgid "Error log:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:648 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:649 msgid "Access log:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:676 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:677 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:659 msgid "Failed to start content server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:701 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:550 msgid "Select location for books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:708 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:709 msgid "Invalid size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:709 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:710 msgid "The size %s is invalid. must be of the form widthxheight" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:762 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:767 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:764 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:769 msgid "Invalid database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:763 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:765 msgid "Invalid database location " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:764 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:766 msgid "
Must be a directory." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:768 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:770 msgid "Invalid database location.
Cannot write to " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:802 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:804 msgid "Checking database integrity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:822 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:824 msgid "Failed to check database integrity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:827 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:829 msgid "Some inconsistencies found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:828 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:830 msgid "" "The following books had formats listed in the database that are not actually " "available. The entries for the formats have been removed. You should check " @@ -4018,252 +4039,256 @@ msgstr "" msgid "Sending to &device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504 #: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:366 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 msgid "Preferences" msgstr "Tercihler" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 msgid "" "&Location of ebooks (The ebooks are stored in folders sorted by author and " "metadata is stored in the file metadata.db)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:503 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 msgid "Browse for the new database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 msgid "Show notification when &new version is available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 msgid "Download &social metadata (tags/ratings/etc.) by default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 +msgid "Overwrite & author/title by default when fetching metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 msgid "Default network &timeout:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 msgid "" "Set the default timeout for network fetches (i.e. anytime we go out to the " "internet to get information)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 msgid " seconds" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 msgid "Choose &language (requires restart):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 msgid "Normal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 msgid "High" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 msgid "Low" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 msgid "Job &priority:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 msgid "Preferred &output format:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 msgid "Preferred &input format order:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 msgid "Use &Roman numerals for series number" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 msgid "Enable system &tray icon (needs restart)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 msgid "Show ¬ifications in system tray" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 msgid "Show cover &browser in a separate window (needs restart)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 msgid "Search as you type" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 msgid "Automatically send downloaded &news to ebook reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 msgid "&Delete news from library when it is automatically sent to reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 msgid "&Number of covers to show in browse mode (needs restart):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 msgid "Toolbar" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 msgid "Large" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 msgid "Medium" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 msgid "Small" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 msgid "&Button size in toolbar" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 msgid "Show &text in toolbar buttons" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 msgid "Select visible &columns in library view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 msgid "Use internal &viewer for:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 msgid "Add an email address to which to send books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 msgid "&Add email" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 msgid "Make &default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 msgid "&Remove email" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 msgid "calibre can send your books to you (or your reader) by email" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 msgid "&Maximum number of waiting worker processes (needs restart):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 msgid "&Check database integrity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 msgid "&Install command line tools" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549 msgid "Open calibre &configuration directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 msgid "Limit the max. simultaneous jobs to the available CPU &cores" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 msgid "Debug &device detection" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 msgid "" "calibre contains a network server that allows you to access your book " "collection using a browser from anywhere in the world. Any changes to the " "settings will only take effect after a server restart." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553 msgid "Server &port:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117 msgid "&Username:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119 msgid "&Password:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 msgid "" "If you leave the password blank, anyone will be able to access your book " "collection using the web interface." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558 msgid "Max. &cover size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212 msgid "&Show password" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560 msgid "Max. &OPDS items per query:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561 msgid "&Start Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:562 msgid "St&op Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:563 msgid "&Test Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:564 msgid "Run server &automatically on startup" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:565 msgid "View &server logs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:566 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46 msgid "" "

Remember to leave calibre running as the server only runs as long as " @@ -4274,33 +4299,33 @@ msgid "" "the IP address of the computer calibre is running on." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:564 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:568 msgid "" "Here you can customize the behavior of Calibre by controlling what plugins " "it uses." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:565 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:569 msgid "Enable/&Disable plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:566 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:570 msgid "&Customize plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:567 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:571 msgid "&Remove plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:568 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:572 msgid "Add new plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:569 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:573 msgid "Plugin &file:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:571 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:575 msgid "&Add" msgstr "" @@ -4365,40 +4390,40 @@ msgstr "" msgid "ISBN" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:151 msgid "Finding metadata..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:164 msgid "Could not find metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:165 msgid "The metadata download seems to have stalled. Try again later." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:174 msgid "Warning" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:175 msgid "Could not fetch metadata from:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:179 msgid "No metadata found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:180 msgid "" "No metadata found, try adjusting the title and author or the ISBN key." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:84 msgid "Fetch metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85 msgid "" "

calibre can find metadata for your books from two locations: Google " "Books and isbndb.com.

To use isbndb.com you must sign up for a " @@ -4406,27 +4431,31 @@ msgid "" "below." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:86 msgid "&Access Key:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87 msgid "Fetch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:88 msgid "Matches" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:89 msgid "" "Select the book that most closely matches your copy from the list below" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:90 msgid "Download &social metadata (tags/rating/etc.) for the selected book" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:91 +msgid "Overwrite &author/title with author/title of selected book" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/job_view_ui.py:37 msgid "Details of job" msgstr "" @@ -4447,71 +4476,75 @@ msgstr "" msgid "Stop &all jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:138 msgid "Edit Meta information" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:353 msgid "Meta information" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:141 msgid "A&utomatically set author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:142 msgid "Author s&ort: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:143 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360 msgid "" "Specify how the author(s) of this book should be sorted. For example Charles " "Dickens should be sorted as Dickens, Charles." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:144 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:363 msgid "&Rating:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:143 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:364 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:365 msgid "Rating of this book. 0-5 stars" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:147 +msgid "No change" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:366 msgid " stars" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:150 msgid "Add ta&gs: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:149 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:370 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371 msgid "Open Tag Editor" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:154 msgid "&Remove tags:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:155 msgid "Comma separated list of tags to remove from the books. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:159 msgid "Remove &format:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:160 msgid "&Swap title and author" msgstr "" @@ -4614,19 +4647,19 @@ msgstr "" msgid "There were errors downloading social metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:598 msgid "Cannot fetch metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:598 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:599 msgid "You must specify at least one of ISBN, Title, Authors or Publisher" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:660 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:664 msgid "Permission denied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:661 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:665 msgid "Could not open %s. Is it being used by another program?" msgstr "" @@ -5413,52 +5446,52 @@ msgstr "E-kitap aç" msgid "Configure" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:24 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:25 msgid "Use the library located at the specified path." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:27 msgid "Start minimized to system tray." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:29 msgid "Log debugging information to console" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:30 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:31 msgid "Do not check for updates" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:83 msgid "If you are sure it is not running" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:85 msgid "Cannot Start " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:86 msgid "%s is already running." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:89 msgid "may be running in the system tray, in the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:91 msgid "upper right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:93 msgid "lower right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:96 msgid "try rebooting your computer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:95 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:110 msgid "try deleting the file" msgstr "" @@ -5614,11 +5647,11 @@ msgstr "" msgid "ERROR: Unhandled exception" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:89 msgid "Book has neither title nor ISBN" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:115 msgid "No matches found for this book" msgstr "" @@ -5749,11 +5782,11 @@ msgstr "" msgid "Fetch news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:276 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:277 msgid "" "The following books have already been converted to %s format. Do you wish to " "reconvert them?" @@ -5840,7 +5873,7 @@ msgid "Save to disk in a single directory" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1745 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1747 msgid "Save only %s format to disk" msgstr "" @@ -5895,7 +5928,7 @@ msgid "Calibre Library" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:485 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1901 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1903 msgid "Choose a location for your ebook library." msgstr "" @@ -5992,163 +6025,163 @@ msgstr "" msgid "Supported books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1052 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1054 msgid "Failed to read metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1053 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1055 msgid "Failed to read metadata from the following" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1072 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1074 msgid "Cannot delete" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1075 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1631 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1650 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1077 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1633 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1652 msgid "No book selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1085 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1087 msgid "Choose formats to be deleted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1103 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1105 msgid "Choose formats not to be deleted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1141 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1143 msgid "" "The selected books will be permanently deleted and the files removed " "from your computer. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1168 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1170 msgid "Deleting books from device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1199 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1201 msgid "Cannot download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1200 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1257 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1290 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1315 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1374 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1487 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1202 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1259 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1292 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1317 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1376 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1489 msgid "No books selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1215 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217 msgid "social metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 msgid "covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 msgid "metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1221 msgid "Downloading %s for %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1241 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1243 msgid "Failed to download some metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1242 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1244 msgid "Failed to download metadata for the following:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1245 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1247 msgid "Failed to download metadata:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1256 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1289 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1258 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1291 msgid "Cannot edit metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1314 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1316 msgid "Cannot save to disk" msgstr "Disk'e kayıt edilemiyor" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1317 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1319 msgid "Choose destination directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1344 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1346 msgid "Error while saving" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1345 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1347 msgid "There was an error while saving." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1352 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1353 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1354 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1355 msgid "Could not save some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1354 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1356 msgid "Click the show details button to see which ones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1375 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1377 msgid "No books selected to generate catalog for" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1392 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1394 msgid "Generating %s catalog..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1403 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1405 msgid "Catalog generated." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1406 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1408 msgid "Export Catalog Directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1407 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1409 msgid "Select destination for %s.%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1421 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1423 msgid "Fetching news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1435 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1437 msgid " fetched." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1486 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1488 msgid "Cannot convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1515 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1517 msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1631 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1687 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1633 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1689 msgid "Cannot view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1649 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1651 msgid "Cannot open folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1671 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1673 msgid "Multiple Books Selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1672 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1674 msgid "" "You are attempting to open %d books. Opening too many books at once can be " "slow and have a negative effect on the responsiveness of your computer. Once " @@ -6156,101 +6189,101 @@ msgid "" "continue?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1688 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1690 msgid "%s has no available formats." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1729 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1731 msgid "Cannot configure" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1730 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1732 msgid "Cannot configure while there are running jobs." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1773 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1775 msgid "No detailed info available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1774 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1776 msgid "No detailed information is available for books on the device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1829 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1831 msgid "Error talking to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1830 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1832 msgid "" "There was a temporary error talking to the device. Please unplug and " "reconnect the device and or reboot." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1853 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1881 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1855 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1883 msgid "Conversion Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1854 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1856 msgid "" "

Could not convert: %s

It is a DRMed book. You must " "first remove the DRM using third party tools." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1867 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1869 msgid "Recipe Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1882 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1884 msgid "Failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1910 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1912 msgid "Invalid library location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1911 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1913 msgid "Could not access %s. Using %s as the library." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1961 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1963 msgid "" "is the result of the efforts of many volunteers from all over the world. If " "you find it useful, please consider donating to support its development." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1986 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1988 msgid "There are active jobs. Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1989 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1991 msgid "" " is communicating with the device!
\n" " Quitting may cause corruption on the device.
\n" " Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1993 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1995 msgid "WARNING: Active jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2045 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2047 msgid "" "will keep running in the system tray. To close it, choose Quit in the " "context menu of the system tray." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2064 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2066 msgid "" "Latest version: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2072 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2074 msgid "Update available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2073 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2075 msgid "" "%s has been updated to version %s. See the new features. Visit the download page?" @@ -7045,7 +7078,7 @@ msgid "" "WordPlayer, etc. integration." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:34 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:35 msgid "" "The fields to output when cataloging books in the database. Should be a " "comma-separated list of fields.\n" @@ -7054,7 +7087,7 @@ msgid "" "Applies to: CSV, XML output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:43 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:44 msgid "" "Output field to sort on.\n" "Available fields: author_sort, id, rating, size, timestamp, title.\n" @@ -7062,14 +7095,14 @@ msgid "" "Applies to: CSV, XML output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:238 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:253 msgid "" "Title of generated catalog used as title in metadata.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:244 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:259 msgid "" "Save the output from different stages of the conversion pipeline to the " "specified directory. Useful if you are unsure at which stage of the " @@ -7078,14 +7111,14 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:253 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:268 msgid "" "Regex describing tags to exclude as genres.\n" "Default: '%default' excludes bracketed tags, e.g. '[]'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:258 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:273 msgid "" "Comma-separated list of tag words indicating book should be excluded from " "output. Case-insensitive.\n" @@ -7094,21 +7127,23 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:265 -msgid "" -"Tag indicating book has been read.\n" -"Default: '%default'\n" -"Applies to: ePub, MOBI output formats" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:270 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:280 msgid "" "Tag prefix for user notes, e.g. '*Jeff might enjoy reading this'.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:276 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:286 +msgid "" +"Sort titles with leading numbers as text, e.g.,\n" +"'2001: A Space Odyssey' sorts as \n" +"'Two Thousand One: A Space Odyssey'.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:292 msgid "" "Specifies the output profile. In some cases, an output profile is required " "to optimize the catalog for the device. For example, 'kindle' or " @@ -7118,6 +7153,13 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:298 +msgid "" +"Tag indicating book has been read.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/library/cli.py:121 msgid "" "Path to the calibre library. Default is to use the path stored in the " @@ -7367,7 +7409,7 @@ msgstr "" msgid "Error: You must specify a catalog output file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:689 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:687 msgid "" "%%prog command [options] [arguments]\n" "\n" @@ -7608,7 +7650,7 @@ msgstr "" msgid "Finished" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:72 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:75 msgid "Working..." msgstr "" @@ -7741,75 +7783,83 @@ msgstr "" msgid "Unknown News Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:533 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:550 msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:619 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:635 msgid "Download finished" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:621 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:637 msgid "Failed to download the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:627 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:643 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:629 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:645 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:631 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:647 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:712 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:728 msgid "Could not fetch article. Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:733 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:749 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:738 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:754 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:744 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:760 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:802 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:762 +msgid "Generating masthead..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:835 msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:818 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:851 msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:861 msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:840 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:873 msgid "Downloading cover from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:983 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:908 +msgid "Masthead image downloaded" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1124 msgid "Untitled Article" msgstr "Başlıksız Yazı" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1195 msgid "Article downloaded: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1065 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1206 msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1082 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 msgid "Fetching feed" msgstr "" From 73c13ffe272fd547888be7607b4c38778d018d28 Mon Sep 17 00:00:00 2001 From: Translators <> Date: Sun, 7 Feb 2010 04:36:57 +0000 Subject: [PATCH 008/164] Launchpad automatic translations update. --- src/calibre/translations/nb.po | 848 ++++++++++++++++++--------------- 1 file changed, 477 insertions(+), 371 deletions(-) diff --git a/src/calibre/translations/nb.po b/src/calibre/translations/nb.po index e9d7f9ae47..13d413c12e 100644 --- a/src/calibre/translations/nb.po +++ b/src/calibre/translations/nb.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2010-01-25 18:58+0000\n" -"PO-Revision-Date: 2010-01-31 21:38+0000\n" -"Last-Translator: Kovid Goyal \n" +"POT-Creation-Date: 2010-02-01 07:47+0000\n" +"PO-Revision-Date: 2010-02-06 20:40+0000\n" +"Last-Translator: Øyvind Øritsland \n" "Language-Team: Norwegian Bokmal \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-02-01 04:44+0000\n" +"X-Launchpad-Export-Date: 2010-02-07 04:36+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -30,7 +30,7 @@ msgstr "Gjør absolutt ingenting" #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58 #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:205 -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:417 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:418 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:69 #: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:319 @@ -50,7 +50,6 @@ msgstr "Gjør absolutt ingenting" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:104 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:106 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:171 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:329 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:444 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:894 @@ -65,18 +64,18 @@ msgstr "Gjør absolutt ingenting" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:79 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:121 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:155 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:607 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:797 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:609 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:799 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:51 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:896 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:901 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:961 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:898 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:903 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:969 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:137 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:139 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:105 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:171 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:172 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:173 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:174 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:39 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/palmdoc/writer.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ztxt/writer.py:27 @@ -99,10 +98,10 @@ msgstr "Gjør absolutt ingenting" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:233 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:235 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:273 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:121 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:276 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:132 @@ -113,7 +112,7 @@ msgstr "Gjør absolutt ingenting" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:842 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:109 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:144 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:454 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:402 @@ -655,7 +654,7 @@ msgid "There is insufficient free space on the storage card" msgstr "Det er ikke nok ledig plass på lagringskortet" #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:799 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:822 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:824 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:232 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1068 @@ -814,8 +813,8 @@ msgstr "" msgid "Apply no processing to the image" msgstr "Ikke legg prosesser til bildet" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:441 -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:452 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:442 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:453 msgid "Page" msgstr "Side" @@ -2046,7 +2045,7 @@ msgstr "" "Finn et omslagsbilde for boken identifisert ved ISBN fra LibraryThing.com\n" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1083 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1328 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1336 msgid "Cover" msgstr "Omslagside" @@ -2077,74 +2076,74 @@ msgstr "Tittel for enhver generert innlagt innholdsfortegnelse." msgid "Disable compression of the file contents." msgstr "Slå av kompresjon av filinnhold." -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:102 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:105 msgid "All articles" msgstr "Alle artikler" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1329 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1337 msgid "Title Page" msgstr "Tittelside" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1330 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1338 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:53 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:188 msgid "Table of Contents" msgstr "Innholdsfortegnelse" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1331 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1339 msgid "Index" msgstr "Innhold" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1332 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1340 msgid "Glossary" msgstr "Ordliste" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1333 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1341 msgid "Acknowledgements" msgstr "Påskjønnelse" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1334 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1342 msgid "Bibliography" msgstr "Litteraturliste" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1335 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1343 msgid "Colophon" msgstr "Kolofon" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1336 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1344 msgid "Copyright" msgstr "Opphavsrettighet" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1337 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1345 msgid "Dedication" msgstr "Tilegnet" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1338 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1346 msgid "Epigraph" msgstr "Epigraf" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1339 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1347 msgid "Foreword" msgstr "Forord" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1340 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1348 msgid "List of Illustrations" msgstr "Illustrasjonsliste" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1341 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1349 msgid "List of Tables" msgstr "Tabell-liste" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1342 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1350 msgid "Notes" msgstr "Merknader" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1343 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1351 msgid "Preface" msgstr "Forord" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1344 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1352 msgid "Main Text" msgstr "Hovedtekst" @@ -2505,10 +2504,12 @@ msgstr "Spesifiser tegnsettkodene for et utdatadokument. Standard er cp1252." #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:199 msgid "" "This RTF file has a feature calibre does not support. Convert it to HTML " -"first and then try it." +"first and then try it.\n" +"%s" msgstr "" -"Denne RTF filen har egenskaper calibre ikke støtter. Konverter det til HTML " -"og forsøk på nytt." +"Denne RTF filen har en egenskap som ikke Calibre støtter. Konverter den til " +"HTML først og deretter forsøk den.\n" +"%s" #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:23 msgid "" @@ -2573,160 +2574,164 @@ msgstr "" "Tving deling på maks-linjelengdens verdi når ingen mellomrom er til stede. " "Tillater også maks-linjelengde å være under minimum." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:29 msgid "Send file to storage card instead of main memory by default" msgstr "" "Send en fil til et lagringskort i stedet for hovedminnet som standard" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:30 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:31 msgid "Confirm before deleting" msgstr "Bekreft før sletting" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:33 msgid "Toolbar icon size" msgstr "Ikonstørrelse for verktøylinjen" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:34 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:35 msgid "Show button labels in the toolbar" msgstr "Vis knappebeskrivelse i verktøylinjen" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:36 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:37 msgid "Main window geometry" msgstr "Hovedvindus geometri" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:39 msgid "Notify when a new version is available" msgstr "Varsle dersom en ny versjon er tilgjengelig" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:40 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:41 msgid "Use Roman numerals for series number" msgstr "Bruk romerske tall for serienummer" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:43 msgid "Sort tags list by popularity" msgstr "Sorter merkelappliste etter populæritet" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:44 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:45 msgid "Number of covers to show in the cover browsing mode" msgstr "Antall omslag som skal vises ved omslagsvisningsmodus" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:47 msgid "Defaults for conversion to LRF" msgstr "Standarder for konvertering til LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:49 msgid "Options for the LRF ebook viewer" msgstr "Valgmuligheter for LRF e-bokleser" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:52 msgid "Formats that are viewed using the internal viewer" msgstr "Formater som er vist ved bruk av intern leser" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 msgid "Columns to be displayed in the book list" msgstr "Kolonner som skal vises i e-boklisten" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 msgid "Automatically launch content server on application startup" msgstr "Start innholdsserver automatisk ved programstart" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 msgid "Oldest news kept in database" msgstr "Eldste nyheter i databasen" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:57 msgid "Show system tray icon" msgstr "Vis systemikon" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:59 msgid "Upload downloaded news to device" msgstr "Legg inn nedlastede nyheter til enheten" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:61 msgid "Delete books from library after uploading to device" msgstr "Slett bøker fra biblioteket etter at du har lagt dem inn i enheten" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:63 msgid "" "Show the cover flow in a separate window instead of in the main calibre " "window" msgstr "Vis omslaget i et eget vindu istedet for i calibres hovedvindu" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:65 msgid "Disable notifications from the system tray icon" msgstr "Slå av varsler fra systemikonet" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:67 msgid "Default action to perform when send to device button is clicked" msgstr "Standard oppgaver som gjøres når send til enhet-knappen er klikket" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:89 msgid "Maximum number of waiting worker processes" msgstr "Maksumum antall ventende arbeidsprosesser" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:91 msgid "Download social metadata (tags/rating/etc.)" msgstr "Last ned sosiale metadata (emneord/bedømmelser/osv.)" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:93 +msgid "Overwrite author and title with new metadata" +msgstr "Overskriv forfatter og tittel med nye metadata" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:95 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "Begrense maksimalt antall samtidige oppgaver til antallet av CPUer" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:439 msgid "Copied" msgstr "Kopiert" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:167 msgid "Copy" msgstr "Kopier" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:167 msgid "Copy to Clipboard" msgstr "Kopier til utklippstavlen" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:395 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:398 msgid "Choose Files" msgstr "Velg filer" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:56 msgid "Searching in" msgstr "Søker i" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:167 msgid "Adding..." msgstr "Legger til..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:180 msgid "Searching in all sub-directories..." msgstr "Søker i alle undermapper..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:193 msgid "Path error" msgstr "Feil i stien" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:194 msgid "The specified directory could not be processed." msgstr "Det spesifiserte mappen kunne ikke prossesseres" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:198 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:495 msgid "No books" msgstr "Ingen bøker" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:199 msgid "No books found" msgstr "Ingen bøker ble funnet" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:265 msgid "Added" msgstr "Lagt til" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:278 msgid "Adding failed" msgstr "Kunne ikke legge til" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:279 msgid "" "The add books process seems to have hung. Try restarting calibre and adding " "the books in smaller increments, until you find the problem book." @@ -2734,11 +2739,11 @@ msgstr "" "Legg til bøker prosessen ser ut til å være låst. Forsøk å re-starte calibre " "og legg til færre bøker av gangen, til du finner problemboka." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:287 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:291 msgid "Duplicates found!" msgstr "Duplikater funnet!" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:292 msgid "" "Books with the same title as the following already exist in the database. " "Add them anyway?" @@ -2746,15 +2751,15 @@ msgstr "" "Bøker med den samme tittelen som den følgende finnes allerede i databasen. " "Legg dem til allikevel?" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:295 msgid "Adding duplicates..." msgstr "Legger inn duplikater..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:356 msgid "Saving..." msgstr "Lagrer" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:409 msgid "Saved" msgstr "Lagret" @@ -2794,7 +2799,7 @@ msgid "output" msgstr "utdata" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:36 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:27 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:49 @@ -2834,31 +2839,53 @@ msgid "E-book options" msgstr "E-bok valg" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:256 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:271 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1416 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1430 msgid "Catalog" msgstr "Katalog" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:52 -msgid "Tags to exclude as genres (regex):" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:68 msgid "'Don't include this book' tag:" -msgstr "" +msgstr "'Ikke inkluder denne boken' merke:" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:69 msgid "'Mark this book as read' tag:" -msgstr "" +msgstr "'Merk denne boken som lest' merke:" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:70 msgid "Additional note tag prefix:" +msgstr "Tilleggsnotatsmerke:" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:71 +msgid "Sort numbers as text" +msgstr "Sorter tall som tekst" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:72 +msgid "Regex pattern describing tags to exclude as genres:" +msgstr "Regex-mønsker beskriver meker som skal utelates som sjangre:" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:73 +msgid "Special marker tags for catalog generation" +msgstr "Spesiell markering for kataloggenerering" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:74 +msgid "" +"Regex tips:\n" +"- The default regex of '\\[[\\w]*\\]' ignores tags of the form '[tag]', " +"e.g., '[Amazon Freebie]'\n" +"- A regex of '.' ignores all tags, generating no genre categories in the " +"catalog" msgstr "" +"Regex-tips:\n" +"-Standarden regex av '\\[[\\w]*\\]' utelater merker av typen '[tag]', " +"f.eks., '[Amazon Freebie]'\n" +"-En regex av '.' utelater alle merker, genererer ingen sjangre av kategorien " +"i en katalog" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:28 msgid "Tab template for catalog.ui" -msgstr "" +msgstr "Tab mal for katalog.ui" #: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:36 msgid "" @@ -2991,12 +3018,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:570 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:574 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:357 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376 @@ -3350,7 +3377,7 @@ msgid "Change the title of this book" msgstr "Forandre bokens tittel" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:173 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:140 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:358 msgid "&Author(s): " msgstr "&Forfatter(e): " @@ -3368,7 +3395,7 @@ msgstr "" "adskilt av komma." #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:149 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367 msgid "&Publisher: " msgstr "&Forlegger: " @@ -3379,7 +3406,7 @@ msgid "Ta&gs: " msgstr "Ta&gger: " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:178 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:151 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:369 msgid "" "Tags categorize the book. This is particularly useful while searching. " @@ -3389,15 +3416,15 @@ msgstr "" "

De kan være ethvert ord eller fraser, separert ved kommategn." #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:179 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:156 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:372 msgid "&Series:" msgstr "&Serier:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:181 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:154 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:158 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:373 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374 msgid "List of known series. You can add new series." @@ -3519,7 +3546,7 @@ msgid "RB Output" msgstr "RB Utdata" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1637 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1639 msgid "Choose the format to view" msgstr "Velg format som skal vises" @@ -3826,7 +3853,7 @@ msgstr "" "ebook.com/user_manual/xpath.html\">XPath Tutorial." #: /home/kovid/work/calibre/src/calibre/gui2/device.py:38 -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:132 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:135 msgid "No details available." msgstr "Ingen detaljer tilgjengelig." @@ -4082,7 +4109,7 @@ msgid "My Books" msgstr "Mine bøker" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:67 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:264 msgid "Generate catalog" msgstr "Produser katalog" @@ -4212,130 +4239,130 @@ msgstr "" msgid "new email address" msgstr "ny e-postadresse" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:477 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:821 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:478 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:823 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1248 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 msgid "Error" msgstr "Feil" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:478 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:479 msgid "Failed to install command line tools." msgstr "Kunne ikke installere kommandolinjeverktøy." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:481 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:482 msgid "Command line tools installed" msgstr "Kommandolinjeverktøy installert" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:482 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:483 msgid "Command line tools installed in" msgstr "Kommandolinjeverktøy ble installert i" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:483 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:484 msgid "" "If you move calibre.app, you have to re-install the command line tools." msgstr "" "Dersom du flytter calibre.app, må du re-installere kommandolinjeverktøyene." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:534 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:535 msgid "No valid plugin path" msgstr "Ingen gyldig programtillegsbane" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:536 msgid "%s is not a valid plugin path" msgstr "%s er ikke en gyldig bane for programtillegget" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:539 msgid "Choose plugin" msgstr "Velg programtillegg" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551 msgid "Plugin cannot be disabled" msgstr "Programtillegget kan ikke slåes av" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:552 msgid "The plugin: %s cannot be disabled" msgstr "Programtillegget: %s kan ikke slåes av" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:561 msgid "Plugin not customizable" msgstr "Programtillegg ikke egendefinert" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:561 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:562 msgid "Plugin: %s does not need customization" msgstr "Programtillegg: %s trenger ikke å egendefineres" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:569 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:570 msgid "Customize" msgstr "Tilpass" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:608 msgid "Cannot remove builtin plugin" msgstr "Kan ikke fjerne innebygget programtillegg" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:609 msgid " cannot be removed. It is a builtin plugin. Try disabling it instead." msgstr "" " kan ikke fjernes. Dette er et innebygget programtillegg. Forsøk å slå det " "av istedet." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:641 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:642 msgid "Error log:" msgstr "Feil-logg:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:648 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:649 msgid "Access log:" msgstr "tilgangslogg:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:676 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:677 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:659 msgid "Failed to start content server" msgstr "Kunne ikke starte innholdsserveren" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:701 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:550 msgid "Select location for books" msgstr "Velg lokalisasjon for bøker" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:708 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:709 msgid "Invalid size" msgstr "Ugyldig størrelse" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:709 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:710 msgid "The size %s is invalid. must be of the form widthxheight" msgstr "Størrelsen %s er ugyldig. må være i formatet breddexhøyde" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:762 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:767 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:764 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:769 msgid "Invalid database location" msgstr "Ugyldig lokalisering av databasen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:763 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:765 msgid "Invalid database location " msgstr "Ugyldig lokalisering av databasen " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:764 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:766 msgid "
Must be a directory." msgstr "
Må være en katalog." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:768 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:770 msgid "Invalid database location.
Cannot write to " msgstr "Ugyldig lokalisering av databasen.
Kan ikke skrive til " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:802 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:804 msgid "Checking database integrity" msgstr "Sjekker databasens integritet" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:822 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:824 msgid "Failed to check database integrity" msgstr "Kunne ikke sjekke databasens integritet" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:827 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:829 msgid "Some inconsistencies found" msgstr "Noen uoverensstemmelser ble funnet" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:828 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:830 msgid "" "The following books had formats listed in the database that are not actually " "available. The entries for the formats have been removed. You should check " @@ -4444,13 +4471,13 @@ msgstr "" msgid "Sending to &device" msgstr "Sender til &enheten" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504 #: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:366 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 msgid "Preferences" msgstr "Innstillinger" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 msgid "" "&Location of ebooks (The ebooks are stored in folders sorted by author and " "metadata is stored in the file metadata.db)" @@ -4458,23 +4485,27 @@ msgstr "" "&Lokalisering av e-bøker (e-bøkene er lagret i foldere sortert etter " "forfattere og metadata er lagret i filen metadata.db)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:503 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 msgid "Browse for the new database location" msgstr "Søk etter den nye databaselokaliseringen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 msgid "Show notification when &new version is available" msgstr "Varsle når &ny versjon er tilgjengelig" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 msgid "Download &social metadata (tags/ratings/etc.) by default" msgstr "Last ned &sosiale metadata (emneord/bedømminger/osv.) som standard" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 +msgid "Overwrite & author/title by default when fetching metadata" +msgstr "Overskriv & forfatter/tittel som standard når du laster ned metadata" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 msgid "Default network &timeout:" msgstr "Standard netttilgang &tidsavbrudd:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 msgid "" "Set the default timeout for network fetches (i.e. anytime we go out to the " "internet to get information)" @@ -4482,148 +4513,148 @@ msgstr "" "Legg inn standard for tidsavbrudd for nettverkstilgang (for eksempel all den " "tid vi går på nettet for å finne informasjon)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 msgid " seconds" msgstr " sekunder" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 msgid "Choose &language (requires restart):" msgstr "Velg &språk (krever omstart):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 msgid "Normal" msgstr "Vanlig" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 msgid "High" msgstr "Høy" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 msgid "Low" msgstr "Lav" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 msgid "Job &priority:" msgstr "oppgave&prioritet:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 msgid "Preferred &output format:" msgstr "Foretrukket &utdataformat:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 msgid "Preferred &input format order:" msgstr "Foretrukket &inndataformat:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 msgid "Use &Roman numerals for series number" msgstr "Bruk &Romerske tall for seriell numerering" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 msgid "Enable system &tray icon (needs restart)" msgstr "Slå på oppgave&panelikonet" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 msgid "Show ¬ifications in system tray" msgstr "Vis &varsler i oppgavepanelet" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 msgid "Show cover &browser in a separate window (needs restart)" msgstr "Vis omslag &søk i eget vindu (krever omstart)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 msgid "Search as you type" msgstr "Søk mens du taster" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 msgid "Automatically send downloaded &news to ebook reader" msgstr "Send nedlastede &nyheter til eBokleseren" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 msgid "&Delete news from library when it is automatically sent to reader" msgstr "&Slett nyheter fra biblioteket når de automatisk sendes til leseren" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 msgid "&Number of covers to show in browse mode (needs restart):" msgstr "&Antall omslag som skal vises i søkemodus (krever omstart):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 msgid "Toolbar" msgstr "Verktøylinje" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 msgid "Large" msgstr "Store" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 msgid "Medium" msgstr "Medium" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 msgid "Small" msgstr "Små" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 msgid "&Button size in toolbar" msgstr "&Knappestørrelse i verktøylinjen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 msgid "Show &text in toolbar buttons" msgstr "Vis &tekst i verktøylinjens knapper" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 msgid "Select visible &columns in library view" msgstr "Velg synlige &kolonner i bibliotekvisningsmodus" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 msgid "Use internal &viewer for:" msgstr "Bruk intern &leser for:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 msgid "Add an email address to which to send books" msgstr "Legg til en e-postadresse til hvor du vil sende bøker" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 msgid "&Add email" msgstr "&Legg til e-post" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 msgid "Make &default" msgstr "Lag &standard" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 msgid "&Remove email" msgstr "&Fjern e-post" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 msgid "calibre can send your books to you (or your reader) by email" msgstr "Calibre kan sende bøker til deg (eller din leser) via e-post" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 msgid "&Maximum number of waiting worker processes (needs restart):" msgstr "&Maximum antall ventende arbeidsprosesser (omstart behøves):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 msgid "&Check database integrity" msgstr "&Sjekk databasens integritet" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 msgid "&Install command line tools" msgstr "&Installer kommandolinjeverktøy" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549 msgid "Open calibre &configuration directory" msgstr "Åpne Calibre&konfigurasjonsmappen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 msgid "Limit the max. simultaneous jobs to the available CPU &cores" msgstr "" "Begrens maksimalt antall samtidige oppgaver til verdien av CPU &cores" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 msgid "Debug &device detection" msgstr "Feilsøking &enhetsgjenkjenning" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 msgid "" "calibre contains a network server that allows you to access your book " "collection using a browser from anywhere in the world. Any changes to the " @@ -4633,25 +4664,25 @@ msgstr "" "ved å benytte en nettleser fra hvilket som helst sted i verden. Enhver " "forandring av innstillingene vil taes ibruk etter en omstart av serveren." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553 msgid "Server &port:" msgstr "Server &port:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117 msgid "&Username:" msgstr "&Brukernavn:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119 msgid "&Password:" msgstr "&Passord:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 msgid "" "If you leave the password blank, anyone will be able to access your book " "collection using the web interface." @@ -4659,7 +4690,7 @@ msgstr "" "Dersom du lar passordet stå tomt, vil enhver kunne gå inn i din boksamling " "ved å benytte web-brukergrensesnittet." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " @@ -4667,41 +4698,41 @@ msgstr "" "Maksimal størrelse (breddexhøyde) for å vise omslag. Større omslag vil bli " "re-dimensjonert. " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558 msgid "Max. &cover size:" msgstr "Maks. &omslagsstørrelse:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212 msgid "&Show password" msgstr "&Vis passord" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560 msgid "Max. &OPDS items per query:" msgstr "Maksimum &OPDS enheter per spørring:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561 msgid "&Start Server" msgstr "&Start server" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:562 msgid "St&op Server" msgstr "St&op server" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:563 msgid "&Test Server" msgstr "&Test server" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:564 msgid "Run server &automatically on startup" msgstr "Kjør server &automatisk ved oppstart" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:565 msgid "View &server logs" msgstr "Vis &serverlogger" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:566 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46 msgid "" "

Remember to leave calibre running as the server only runs as long as " @@ -4718,7 +4749,7 @@ msgstr "" "din iPhone. Her skal myhostname være fullt kvalifisert vertsnavn eller IP-" "adressen til datamaskinen Calibre kjører på." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:564 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:568 msgid "" "Here you can customize the behavior of Calibre by controlling what plugins " "it uses." @@ -4726,27 +4757,27 @@ msgstr "" "Her kan du skreddersy Calibres atferd ved å kontrollere hvilke " "programtillegg som skal benyttes." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:565 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:569 msgid "Enable/&Disable plugin" msgstr "Slå på/&Slå av programtillegg" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:566 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:570 msgid "&Customize plugin" msgstr "&Skreddersy programtillegg" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:567 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:571 msgid "&Remove plugin" msgstr "&Fjern programtillegg" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:568 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:572 msgid "Add new plugin" msgstr "Legg til nytt programtillegg" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:569 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:573 msgid "Plugin &file:" msgstr "Programtillegg &fil" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:571 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:575 msgid "&Add" msgstr "&Legg til" @@ -4816,43 +4847,43 @@ msgstr "Forfatter Sorter" msgid "ISBN" msgstr "ISBN" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:151 msgid "Finding metadata..." msgstr "Finner metadata" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:164 msgid "Could not find metadata" msgstr "Kunne ikke finne metadata" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:165 msgid "The metadata download seems to have stalled. Try again later." msgstr "" "Nedlastingen av metadata ser ut til å ha låst seg. Forsøk igjen senere." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:174 msgid "Warning" msgstr "Advarsel" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:175 msgid "Could not fetch metadata from:" msgstr "Kunne ikke finne metadata fra:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:179 msgid "No metadata found" msgstr "Ingen metadata funnet" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:180 msgid "" "No metadata found, try adjusting the title and author or the ISBN key." msgstr "" "Ingen metadata funnet. Forsøk å justere tittel og forfatter, eller ISBN-" "nøkkelen." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:84 msgid "Fetch metadata" msgstr "Finn metadata" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85 msgid "" "

calibre can find metadata for your books from two locations: Google " "Books and isbndb.com.

To use isbndb.com you must sign up for a " @@ -4864,28 +4895,32 @@ msgstr "" "først registrere deg med engratis " "konto og legge inn din aksessnøkkel under." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:86 msgid "&Access Key:" msgstr "&Aksessnøkkel" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87 msgid "Fetch" msgstr "Hent" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:88 msgid "Matches" msgstr "Treff" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:89 msgid "" "Select the book that most closely matches your copy from the list below" msgstr "Velg boken som samsvarer mest med ditt eksemplar fra listen under" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:90 msgid "Download &social metadata (tags/rating/etc.) for the selected book" msgstr "" "Last ned &sosiale metadata (emneord/bedømminger/osv.) for den valgte boken" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:91 +msgid "Overwrite &author/title with author/title of selected book" +msgstr "Overskriv &forfatter/tittel med forfatter/tittel fra valgte bok" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/job_view_ui.py:37 msgid "Details of job" msgstr "Oppgavedetaljer" @@ -4906,24 +4941,24 @@ msgstr "Vis oppgave&detaljer" msgid "Stop &all jobs" msgstr "Stopp &alle jobber" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:138 msgid "Edit Meta information" msgstr "Rediger metainformasjon" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:353 msgid "Meta information" msgstr "Metainformasjon" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:141 msgid "A&utomatically set author sort" msgstr "A&utomatisk forfattersortering" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:142 msgid "Author s&ort: " msgstr "Forfatter s&orter: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:143 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360 msgid "" "Specify how the author(s) of this book should be sorted. For example Charles " @@ -4932,47 +4967,51 @@ msgstr "" "Spesifiser hvordan forfatter(e) av denne boken skal sorteres. For eksempel " "Charles Dickens skal sorteres som Dickens, Charles." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:144 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:363 msgid "&Rating:" msgstr "&Bedømning" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:143 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:364 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:365 msgid "Rating of this book. 0-5 stars" msgstr "Bedømning av denne boken. 0-5 stjerner" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:147 +msgid "No change" +msgstr "Ingen endring" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:366 msgid " stars" msgstr " stjerner" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:150 msgid "Add ta&gs: " msgstr "Legg til ta&gger: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:149 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:370 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371 msgid "Open Tag Editor" msgstr "Åpne Tagg-redigering" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:154 msgid "&Remove tags:" msgstr "&Fjern emneord:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:155 msgid "Comma separated list of tags to remove from the books. " msgstr "Kommaseparert liste av emneord som skal fjernes fra bøkene. " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:159 msgid "Remove &format:" msgstr "Fjern &format:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:160 msgid "&Swap title and author" msgstr "&Bytt mellom tittel og forfatter" @@ -5076,19 +5115,19 @@ msgstr "Det oppsto feil" msgid "There were errors downloading social metadata" msgstr "Det oppsto feil ved nedlastingen av sosiale metadata" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:598 msgid "Cannot fetch metadata" msgstr "Kan ikke hente metadata" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:598 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:599 msgid "You must specify at least one of ISBN, Title, Authors or Publisher" msgstr "Du må spesifisere minst en av ISBN, Tittel, Forfatter eller Forlag" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:660 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:664 msgid "Permission denied" msgstr "Ingen adgang" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:661 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:665 msgid "Could not open %s. Is it being used by another program?" msgstr "Kunne ikke åpne %s. Blir den benyttet i et annet program?" @@ -5929,52 +5968,52 @@ msgstr "Åpne e-bok" msgid "Configure" msgstr "Konfigurer" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:24 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:25 msgid "Use the library located at the specified path." msgstr "Bruk biblioteket lokalisert ved en spesifikk sti." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:27 msgid "Start minimized to system tray." msgstr "Start minimalisert til systemstatusfeltet." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:29 msgid "Log debugging information to console" msgstr "Logg debugging informasjon til konsollen" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:30 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:31 msgid "Do not check for updates" msgstr "Ikke søk etter oppdateringer" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:83 msgid "If you are sure it is not running" msgstr "Er du sikker på at den ikke kjører" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:85 msgid "Cannot Start " msgstr "Kan ikke Starte " -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:86 msgid "%s is already running." msgstr "%s kjører allerede." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:89 msgid "may be running in the system tray, in the" msgstr "kan kjøre i systemfeltet, i" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:91 msgid "upper right region of the screen." msgstr "øvre høyre område av skjermen." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:93 msgid "lower right region of the screen." msgstr "nedre høyre område av skjermen." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:96 msgid "try rebooting your computer." msgstr "forsøk å re-starte datamaskinen" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:95 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:110 msgid "try deleting the file" msgstr "forsøk å slette filen" @@ -6134,11 +6173,11 @@ msgstr "&Avslutt" msgid "ERROR: Unhandled exception" msgstr "FEIL: Ubehandlet unntak" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:89 msgid "Book has neither title nor ISBN" msgstr "Boken har verken tittel eller ISBN" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:115 msgid "No matches found for this book" msgstr "Ingen treff ble funnet for denne boken" @@ -6273,11 +6312,11 @@ msgstr "Kø " msgid "Fetch news from " msgstr "Skaff nyheter fra " -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:276 msgid "Convert existing" msgstr "Konverter eksisterende" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:277 msgid "" "The following books have already been converted to %s format. Do you wish to " "reconvert them?" @@ -6370,7 +6409,7 @@ msgid "Save to disk in a single directory" msgstr "Lagre til disk i en enkelt mappe" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1745 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1747 msgid "Save only %s format to disk" msgstr "Lagre kun %s format til disken" @@ -6404,7 +6443,7 @@ msgstr "Samlet konvertering" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:360 msgid "Create catalog of books in your calibre library" -msgstr "" +msgstr "Lag en katalog av bøker i calibre-biblioteket ditt" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:376 msgid "Run welcome wizard" @@ -6425,13 +6464,13 @@ msgid "Calibre Library" msgstr "Calibre-bibliotek" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:485 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1901 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1903 msgid "Choose a location for your ebook library." msgstr "Velg en lokalisering for ditt e-bokbibliotek" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:523 msgid "Calibre Quick Start Guide" -msgstr "" +msgstr "Calibre hurtigstart-guide" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:703 msgid "Browse by covers" @@ -6534,33 +6573,33 @@ msgstr "Arkiver" msgid "Supported books" msgstr "Støttede bøker" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1052 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1054 msgid "Failed to read metadata" msgstr "Kunne ikke lese metadata" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1053 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1055 msgid "Failed to read metadata from the following" msgstr "Kunne ikke lese metadata fra følgende" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1072 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1074 msgid "Cannot delete" msgstr "Kan ikke fjerne" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1075 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1631 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1650 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1077 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1633 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1652 msgid "No book selected" msgstr "Ingen bøker ble valgt" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1085 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1087 msgid "Choose formats to be deleted" msgstr "Velg formater som skal fjernes" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1103 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1105 msgid "Choose formats not to be deleted" msgstr "Velg formatet ikke til å slettes" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1141 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1143 msgid "" "The selected books will be permanently deleted and the files removed " "from your computer. Are you sure?" @@ -6568,131 +6607,131 @@ msgstr "" "De valgte bøkene vil bli slettet permanent og filene vil bli fjernet " "fra datamaskinen din. Er du sikker?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1168 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1170 msgid "Deleting books from device." msgstr "Sletter bøker fra enheten." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1199 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1201 msgid "Cannot download metadata" msgstr "Kan ikke laste ned metadata" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1200 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1257 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1290 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1315 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1374 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1487 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1202 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1259 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1292 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1317 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1376 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1489 msgid "No books selected" msgstr "Ingen bøker ble valgt" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1215 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217 msgid "social metadata" msgstr "sosiale metadata" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 msgid "covers" msgstr "Omslag" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 msgid "metadata" msgstr "metadata" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1221 msgid "Downloading %s for %d book(s)" msgstr "Laster ned %s for %d bok(bøker)" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1241 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1243 msgid "Failed to download some metadata" msgstr "Klarte ikke å laste ned en del av metadataene" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1242 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1244 msgid "Failed to download metadata for the following:" msgstr "Kunne ikke laste ned metadata for følgende:" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1245 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1247 msgid "Failed to download metadata:" msgstr "Kunne ikke laste ned metadata:" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1256 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1289 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1258 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1291 msgid "Cannot edit metadata" msgstr "Kan ikke redigere metadata" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1314 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1316 msgid "Cannot save to disk" msgstr "Kan ikke lagre til disk" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1317 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1319 msgid "Choose destination directory" msgstr "Velg mottaksmappe" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1344 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1346 msgid "Error while saving" msgstr "Feil ved lagring" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1345 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1347 msgid "There was an error while saving." msgstr "En feil oppsto ved lagring" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1352 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1353 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1354 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1355 msgid "Could not save some books" msgstr "Kunne ikke lagre enkelte bøker" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1354 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1356 msgid "Click the show details button to see which ones." msgstr "Klikk vis detaljer knappen for å se hvilke." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1375 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1377 msgid "No books selected to generate catalog for" msgstr "Ingen bøker ble valgt for å produsere kataloger" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1392 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1394 msgid "Generating %s catalog..." msgstr "Produserer %s katalog..." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1403 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1405 msgid "Catalog generated." msgstr "Katalog produsert." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1406 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1408 msgid "Export Catalog Directory" -msgstr "" +msgstr "Eksporter katalogdirektorat" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1407 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1409 msgid "Select destination for %s.%s" -msgstr "" +msgstr "Velg plassering for %s.%s" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1421 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1423 msgid "Fetching news from " msgstr "Skaffer nyheter fra " -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1435 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1437 msgid " fetched." msgstr " funnet." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1486 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1488 msgid "Cannot convert" msgstr "Kan ikke konvertere" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1515 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1517 msgid "Starting conversion of %d book(s)" msgstr "Starter konverteringen av %d boken(bøkene)" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1631 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1687 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1633 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1689 msgid "Cannot view" msgstr "Kan ikke vise" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1649 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1651 msgid "Cannot open folder" msgstr "Kan ikke åpne folder" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1671 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1673 msgid "Multiple Books Selected" msgstr "Flere bøker ble valgt" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1672 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1674 msgid "" "You are attempting to open %d books. Opening too many books at once can be " "slow and have a negative effect on the responsiveness of your computer. Once " @@ -6704,32 +6743,32 @@ msgstr "" "startet denne prosessen, kan den ikke stanses før den er fullført. Ønsker du " "å fortsette?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1688 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1690 msgid "%s has no available formats." msgstr "%s har ikke tilgjengelig formater." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1729 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1731 msgid "Cannot configure" msgstr "Kan ikke konfigurere" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1730 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1732 msgid "Cannot configure while there are running jobs." msgstr "Kan ikke konfigurere samtidig som en oppgave kjører." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1773 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1775 msgid "No detailed info available" msgstr "Ingen detaljert informasjon er tilgjengelig" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1774 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1776 msgid "No detailed information is available for books on the device." msgstr "" "Ingen detaljert informasjon er tilgjengelig for bøker på denne enheten." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1829 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1831 msgid "Error talking to device" msgstr "Feil ved komminikasjonen med enheten" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1830 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1832 msgid "" "There was a temporary error talking to the device. Please unplug and " "reconnect the device and or reboot." @@ -6737,12 +6776,12 @@ msgstr "" "En midlertidig feil oppsto ved kommunikasjonen med enheten. Vennligst plugg " "ut og plugg inn igjen enheten, eller ta en omstart." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1853 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1881 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1855 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1883 msgid "Conversion Error" msgstr "Feil ved konverteringen" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1854 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1856 msgid "" "

Could not convert: %s

It is a DRMed book. You must " "first remove the DRM using third party tools." @@ -6751,23 +6790,23 @@ msgstr "" "Du må først fjerne DRM beskyttelsen ved å benytte et 3.parts program med " "slike egenskaper." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1867 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1869 msgid "Recipe Disabled" msgstr "Beskrivelse Slettet" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1882 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1884 msgid "Failed" msgstr "Feilet" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1910 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1912 msgid "Invalid library location" msgstr "Ugylding biblioteklokalisering" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1911 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1913 msgid "Could not access %s. Using %s as the library." msgstr "Kunne ikke koble til %s. Ved bruk av %s som bibliotek." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1961 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1963 msgid "" "is the result of the efforts of many volunteers from all over the world. If " "you find it useful, please consider donating to support its development." @@ -6775,11 +6814,11 @@ msgstr "" "er resultatet av innsatsen til mange frivillige fra hele verden. Dersom du " "synes programmet er godt, vennligst bidra med støtte til videre utvikling." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1986 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1988 msgid "There are active jobs. Are you sure you want to quit?" msgstr "Det finnes aktive oppgaver. Er du sikker på at du ønsker å avslutte?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1989 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1991 msgid "" " is communicating with the device!
\n" " Quitting may cause corruption on the device.
\n" @@ -6789,11 +6828,11 @@ msgstr "" " Å avslutte kan føre til feil på enheten.
\n" " Er du sikker på at du ønsker å avslutte?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1993 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1995 msgid "WARNING: Active jobs" msgstr "ADVARSEL: Aktive oppgaver" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2045 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2047 msgid "" "will keep running in the system tray. To close it, choose Quit in the " "context menu of the system tray." @@ -6801,7 +6840,7 @@ msgstr "" "vil fortsette å kjøre i systemstatusfeltet. For å stenge programmet, velg " "Stopp innholdslisten i systemstatusfeltet." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2064 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2066 msgid "" "Latest version: %s" @@ -6809,11 +6848,11 @@ msgstr "" "Siste versjon: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2072 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2074 msgid "Update available" msgstr "Oppdatering tilgjengelig" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2073 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2075 msgid "" "%s has been updated to version %s. See the new features. Visit the download page?" @@ -6953,7 +6992,7 @@ msgstr "Standard &språk for orddeling:" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:173 msgid "&Resize images larger than the viewer window (needs restart)" -msgstr "" +msgstr "&Gjør bilder større enn visningsområdet (krever omstart)" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:174 msgid "&User stylesheet" @@ -7000,6 +7039,7 @@ msgstr "Største bredde på leserens vindu, i piksler." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:46 msgid "Resize images larger than the viewer window to fit inside it" msgstr "" +"Tilpass bilder ved å øke størrelsen til å passe innenfor visningsområded" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 msgid "Hyphenate text" @@ -7678,7 +7718,7 @@ msgstr "" "Maksimum antall treff som resultat per OPDS spørring. Dette affekterer " "Stanza, WordPlayer osv integrering." -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:34 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:35 msgid "" "The fields to output when cataloging books in the database. Should be a " "comma-separated list of fields.\n" @@ -7686,8 +7726,13 @@ msgid "" "Default: '%%default'\n" "Applies to: CSV, XML output formats" msgstr "" +"Feltene for utdata ved katalogisering av bøker i databasen. Må være en " +"kommaseparert liste av felt.\n" +"Tilgjengelige felt: %s.\n" +"Standard: '%%standard'\n" +"Gjelder: CSC, XML utdata-formater" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:43 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:44 msgid "" "Output field to sort on.\n" "Available fields: author_sort, id, rating, size, timestamp, title.\n" @@ -7700,14 +7745,17 @@ msgstr "" "Standard: '%default'\n" "Gjelder: CSV, XML utdataformater" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:238 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:253 msgid "" "Title of generated catalog used as title in metadata.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" +"Tittel for generert katalog benyttet som tittel i metadata.\n" +"Standard: '%standard'\n" +"Gjelder: ePub, MOBI utdata-formater" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:244 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:259 msgid "" "Save the output from different stages of the conversion pipeline to the " "specified directory. Useful if you are unsure at which stage of the " @@ -7715,15 +7763,23 @@ msgid "" "Default: '%default'None\n" "Applies to: ePub, MOBI output formats" msgstr "" +"Lagre utdata fra forskjellige trinn av koverteringsplanen for et spesifisert " +"direktorat. Benyttes om du er usikker på hvilket trinn av " +"konverteringsprosessen en feil skjer.\n" +"Standard: '%standard'Ingen\n" +"Gjelder: ePub, MOBI utdata-formater" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:253 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:268 msgid "" "Regex describing tags to exclude as genres.\n" "Default: '%default' excludes bracketed tags, e.g. '[]'\n" "Applies to: ePub, MOBI output formats" msgstr "" +"Regex beskriver emneord som skal utelates som sjangere.\n" +"Standard: '%standard' utelater emneord i braketter, f.eks. '[]'\n" +"Gjelder: ePub, MOBI utdata-formater" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:258 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:273 msgid "" "Comma-separated list of tag words indicating book should be excluded from " "output. Case-insensitive.\n" @@ -7731,22 +7787,38 @@ msgid "" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" +"Kommaseparert liste over emneord som indikerer bøker som utelates fra " +"utdata. Berører ikke fastlagt standard.\n" +"-utelat emneord=hopp over som vil samsvare med 'utelat denne boken' og " +"'utelat tilsvarende'.\n" +"Standard: '%standard'\n" +"Gjelder: ePub, MOBI utdataformater" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:265 -msgid "" -"Tag indicating book has been read.\n" -"Default: '%default'\n" -"Applies to: ePub, MOBI output formats" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:270 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:280 msgid "" "Tag prefix for user notes, e.g. '*Jeff might enjoy reading this'.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" +"Merk prefiks for brukernotater, f.eks. '*Det er mulig Grethe vil like å lese " +"dette'.\n" +"Standard; '%standard'\n" +"Gjelder: ePub, MOBI utdataformater" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:276 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:286 +msgid "" +"Sort titles with leading numbers as text, e.g.,\n" +"'2001: A Space Odyssey' sorts as \n" +"'Two Thousand One: A Space Odyssey'.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" +"Sorter titler med ledende tall, som ved tekst f.eks..\n" +"'2001: A Space Odyssey' sorteres som \n" +"Standard: '%standard'\n" +"Gjelder: ePub, MOBI utdataformater" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:292 msgid "" "Specifies the output profile. In some cases, an output profile is required " "to optimize the catalog for the device. For example, 'kindle' or " @@ -7755,6 +7827,22 @@ msgid "" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" +"Spesifiserer utdataprofil. I enkelte tilfeller vil en utdataprofil være " +"nødvendig for å forbedre katalogen for enheten. F.eks. 'kindle' eller " +"'kindle_dx' lager en strukturert tabell av innhold med seksjoner og " +"artikler.\n" +"Standard: '%standard'\n" +"Gjelder: ePub, MOBI utdataformater" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:298 +msgid "" +"Tag indicating book has been read.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" +"Den merkede boken er lest.\n" +"Standard; '%standard'\n" +"Gjelder: ePub, MOBI utdataformater" #: /home/kovid/work/calibre/src/calibre/library/cli.py:121 msgid "" @@ -8058,6 +8146,9 @@ msgid "" "If declared, --search is ignored.\n" "Default: all" msgstr "" +"Kommaseparert liste over database ID som skal katalogiseres.\n" +"Om deklarert, -søk er utelatt.\n" +"Standard: alle" #: /home/kovid/work/calibre/src/calibre/library/cli.py:652 msgid "" @@ -8078,7 +8169,7 @@ msgstr "Vis detaljert utdatainformasjon. Benyttes for feilsøking" msgid "Error: You must specify a catalog output file" msgstr "Feilmelding: Du må spesifisere en katalog for utdata-fil" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:689 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:687 msgid "" "%%prog command [options] [arguments]\n" "\n" @@ -8356,7 +8447,7 @@ msgstr "Stoppet" msgid "Finished" msgstr "Fullført" -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:72 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:75 msgid "Working..." msgstr "Arbeider …" @@ -8418,7 +8509,7 @@ msgstr "Engelsk (Singapor)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:107 msgid "English (Yemen)" -msgstr "" +msgstr "Engels (Yemen)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:108 msgid "German (AT)" @@ -8494,75 +8585,83 @@ msgstr "" msgid "Unknown News Source" msgstr "Ukjent nyhetskilde" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:533 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:550 msgid "The \"%s\" recipe needs a username and password." msgstr "\"%s\"kvitteringen trenger et brukernavn og et pasord." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:619 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:635 msgid "Download finished" msgstr "Nedlasting ferdig" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:621 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:637 msgid "Failed to download the following articles:" msgstr "Klarte ikke å laste ned følgende artikler:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:627 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:643 msgid "Failed to download parts of the following articles:" msgstr "Kunne ikke laste ned deler av den følgende artikklene" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:629 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:645 msgid " from " msgstr " fra " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:631 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:647 msgid "\tFailed links:" msgstr "\tUgyldige lenker:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:712 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:728 msgid "Could not fetch article. Run with -vv to see the reason" msgstr "Kunne ikke hente artikkel. Kjør med -vv for å finne årsaken" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:733 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:749 msgid "Fetching feeds..." msgstr "Henter matinger..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:738 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:754 msgid "Got feeds from index page" msgstr "Funnet matinger fra indeksside" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:744 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:760 msgid "Trying to download cover..." msgstr "Forsøker å laste ned omslag..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:802 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:762 +msgid "Generating masthead..." +msgstr "Genererer mastetopp..." + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:835 msgid "Starting download [%d thread(s)]..." msgstr "Starter nedlasting [%d thread(s)]..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:818 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:851 msgid "Feeds downloaded to %s" msgstr "Matinger er lastet ned til %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:861 msgid "Could not download cover: %s" msgstr "Kunne ikke laste ned omslag: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:840 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:873 msgid "Downloading cover from %s" msgstr "Laster ned omslag fra %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:983 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:908 +msgid "Masthead image downloaded" +msgstr "Mastetopp-bilde er lastet ned" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1124 msgid "Untitled Article" msgstr "Utittelert artikkel" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1195 msgid "Article downloaded: %s" msgstr "Artikkelen har blitt lastet ned: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1065 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1206 msgid "Article download failed: %s" msgstr "Artikkelen kunne ikke lastes ned: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1082 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 msgid "Fetching feed" msgstr "Henter mating" @@ -9226,6 +9325,13 @@ msgstr "Ikke last ned CSS stilsett" #~ msgid "Produce more human-readable XML output." #~ msgstr "Produser en mer bedre lesbart XML utdatafil." +#~ msgid "" +#~ "This RTF file has a feature calibre does not support. Convert it to HTML " +#~ "first and then try it." +#~ msgstr "" +#~ "Denne RTF filen har egenskaper calibre ikke støtter. Konverter det til HTML " +#~ "og forsøk på nytt." + #~ msgid "Frequently used directories" #~ msgstr "Ofte benyttede kataloger" From 6248c2105f220e5447696e9742403ebeef1e491e Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 7 Feb 2010 11:10:36 -0700 Subject: [PATCH 009/164] Update bundled cssutils --- src/cssutils/__init__.py | 6 ++--- src/cssutils/css/cssvalue.py | 43 ++++++++++++++++++++++-------------- 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/src/cssutils/__init__.py b/src/cssutils/__init__.py index b3daf82688..ff4a7b8adf 100644 --- a/src/cssutils/__init__.py +++ b/src/cssutils/__init__.py @@ -88,11 +88,11 @@ Usage may be:: __all__ = ['css', 'stylesheets', 'CSSParser', 'CSSSerializer'] __docformat__ = 'restructuredtext' __author__ = 'Christof Hoeke with contributions by Walter Doerwald' -__date__ = '$LastChangedDate:: 2009-11-26 16:31:32 -0700 #$:' +__date__ = '$LastChangedDate:: 2009-12-30 14:26:29 -0700 #$:' -VERSION = '0.9.7a1' +VERSION = '0.9.7a2' -__version__ = '%s $Id: __init__.py 1892 2009-11-26 23:31:32Z cthedot $' % VERSION +__version__ = '%s $Id: __init__.py 1902 2009-12-30 21:26:29Z cthedot $' % VERSION import codec import os.path diff --git a/src/cssutils/css/cssvalue.py b/src/cssutils/css/cssvalue.py index 6146919416..4b045e78dd 100644 --- a/src/cssutils/css/cssvalue.py +++ b/src/cssutils/css/cssvalue.py @@ -5,10 +5,10 @@ - CSSValueList implements DOM Level 2 CSS CSSValueList """ -__all__ = ['CSSValue', 'CSSPrimitiveValue', 'CSSValueList', +__all__ = ['CSSValue', 'CSSPrimitiveValue', 'CSSValueList', 'CSSVariable', 'RGBColor'] __docformat__ = 'restructuredtext' -__version__ = '$Id: cssvalue.py 1864 2009-10-11 15:11:39Z cthedot $' +__version__ = '$Id: cssvalue.py 1909 2010-01-04 19:28:52Z cthedot $' from cssutils.prodparser import * import cssutils @@ -152,21 +152,21 @@ class CSSValue(cssutils.util._NewBase): ) ) operator = Choice(PreDef.S(), - PreDef.char('comma', ',', + PreDef.char('comma', ',', toSeq=lambda t, tokens: ('operator', t[1])), - PreDef.char('slash', '/', + PreDef.char('slash', '/', toSeq=lambda t, tokens: ('operator', t[1])), optional=True) # CSSValue PRODUCTIONS valueprods = Sequence(term, # TODO: only when setting via other class - PreDef.char('END', ';', - stopAndKeep=True, + PreDef.char('END', ';', + stopAndKeep=True, optional=True), Sequence(operator, # mayEnd this Sequence if whitespace term, - PreDef.char('END', ';', - stopAndKeep=True, + PreDef.char('END', ';', + stopAndKeep=True, optional=True), minmax=lambda: (0, None))) # parse @@ -861,25 +861,34 @@ class CSSFunction(CSSPrimitiveValue): def _productiondefinition(self): """Return defintion used for parsing.""" types = self._prods # rename! - valueProd = Prod(name='PrimitiveValue', - match=lambda t, v: t in (types.DIMENSION, - types.IDENT, - types.NUMBER, - types.PERCENTAGE, - types.STRING), - toSeq=lambda t, tokens: (t[0], CSSPrimitiveValue(t[1]))) + valueOrFunc = Choice(Prod(name='PrimitiveValue', + match=lambda t, v: t in (types.DIMENSION, + types.IDENT, + types.NUMBER, + types.PERCENTAGE, + types.STRING), + toSeq=lambda t, tokens: (t[0], CSSPrimitiveValue(t[1])) + ), + # FUNC is actually not in spec but used in e.g. Prince + PreDef.function(toSeq=lambda t, + tokens: ('FUNCTION', + CSSFunction( + cssutils.helper.pushtoken(t, tokens)) + ) + ) + ) funcProds = Sequence(Prod(name='FUNC', match=lambda t, v: t == types.FUNCTION, toSeq=lambda t, tokens: (t[0], cssutils.helper.normalize(t[1]))), Choice(Sequence(PreDef.unary(), - valueProd, + valueOrFunc, # more values starting with Comma # should use store where colorType is saved to # define min and may, closure? Sequence(PreDef.comma(), PreDef.unary(), - valueProd, + valueOrFunc, minmax=lambda: (0, 3)), PreDef.funcEnd(stop=True)), PreDef.funcEnd(stop=True)) From 391a47369d538ec9ebbcd8f70dd7c51bb8316f3f Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 7 Feb 2010 11:26:00 -0700 Subject: [PATCH 010/164] Fix catalog regression --- src/calibre/ebooks/mobi/writer.py | 15 ++++++++++++--- src/calibre/library/catalog.py | 6 ++++-- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/calibre/ebooks/mobi/writer.py b/src/calibre/ebooks/mobi/writer.py index f92e1bf2f9..c5bcee7e45 100644 --- a/src/calibre/ebooks/mobi/writer.py +++ b/src/calibre/ebooks/mobi/writer.py @@ -610,12 +610,21 @@ class MobiWriter(object): if (i>firstSequentialNode) and self._ctoc_map[i-1]['klass'] != 'section': if offset != previousOffset + previousLength : self._oeb.log.warning("*** TOC discontinuity: nodes are not sequential ***") - self._oeb.log.warning(" node %03d: '%s' offset: 0x%X length: 0x%X" % \ + self._oeb.log.info(" node %03d: '%s' offset: 0x%X length: 0x%X" % \ (i-1, entries[i-1].title, previousOffset, previousLength) ) self._oeb.log.warning(" node %03d: '%s' offset: 0x%X != 0x%06X" % \ (i, child.title, offset, previousOffset + previousLength) ) - self._oeb.log.warning("\tnode data %03d: %s" % (i-1, self._ctoc_map[i-1]) ) - self._oeb.log.warning("\tnode data %03d: %s" % (i, self._ctoc_map[i]) ) + # self._oeb.log.warning("\tnode data %03d: %s" % (i-1, self._ctoc_map[i-1]) ) + # self._oeb.log.warning("\tnode data %03d: %s" % (i, self._ctoc_map[i]) ) + # Dump the offending entry + self._oeb.log.info("...") + for z in range(i-6 if i-6 > 0 else 0, i+6 if i+6 < len(entries) else len(entries)): + if z == i: + self._oeb.log.warning("child %03d: %s" % (z, entries[z])) + else: + self._oeb.log.info("child %03d: %s" % (z, entries[z])) + self._oeb.log.info("...") + self._oeb.log.warning('_generate_indexed_navpoints: Failed to generate index') # Zero out self._HTMLRecords, return False self._HTMLRecords = [] diff --git a/src/calibre/library/catalog.py b/src/calibre/library/catalog.py index 9b82c7310e..85bd21692b 100644 --- a/src/calibre/library/catalog.py +++ b/src/calibre/library/catalog.py @@ -941,7 +941,7 @@ class EPUB_MOBI(CatalogPlugin): this_title['author'] = " & ".join(record['authors']) else: this_title['author'] = 'Unknown' - this_title['author_sort'] = record['author_sort'] if len(record['author_sort']) \ + this_title['author_sort'] = record['author_sort'].capitalize() if len(record['author_sort']) \ else self.author_to_author_sort(this_title['author']) this_title['id'] = record['id'] if record['publisher']: @@ -1089,6 +1089,7 @@ class EPUB_MOBI(CatalogPlugin): for author in unique_authors: self.opts.log.info((u" %-50s %-25s %2d" % (author[0][0:45], author[1][0:20], author[2])).encode('utf-8')) + self.authors = unique_authors def generateHTMLDescriptions(self): @@ -2490,7 +2491,7 @@ class EPUB_MOBI(CatalogPlugin): tokens = tokens[-1:] + tokens[:-1] if len(tokens) > 1: tokens[0] += ',' - return ' '.join(tokens) + return ' '.join(tokens).capitalize() def convertHTMLEntities(self, s): matches = re.findall("&#\d+;", s) @@ -3100,6 +3101,7 @@ class EPUB_MOBI(CatalogPlugin): op = self.opts.output_profile if op is None: op = 'default' + self.opts.output_profile = op opts.descriptionClip = 380 if op.endswith('dx') or 'kindle' not in op else 90 opts.basename = "Catalog" opts.plugin_path = self.plugin_path From 4275fe65d30b9b24717e2b97251f9097b16f5c0b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 7 Feb 2010 11:56:32 -0700 Subject: [PATCH 011/164] Catalog output: Make thumbnails larger for EPUB output --- src/calibre/library/catalog.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/calibre/library/catalog.py b/src/calibre/library/catalog.py index 85bd21692b..f24d04286d 100644 --- a/src/calibre/library/catalog.py +++ b/src/calibre/library/catalog.py @@ -1211,10 +1211,8 @@ class EPUB_MOBI(CatalogPlugin): imgTag['src'] = "../images/thumbnail_default.jpg" imgTag['alt'] = "cover" - # Tweak image size if we're building for Sony, not sure why this is needed - if self.opts.fmt == 'epub' and self.opts.output_profile.startswith("sony"): - imgTag['style'] = 'width: %dpx; height:%dpx;' % (self.THUMB_WIDTH * 2, self.THUMB_HEIGHT * 2) - else: + # Tweak image size if we're building EPUB, not sure why this is needed + if self.opts.fmt == 'mobi': imgTag['style'] = 'width: %dpx; height:%dpx;' % (self.THUMB_WIDTH, self.THUMB_HEIGHT) thumbnailTag = body.find(attrs={'class':'thumbnail'}) thumbnailTag.insert(0,imgTag) @@ -2928,7 +2926,8 @@ class EPUB_MOBI(CatalogPlugin): self.opts.log.error('generateThumbnail(): Cannot clone cover') raise RuntimeError # img, width, height - pw.MagickThumbnailImage(thumb, self.THUMB_WIDTH, self.THUMB_HEIGHT) + factor = 2 if self.opts.fmt == 'epub' else 1 + pw.MagickThumbnailImage(thumb, factor*self.THUMB_WIDTH, factor*self.THUMB_HEIGHT) pw.MagickWriteImage(thumb, os.path.join(image_dir, thumb_file)) pw.DestroyMagickWand(thumb) pw.DestroyMagickWand(img) From 6a24c74e50efe2a40e915c3008849b21e8f60081 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 7 Feb 2010 12:12:23 -0700 Subject: [PATCH 012/164] Courier Press by Krittika Goyal --- resources/recipes/courrier.recipe | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 resources/recipes/courrier.recipe diff --git a/resources/recipes/courrier.recipe b/resources/recipes/courrier.recipe new file mode 100644 index 0000000000..d5559a5fca --- /dev/null +++ b/resources/recipes/courrier.recipe @@ -0,0 +1,26 @@ +from calibre.web.feeds.news import BasicNewsRecipe +from calibre.ebooks.BeautifulSoup import BeautifulSoup + +class CourierPress(BasicNewsRecipe): + title = u'Courier Press' + language = 'en' + __author__ = 'Krittika Goyal' + oldest_article = 1 #days + max_articles_per_feed = 25 + + remove_stylesheets = True + remove_tags = [ + dict(name='iframe'), + ] + + feeds = [ +('Courier Press', + 'http://www.courierpress.com/rss/headlines/news/'), +] + + def preprocess_html(self, soup): + story = soup.find(name='div', attrs={'id':'article_body'}) + soup = BeautifulSoup('t') + body = soup.find(name='body') + body.insert(0, story) + return soup From a1365513ddde400a0d88c09952d943ca52b69443 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 7 Feb 2010 12:49:54 -0700 Subject: [PATCH 013/164] EPUB metadata: Extract the cover image from the html it is embededd in if possible, instead of rendering the html. Removes the white margins on covers and speeds up cover extraction --- src/calibre/ebooks/__init__.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/calibre/ebooks/__init__.py b/src/calibre/ebooks/__init__.py index d5651568fa..38a8ef3662 100644 --- a/src/calibre/ebooks/__init__.py +++ b/src/calibre/ebooks/__init__.py @@ -70,6 +70,19 @@ def extract_cover_from_embedded_svg(html, base, log): if href and os.access(path, os.R_OK): return open(path, 'rb').read() +def extract_calibre_cover(raw, base, log): + from calibre.ebooks.BeautifulSoup import BeautifulSoup + soup = BeautifulSoup(raw) + matches = soup.find(name=['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'span', + 'font', 'br']) + images = soup.findAll('img') + if matches is None and len(images) == 1 and \ + images[0].get('alt', '')=='cover': + img = images[0] + img = os.path.join(base, *img['src'].split('/')) + if os.path.exists(img): + return open(img, 'rb').read() + def render_html_svg_workaround(path_to_html, log, width=590, height=750): from calibre.ebooks.oeb.base import SVG_NS raw = open(path_to_html, 'rb').read() @@ -80,6 +93,11 @@ def render_html_svg_workaround(path_to_html, log, width=590, height=750): os.path.dirname(path_to_html), log) except: pass + if data is None: + try: + data = extract_calibre_cover(raw, os.path.dirname(path_to_html), log) + except: + pass if data is None: renderer = render_html(path_to_html, width, height) data = getattr(renderer, 'data', None) From d9c8bbdc392903e416047dd546bcb54a3d5dc9aa Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 7 Feb 2010 12:52:21 -0700 Subject: [PATCH 014/164] MOBI metadata:Fix regression that broke setting of titles in some MOBI files --- src/calibre/ebooks/metadata/mobi.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/calibre/ebooks/metadata/mobi.py b/src/calibre/ebooks/metadata/mobi.py index 4fab134937..482339d73a 100644 --- a/src/calibre/ebooks/metadata/mobi.py +++ b/src/calibre/ebooks/metadata/mobi.py @@ -181,11 +181,11 @@ class MetadataUpdater(object): off = self.pdbrecords[section][0] self.patch(off, new) - def create_exth(self, exth=None): + def create_exth(self, new_title=None, exth=None): # Add an EXTH block to record 0, rewrite the stream # self.hexdump(self.record0) - # Fetch the title + # Fetch the existing title title_offset, = struct.unpack('>L', self.record0[0x54:0x58]) title_length, = struct.unpack('>L', self.record0[0x58:0x5c]) title_in_file, = struct.unpack('%ds' % (title_length), self.record0[title_offset:title_offset + title_length]) @@ -207,14 +207,21 @@ class MetadataUpdater(object): exth = ['EXTH', pack('>II', 12, 0), pad] exth = ''.join(exth) - # Update title_offset + # Update title_offset, title_len if new_title self.record0[0x54:0x58] = pack('>L', 0x10 + mobi_header_length + len(exth)) + if new_title: + self.record0[0x58:0x5c] = pack('>L', len(new_title)) # Create an updated Record0 new_record0 = StringIO() new_record0.write(self.record0[:0x10 + mobi_header_length]) new_record0.write(exth) - new_record0.write(title_in_file) + if new_title: + #new_record0.write(new_title.encode(self.codec, 'replace')) + new_title = (new_title or _('Unknown')).encode(self.codec, 'replace') + new_record0.write(new_title) + else: + new_record0.write(title_in_file) # Pad to a 4-byte boundary trail = len(new_record0.getvalue()) % 4 @@ -332,7 +339,7 @@ class MetadataUpdater(object): raise MobiError('No existing EXTH record. Cannot update metadata.') self.record0[92:96] = iana2mobi(mi.language) - self.create_exth(exth) + self.create_exth(exth=exth, new_title=mi.title) # Fetch updated timestamp, cover_record, thumbnail_record self.fetchEXTHFields() From d4afa232cd93dc33f7d24712aa4f2dc7165bef72 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 7 Feb 2010 14:08:21 -0700 Subject: [PATCH 015/164] Unbundle cssutils --- setup/installer/__init__.py | 2 +- src/cssutils/__init__.py | 416 ------- src/cssutils/_fetch.py | 44 - src/cssutils/_fetchgae.py | 68 -- src/cssutils/codec.py | 582 ---------- src/cssutils/css/__init__.py | 66 -- src/cssutils/css/csscharsetrule.py | 158 --- src/cssutils/css/csscomment.py | 84 -- src/cssutils/css/cssfontfacerule.py | 182 --- src/cssutils/css/cssimportrule.py | 366 ------ src/cssutils/css/cssmediarule.py | 381 ------- src/cssutils/css/cssnamespacerule.py | 282 ----- src/cssutils/css/csspagerule.py | 273 ----- src/cssutils/css/cssproperties.py | 122 -- src/cssutils/css/cssrule.py | 106 -- src/cssutils/css/cssrulelist.py | 47 - src/cssutils/css/cssstyledeclaration.py | 642 ----------- src/cssutils/css/cssstylerule.py | 233 ---- src/cssutils/css/cssstylesheet.py | 739 ------------ src/cssutils/css/cssunknownrule.py | 208 ---- src/cssutils/css/cssvalue.py | 1137 ------------------- src/cssutils/css/cssvariablesdeclaration.py | 292 ----- src/cssutils/css/cssvariablesrule.py | 164 --- src/cssutils/css/property.py | 477 -------- src/cssutils/css/selector.py | 798 ------------- src/cssutils/css/selectorlist.py | 234 ---- src/cssutils/css2productions.py | 131 --- src/cssutils/cssproductions.py | 121 -- src/cssutils/errorhandler.py | 126 -- src/cssutils/helper.py | 137 --- src/cssutils/parse.py | 185 --- src/cssutils/prodparser.py | 666 ----------- src/cssutils/profiles.py | 572 ---------- src/cssutils/sac.py | 428 ------- src/cssutils/script.py | 354 ------ src/cssutils/serialize.py | 1012 ----------------- src/cssutils/settings.py | 13 - src/cssutils/stylesheets/__init__.py | 11 - src/cssutils/stylesheets/medialist.py | 233 ---- src/cssutils/stylesheets/mediaquery.py | 207 ---- src/cssutils/stylesheets/stylesheet.py | 108 -- src/cssutils/stylesheets/stylesheetlist.py | 32 - src/cssutils/tokenize2.py | 197 ---- src/cssutils/util.py | 870 -------------- src/encutils/__init__.py | 655 ----------- 45 files changed, 1 insertion(+), 14160 deletions(-) delete mode 100644 src/cssutils/__init__.py delete mode 100644 src/cssutils/_fetch.py delete mode 100644 src/cssutils/_fetchgae.py delete mode 100644 src/cssutils/codec.py delete mode 100644 src/cssutils/css/__init__.py delete mode 100644 src/cssutils/css/csscharsetrule.py delete mode 100644 src/cssutils/css/csscomment.py delete mode 100644 src/cssutils/css/cssfontfacerule.py delete mode 100644 src/cssutils/css/cssimportrule.py delete mode 100644 src/cssutils/css/cssmediarule.py delete mode 100644 src/cssutils/css/cssnamespacerule.py delete mode 100644 src/cssutils/css/csspagerule.py delete mode 100644 src/cssutils/css/cssproperties.py delete mode 100644 src/cssutils/css/cssrule.py delete mode 100644 src/cssutils/css/cssrulelist.py delete mode 100644 src/cssutils/css/cssstyledeclaration.py delete mode 100644 src/cssutils/css/cssstylerule.py delete mode 100644 src/cssutils/css/cssstylesheet.py delete mode 100644 src/cssutils/css/cssunknownrule.py delete mode 100644 src/cssutils/css/cssvalue.py delete mode 100644 src/cssutils/css/cssvariablesdeclaration.py delete mode 100644 src/cssutils/css/cssvariablesrule.py delete mode 100644 src/cssutils/css/property.py delete mode 100644 src/cssutils/css/selector.py delete mode 100644 src/cssutils/css/selectorlist.py delete mode 100644 src/cssutils/css2productions.py delete mode 100644 src/cssutils/cssproductions.py delete mode 100644 src/cssutils/errorhandler.py delete mode 100644 src/cssutils/helper.py delete mode 100644 src/cssutils/parse.py delete mode 100644 src/cssutils/prodparser.py delete mode 100644 src/cssutils/profiles.py delete mode 100644 src/cssutils/sac.py delete mode 100644 src/cssutils/script.py delete mode 100644 src/cssutils/serialize.py delete mode 100644 src/cssutils/settings.py delete mode 100644 src/cssutils/stylesheets/__init__.py delete mode 100644 src/cssutils/stylesheets/medialist.py delete mode 100644 src/cssutils/stylesheets/mediaquery.py delete mode 100644 src/cssutils/stylesheets/stylesheet.py delete mode 100644 src/cssutils/stylesheets/stylesheetlist.py delete mode 100644 src/cssutils/tokenize2.py delete mode 100644 src/cssutils/util.py delete mode 100644 src/encutils/__init__.py diff --git a/setup/installer/__init__.py b/setup/installer/__init__.py index 7c6b03ec16..c2c9b15e3d 100644 --- a/setup/installer/__init__.py +++ b/setup/installer/__init__.py @@ -15,7 +15,7 @@ class Rsync(Command): description = 'Sync source tree from development machine' - SYNC_CMD = ('rsync -avz --exclude src/calibre/plugins ' + SYNC_CMD = ('rsync -avz --del --exclude src/calibre/plugins ' '--exclude src/calibre/manual --exclude src/calibre/trac ' '--exclude .bzr --exclude .build --exclude .svn --exclude build --exclude dist ' '--exclude "*.pyc" --exclude "*.pyo" --exclude "*.swp" --exclude "*.swo" ' diff --git a/src/cssutils/__init__.py b/src/cssutils/__init__.py deleted file mode 100644 index ff4a7b8adf..0000000000 --- a/src/cssutils/__init__.py +++ /dev/null @@ -1,416 +0,0 @@ -#!/usr/bin/env python -"""cssutils - CSS Cascading Style Sheets library for Python - - Copyright (C) 2004-2009 Christof Hoeke - - cssutils is free software: you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see . - - -A Python package to parse and build CSS Cascading Style Sheets. DOM only, not -any rendering facilities! - -Based upon and partly implementing the following specifications : - -`CSS 2.1 `__ - General CSS rules and properties are defined here -`CSS 2.1 Errata `__ - A few errata, mainly the definition of CHARSET_SYM tokens -`CSS3 Module: Syntax `__ - Used in parts since cssutils 0.9.4. cssutils tries to use the features from - CSS 2.1 and CSS 3 with preference to CSS3 but as this is not final yet some - parts are from CSS 2.1 -`MediaQueries `__ - MediaQueries are part of ``stylesheets.MediaList`` since v0.9.4, used in - @import and @media rules. -`Namespaces `__ - Added in v0.9.1, updated to definition in CSSOM in v0.9.4, updated in 0.9.5 - for dev version -`Selectors `__ - The selector syntax defined here (and not in CSS 2.1) should be parsable - with cssutils (*should* mind though ;) ) - -`DOM Level 2 Style CSS `__ - DOM for package css -`DOM Level 2 Style Stylesheets `__ - DOM for package stylesheets -`CSSOM `__ - A few details (mainly the NamespaceRule DOM) is taken from here. Plan is - to move implementation to the stuff defined here which is newer but still - no REC so might change anytime... - - -The cssutils tokenizer is a customized implementation of `CSS3 Module: Syntax -(W3C Working Draft 13 August 2003) `__ which -itself is based on the CSS 2.1 tokenizer. It tries to be as compliant as -possible but uses some (helpful) parts of the CSS 2.1 tokenizer. - -I guess cssutils is neither CSS 2.1 nor CSS 3 compliant but tries to at least -be able to parse both grammars including some more real world cases (some CSS -hacks are actually parsed and serialized). Both official grammars are not final -nor bugfree but still feasible. cssutils aim is not to be fully compliant to -any CSS specification (the specifications seem to be in a constant flow anyway) -but cssutils *should* be able to read and write as many as possible CSS -stylesheets "in the wild" while at the same time implement the official APIs -which are well documented. Some minor extensions are provided as well. - -Please visit http://cthedot.de/cssutils/ for more details. - - -Tested with Python 2.6 on Windows 7 mainly. - - -This library may be used ``from cssutils import *`` which -import subpackages ``css`` and ``stylesheets``, CSSParser and -CSSSerializer classes only. - -Usage may be:: - - >>> from cssutils import * - >>> parser = CSSParser() - >>> sheet = parser.parseString(u'a { color: red}') - >>> print sheet.cssText - a { - color: red - } - -""" -__all__ = ['css', 'stylesheets', 'CSSParser', 'CSSSerializer'] -__docformat__ = 'restructuredtext' -__author__ = 'Christof Hoeke with contributions by Walter Doerwald' -__date__ = '$LastChangedDate:: 2009-12-30 14:26:29 -0700 #$:' - -VERSION = '0.9.7a2' - -__version__ = '%s $Id: __init__.py 1902 2009-12-30 21:26:29Z cthedot $' % VERSION - -import codec -import os.path -import urllib -import urlparse -import xml.dom - -# order of imports is important (partly circular) -from helper import Deprecated -import errorhandler -log = errorhandler.ErrorHandler() - -import css -import stylesheets -import util -from parse import CSSParser - -from serialize import CSSSerializer -ser = CSSSerializer() - -from profiles import Profiles -profile = Profiles(log=log) - -# used by Selector defining namespace prefix '*' -_ANYNS = -1 - -class DOMImplementationCSS(object): - """This interface allows the DOM user to create a CSSStyleSheet - outside the context of a document. There is no way to associate - the new CSSStyleSheet with a document in DOM Level 2. - - This class is its *own factory*, as it is given to - xml.dom.registerDOMImplementation which simply calls it and receives - an instance of this class then. - """ - _features = [ - ('css', '1.0'), - ('css', '2.0'), - ('stylesheets', '1.0'), - ('stylesheets', '2.0') - ] - - def createCSSStyleSheet(self, title, media): - """ - Creates a new CSSStyleSheet. - - title of type DOMString - The advisory title. See also the Style Sheet Interfaces - section. - media of type DOMString - The comma-separated list of media associated with the new style - sheet. See also the Style Sheet Interfaces section. - - returns - CSSStyleSheet: A new CSS style sheet. - - TODO: DOMException - SYNTAX_ERR: Raised if the specified media string value has a - syntax error and is unparsable. - """ - return css.CSSStyleSheet(title=title, media=media) - - def createDocument(self, *args): - # not needed to HTML, also not for CSS? - raise NotImplementedError - - def createDocumentType(self, *args): - # not needed to HTML, also not for CSS? - raise NotImplementedError - - def hasFeature(self, feature, version): - return (feature.lower(), unicode(version)) in self._features - -xml.dom.registerDOMImplementation('cssutils', DOMImplementationCSS) - - -def parseString(*a, **k): - return CSSParser().parseString(*a, **k) -parseString.__doc__ = CSSParser.parseString.__doc__ - -def parseFile(*a, **k): - return CSSParser().parseFile(*a, **k) -parseFile.__doc__ = CSSParser.parseFile.__doc__ - -def parseUrl(*a, **k): - return CSSParser().parseUrl(*a, **k) -parseUrl.__doc__ = CSSParser.parseUrl.__doc__ - -@Deprecated('Use cssutils.parseFile() instead.') -def parse(*a, **k): - return parseFile(*a, **k) -parse.__doc__ = CSSParser.parse.__doc__ - -def parseStyle(cssText, encoding='utf-8'): - """Parse given `cssText` which is assumed to be the content of - a HTML style attribute. - - :param cssText: - CSS string to parse - :param encoding: - It will be used to decode `cssText` if given as a (byte) - string. - :returns: - :class:`~cssutils.css.CSSStyleDeclaration` - """ - if isinstance(cssText, str): - cssText = cssText.decode(encoding) - style = css.CSSStyleDeclaration() - style.cssText = cssText - return style - -# set "ser", default serializer -def setSerializer(serializer): - """Set the global serializer used by all class in cssutils.""" - global ser - ser = serializer - -def getUrls(sheet): - """Retrieve all ``url(urlstring)`` values (in e.g. - :class:`cssutils.css.CSSImportRule` or :class:`cssutils.css.CSSValue` - objects of given `sheet`. - - :param sheet: - :class:`cssutils.css.CSSStyleSheet` object whose URLs are yielded - - This function is a generator. The generated URL values exclude ``url(`` and - ``)`` and surrounding single or double quotes. - """ - for importrule in (r for r in sheet if r.type == r.IMPORT_RULE): - yield importrule.href - - def getUrl(v): - if v.CSS_PRIMITIVE_VALUE == v.cssValueType and\ - v.CSS_URI == v.primitiveType: - return v.getStringValue() - - def styleDeclarations(base): - "recursive generator to find all CSSStyleDeclarations" - if hasattr(base, 'cssRules'): - for rule in base.cssRules: - for s in styleDeclarations(rule): - yield s - elif hasattr(base, 'style'): - yield base.style - - for style in styleDeclarations(sheet): - for p in style.getProperties(all=True): - v = p.cssValue - if v.CSS_VALUE_LIST == v.cssValueType: - for item in v: - u = getUrl(item) - if u is not None: - yield u - elif v.CSS_PRIMITIVE_VALUE == v.cssValueType: - u = getUrl(v) - if u is not None: - yield u - -def replaceUrls(sheet, replacer, ignoreImportRules=False): - """Replace all URLs in :class:`cssutils.css.CSSImportRule` or - :class:`cssutils.css.CSSValue` objects of given `sheet`. - - :param sheet: - :class:`cssutils.css.CSSStyleSheet` which is changed - :param replacer: - a function which is called with a single argument `urlstring` which - is the current value of each url() excluding ``url(`` and ``)`` and - surrounding single or double quotes. - :param ignoreImportRules: - if ``True`` does not call `replacer` with URLs from @import rules. - """ - if not ignoreImportRules: - for importrule in (r for r in sheet if r.type == r.IMPORT_RULE): - importrule.href = replacer(importrule.href) - - def setProperty(v): - if v.CSS_PRIMITIVE_VALUE == v.cssValueType and\ - v.CSS_URI == v.primitiveType: - v.setStringValue(v.CSS_URI, - replacer(v.getStringValue())) - - def styleDeclarations(base): - "recursive generator to find all CSSStyleDeclarations" - if hasattr(base, 'cssRules'): - for rule in base.cssRules: - for s in styleDeclarations(rule): - yield s - elif hasattr(base, 'style'): - yield base.style - - for style in styleDeclarations(sheet): - for p in style.getProperties(all=True): - v = p.cssValue - if v.CSS_VALUE_LIST == v.cssValueType: - for item in v: - setProperty(item) - elif v.CSS_PRIMITIVE_VALUE == v.cssValueType: - setProperty(v) - -def resolveImports(sheet, target=None): - """Recurcively combine all rules in given `sheet` into a `target` sheet. - @import rules which use media information are tried to be wrapped into - @media rules so keeping the media information. This may not work in - all instances (if e.g. an @import rule itself contains an @import rule - with different media infos or if it contains rules which may not be - used inside an @media block like @namespace rules.). In these cases - the @import rule is kept as in the original sheet and a WARNING is issued. - - :param sheet: - in this given :class:`cssutils.css.CSSStyleSheet` all import rules are - resolved and added to a resulting *flat* sheet. - :param target: - A :class:`cssutils.css.CSSStyleSheet` object which will be the - resulting *flat* sheet if given - :returns: given `target` or a new :class:`cssutils.css.CSSStyleSheet` - object - """ - if not target: - target = css.CSSStyleSheet(href=sheet.href, - media=sheet.media, - title=sheet.title) - - def getReplacer(targetbase): - "Return a replacer which uses base to return adjusted URLs" - basesch, baseloc, basepath, basequery, basefrag = urlparse.urlsplit(targetbase) - basepath, basepathfilename = os.path.split(basepath) - - def replacer(url): - scheme, location, path, query, fragment = urlparse.urlsplit(url) - if not scheme and not location and not path.startswith(u'/'): - # relative - path, filename = os.path.split(path) - combined = os.path.normpath(os.path.join(basepath, path, filename)) - return urllib.pathname2url(combined) - else: - # keep anything absolute - return url - - return replacer - - for rule in sheet.cssRules: - if rule.type == rule.CHARSET_RULE: - pass - elif rule.type == rule.IMPORT_RULE: - log.info(u'Processing @import %r' % rule.href, neverraise=True) - - if rule.styleSheet: - # add all rules of @import to current sheet - target.add(css.CSSComment(cssText=u'/* START @import "%s" */' - % rule.href)) - - try: - # nested imports - importedSheet = resolveImports(rule.styleSheet) - except xml.dom.HierarchyRequestErr, e: - log.warn(u'@import: Cannot resolve target, keeping rule: %s' - % e, neverraise=True) - target.add(rule) - else: - # adjust relative URI references - log.info(u'@import: Adjusting paths for %r' % rule.href, - neverraise=True) - replaceUrls(importedSheet, - getReplacer(rule.href), - ignoreImportRules=True) - - # might have to wrap rules in @media if media given - if rule.media.mediaText == u'all': - mediaproxy = None - else: - keepimport = False - for r in importedSheet: - # check if rules present which may not be - # combined with media - if r.type not in (r.COMMENT, - r.STYLE_RULE, - r.IMPORT_RULE): - keepimport = True - break - if keepimport: - log.warn(u'Cannot combine imported sheet with' - u' given media as other rules then' - u' comments or stylerules found %r,' - u' keeping %r' % (r, - rule.cssText), - neverraise=True) - target.add(rule) - continue - - # wrap in @media if media is not `all` - log.info(u'@import: Wrapping some rules in @media ' - u' to keep media: %s' - % rule.media.mediaText, neverraise=True) - mediaproxy = css.CSSMediaRule(rule.media.mediaText) - - for r in importedSheet: - if mediaproxy: - mediaproxy.add(r) - else: - # add to top sheet directly but are difficult anyway - target.add(r) - - if mediaproxy: - target.add(mediaproxy) - - else: - # keep @import as it is - log.error(u'Cannot get referenced stylesheet %r, keeping rule' - % rule.href, neverraise=True) - target.add(rule) - - - - else: - target.add(rule) - - return target - - -if __name__ == '__main__': - print __doc__ diff --git a/src/cssutils/_fetch.py b/src/cssutils/_fetch.py deleted file mode 100644 index af18bc5640..0000000000 --- a/src/cssutils/_fetch.py +++ /dev/null @@ -1,44 +0,0 @@ -"""Default URL reading functions""" -__all__ = ['_defaultFetcher'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: tokenize2.py 1547 2008-12-10 20:42:26Z cthedot $' - -from cssutils import VERSION -import encutils -import errorhandler -import urllib2 -import util - -log = errorhandler.ErrorHandler() - -def _defaultFetcher(url): - """Retrieve data from ``url``. cssutils default implementation of fetch - URL function. - - Returns ``(encoding, string)`` or ``None`` - """ - request = urllib2.Request(url) - request.add_header('User-agent', - 'cssutils %s (http://www.cthedot.de/cssutils/)' % VERSION) - try: - res = urllib2.urlopen(request) - except OSError, e: - # e.g if file URL and not found - log.warn(e, error=OSError) - except (OSError, ValueError), e: - # invalid url, e.g. "1" - log.warn(u'ValueError, %s' % e.args[0], error=ValueError) - except urllib2.HTTPError, e: - # http error, e.g. 404, e can be raised - log.warn(u'HTTPError opening url=%r: %s %s' % - (url, e.code, e.msg), error=e) - except urllib2.URLError, e: - # URLError like mailto: or other IO errors, e can be raised - log.warn(u'URLError, %s' % e.reason, error=e) - else: - if res: - mimeType, encoding = encutils.getHTTPInfo(res) - if mimeType != u'text/css': - log.error(u'Expected "text/css" mime type for url=%r but found: %r' % - (url, mimeType), error=ValueError) - return encoding, res.read() diff --git a/src/cssutils/_fetchgae.py b/src/cssutils/_fetchgae.py deleted file mode 100644 index 7760ac6c6b..0000000000 --- a/src/cssutils/_fetchgae.py +++ /dev/null @@ -1,68 +0,0 @@ -"""GAE specific URL reading functions""" -__all__ = ['_defaultFetcher'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: tokenize2.py 1547 2008-12-10 20:42:26Z cthedot $' - -# raises ImportError of not on GAE -from google.appengine.api import urlfetch -import cgi -import errorhandler -import util - -log = errorhandler.ErrorHandler() - -def _defaultFetcher(url): - """ - uses GoogleAppEngine (GAE) - fetch(url, payload=None, method=GET, headers={}, allow_truncated=False) - - Response - content - The body content of the response. - content_was_truncated - True if the allow_truncated parameter to fetch() was True and - the response exceeded the maximum response size. In this case, - the content attribute contains the truncated response. - status_code - The HTTP status code. - headers - The HTTP response headers, as a mapping of names to values. - - Exceptions - exception InvalidURLError() - The URL of the request was not a valid URL, or it used an - unsupported method. Only http and https URLs are supported. - exception DownloadError() - There was an error retrieving the data. - - This exception is not raised if the server returns an HTTP - error code: In that case, the response data comes back intact, - including the error code. - - exception ResponseTooLargeError() - The response data exceeded the maximum allowed size, and the - allow_truncated parameter passed to fetch() was False. - """ - #from google.appengine.api import urlfetch - try: - r = urlfetch.fetch(url, method=urlfetch.GET) - except urlfetch.Error, e: - log.warn(u'Error opening url=%r: %s' % (url, e), - error=IOError) - else: - if r.status_code == 200: - # find mimetype and encoding - mimetype = 'application/octet-stream' - try: - mimetype, params = cgi.parse_header(r.headers['content-type']) - encoding = params['charset'] - except KeyError: - encoding = None - if mimetype != u'text/css': - log.error(u'Expected "text/css" mime type for url %r but found: %r' % - (url, mimetype), error=ValueError) - return encoding, r.content - else: - # TODO: 301 etc - log.warn(u'Error opening url=%r: HTTP status %s' % - (url, r.status_code), error=IOError) diff --git a/src/cssutils/codec.py b/src/cssutils/codec.py deleted file mode 100644 index c6e9823ef6..0000000000 --- a/src/cssutils/codec.py +++ /dev/null @@ -1,582 +0,0 @@ -#!/usr/bin/env python -"""Python codec for CSS.""" -__docformat__ = 'restructuredtext' -__author__ = 'Walter Doerwald' -__version__ = '$Id: util.py 1114 2008-03-05 13:22:59Z cthedot $' - -import codecs -import marshal - -# We're using bits to store all possible candidate encodings (or variants, i.e. -# we have two bits for the variants of UTF-16 and two for the -# variants of UTF-32). -# -# Prefixes for various CSS encodings -# UTF-8-SIG xEF xBB xBF -# UTF-16 (LE) xFF xFE ~x00|~x00 -# UTF-16 (BE) xFE xFF -# UTF-16-LE @ x00 @ x00 -# UTF-16-BE x00 @ -# UTF-32 (LE) xFF xFE x00 x00 -# UTF-32 (BE) x00 x00 xFE xFF -# UTF-32-LE @ x00 x00 x00 -# UTF-32-BE x00 x00 x00 @ -# CHARSET @ c h a ... - - -def detectencoding_str(input, final=False): - """ - Detect the encoding of the byte string ``input``, which contains the - beginning of a CSS file. This function returns the detected encoding (or - ``None`` if it hasn't got enough data), and a flag that indicates whether - that encoding has been detected explicitely or implicitely. To detect the - encoding the first few bytes are used (or if ``input`` is ASCII compatible - and starts with a charset rule the encoding name from the rule). "Explicit" - detection means that the bytes start with a BOM or a charset rule. - - If the encoding can't be detected yet, ``None`` is returned as the encoding. - ``final`` specifies whether more data will be available in later calls or - not. If ``final`` is true, ``detectencoding_str()`` will never return - ``None`` as the encoding. - """ - - # A bit for every candidate - CANDIDATE_UTF_8_SIG = 1 - CANDIDATE_UTF_16_AS_LE = 2 - CANDIDATE_UTF_16_AS_BE = 4 - CANDIDATE_UTF_16_LE = 8 - CANDIDATE_UTF_16_BE = 16 - CANDIDATE_UTF_32_AS_LE = 32 - CANDIDATE_UTF_32_AS_BE = 64 - CANDIDATE_UTF_32_LE = 128 - CANDIDATE_UTF_32_BE = 256 - CANDIDATE_CHARSET = 512 - - candidates = 1023 # all candidates - - li = len(input) - if li>=1: - # Check first byte - c = input[0] - if c != "\xef": - candidates &= ~CANDIDATE_UTF_8_SIG - if c != "\xff": - candidates &= ~(CANDIDATE_UTF_32_AS_LE|CANDIDATE_UTF_16_AS_LE) - if c != "\xfe": - candidates &= ~CANDIDATE_UTF_16_AS_BE - if c != "@": - candidates &= ~(CANDIDATE_UTF_32_LE|CANDIDATE_UTF_16_LE|CANDIDATE_CHARSET) - if c != "\x00": - candidates &= ~(CANDIDATE_UTF_32_AS_BE|CANDIDATE_UTF_32_BE|CANDIDATE_UTF_16_BE) - if li>=2: - # Check second byte - c = input[1] - if c != "\xbb": - candidates &= ~CANDIDATE_UTF_8_SIG - if c != "\xfe": - candidates &= ~(CANDIDATE_UTF_16_AS_LE|CANDIDATE_UTF_32_AS_LE) - if c != "\xff": - candidates &= ~CANDIDATE_UTF_16_AS_BE - if c != "\x00": - candidates &= ~(CANDIDATE_UTF_16_LE|CANDIDATE_UTF_32_AS_BE|CANDIDATE_UTF_32_LE|CANDIDATE_UTF_32_BE) - if c != "@": - candidates &= ~CANDIDATE_UTF_16_BE - if c != "c": - candidates &= ~CANDIDATE_CHARSET - if li>=3: - # Check third byte - c = input[2] - if c != "\xbf": - candidates &= ~CANDIDATE_UTF_8_SIG - if c != "c": - candidates &= ~CANDIDATE_UTF_16_LE - if c != "\x00": - candidates &= ~(CANDIDATE_UTF_32_AS_LE|CANDIDATE_UTF_32_LE|CANDIDATE_UTF_32_BE) - if c != "\xfe": - candidates &= ~CANDIDATE_UTF_32_AS_BE - if c != "h": - candidates &= ~CANDIDATE_CHARSET - if li>=4: - # Check fourth byte - c = input[3] - if input[2:4] == "\x00\x00": - candidates &= ~CANDIDATE_UTF_16_AS_LE - if c != "\x00": - candidates &= ~(CANDIDATE_UTF_16_LE|CANDIDATE_UTF_32_AS_LE|CANDIDATE_UTF_32_LE) - if c != "\xff": - candidates &= ~CANDIDATE_UTF_32_AS_BE - if c != "@": - candidates &= ~CANDIDATE_UTF_32_BE - if c != "a": - candidates &= ~CANDIDATE_CHARSET - if candidates == 0: - return ("utf-8", False) - if not (candidates & (candidates-1)): # only one candidate remaining - if candidates == CANDIDATE_UTF_8_SIG and li >= 3: - return ("utf-8-sig", True) - elif candidates == CANDIDATE_UTF_16_AS_LE and li >= 2: - return ("utf-16", True) - elif candidates == CANDIDATE_UTF_16_AS_BE and li >= 2: - return ("utf-16", True) - elif candidates == CANDIDATE_UTF_16_LE and li >= 4: - return ("utf-16-le", False) - elif candidates == CANDIDATE_UTF_16_BE and li >= 2: - return ("utf-16-be", False) - elif candidates == CANDIDATE_UTF_32_AS_LE and li >= 4: - return ("utf-32", True) - elif candidates == CANDIDATE_UTF_32_AS_BE and li >= 4: - return ("utf-32", True) - elif candidates == CANDIDATE_UTF_32_LE and li >= 4: - return ("utf-32-le", False) - elif candidates == CANDIDATE_UTF_32_BE and li >= 4: - return ("utf-32-be", False) - elif candidates == CANDIDATE_CHARSET and li >= 4: - prefix = '@charset "' - if input[:len(prefix)] == prefix: - pos = input.find('"', len(prefix)) - if pos >= 0: - return (input[len(prefix):pos], True) - # if this is the last call, and we haven't determined an encoding yet, - # we default to UTF-8 - if final: - return ("utf-8", False) - return (None, False) # dont' know yet - - -def detectencoding_unicode(input, final=False): - """ - Detect the encoding of the unicode string ``input``, which contains the - beginning of a CSS file. The encoding is detected from the charset rule - at the beginning of ``input``. If there is no charset rule, ``"utf-8"`` - will be returned. - - If the encoding can't be detected yet, ``None`` is returned. ``final`` - specifies whether more data will be available in later calls or not. If - ``final`` is true, ``detectencoding_unicode()`` will never return ``None``. - """ - prefix = u'@charset "' - if input.startswith(prefix): - pos = input.find(u'"', len(prefix)) - if pos >= 0: - return (input[len(prefix):pos], True) - elif final or not prefix.startswith(input): - # if this is the last call, and we haven't determined an encoding yet, - # (or the string definitely doesn't start with prefix) we default to UTF-8 - return ("utf-8", False) - return (None, False) # don't know yet - - -def _fixencoding(input, encoding, final=False): - """ - Replace the name of the encoding in the charset rule at the beginning of - ``input`` with ``encoding``. If ``input`` doesn't starts with a charset - rule, ``input`` will be returned unmodified. - - If the encoding can't be found yet, ``None`` is returned. ``final`` - specifies whether more data will be available in later calls or not. - If ``final`` is true, ``_fixencoding()`` will never return ``None``. - """ - prefix = u'@charset "' - if len(input) > len(prefix): - if input.startswith(prefix): - pos = input.find(u'"', len(prefix)) - if pos >= 0: - if encoding.replace("_", "-").lower() == "utf-8-sig": - encoding = u"utf-8" - return prefix + encoding + input[pos:] - # we haven't seen the end of the encoding name yet => fall through - else: - return input # doesn't start with prefix, so nothing to fix - elif not prefix.startswith(input) or final: - # can't turn out to be a @charset rule later (or there is no "later") - return input - if final: - return input - return None # don't know yet - - -def decode(input, errors="strict", encoding=None, force=True): - if encoding is None or not force: - (_encoding, explicit) = detectencoding_str(input, True) - if _encoding == "css": - raise ValueError("css not allowed as encoding name") - if (explicit and not force) or encoding is None: # Take the encoding from the input - encoding = _encoding - (input, consumed) = codecs.getdecoder(encoding)(input, errors) - return (_fixencoding(input, unicode(encoding), True), consumed) - - -def encode(input, errors="strict", encoding=None): - consumed = len(input) - if encoding is None: - encoding = detectencoding_unicode(input, True)[0] - if encoding.replace("_", "-").lower() == "utf-8-sig": - input = _fixencoding(input, u"utf-8", True) - else: - input = _fixencoding(input, unicode(encoding), True) - if encoding == "css": - raise ValueError("css not allowed as encoding name") - encoder = codecs.getencoder(encoding) - return (encoder(input, errors)[0], consumed) - - -def _bytes2int(bytes): - # Helper: convert an 8 bit string into an ``int``. - i = 0 - for byte in bytes: - i = (i<<8) + ord(byte) - return i - - -def _int2bytes(i): - # Helper: convert an ``int`` into an 8-bit string. - v = [] - while i: - v.insert(0, chr(i&0xff)) - i >>= 8 - return "".join(v) - - -if hasattr(codecs, "IncrementalDecoder"): - class IncrementalDecoder(codecs.IncrementalDecoder): - def __init__(self, errors="strict", encoding=None, force=True): - self.decoder = None - self.encoding = encoding - self.force = force - codecs.IncrementalDecoder.__init__(self, errors) - # Store ``errors`` somewhere else, - # because we have to hide it in a property - self._errors = errors - self.buffer = "" - self.headerfixed = False - - def iterdecode(self, input): - for part in input: - result = self.decode(part, False) - if result: - yield result - result = self.decode("", True) - if result: - yield result - - def decode(self, input, final=False): - # We're doing basically the same as a ``BufferedIncrementalDecoder``, - # but since the buffer is only relevant until the encoding has been - # detected (in which case the buffer of the underlying codec might - # kick in), we're implementing buffering ourselves to avoid some - # overhead. - if self.decoder is None: - input = self.buffer + input - # Do we have to detect the encoding from the input? - if self.encoding is None or not self.force: - (encoding, explicit) = detectencoding_str(input, final) - if encoding is None: # no encoding determined yet - self.buffer = input # retry the complete input on the next call - return u"" # no encoding determined yet, so no output - elif encoding == "css": - raise ValueError("css not allowed as encoding name") - if (explicit and not self.force) or self.encoding is None: # Take the encoding from the input - self.encoding = encoding - self.buffer = "" # drop buffer, as the decoder might keep its own - decoder = codecs.getincrementaldecoder(self.encoding) - self.decoder = decoder(self._errors) - if self.headerfixed: - return self.decoder.decode(input, final) - # If we haven't fixed the header yet, - # the content of ``self.buffer`` is a ``unicode`` object - output = self.buffer + self.decoder.decode(input, final) - encoding = self.encoding - if encoding.replace("_", "-").lower() == "utf-8-sig": - encoding = "utf-8" - newoutput = _fixencoding(output, unicode(encoding), final) - if newoutput is None: - # retry fixing the @charset rule (but keep the decoded stuff) - self.buffer = output - return u"" - self.headerfixed = True - return newoutput - - def reset(self): - codecs.IncrementalDecoder.reset(self) - self.decoder = None - self.buffer = "" - self.headerfixed = False - - def _geterrors(self): - return self._errors - - def _seterrors(self, errors): - # Setting ``errors`` must be done on the real decoder too - if self.decoder is not None: - self.decoder.errors = errors - self._errors = errors - errors = property(_geterrors, _seterrors) - - def getstate(self): - if self.decoder is not None: - state = (self.encoding, self.buffer, self.headerfixed, True, self.decoder.getstate()) - else: - state = (self.encoding, self.buffer, self.headerfixed, False, None) - return ("", _bytes2int(marshal.dumps(state))) - - def setstate(self, state): - state = _int2bytes(marshal.loads(state[1])) # ignore buffered input - self.encoding = state[0] - self.buffer = state[1] - self.headerfixed = state[2] - if state[3] is not None: - self.decoder = codecs.getincrementaldecoder(self.encoding)(self._errors) - self.decoder.setstate(state[4]) - else: - self.decoder = None - - -if hasattr(codecs, "IncrementalEncoder"): - class IncrementalEncoder(codecs.IncrementalEncoder): - def __init__(self, errors="strict", encoding=None): - self.encoder = None - self.encoding = encoding - codecs.IncrementalEncoder.__init__(self, errors) - # Store ``errors`` somewhere else, - # because we have to hide it in a property - self._errors = errors - self.buffer = u"" - - def iterencode(self, input): - for part in input: - result = self.encode(part, False) - if result: - yield result - result = self.encode(u"", True) - if result: - yield result - - def encode(self, input, final=False): - if self.encoder is None: - input = self.buffer + input - if self.encoding is not None: - # Replace encoding in the @charset rule with the specified one - encoding = self.encoding - if encoding.replace("_", "-").lower() == "utf-8-sig": - encoding = "utf-8" - newinput = _fixencoding(input, unicode(encoding), final) - if newinput is None: # @charset rule incomplete => Retry next time - self.buffer = input - return "" - input = newinput - else: - # Use encoding from the @charset declaration - self.encoding = detectencoding_unicode(input, final)[0] - if self.encoding is not None: - if self.encoding == "css": - raise ValueError("css not allowed as encoding name") - info = codecs.lookup(self.encoding) - encoding = self.encoding - if self.encoding.replace("_", "-").lower() == "utf-8-sig": - input = _fixencoding(input, u"utf-8", True) - self.encoder = info.incrementalencoder(self._errors) - self.buffer = u"" - else: - self.buffer = input - return "" - return self.encoder.encode(input, final) - - def reset(self): - codecs.IncrementalEncoder.reset(self) - self.encoder = None - self.buffer = u"" - - def _geterrors(self): - return self._errors - - def _seterrors(self, errors): - # Setting ``errors ``must be done on the real encoder too - if self.encoder is not None: - self.encoder.errors = errors - self._errors = errors - errors = property(_geterrors, _seterrors) - - def getstate(self): - if self.encoder is not None: - state = (self.encoding, self.buffer, True, self.encoder.getstate()) - else: - state = (self.encoding, self.buffer, False, None) - return _bytes2int(marshal.dumps(state)) - - def setstate(self, state): - state = _int2bytes(marshal.loads(state)) - self.encoding = state[0] - self.buffer = state[1] - if state[2] is not None: - self.encoder = codecs.getincrementalencoder(self.encoding)(self._errors) - self.encoder.setstate(state[4]) - else: - self.encoder = None - - -class StreamWriter(codecs.StreamWriter): - def __init__(self, stream, errors="strict", encoding=None, header=False): - codecs.StreamWriter.__init__(self, stream, errors) - self.streamwriter = None - self.encoding = encoding - self._errors = errors - self.buffer = u"" - - def encode(self, input, errors='strict'): - li = len(input) - if self.streamwriter is None: - input = self.buffer + input - li = len(input) - if self.encoding is not None: - # Replace encoding in the @charset rule with the specified one - encoding = self.encoding - if encoding.replace("_", "-").lower() == "utf-8-sig": - encoding = "utf-8" - newinput = _fixencoding(input, unicode(encoding), False) - if newinput is None: # @charset rule incomplete => Retry next time - self.buffer = input - return ("", 0) - input = newinput - else: - # Use encoding from the @charset declaration - self.encoding = detectencoding_unicode(input, False)[0] - if self.encoding is not None: - if self.encoding == "css": - raise ValueError("css not allowed as encoding name") - self.streamwriter = codecs.getwriter(self.encoding)(self.stream, self._errors) - encoding = self.encoding - if self.encoding.replace("_", "-").lower() == "utf-8-sig": - input = _fixencoding(input, u"utf-8", True) - self.buffer = u"" - else: - self.buffer = input - return ("", 0) - return (self.streamwriter.encode(input, errors)[0], li) - - def _geterrors(self): - return self._errors - - def _seterrors(self, errors): - # Setting ``errors`` must be done on the streamwriter too - if self.streamwriter is not None: - self.streamwriter.errors = errors - self._errors = errors - errors = property(_geterrors, _seterrors) - - -class StreamReader(codecs.StreamReader): - def __init__(self, stream, errors="strict", encoding=None, force=True): - codecs.StreamReader.__init__(self, stream, errors) - self.streamreader = None - self.encoding = encoding - self.force = force - self._errors = errors - - def decode(self, input, errors='strict'): - if self.streamreader is None: - if self.encoding is None or not self.force: - (encoding, explicit) = detectencoding_str(input, False) - if encoding is None: # no encoding determined yet - return (u"", 0) # no encoding determined yet, so no output - elif encoding == "css": - raise ValueError("css not allowed as encoding name") - if (explicit and not self.force) or self.encoding is None: # Take the encoding from the input - self.encoding = encoding - streamreader = codecs.getreader(self.encoding) - streamreader = streamreader(self.stream, self._errors) - (output, consumed) = streamreader.decode(input, errors) - encoding = self.encoding - if encoding.replace("_", "-").lower() == "utf-8-sig": - encoding = "utf-8" - newoutput = _fixencoding(output, unicode(encoding), False) - if newoutput is not None: - self.streamreader = streamreader - return (newoutput, consumed) - return (u"", 0) # we will create a new streamreader on the next call - return self.streamreader.decode(input, errors) - - def _geterrors(self): - return self._errors - - def _seterrors(self, errors): - # Setting ``errors`` must be done on the streamreader too - if self.streamreader is not None: - self.streamreader.errors = errors - self._errors = errors - errors = property(_geterrors, _seterrors) - - -if hasattr(codecs, "CodecInfo"): - # We're running on Python 2.5 or better - def search_function(name): - if name == "css": - return codecs.CodecInfo( - name="css", - encode=encode, - decode=decode, - incrementalencoder=IncrementalEncoder, - incrementaldecoder=IncrementalDecoder, - streamwriter=StreamWriter, - streamreader=StreamReader, - ) -else: - # If we're running on Python 2.4, define the utf-8-sig codec here - def utf8sig_encode(input, errors='strict'): - return (codecs.BOM_UTF8 + codecs.utf_8_encode(input, errors)[0], len(input)) - - def utf8sig_decode(input, errors='strict'): - prefix = 0 - if input[:3] == codecs.BOM_UTF8: - input = input[3:] - prefix = 3 - (output, consumed) = codecs.utf_8_decode(input, errors, True) - return (output, consumed+prefix) - - class UTF8SigStreamWriter(codecs.StreamWriter): - def reset(self): - codecs.StreamWriter.reset(self) - try: - del self.encode - except AttributeError: - pass - - def encode(self, input, errors='strict'): - self.encode = codecs.utf_8_encode - return utf8sig_encode(input, errors) - - class UTF8SigStreamReader(codecs.StreamReader): - def reset(self): - codecs.StreamReader.reset(self) - try: - del self.decode - except AttributeError: - pass - - def decode(self, input, errors='strict'): - if len(input) < 3 and codecs.BOM_UTF8.startswith(input): - # not enough data to decide if this is a BOM - # => try again on the next call - return (u"", 0) - self.decode = codecs.utf_8_decode - return utf8sig_decode(input, errors) - - def search_function(name): - import encodings - name = encodings.normalize_encoding(name) - if name == "css": - return (encode, decode, StreamReader, StreamWriter) - elif name == "utf_8_sig": - return (utf8sig_encode, utf8sig_decode, UTF8SigStreamReader, UTF8SigStreamWriter) - - -codecs.register(search_function) - - -# Error handler for CSS escaping - -def cssescape(exc): - if not isinstance(exc, UnicodeEncodeError): - raise TypeError("don't know how to handle %r" % exc) - return (u"".join(u"\\%06x" % ord(c) for c in exc.object[exc.start:exc.end]), exc.end) - -codecs.register_error("cssescape", cssescape) diff --git a/src/cssutils/css/__init__.py b/src/cssutils/css/__init__.py deleted file mode 100644 index b7ee30fa23..0000000000 --- a/src/cssutils/css/__init__.py +++ /dev/null @@ -1,66 +0,0 @@ -"""Implements Document Object Model Level 2 CSS -http://www.w3.org/TR/2000/PR-DOM-Level-2-Style-20000927/css.html - -currently implemented - - CSSStyleSheet - - CSSRuleList - - CSSRule - - CSSComment (cssutils addon) - - CSSCharsetRule - - CSSFontFaceRule - - CSSImportRule - - CSSMediaRule - - CSSNamespaceRule (WD) - - CSSPageRule - - CSSStyleRule - - CSSUnkownRule - - Selector and SelectorList - - CSSStyleDeclaration - - CSS2Properties - - CSSValue - - CSSPrimitiveValue - - CSSValueList - -todo - - RGBColor, Rect, Counter -""" -__all__ = [ - 'CSSStyleSheet', - 'CSSRuleList', - 'CSSRule', - 'CSSComment', - 'CSSCharsetRule', - 'CSSFontFaceRule' - 'CSSImportRule', - 'CSSMediaRule', - 'CSSNamespaceRule', - 'CSSPageRule', - 'CSSStyleRule', - 'CSSUnknownRule', - 'CSSVariablesRule' - 'Selector', 'SelectorList', - 'CSSStyleDeclaration', 'Property', - 'CSSValue', 'CSSPrimitiveValue', 'CSSValueList' - ] -__docformat__ = 'restructuredtext' -__version__ = '$Id: __init__.py 1859 2009-10-10 21:50:27Z cthedot $' - -from cssstylesheet import * -from cssrulelist import * -from cssrule import * -from csscomment import * -from csscharsetrule import * -from cssfontfacerule import * -from cssimportrule import * -from cssmediarule import * -from cssnamespacerule import * -from csspagerule import * -from cssstylerule import * -from cssvariablesrule import * -from cssunknownrule import * -from selector import * -from selectorlist import * -from cssstyledeclaration import * -from cssvariablesdeclaration import * -from property import * -from cssvalue import * diff --git a/src/cssutils/css/csscharsetrule.py b/src/cssutils/css/csscharsetrule.py deleted file mode 100644 index 2ef2f23e04..0000000000 --- a/src/cssutils/css/csscharsetrule.py +++ /dev/null @@ -1,158 +0,0 @@ -"""CSSCharsetRule implements DOM Level 2 CSS CSSCharsetRule.""" -__all__ = ['CSSCharsetRule'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: csscharsetrule.py 1605 2009-01-03 18:27:32Z cthedot $' - -import codecs -import cssrule -import cssutils -import xml.dom - -class CSSCharsetRule(cssrule.CSSRule): - """ - The CSSCharsetRule interface represents an @charset rule in a CSS style - sheet. The value of the encoding attribute does not affect the encoding - of text data in the DOM objects; this encoding is always UTF-16 - (also in Python?). After a stylesheet is loaded, the value of the - encoding attribute is the value found in the @charset rule. If there - was no @charset in the original document, then no CSSCharsetRule is - created. The value of the encoding attribute may also be used as a hint - for the encoding used on serialization of the style sheet. - - The value of the @charset rule (and therefore of the CSSCharsetRule) - may not correspond to the encoding the document actually came in; - character encoding information e.g. in an HTTP header, has priority - (see CSS document representation) but this is not reflected in the - CSSCharsetRule. - - This rule is not really needed anymore as setting - :attr:`CSSStyleSheet.encoding` is much easier. - - Format:: - - charsetrule: - CHARSET_SYM S* STRING S* ';' - - BUT: Only valid format is (single space, double quotes!):: - - @charset "ENCODING"; - """ - def __init__(self, encoding=None, parentRule=None, - parentStyleSheet=None, readonly=False): - """ - :param encoding: - a valid character encoding - :param readonly: - defaults to False, not used yet - """ - super(CSSCharsetRule, self).__init__(parentRule=parentRule, - parentStyleSheet=parentStyleSheet) - self._atkeyword = '@charset' - self._encoding = None - if encoding: - self.encoding = encoding - - self._readonly = readonly - - def __repr__(self): - return "cssutils.css.%s(encoding=%r)" % ( - self.__class__.__name__, self.encoding) - - def __str__(self): - return "" % ( - self.__class__.__name__, self.encoding, id(self)) - - def _getCssText(self): - """The parsable textual representation.""" - return cssutils.ser.do_CSSCharsetRule(self) - - def _setCssText(self, cssText): - """ - :param cssText: - A parsable DOMString. - :exceptions: - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified CSS string value has a syntax error and - is unparsable. - - :exc:`~xml.dom.InvalidModificationErr`: - Raised if the specified CSS string value represents a different - type of rule than the current one. - - :exc:`~xml.dom.HierarchyRequestErr`: - Raised if the rule cannot be inserted at this point in the - style sheet. - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if the rule is readonly. - """ - super(CSSCharsetRule, self)._setCssText(cssText) - - wellformed = True - tokenizer = self._tokenize2(cssText) - - if self._type(self._nexttoken(tokenizer)) != self._prods.CHARSET_SYM: - wellformed = False - self._log.error(u'CSSCharsetRule must start with "@charset "', - error=xml.dom.InvalidModificationErr) - - encodingtoken = self._nexttoken(tokenizer) - encodingtype = self._type(encodingtoken) - encoding = self._stringtokenvalue(encodingtoken) - if self._prods.STRING != encodingtype or not encoding: - wellformed = False - self._log.error(u'CSSCharsetRule: no encoding found; %r.' % - self._valuestr(cssText)) - - semicolon = self._tokenvalue(self._nexttoken(tokenizer)) - EOFtype = self._type(self._nexttoken(tokenizer)) - if u';' != semicolon or EOFtype not in ('EOF', None): - wellformed = False - self._log.error(u'CSSCharsetRule: Syntax Error: %r.' % - self._valuestr(cssText)) - - if wellformed: - self.encoding = encoding - - cssText = property(fget=_getCssText, fset=_setCssText, - doc="(DOM) The parsable textual representation.") - - def _setEncoding(self, encoding): - """ - :param encoding: - a valid encoding to be used. Currently only valid Python encodings - are allowed. - :exceptions: - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if this encoding rule is readonly. - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified encoding value has a syntax error and - is unparsable. - """ - self._checkReadonly() - tokenizer = self._tokenize2(encoding) - encodingtoken = self._nexttoken(tokenizer) - unexpected = self._nexttoken(tokenizer) - - valid = True - if not encodingtoken or unexpected or\ - self._prods.IDENT != self._type(encodingtoken): - valid = False - self._log.error( - 'CSSCharsetRule: Syntax Error in encoding value %r.' % - encoding) - else: - try: - codecs.lookup(encoding) - except LookupError: - valid = False - self._log.error('CSSCharsetRule: Unknown (Python) encoding %r.' % - encoding) - else: - self._encoding = encoding.lower() - - encoding = property(lambda self: self._encoding, _setEncoding, - doc="(DOM)The encoding information used in this @charset rule.") - - type = property(lambda self: self.CHARSET_RULE, - doc="The type of this rule, as defined by a CSSRule " - "type constant.") - - wellformed = property(lambda self: bool(self.encoding)) diff --git a/src/cssutils/css/csscomment.py b/src/cssutils/css/csscomment.py deleted file mode 100644 index 179027f437..0000000000 --- a/src/cssutils/css/csscomment.py +++ /dev/null @@ -1,84 +0,0 @@ -"""CSSComment is not defined in DOM Level 2 at all but a cssutils defined -class only. - -Implements CSSRule which is also extended for a CSSComment rule type. -""" -__all__ = ['CSSComment'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: csscomment.py 1638 2009-01-13 20:39:33Z cthedot $' - -import cssrule -import cssutils -import xml.dom - -class CSSComment(cssrule.CSSRule): - """ - Represents a CSS comment (cssutils only). - - Format:: - - /*...*/ - """ - def __init__(self, cssText=None, parentRule=None, - parentStyleSheet=None, readonly=False): - super(CSSComment, self).__init__(parentRule=parentRule, - parentStyleSheet=parentStyleSheet) - - self._cssText = None - if cssText: - self._setCssText(cssText) - - self._readonly = readonly - - def __repr__(self): - return "cssutils.css.%s(cssText=%r)" % ( - self.__class__.__name__, self.cssText) - - def __str__(self): - return "" % ( - self.__class__.__name__, self.cssText, id(self)) - - def _getCssText(self): - """Return serialized property cssText.""" - return cssutils.ser.do_CSSComment(self) - - def _setCssText(self, cssText): - """ - :param cssText: - textual text to set or tokenlist which is not tokenized - anymore. May also be a single token for this rule - - :exceptions: - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified CSS string value has a syntax error and - is unparsable. - - :exc:`~xml.dom.InvalidModificationErr`: - Raised if the specified CSS string value represents a different - type of rule than the current one. - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if the rule is readonly. - """ - super(CSSComment, self)._setCssText(cssText) - tokenizer = self._tokenize2(cssText) - - commenttoken = self._nexttoken(tokenizer) - unexpected = self._nexttoken(tokenizer) - - if not commenttoken or\ - self._type(commenttoken) != self._prods.COMMENT or\ - unexpected: - self._log.error(u'CSSComment: Not a CSSComment: %r' % - self._valuestr(cssText), - error=xml.dom.InvalidModificationErr) - else: - self._cssText = self._tokenvalue(commenttoken) - - cssText = property(_getCssText, _setCssText, - doc=u"The parsable textual representation of this rule.") - - type = property(lambda self: self.COMMENT, - doc="The type of this rule, as defined by a CSSRule " - "type constant.") - - # constant but needed: - wellformed = property(lambda self: True) diff --git a/src/cssutils/css/cssfontfacerule.py b/src/cssutils/css/cssfontfacerule.py deleted file mode 100644 index 5fdcbe2882..0000000000 --- a/src/cssutils/css/cssfontfacerule.py +++ /dev/null @@ -1,182 +0,0 @@ -"""CSSFontFaceRule implements DOM Level 2 CSS CSSFontFaceRule. - -From cssutils 0.9.6 additions from CSS Fonts Module Level 3 are -added http://www.w3.org/TR/css3-fonts/. -""" -__all__ = ['CSSFontFaceRule'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: cssfontfacerule.py 1868 2009-10-17 19:36:54Z cthedot $' - -from cssstyledeclaration import CSSStyleDeclaration -import cssrule -import cssutils -import xml.dom - -class CSSFontFaceRule(cssrule.CSSRule): - """ - The CSSFontFaceRule interface represents a @font-face rule in a CSS - style sheet. The @font-face rule is used to hold a set of font - descriptions. - - Format:: - - font_face - : FONT_FACE_SYM S* - '{' S* declaration [ ';' S* declaration ]* '}' S* - ; - - cssutils uses a :class:`~cssutils.css.CSSStyleDeclaration` to - represent the font descriptions. For validation a specific profile - is used though were some properties have other valid values than - when used in e.g. a :class:`~cssutils.css.CSSStyleRule`. - """ - def __init__(self, style=None, parentRule=None, - parentStyleSheet=None, readonly=False): - """ - If readonly allows setting of properties in constructor only. - - :param style: - CSSStyleDeclaration used to hold any font descriptions - for this CSSFontFaceRule - """ - super(CSSFontFaceRule, self).__init__(parentRule=parentRule, - parentStyleSheet=parentStyleSheet) - self._atkeyword = u'@font-face' - self._style = CSSStyleDeclaration(parentRule=self) - if style: - self.style = style - - self._readonly = readonly - - def __repr__(self): - return "cssutils.css.%s(style=%r)" % ( - self.__class__.__name__, self.style.cssText) - - def __str__(self): - return "" % ( - self.__class__.__name__, self.style.cssText, self.valid, - id(self)) - - def _getCssText(self): - """Return serialized property cssText.""" - return cssutils.ser.do_CSSFontFaceRule(self) - - def _setCssText(self, cssText): - """ - :exceptions: - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified CSS string value has a syntax error and - is unparsable. - - :exc:`~xml.dom.InvalidModificationErr`: - Raised if the specified CSS string value represents a different - type of rule than the current one. - - :exc:`~xml.dom.HierarchyRequestErr`: - Raised if the rule cannot be inserted at this point in the - style sheet. - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if the rule is readonly. - """ - super(CSSFontFaceRule, self)._setCssText(cssText) - - tokenizer = self._tokenize2(cssText) - attoken = self._nexttoken(tokenizer, None) - if self._type(attoken) != self._prods.FONT_FACE_SYM: - self._log.error(u'CSSFontFaceRule: No CSSFontFaceRule found: %s' % - self._valuestr(cssText), - error=xml.dom.InvalidModificationErr) - else: - # save if parse goes wrong - oldstyle = CSSStyleDeclaration() - oldstyle._absorb(self.style) - - ok = True - beforetokens, brace = self._tokensupto2(tokenizer, - blockstartonly=True, - separateEnd=True) - if self._tokenvalue(brace) != u'{': - ok = False - self._log.error( - u'CSSFontFaceRule: No start { of style declaration found: %r' % - self._valuestr(cssText), brace) - - # parse stuff before { which should be comments and S only - new = {'wellformed': True} - newseq = self._tempSeq()#[] - - beforewellformed, expected = self._parse(expected=':', - seq=newseq, tokenizer=self._tokenize2(beforetokens), - productions={}) - ok = ok and beforewellformed and new['wellformed'] - - styletokens, braceorEOFtoken = self._tokensupto2(tokenizer, - blockendonly=True, - separateEnd=True) - - val, typ = self._tokenvalue(braceorEOFtoken), self._type(braceorEOFtoken) - if val != u'}' and typ != 'EOF': - ok = False - self._log.error( - u'CSSFontFaceRule: No "}" after style declaration found: %r' % - self._valuestr(cssText)) - - nonetoken = self._nexttoken(tokenizer) - if nonetoken: - ok = False - self._log.error(u'CSSFontFaceRule: Trailing content found.', - token=nonetoken) - - if 'EOF' == typ: - # add again as style needs it - styletokens.append(braceorEOFtoken) - - # SET, may raise: - self.style.cssText = styletokens - - if ok: - # contains probably comments only (upto ``{``) - self._setSeq(newseq) - else: - # RESET - self.style._absorb(oldstyle) - - - cssText = property(_getCssText, _setCssText, - doc="(DOM) The parsable textual representation of this rule.") - - def _setStyle(self, style): - """ - :param style: - a CSSStyleDeclaration or string - """ - self._checkReadonly() - if isinstance(style, basestring): - self._style.cssText = style - else: - self._style = style - self._style.parentRule = self - - style = property(lambda self: self._style, _setStyle, - doc="(DOM) The declaration-block of this rule set, " - "a :class:`~cssutils.css.CSSStyleDeclaration`.") - - type = property(lambda self: self.FONT_FACE_RULE, - doc="The type of this rule, as defined by a CSSRule " - "type constant.") - - def _getValid(self): - needed = ['font-family', 'src'] - for p in self.style.getProperties(all=True): - if not p.valid: - return False - try: - needed.remove(p.name) - except ValueError: - pass - return not bool(needed) - - valid = property(_getValid, doc='CSSFontFace is valid if properties ' - '`font-family` and `src` are set and all properties are ' - 'valid.') - - # constant but needed: - wellformed = property(lambda self: True) diff --git a/src/cssutils/css/cssimportrule.py b/src/cssutils/css/cssimportrule.py deleted file mode 100644 index 9e643d4f4e..0000000000 --- a/src/cssutils/css/cssimportrule.py +++ /dev/null @@ -1,366 +0,0 @@ -"""CSSImportRule implements DOM Level 2 CSS CSSImportRule plus the -``name`` property from http://www.w3.org/TR/css3-cascade/#cascading.""" -__all__ = ['CSSImportRule'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: cssimportrule.py 1871 2009-10-17 19:57:37Z cthedot $' - -import cssrule -import cssutils -import os -import urllib -import urlparse -import xml.dom - -class CSSImportRule(cssrule.CSSRule): - """ - Represents an @import rule within a CSS style sheet. The @import rule - is used to import style rules from other style sheets. - - Format:: - - import - : IMPORT_SYM S* - [STRING|URI] S* [ medium [ COMMA S* medium]* ]? S* STRING? S* ';' S* - ; - """ - def __init__(self, href=None, mediaText=u'all', name=None, - parentRule=None, parentStyleSheet=None, readonly=False): - """ - if readonly allows setting of properties in constructor only - - Do not use as positional but as keyword attributes only! - - href - location of the style sheet to be imported. - mediaText - A list of media types for which this style sheet may be used - as a string - """ - super(CSSImportRule, self).__init__(parentRule=parentRule, - parentStyleSheet=parentStyleSheet) - self._atkeyword = u'@import' - self.hreftype = None - self._styleSheet = None - - self._href = None - self.href = href - - self._media = cssutils.stylesheets.MediaList() - if mediaText: - self._media.mediaText = mediaText - - self._name = name - - seq = self._tempSeq() - seq.append(self.href, 'href') - seq.append(self.media, 'media') - seq.append(self.name, 'name') - self._setSeq(seq) - self._readonly = readonly - - def __repr__(self): - if self._usemedia: - mediaText = self.media.mediaText - else: - mediaText = None - return "cssutils.css.%s(href=%r, mediaText=%r, name=%r)" % ( - self.__class__.__name__, - self.href, self.media.mediaText, self.name) - - def __str__(self): - if self._usemedia: - mediaText = self.media.mediaText - else: - mediaText = None - return "" % ( - self.__class__.__name__, self.href, mediaText, self.name, id(self)) - - _usemedia = property(lambda self: self.media.mediaText not in (u'', u'all'), - doc="if self._media is used (or simply empty)") - - def _getCssText(self): - """Return serialized property cssText.""" - return cssutils.ser.do_CSSImportRule(self) - - def _setCssText(self, cssText): - """ - :exceptions: - - :exc:`~xml.dom.HierarchyRequestErr`: - Raised if the rule cannot be inserted at this point in the - style sheet. - - :exc:`~xml.dom.InvalidModificationErr`: - Raised if the specified CSS string value represents a different - type of rule than the current one. - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if the rule is readonly. - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified CSS string value has a syntax error and - is unparsable. - """ - super(CSSImportRule, self)._setCssText(cssText) - tokenizer = self._tokenize2(cssText) - attoken = self._nexttoken(tokenizer, None) - if self._type(attoken) != self._prods.IMPORT_SYM: - self._log.error(u'CSSImportRule: No CSSImportRule found: %s' % - self._valuestr(cssText), - error=xml.dom.InvalidModificationErr) - else: - # save if parse goes wrong - oldmedia = cssutils.stylesheets.MediaList() - oldmedia._absorb(self.media) - - # for closures: must be a mutable - new = {'keyword': self._tokenvalue(attoken), - 'href': None, - 'hreftype': None, - 'media': None, - 'name': None, - 'wellformed': True - } - - def __doname(seq, token): - # called by _string or _ident - new['name'] = self._stringtokenvalue(token) - seq.append(new['name'], 'name') - return ';' - - def _string(expected, seq, token, tokenizer=None): - if 'href' == expected: - # href - new['href'] = self._stringtokenvalue(token) - new['hreftype'] = 'string' - seq.append(new['href'], 'href') - return 'media name ;' - elif 'name' in expected: - # name - return __doname(seq, token) - else: - new['wellformed'] = False - self._log.error( - u'CSSImportRule: Unexpected string.', token) - return expected - - def _uri(expected, seq, token, tokenizer=None): - # href - if 'href' == expected: - uri = self._uritokenvalue(token) - new['hreftype'] = 'uri' - new['href'] = uri - seq.append(new['href'], 'href') - return 'media name ;' - else: - new['wellformed'] = False - self._log.error( - u'CSSImportRule: Unexpected URI.', token) - return expected - - def _ident(expected, seq, token, tokenizer=None): - # medialist ending with ; which is checked upon too - if expected.startswith('media'): - mediatokens = self._tokensupto2( - tokenizer, importmediaqueryendonly=True) - mediatokens.insert(0, token) # push found token - - last = mediatokens.pop() # retrieve ; - lastval, lasttyp = self._tokenvalue(last), self._type(last) - if lastval != u';' and lasttyp not in ('EOF', self._prods.STRING): - new['wellformed'] = False - self._log.error(u'CSSImportRule: No ";" found: %s' % - self._valuestr(cssText), token=token) - - #media = cssutils.stylesheets.MediaList() - self.media.mediaText = mediatokens - if self.media.wellformed: - new['media'] = self.media - seq.append(self.media, 'media') - else: - # RESET - self.media._absorb(oldmedia) - new['wellformed'] = False - self._log.error(u'CSSImportRule: Invalid MediaList: %s' % - self._valuestr(cssText), token=token) - - if lasttyp == self._prods.STRING: - # name - return __doname(seq, last) - else: - return 'EOF' # ';' is token "last" - else: - new['wellformed'] = False - self._log.error( - u'CSSImportRule: Unexpected ident.', token) - return expected - - def _char(expected, seq, token, tokenizer=None): - # final ; - val = self._tokenvalue(token) - if expected.endswith(';') and u';' == val: - return 'EOF' - else: - new['wellformed'] = False - self._log.error( - u'CSSImportRule: Unexpected char.', token) - return expected - - # import : IMPORT_SYM S* [STRING|URI] - # S* [ medium [ ',' S* medium]* ]? ';' S* - # STRING? # see http://www.w3.org/TR/css3-cascade/#cascading - # ; - newseq = self._tempSeq() - wellformed, expected = self._parse(expected='href', - seq=newseq, tokenizer=tokenizer, - productions={'STRING': _string, - 'URI': _uri, - 'IDENT': _ident, - 'CHAR': _char}, - new=new) - - # wellformed set by parse - wellformed = wellformed and new['wellformed'] - - # post conditions - if not new['href']: - wellformed = False - self._log.error(u'CSSImportRule: No href found: %s' % - self._valuestr(cssText)) - - if expected != 'EOF': - wellformed = False - self._log.error(u'CSSImportRule: No ";" found: %s' % - self._valuestr(cssText)) - - # set all - if wellformed: - self.atkeyword = new['keyword'] - self.hreftype = new['hreftype'] - if not new['media']: - # reset media to base media - self.media.mediaText = u'all' - newseq.append(self.media, 'media') - self.name = new['name'] - self._setSeq(newseq) - self.href = new['href'] - - if self.styleSheet: - # title is set by href - #self.styleSheet._href = self.href - self.styleSheet._parentStyleSheet = self.parentStyleSheet - - cssText = property(fget=_getCssText, fset=_setCssText, - doc="(DOM) The parsable textual representation of this rule.") - - def _setHref(self, href): - # update seq - for i, item in enumerate(self.seq): - val, typ = item.value, item.type - if 'href' == typ: - self._seq[i] = (href, typ, item.line, item.col) - break - else: - seq = self._tempSeq() - seq.append(self.href, 'href') - self._setSeq(seq) - # set new href - self._href = href - if not self.styleSheet: - # set only if not set before - self.__setStyleSheet() - - href = property(lambda self: self._href, _setHref, - doc="Location of the style sheet to be imported.") - - media = property(lambda self: self._media, - doc="(DOM readonly) A list of media types for this rule " - "of type :class:`~cssutils.stylesheets.MediaList`.") - - def _setName(self, name): - """Raises xml.dom.SyntaxErr if name is not a string.""" - if isinstance(name, basestring) or name is None: - # "" or '' - if not name: - name = None - # update seq - for i, item in enumerate(self.seq): - val, typ = item.value, item.type - if 'name' == typ: - self._seq[i] = (name, typ, item.line, item.col) - break - else: - # append - seq = self._tempSeq() - for item in self.seq: - # copy current seq - seq.append(item.value, item.type, item.line, item.col) - seq.append(name, 'name') - self._setSeq(seq) - self._name = name - # set title of referred sheet - if self.styleSheet: - self.styleSheet.title = name - else: - self._log.error(u'CSSImportRule: Not a valid name: %s' % name) - - name = property(lambda self: self._name, _setName, - doc=u"An optional name for the imported sheet.") - - def __setStyleSheet(self): - """Read new CSSStyleSheet cssText from href using parentStyleSheet.href - - Indirectly called if setting ``href``. In case of any error styleSheet - is set to ``None``. - """ - # should simply fail so all errors are catched! - if self.parentStyleSheet and self.href: - # relative href - parentHref = self.parentStyleSheet.href - if parentHref is None: - # use cwd instead - #parentHref = u'file:' + urllib.pathname2url(os.getcwd()) + '/' - parentHref = cssutils.helper.path2url(os.getcwd()) + '/' - href = urlparse.urljoin(parentHref, self.href) - - # all possible exceptions are ignored (styleSheet is None then) - try: - usedEncoding, enctype, cssText = self.parentStyleSheet._resolveImport(href) - if cssText is None: - # catched in next except below! - raise IOError('Cannot read Stylesheet.') - styleSheet = cssutils.css.CSSStyleSheet(href=href, - media=self.media, - ownerRule=self, - title=self.name) - # inherit fetcher for @imports in styleSheet - styleSheet._setFetcher(self.parentStyleSheet._fetcher) - # contentEncoding with parentStyleSheet.overrideEncoding, - # HTTP or parent - encodingOverride, encoding = None, None - if enctype == 0: - encodingOverride = usedEncoding - elif 5 > enctype > 0: - encoding = usedEncoding - - styleSheet._setCssTextWithEncodingOverride(cssText, - encodingOverride=encodingOverride, - encoding=encoding) - - except (OSError, IOError, ValueError), e: - self._log.warn(u'CSSImportRule: While processing imported style sheet href=%r: %r' - % (self.href, e), neverraise=True) - else: - self._styleSheet = styleSheet - - styleSheet = property(lambda self: self._styleSheet, - doc="(readonly) The style sheet referred to by this rule.") - - type = property(lambda self: self.IMPORT_RULE, - doc="The type of this rule, as defined by a CSSRule " - "type constant.") - - def _getWellformed(self): - "Depending if media is used at all." - if self._usemedia: - return bool(self.href and self.media.wellformed) - else: - return bool(self.href) - - wellformed = property(_getWellformed) diff --git a/src/cssutils/css/cssmediarule.py b/src/cssutils/css/cssmediarule.py deleted file mode 100644 index 439a81ebe4..0000000000 --- a/src/cssutils/css/cssmediarule.py +++ /dev/null @@ -1,381 +0,0 @@ -"""CSSMediaRule implements DOM Level 2 CSS CSSMediaRule.""" -__all__ = ['CSSMediaRule'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: cssmediarule.py 1871 2009-10-17 19:57:37Z cthedot $' - -import cssrule -import cssutils -import xml.dom - -class CSSMediaRule(cssrule.CSSRule): - """ - Objects implementing the CSSMediaRule interface can be identified by the - MEDIA_RULE constant. On these objects the type attribute must return the - value of that constant. - - Format:: - - : MEDIA_SYM S* medium [ COMMA S* medium ]* - - STRING? # the name - - LBRACE S* ruleset* '}' S*; - - ``cssRules`` - All Rules in this media rule, a :class:`~cssutils.css.CSSRuleList`. - """ - def __init__(self, mediaText='all', name=None, - parentRule=None, parentStyleSheet=None, readonly=False): - """constructor""" - super(CSSMediaRule, self).__init__(parentRule=parentRule, - parentStyleSheet=parentStyleSheet) - self._atkeyword = u'@media' - self._media = cssutils.stylesheets.MediaList(mediaText, - readonly=readonly) - self.name = name - self.cssRules = cssutils.css.cssrulelist.CSSRuleList() - self._readonly = readonly - - def __iter__(self): - """Generator iterating over these rule's cssRules.""" - for rule in self._cssRules: - yield rule - - def __repr__(self): - return "cssutils.css.%s(mediaText=%r)" % ( - self.__class__.__name__, self.media.mediaText) - - def __str__(self): - return "" % ( - self.__class__.__name__, self.media.mediaText, id(self)) - - def _setCssRules(self, cssRules): - "Set new cssRules and update contained rules refs." - cssRules.append = self.insertRule - cssRules.extend = self.insertRule - cssRules.__delitem__ == self.deleteRule - for rule in cssRules: - rule._parentStyleSheet = self.parentStyleSheet - rule._parentRule = self - self._cssRules = cssRules - - cssRules = property(lambda self: self._cssRules, _setCssRules, - "All Rules in this style sheet, a " - ":class:`~cssutils.css.CSSRuleList`.") - - def _getCssText(self): - """Return serialized property cssText.""" - return cssutils.ser.do_CSSMediaRule(self) - - def _setCssText(self, cssText): - """ - :param cssText: - a parseable string or a tuple of (cssText, dict-of-namespaces) - :Exceptions: - - :exc:`~xml.dom.NamespaceErr`: - Raised if a specified selector uses an unknown namespace - prefix. - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified CSS string value has a syntax error and - is unparsable. - - :exc:`~xml.dom.InvalidModificationErr`: - Raised if the specified CSS string value represents a different - type of rule than the current one. - - :exc:`~xml.dom.HierarchyRequestErr`: - Raised if the rule cannot be inserted at this point in the - style sheet. - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if the rule is readonly. - """ - # media "name"? { cssRules } - super(CSSMediaRule, self)._setCssText(cssText) - - # might be (cssText, namespaces) - cssText, namespaces = self._splitNamespacesOff(cssText) - try: - # use parent style sheet ones if available - namespaces = self.parentStyleSheet.namespaces - except AttributeError: - pass - - tokenizer = self._tokenize2(cssText) - attoken = self._nexttoken(tokenizer, None) - if self._type(attoken) != self._prods.MEDIA_SYM: - self._log.error(u'CSSMediaRule: No CSSMediaRule found: %s' % - self._valuestr(cssText), - error=xml.dom.InvalidModificationErr) - else: - # save if parse goes wrong - oldmedia = cssutils.stylesheets.MediaList() - oldmedia._absorb(self.media) - - # media - wellformed = True - mediatokens, end = self._tokensupto2(tokenizer, - mediaqueryendonly=True, - separateEnd=True) - if u'{' == self._tokenvalue(end) or self._prods.STRING == self._type(end): - self.media.mediaText = mediatokens - - # name (optional) - name = None - nameseq = self._tempSeq() - if self._prods.STRING == self._type(end): - name = self._stringtokenvalue(end) - # TODO: for now comments are lost after name - nametokens, end = self._tokensupto2(tokenizer, - blockstartonly=True, - separateEnd=True) - wellformed, expected = self._parse(None, nameseq, nametokens, {}) - if not wellformed: - self._log.error(u'CSSMediaRule: Syntax Error: %s' % - self._valuestr(cssText)) - - - # check for { - if u'{' != self._tokenvalue(end): - self._log.error(u'CSSMediaRule: No "{" found: %s' % - self._valuestr(cssText)) - return - - # cssRules - cssrulestokens, braceOrEOF = self._tokensupto2(tokenizer, - mediaendonly=True, - separateEnd=True) - nonetoken = self._nexttoken(tokenizer, None) - if 'EOF' == self._type(braceOrEOF): - # HACK!!! - # TODO: Not complete, add EOF to rule and } to @media - cssrulestokens.append(braceOrEOF) - braceOrEOF = ('CHAR', '}', 0, 0) - self._log.debug(u'CSSMediaRule: Incomplete, adding "}".', - token=braceOrEOF, neverraise=True) - - if u'}' != self._tokenvalue(braceOrEOF): - self._log.error(u'CSSMediaRule: No "}" found.', - token=braceOrEOF) - elif nonetoken: - self._log.error(u'CSSMediaRule: Trailing content found.', - token=nonetoken) - else: - # for closures: must be a mutable - newcssrules = [] #cssutils.css.CSSRuleList() - new = {'wellformed': True } - - def ruleset(expected, seq, token, tokenizer): - rule = cssutils.css.CSSStyleRule(parentRule=self) - rule.cssText = (self._tokensupto2(tokenizer, token), - namespaces) - if rule.wellformed: - rule._parentStyleSheet=self.parentStyleSheet - seq.append(rule) - return expected - - def atrule(expected, seq, token, tokenizer): - # TODO: get complete rule! - tokens = self._tokensupto2(tokenizer, token) - atval = self._tokenvalue(token) - if atval in ('@charset ', '@font-face', '@import', '@namespace', - '@page', '@media'): - self._log.error( - u'CSSMediaRule: This rule is not allowed in CSSMediaRule - ignored: %s.' - % self._valuestr(tokens), - token = token, - error=xml.dom.HierarchyRequestErr) - else: - rule = cssutils.css.CSSUnknownRule(parentRule=self, - parentStyleSheet=self.parentStyleSheet) - rule.cssText = tokens - if rule.wellformed: - seq.append(rule) - return expected - - def COMMENT(expected, seq, token, tokenizer=None): - seq.append(cssutils.css.CSSComment([token])) - return expected - - tokenizer = (t for t in cssrulestokens) # TODO: not elegant! - wellformed, expected = self._parse(braceOrEOF, - newcssrules, - tokenizer, { - 'COMMENT': COMMENT, - 'CHARSET_SYM': atrule, - 'FONT_FACE_SYM': atrule, - 'IMPORT_SYM': atrule, - 'NAMESPACE_SYM': atrule, - 'PAGE_SYM': atrule, - 'MEDIA_SYM': atrule, - 'ATKEYWORD': atrule - }, - default=ruleset, - new=new) - - # no post condition - if self.media.wellformed and wellformed: - self.name = name - self._setSeq(nameseq) - del self._cssRules[:] - for r in newcssrules: - self._cssRules.append(r) - - else: - # RESET - self.media._absorb(oldmedia) - - cssText = property(_getCssText, _setCssText, - doc="(DOM) The parsable textual representation of this rule.") - - def _setName(self, name): - if isinstance(name, basestring) or name is None: - # "" or '' - if not name: - name = None - - self._name = name - else: - self._log.error(u'CSSImportRule: Not a valid name: %s' % name) - - name = property(lambda self: self._name, _setName, - doc=u"An optional name for this media rule.") - - media = property(lambda self: self._media, - doc=u"(DOM readonly) A list of media types for this rule of type " - u":class:`~cssutils.stylesheets.MediaList`.") - - def deleteRule(self, index): - """ - Delete the rule at `index` from the media block. - - :param index: - The `index` of the rule to be removed from the media block's rule - list. For an `index` < 0 **no** :exc:`~xml.dom.IndexSizeErr` is - raised but rules for normal Python lists are used. E.g. - ``deleteRule(-1)`` removes the last rule in cssRules. - - `index` may also be a CSSRule object which will then be removed - from the media block. - - :Exceptions: - - :exc:`~xml.dom.IndexSizeErr`: - Raised if the specified index does not correspond to a rule in - the media rule list. - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if this media rule is readonly. - """ - self._checkReadonly() - - if isinstance(index, cssrule.CSSRule): - for i, r in enumerate(self.cssRules): - if index == r: - index = i - break - else: - raise xml.dom.IndexSizeErr(u"CSSMediaRule: Not a rule in" - " this rule'a cssRules list: %s" - % index) - - try: - self._cssRules[index]._parentRule = None # detach - del self._cssRules[index] # remove from @media - except IndexError: - raise xml.dom.IndexSizeErr( - u'CSSMediaRule: %s is not a valid index in the rulelist of length %i' % ( - index, self._cssRules.length)) - - def add(self, rule): - """Add `rule` to end of this mediarule. - Same as :meth:`~cssutils.css.CSSMediaRule.insertRule`.""" - self.insertRule(rule, index=None) - - def insertRule(self, rule, index=None): - """ - Insert `rule` into the media block. - - :param rule: - the parsable text representing the `rule` to be inserted. For rule - sets this contains both the selector and the style declaration. - For at-rules, this specifies both the at-identifier and the rule - content. - - cssutils also allows rule to be a valid :class:`~cssutils.css.CSSRule` - object. - - :param index: - before the specified `rule` will be inserted. - If the specified `index` is - equal to the length of the media blocks's rule collection, the - rule will be added to the end of the media block. - If index is not given or None rule will be appended to rule - list. - - :returns: - the index within the media block's rule collection of the - newly inserted rule. - - :exceptions: - - :exc:`~xml.dom.HierarchyRequestErr`: - Raised if the `rule` cannot be inserted at the specified `index`, - e.g., if an @import rule is inserted after a standard rule set - or other at-rule. - - :exc:`~xml.dom.IndexSizeErr`: - Raised if the specified `index` is not a valid insertion point. - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if this media rule is readonly. - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified `rule` has a syntax error and is - unparsable. - - """ - self._checkReadonly() - - # check position - if index is None: - index = len(self._cssRules) - elif index < 0 or index > self._cssRules.length: - raise xml.dom.IndexSizeErr( - u'CSSMediaRule: Invalid index %s for CSSRuleList with a length of %s.' % ( - index, self._cssRules.length)) - - # parse - if isinstance(rule, basestring): - tempsheet = cssutils.css.CSSStyleSheet() - tempsheet.cssText = rule - if len(tempsheet.cssRules) != 1 or (tempsheet.cssRules and - not isinstance(tempsheet.cssRules[0], cssutils.css.CSSRule)): - self._log.error(u'CSSMediaRule: Invalid Rule: %s' % rule) - return - rule = tempsheet.cssRules[0] - - elif isinstance(rule, cssutils.css.CSSRuleList): - # insert all rules - for i, r in enumerate(rule): - self.insertRule(r, index + i) - return index - - elif not isinstance(rule, cssutils.css.CSSRule): - self._log.error(u'CSSMediaRule: Not a CSSRule: %s' % rule) - return - - # CHECK HIERARCHY - # @charset @import @page @namespace @media - if isinstance(rule, cssutils.css.CSSCharsetRule) or \ - isinstance(rule, cssutils.css.CSSFontFaceRule) or \ - isinstance(rule, cssutils.css.CSSImportRule) or \ - isinstance(rule, cssutils.css.CSSNamespaceRule) or \ - isinstance(rule, cssutils.css.CSSPageRule) or \ - isinstance(rule, CSSMediaRule): - self._log.error(u'CSSMediaRule: This type of rule is not allowed here: %s' % - rule.cssText, - error=xml.dom.HierarchyRequestErr) - return - - self._cssRules.insert(index, rule) - rule._parentRule = self - rule._parentStyleSheet = self.parentStyleSheet - return index - - type = property(lambda self: self.MEDIA_RULE, - doc="The type of this rule, as defined by a CSSRule " - "type constant.") - - wellformed = property(lambda self: self.media.wellformed) diff --git a/src/cssutils/css/cssnamespacerule.py b/src/cssutils/css/cssnamespacerule.py deleted file mode 100644 index ba2e84810c..0000000000 --- a/src/cssutils/css/cssnamespacerule.py +++ /dev/null @@ -1,282 +0,0 @@ -"""CSSNamespaceRule currently implements http://dev.w3.org/csswg/css3-namespace/""" -__all__ = ['CSSNamespaceRule'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: cssnamespacerule.py 1638 2009-01-13 20:39:33Z cthedot $' - -from cssutils.helper import Deprecated -import cssrule -import cssutils -import xml.dom - -class CSSNamespaceRule(cssrule.CSSRule): - """ - Represents an @namespace rule within a CSS style sheet. - - The @namespace at-rule declares a namespace prefix and associates - it with a given namespace (a string). This namespace prefix can then be - used in namespace-qualified names such as those described in the - Selectors Module [SELECT] or the Values and Units module [CSS3VAL]. - - Dealing with these rules directly is not needed anymore, easier is - the use of :attr:`cssutils.css.CSSStyleSheet.namespaces`. - - Format:: - - namespace - : NAMESPACE_SYM S* [namespace_prefix S*]? [STRING|URI] S* ';' S* - ; - namespace_prefix - : IDENT - ; - """ - def __init__(self, namespaceURI=None, prefix=None, cssText=None, - parentRule=None, parentStyleSheet=None, readonly=False): - """ - :Parameters: - namespaceURI - The namespace URI (a simple string!) which is bound to the - given prefix. If no prefix is set - (``CSSNamespaceRule.prefix==''``) the namespace defined by - namespaceURI is set as the default namespace - prefix - The prefix used in the stylesheet for the given - ``CSSNamespaceRule.uri``. - cssText - if no namespaceURI is given cssText must be given to set - a namespaceURI as this is readonly later on - parentStyleSheet - sheet where this rule belongs to - - Do not use as positional but as keyword parameters only! - - If readonly allows setting of properties in constructor only - - format namespace:: - - namespace - : NAMESPACE_SYM S* [namespace_prefix S*]? [STRING|URI] S* ';' S* - ; - namespace_prefix - : IDENT - ; - """ - super(CSSNamespaceRule, self).__init__(parentRule=parentRule, - parentStyleSheet=parentStyleSheet) - self._atkeyword = u'@namespace' - self._prefix = u'' - self._namespaceURI = None - - if namespaceURI: - self.namespaceURI = namespaceURI - self.prefix = prefix - tempseq = self._tempSeq() - tempseq.append(self.prefix, 'prefix') - tempseq.append(self.namespaceURI, 'namespaceURI') - self._setSeq(tempseq) - elif cssText is not None: - self.cssText = cssText - - if parentStyleSheet: - self._parentStyleSheet = parentStyleSheet - - self._readonly = readonly - - def __repr__(self): - return "cssutils.css.%s(namespaceURI=%r, prefix=%r)" % ( - self.__class__.__name__, self.namespaceURI, self.prefix) - - def __str__(self): - return "" % ( - self.__class__.__name__, self.namespaceURI, self.prefix, id(self)) - - def _getCssText(self): - """Return serialized property cssText""" - return cssutils.ser.do_CSSNamespaceRule(self) - - def _setCssText(self, cssText): - """ - :param cssText: initial value for this rules cssText which is parsed - :exceptions: - - :exc:`~xml.dom.HierarchyRequestErr`: - Raised if the rule cannot be inserted at this point in the - style sheet. - - :exc:`~xml.dom.InvalidModificationErr`: - Raised if the specified CSS string value represents a different - type of rule than the current one. - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if the rule is readonly. - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified CSS string value has a syntax error and - is unparsable. - """ - super(CSSNamespaceRule, self)._setCssText(cssText) - tokenizer = self._tokenize2(cssText) - attoken = self._nexttoken(tokenizer, None) - if self._type(attoken) != self._prods.NAMESPACE_SYM: - self._log.error(u'CSSNamespaceRule: No CSSNamespaceRule found: %s' % - self._valuestr(cssText), - error=xml.dom.InvalidModificationErr) - else: - # for closures: must be a mutable - new = {'keyword': self._tokenvalue(attoken), - 'prefix': u'', - 'uri': None, - 'wellformed': True - } - - def _ident(expected, seq, token, tokenizer=None): - # the namespace prefix, optional - if 'prefix or uri' == expected: - new['prefix'] = self._tokenvalue(token) - seq.append(new['prefix'], 'prefix') - return 'uri' - else: - new['wellformed'] = False - self._log.error( - u'CSSNamespaceRule: Unexpected ident.', token) - return expected - - def _string(expected, seq, token, tokenizer=None): - # the namespace URI as a STRING - if expected.endswith('uri'): - new['uri'] = self._stringtokenvalue(token) - seq.append(new['uri'], 'namespaceURI') - return ';' - - else: - new['wellformed'] = False - self._log.error( - u'CSSNamespaceRule: Unexpected string.', token) - return expected - - def _uri(expected, seq, token, tokenizer=None): - # the namespace URI as URI which is DEPRECATED - if expected.endswith('uri'): - uri = self._uritokenvalue(token) - new['uri'] = uri - seq.append(new['uri'], 'namespaceURI') - return ';' - else: - new['wellformed'] = False - self._log.error( - u'CSSNamespaceRule: Unexpected URI.', token) - return expected - - def _char(expected, seq, token, tokenizer=None): - # final ; - val = self._tokenvalue(token) - if ';' == expected and u';' == val: - return 'EOF' - else: - new['wellformed'] = False - self._log.error( - u'CSSNamespaceRule: Unexpected char.', token) - return expected - - # "NAMESPACE_SYM S* [namespace_prefix S*]? [STRING|URI] S* ';' S*" - newseq = self._tempSeq() - wellformed, expected = self._parse(expected='prefix or uri', - seq=newseq, tokenizer=tokenizer, - productions={'IDENT': _ident, - 'STRING': _string, - 'URI': _uri, - 'CHAR': _char}, - new=new) - - # wellformed set by parse - wellformed = wellformed and new['wellformed'] - - # post conditions - if new['uri'] is None: - wellformed = False - self._log.error(u'CSSNamespaceRule: No namespace URI found: %s' % - self._valuestr(cssText)) - - if expected != 'EOF': - wellformed = False - self._log.error(u'CSSNamespaceRule: No ";" found: %s' % - self._valuestr(cssText)) - - # set all - if wellformed: - self.atkeyword = new['keyword'] - self._prefix = new['prefix'] - self.namespaceURI = new['uri'] - self._setSeq(newseq) - - cssText = property(fget=_getCssText, fset=_setCssText, - doc="(DOM) The parsable textual representation of this rule.") - - def _setNamespaceURI(self, namespaceURI): - """ - :param namespaceURI: the initial value for this rules namespaceURI - :exceptions: - - :exc:`~xml.dom.NoModificationAllowedErr`: - (CSSRule) Raised if this rule is readonly or a namespaceURI is - already set in this rule. - """ - self._checkReadonly() - if not self._namespaceURI: - # initial setting - self._namespaceURI = namespaceURI - tempseq = self._tempSeq() - tempseq.append(namespaceURI, 'namespaceURI') - self._setSeq(tempseq) # makes seq readonly! - elif self._namespaceURI != namespaceURI: - self._log.error(u'CSSNamespaceRule: namespaceURI is readonly.', - error=xml.dom.NoModificationAllowedErr) - - namespaceURI = property(lambda self: self._namespaceURI, _setNamespaceURI, - doc="URI (handled as simple string) of the defined namespace.") - - def _setPrefix(self, prefix=None): - """ - :param prefix: the new prefix - :exceptions: - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified CSS string value has a syntax error and - is unparsable. - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if this rule is readonly. - """ - self._checkReadonly() - if not prefix: - prefix = u'' - else: - tokenizer = self._tokenize2(prefix) - prefixtoken = self._nexttoken(tokenizer, None) - if not prefixtoken or self._type(prefixtoken) != self._prods.IDENT: - self._log.error(u'CSSNamespaceRule: No valid prefix "%s".' % - self._valuestr(prefix), - error=xml.dom.SyntaxErr) - return - else: - prefix = self._tokenvalue(prefixtoken) - # update seg - for i, x in enumerate(self._seq): - if x == self._prefix: - self._seq[i] = (prefix, 'prefix', None, None) - break - else: - # put prefix at the beginning! - self._seq[0] = (prefix, 'prefix', None, None) - - # set new prefix - self._prefix = prefix - - prefix = property(lambda self: self._prefix, _setPrefix, - doc="Prefix used for the defined namespace.") - -# def _setParentStyleSheet(self, parentStyleSheet): -# self._parentStyleSheet = parentStyleSheet -# -# parentStyleSheet = property(lambda self: self._parentStyleSheet, -# _setParentStyleSheet, -# doc=u"Containing CSSStyleSheet.") - - type = property(lambda self: self.NAMESPACE_RULE, - doc="The type of this rule, as defined by a CSSRule " - "type constant.") - - wellformed = property(lambda self: self.namespaceURI is not None) - \ No newline at end of file diff --git a/src/cssutils/css/csspagerule.py b/src/cssutils/css/csspagerule.py deleted file mode 100644 index 5727af99fe..0000000000 --- a/src/cssutils/css/csspagerule.py +++ /dev/null @@ -1,273 +0,0 @@ -"""CSSPageRule implements DOM Level 2 CSS CSSPageRule.""" -__all__ = ['CSSPageRule'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: csspagerule.py 1868 2009-10-17 19:36:54Z cthedot $' - -from cssstyledeclaration import CSSStyleDeclaration -from selectorlist import SelectorList -import cssrule -import cssutils -import xml.dom - -class CSSPageRule(cssrule.CSSRule): - """ - The CSSPageRule interface represents a @page rule within a CSS style - sheet. The @page rule is used to specify the dimensions, orientation, - margins, etc. of a page box for paged media. - - Format:: - - page - : PAGE_SYM S* pseudo_page? S* - LBRACE S* declaration [ ';' S* declaration ]* '}' S* - ; - pseudo_page - : ':' IDENT # :first, :left, :right in CSS 2.1 - ; - """ - def __init__(self, selectorText=None, style=None, parentRule=None, - parentStyleSheet=None, readonly=False): - """ - If readonly allows setting of properties in constructor only. - - :param selectorText: - type string - :param style: - CSSStyleDeclaration for this CSSStyleRule - """ - super(CSSPageRule, self).__init__(parentRule=parentRule, - parentStyleSheet=parentStyleSheet) - self._atkeyword = u'@page' - tempseq = self._tempSeq() - if selectorText: - self.selectorText = selectorText - tempseq.append(self.selectorText, 'selectorText') - else: - self._selectorText = self._tempSeq() - - self._style = CSSStyleDeclaration(parentRule=self) - if style: - self.style = style - tempseq.append(self.style, 'style') - - self._setSeq(tempseq) - - self._readonly = readonly - - def __repr__(self): - return "cssutils.css.%s(selectorText=%r, style=%r)" % ( - self.__class__.__name__, self.selectorText, self.style.cssText) - - def __str__(self): - return "" % ( - self.__class__.__name__, self.selectorText, self.style.cssText, - id(self)) - - def __parseSelectorText(self, selectorText): - """ - Parse `selectorText` which may also be a list of tokens - and returns (selectorText, seq). - - see _setSelectorText for details - """ - # for closures: must be a mutable - new = {'wellformed': True, 'last-S': False} - - def _char(expected, seq, token, tokenizer=None): - # pseudo_page, :left, :right or :first - val = self._tokenvalue(token) - if not new['last-S'] and expected in ['page', ': or EOF'] and u':' == val: - try: - identtoken = tokenizer.next() - except StopIteration: - self._log.error( - u'CSSPageRule selectorText: No IDENT found.', token) - else: - ival, ityp = self._tokenvalue(identtoken), self._type(identtoken) - if self._prods.IDENT != ityp: - self._log.error( - u'CSSPageRule selectorText: Expected IDENT but found: %r' % - ival, token) - else: - seq.append(val + ival, 'pseudo') - return 'EOF' - return expected - else: - new['wellformed'] = False - self._log.error( - u'CSSPageRule selectorText: Unexpected CHAR: %r' % val, token) - return expected - - def S(expected, seq, token, tokenizer=None): - "Does not raise if EOF is found." - if expected == ': or EOF': - # pseudo must directly follow IDENT if given - new['last-S'] = True - return expected - - def IDENT(expected, seq, token, tokenizer=None): - "" - val = self._tokenvalue(token) - if 'page' == expected: - seq.append(val, 'IDENT') - return ': or EOF' - else: - new['wellformed'] = False - self._log.error( - u'CSSPageRule selectorText: Unexpected IDENT: %r' % val, token) - return expected - - def COMMENT(expected, seq, token, tokenizer=None): - "Does not raise if EOF is found." - seq.append(cssutils.css.CSSComment([token]), 'COMMENT') - return expected - - newseq = self._tempSeq() - wellformed, expected = self._parse(expected='page', - seq=newseq, tokenizer=self._tokenize2(selectorText), - productions={'CHAR': _char, - 'IDENT': IDENT, - 'COMMENT': COMMENT, - 'S': S}, - new=new) - wellformed = wellformed and new['wellformed'] - - # post conditions - if expected == 'ident': - self._log.error( - u'CSSPageRule selectorText: No valid selector: %r' % - self._valuestr(selectorText)) - -# if not newselector in (None, u':first', u':left', u':right'): -# self._log.warn(u'CSSPageRule: Unknown CSS 2.1 @page selector: %r' % -# newselector, neverraise=True) - return wellformed, newseq - - def _getCssText(self): - """Return serialized property cssText.""" - return cssutils.ser.do_CSSPageRule(self) - - def _setCssText(self, cssText): - """ - :exceptions: - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified CSS string value has a syntax error and - is unparsable. - - :exc:`~xml.dom.InvalidModificationErr`: - Raised if the specified CSS string value represents a different - type of rule than the current one. - - :exc:`~xml.dom.HierarchyRequestErr`: - Raised if the rule cannot be inserted at this point in the - style sheet. - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if the rule is readonly. - """ - super(CSSPageRule, self)._setCssText(cssText) - - tokenizer = self._tokenize2(cssText) - if self._type(self._nexttoken(tokenizer)) != self._prods.PAGE_SYM: - self._log.error(u'CSSPageRule: No CSSPageRule found: %s' % - self._valuestr(cssText), - error=xml.dom.InvalidModificationErr) - else: - # save if parse goes wrong - oldstyle = CSSStyleDeclaration() - oldstyle._absorb(self.style) - - ok = True - selectortokens, startbrace = self._tokensupto2(tokenizer, - blockstartonly=True, - separateEnd=True) - styletokens, braceorEOFtoken = self._tokensupto2(tokenizer, - blockendonly=True, - separateEnd=True) - nonetoken = self._nexttoken(tokenizer) - if self._tokenvalue(startbrace) != u'{': - ok = False - self._log.error( - u'CSSPageRule: No start { of style declaration found: %r' % - self._valuestr(cssText), startbrace) - elif nonetoken: - ok = False - self._log.error( - u'CSSPageRule: Trailing content found.', token=nonetoken) - - selok, newselectorseq = self.__parseSelectorText(selectortokens) - ok = ok and selok - - val, typ = self._tokenvalue(braceorEOFtoken), self._type(braceorEOFtoken) - if val != u'}' and typ != 'EOF': - ok = False - self._log.error( - u'CSSPageRule: No "}" after style declaration found: %r' % - self._valuestr(cssText)) - else: - if 'EOF' == typ: - # add again as style needs it - styletokens.append(braceorEOFtoken) - self.style.cssText = styletokens - - if ok: - # TODO: TEST and REFS - self._selectorText = newselectorseq - else: - # RESET - self.style._absorb(oldstyle) - - cssText = property(_getCssText, _setCssText, - doc="(DOM) The parsable textual representation of this rule.") - - def _getSelectorText(self): - """Wrapper for cssutils Selector object.""" - return cssutils.ser.do_CSSPageRuleSelector(self._selectorText)#self._selectorText - - def _setSelectorText(self, selectorText): - """Wrapper for cssutils Selector object. - - :param selectorText: - DOM String, in CSS 2.1 one of - - - :first - - :left - - :right - - empty - - :exceptions: - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified CSS string value has a syntax error - and is unparsable. - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if this rule is readonly. - """ - self._checkReadonly() - - # may raise SYNTAX_ERR - wellformed, newseq = self.__parseSelectorText(selectorText) - if wellformed: - self._selectorText = newseq - - selectorText = property(_getSelectorText, _setSelectorText, - doc="""(DOM) The parsable textual representation of the page selector for the rule.""") - - def _setStyle(self, style): - """ - :param style: - a CSSStyleDeclaration or string - """ - self._checkReadonly() - if isinstance(style, basestring): - self._style.cssText = style - else: - self._style = style - self._style.parentRule = self - - style = property(lambda self: self._style, _setStyle, - doc="(DOM) The declaration-block of this rule set, " - "a :class:`~cssutils.css.CSSStyleDeclaration`.") - - type = property(lambda self: self.PAGE_RULE, - doc="The type of this rule, as defined by a CSSRule " - "type constant.") - - # constant but needed: - wellformed = property(lambda self: True) diff --git a/src/cssutils/css/cssproperties.py b/src/cssutils/css/cssproperties.py deleted file mode 100644 index fb55ce0dc4..0000000000 --- a/src/cssutils/css/cssproperties.py +++ /dev/null @@ -1,122 +0,0 @@ -"""CSS2Properties (partly!) implements DOM Level 2 CSS CSS2Properties used -by CSSStyleDeclaration - -TODO: CSS2Properties - If an implementation does implement this interface, it is expected to - understand the specific syntax of the shorthand properties, and apply - their semantics; when the margin property is set, for example, the - marginTop, marginRight, marginBottom and marginLeft properties are - actually being set by the underlying implementation. - - When dealing with CSS "shorthand" properties, the shorthand properties - should be decomposed into their component longhand properties as - appropriate, and when querying for their value, the form returned - should be the shortest form exactly equivalent to the declarations made - in the ruleset. However, if there is no shorthand declaration that - could be added to the ruleset without changing in any way the rules - already declared in the ruleset (i.e., by adding longhand rules that - were previously not declared in the ruleset), then the empty string - should be returned for the shorthand property. - - For example, querying for the font property should not return - "normal normal normal 14pt/normal Arial, sans-serif", when - "14pt Arial, sans-serif" suffices. (The normals are initial values, and - are implied by use of the longhand property.) - - If the values for all the longhand properties that compose a particular - string are the initial values, then a string consisting of all the - initial values should be returned (e.g. a border-width value of - "medium" should be returned as such, not as ""). - - For some shorthand properties that take missing values from other - sides, such as the margin, padding, and border-[width|style|color] - properties, the minimum number of sides possible should be used; i.e., - "0px 10px" will be returned instead of "0px 10px 0px 10px". - - If the value of a shorthand property can not be decomposed into its - component longhand properties, as is the case for the font property - with a value of "menu", querying for the values of the component - longhand properties should return the empty string. - -TODO: CSS2Properties DOMImplementation - The interface found within this section are not mandatory. A DOM - application can use the hasFeature method of the DOMImplementation - interface to determine whether it is supported or not. The feature - string for this extended interface listed in this section is "CSS2" - and the version is "2.0". - -""" -__all__ = ['CSS2Properties'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: cssproperties.py 1638 2009-01-13 20:39:33Z cthedot $' - -import cssutils.profiles -import re - -class CSS2Properties(object): - """The CSS2Properties interface represents a convenience mechanism - for retrieving and setting properties within a CSSStyleDeclaration. - The attributes of this interface correspond to all the properties - specified in CSS2. Getting an attribute of this interface is - equivalent to calling the getPropertyValue method of the - CSSStyleDeclaration interface. Setting an attribute of this - interface is equivalent to calling the setProperty method of the - CSSStyleDeclaration interface. - - cssutils actually also allows usage of ``del`` to remove a CSS property - from a CSSStyleDeclaration. - - This is an abstract class, the following functions need to be present - in inheriting class: - - - ``_getP`` - - ``_setP`` - - ``_delP`` - """ - # actual properties are set after the class definition! - def _getP(self, CSSname): pass - def _setP(self, CSSname, value): pass - def _delP(self, CSSname): pass - - -_reCSStoDOMname = re.compile('-[a-z]', re.I) -def _toDOMname(CSSname): - """Returns DOMname for given CSSname e.g. for CSSname 'font-style' returns - 'fontStyle'. - """ - def _doCSStoDOMname2(m): return m.group(0)[1].capitalize() - return _reCSStoDOMname.sub(_doCSStoDOMname2, CSSname) - -_reDOMtoCSSname = re.compile('([A-Z])[a-z]+') -def _toCSSname(DOMname): - """Return CSSname for given DOMname e.g. for DOMname 'fontStyle' returns - 'font-style'. - """ - def _doDOMtoCSSname2(m): return '-' + m.group(0).lower() - return _reDOMtoCSSname.sub(_doDOMtoCSSname2, DOMname) - -# add list of DOMname properties to CSS2Properties -# used for CSSStyleDeclaration to check if allowed properties -# but somehow doubled, any better way? -CSS2Properties._properties = [] -for group in cssutils.profiles.properties: - for name in cssutils.profiles.properties[group]: - CSS2Properties._properties.append(_toDOMname(name)) - - -# add CSS2Properties to CSSStyleDeclaration: -def __named_property_def(DOMname): - """ - Closure to keep name known in each properties accessor function - DOMname is converted to CSSname here, so actual calls use CSSname. - """ - CSSname = _toCSSname(DOMname) - def _get(self): return self._getP(CSSname) - def _set(self, value): self._setP(CSSname, value) - def _del(self): self._delP(CSSname) - return _get, _set, _del - -# add all CSS2Properties to CSSStyleDeclaration -for DOMname in CSS2Properties._properties: - setattr(CSS2Properties, DOMname, - property(*__named_property_def(DOMname))) diff --git a/src/cssutils/css/cssrule.py b/src/cssutils/css/cssrule.py deleted file mode 100644 index 587d380c29..0000000000 --- a/src/cssutils/css/cssrule.py +++ /dev/null @@ -1,106 +0,0 @@ -"""CSSRule implements DOM Level 2 CSS CSSRule.""" -__all__ = ['CSSRule'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: cssrule.py 1855 2009-10-07 17:03:19Z cthedot $' - -import cssutils -import xml.dom - -class CSSRule(cssutils.util.Base2): - """Abstract base interface for any type of CSS statement. This includes - both rule sets and at-rules. An implementation is expected to preserve - all rules specified in a CSS style sheet, even if the rule is not - recognized by the parser. Unrecognized rules are represented using the - :class:`CSSUnknownRule` interface. - """ - - """ - CSSRule type constants. - An integer indicating which type of rule this is. - """ - COMMENT = -1 # cssutils only - UNKNOWN_RULE = 0 #u - STYLE_RULE = 1 #s - CHARSET_RULE = 2 #c - IMPORT_RULE = 3 #i - MEDIA_RULE = 4 #m - FONT_FACE_RULE = 5 #f - PAGE_RULE = 6 #p - NAMESPACE_RULE = 7 # CSSOM - VARIABLES_RULE = 8 # CSS Variables - - _typestrings = ['UNKNOWN_RULE', 'STYLE_RULE', 'CHARSET_RULE', 'IMPORT_RULE', - 'MEDIA_RULE', 'FONT_FACE_RULE', 'PAGE_RULE', 'NAMESPACE_RULE', - 'VARIABLES_RULE', - 'COMMENT'] - - def __init__(self, parentRule=None, parentStyleSheet=None, readonly=False): - """Set common attributes for all rules.""" - super(CSSRule, self).__init__() - self._parent = parentRule - self._parentRule = parentRule - self._parentStyleSheet = parentStyleSheet - self._setSeq(self._tempSeq()) - # must be set after initialization of #inheriting rule is done - self._readonly = False - - def _setAtkeyword(self, akw): - """Check if new keyword fits the rule it is used for.""" - if not self.atkeyword or (self._normalize(akw) == - self._normalize(self.atkeyword)): - self._atkeyword = akw - else: - self._log.error(u'%s: Invalid atkeyword for this rule: %r' % - (self._normalize(self.atkeyword), akw), - error=xml.dom.InvalidModificationErr) - - atkeyword = property(lambda self: self._atkeyword, _setAtkeyword, - doc=u"Literal keyword of an @rule (e.g. ``@IMport``).") - - def _setCssText(self, cssText): - """ - :param cssText: - A parsable DOMString. - :exceptions: - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified CSS string value has a syntax error and - is unparsable. - - :exc:`~xml.dom.InvalidModificationErr`: - Raised if the specified CSS string value represents a different - type of rule than the current one. - - :exc:`~xml.dom.HierarchyRequestErr`: - Raised if the rule cannot be inserted at this point in the - style sheet. - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if the rule is readonly. - """ - self._checkReadonly() - - cssText = property(lambda self: u'', _setCssText, - doc="(DOM) The parsable textual representation of the " - "rule. This reflects the current state of the rule " - "and not its initial value.") - - parent = property(lambda self: self._parent, - doc="The Parent Node of this CSSRule (currently if a " - "CSSStyleDeclaration only!) or None.") - - parentRule = property(lambda self: self._parentRule, - doc="If this rule is contained inside " - "another rule (e.g. a style rule inside " - "an @media block), this is the containing " - "rule. If this rule is not nested inside " - "any other rules, this returns None.") - - parentStyleSheet = property(lambda self: self._parentStyleSheet, - doc="The style sheet that contains this rule.") - - type = property(lambda self: self.UNKNOWN_RULE, - doc="The type of this rule, as defined by a CSSRule " - "type constant.") - - typeString = property(lambda self: CSSRule._typestrings[self.type], - doc="Descriptive name of this rule's type.") - - wellformed = property(lambda self: False, - doc=u"If the rule is wellformed.") diff --git a/src/cssutils/css/cssrulelist.py b/src/cssutils/css/cssrulelist.py deleted file mode 100644 index a20f19cf47..0000000000 --- a/src/cssutils/css/cssrulelist.py +++ /dev/null @@ -1,47 +0,0 @@ -"""CSSRuleList implements DOM Level 2 CSS CSSRuleList. -Partly also http://dev.w3.org/csswg/cssom/#the-cssrulelist.""" -__all__ = ['CSSRuleList'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: cssrulelist.py 1824 2009-08-01 21:00:34Z cthedot $' - -class CSSRuleList(list): - """The CSSRuleList object represents an (ordered) list of statements. - - The items in the CSSRuleList are accessible via an integral index, - starting from 0. - - Subclasses a standard Python list so theoretically all standard list - methods are available. Setting methods like ``__init__``, ``append``, - ``extend`` or ``__setslice__`` are added later on instances of this - class if so desired. - E.g. CSSStyleSheet adds ``append`` which is not available in a simple - instance of this class! - """ - def __init__(self, *ignored): - "Nothing is set as this must also be defined later." - pass - - def __notimplemented(self, *ignored): - "Implemented in class using a CSSRuleList only." - raise NotImplementedError( - 'Must be implemented by class using an instance of this class.') - - append = extend = __setitem__ = __setslice__ = __notimplemented - - def item(self, index): - """(DOM) Retrieve a CSS rule by ordinal `index`. The order in this - collection represents the order of the rules in the CSS style - sheet. If index is greater than or equal to the number of rules in - the list, this returns None. - - Returns CSSRule, the style rule at the index position in the - CSSRuleList, or None if that is not a valid index. - """ - try: - return self[index] - except IndexError: - return None - - length = property(lambda self: len(self), - doc="(DOM) The number of CSSRules in the list.") - diff --git a/src/cssutils/css/cssstyledeclaration.py b/src/cssutils/css/cssstyledeclaration.py deleted file mode 100644 index 626245099d..0000000000 --- a/src/cssutils/css/cssstyledeclaration.py +++ /dev/null @@ -1,642 +0,0 @@ -"""CSSStyleDeclaration implements DOM Level 2 CSS CSSStyleDeclaration and -extends CSS2Properties - -see - http://www.w3.org/TR/1998/REC-CSS2-19980512/syndata.html#parsing-errors - -Unknown properties ------------------- -User agents must ignore a declaration with an unknown property. -For example, if the style sheet is:: - - H1 { color: red; rotation: 70minutes } - -the user agent will treat this as if the style sheet had been:: - - H1 { color: red } - -Cssutils gives a message about any unknown properties but -keeps any property (if syntactically correct). - -Illegal values --------------- -User agents must ignore a declaration with an illegal value. For example:: - - IMG { float: left } /* correct CSS2 */ - IMG { float: left here } /* "here" is not a value of 'float' */ - IMG { background: "red" } /* keywords cannot be quoted in CSS2 */ - IMG { border-width: 3 } /* a unit must be specified for length values */ - -A CSS2 parser would honor the first rule and ignore the rest, as if the -style sheet had been:: - - IMG { float: left } - IMG { } - IMG { } - IMG { } - -Cssutils again will issue a message (WARNING in this case) about invalid -CSS2 property values. - -TODO: - This interface is also used to provide a read-only access to the - computed values of an element. See also the ViewCSS interface. - - - return computed values and not literal values - - simplify unit pairs/triples/quadruples - 2px 2px 2px 2px -> 2px for border/padding... - - normalize compound properties like: - background: no-repeat left url() #fff - -> background: #fff url() no-repeat left -""" -__all__ = ['CSSStyleDeclaration', 'Property'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: cssstyledeclaration.py 1879 2009-11-17 20:35:04Z cthedot $' - -from cssproperties import CSS2Properties -from property import Property -import cssutils -import xml.dom - -class CSSStyleDeclaration(CSS2Properties, cssutils.util.Base2): - """The CSSStyleDeclaration class represents a single CSS declaration - block. This class may be used to determine the style properties - currently set in a block or to set style properties explicitly - within the block. - - While an implementation may not recognize all CSS properties within - a CSS declaration block, it is expected to provide access to all - specified properties in the style sheet through the - CSSStyleDeclaration interface. - Furthermore, implementations that support a specific level of CSS - should correctly handle CSS shorthand properties for that level. For - a further discussion of shorthand properties, see the CSS2Properties - interface. - - Additionally the CSS2Properties interface is implemented. - - $css2propertyname - All properties defined in the CSS2Properties class are available - as direct properties of CSSStyleDeclaration with their respective - DOM name, so e.g. ``fontStyle`` for property 'font-style'. - - These may be used as:: - - >>> style = CSSStyleDeclaration(cssText='color: red') - >>> style.color = 'green' - >>> print style.color - green - >>> del style.color - >>> print style.color - - - Format:: - - [Property: Value Priority?;]* [Property: Value Priority?]? - """ - def __init__(self, cssText=u'', parentRule=None, readonly=False): - """ - :param cssText: - Shortcut, sets CSSStyleDeclaration.cssText - :param parentRule: - The CSS rule that contains this declaration block or - None if this CSSStyleDeclaration is not attached to a CSSRule. - :param readonly: - defaults to False - """ - super(CSSStyleDeclaration, self).__init__() - self._parentRule = parentRule - self.cssText = cssText - self._readonly = readonly - - def __contains__(self, nameOrProperty): - """Check if a property (or a property with given name) is in style. - - :param name: - a string or Property, uses normalized name and not literalname - """ - if isinstance(nameOrProperty, Property): - name = nameOrProperty.name - else: - name = self._normalize(nameOrProperty) - return name in self.__nnames() - - def __iter__(self): - """Iterator of set Property objects with different normalized names.""" - def properties(): - for name in self.__nnames(): - yield self.getProperty(name) - return properties() - - def keys(self): - """Analoguous to standard dict returns property names which are set in - this declaration.""" - return list(self.__nnames()) - - def __getitem__(self, CSSName): - """Retrieve the value of property ``CSSName`` from this declaration. - - ``CSSName`` will be always normalized. - """ - return self.getPropertyValue(CSSName) - - def __setitem__(self, CSSName, value): - """Set value of property ``CSSName``. ``value`` may also be a tuple of - (value, priority), e.g. style['color'] = ('red', 'important') - - ``CSSName`` will be always normalized. - """ - priority = None - if type(value) == tuple: - value, priority = value - - return self.setProperty(CSSName, value, priority) - - def __delitem__(self, CSSName): - """Delete property ``CSSName`` from this declaration. - If property is not in this declaration return u'' just like - removeProperty. - - ``CSSName`` will be always normalized. - """ - return self.removeProperty(CSSName) - - def __setattr__(self, n, v): - """Prevent setting of unknown properties on CSSStyleDeclaration - which would not work anyway. For these - ``CSSStyleDeclaration.setProperty`` MUST be called explicitly! - - TODO: - implementation of known is not really nice, any alternative? - """ - known = ['_tokenizer', '_log', '_ttypes', - '_seq', 'seq', 'parentRule', '_parentRule', 'cssText', - 'valid', 'wellformed', - '_readonly', '_profiles'] - known.extend(CSS2Properties._properties) - if n in known: - super(CSSStyleDeclaration, self).__setattr__(n, v) - else: - raise AttributeError( - 'Unknown CSS Property, ``CSSStyleDeclaration.setProperty("%s", ...)`` MUST be used.' - % n) - - def __repr__(self): - return "cssutils.css.%s(cssText=%r)" % ( - self.__class__.__name__, self.getCssText(separator=u' ')) - - def __str__(self): - return "" % ( - self.__class__.__name__, self.length, - len(self.getProperties(all=True)), id(self)) - - def __nnames(self): - """Return iterator for all different names in order as set - if names are set twice the last one is used (double reverse!) - """ - names = [] - for item in reversed(self.seq): - val = item.value - if isinstance(val, Property) and not val.name in names: - names.append(val.name) - return reversed(names) - - def _absorb(self, other): - """Replace all own data with data from other object.""" - self._parentRule = other._parentRule - self.seq.absorb(other.seq) - self._readonly = other._readonly - - # overwritten accessor functions for CSS2Properties' properties - def _getP(self, CSSName): - """(DOM CSS2Properties) Overwritten here and effectively the same as - ``self.getPropertyValue(CSSname)``. - - Parameter is in CSSname format ('font-style'), see CSS2Properties. - - Example:: - - >>> style = CSSStyleDeclaration(cssText='font-style:italic;') - >>> print style.fontStyle - italic - """ - return self.getPropertyValue(CSSName) - - def _setP(self, CSSName, value): - """(DOM CSS2Properties) Overwritten here and effectively the same as - ``self.setProperty(CSSname, value)``. - - Only known CSS2Properties may be set this way, otherwise an - AttributeError is raised. - For these unknown properties ``setPropertyValue(CSSname, value)`` - has to be called explicitly. - Also setting the priority of properties needs to be done with a - call like ``setPropertyValue(CSSname, value, priority)``. - - Example:: - - >>> style = CSSStyleDeclaration() - >>> style.fontStyle = 'italic' - >>> # or - >>> style.setProperty('font-style', 'italic', '!important') - - """ - self.setProperty(CSSName, value) - # TODO: Shorthand ones - - def _delP(self, CSSName): - """(cssutils only) Overwritten here and effectively the same as - ``self.removeProperty(CSSname)``. - - Example:: - - >>> style = CSSStyleDeclaration(cssText='font-style:italic;') - >>> del style.fontStyle - >>> print style.fontStyle - - - """ - self.removeProperty(CSSName) - - def children(self): - """Generator yielding any known child in this declaration including - *all* properties, comments or CSSUnknownrules. - """ - for item in self._seq: - yield item.value - - def _getCssText(self): - """Return serialized property cssText.""" - return cssutils.ser.do_css_CSSStyleDeclaration(self) - - def _setCssText(self, cssText): - """Setting this attribute will result in the parsing of the new value - and resetting of all the properties in the declaration block - including the removal or addition of properties. - - :exceptions: - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if this declaration is readonly or a property is readonly. - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified CSS string value has a syntax error and - is unparsable. - """ - self._checkReadonly() - tokenizer = self._tokenize2(cssText) - - # for closures: must be a mutable - new = {'wellformed': True} - def ident(expected, seq, token, tokenizer=None): - # a property - - tokens = self._tokensupto2(tokenizer, starttoken=token, - semicolon=True) - if self._tokenvalue(tokens[-1]) == u';': - tokens.pop() - property = Property(parent=self) - property.cssText = tokens - if property.wellformed: - seq.append(property, 'Property') - else: - self._log.error(u'CSSStyleDeclaration: Syntax Error in Property: %s' - % self._valuestr(tokens)) - # does not matter in this case - return expected - - def unexpected(expected, seq, token, tokenizer=None): - # error, find next ; or } to omit upto next property - ignored = self._tokenvalue(token) + self._valuestr( - self._tokensupto2(tokenizer, propertyvalueendonly=True)) - self._log.error(u'CSSStyleDeclaration: Unexpected token, ignoring upto %r.' % - ignored,token) - # does not matter in this case - return expected - - # [Property: Value;]* Property: Value? - newseq = self._tempSeq() - wellformed, expected = self._parse(expected=None, - seq=newseq, tokenizer=tokenizer, - productions={'IDENT': ident},#, 'CHAR': char}, - default=unexpected) - # wellformed set by parse - - for item in newseq: - item.value._parent = self - - # do not check wellformed as invalid things are removed anyway - self._setSeq(newseq) - - cssText = property(_getCssText, _setCssText, - doc="(DOM) A parsable textual representation of the declaration\ - block excluding the surrounding curly braces.") - - def getCssText(self, separator=None): - """ - :returns: - serialized property cssText, each property separated by - given `separator` which may e.g. be ``u''`` to be able to use - cssText directly in an HTML style attribute. ``;`` is part of - each property (except the last one) and **cannot** be set with - separator! - """ - return cssutils.ser.do_css_CSSStyleDeclaration(self, separator) - - def _setParentRule(self, parentRule): - self._parentRule = parentRule - for x in self.children(): - x.parent = self - - parentRule = property(lambda self: self._parentRule, _setParentRule, - doc="(DOM) The CSS rule that contains this declaration block or " - "None if this CSSStyleDeclaration is not attached to a CSSRule.") - - def getProperties(self, name=None, all=False): - """ - :param name: - optional `name` of properties which are requested. - Only properties with this **always normalized** `name` are returned. - If `name` is ``None`` all properties are returned (at least one for - each set name depending on parameter `all`). - :param all: - if ``False`` (DEFAULT) only the effective properties are returned. - If name is given a list with only one property is returned. - - if ``True`` all properties including properties set multiple times - with different values or priorities for different UAs are returned. - The order of the properties is fully kept as in the original - stylesheet. - :returns: - a list of :class:`~cssutils.css.Property` objects set in - this declaration. - """ - if name and not all: - # single prop but list - p = self.getProperty(name) - if p: - return [p] - else: - return [] - elif not all: - # effective Properties in name order - return [self.getProperty(name)for name in self.__nnames()] - else: - # all properties or all with this name - nname = self._normalize(name) - properties = [] - for item in self.seq: - val = item.value - if isinstance(val, Property) and ( - (bool(nname) == False) or (val.name == nname)): - properties.append(val) - return properties - - def getProperty(self, name, normalize=True): - """ - :param name: - of the CSS property, always lowercase (even if not normalized) - :param normalize: - if ``True`` (DEFAULT) name will be normalized (lowercase, no simple - escapes) so "color", "COLOR" or "C\olor" will all be equivalent - - If ``False`` may return **NOT** the effective value but the - effective for the unnormalized name. - :returns: - the effective :class:`~cssutils.css.Property` object. - """ - nname = self._normalize(name) - found = None - for item in reversed(self.seq): - val = item.value - if isinstance(val, Property): - if (normalize and nname == val.name) or name == val.literalname: - if val.priority: - return val - elif not found: - found = val - return found - - def getPropertyCSSValue(self, name, normalize=True): - """ - :param name: - of the CSS property, always lowercase (even if not normalized) - :param normalize: - if ``True`` (DEFAULT) name will be normalized (lowercase, no simple - escapes) so "color", "COLOR" or "C\olor" will all be equivalent - - If ``False`` may return **NOT** the effective value but the effective - for the unnormalized name. - :returns: - :class:`~cssutils.css.CSSValue`, the value of the effective - property if it has been explicitly set for this declaration block. - - (DOM) - Used to retrieve the object representation of the value of a CSS - property if it has been explicitly set within this declaration - block. Returns None if the property has not been set. - - (This method returns None if the property is a shorthand - property. Shorthand property values can only be accessed and - modified as strings, using the getPropertyValue and setProperty - methods.) - - **cssutils currently always returns a CSSValue if the property is - set.** - - for more on shorthand properties see - http://www.dustindiaz.com/css-shorthand/ - """ - nname = self._normalize(name) - if nname in self._SHORTHANDPROPERTIES: - self._log.info( - u'CSSValue for shorthand property "%s" should be None, this may be implemented later.' % - nname, neverraise=True) - - p = self.getProperty(name, normalize) - if p: - return p.cssValue - else: - return None - - def getPropertyValue(self, name, normalize=True): - """ - :param name: - of the CSS property, always lowercase (even if not normalized) - :param normalize: - if ``True`` (DEFAULT) name will be normalized (lowercase, no simple - escapes) so "color", "COLOR" or "C\olor" will all be equivalent - - If ``False`` may return **NOT** the effective value but the - effective for the unnormalized name. - :returns: - the value of the effective property if it has been explicitly set - for this declaration block. Returns the empty string if the - property has not been set. - """ - p = self.getProperty(name, normalize) - if p: - return p.value - else: - return u'' - - def getPropertyPriority(self, name, normalize=True): - """ - :param name: - of the CSS property, always lowercase (even if not normalized) - :param normalize: - if ``True`` (DEFAULT) name will be normalized (lowercase, no simple - escapes) so "color", "COLOR" or "C\olor" will all be equivalent - - If ``False`` may return **NOT** the effective value but the - effective for the unnormalized name. - :returns: - the priority of the effective CSS property (e.g. the - "important" qualifier) if the property has been explicitly set in - this declaration block. The empty string if none exists. - """ - p = self.getProperty(name, normalize) - if p: - return p.priority - else: - return u'' - - def removeProperty(self, name, normalize=True): - """ - (DOM) - Used to remove a CSS property if it has been explicitly set within - this declaration block. - - :param name: - of the CSS property - :param normalize: - if ``True`` (DEFAULT) name will be normalized (lowercase, no simple - escapes) so "color", "COLOR" or "C\olor" will all be equivalent. - The effective Property value is returned and *all* Properties - with ``Property.name == name`` are removed. - - If ``False`` may return **NOT** the effective value but the - effective for the unnormalized `name` only. Also only the - Properties with the literal name `name` are removed. - :returns: - the value of the property if it has been explicitly set for - this declaration block. Returns the empty string if the property - has not been set or the property name does not correspond to a - known CSS property - - - :exceptions: - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if this declaration is readonly or the property is - readonly. - """ - self._checkReadonly() - r = self.getPropertyValue(name, normalize=normalize) - newseq = self._tempSeq() - if normalize: - # remove all properties with name == nname - nname = self._normalize(name) - for item in self.seq: - if not (isinstance(item.value, Property) and item.value.name == nname): - newseq.appendItem(item) - else: - # remove all properties with literalname == name - for item in self.seq: - if not (isinstance(item.value, Property) and item.value.literalname == name): - newseq.appendItem(item) - self._setSeq(newseq) - return r - - def setProperty(self, name, value=None, priority=u'', normalize=True): - """(DOM) Set a property value and priority within this declaration - block. - - :param name: - of the CSS property to set (in W3C DOM the parameter is called - "propertyName"), always lowercase (even if not normalized) - - If a property with this `name` is present it will be reset. - - cssutils also allowed `name` to be a - :class:`~cssutils.css.Property` object, all other - parameter are ignored in this case - - :param value: - the new value of the property, ignored if `name` is a Property. - :param priority: - the optional priority of the property (e.g. "important"), - ignored if `name` is a Property. - :param normalize: - if True (DEFAULT) `name` will be normalized (lowercase, no simple - escapes) so "color", "COLOR" or "C\olor" will all be equivalent - - :exceptions: - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified value has a syntax error and is - unparsable. - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if this declaration is readonly or the property is - readonly. - """ - self._checkReadonly() - - if isinstance(name, Property): - newp = name - name = newp.literalname - elif not value: - # empty string or None effectively removed property - return self.removeProperty(name) - else: - newp = Property(name, value, priority) - if not newp.wellformed: - self._log.warn(u'Invalid Property: %s: %s %s' - % (name, value, priority)) - else: - nname = self._normalize(name) - properties = self.getProperties(name, all=(not normalize)) - for property in reversed(properties): - if normalize and property.name == nname: - property.cssValue = newp.cssValue.cssText - property.priority = newp.priority - break - elif property.literalname == name: - property.cssValue = newp.cssValue.cssText - property.priority = newp.priority - break - else: - newp.parent = self - self.seq._readonly = False - self.seq.append(newp, 'Property') - self.seq._readonly = True - - def item(self, index): - """(DOM) Retrieve the properties that have been explicitly set in - this declaration block. The order of the properties retrieved using - this method does not have to be the order in which they were set. - This method can be used to iterate over all properties in this - declaration block. - - :param index: - of the property to retrieve, negative values behave like - negative indexes on Python lists, so -1 is the last element - - :returns: - the name of the property at this ordinal position. The - empty string if no property exists at this position. - - **ATTENTION:** - Only properties with different names are counted. If two - properties with the same name are present in this declaration - only the effective one is included. - - :meth:`item` and :attr:`length` work on the same set here. - """ - names = list(self.__nnames()) - try: - return names[index] - except IndexError: - return u'' - - length = property(lambda self: len(list(self.__nnames())), - doc="(DOM) The number of distinct properties that have been explicitly " - "in this declaration block. The range of valid indices is 0 to " - "length-1 inclusive. These are properties with a different ``name`` " - "only. :meth:`item` and :attr:`length` work on the same set here.") diff --git a/src/cssutils/css/cssstylerule.py b/src/cssutils/css/cssstylerule.py deleted file mode 100644 index 6d1798b88a..0000000000 --- a/src/cssutils/css/cssstylerule.py +++ /dev/null @@ -1,233 +0,0 @@ -"""CSSStyleRule implements DOM Level 2 CSS CSSStyleRule.""" -__all__ = ['CSSStyleRule'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: cssstylerule.py 1868 2009-10-17 19:36:54Z cthedot $' - -from cssstyledeclaration import CSSStyleDeclaration -from selectorlist import SelectorList -import cssrule -import cssutils -import xml.dom - -class CSSStyleRule(cssrule.CSSRule): - """The CSSStyleRule object represents a ruleset specified (if any) in a CSS - style sheet. It provides access to a declaration block as well as to the - associated group of selectors. - - Format:: - - : selector [ COMMA S* selector ]* - LBRACE S* declaration [ ';' S* declaration ]* '}' S* - ; - """ - def __init__(self, selectorText=None, style=None, parentRule=None, - parentStyleSheet=None, readonly=False): - """ - :Parameters: - selectorText - string parsed into selectorList - style - string parsed into CSSStyleDeclaration for this CSSStyleRule - readonly - if True allows setting of properties in constructor only - """ - super(CSSStyleRule, self).__init__(parentRule=parentRule, - parentStyleSheet=parentStyleSheet) - - self._selectorList = SelectorList(parentRule=self) - self._style = CSSStyleDeclaration(parentRule=self) - if selectorText: - self.selectorText = selectorText - if style: - self.style = style - - self._readonly = readonly - - def __repr__(self): - if self._namespaces: - st = (self.selectorText, self._namespaces) - else: - st = self.selectorText - return "cssutils.css.%s(selectorText=%r, style=%r)" % ( - self.__class__.__name__, st, self.style.cssText) - - def __str__(self): - return "" % ( - self.__class__.__name__, self.selectorText, self.style.cssText, - self._namespaces, id(self)) - - def _getCssText(self): - """Return serialized property cssText.""" - return cssutils.ser.do_CSSStyleRule(self) - - def _setCssText(self, cssText): - """ - :param cssText: - a parseable string or a tuple of (cssText, dict-of-namespaces) - :exceptions: - - :exc:`~xml.dom.NamespaceErr`: - Raised if the specified selector uses an unknown namespace - prefix. - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified CSS string value has a syntax error and - is unparsable. - - :exc:`~xml.dom.InvalidModificationErr`: - Raised if the specified CSS string value represents a different - type of rule than the current one. - - :exc:`~xml.dom.HierarchyRequestErr`: - Raised if the rule cannot be inserted at this point in the - style sheet. - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if the rule is readonly. - """ - super(CSSStyleRule, self)._setCssText(cssText) - - # might be (cssText, namespaces) - cssText, namespaces = self._splitNamespacesOff(cssText) - try: - # use parent style sheet ones if available - namespaces = self.parentStyleSheet.namespaces - except AttributeError: - pass - - tokenizer = self._tokenize2(cssText) - selectortokens = self._tokensupto2(tokenizer, blockstartonly=True) - styletokens = self._tokensupto2(tokenizer, blockendonly=True) - trail = self._nexttoken(tokenizer) - if trail: - self._log.error(u'CSSStyleRule: Trailing content: %s' % - self._valuestr(cssText), token=trail) - elif not selectortokens: - self._log.error(u'CSSStyleRule: No selector found: %r' % - self._valuestr(cssText)) - elif self._tokenvalue(selectortokens[0]).startswith(u'@'): - self._log.error(u'CSSStyleRule: No style rule: %r' % - self._valuestr(cssText), - error=xml.dom.InvalidModificationErr) - else: - # save if parse goes wrong - oldstyle = CSSStyleDeclaration() - oldstyle._absorb(self.style) - oldselector = SelectorList() - oldselector._absorb(self.selectorList) - - ok = True - - bracetoken = selectortokens.pop() - if self._tokenvalue(bracetoken) != u'{': - ok = False - self._log.error( - u'CSSStyleRule: No start { of style declaration found: %r' % - self._valuestr(cssText), bracetoken) - elif not selectortokens: - ok = False - self._log.error(u'CSSStyleRule: No selector found: %r.' % - self._valuestr(cssText), bracetoken) - # SET - self.selectorList.selectorText = (selectortokens, - namespaces) - if not styletokens: - ok = False - self._log.error( - u'CSSStyleRule: No style declaration or "}" found: %r' % - self._valuestr(cssText)) - else: - braceorEOFtoken = styletokens.pop() - val, typ = self._tokenvalue(braceorEOFtoken), self._type(braceorEOFtoken) - if val != u'}' and typ != 'EOF': - ok = False - self._log.error( - u'CSSStyleRule: No "}" after style declaration found: %r' % - self._valuestr(cssText)) - else: - if 'EOF' == typ: - # add again as style needs it - styletokens.append(braceorEOFtoken) - - # SET - try: - self.style.cssText = styletokens - except: - # reset in case of error - self.selectorList._absorb(oldselector) - raise - - if not ok or not self.wellformed: - # reset as not ok - self.selectorList._absorb(oldselector) - self.style._absorb(oldstyle) - - cssText = property(_getCssText, _setCssText, - doc="(DOM) The parsable textual representation of this rule.") - - - def __getNamespaces(self): - "Uses children namespaces if not attached to a sheet, else the sheet's ones." - try: - return self.parentStyleSheet.namespaces - except AttributeError: - return self.selectorList._namespaces - - _namespaces = property(__getNamespaces, - doc="If this Rule is attached to a CSSStyleSheet " - "the namespaces of that sheet are mirrored " - "here. While the Rule is not attached the " - "namespaces of selectorList are used.""") - - def _setSelectorList(self, selectorList): - """ - :param selectorList: A SelectorList which replaces the current - selectorList object - """ - self._checkReadonly() - selectorList._parentRule = self - self._selectorList = selectorList - - selectorList = property(lambda self: self._selectorList, _setSelectorList, - doc="The SelectorList of this rule.") - - def _setSelectorText(self, selectorText): - """ - wrapper for cssutils SelectorList object - - :param selectorText: - of type string, might also be a comma separated list - of selectors - :exceptions: - - :exc:`~xml.dom.NamespaceErr`: - Raised if the specified selector uses an unknown namespace - prefix. - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified CSS string value has a syntax error - and is unparsable. - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if this rule is readonly. - """ - self._checkReadonly() - self._selectorList.selectorText = selectorText - - selectorText = property(lambda self: self._selectorList.selectorText, - _setSelectorText, - doc="(DOM) The textual representation of the " - "selector for the rule set.") - - def _setStyle(self, style): - """ - :param style: A string or CSSStyleDeclaration which replaces the - current style object. - """ - self._checkReadonly() - if isinstance(style, basestring): - self._style.cssText = style - else: - style._parentRule = self - self._style = style - - style = property(lambda self: self._style, _setStyle, - doc="(DOM) The declaration-block of this rule set.") - - type = property(lambda self: self.STYLE_RULE, - doc="The type of this rule, as defined by a CSSRule " - "type constant.") - - wellformed = property(lambda self: self.selectorList.wellformed) diff --git a/src/cssutils/css/cssstylesheet.py b/src/cssutils/css/cssstylesheet.py deleted file mode 100644 index f6bc2cb7cd..0000000000 --- a/src/cssutils/css/cssstylesheet.py +++ /dev/null @@ -1,739 +0,0 @@ -"""CSSStyleSheet implements DOM Level 2 CSS CSSStyleSheet. - -Partly also: - - http://dev.w3.org/csswg/cssom/#the-cssstylesheet - - http://www.w3.org/TR/2006/WD-css3-namespace-20060828/ - -TODO: - - ownerRule and ownerNode -""" -__all__ = ['CSSStyleSheet'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: cssstylesheet.py 1857 2009-10-10 21:49:33Z cthedot $' - -from cssutils.helper import Deprecated -from cssutils.util import _Namespaces, _SimpleNamespaces, _readUrl -from cssrule import CSSRule -import cssutils.stylesheets -import xml.dom - -class CSSStyleSheet(cssutils.stylesheets.StyleSheet): - """CSSStyleSheet represents a CSS style sheet. - - Format:: - - stylesheet - : [ CHARSET_SYM S* STRING S* ';' ]? - [S|CDO|CDC]* [ import [S|CDO|CDC]* ]* - [ namespace [S|CDO|CDC]* ]* # according to @namespace WD - [ [ ruleset | media | page ] [S|CDO|CDC]* ]* - - ``cssRules`` - All Rules in this style sheet, a :class:`~cssutils.css.CSSRuleList`. - """ - def __init__(self, href=None, media=None, title=u'', disabled=None, - ownerNode=None, parentStyleSheet=None, readonly=False, - ownerRule=None): - """ - For parameters see :class:`~cssutils.stylesheets.StyleSheet` - """ - super(CSSStyleSheet, self).__init__( - 'text/css', href, media, title, disabled, - ownerNode, parentStyleSheet) - - self._ownerRule = ownerRule - self.cssRules = cssutils.css.CSSRuleList() - self._namespaces = _Namespaces(parentStyleSheet=self, log=self._log) - self._readonly = readonly - - # used only during setting cssText by parse*() - self.__encodingOverride = None - self._fetcher = None - - def __iter__(self): - "Generator which iterates over cssRules." - for rule in self._cssRules: - yield rule - - def __repr__(self): - if self.media: - mediaText = self.media.mediaText - else: - mediaText = None - return "cssutils.css.%s(href=%r, media=%r, title=%r)" % ( - self.__class__.__name__, - self.href, mediaText, self.title) - - def __str__(self): - if self.media: - mediaText = self.media.mediaText - else: - mediaText = None - return "" % ( - self.__class__.__name__, self.encoding, self.href, - mediaText, self.title, self.namespaces.namespaces, - id(self)) - - def _cleanNamespaces(self): - "Remove all namespace rules with same namespaceURI but last one set." - rules = self._cssRules - namespaceitems = self.namespaces.items() - i = 0 - while i < len(rules): - rule = rules[i] - if rule.type == rule.NAMESPACE_RULE and \ - (rule.prefix, rule.namespaceURI) not in namespaceitems: - self.deleteRule(i) - else: - i += 1 - - def _getUsedURIs(self): - "Return set of URIs used in the sheet." - useduris = set() - for r1 in self: - if r1.STYLE_RULE == r1.type: - useduris.update(r1.selectorList._getUsedUris()) - elif r1.MEDIA_RULE == r1.type: - for r2 in r1: - if r2.type == r2.STYLE_RULE: - useduris.update(r2.selectorList._getUsedUris()) - return useduris - - def _setCssRules(self, cssRules): - "Set new cssRules and update contained rules refs." - cssRules.append = self.insertRule - cssRules.extend = self.insertRule - cssRules.__delitem__ == self.deleteRule - for rule in cssRules: - rule._parentStyleSheet = self - self._cssRules = cssRules - - cssRules = property(lambda self: self._cssRules, _setCssRules, - "All Rules in this style sheet, a " - ":class:`~cssutils.css.CSSRuleList`.") - - def _getCssText(self): - "Textual representation of the stylesheet (a byte string)." - return cssutils.ser.do_CSSStyleSheet(self) - - def _setCssText(self, cssText): - """Parse `cssText` and overwrites the whole stylesheet. - - :param cssText: - a parseable string or a tuple of (cssText, dict-of-namespaces) - :exceptions: - - :exc:`~xml.dom.NamespaceErr`: - If a namespace prefix is found which is not declared. - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if the rule is readonly. - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified CSS string value has a syntax error and - is unparsable. - """ - self._checkReadonly() - - cssText, namespaces = self._splitNamespacesOff(cssText) - if not namespaces: - namespaces = _SimpleNamespaces(log=self._log) - - tokenizer = self._tokenize2(cssText) - newseq = [] #cssutils.css.CSSRuleList() - - # for closures: must be a mutable - new = {'encoding': None, # needed for setting encoding of @import rules - 'namespaces': namespaces} - def S(expected, seq, token, tokenizer=None): - # @charset must be at absolute beginning of style sheet - if expected == 0: - return 1 - else: - return expected - - def COMMENT(expected, seq, token, tokenizer=None): - "special: sets parent*" - comment = cssutils.css.CSSComment([token], - parentStyleSheet=self.parentStyleSheet) - seq.append(comment) - return expected - - def charsetrule(expected, seq, token, tokenizer): - rule = cssutils.css.CSSCharsetRule(parentStyleSheet=self) - rule.cssText = self._tokensupto2(tokenizer, token) - if expected > 0 or len(seq) > 0: - self._log.error( - u'CSSStylesheet: CSSCharsetRule only allowed at beginning of stylesheet.', - token, xml.dom.HierarchyRequestErr) - else: - if rule.wellformed: - seq.append(rule) - new['encoding'] = rule.encoding - return 1 - - def importrule(expected, seq, token, tokenizer): - if new['encoding']: - # set temporarily as used by _resolveImport - # save newEncoding which have been set by resolveImport - self.__newEncoding = new['encoding'] - - rule = cssutils.css.CSSImportRule(parentStyleSheet=self) - rule.cssText = self._tokensupto2(tokenizer, token) - if expected > 1: - self._log.error( - u'CSSStylesheet: CSSImportRule not allowed here.', - token, xml.dom.HierarchyRequestErr) - else: - if rule.wellformed: - #del rule._parentEncoding # remove as later it is read from this sheet! - seq.append(rule) - - try: - # remove as only used temporarily but may not be set at all - del self.__newEncoding - except AttributeError, e: - pass - - return 1 - - def namespacerule(expected, seq, token, tokenizer): - rule = cssutils.css.CSSNamespaceRule( - cssText=self._tokensupto2(tokenizer, token), - parentStyleSheet=self) - if expected > 2: - self._log.error( - u'CSSStylesheet: CSSNamespaceRule not allowed here.', - token, xml.dom.HierarchyRequestErr) - else: - if rule.wellformed: - for i, r in enumerate(seq): - if r.type == r.NAMESPACE_RULE and r.prefix == rule.prefix: - # replace as doubled: - seq[i] = rule - self._log.info( - u'CSSStylesheet: CSSNamespaceRule with same prefix found, replacing: %r' - % r.cssText, - token, neverraise=True) - seq.append(rule) - # temporary namespaces given to CSSStyleRule and @media - new['namespaces'][rule.prefix] = rule.namespaceURI - return 2 - - def variablesrule(expected, seq, token, tokenizer): - rule = cssutils.css.CSSVariablesRule(parentStyleSheet=self) - rule.cssText = self._tokensupto2(tokenizer, token) - if rule.wellformed: - seq.append(rule) - return 2 - - def fontfacerule(expected, seq, token, tokenizer): - rule = cssutils.css.CSSFontFaceRule(parentStyleSheet=self) - rule.cssText = self._tokensupto2(tokenizer, token) - if rule.wellformed: - seq.append(rule) - return 3 - - def mediarule(expected, seq, token, tokenizer): - rule = cssutils.css.CSSMediaRule() - rule.cssText = (self._tokensupto2(tokenizer, token), - new['namespaces']) - if rule.wellformed: - rule._parentStyleSheet=self - for r in rule: - r._parentStyleSheet=self - seq.append(rule) - return 3 - - def pagerule(expected, seq, token, tokenizer): - rule = cssutils.css.CSSPageRule(parentStyleSheet=self) - rule.cssText = self._tokensupto2(tokenizer, token) - if rule.wellformed: - seq.append(rule) - return 3 - - def unknownrule(expected, seq, token, tokenizer): - self._log.warn( - u'CSSStylesheet: Unknown @rule found.', - token, neverraise=True) - rule = cssutils.css.CSSUnknownRule(parentStyleSheet=self) - rule.cssText = self._tokensupto2(tokenizer, token) - if rule.wellformed: - seq.append(rule) - return expected - - def ruleset(expected, seq, token, tokenizer): - rule = cssutils.css.CSSStyleRule() - rule.cssText = (self._tokensupto2(tokenizer, token), - new['namespaces']) - if rule.wellformed: - rule._parentStyleSheet=self - seq.append(rule) - return 3 - - # expected: - # ['CHARSET', 'IMPORT', 'NAMESPACE', ('PAGE', 'MEDIA', ruleset)] - wellformed, expected = self._parse(0, newseq, tokenizer, - {'S': S, - 'COMMENT': COMMENT, - 'CDO': lambda *ignored: None, - 'CDC': lambda *ignored: None, - 'CHARSET_SYM': charsetrule, - 'FONT_FACE_SYM': fontfacerule, - 'IMPORT_SYM': importrule, - 'NAMESPACE_SYM': namespacerule, - 'PAGE_SYM': pagerule, - 'MEDIA_SYM': mediarule, - 'VARIABLES_SYM': variablesrule, - 'ATKEYWORD': unknownrule - }, - default=ruleset) - - if wellformed: - del self._cssRules[:] - for rule in newseq: - self.insertRule(rule, _clean=False) - self._cleanNamespaces() - - cssText = property(_getCssText, _setCssText, - "Textual representation of the stylesheet (a byte string)") - - def _resolveImport(self, url): - """Read (encoding, enctype, decodedContent) from `url` for @import - sheets.""" - try: - # only available during parse of a complete sheet - selfAsParentEncoding = self.__newEncoding - except AttributeError: - try: - # explicit @charset - selfAsParentEncoding = self._cssRules[0].encoding - except (IndexError, AttributeError): - # default not UTF-8 but None! - selfAsParentEncoding = None - - return _readUrl(url, fetcher=self._fetcher, - overrideEncoding=self.__encodingOverride, - parentEncoding=selfAsParentEncoding) - - def _setCssTextWithEncodingOverride(self, cssText, encodingOverride=None, - encoding=None): - """Set `cssText` but use `encodingOverride` to overwrite detected - encoding. This is used by parse and @import during setting of cssText. - - If `encoding` is given use this but do not save it as `encodingOverride`.""" - if encodingOverride: - # encoding during resolving of @import - self.__encodingOverride = encodingOverride - - self.__newEncoding = encoding # save for nested @import - self.cssText = cssText - - if encodingOverride: - # set encodingOverride explicit again! - self.encoding = self.__encodingOverride - # remove? - self.__encodingOverride = None - elif encoding: - # may e.g. be httpEncoding - self.encoding = encoding - - def _setFetcher(self, fetcher=None): - """Set @import URL loader, if None the default is used.""" - self._fetcher = fetcher - - def _getEncoding(self): - """Encoding set in :class:`~cssutils.css.CSSCharsetRule` or if ``None`` - resulting in default ``utf-8`` encoding being used.""" - try: - return self._cssRules[0].encoding - except (IndexError, AttributeError): - return 'utf-8' - - def _setEncoding(self, encoding): - """Set `encoding` of charset rule if present in sheet or insert a new - :class:`~cssutils.css.CSSCharsetRule` with given `encoding`. - If `encoding` is None removes charsetrule if present resulting in - default encoding of utf-8. - """ - try: - rule = self._cssRules[0] - except IndexError: - rule = None - if rule and rule.CHARSET_RULE == rule.type: - if encoding: - rule.encoding = encoding - else: - self.deleteRule(0) - elif encoding: - self.insertRule(cssutils.css.CSSCharsetRule(encoding=encoding), 0) - - encoding = property(_getEncoding, _setEncoding, - "(cssutils) Reflect encoding of an @charset rule or 'utf-8' " - "(default) if set to ``None``") - - namespaces = property(lambda self: self._namespaces, - doc="All Namespaces used in this CSSStyleSheet.") - - def add(self, rule): - """Add `rule` to style sheet at appropriate position. - Same as ``insertRule(rule, inOrder=True)``. - """ - return self.insertRule(rule, index=None, inOrder=True) - - def deleteRule(self, index): - """Delete rule at `index` from the style sheet. - - :param index: - The `index` of the rule to be removed from the StyleSheet's rule - list. For an `index` < 0 **no** :exc:`~xml.dom.IndexSizeErr` is - raised but rules for normal Python lists are used. E.g. - ``deleteRule(-1)`` removes the last rule in cssRules. - - `index` may also be a CSSRule object which will then be removed - from the StyleSheet. - - :exceptions: - - :exc:`~xml.dom.IndexSizeErr`: - Raised if the specified index does not correspond to a rule in - the style sheet's rule list. - - :exc:`~xml.dom.NamespaceErr`: - Raised if removing this rule would result in an invalid StyleSheet - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if this style sheet is readonly. - """ - self._checkReadonly() - - if isinstance(index, CSSRule): - for i, r in enumerate(self.cssRules): - if index == r: - index = i - break - else: - raise xml.dom.IndexSizeErr(u"CSSStyleSheet: Not a rule in" - " this sheets'a cssRules list: %s" - % index) - - try: - rule = self._cssRules[index] - except IndexError: - raise xml.dom.IndexSizeErr( - u'CSSStyleSheet: %s is not a valid index in the rulelist of length %i' % ( - index, self._cssRules.length)) - else: - if rule.type == rule.NAMESPACE_RULE: - # check all namespacerules if used - uris = [r.namespaceURI for r in self if r.type == r.NAMESPACE_RULE] - useduris = self._getUsedURIs() - if rule.namespaceURI in useduris and\ - uris.count(rule.namespaceURI) == 1: - raise xml.dom.NoModificationAllowedErr( - u'CSSStyleSheet: NamespaceURI defined in this rule is used, cannot remove.') - return - - rule._parentStyleSheet = None # detach - del self._cssRules[index] # delete from StyleSheet - - def insertRule(self, rule, index=None, inOrder=False, _clean=True): - """ - Used to insert a new rule into the style sheet. The new rule now - becomes part of the cascade. - - :param rule: - a parsable DOMString, in cssutils also a - :class:`~cssutils.css.CSSRule` or :class:`~cssutils.css.CSSRuleList` - :param index: - of the rule before the new rule will be inserted. - If the specified `index` is equal to the length of the - StyleSheet's rule collection, the rule will be added to the end - of the style sheet. - If `index` is not given or ``None`` rule will be appended to rule - list. - :param inOrder: - if ``True`` the rule will be put to a proper location while - ignoring `index` and without raising :exc:`~xml.dom.HierarchyRequestErr`. - The resulting index is returned nevertheless. - :returns: The index within the style sheet's rule collection - :Exceptions: - - :exc:`~xml.dom.HierarchyRequestErr`: - Raised if the rule cannot be inserted at the specified `index` - e.g. if an @import rule is inserted after a standard rule set - or other at-rule. - - :exc:`~xml.dom.IndexSizeErr`: - Raised if the specified `index` is not a valid insertion point. - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if this style sheet is readonly. - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified rule has a syntax error and is - unparsable. - """ - self._checkReadonly() - - # check position - if index is None: - index = len(self._cssRules) - elif index < 0 or index > self._cssRules.length: - raise xml.dom.IndexSizeErr( - u'CSSStyleSheet: Invalid index %s for CSSRuleList with a length of %s.' % ( - index, self._cssRules.length)) - return - - if isinstance(rule, basestring): - # init a temp sheet which has the same properties as self - tempsheet = CSSStyleSheet(href=self.href, - media=self.media, - title=self.title, - parentStyleSheet=self.parentStyleSheet, - ownerRule=self.ownerRule) - tempsheet._ownerNode = self.ownerNode - tempsheet._fetcher = self._fetcher - - # prepend encoding if in this sheet to be able to use it in - # @import rules encoding resolution - # do not add if new rule startswith "@charset" (which is exact!) - if not rule.startswith(u'@charset') and (self._cssRules and - self._cssRules[0].type == self._cssRules[0].CHARSET_RULE): - # rule 0 is @charset! - newrulescount, newruleindex = 2, 1 - rule = self._cssRules[0].cssText + rule - else: - newrulescount, newruleindex = 1, 0 - - # parse the new rule(s) - tempsheet.cssText = (rule, self._namespaces) - - if len(tempsheet.cssRules) != newrulescount or (not isinstance( - tempsheet.cssRules[newruleindex], cssutils.css.CSSRule)): - self._log.error(u'CSSStyleSheet: Not a CSSRule: %s' % rule) - return - rule = tempsheet.cssRules[newruleindex] - rule._parentStyleSheet = None # done later? - - # TODO: - #tempsheet._namespaces = self._namespaces - - elif isinstance(rule, cssutils.css.CSSRuleList): - # insert all rules - for i, r in enumerate(rule): - self.insertRule(r, index + i) - return index - - if not rule.wellformed: - self._log.error(u'CSSStyleSheet: Invalid rules cannot be added.') - return - - # CHECK HIERARCHY - # @charset - if rule.type == rule.CHARSET_RULE: - if inOrder: - index = 0 - # always first and only - if (self._cssRules - and self._cssRules[0].type == rule.CHARSET_RULE): - self._cssRules[0].encoding = rule.encoding - else: - self._cssRules.insert(0, rule) - elif index != 0 or (self._cssRules and - self._cssRules[0].type == rule.CHARSET_RULE): - self._log.error( - u'CSSStylesheet: @charset only allowed once at the' - ' beginning of a stylesheet.', - error=xml.dom.HierarchyRequestErr) - return - else: - self._cssRules.insert(index, rule) - - # @unknown or comment - elif rule.type in (rule.UNKNOWN_RULE, rule.COMMENT) and not inOrder: - if index == 0 and self._cssRules and\ - self._cssRules[0].type == rule.CHARSET_RULE: - self._log.error( - u'CSSStylesheet: @charset must be the first rule.', - error=xml.dom.HierarchyRequestErr) - return - else: - self._cssRules.insert(index, rule) - - # @import - elif rule.type == rule.IMPORT_RULE: - if inOrder: - # automatic order - if rule.type in (r.type for r in self): - # find last of this type - for i, r in enumerate(reversed(self._cssRules)): - if r.type == rule.type: - index = len(self._cssRules) - i - break - else: - # find first point to insert - if self._cssRules and self._cssRules[0].type in (rule.CHARSET_RULE, - rule.COMMENT): - index = 1 - else: - index = 0 - else: - # after @charset - if index == 0 and self._cssRules and\ - self._cssRules[0].type == rule.CHARSET_RULE: - self._log.error( - u'CSSStylesheet: Found @charset at index 0.', - error=xml.dom.HierarchyRequestErr) - return - # before @namespace @variables @page @font-face @media stylerule - for r in self._cssRules[:index]: - if r.type in (r.NAMESPACE_RULE, - r.VARIABLES_RULE, - r.MEDIA_RULE, - r.PAGE_RULE, - r.STYLE_RULE, - r.FONT_FACE_RULE): - self._log.error( - u'CSSStylesheet: Cannot insert @import here,' - ' found @namespace, @variables, @media, @page or' - ' CSSStyleRule before index %s.' % - index, - error=xml.dom.HierarchyRequestErr) - return - self._cssRules.insert(index, rule) - - # @namespace - elif rule.type == rule.NAMESPACE_RULE: - if inOrder: - if rule.type in (r.type for r in self): - # find last of this type - for i, r in enumerate(reversed(self._cssRules)): - if r.type == rule.type: - index = len(self._cssRules) - i - break - else: - # find first point to insert - for i, r in enumerate(self._cssRules): - if r.type in (r.VARIABLES_RULE, r.MEDIA_RULE, - r.PAGE_RULE, r.STYLE_RULE, - r.FONT_FACE_RULE, r.UNKNOWN_RULE, - r.COMMENT): - index = i # before these - break - else: - # after @charset and @import - for r in self._cssRules[index:]: - if r.type in (r.CHARSET_RULE, r.IMPORT_RULE): - self._log.error( - u'CSSStylesheet: Cannot insert @namespace here,' - ' found @charset or @import after index %s.' % - index, - error=xml.dom.HierarchyRequestErr) - return - # before @variables @media @page @font-face and stylerule - for r in self._cssRules[:index]: - if r.type in (r.VARIABLES_RULE, - r.MEDIA_RULE, - r.PAGE_RULE, - r.STYLE_RULE, - r.FONT_FACE_RULE): - self._log.error( - u'CSSStylesheet: Cannot insert @namespace here,' - ' found @variables, @media, @page or CSSStyleRule' - ' before index %s.' % - index, - error=xml.dom.HierarchyRequestErr) - return - - if not (rule.prefix in self.namespaces and - self.namespaces[rule.prefix] == rule.namespaceURI): - # no doublettes - self._cssRules.insert(index, rule) - if _clean: - self._cleanNamespaces() - - - # @variables - elif rule.type == rule.VARIABLES_RULE: - if inOrder: - if rule.type in (r.type for r in self): - # find last of this type - for i, r in enumerate(reversed(self._cssRules)): - if r.type == rule.type: - index = len(self._cssRules) - i - break - else: - # find first point to insert - for i, r in enumerate(self._cssRules): - if r.type in (r.MEDIA_RULE, - r.PAGE_RULE, - r.STYLE_RULE, - r.FONT_FACE_RULE, - r.UNKNOWN_RULE, - r.COMMENT): - index = i # before these - break - else: - # after @charset @import @namespace - for r in self._cssRules[index:]: - if r.type in (r.CHARSET_RULE, - r.IMPORT_RULE, - r.NAMESPACE_RULE): - self._log.error( - u'CSSStylesheet: Cannot insert @variables here,' - ' found @charset, @import or @namespace after' - ' index %s.' % - index, - error=xml.dom.HierarchyRequestErr) - return - # before @media @page @font-face and stylerule - for r in self._cssRules[:index]: - if r.type in (r.MEDIA_RULE, - r.PAGE_RULE, - r.STYLE_RULE, - r.FONT_FACE_RULE): - self._log.error( - u'CSSStylesheet: Cannot insert @variables here,' - ' found @media, @page or CSSStyleRule' - ' before index %s.' % - index, - error=xml.dom.HierarchyRequestErr) - return - - self._cssRules.insert(index, rule) - - # all other where order is not important - else: - if inOrder: - # simply add to end as no specific order - self._cssRules.append(rule) - index = len(self._cssRules) - 1 - else: - for r in self._cssRules[index:]: - if r.type in (r.CHARSET_RULE, r.IMPORT_RULE, r.NAMESPACE_RULE): - self._log.error( - u'CSSStylesheet: Cannot insert rule here, found @charset, @import or @namespace before index %s.' % - index, - error=xml.dom.HierarchyRequestErr) - return - self._cssRules.insert(index, rule) - - # post settings, TODO: for other rules which contain @rules - rule._parentStyleSheet = self - if rule.MEDIA_RULE == rule.type: - for r in rule: - r._parentStyleSheet = self - # ? - elif rule.IMPORT_RULE == rule.type: - rule.href = rule.href # try to reload stylesheet - - return index - - ownerRule = property(lambda self: self._ownerRule, - doc="A ref to an @import rule if it is imported, else ``None``.") - - def setSerializer(self, cssserializer): - """Set the cssutils global Serializer used for all output.""" - if isinstance(cssserializer, cssutils.CSSSerializer): - cssutils.ser = cssserializer - else: - raise ValueError(u'Serializer must be an instance of cssutils.CSSSerializer.') - - def setSerializerPref(self, pref, value): - """Set a Preference of CSSSerializer used for output. - See :class:`cssutils.serialize.Preferences` for possible - preferences to be set. - """ - cssutils.ser.prefs.__setattr__(pref, value) diff --git a/src/cssutils/css/cssunknownrule.py b/src/cssutils/css/cssunknownrule.py deleted file mode 100644 index 5659b19a9b..0000000000 --- a/src/cssutils/css/cssunknownrule.py +++ /dev/null @@ -1,208 +0,0 @@ -"""CSSUnknownRule implements DOM Level 2 CSS CSSUnknownRule.""" -__all__ = ['CSSUnknownRule'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: cssunknownrule.py 1897 2009-12-17 22:09:06Z cthedot $' - -import cssrule -import cssutils -import xml.dom - -class CSSUnknownRule(cssrule.CSSRule): - """ - Represents an at-rule not supported by this user agent, so in - effect all other at-rules not defined in cssutils. - - Format:: - - @xxx until ';' or block {...} - """ - def __init__(self, cssText=u'', parentRule=None, - parentStyleSheet=None, readonly=False): - """ - :param cssText: - of type string - """ - super(CSSUnknownRule, self).__init__(parentRule=parentRule, - parentStyleSheet=parentStyleSheet) - self._atkeyword = None - if cssText: - self.cssText = cssText - - self._readonly = readonly - - def __repr__(self): - return "cssutils.css.%s(cssText=%r)" % ( - self.__class__.__name__, self.cssText) - - def __str__(self): - return "" % ( - self.__class__.__name__, self.cssText, id(self)) - - def _getCssText(self): - """Return serialized property cssText.""" - return cssutils.ser.do_CSSUnknownRule(self) - - def _setCssText(self, cssText): - """ - :exceptions: - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified CSS string value has a syntax error and - is unparsable. - - :exc:`~xml.dom.InvalidModificationErr`: - Raised if the specified CSS string value represents a different - type of rule than the current one. - - :exc:`~xml.dom.HierarchyRequestErr`: - Raised if the rule cannot be inserted at this point in the - style sheet. - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if the rule is readonly. - """ - super(CSSUnknownRule, self)._setCssText(cssText) - tokenizer = self._tokenize2(cssText) - attoken = self._nexttoken(tokenizer, None) - if not attoken or self._type(attoken) != self._prods.ATKEYWORD: - self._log.error(u'CSSUnknownRule: No CSSUnknownRule found: %s' % - self._valuestr(cssText), - error=xml.dom.InvalidModificationErr) - else: - # for closures: must be a mutable - new = {'nesting': [], # {} [] or () - 'wellformed': True - } - - def CHAR(expected, seq, token, tokenizer=None): - type_, val, line, col = token - if expected != 'EOF': - if val in u'{[(': - new['nesting'].append(val) - elif val in u'}])': - opening = {u'}': u'{', u']': u'[', u')': u'('}[val] - try: - if new['nesting'][-1] == opening: - new['nesting'].pop() - else: - raise IndexError() - except IndexError: - new['wellformed'] = False - self._log.error(u'CSSUnknownRule: Wrong nesting of {, [ or (.', - token=token) - - if val in u'};' and not new['nesting']: - expected = 'EOF' - - seq.append(val, type_, line=line, col=col) - return expected - else: - new['wellformed'] = False - self._log.error(u'CSSUnknownRule: Expected end of rule.', - token=token) - return expected - - def FUNCTION(expected, seq, token, tokenizer=None): - # handled as opening ( - type_, val, line, col = token - val = self._tokenvalue(token) - if expected != 'EOF': - new['nesting'].append(u'(') - seq.append(val, type_, line=line, col=col) - return expected - else: - new['wellformed'] = False - self._log.error(u'CSSUnknownRule: Expected end of rule.', - token=token) - return expected - - def EOF(expected, seq, token, tokenizer=None): - "close all blocks and return 'EOF'" - for x in reversed(new['nesting']): - closing = {u'{': u'}', u'[': u']', u'(': u')'}[x] - seq.append(closing, closing) - new['nesting'] = [] - return 'EOF' - - def INVALID(expected, seq, token, tokenizer=None): - # makes rule invalid - self._log.error(u'CSSUnknownRule: Bad syntax.', - token=token, error=xml.dom.SyntaxErr) - new['wellformed'] = False - return expected - - def STRING(expected, seq, token, tokenizer=None): - type_, val, line, col = token - val = self._stringtokenvalue(token) - if expected != 'EOF': - seq.append(val, type_, line=line, col=col) - return expected - else: - new['wellformed'] = False - self._log.error(u'CSSUnknownRule: Expected end of rule.', - token=token) - return expected - - def URI(expected, seq, token, tokenizer=None): - type_, val, line, col = token - val = self._uritokenvalue(token) - if expected != 'EOF': - seq.append(val, type_, line=line, col=col) - return expected - else: - new['wellformed'] = False - self._log.error(u'CSSUnknownRule: Expected end of rule.', - token=token) - return expected - - def default(expected, seq, token, tokenizer=None): - type_, val, line, col = token - if expected != 'EOF': - seq.append(val, type_, line=line, col=col) - return expected - else: - new['wellformed'] = False - self._log.error(u'CSSUnknownRule: Expected end of rule.', - token=token) - return expected - - # unknown : ATKEYWORD S* ... ; | } - newseq = self._tempSeq() - wellformed, expected = self._parse(expected=None, - seq=newseq, tokenizer=tokenizer, - productions={'CHAR': CHAR, - 'EOF': EOF, - 'FUNCTION': FUNCTION, - 'INVALID': INVALID, - 'STRING': STRING, - 'URI': URI, - 'S': default # overwrite default default! - }, - default=default, - new=new) - - # wellformed set by parse - wellformed = wellformed and new['wellformed'] - - # post conditions - if expected != 'EOF': - wellformed = False - self._log.error( - u'CSSUnknownRule: No ending ";" or "}" found: %r' % - self._valuestr(cssText)) - elif new['nesting']: - wellformed = False - self._log.error( - u'CSSUnknownRule: Unclosed "{", "[" or "(": %r' % - self._valuestr(cssText)) - - # set all - if wellformed: - self.atkeyword = self._tokenvalue(attoken) - self._setSeq(newseq) - - cssText = property(fget=_getCssText, fset=_setCssText, - doc="(DOM) The parsable textual representation.") - - type = property(lambda self: self.UNKNOWN_RULE, - doc="The type of this rule, as defined by a CSSRule " - "type constant.") - - wellformed = property(lambda self: bool(self.atkeyword)) - \ No newline at end of file diff --git a/src/cssutils/css/cssvalue.py b/src/cssutils/css/cssvalue.py deleted file mode 100644 index 4b045e78dd..0000000000 --- a/src/cssutils/css/cssvalue.py +++ /dev/null @@ -1,1137 +0,0 @@ -"""CSSValue related classes - -- CSSValue implements DOM Level 2 CSS CSSValue -- CSSPrimitiveValue implements DOM Level 2 CSS CSSPrimitiveValue -- CSSValueList implements DOM Level 2 CSS CSSValueList - -""" -__all__ = ['CSSValue', 'CSSPrimitiveValue', 'CSSValueList', - 'CSSVariable', 'RGBColor'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: cssvalue.py 1909 2010-01-04 19:28:52Z cthedot $' - -from cssutils.prodparser import * -import cssutils -import cssutils.helper -import re -import xml.dom - - -class CSSValue(cssutils.util._NewBase): - """The CSSValue interface represents a simple or a complex value. - A CSSValue object only occurs in a context of a CSS property. - """ - - # The value is inherited and the cssText contains "inherit". - CSS_INHERIT = 0 - # The value is a CSSPrimitiveValue. - CSS_PRIMITIVE_VALUE = 1 - # The value is a CSSValueList. - CSS_VALUE_LIST = 2 - # The value is a custom value. - CSS_CUSTOM = 3 - # The value is a CSSVariable. - CSS_VARIABLE = 4 - - _typestrings = {0: 'CSS_INHERIT' , - 1: 'CSS_PRIMITIVE_VALUE', - 2: 'CSS_VALUE_LIST', - 3: 'CSS_CUSTOM', - 4: 'CSS_VARIABLE'} - - def __init__(self, cssText=None, parent=None, readonly=False): - """ - :param cssText: - the parsable cssText of the value - :param readonly: - defaults to False - """ - super(CSSValue, self).__init__() - - self._cssValueType = None - self.wellformed = False - self.parent = parent - - if cssText is not None: # may be 0 - if type(cssText) in (int, float): - cssText = unicode(cssText) # if it is a number - self.cssText = cssText - - self._readonly = readonly - - def __repr__(self): - return "cssutils.css.%s(%r)" % ( - self.__class__.__name__, self.cssText) - - def __str__(self): - return "" % ( - self.__class__.__name__, self.cssValueTypeString, - self.cssText, id(self)) - - def _setCssText(self, cssText): - """ - Format:: - - unary_operator - : '-' | '+' - ; - operator - : '/' S* | ',' S* | /* empty */ - ; - expr - : term [ operator term ]* - ; - term - : unary_operator? - [ NUMBER S* | PERCENTAGE S* | LENGTH S* | EMS S* | EXS S* | ANGLE S* | - TIME S* | FREQ S* ] - | STRING S* | IDENT S* | URI S* | hexcolor | function - | UNICODE-RANGE S* - ; - function - : FUNCTION S* expr ')' S* - ; - /* - * There is a constraint on the color that it must - * have either 3 or 6 hex-digits (i.e., [0-9a-fA-F]) - * after the "#"; e.g., "#000" is OK, but "#abcd" is not. - */ - hexcolor - : HASH S* - ; - - :exceptions: - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified CSS string value has a syntax error - (according to the attached property) or is unparsable. - - :exc:`~xml.dom.InvalidModificationErr`: - TODO: Raised if the specified CSS string value represents a different - type of values than the values allowed by the CSS property. - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if this value is readonly. - """ - self._checkReadonly() - - # used as operator is , / or S - nextSor = u',/' - - term = Choice(Sequence(PreDef.unary(), - Choice(PreDef.number(nextSor=nextSor), - PreDef.percentage(nextSor=nextSor), - PreDef.dimension(nextSor=nextSor))), - PreDef.string(nextSor=nextSor), - PreDef.ident(nextSor=nextSor), - PreDef.uri(nextSor=nextSor), - PreDef.hexcolor(nextSor=nextSor), - PreDef.unicode_range(nextSor=nextSor), - # special case IE only expression - Prod(name='expression', - match=lambda t, v: t == self._prods.FUNCTION and ( - cssutils.helper.normalize(v) in (u'expression(', - u'alpha(') or - v.startswith(u'progid:DXImageTransform.Microsoft.') - ), - nextSor=nextSor, - toSeq=lambda t, tokens: (ExpressionValue._functionName, - ExpressionValue(cssutils.helper.pushtoken(t, - tokens))) - ), - # CSS Variable var( - PreDef.variable(nextSor=nextSor, - toSeq=lambda t, tokens: ('CSSVariable', - CSSVariable( - cssutils.helper.pushtoken(t, tokens)) - ) - ), - # other functions like rgb( etc - PreDef.function(nextSor=nextSor, - toSeq=lambda t, tokens: ('FUNCTION', - CSSFunction( - cssutils.helper.pushtoken(t, tokens)) - ) - ) - ) - operator = Choice(PreDef.S(), - PreDef.char('comma', ',', - toSeq=lambda t, tokens: ('operator', t[1])), - PreDef.char('slash', '/', - toSeq=lambda t, tokens: ('operator', t[1])), - optional=True) - # CSSValue PRODUCTIONS - valueprods = Sequence(term, - # TODO: only when setting via other class - PreDef.char('END', ';', - stopAndKeep=True, - optional=True), - Sequence(operator, # mayEnd this Sequence if whitespace - term, - PreDef.char('END', ';', - stopAndKeep=True, - optional=True), - minmax=lambda: (0, None))) - # parse - wellformed, seq, store, notused = ProdParser().parse(cssText, - u'CSSValue', - valueprods, - keepS=True) - if wellformed: - # - count actual values and set firstvalue which is used later on - # - combine comma separated list, e.g. font-family to a single item - # - remove S which should be an operator but is no needed - count, firstvalue = 0, () - newseq = self._tempSeq() - i, end = 0, len(seq) - while i < end: - item = seq[i] - if item.type == self._prods.S: - pass - - elif (item.value, item.type) == (u',', 'operator'): - # , separared counts as a single STRING for now - # URI or STRING value might be a single CHAR too! - newseq.appendItem(item) - count -= 1 - if firstvalue: - # list of IDENTs is handled as STRING! - if firstvalue[1] == self._prods.IDENT: - firstvalue = firstvalue[0], 'STRING' - - elif item.value == u'/': - # / separated items count as one - newseq.appendItem(item) - - elif item.value == u'-' or item.value == u'+': - # combine +- and following number or other - i += 1 - try: - next = seq[i] - except IndexError: - firstvalue = () # raised later - break - - newval = item.value + next.value - newseq.append(newval, next.type, - item.line, item.col) - if not firstvalue: - firstvalue = (newval, next.type) - count += 1 - - elif item.type != cssutils.css.CSSComment: - newseq.appendItem(item) - if not firstvalue: - firstvalue = (item.value, item.type) - count += 1 - - else: - newseq.appendItem(item) - - i += 1 - - if not firstvalue: - self._log.error( - u'CSSValue: Unknown syntax or no value: %r.' % - self._valuestr(cssText)) - else: - # ok and set - self._setSeq(newseq) - self.wellformed = wellformed - - if hasattr(self, '_value'): - # only in case of CSSPrimitiveValue, else remove! - del self._value - - if count == 1: - # inherit, primitive or variable - if isinstance(firstvalue[0], basestring) and\ - u'inherit' == cssutils.helper.normalize(firstvalue[0]): - self.__class__ = CSSValue - self._cssValueType = CSSValue.CSS_INHERIT - elif 'CSSVariable' == firstvalue[1]: - self.__class__ = CSSVariable - self._value = firstvalue - # TODO: remove major hack! - self._name = firstvalue[0]._name - else: - self.__class__ = CSSPrimitiveValue - self._value = firstvalue - - elif count > 1: - # valuelist - self.__class__ = CSSValueList - - # change items in list to specific type (primitive etc) - newseq = self._tempSeq() - commalist = [] - nexttocommalist = False - - def itemValue(item): - "Reserialized simple item.value" - if self._prods.STRING == item.type: - return cssutils.helper.string(item.value) - elif self._prods.URI == item.type: - return cssutils.helper.uri(item.value) - elif self._prods.FUNCTION == item.type or\ - 'CSSVariable' == item.type: - return item.value.cssText - else: - return item.value - - def saveifcommalist(commalist, newseq): - """ - saves items in commalist to seq and items - if anything in there - """ - if commalist: - newseq.replace(-1, - CSSPrimitiveValue(cssText=u''.join( - commalist)), - CSSPrimitiveValue, - newseq[-1].line, - newseq[-1].col) - del commalist[:] - - for i, item in enumerate(self._seq): - if item.type in (self._prods.DIMENSION, - self._prods.FUNCTION, - self._prods.HASH, - self._prods.IDENT, - self._prods.NUMBER, - self._prods.PERCENTAGE, - self._prods.STRING, - self._prods.URI, - self._prods.UNICODE_RANGE, - 'CSSVariable'): - if nexttocommalist: - # wait until complete - commalist.append(itemValue(item)) - else: - saveifcommalist(commalist, newseq) - # append new item - if hasattr(item.value, 'cssText'): - newseq.append(item.value, - item.value.__class__, - item.line, item.col) - - else: - newseq.append(CSSPrimitiveValue(itemValue(item)), - CSSPrimitiveValue, - item.line, item.col) - - nexttocommalist = False - - elif u',' == item.value: - if not commalist: - # save last item to commalist - commalist.append(itemValue(self._seq[i - 1])) - commalist.append(u',') - nexttocommalist = True - - else: - if nexttocommalist: - commalist.append(item.value.cssText) - else: - newseq.appendItem(item) - - saveifcommalist(commalist, newseq) - self._setSeq(newseq) - - else: - # should not happen... - self.__class__ = CSSValue - self._cssValueType = CSSValue.CSS_CUSTOM - - cssText = property(lambda self: cssutils.ser.do_css_CSSValue(self), - _setCssText, - doc="A string representation of the current value.") - - cssValueType = property(lambda self: self._cssValueType, - doc="A (readonly) code defining the type of the value.") - - cssValueTypeString = property( - lambda self: CSSValue._typestrings.get(self.cssValueType, None), - doc="(readonly) Name of cssValueType.") - - -class CSSPrimitiveValue(CSSValue): - """Represents a single CSS Value. May be used to determine the value of a - specific style property currently set in a block or to set a specific - style property explicitly within the block. Might be obtained from the - getPropertyCSSValue method of CSSStyleDeclaration. - - Conversions are allowed between absolute values (from millimeters to - centimeters, from degrees to radians, and so on) but not between - relative values. (For example, a pixel value cannot be converted to a - centimeter value.) Percentage values can't be converted since they are - relative to the parent value (or another property value). There is one - exception for color percentage values: since a color percentage value - is relative to the range 0-255, a color percentage value can be - converted to a number; (see also the RGBColor interface). - """ - # constant: type of this CSSValue class - cssValueType = CSSValue.CSS_PRIMITIVE_VALUE - - __types = cssutils.cssproductions.CSSProductions - - # An integer indicating which type of unit applies to the value. - CSS_UNKNOWN = 0 # only obtainable via cssText - CSS_NUMBER = 1 - CSS_PERCENTAGE = 2 - CSS_EMS = 3 - CSS_EXS = 4 - CSS_PX = 5 - CSS_CM = 6 - CSS_MM = 7 - CSS_IN = 8 - CSS_PT = 9 - CSS_PC = 10 - CSS_DEG = 11 - CSS_RAD = 12 - CSS_GRAD = 13 - CSS_MS = 14 - CSS_S = 15 - CSS_HZ = 16 - CSS_KHZ = 17 - CSS_DIMENSION = 18 - CSS_STRING = 19 - CSS_URI = 20 - CSS_IDENT = 21 - CSS_ATTR = 22 - CSS_COUNTER = 23 - CSS_RECT = 24 - CSS_RGBCOLOR = 25 - # NOT OFFICIAL: - CSS_RGBACOLOR = 26 - CSS_UNICODE_RANGE = 27 - - _floattypes = (CSS_NUMBER, CSS_PERCENTAGE, CSS_EMS, CSS_EXS, - CSS_PX, CSS_CM, CSS_MM, CSS_IN, CSS_PT, CSS_PC, - CSS_DEG, CSS_RAD, CSS_GRAD, CSS_MS, CSS_S, - CSS_HZ, CSS_KHZ, CSS_DIMENSION) - _stringtypes = (CSS_ATTR, CSS_IDENT, CSS_STRING, CSS_URI) - _countertypes = (CSS_COUNTER,) - _recttypes = (CSS_RECT,) - _rbgtypes = (CSS_RGBCOLOR, CSS_RGBACOLOR) - _lengthtypes = (CSS_NUMBER, CSS_EMS, CSS_EXS, - CSS_PX, CSS_CM, CSS_MM, CSS_IN, CSS_PT, CSS_PC) - - # oldtype: newType: converterfunc - _converter = { - # cm <-> mm <-> in, 1 inch is equal to 2.54 centimeters. - # pt <-> pc, the points used by CSS 2.1 are equal to 1/72nd of an inch. - # pc: picas - 1 pica is equal to 12 points - (CSS_CM, CSS_MM): lambda x: x * 10, - (CSS_MM, CSS_CM): lambda x: x / 10, - - (CSS_PT, CSS_PC): lambda x: x * 12, - (CSS_PC, CSS_PT): lambda x: x / 12, - - (CSS_CM, CSS_IN): lambda x: x / 2.54, - (CSS_IN, CSS_CM): lambda x: x * 2.54, - (CSS_MM, CSS_IN): lambda x: x / 25.4, - (CSS_IN, CSS_MM): lambda x: x * 25.4, - - (CSS_IN, CSS_PT): lambda x: x / 72, - (CSS_PT, CSS_IN): lambda x: x * 72, - (CSS_CM, CSS_PT): lambda x: x / 2.54 / 72, - (CSS_PT, CSS_CM): lambda x: x * 72 * 2.54, - (CSS_MM, CSS_PT): lambda x: x / 25.4 / 72, - (CSS_PT, CSS_MM): lambda x: x * 72 * 25.4, - - (CSS_IN, CSS_PC): lambda x: x / 72 / 12, - (CSS_PC, CSS_IN): lambda x: x * 12 * 72, - (CSS_CM, CSS_PC): lambda x: x / 2.54 / 72 / 12, - (CSS_PC, CSS_CM): lambda x: x * 12 * 72 * 2.54, - (CSS_MM, CSS_PC): lambda x: x / 25.4 / 72 / 12, - (CSS_PC, CSS_MM): lambda x: x * 12 * 72 * 25.4, - - # hz <-> khz - (CSS_KHZ, CSS_HZ): lambda x: x * 1000, - (CSS_HZ, CSS_KHZ): lambda x: x / 1000, - # s <-> ms - (CSS_S, CSS_MS): lambda x: x * 1000, - (CSS_MS, CSS_S): lambda x: x / 1000 - - # TODO: convert deg <-> rad <-> grad - } - - def __init__(self, cssText=None, readonly=False): - """See CSSPrimitiveValue.__init__()""" - super(CSSPrimitiveValue, self).__init__(cssText=cssText, - readonly=readonly) - - def __str__(self): - return "" % ( - self.__class__.__name__, self.primitiveTypeString, - self.cssText, id(self)) - - _unitnames = ['CSS_UNKNOWN', - 'CSS_NUMBER', 'CSS_PERCENTAGE', - 'CSS_EMS', 'CSS_EXS', - 'CSS_PX', - 'CSS_CM', 'CSS_MM', - 'CSS_IN', - 'CSS_PT', 'CSS_PC', - 'CSS_DEG', 'CSS_RAD', 'CSS_GRAD', - 'CSS_MS', 'CSS_S', - 'CSS_HZ', 'CSS_KHZ', - 'CSS_DIMENSION', - 'CSS_STRING', 'CSS_URI', 'CSS_IDENT', - 'CSS_ATTR', 'CSS_COUNTER', 'CSS_RECT', - 'CSS_RGBCOLOR', 'CSS_RGBACOLOR', - 'CSS_UNICODE_RANGE' - ] - - _reNumDim = re.compile(ur'([+-]?\d*\.\d+|[+-]?\d+)(.*)$', re.I | re.U | re.X) - - def _unitDIMENSION(value): - """Check val for dimension name.""" - units = {'em': 'CSS_EMS', 'ex': 'CSS_EXS', - 'px': 'CSS_PX', - 'cm': 'CSS_CM', 'mm': 'CSS_MM', - 'in': 'CSS_IN', - 'pt': 'CSS_PT', 'pc': 'CSS_PC', - 'deg': 'CSS_DEG', 'rad': 'CSS_RAD', 'grad': 'CSS_GRAD', - 'ms': 'CSS_MS', 's': 'CSS_S', - 'hz': 'CSS_HZ', 'khz': 'CSS_KHZ' - } - val, dim = CSSPrimitiveValue._reNumDim.findall(cssutils.helper.normalize(value))[0] - return units.get(dim, 'CSS_DIMENSION') - - def _unitFUNCTION(value): - """Check val for function name.""" - units = {'attr(': 'CSS_ATTR', - 'counter(': 'CSS_COUNTER', - 'rect(': 'CSS_RECT', - 'rgb(': 'CSS_RGBCOLOR', - 'rgba(': 'CSS_RGBACOLOR', - } - return units.get(re.findall(ur'^(.*?\()', - cssutils.helper.normalize(value.cssText), - re.U)[0], - 'CSS_UNKNOWN') - - __unitbytype = { - __types.NUMBER: 'CSS_NUMBER', - __types.PERCENTAGE: 'CSS_PERCENTAGE', - __types.STRING: 'CSS_STRING', - __types.UNICODE_RANGE: 'CSS_UNICODE_RANGE', - __types.URI: 'CSS_URI', - __types.IDENT: 'CSS_IDENT', - __types.HASH: 'CSS_RGBCOLOR', - __types.DIMENSION: _unitDIMENSION, - __types.FUNCTION: _unitFUNCTION - } - - def __set_primitiveType(self): - """primitiveType is readonly but is set lazy if accessed""" - # TODO: check unary and font-family STRING a, b, "c" - val, type_ = self._value - # try get by type_ - pt = self.__unitbytype.get(type_, 'CSS_UNKNOWN') - if callable(pt): - # multiple options, check value too - pt = pt(val) - self._primitiveType = getattr(self, pt) - - def _getPrimitiveType(self): - if not hasattr(self, '_primitivetype'): - self.__set_primitiveType() - return self._primitiveType - - primitiveType = property(_getPrimitiveType, - doc="(readonly) The type of the value as defined " - "by the constants in this class.") - - def _getPrimitiveTypeString(self): - return self._unitnames[self.primitiveType] - - primitiveTypeString = property(_getPrimitiveTypeString, - doc="Name of primitive type of this value.") - - def _getCSSPrimitiveTypeString(self, type): - "get TypeString by given type which may be unknown, used by setters" - try: - return self._unitnames[type] - except (IndexError, TypeError): - return u'%r (UNKNOWN TYPE)' % type - - def _getNumDim(self, value=None): - "Split self._value in numerical and dimension part." - if value is None: - value = cssutils.helper.normalize(self._value[0]) - - try: - val, dim = CSSPrimitiveValue._reNumDim.findall(value)[0] - except IndexError: - val, dim = value, u'' - try: - val = float(val) - if val == int(val): - val = int(val) - except ValueError: - raise xml.dom.InvalidAccessErr( - u'CSSPrimitiveValue: No float value %r' % self._value[0]) - - return val, dim - - def getFloatValue(self, unitType=None): - """(DOM) This method is used to get a float value in a - specified unit. If this CSS value doesn't contain a float value - or can't be converted into the specified unit, a DOMException - is raised. - - :param unitType: - to get the float value. The unit code can only be a float unit type - (i.e. CSS_NUMBER, CSS_PERCENTAGE, CSS_EMS, CSS_EXS, CSS_PX, CSS_CM, - CSS_MM, CSS_IN, CSS_PT, CSS_PC, CSS_DEG, CSS_RAD, CSS_GRAD, CSS_MS, - CSS_S, CSS_HZ, CSS_KHZ, CSS_DIMENSION) or None in which case - the current dimension is used. - - :returns: - not necessarily a float but some cases just an integer - e.g. if the value is ``1px`` it return ``1`` and **not** ``1.0`` - - Conversions might return strange values like 1.000000000001 - """ - if unitType is not None and unitType not in self._floattypes: - raise xml.dom.InvalidAccessErr( - u'unitType Parameter is not a float type') - - val, dim = self._getNumDim() - - if unitType is not None and self.primitiveType != unitType: - # convert if needed - try: - val = self._converter[self.primitiveType, unitType](val) - except KeyError: - raise xml.dom.InvalidAccessErr( - u'CSSPrimitiveValue: Cannot coerce primitiveType %r to %r' - % (self.primitiveTypeString, - self._getCSSPrimitiveTypeString(unitType))) - - if val == int(val): - val = int(val) - - return val - - def setFloatValue(self, unitType, floatValue): - """(DOM) A method to set the float value with a specified unit. - If the property attached with this value can not accept the - specified unit or the float value, the value will be unchanged and - a DOMException will be raised. - - :param unitType: - a unit code as defined above. The unit code can only be a float - unit type - :param floatValue: - the new float value which does not have to be a float value but - may simple be an int e.g. if setting:: - - setFloatValue(CSS_PX, 1) - - :exceptions: - - :exc:`~xml.dom.InvalidAccessErr`: - Raised if the attached property doesn't - support the float value or the unit type. - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if this property is readonly. - """ - self._checkReadonly() - if unitType not in self._floattypes: - raise xml.dom.InvalidAccessErr( - u'CSSPrimitiveValue: unitType %r is not a float type' % - self._getCSSPrimitiveTypeString(unitType)) - try: - val = float(floatValue) - except ValueError, e: - raise xml.dom.InvalidAccessErr( - u'CSSPrimitiveValue: floatValue %r is not a float' % - floatValue) - - oldval, dim = self._getNumDim() - if self.primitiveType != unitType: - # convert if possible - try: - val = self._converter[unitType, self.primitiveType](val) - except KeyError: - raise xml.dom.InvalidAccessErr( - u'CSSPrimitiveValue: Cannot coerce primitiveType %r to %r' - % (self.primitiveTypeString, - self._getCSSPrimitiveTypeString(unitType))) - - if val == int(val): - val = int(val) - - self.cssText = '%s%s' % (val, dim) - - def getStringValue(self): - """(DOM) This method is used to get the string value. If the - CSS value doesn't contain a string value, a DOMException is raised. - - Some properties (like 'font-family' or 'voice-family') - convert a whitespace separated list of idents to a string. - - Only the actual value is returned so e.g. all the following return the - actual value ``a``: url(a), attr(a), "a", 'a' - """ - if self.primitiveType not in self._stringtypes: - raise xml.dom.InvalidAccessErr( - u'CSSPrimitiveValue %r is not a string type' - % self.primitiveTypeString) - - if CSSPrimitiveValue.CSS_ATTR == self.primitiveType: - return self._value[0].cssText[5:-1] - else: - return self._value[0] - - def setStringValue(self, stringType, stringValue): - """(DOM) A method to set the string value with the specified - unit. If the property attached to this value can't accept the - specified unit or the string value, the value will be unchanged and - a DOMException will be raised. - - :param stringType: - a string code as defined above. The string code can only be a - string unit type (i.e. CSS_STRING, CSS_URI, CSS_IDENT, and - CSS_ATTR). - :param stringValue: - the new string value - Only the actual value is expected so for (CSS_URI, "a") the - new value will be ``url(a)``. For (CSS_STRING, "'a'") - the new value will be ``"\\'a\\'"`` as the surrounding ``'`` are - not part of the string value - - :exceptions: - - :exc:`~xml.dom.InvalidAccessErr`: - Raised if the CSS value doesn't contain a - string value or if the string value can't be converted into - the specified unit. - - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if this property is readonly. - """ - self._checkReadonly() - # self not stringType - if self.primitiveType not in self._stringtypes: - raise xml.dom.InvalidAccessErr( - u'CSSPrimitiveValue %r is not a string type' - % self.primitiveTypeString) - # given stringType is no StringType - if stringType not in self._stringtypes: - raise xml.dom.InvalidAccessErr( - u'CSSPrimitiveValue: stringType %s is not a string type' - % self._getCSSPrimitiveTypeString(stringType)) - - if self._primitiveType != stringType: - raise xml.dom.InvalidAccessErr( - u'CSSPrimitiveValue: Cannot coerce primitiveType %r to %r' - % (self.primitiveTypeString, - self._getCSSPrimitiveTypeString(stringType))) - - if CSSPrimitiveValue.CSS_STRING == self._primitiveType: - self.cssText = cssutils.helper.string(stringValue) - elif CSSPrimitiveValue.CSS_URI == self._primitiveType: - self.cssText = cssutils.helper.uri(stringValue) - elif CSSPrimitiveValue.CSS_ATTR == self._primitiveType: - self.cssText = u'attr(%s)' % stringValue - else: - self.cssText = stringValue - self._primitiveType = stringType - - def getCounterValue(self): - """(DOM) This method is used to get the Counter value. If - this CSS value doesn't contain a counter value, a DOMException - is raised. Modification to the corresponding style property - can be achieved using the Counter interface. - - **Not implemented.** - """ - if not self.CSS_COUNTER == self.primitiveType: - raise xml.dom.InvalidAccessErr(u'Value is not a counter type') - # TODO: use Counter class - raise NotImplementedError() - - def getRGBColorValue(self): - """(DOM) This method is used to get the RGB color. If this - CSS value doesn't contain a RGB color value, a DOMException - is raised. Modification to the corresponding style property - can be achieved using the RGBColor interface. - """ - if self.primitiveType not in self._rbgtypes: - raise xml.dom.InvalidAccessErr(u'Value is not a RGBColor value') - return RGBColor(self._value[0]) - - def getRectValue(self): - """(DOM) This method is used to get the Rect value. If this CSS - value doesn't contain a rect value, a DOMException is raised. - Modification to the corresponding style property can be achieved - using the Rect interface. - - **Not implemented.** - """ - if self.primitiveType not in self._recttypes: - raise xml.dom.InvalidAccessErr(u'value is not a Rect value') - # TODO: use Rect class - raise NotImplementedError() - - def _getCssText(self): - """Overwrites CSSValue.""" - return cssutils.ser.do_css_CSSPrimitiveValue(self) - - def _setCssText(self, cssText): - """Use CSSValue.""" - return super(CSSPrimitiveValue, self)._setCssText(cssText) - - cssText = property(_getCssText, _setCssText, - doc="A string representation of the current value.") - - -class CSSValueList(CSSValue): - """The CSSValueList interface provides the abstraction of an ordered - collection of CSS values. - - Some properties allow an empty list into their syntax. In that case, - these properties take the none identifier. So, an empty list means - that the property has the value none. - - The items in the CSSValueList are accessible via an integral index, - starting from 0. - """ - cssValueType = CSSValue.CSS_VALUE_LIST - - def __init__(self, cssText=None, parent=None, readonly=False): - """Init a new CSSValueList""" - super(CSSValueList, self).__init__(cssText=cssText, - parent=parent, - readonly=readonly) - self._items = [] - - def __iter__(self): - "CSSValueList is iterable." - for item in self.__items(): - yield item.value - - def __str__(self): - return "" % ( - self.__class__.__name__, self.cssValueTypeString, - self.cssText, self.length, id(self)) - - def __items(self): - return [item for item in self._seq - if isinstance(item.value, CSSValue)] - - def item(self, index): - """(DOM) Retrieve a CSSValue by ordinal `index`. The - order in this collection represents the order of the values in the - CSS style property. If `index` is greater than or equal to the number - of values in the list, this returns ``None``. - """ - try: - return self.__items()[index].value - except IndexError: - return None - - length = property(lambda self: len(self.__items()), - doc="(DOM attribute) The number of CSSValues in the list.") - - -class CSSFunction(CSSPrimitiveValue): - """A CSS function value like rect() etc.""" - _functionName = u'CSSFunction' - primitiveType = CSSPrimitiveValue.CSS_UNKNOWN - - def __init__(self, cssText=None, readonly=False): - """ - Init a new CSSFunction - - :param cssText: - the parsable cssText of the value - :param readonly: - defaults to False - """ - super(CSSFunction, self).__init__() - self._funcType = None - self.valid = False - self.wellformed = False - if cssText is not None: - self.cssText = cssText - - self._readonly = readonly - - def _productiondefinition(self): - """Return defintion used for parsing.""" - types = self._prods # rename! - valueOrFunc = Choice(Prod(name='PrimitiveValue', - match=lambda t, v: t in (types.DIMENSION, - types.IDENT, - types.NUMBER, - types.PERCENTAGE, - types.STRING), - toSeq=lambda t, tokens: (t[0], CSSPrimitiveValue(t[1])) - ), - # FUNC is actually not in spec but used in e.g. Prince - PreDef.function(toSeq=lambda t, - tokens: ('FUNCTION', - CSSFunction( - cssutils.helper.pushtoken(t, tokens)) - ) - ) - ) - - funcProds = Sequence(Prod(name='FUNC', - match=lambda t, v: t == types.FUNCTION, - toSeq=lambda t, tokens: (t[0], cssutils.helper.normalize(t[1]))), - Choice(Sequence(PreDef.unary(), - valueOrFunc, - # more values starting with Comma - # should use store where colorType is saved to - # define min and may, closure? - Sequence(PreDef.comma(), - PreDef.unary(), - valueOrFunc, - minmax=lambda: (0, 3)), - PreDef.funcEnd(stop=True)), - PreDef.funcEnd(stop=True)) - ) - return funcProds - - def _setCssText(self, cssText): - self._checkReadonly() - # store: colorType, parts - wellformed, seq, store, unusedtokens = ProdParser().parse(cssText, - self._functionName, - self._productiondefinition(), - keepS=True) - if wellformed: - # combine +/- and following CSSPrimitiveValue, remove S - newseq = self._tempSeq() - i, end = 0, len(seq) - while i < end: - item = seq[i] - if item.type == self._prods.S: - pass - elif item.value == u'+' or item.value == u'-': - i += 1 - next = seq[i] - newval = next.value - if isinstance(newval, CSSPrimitiveValue): - newval.setFloatValue(newval.primitiveType, - float(item.value + str(newval.getFloatValue()))) - newseq.append(newval, next.type, - item.line, item.col) - else: - # expressions only? - newseq.appendItem(item) - newseq.appendItem(next) - else: - newseq.appendItem(item) - - i += 1 - - self.wellformed = True - self._setSeq(newseq) - self._funcType = newseq[0].value - - cssText = property(lambda self: cssutils.ser.do_css_RGBColor(self), - _setCssText) - - funcType = property(lambda self: self._funcType) - - -class RGBColor(CSSPrimitiveValue): - """A CSS color like RGB, RGBA or a simple value like `#000` or `red`.""" - def __init__(self, cssText=None, readonly=False): - """ - Init a new RGBColor - - :param cssText: - the parsable cssText of the value - :param readonly: - defaults to False - """ - super(RGBColor, self).__init__() - self._colorType = None - self.valid = False - self.wellformed = False - if cssText is not None: - self.cssText = cssText - - self._readonly = readonly - - def __repr__(self): - return "cssutils.css.%s(%r)" % (self.__class__.__name__, self.cssText) - - def __str__(self): - return "" % ( - self.__class__.__name__, self.colorType, self.cssText, - id(self)) - - def _setCssText(self, cssText): - self._checkReadonly() - types = self._prods # rename! - valueProd = Prod(name='value', - match=lambda t, v: t in (types.NUMBER, types.PERCENTAGE), - toSeq=lambda t, v: (CSSPrimitiveValue, CSSPrimitiveValue(v)), - toStore='parts' - ) - # COLOR PRODUCTION - funccolor = Sequence(Prod(name='FUNC', - match=lambda t, v: self._normalize(v) in ('rgb(', 'rgba(', 'hsl(', 'hsla(') and t == types.FUNCTION, - toSeq=lambda t, v: (t, self._normalize(v)), - toStore='colorType'), - PreDef.unary(), - valueProd, - # 2 or 3 more values starting with Comma - Sequence(PreDef.comma(), - PreDef.unary(), - valueProd, - minmax=lambda: (2, 3)), - PreDef.funcEnd() - ) - colorprods = Choice(funccolor, - PreDef.hexcolor('colorType'), - Prod(name='named color', - match=lambda t, v: t == types.IDENT, - toStore='colorType' - ) - ) - # store: colorType, parts - wellformed, seq, store, unusedtokens = ProdParser().parse(cssText, - u'RGBColor', - colorprods, - keepS=True, - store={'parts': []}) - - if wellformed: - self.wellformed = True - if store['colorType'].type == self._prods.HASH: - self._colorType = 'HEX' - elif store['colorType'].type == self._prods.IDENT: - self._colorType = 'Named Color' - else: - self._colorType = self._normalize(store['colorType'].value)[:-1] - - self._setSeq(seq) - - cssText = property(lambda self: cssutils.ser.do_css_RGBColor(self), - _setCssText) - - colorType = property(lambda self: self._colorType) - - -class ExpressionValue(CSSFunction): - """Special IE only CSSFunction which may contain *anything*. - Used for expressions and ``alpha(opacity=100)`` currently.""" - _functionName = u'Expression (IE only)' - - def _productiondefinition(self): - """Return defintion used for parsing.""" - types = self._prods # rename! - - def toSeq(t, tokens): - "Do not normalize function name!" - return t[0], t[1] - - funcProds = Sequence(Prod(name='expression', - match=lambda t, v: t == types.FUNCTION, - toSeq=toSeq - ), - Sequence(Choice(Prod(name='nested function', - match=lambda t, v: t == self._prods.FUNCTION, - toSeq=lambda t, tokens: (CSSFunction._functionName, - CSSFunction(cssutils.helper.pushtoken(t, - tokens))) - ), - Prod(name='part', - match=lambda t, v: v != u')', - toSeq=lambda t, tokens: (t[0], t[1])), - ), - minmax=lambda: (0, None)), - PreDef.funcEnd(stop=True)) - return funcProds - - def _getCssText(self): - return cssutils.ser.do_css_ExpressionValue(self) - - def _setCssText(self, cssText): - return super(ExpressionValue, self)._setCssText(cssText) - - cssText = property(_getCssText, _setCssText, - doc="A string representation of the current value.") - - -class CSSVariable(CSSValue): - """The CSSVariable represents a call to CSS Variable.""" - - def __init__(self, cssText=None, readonly=False): - """Init a new CSSVariable. - - :param cssText: - the parsable cssText of the value, e.g. ``var(x)`` - :param readonly: - defaults to False - """ - self._name = None - super(CSSVariable, self).__init__(cssText=cssText, - readonly=readonly) - - def __repr__(self): - return "cssutils.css.%s(%r)" % (self.__class__.__name__, self.cssText) - - def __str__(self): - return "" % ( - self.__class__.__name__, self.name, self.value, - id(self)) - - def _setCssText(self, cssText): - self._checkReadonly() - - types = self._prods # rename! - - funcProds = Sequence(Prod(name='var', - match=lambda t, v: t == types.FUNCTION - ), - PreDef.ident(toStore='ident'), - PreDef.funcEnd(stop=True)) - - # store: name of variable - store = {'ident': None} - wellformed, seq, store, unusedtokens = ProdParser().parse(cssText, - u'CSSVariable', - funcProds, - keepS=True) - if wellformed: - self._name = store['ident'].value - self._setSeq(seq) - self.wellformed = True - - cssText = property(lambda self: cssutils.ser.do_css_CSSVariable(self), - _setCssText, - doc="A string representation of the current variable.") - - cssValueType = CSSValue.CSS_VARIABLE - - # TODO: writable? check if var (value) available? - name = property(lambda self: self._name) - - def _getValue(self): - "Find contained sheet and @variables there" - # TODO: imports! - - # property: - if self.parent: - # styleDeclaration: - if self.parent.parent: - # styleRule: - if self.parent.parent.parentRule: - # stylesheet - if self.parent.parent.parentRule.parentStyleSheet: - sheet = self.parent.parent.parentRule.parentStyleSheet - for r in sheet.cssRules: - if r.VARIABLES_RULE == r.type and r.variables: - try: - return r.variables[self.name] - except KeyError: - return None - - value = property(_getValue) diff --git a/src/cssutils/css/cssvariablesdeclaration.py b/src/cssutils/css/cssvariablesdeclaration.py deleted file mode 100644 index 8595b68df6..0000000000 --- a/src/cssutils/css/cssvariablesdeclaration.py +++ /dev/null @@ -1,292 +0,0 @@ -"""CSSVariablesDeclaration -http://disruptive-innovations.com/zoo/cssvariables/#mozTocId496530 -""" -__all__ = ['CSSVariablesDeclaration'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: cssstyledeclaration.py 1819 2009-08-01 20:52:43Z cthedot $' - -from cssutils.prodparser import * -from cssvalue import CSSValue -import cssutils -import itertools -import xml.dom - -class CSSVariablesDeclaration(cssutils.util._NewBase): - """The CSSVariablesDeclaration interface represents a single block of - variable declarations. - """ - def __init__(self, cssText=u'', parentRule=None, readonly=False): - """ - :param cssText: - Shortcut, sets CSSVariablesDeclaration.cssText - :param parentRule: - The CSS rule that contains this declaration block or - None if this CSSVariablesDeclaration is not attached to a CSSRule. - :param readonly: - defaults to False - """ - super(CSSVariablesDeclaration, self).__init__() - self._parentRule = parentRule - self._vars = {} - if cssText: - self.cssText = cssText - - self._readonly = readonly - - def __repr__(self): - return "cssutils.css.%s(cssText=%r)" % ( - self.__class__.__name__, self.cssText) - - def __str__(self): - return "" % ( - self.__class__.__name__, self.length, id(self)) - - def __contains__(self, variableName): - """Check if a variable is in variable declaration block. - - :param variableName: - a string - """ - return variableName.lower() in self.keys() - - def __getitem__(self, variableName): - """Retrieve the value of variable ``variableName`` from this - declaration. - """ - return self.getVariableValue(variableName.lower()) - - def __setitem__(self, variableName, value): - self.setVariable(variableName.lower(), value) - - def __delitem__(self, variableName): - return self.removeVariable(variableName.lower()) - - def __iter__(self): - """Iterator of names of set variables.""" - for name in self.keys(): - yield name - - def _absorb(self, other): - """Replace all own data with data from other object.""" - self._parentRule = other._parentRule - self.seq.absorb(other.seq) - self._readonly = other._readonly - - def keys(self): - """Analoguous to standard dict returns variable names which are set in - this declaration.""" - return self._vars.keys() - - def _getCssText(self): - """Return serialized property cssText.""" - return cssutils.ser.do_css_CSSVariablesDeclaration(self) - - def _setCssText(self, cssText): - """Setting this attribute will result in the parsing of the new value - and resetting of all the properties in the declaration block - including the removal or addition of properties. - - :exceptions: - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if this declaration is readonly or a property is readonly. - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified CSS string value has a syntax error and - is unparsable. - - Format:: - - variableset - : vardeclaration [ ';' S* vardeclaration ]* - ; - - vardeclaration - : varname ':' S* term - ; - - varname - : IDENT S* - ; - - expr - : [ VARCALL | term ] [ operator [ VARCALL | term ] ]* - ; - - """ - self._checkReadonly() - - vardeclaration = Sequence( - PreDef.ident(), - PreDef.char(u':', u':', toSeq=False), - #PreDef.S(toSeq=False, optional=True), - Prod(name=u'term', match=lambda t, v: True, - toSeq=lambda t, tokens: (u'value', - CSSValue(itertools.chain([t], - tokens)) - ) - ), - PreDef.char(u';', u';', toSeq=False, optional=True), - ) - prods = Sequence(vardeclaration, minmax=lambda: (0, None)) - # parse - wellformed, seq, store, notused = \ - ProdParser().parse(cssText, - u'CSSVariableDeclaration', - prods) - if wellformed: - newseq = self._tempSeq() - - # seq contains only name: value pairs plus comments etc - lastname = None - for item in seq: - if u'IDENT' == item.type: - lastname = item - self._vars[lastname.value.lower()] = None - elif u'value' == item.type: - self._vars[lastname.value.lower()] = item.value - newseq.append((lastname.value, item.value), - 'var', - lastname.line, lastname.col) - else: - newseq.appendItem(item) - - self._setSeq(newseq) - self.wellformed = True - - - cssText = property(_getCssText, _setCssText, - doc="(DOM) A parsable textual representation of the declaration\ - block excluding the surrounding curly braces.") - - def _setParentRule(self, parentRule): - self._parentRule = parentRule - - parentRule = property(lambda self: self._parentRule, _setParentRule, - doc="(DOM) The CSS rule that contains this" - " declaration block or None if this block" - " is not attached to a CSSRule.") - - def getVariableValue(self, variableName): - """Used to retrieve the value of a variable if it has been explicitly - set within this variable declaration block. - - :param variableName: - The name of the variable. - :returns: - the value of the variable if it has been explicitly set in this - variable declaration block. Returns the empty string if the - variable has not been set. - """ - try: - return self._vars[variableName.lower()].cssText - except KeyError, e: - return u'' - - def removeVariable(self, variableName): - """Used to remove a variable if it has been explicitly set within this - variable declaration block. - - :param variableName: - The name of the variable. - :returns: - the value of the variable if it has been explicitly set for this - variable declaration block. Returns the empty string if the - variable has not been set. - - :exceptions: - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if this declaration is readonly is readonly. - """ - try: - r = self._vars[variableName.lower()] - except KeyError, e: - return u'' - else: - self.seq._readonly = False - if variableName in self._vars: - for i, x in enumerate(self.seq): - if x.value[0] == variableName: - del self.seq[i] - self.seq._readonly = True - del self._vars[variableName.lower()] - - return r.cssText - - def setVariable(self, variableName, value): - """Used to set a variable value within this variable declaration block. - - :param variableName: - The name of the CSS variable. - :param value: - The new value of the variable, may also be a CSSValue object. - - :exceptions: - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified value has a syntax error and is - unparsable. - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if this declaration is readonly or the property is - readonly. - """ - self._checkReadonly() - - # check name - wellformed, seq, store, unused = ProdParser().parse(variableName.lower(), - u'variableName', - Sequence(PreDef.ident() - )) - if not wellformed: - self._log.error(u'Invalid variableName: %r: %r' - % (variableName, value)) - else: - # check value - if isinstance(value, CSSValue): - v = value - else: - v = CSSValue(cssText=value) - - if not v.wellformed: - self._log.error(u'Invalid variable value: %r: %r' - % (variableName, value)) - else: - # update seq - self.seq._readonly = False - if variableName in self._vars: - for i, x in enumerate(self.seq): - if x.value[0] == variableName: - x.replace(i, - [variableName, v], - x.type, - x.line, - x.col) - break - else: - self.seq.append([variableName, v], 'var') - self.seq._readonly = True - self._vars[variableName] = v - - - - def item(self, index): - """Used to retrieve the variables that have been explicitly set in - this variable declaration block. The order of the variables - retrieved using this method does not have to be the order in which - they were set. This method can be used to iterate over all variables - in this variable declaration block. - - :param index: - of the variable name to retrieve, negative values behave like - negative indexes on Python lists, so -1 is the last element - - :returns: - The name of the variable at this ordinal position. The empty - string if no variable exists at this position. - """ - try: - return self.keys()[index] - except IndexError: - return u'' - - length = property(lambda self: len(self._vars), - doc="The number of variables that have been explicitly set in this" - " variable declaration block. The range of valid indices is 0" - " to length-1 inclusive.") diff --git a/src/cssutils/css/cssvariablesrule.py b/src/cssutils/css/cssvariablesrule.py deleted file mode 100644 index f7a311f506..0000000000 --- a/src/cssutils/css/cssvariablesrule.py +++ /dev/null @@ -1,164 +0,0 @@ -"""CSSVariables implements (and only partly) experimental -`CSS Variables `_ -""" -__all__ = ['CSSVariablesRule'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: cssfontfacerule.py 1818 2009-07-30 21:39:00Z cthedot $' - -from cssvariablesdeclaration import CSSVariablesDeclaration -import cssrule -import cssutils -import xml.dom - -class CSSVariablesRule(cssrule.CSSRule): - """ - The CSSVariablesRule interface represents a @variables rule within a CSS - style sheet. The @variables rule is used to specify variables. - - cssutils uses a :class:`~cssutils.css.CSSVariablesDeclaration` to - represent the variables. - """ - def __init__(self, mediaText=None, variables=None, parentRule=None, - parentStyleSheet=None, readonly=False): - """ - If readonly allows setting of properties in constructor only. - """ - super(CSSVariablesRule, self).__init__(parentRule=parentRule, - parentStyleSheet=parentStyleSheet) - self._atkeyword = u'@variables' - self._media = cssutils.stylesheets.MediaList(mediaText, - readonly=readonly) - self._variables = CSSVariablesDeclaration(parentRule=self) - if variables: - self.variables = variables - - self._readonly = readonly - - def __repr__(self): - return "cssutils.css.%s(mediaText=%r, variables=%r)" % ( - self.__class__.__name__, - self._media.mediaText, self.variables.cssText) - - def __str__(self): - return "" % ( - self.__class__.__name__, self._media.mediaText, - self.variables.cssText, self.valid, id(self)) - - def _getCssText(self): - """Return serialized property cssText.""" - return cssutils.ser.do_CSSVariablesRule(self) - - def _setCssText(self, cssText): - """ - :exceptions: - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified CSS string value has a syntax error and - is unparsable. - - :exc:`~xml.dom.InvalidModificationErr`: - Raised if the specified CSS string value represents a different - type of rule than the current one. - - :exc:`~xml.dom.HierarchyRequestErr`: - Raised if the rule cannot be inserted at this point in the - style sheet. - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if the rule is readonly. - - Format:: - - variables - : VARIABLES_SYM S* medium [ COMMA S* medium ]* LBRACE S* variableset* '}' S* - ; - - variableset - : LBRACE S* vardeclaration [ ';' S* vardeclaration ]* '}' S* - ; - """ - super(CSSVariablesRule, self)._setCssText(cssText) - - tokenizer = self._tokenize2(cssText) - attoken = self._nexttoken(tokenizer, None) - if self._type(attoken) != self._prods.VARIABLES_SYM: - self._log.error(u'CSSVariablesRule: No CSSVariablesRule found: %s' % - self._valuestr(cssText), - error=xml.dom.InvalidModificationErr) - else: - # save if parse goes wrong - oldvariables = CSSVariablesDeclaration() - oldvariables._absorb(self.variables) - - ok = True - beforetokens, brace = self._tokensupto2(tokenizer, - blockstartonly=True, - separateEnd=True) - if self._tokenvalue(brace) != u'{': - ok = False - self._log.error( - u'CSSVariablesRule: No start { of variable declaration found: %r' % - self._valuestr(cssText), brace) - - # parse stuff before { which should be comments and S only - new = {'wellformed': True} - newseq = self._tempSeq()#[] - - beforewellformed, expected = self._parse(expected=':', - seq=newseq, tokenizer=self._tokenize2(beforetokens), - productions={}) - ok = ok and beforewellformed and new['wellformed'] - - variablestokens, braceorEOFtoken = self._tokensupto2(tokenizer, - blockendonly=True, - separateEnd=True) - - val, typ = self._tokenvalue(braceorEOFtoken), self._type(braceorEOFtoken) - if val != u'}' and typ != 'EOF': - ok = False - self._log.error( - u'CSSVariablesRule: No "}" after variables declaration found: %r' % - self._valuestr(cssText)) - - nonetoken = self._nexttoken(tokenizer) - if nonetoken: - ok = False - self._log.error(u'CSSVariablesRule: Trailing content found.', - token=nonetoken) - - if 'EOF' == typ: - # add again as variables needs it - variablestokens.append(braceorEOFtoken) - # may raise: - self.variables.cssText = variablestokens - - if ok: - # contains probably comments only upto { - self._setSeq(newseq) - else: - # RESET - self.variables._absorb(oldvariables) - - cssText = property(_getCssText, _setCssText, - doc="(DOM) The parsable textual representation of this rule.") - - def _setVariables(self, variables): - """ - :param variables: - a CSSVariablesDeclaration or string - """ - self._checkReadonly() - if isinstance(variables, basestring): - self._variables.cssText = variables - else: - self._variables = variables - self._variables.parentRule = self - - variables = property(lambda self: self._variables, _setVariables, - doc="(DOM) The variables of this rule set, " - "a :class:`~cssutils.css.CSSVariablesDeclaration`.") - - type = property(lambda self: self.VARIABLES_RULE, - doc="The type of this rule, as defined by a CSSRule " - "type constant.") - - valid = property(lambda self: True, doc='TODO') - - # constant but needed: - wellformed = property(lambda self: True) diff --git a/src/cssutils/css/property.py b/src/cssutils/css/property.py deleted file mode 100644 index c8a7333630..0000000000 --- a/src/cssutils/css/property.py +++ /dev/null @@ -1,477 +0,0 @@ -"""Property is a single CSS property in a CSSStyleDeclaration.""" -__all__ = ['Property'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: property.py 1878 2009-11-17 20:16:26Z cthedot $' - -from cssutils.helper import Deprecated -from cssvalue import CSSValue -import cssutils -import xml.dom - -class Property(cssutils.util.Base): - """A CSS property in a StyleDeclaration of a CSSStyleRule (cssutils). - - Format:: - - property = name - : IDENT S* - ; - - expr = value - : term [ operator term ]* - ; - term - : unary_operator? - [ NUMBER S* | PERCENTAGE S* | LENGTH S* | EMS S* | EXS S* | ANGLE S* | - TIME S* | FREQ S* | function ] - | STRING S* | IDENT S* | URI S* | hexcolor - ; - function - : FUNCTION S* expr ')' S* - ; - /* - * There is a constraint on the color that it must - * have either 3 or 6 hex-digits (i.e., [0-9a-fA-F]) - * after the "#"; e.g., "#000" is OK, but "#abcd" is not. - */ - hexcolor - : HASH S* - ; - - prio - : IMPORTANT_SYM S* - ; - - """ - def __init__(self, name=None, value=None, priority=u'', - _mediaQuery=False, parent=None): - """ - :param name: - a property name string (will be normalized) - :param value: - a property value string - :param priority: - an optional priority string which currently must be u'', - u'!important' or u'important' - :param _mediaQuery: - if ``True`` value is optional (used by MediaQuery) - :param parent: - the parent object, normally a - :class:`cssutils.css.CSSStyleDeclaration` - """ - super(Property, self).__init__() - self.seqs = [[], None, []] - self.wellformed = False - self._mediaQuery = _mediaQuery - self.parent = parent - - self.__nametoken = None - self._name = u'' - self._literalname = u'' - self.seqs[1] = CSSValue(parent=self) - if name: - self.name = name - self.cssValue = value - - self._priority = u'' - self._literalpriority = u'' - if priority: - self.priority = priority - - def __repr__(self): - return "cssutils.css.%s(name=%r, value=%r, priority=%r)" % ( - self.__class__.__name__, - self.literalname, self.cssValue.cssText, self.priority) - - def __str__(self): - return "<%s.%s object name=%r value=%r priority=%r valid=%r at 0x%x>" % ( - self.__class__.__module__, self.__class__.__name__, - self.name, self.cssValue.cssText, self.priority, - self.valid, id(self)) - - def _getCssText(self): - """Return serialized property cssText.""" - return cssutils.ser.do_Property(self) - - def _setCssText(self, cssText): - """ - :exceptions: - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified CSS string value has a syntax error and - is unparsable. - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if the rule is readonly. - """ - # check and prepare tokenlists for setting - tokenizer = self._tokenize2(cssText) - nametokens = self._tokensupto2(tokenizer, propertynameendonly=True) - if nametokens: - wellformed = True - - valuetokens = self._tokensupto2(tokenizer, - propertyvalueendonly=True) - prioritytokens = self._tokensupto2(tokenizer, - propertypriorityendonly=True) - - if self._mediaQuery and not valuetokens: - # MediaQuery may consist of name only - self.name = nametokens - self.cssValue = None - self.priority = None - return - - # remove colon from nametokens - colontoken = nametokens.pop() - if self._tokenvalue(colontoken) != u':': - wellformed = False - self._log.error(u'Property: No ":" after name found: %r' % - self._valuestr(cssText), colontoken) - elif not nametokens: - wellformed = False - self._log.error(u'Property: No property name found: %r.' % - self._valuestr(cssText), colontoken) - - if valuetokens: - if self._tokenvalue(valuetokens[-1]) == u'!': - # priority given, move "!" to prioritytokens - prioritytokens.insert(0, valuetokens.pop(-1)) - else: - wellformed = False - self._log.error(u'Property: No property value found: %r.' % - self._valuestr(cssText), colontoken) - - if wellformed: - self.wellformed = True - self.name = nametokens - self.cssValue = valuetokens - self.priority = prioritytokens - - # also invalid values are set! - self.validate() - - else: - self._log.error(u'Property: No property name found: %r.' % - self._valuestr(cssText)) - - cssText = property(fget=_getCssText, fset=_setCssText, - doc="A parsable textual representation.") - - def _setName(self, name): - """ - :exceptions: - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified name has a syntax error and is - unparsable. - """ - # for closures: must be a mutable - new = {'literalname': None, - 'wellformed': True} - - def _ident(expected, seq, token, tokenizer=None): - # name - if 'name' == expected: - new['literalname'] = self._tokenvalue(token).lower() - seq.append(new['literalname']) - return 'EOF' - else: - new['wellformed'] = False - self._log.error(u'Property: Unexpected ident.', token) - return expected - - newseq = [] - wellformed, expected = self._parse(expected='name', - seq=newseq, - tokenizer=self._tokenize2(name), - productions={'IDENT': _ident}) - wellformed = wellformed and new['wellformed'] - - # post conditions - # define a token for error logging - if isinstance(name, list): - token = name[0] - self.__nametoken = token - else: - token = None - - if not new['literalname']: - wellformed = False - self._log.error(u'Property: No name found: %r' % - self._valuestr(name), token=token) - - if wellformed: - self.wellformed = True - self._literalname = new['literalname'] - self._name = self._normalize(self._literalname) - self.seqs[0] = newseq - -# # validate - if self._name not in cssutils.profile.knownNames: - # self.valid = False - self._log.warn(u'Property: Unknown Property name.', - token=token, neverraise=True) - else: - pass -# self.valid = True -# if self.cssValue: -# self.cssValue._propertyName = self._name -# #self.valid = self.cssValue.valid - else: - self.wellformed = False - - name = property(lambda self: self._name, _setName, - doc="Name of this property.") - - literalname = property(lambda self: self._literalname, - doc="Readonly literal (not normalized) name " - "of this property") - - def _getCSSValue(self): - return self.seqs[1] - - def _setCSSValue(self, cssText): - """ - See css.CSSValue - - :exceptions: - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified CSS string value has a syntax error - (according to the attached property) or is unparsable. - - :exc:`~xml.dom.InvalidModificationErr`: - TODO: Raised if the specified CSS string value represents a different - type of values than the values allowed by the CSS property. - """ - if self._mediaQuery and not cssText: - self.seqs[1] = CSSValue(parent=self) - else: - oldvalue = self.seqs[1].cssText - try: - self.seqs[1].cssText = cssText - except: - self.seqs[1].cssText = oldvalue - raise - - self.wellformed = self.wellformed and self.seqs[1].wellformed - - cssValue = property(_getCSSValue, _setCSSValue, - doc="(cssutils) CSSValue object of this property") - - def _getValue(self): - if self.cssValue: - return self.cssValue.cssText - else: - return u'' - - def _setValue(self, value): - self._setCSSValue(value) - - value = property(_getValue, _setValue, - doc="The textual value of this Properties cssValue.") - - def _setPriority(self, priority): - """ - priority - a string, currently either u'', u'!important' or u'important' - - Format:: - - prio - : IMPORTANT_SYM S* - ; - - "!"{w}"important" {return IMPORTANT_SYM;} - - :exceptions: - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified priority has a syntax error and is - unparsable. - In this case a priority not equal to None, "" or "!{w}important". - As CSSOM defines CSSStyleDeclaration.getPropertyPriority resulting in - u'important' this value is also allowed to set a Properties priority - """ - if self._mediaQuery: - self._priority = u'' - self._literalpriority = u'' - if priority: - self._log.error(u'Property: No priority in a MediaQuery - ignored.') - return - - if isinstance(priority, basestring) and\ - u'important' == self._normalize(priority): - priority = u'!%s' % priority - - # for closures: must be a mutable - new = {'literalpriority': u'', - 'wellformed': True} - - def _char(expected, seq, token, tokenizer=None): - # "!" - val = self._tokenvalue(token) - if u'!' == expected == val: - seq.append(val) - return 'important' - else: - new['wellformed'] = False - self._log.error(u'Property: Unexpected char.', token) - return expected - - def _ident(expected, seq, token, tokenizer=None): - # "important" - val = self._tokenvalue(token) - if 'important' == expected: - new['literalpriority'] = val - seq.append(val) - return 'EOF' - else: - new['wellformed'] = False - self._log.error(u'Property: Unexpected ident.', token) - return expected - - newseq = [] - wellformed, expected = self._parse(expected='!', - seq=newseq, - tokenizer=self._tokenize2(priority), - productions={'CHAR': _char, - 'IDENT': _ident}) - wellformed = wellformed and new['wellformed'] - - # post conditions - if priority and not new['literalpriority']: - wellformed = False - self._log.info(u'Property: Invalid priority: %r.' % - self._valuestr(priority)) - - if wellformed: - self.wellformed = self.wellformed and wellformed - self._literalpriority = new['literalpriority'] - self._priority = self._normalize(self.literalpriority) - self.seqs[2] = newseq - # validate priority - if self._priority not in (u'', u'important'): - self._log.error(u'Property: No CSS priority value: %r.' % - self._priority) - - priority = property(lambda self: self._priority, _setPriority, - doc="Priority of this property.") - - literalpriority = property(lambda self: self._literalpriority, - doc="Readonly literal (not normalized) priority of this property") - - def _setParent(self, parent): - self._parent = parent - - parent = property(lambda self: self._parent, _setParent, - doc="The Parent Node (normally a CSSStyledeclaration) of this " - "Property") - - def validate(self): - """Validate value against `profiles` which are checked dynamically. - properties in e.g. @font-face rules are checked against - ``cssutils.profile.CSS3_FONT_FACE`` only. - - For each of the following cases a message is reported: - - - INVALID (so the property is known but not valid) - ``ERROR Property: Invalid value for "{PROFILE-1[/PROFILE-2...]" - property: ...`` - - - VALID but not in given profiles or defaultProfiles - ``WARNING Property: Not valid for profile "{PROFILE-X}" but valid - "{PROFILE-Y}" property: ...`` - - - VALID in current profile - ``DEBUG Found valid "{PROFILE-1[/PROFILE-2...]" property...`` - - - UNKNOWN property - ``WARNING Unknown Property name...`` is issued - - so for example:: - - cssutils.log.setLevel(logging.DEBUG) - parser = cssutils.CSSParser() - s = parser.parseString('''body { - unknown-property: x; - color: 4; - color: rgba(1,2,3,4); - color: red - }''') - - # Log output: - - WARNING Property: Unknown Property name. [2:9: unknown-property] - ERROR Property: Invalid value for "CSS Color Module Level 3/CSS Level 2.1" property: 4 [3:9: color] - DEBUG Property: Found valid "CSS Color Module Level 3" value: rgba(1, 2, 3, 4) [4:9: color] - DEBUG Property: Found valid "CSS Level 2.1" value: red [5:9: color] - - - and when setting an explicit default profile:: - - cssutils.profile.defaultProfiles = cssutils.profile.CSS_LEVEL_2 - s = parser.parseString('''body { - unknown-property: x; - color: 4; - color: rgba(1,2,3,4); - color: red - }''') - - # Log output: - - WARNING Property: Unknown Property name. [2:9: unknown-property] - ERROR Property: Invalid value for "CSS Color Module Level 3/CSS Level 2.1" property: 4 [3:9: color] - WARNING Property: Not valid for profile "CSS Level 2.1" but valid "CSS Color Module Level 3" value: rgba(1, 2, 3, 4) [4:9: color] - DEBUG Property: Found valid "CSS Level 2.1" value: red [5:9: color] - """ - valid = False - - profiles = None - try: - # if @font-face use that profile - rule = self.parent.parentRule - if rule.type == rule.FONT_FACE_RULE: - profiles = [cssutils.profile.CSS3_FONT_FACE] - #TODO: same for @page - except AttributeError: - pass - - if self.name and self.value: - - if self.name in cssutils.profile.knownNames: - # add valid, matching, validprofiles... - valid, matching, validprofiles = \ - cssutils.profile.validateWithProfile(self.name, - self.value, - profiles) - - if not valid: - self._log.error(u'Property: Invalid value for ' - u'"%s" property: %s' - % (u'/'.join(validprofiles), self.value), - token=self.__nametoken, - neverraise=True) - - # TODO: remove logic to profiles! - elif valid and not matching:#(profiles and profiles not in validprofiles): - if not profiles: - notvalidprofiles = u'/'.join(cssutils.profile.defaultProfiles) - else: - notvalidprofiles = profiles - self._log.warn(u'Property: Not valid for profile "%s" ' - u'but valid "%s" value: %s ' - % (notvalidprofiles, u'/'.join(validprofiles), - self.value), - token = self.__nametoken, - neverraise=True) - valid = False - - elif valid: - self._log.debug(u'Property: Found valid "%s" value: %s' - % (u'/'.join(validprofiles), self.value), - token = self.__nametoken, - neverraise=True) - - if self._priority not in (u'', u'important'): - valid = False - - return valid - - valid = property(validate, doc="Check if value of this property is valid " - "in the properties context.") diff --git a/src/cssutils/css/selector.py b/src/cssutils/css/selector.py deleted file mode 100644 index 9446cc303a..0000000000 --- a/src/cssutils/css/selector.py +++ /dev/null @@ -1,798 +0,0 @@ -"""Selector is a single Selector of a CSSStyleRule SelectorList. -Partly implements http://www.w3.org/TR/css3-selectors/. - -TODO - - .contains(selector) - - .isSubselector(selector) -""" -__all__ = ['Selector'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: selector.py 1868 2009-10-17 19:36:54Z cthedot $' - -from cssutils.util import _SimpleNamespaces -from cssutils.helper import Deprecated -import cssutils -import xml.dom - -class Selector(cssutils.util.Base2): - """ - (cssutils) a single selector in a :class:`~cssutils.css.SelectorList` - of a :class:`~cssutils.css.CSSStyleRule`. - - Format:: - - # implemented in SelectorList - selectors_group - : selector [ COMMA S* selector ]* - ; - - selector - : simple_selector_sequence [ combinator simple_selector_sequence ]* - ; - - combinator - /* combinators can be surrounded by white space */ - : PLUS S* | GREATER S* | TILDE S* | S+ - ; - - simple_selector_sequence - : [ type_selector | universal ] - [ HASH | class | attrib | pseudo | negation ]* - | [ HASH | class | attrib | pseudo | negation ]+ - ; - - type_selector - : [ namespace_prefix ]? element_name - ; - - namespace_prefix - : [ IDENT | '*' ]? '|' - ; - - element_name - : IDENT - ; - - universal - : [ namespace_prefix ]? '*' - ; - - class - : '.' IDENT - ; - - attrib - : '[' S* [ namespace_prefix ]? IDENT S* - [ [ PREFIXMATCH | - SUFFIXMATCH | - SUBSTRINGMATCH | - '=' | - INCLUDES | - DASHMATCH ] S* [ IDENT | STRING ] S* - ]? ']' - ; - - pseudo - /* '::' starts a pseudo-element, ':' a pseudo-class */ - /* Exceptions: :first-line, :first-letter, :before and :after. */ - /* Note that pseudo-elements are restricted to one per selector and */ - /* occur only in the last simple_selector_sequence. */ - : ':' ':'? [ IDENT | functional_pseudo ] - ; - - functional_pseudo - : FUNCTION S* expression ')' - ; - - expression - /* In CSS3, the expressions are identifiers, strings, */ - /* or of the form "an+b" */ - : [ [ PLUS | '-' | DIMENSION | NUMBER | STRING | IDENT ] S* ]+ - ; - - negation - : NOT S* negation_arg S* ')' - ; - - negation_arg - : type_selector | universal | HASH | class | attrib | pseudo - ; - - """ - def __init__(self, selectorText=None, parent=None, - readonly=False): - """ - :Parameters: - selectorText - initial value of this selector - parent - a SelectorList - readonly - default to False - """ - super(Selector, self).__init__() - - self.__namespaces = _SimpleNamespaces(log=self._log) - self._element = None - self._parent = parent - self._specificity = (0, 0, 0, 0) - - if selectorText: - self.selectorText = selectorText - - self._readonly = readonly - - def __repr__(self): - if self.__getNamespaces(): - st = (self.selectorText, self._getUsedNamespaces()) - else: - st = self.selectorText - return u"cssutils.css.%s(selectorText=%r)" % ( - self.__class__.__name__, st) - - def __str__(self): - return u"" % ( - self.__class__.__name__, self.selectorText, self.specificity, - self._getUsedNamespaces(), id(self)) - - def _getUsedUris(self): - "Return list of actually used URIs in this Selector." - uris = set() - for item in self.seq: - type_, val = item.type, item.value - if type_.endswith(u'-selector') or type_ == u'universal' and \ - type(val) == tuple and val[0] not in (None, u'*'): - uris.add(val[0]) - return uris - - def _getUsedNamespaces(self): - "Return actually used namespaces only." - useduris = self._getUsedUris() - namespaces = _SimpleNamespaces(log=self._log) - for p, uri in self._namespaces.items(): - if uri in useduris: - namespaces[p] = uri - return namespaces - - def __getNamespaces(self): - "Use own namespaces if not attached to a sheet, else the sheet's ones." - try: - return self._parent.parentRule.parentStyleSheet.namespaces - except AttributeError: - return self.__namespaces - - _namespaces = property(__getNamespaces, doc="""If this Selector is attached - to a CSSStyleSheet the namespaces of that sheet are mirrored here. - While the Selector (or parent SelectorList or parentRule(s) of that are - not attached a own dict of {prefix: namespaceURI} is used.""") - - - element = property(lambda self: self._element, - doc=u"Effective element target of this selector.") - - parent = property(lambda self: self._parent, - doc="(DOM) The SelectorList that contains this Selector or\ - None if this Selector is not attached to a SelectorList.") - - def _getSelectorText(self): - """Return serialized format.""" - return cssutils.ser.do_css_Selector(self) - - def _setSelectorText(self, selectorText): - """ - :param selectorText: - parsable string or a tuple of (selectorText, dict-of-namespaces). - Given namespaces are ignored if this object is attached to a - CSSStyleSheet! - - :exceptions: - - :exc:`~xml.dom.NamespaceErr`: - Raised if the specified selector uses an unknown namespace - prefix. - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified CSS string value has a syntax error - and is unparsable. - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if this rule is readonly. - """ - self._checkReadonly() - - # might be (selectorText, namespaces) - selectorText, namespaces = self._splitNamespacesOff(selectorText) - - try: - # uses parent stylesheets namespaces if available, otherwise given ones - namespaces = self.parent.parentRule.parentStyleSheet.namespaces - except AttributeError: - pass - tokenizer = self._tokenize2(selectorText) - if not tokenizer: - self._log.error(u'Selector: No selectorText given.') - else: - # prepare tokenlist: - # "*" -> type "universal" - # "*"|IDENT + "|" -> combined to "namespace_prefix" - # "|" -> type "namespace_prefix" - # "." + IDENT -> combined to "class" - # ":" + IDENT, ":" + FUNCTION -> pseudo-class - # FUNCTION "not(" -> negation - # "::" + IDENT, "::" + FUNCTION -> pseudo-element - tokens = [] - for t in tokenizer: - typ, val, lin, col = t - if val == u':' and tokens and\ - self._tokenvalue(tokens[-1]) == ':': - # combine ":" and ":" - tokens[-1] = (typ, u'::', lin, col) - - elif typ == 'IDENT' and tokens\ - and self._tokenvalue(tokens[-1]) == u'.': - # class: combine to .IDENT - tokens[-1] = ('class', u'.'+val, lin, col) - elif typ == 'IDENT' and tokens and \ - self._tokenvalue(tokens[-1]).startswith(u':') and\ - not self._tokenvalue(tokens[-1]).endswith(u'('): - # pseudo-X: combine to :IDENT or ::IDENT but not ":a(" + "b" - if self._tokenvalue(tokens[-1]).startswith(u'::'): - t = 'pseudo-element' - else: - t = 'pseudo-class' - tokens[-1] = (t, self._tokenvalue(tokens[-1])+val, lin, col) - - elif typ == 'FUNCTION' and val == u'not(' and tokens and \ - u':' == self._tokenvalue(tokens[-1]): - tokens[-1] = ('negation', u':' + val, lin, tokens[-1][3]) - elif typ == 'FUNCTION' and tokens\ - and self._tokenvalue(tokens[-1]).startswith(u':'): - # pseudo-X: combine to :FUNCTION( or ::FUNCTION( - if self._tokenvalue(tokens[-1]).startswith(u'::'): - t = 'pseudo-element' - else: - t = 'pseudo-class' - tokens[-1] = (t, self._tokenvalue(tokens[-1])+val, lin, col) - - elif val == u'*' and tokens and\ - self._type(tokens[-1]) == 'namespace_prefix' and\ - self._tokenvalue(tokens[-1]).endswith(u'|'): - # combine prefix|* - tokens[-1] = ('universal', self._tokenvalue(tokens[-1])+val, - lin, col) - elif val == u'*': - # universal: "*" - tokens.append(('universal', val, lin, col)) - - elif val == u'|' and tokens and\ - self._type(tokens[-1]) in (self._prods.IDENT, 'universal') and\ - self._tokenvalue(tokens[-1]).find(u'|') == -1: - # namespace_prefix: "IDENT|" or "*|" - tokens[-1] = ('namespace_prefix', - self._tokenvalue(tokens[-1])+u'|', lin, col) - elif val == u'|': - # namespace_prefix: "|" - tokens.append(('namespace_prefix', val, lin, col)) - - else: - tokens.append(t) - - # TODO: back to generator but not elegant at all! - tokenizer = (t for t in tokens) - - # for closures: must be a mutable - new = {'context': [''], # stack of: 'attrib', 'negation', 'pseudo' - 'element': None, - '_PREFIX': None, - 'specificity': [0, 0, 0, 0], # mutable, finally a tuple! - 'wellformed': True - } - # used for equality checks and setting of a space combinator - S = u' ' - - def append(seq, val, typ=None, token=None): - """ - appends to seq - - namespace_prefix, IDENT will be combined to a tuple - (prefix, name) where prefix might be None, the empty string - or a prefix. - - Saved are also: - - specificity definition: style, id, class/att, type - - element: the element this Selector is for - """ - context = new['context'][-1] - if token: - line, col = token[2], token[3] - else: - line, col = None, None - - if typ == '_PREFIX': - # SPECIAL TYPE: save prefix for combination with next - new['_PREFIX'] = val[:-1] - # handle next time - return - - if new['_PREFIX'] is not None: - # as saved from before and reset to None - prefix, new['_PREFIX'] = new['_PREFIX'], None - elif typ == 'universal' and '|' in val: - # val == *|* or prefix|* - prefix, val = val.split('|') - else: - prefix = None - - # namespace - if (typ.endswith('-selector') or typ == 'universal') and not ( - 'attribute-selector' == typ and not prefix): - # att **IS NOT** in default ns - if prefix == u'*': - # *|name: in ANY_NS - namespaceURI = cssutils._ANYNS - elif prefix is None: - # e or *: default namespace with prefix u'' or local-name() - namespaceURI = namespaces.get(u'', None) - elif prefix == u'': - # |name or |*: in no (or the empty) namespace - namespaceURI = u'' - else: - # explicit namespace prefix - # does not raise KeyError, see _SimpleNamespaces - namespaceURI = namespaces[prefix] - - if namespaceURI is None: - new['wellformed'] = False - self._log.error( - u'Selector: No namespaceURI found for prefix %r' % - prefix, token=token, error=xml.dom.NamespaceErr) - return - - # val is now (namespaceprefix, name) tuple - val = (namespaceURI, val) - - # specificity - if not context or context == 'negation': - if 'id' == typ: - new['specificity'][1] += 1 - elif 'class' == typ or '[' == val: - new['specificity'][2] += 1 - elif typ in ('type-selector', 'negation-type-selector', - 'pseudo-element'): - new['specificity'][3] += 1 - if not context and typ in ('type-selector', 'universal'): - # define element - new['element'] = val - - seq.append(val, typ, line=line, col=col) - - # expected constants - simple_selector_sequence = 'type_selector universal HASH class attrib pseudo negation ' - simple_selector_sequence2 = 'HASH class attrib pseudo negation ' - - element_name = 'element_name' - - negation_arg = 'type_selector universal HASH class attrib pseudo' - negationend = ')' - - attname = 'prefix attribute' - attname2 = 'attribute' - attcombinator = 'combinator ]' # optional - attvalue = 'value' # optional - attend = ']' - - expressionstart = 'PLUS - DIMENSION NUMBER STRING IDENT' - expression = expressionstart + ' )' - - combinator = ' combinator' - - def _COMMENT(expected, seq, token, tokenizer=None): - "special implementation for comment token" - append(seq, cssutils.css.CSSComment([token]), 'COMMENT', - token=token) - return expected - - def _S(expected, seq, token, tokenizer=None): - # S - context = new['context'][-1] - if context.startswith('pseudo-'): - if seq and seq[-1].value not in u'+-': - # e.g. x:func(a + b) - append(seq, S, 'S', token=token) - return expected - - elif context != 'attrib' and 'combinator' in expected: - append(seq, S, 'descendant', token=token) - return simple_selector_sequence + combinator - - else: - return expected - - def _universal(expected, seq, token, tokenizer=None): - # *|* or prefix|* - context = new['context'][-1] - val = self._tokenvalue(token) - if 'universal' in expected: - append(seq, val, 'universal', token=token) - - if 'negation' == context: - return negationend - else: - return simple_selector_sequence2 + combinator - - else: - new['wellformed'] = False - self._log.error( - u'Selector: Unexpected universal.', token=token) - return expected - - def _namespace_prefix(expected, seq, token, tokenizer=None): - # prefix| => element_name - # or prefix| => attribute_name if attrib - context = new['context'][-1] - val = self._tokenvalue(token) - if 'attrib' == context and 'prefix' in expected: - # [PREFIX|att] - append(seq, val, '_PREFIX', token=token) - return attname2 - elif 'type_selector' in expected: - # PREFIX|* - append(seq, val, '_PREFIX', token=token) - return element_name - else: - new['wellformed'] = False - self._log.error( - u'Selector: Unexpected namespace prefix.', token=token) - return expected - - def _pseudo(expected, seq, token, tokenizer=None): - # pseudo-class or pseudo-element :a ::a :a( ::a( - """ - /* '::' starts a pseudo-element, ':' a pseudo-class */ - /* Exceptions: :first-line, :first-letter, :before and :after. */ - /* Note that pseudo-elements are restricted to one per selector and */ - /* occur only in the last simple_selector_sequence. */ - """ - context = new['context'][-1] - val, typ = self._tokenvalue(token, normalize=True), self._type(token) - if 'pseudo' in expected: - if val in (':first-line', ':first-letter', ':before', ':after'): - # always pseudo-element ??? - typ = 'pseudo-element' - append(seq, val, typ, token=token) - - if val.endswith(u'('): - # function - new['context'].append(typ) # "pseudo-" "class" or "element" - return expressionstart - elif 'negation' == context: - return negationend - elif 'pseudo-element' == typ: - # only one per element, check at ) also! - return combinator - else: - return simple_selector_sequence2 + combinator - - else: - new['wellformed'] = False - self._log.error( - u'Selector: Unexpected start of pseudo.', token=token) - return expected - - def _expression(expected, seq, token, tokenizer=None): - # [ [ PLUS | '-' | DIMENSION | NUMBER | STRING | IDENT ] S* ]+ - context = new['context'][-1] - val, typ = self._tokenvalue(token), self._type(token) - if context.startswith('pseudo-'): - append(seq, val, typ, token=token) - return expression - else: - new['wellformed'] = False - self._log.error( - u'Selector: Unexpected %s.' % typ, token=token) - return expected - - def _attcombinator(expected, seq, token, tokenizer=None): - # context: attrib - # PREFIXMATCH | SUFFIXMATCH | SUBSTRINGMATCH | INCLUDES | - # DASHMATCH - context = new['context'][-1] - val, typ = self._tokenvalue(token), self._type(token) - if 'attrib' == context and 'combinator' in expected: - # combinator in attrib - append(seq, val, typ.lower(), token=token) - return attvalue - else: - new['wellformed'] = False - self._log.error( - u'Selector: Unexpected %s.' % typ, token=token) - return expected - - def _string(expected, seq, token, tokenizer=None): - # identifier - context = new['context'][-1] - typ, val = self._type(token), self._stringtokenvalue(token) - - # context: attrib - if 'attrib' == context and 'value' in expected: - # attrib: [...=VALUE] - append(seq, val, typ, token=token) - return attend - - # context: pseudo - elif context.startswith('pseudo-'): - # :func(...) - append(seq, val, typ, token=token) - return expression - - else: - new['wellformed'] = False - self._log.error( - u'Selector: Unexpected STRING.', token=token) - return expected - - def _ident(expected, seq, token, tokenizer=None): - # identifier - context = new['context'][-1] - val, typ = self._tokenvalue(token), self._type(token) - - # context: attrib - if 'attrib' == context and 'attribute' in expected: - # attrib: [...|ATT...] - append(seq, val, 'attribute-selector', token=token) - return attcombinator - - elif 'attrib' == context and 'value' in expected: - # attrib: [...=VALUE] - append(seq, val, 'attribute-value', token=token) - return attend - - # context: negation - elif 'negation' == context: - # negation: (prefix|IDENT) - append(seq, val, 'negation-type-selector', token=token) - return negationend - - # context: pseudo - elif context.startswith('pseudo-'): - # :func(...) - append(seq, val, typ, token=token) - return expression - - elif 'type_selector' in expected or element_name == expected: - # element name after ns or complete type_selector - append(seq, val, 'type-selector', token=token) - return simple_selector_sequence2 + combinator - - else: - new['wellformed'] = False - self._log.error( - u'Selector: Unexpected IDENT.', - token=token) - return expected - - def _class(expected, seq, token, tokenizer=None): - # .IDENT - context = new['context'][-1] - val = self._tokenvalue(token) - if 'class' in expected: - append(seq, val, 'class', token=token) - - if 'negation' == context: - return negationend - else: - return simple_selector_sequence2 + combinator - - else: - new['wellformed'] = False - self._log.error( - u'Selector: Unexpected class.', token=token) - return expected - - def _hash(expected, seq, token, tokenizer=None): - # #IDENT - context = new['context'][-1] - val = self._tokenvalue(token) - if 'HASH' in expected: - append(seq, val, 'id', token=token) - - if 'negation' == context: - return negationend - else: - return simple_selector_sequence2 + combinator - - else: - new['wellformed'] = False - self._log.error( - u'Selector: Unexpected HASH.', token=token) - return expected - - def _char(expected, seq, token, tokenizer=None): - # + > ~ ) [ ] + - - context = new['context'][-1] - val = self._tokenvalue(token) - - # context: attrib - if u']' == val and 'attrib' == context and ']' in expected: - # end of attrib - append(seq, val, 'attribute-end', token=token) - context = new['context'].pop() # attrib is done - context = new['context'][-1] - if 'negation' == context: - return negationend - else: - return simple_selector_sequence2 + combinator - - elif u'=' == val and 'attrib' == context and 'combinator' in expected: - # combinator in attrib - append(seq, val, 'equals', token=token) - return attvalue - - # context: negation - elif u')' == val and 'negation' == context and u')' in expected: - # not(negation_arg)" - append(seq, val, 'negation-end', token=token) - new['context'].pop() # negation is done - context = new['context'][-1] - return simple_selector_sequence + combinator - - # context: pseudo (at least one expression) - elif val in u'+-' and context.startswith('pseudo-'): - # :func(+ -)" - _names = {'+': 'plus', '-': 'minus'} - if val == u'+' and seq and seq[-1].value == S: - seq.replace(-1, val, _names[val]) - else: - append(seq, val, _names[val], - token=token) - return expression - - elif u')' == val and context.startswith('pseudo-') and\ - expression == expected: - # :func(expression)" - append(seq, val, 'function-end', token=token) - new['context'].pop() # pseudo is done - if 'pseudo-element' == context: - return combinator - else: - return simple_selector_sequence + combinator - - # context: ROOT - elif u'[' == val and 'attrib' in expected: - # start of [attrib] - append(seq, val, 'attribute-start', token=token) - new['context'].append('attrib') - return attname - - elif val in u'+>~' and 'combinator' in expected: - # no other combinator except S may be following - _names = { - '>': 'child', - '+': 'adjacent-sibling', - '~': 'following-sibling'} - if seq and seq[-1].value == S: - seq.replace(-1, val, _names[val]) - else: - append(seq, val, _names[val], token=token) - return simple_selector_sequence - - elif u',' == val: - # not a selectorlist - new['wellformed'] = False - self._log.error( - u'Selector: Single selector only.', - error=xml.dom.InvalidModificationErr, - token=token) - return expected - - else: - new['wellformed'] = False - self._log.error( - u'Selector: Unexpected CHAR.', token=token) - return expected - - def _negation(expected, seq, token, tokenizer=None): - # not( - context = new['context'][-1] - val = self._tokenvalue(token, normalize=True) - if 'negation' in expected: - new['context'].append('negation') - append(seq, val, 'negation-start', token=token) - return negation_arg - else: - new['wellformed'] = False - self._log.error( - u'Selector: Unexpected negation.', token=token) - return expected - - def _atkeyword(expected, seq, token, tokenizer=None): - "invalidates selector" - new['wellformed'] = False - self._log.error( - u'Selector: Unexpected ATKEYWORD.', token=token) - return expected - - - # expected: only|not or mediatype, mediatype, feature, and - newseq = self._tempSeq() - - wellformed, expected = self._parse(expected=simple_selector_sequence, - seq=newseq, tokenizer=tokenizer, - productions={'CHAR': _char, - 'class': _class, - 'HASH': _hash, - 'STRING': _string, - 'IDENT': _ident, - 'namespace_prefix': _namespace_prefix, - 'negation': _negation, - 'pseudo-class': _pseudo, - 'pseudo-element': _pseudo, - 'universal': _universal, - # pseudo - 'NUMBER': _expression, - 'DIMENSION': _expression, - # attribute - 'PREFIXMATCH': _attcombinator, - 'SUFFIXMATCH': _attcombinator, - 'SUBSTRINGMATCH': _attcombinator, - 'DASHMATCH': _attcombinator, - 'INCLUDES': _attcombinator, - - 'S': _S, - 'COMMENT': _COMMENT, - 'ATKEYWORD': _atkeyword}) - wellformed = wellformed and new['wellformed'] - - # post condition - if len(new['context']) > 1 or not newseq: - wellformed = False - self._log.error(u'Selector: Invalid or incomplete selector: %s' % - self._valuestr(selectorText)) - - if expected == 'element_name': - wellformed = False - self._log.error(u'Selector: No element name found: %s' % - self._valuestr(selectorText)) - - if expected == simple_selector_sequence and newseq: - wellformed = False - self._log.error(u'Selector: Cannot end with combinator: %s' % - self._valuestr(selectorText)) - - if newseq and hasattr(newseq[-1].value, 'strip') and \ - newseq[-1].value.strip() == u'': - del newseq[-1] - - # set - if wellformed: - self.__namespaces = namespaces - self._element = new['element'] - self._specificity = tuple(new['specificity']) - self._setSeq(newseq) - # filter that only used ones are kept - self.__namespaces = self._getUsedNamespaces() - - selectorText = property(_getSelectorText, _setSelectorText, - doc="(DOM) The parsable textual representation of the selector.") - - - specificity = property(lambda self: self._specificity, - doc="""Specificity of this selector (READONLY). - Tuple of (a, b, c, d) where: - - a - presence of style in document, always 0 if not used on a document - b - number of ID selectors - c - number of .class selectors - d - number of Element (type) selectors - """) - - wellformed = property(lambda self: bool(len(self.seq))) - - - @Deprecated('Use property parent instead') - def _getParentList(self): - return self.parent - - parentList = property(_getParentList, - doc="DEPRECATED, see property parent instead") diff --git a/src/cssutils/css/selectorlist.py b/src/cssutils/css/selectorlist.py deleted file mode 100644 index 2ec4577544..0000000000 --- a/src/cssutils/css/selectorlist.py +++ /dev/null @@ -1,234 +0,0 @@ -"""SelectorList is a list of CSS Selector objects. - -TODO - - remove duplicate Selectors. -> CSSOM canonicalize - - - ??? CSS2 gives a special meaning to the comma (,) in selectors. - However, since it is not known if the comma may acquire other - meanings in future versions of CSS, the whole statement should be - ignored if there is an error anywhere in the selector, even though - the rest of the selector may look reasonable in CSS2. - - Illegal example(s): - - For example, since the "&" is not a valid token in a CSS2 selector, - a CSS2 user agent must ignore the whole second line, and not set - the color of H3 to red: -""" -__all__ = ['SelectorList'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: selectorlist.py 1868 2009-10-17 19:36:54Z cthedot $' - -from selector import Selector -import cssutils -import xml.dom - -class SelectorList(cssutils.util.Base, cssutils.util.ListSeq): - """A list of :class:`~cssutils.css.Selector` objects - of a :class:`~cssutils.css.CSSStyleRule`.""" - def __init__(self, selectorText=None, parentRule=None, - readonly=False): - """ - :Parameters: - selectorText - parsable list of Selectors - parentRule - the parent CSSRule if available - """ - super(SelectorList, self).__init__() - - self._parentRule = parentRule - - if selectorText: - self.selectorText = selectorText - - self._readonly = readonly - - def __repr__(self): - if self._namespaces: - st = (self.selectorText, self._namespaces) - else: - st = self.selectorText - return "cssutils.css.%s(selectorText=%r)" % ( - self.__class__.__name__, st) - - def __str__(self): - return "" % ( - self.__class__.__name__, self.selectorText, self._namespaces, - id(self)) - - def __setitem__(self, index, newSelector): - """Overwrite ListSeq.__setitem__ - - Any duplicate Selectors are **not** removed. - """ - newSelector = self.__prepareset(newSelector) - if newSelector: - self.seq[index] = newSelector - - def __prepareset(self, newSelector, namespaces=None): - "Used by appendSelector and __setitem__" - if not namespaces: - namespaces = {} - self._checkReadonly() - if not isinstance(newSelector, Selector): - newSelector = Selector((newSelector, namespaces), - parent=self) - if newSelector.wellformed: - newSelector._parent = self # maybe set twice but must be! - return newSelector - - def __getNamespaces(self): - "Use children namespaces if not attached to a sheet, else the sheet's ones." - try: - return self.parentRule.parentStyleSheet.namespaces - except AttributeError: - namespaces = {} - for selector in self.seq: - namespaces.update(selector._namespaces) - return namespaces - - def _absorb(self, other): - """Replace all own data with data from other object.""" - self._parentRule = other._parentRule - self.seq[:] = other.seq[:] - self._readonly = other._readonly - - def _getUsedUris(self): - "Used by CSSStyleSheet to check if @namespace rules are needed" - uris = set() - for s in self: - uris.update(s._getUsedUris()) - return uris - - _namespaces = property(__getNamespaces, doc="""If this SelectorList is - attached to a CSSStyleSheet the namespaces of that sheet are mirrored - here. While the SelectorList (or parentRule(s) are - not attached the namespaces of all children Selectors are used.""") - - def append(self, newSelector): - "Same as :meth:`appendSelector`." - self.appendSelector(newSelector) - - def appendSelector(self, newSelector): - """ - Append `newSelector` to this list (a string will be converted to a - :class:`~cssutils.css.Selector`). - - :param newSelector: - comma-separated list of selectors (as a single string) or a tuple of - `(newSelector, dict-of-namespaces)` - :returns: New :class:`~cssutils.css.Selector` or ``None`` if - `newSelector` is not wellformed. - :exceptions: - - :exc:`~xml.dom.NamespaceErr`: - Raised if the specified selector uses an unknown namespace - prefix. - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified CSS string value has a syntax error - and is unparsable. - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if this rule is readonly. - """ - self._checkReadonly() - - # might be (selectorText, namespaces) - newSelector, namespaces = self._splitNamespacesOff(newSelector) - try: - # use parent's only if available - namespaces = self.parentRule.parentStyleSheet.namespaces - except AttributeError: - # use already present namespaces plus new given ones - _namespaces = self._namespaces - _namespaces.update(namespaces) - namespaces = _namespaces - - newSelector = self.__prepareset(newSelector, namespaces) - if newSelector: - seq = self.seq[:] - del self.seq[:] - for s in seq: - if s.selectorText != newSelector.selectorText: - self.seq.append(s) - self.seq.append(newSelector) - return newSelector - - def _getSelectorText(self): - "Return serialized format." - return cssutils.ser.do_css_SelectorList(self) - - def _setSelectorText(self, selectorText): - """ - :param selectorText: - comma-separated list of selectors or a tuple of - (selectorText, dict-of-namespaces) - :exceptions: - - :exc:`~xml.dom.NamespaceErr`: - Raised if the specified selector uses an unknown namespace - prefix. - - :exc:`~xml.dom.SyntaxErr`: - Raised if the specified CSS string value has a syntax error - and is unparsable. - - :exc:`~xml.dom.NoModificationAllowedErr`: - Raised if this rule is readonly. - """ - self._checkReadonly() - - # might be (selectorText, namespaces) - selectorText, namespaces = self._splitNamespacesOff(selectorText) - try: - # use parent's only if available - namespaces = self.parentRule.parentStyleSheet.namespaces - except AttributeError: - pass - - wellformed = True - tokenizer = self._tokenize2(selectorText) - newseq = [] - - expected = True - while True: - # find all upto and including next ",", EOF or nothing - selectortokens = self._tokensupto2(tokenizer, listseponly=True) - if selectortokens: - if self._tokenvalue(selectortokens[-1]) == ',': - expected = selectortokens.pop() - else: - expected = None - - selector = Selector((selectortokens, namespaces), - parent=self) - if selector.wellformed: - newseq.append(selector) - else: - wellformed = False - self._log.error(u'SelectorList: Invalid Selector: %s' % - self._valuestr(selectortokens)) - else: - break - - # post condition - if u',' == expected: - wellformed = False - self._log.error(u'SelectorList: Cannot end with ",": %r' % - self._valuestr(selectorText)) - elif expected: - wellformed = False - self._log.error(u'SelectorList: Unknown Syntax: %r' % - self._valuestr(selectorText)) - if wellformed: - self.seq = newseq - - selectorText = property(_getSelectorText, _setSelectorText, - doc="""(cssutils) The textual representation of the selector for - a rule set.""") - - length = property(lambda self: len(self), - doc="The number of :class:`~cssutils.css.Selector` objects in the list.") - - parentRule = property(lambda self: self._parentRule, - doc="(DOM) The CSS rule that contains this SelectorList or " - "``None`` if this SelectorList is not attached to a CSSRule.") - - wellformed = property(lambda self: bool(len(self.seq))) - diff --git a/src/cssutils/css2productions.py b/src/cssutils/css2productions.py deleted file mode 100644 index a836df3f93..0000000000 --- a/src/cssutils/css2productions.py +++ /dev/null @@ -1,131 +0,0 @@ -"""productions for CSS 2.1 - -CSS2_1_MACROS and CSS2_1_PRODUCTIONS are from both -http://www.w3.org/TR/CSS21/grammar.html and -http://www.w3.org/TR/css3-syntax/#grammar0 - - -""" -__all__ = ['CSSProductions', 'MACROS', 'PRODUCTIONS'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: css2productions.py 1394 2008-07-27 13:29:22Z cthedot $' - -# option case-insensitive -MACROS = { - 'h': r'[0-9a-f]', - #'nonascii': r'[\200-\377]', - 'nonascii': r'[^\0-\177]', # CSS3 - 'unicode': r'\\{h}{1,6}(\r\n|[ \t\r\n\f])?', - - 'escape': r'{unicode}|\\[^\r\n\f0-9a-f]', - 'nmstart': r'[_a-zA-Z]|{nonascii}|{escape}', - 'nmchar': r'[_a-zA-Z0-9-]|{nonascii}|{escape}', - 'string1': r'\"([^\n\r\f\\"]|\\{nl}|{escape})*\"', - 'string2': r"\'([^\n\r\f\\']|\\{nl}|{escape})*\'", - 'invalid1': r'\"([^\n\r\f\\"]|\\{nl}|{escape})*', - 'invalid2': r"\'([^\n\r\f\\']|\\{nl}|{escape})*", - 'comment': r'\/\*[^*]*\*+([^/*][^*]*\*+)*\/', - # CSS list 080725 19:43 - # \/\*([^*\\]|{escape})*\*+(([^/*\\]|{escape})[^*]*\*+)*\/ - - 'ident': r'[-]?{nmstart}{nmchar}*', - 'name': r'{nmchar}+', - # CHANGED TO SPEC: added "-?" - 'num': r'-?[0-9]*\.[0-9]+|[0-9]+', - 'string': r'{string1}|{string2}', - 'invalid': r'{invalid1}|{invalid2}', - 'url': r'([!#$%&*-~]|{nonascii}|{escape})*', - 's': r'[ \t\r\n\f]+', - 'w': r'{s}?', - 'nl': r'\n|\r\n|\r|\f', - 'range': r'\?{1,6}|{h}(\?{0,5}|{h}(\?{0,4}|{h}(\?{0,3}|{h}(\?{0,2}|{h}(\??|{h})))))', - - 'A': r'a|\\0{0,4}(41|61)(\r\n|[ \t\r\n\f])?', - 'C': r'c|\\0{0,4}(43|63)(\r\n|[ \t\r\n\f])?', - 'D': r'd|\\0{0,4}(44|64)(\r\n|[ \t\r\n\f])?', - 'E': r'e|\\0{0,4}(45|65)(\r\n|[ \t\r\n\f])?', - 'F': r'f|\\0{0,4}(46|66)(\r\n|[ \t\r\n\f])?', - 'G': r'g|\\0{0,4}(47|67)(\r\n|[ \t\r\n\f])?|\\g', - 'H': r'h|\\0{0,4}(48|68)(\r\n|[ \t\r\n\f])?|\\h', - 'I': r'i|\\0{0,4}(49|69)(\r\n|[ \t\r\n\f])?|\\i', - 'K': r'k|\\0{0,4}(4b|6b)(\r\n|[ \t\r\n\f])?|\\k', - 'M': r'm|\\0{0,4}(4d|6d)(\r\n|[ \t\r\n\f])?|\\m', - 'N': r'n|\\0{0,4}(4e|6e)(\r\n|[ \t\r\n\f])?|\\n', - 'O': r'o|\\0{0,4}(51|71)(\r\n|[ \t\r\n\f])?|\\o', - 'P': r'p|\\0{0,4}(50|70)(\r\n|[ \t\r\n\f])?|\\p', - 'R': r'r|\\0{0,4}(52|72)(\r\n|[ \t\r\n\f])?|\\r', - 'S': r's|\\0{0,4}(53|73)(\r\n|[ \t\r\n\f])?|\\s', - 'T': r't|\\0{0,4}(54|74)(\r\n|[ \t\r\n\f])?|\\t', - 'X': r'x|\\0{0,4}(58|78)(\r\n|[ \t\r\n\f])?|\\x', - 'Z': r'z|\\0{0,4}(5a|7a)(\r\n|[ \t\r\n\f])?|\\z', - } - -PRODUCTIONS = [ - ('URI', r'url\({w}{string}{w}\)'), #"url("{w}{string}{w}")" {return URI;} - ('URI', r'url\({w}{url}{w}\)'), #"url("{w}{url}{w}")" {return URI;} - ('FUNCTION', r'{ident}\('), #{ident}"(" {return FUNCTION;} - - ('IMPORT_SYM', r'@{I}{M}{P}{O}{R}{T}'), #"@import" {return IMPORT_SYM;} - ('PAGE_SYM', r'@{P}{A}{G}{E}'), #"@page" {return PAGE_SYM;} - ('MEDIA_SYM', r'@{M}{E}{D}{I}{A}'), #"@media" {return MEDIA_SYM;} - ('FONT_FACE_SYM', r'@{F}{O}{N}{T}\-{F}{A}{C}{E}'), #"@font-face" {return FONT_FACE_SYM;} - - # CHANGED TO SPEC: only @charset - ('CHARSET_SYM', r'@charset '), #"@charset " {return CHARSET_SYM;} - - ('NAMESPACE_SYM', r'@{N}{A}{M}{E}{S}{P}{A}{C}{E}'), #"@namespace" {return NAMESPACE_SYM;} - - # CHANGED TO SPEC: ATKEYWORD - ('ATKEYWORD', r'\@{ident}'), - - ('IDENT', r'{ident}'), #{ident} {return IDENT;} - ('STRING', r'{string}'), #{string} {return STRING;} - ('INVALID', r'{invalid}'), # {return INVALID; /* unclosed string */} - ('HASH', r'\#{name}'), #"#"{name} {return HASH;} - ('PERCENTAGE', r'{num}%'), #{num}% {return PERCENTAGE;} - ('LENGTH', r'{num}{E}{M}'), #{num}em {return EMS;} - ('LENGTH', r'{num}{E}{X}'), #{num}ex {return EXS;} - ('LENGTH', r'{num}{P}{X}'), #{num}px {return LENGTH;} - ('LENGTH', r'{num}{C}{M}'), #{num}cm {return LENGTH;} - ('LENGTH', r'{num}{M}{M}'), #{num}mm {return LENGTH;} - ('LENGTH', r'{num}{I}{N}'), #{num}in {return LENGTH;} - ('LENGTH', r'{num}{P}{T}'), #{num}pt {return LENGTH;} - ('LENGTH', r'{num}{P}{C}'), #{num}pc {return LENGTH;} - ('ANGLE', r'{num}{D}{E}{G}'), #{num}deg {return ANGLE;} - ('ANGLE', r'{num}{R}{A}{D}'), #{num}rad {return ANGLE;} - ('ANGLE', r'{num}{G}{R}{A}{D}'), #{num}grad {return ANGLE;} - ('TIME', r'{num}{M}{S}'), #{num}ms {return TIME;} - ('TIME', r'{num}{S}'), #{num}s {return TIME;} - ('FREQ', r'{num}{H}{Z}'), #{num}Hz {return FREQ;} - ('FREQ', r'{num}{K}{H}{Z}'), #{num}kHz {return FREQ;} - ('DIMEN', r'{num}{ident}'), #{num}{ident} {return DIMEN;} - ('NUMBER', r'{num}'), #{num} {return NUMBER;} - #('UNICODERANGE', r'U\+{range}'), #U\+{range} {return UNICODERANGE;} - #('UNICODERANGE', r'U\+{h}{1,6}-{h}{1,6}'), #U\+{h}{1,6}-{h}{1,6} {return UNICODERANGE;} - # --- CSS3 --- - ('UNICODE-RANGE', r'[0-9A-F?]{1,6}(\-[0-9A-F]{1,6})?'), - ('CDO', r'\<\!\-\-'), #"" {return CDC;} - ('S', r'{s}'),# {return S;} - - # \/\*[^*]*\*+([^/*][^*]*\*+)*\/ /* ignore comments */ - # {s}+\/\*[^*]*\*+([^/*][^*]*\*+)*\/ {unput(' '); /*replace by space*/} - - ('INCLUDES', r'\~\='), #"~=" {return INCLUDES;} - ('DASHMATCH', r'\|\='), #"|=" {return DASHMATCH;} - ('LBRACE', r'\{'), #{w}"{" {return LBRACE;} - ('PLUS', r'\+'), #{w}"+" {return PLUS;} - ('GREATER', r'\>'), #{w}">" {return GREATER;} - ('COMMA', r'\,'), #{w}"," {return COMMA;} - ('IMPORTANT_SYM', r'\!({w}|{comment})*{I}{M}{P}{O}{R}{T}{A}{N}{T}'), #"!{w}important" {return IMPORTANT_SYM;} - ('COMMENT', '\/\*[^*]*\*+([^/][^*]*\*+)*\/'), # /* ignore comments */ - ('CLASS', r'\.'), #. {return *yytext;} - - # --- CSS3! --- - ('CHAR', r'[^"\']'), - ] - -class CSSProductions(object): - pass -for i, t in enumerate(PRODUCTIONS): - setattr(CSSProductions, t[0].replace('-', '_'), t[0]) \ No newline at end of file diff --git a/src/cssutils/cssproductions.py b/src/cssutils/cssproductions.py deleted file mode 100644 index 177a96cc0b..0000000000 --- a/src/cssutils/cssproductions.py +++ /dev/null @@ -1,121 +0,0 @@ -"""productions for cssutils based on a mix of CSS 2.1 and CSS 3 Syntax -productions - -- http://www.w3.org/TR/css3-syntax -- http://www.w3.org/TR/css3-syntax/#grammar0 - -open issues - - numbers contain "-" if present - - HASH: #aaa is, #000 is not anymore, - CSS2.1: 'nmchar': r'[_a-z0-9-]|{nonascii}|{escape}', - CSS3: 'nmchar': r'[_a-z-]|{nonascii}|{escape}', -""" -__all__ = ['CSSProductions', 'MACROS', 'PRODUCTIONS'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: cssproductions.py 1855 2009-10-07 17:03:19Z cthedot $' - -# a complete list of css3 macros -MACROS = { - 'nonascii': r'[^\0-\177]', - 'unicode': r'\\[0-9A-Fa-f]{1,6}(?:{nl}|{s})?', - #'escape': r'{unicode}|\\[ -~\200-\777]', - 'escape': r'{unicode}|\\[^\n\r\f0-9a-f]', - 'nmstart': r'[_a-zA-Z]|{nonascii}|{escape}', - 'nmchar': r'[-_a-zA-Z0-9]|{nonascii}|{escape}', - 'string1': r'"([^\n\r\f\\"]|\\{nl}|{escape})*"', - 'string2': r"'([^\n\r\f\\']|\\{nl}|{escape})*'", - 'invalid1': r'\"([^\n\r\f\\"]|\\{nl}|{escape})*', - 'invalid2': r"\'([^\n\r\f\\']|\\{nl}|{escape})*", - - 'comment': r'\/\*[^*]*\*+([^/][^*]*\*+)*\/', - 'ident': r'[-]?{nmstart}{nmchar}*', - 'name': r'{nmchar}+', - 'num': r'[0-9]*\.[0-9]+|[0-9]+', #r'[-]?\d+|[-]?\d*\.\d+', - 'string': r'{string1}|{string2}', - # from CSS2.1 - 'invalid': r'{invalid1}|{invalid2}', - 'url': r'[\x09\x21\x23-\x26\x28\x2a-\x7E]|{nonascii}|{escape}', - - 's': r'\t|\r|\n|\f|\x20', - 'w': r'{s}*', - 'nl': r'\n|\r\n|\r|\f', - - 'A': r'A|a|\\0{0,4}(?:41|61)(?:\r\n|[ \t\r\n\f])?', - 'B': r'B|b|\\0{0,4}(?:42|62)(?:\r\n|[ \t\r\n\f])?', - 'C': r'C|c|\\0{0,4}(?:43|63)(?:\r\n|[ \t\r\n\f])?', - 'D': r'D|d|\\0{0,4}(?:44|64)(?:\r\n|[ \t\r\n\f])?', - 'E': r'E|e|\\0{0,4}(?:45|65)(?:\r\n|[ \t\r\n\f])?', - 'F': r'F|f|\\0{0,4}(?:46|66)(?:\r\n|[ \t\r\n\f])?', - 'G': r'G|g|\\0{0,4}(?:47|67)(?:\r\n|[ \t\r\n\f])?|\\G|\\g', - 'H': r'H|h|\\0{0,4}(?:48|68)(?:\r\n|[ \t\r\n\f])?|\\H|\\h', - 'I': r'I|i|\\0{0,4}(?:49|69)(?:\r\n|[ \t\r\n\f])?|\\I|\\i', - 'K': r'K|k|\\0{0,4}(?:4b|6b)(?:\r\n|[ \t\r\n\f])?|\\K|\\k', - 'L': r'L|l|\\0{0,4}(?:4c|6c)(?:\r\n|[ \t\r\n\f])?|\\L|\\l', - 'M': r'M|m|\\0{0,4}(?:4d|6d)(?:\r\n|[ \t\r\n\f])?|\\M|\\m', - 'N': r'N|n|\\0{0,4}(?:4e|6e)(?:\r\n|[ \t\r\n\f])?|\\N|\\n', - 'O': r'O|o|\\0{0,4}(?:4f|6f)(?:\r\n|[ \t\r\n\f])?|\\O|\\o', - 'P': r'P|p|\\0{0,4}(?:50|70)(?:\r\n|[ \t\r\n\f])?|\\P|\\p', - 'R': r'R|r|\\0{0,4}(?:52|72)(?:\r\n|[ \t\r\n\f])?|\\R|\\r', - 'S': r'S|s|\\0{0,4}(?:53|73)(?:\r\n|[ \t\r\n\f])?|\\S|\\s', - 'T': r'T|t|\\0{0,4}(?:54|74)(?:\r\n|[ \t\r\n\f])?|\\T|\\t', - 'U': r'U|u|\\0{0,4}(?:55|75)(?:\r\n|[ \t\r\n\f])?|\\U|\\u', - 'V': r'V|v|\\0{0,4}(?:56|76)(?:\r\n|[ \t\r\n\f])?|\\V|\\v', - 'X': r'X|x|\\0{0,4}(?:58|78)(?:\r\n|[ \t\r\n\f])?|\\X|\\x', - 'Z': r'Z|z|\\0{0,4}(?:5a|7a)(?:\r\n|[ \t\r\n\f])?|\\Z|\\z', - } - -# The following productions are the complete list of tokens -# used by cssutils, a mix of CSS3 and some CSS2.1 productions. -# The productions are **ordered**: -PRODUCTIONS = [ - ('BOM', r'\xFEFF'), # will only be checked at beginning of CSS - - ('S', r'{s}+'), # 1st in list of general productions - ('URI', r'{U}{R}{L}\({w}({string}|{url}*){w}\)'), - ('FUNCTION', r'{ident}\('), - ('UNICODE-RANGE', r'{U}\+[0-9A-Fa-f?]{1,6}(\-[0-9A-Fa-f]{1,6})?'), - ('IDENT', r'{ident}'), - ('STRING', r'{string}'), - ('INVALID', r'{invalid}'), # from CSS2.1 - ('HASH', r'\#{name}'), - ('PERCENTAGE', r'{num}\%'), - ('DIMENSION', r'{num}{ident}'), - ('NUMBER', r'{num}'), - # valid ony at start so not checked everytime - #('CHARSET_SYM', r'@charset '), # from Errata includes ending space! - # checked specially if fullsheet is parsed - ('COMMENT', r'{comment}'), #r'\/\*[^*]*\*+([^/][^*]*\*+)*\/'), - ('ATKEYWORD', r'@{ident}'), # other keywords are done in the tokenizer - ('CDO', r'\<\!\-\-'), - ('CDC', r'\-\-\>'), - ('INCLUDES', '\~\='), - ('DASHMATCH', r'\|\='), - ('PREFIXMATCH', r'\^\='), - ('SUFFIXMATCH', r'\$\='), - ('SUBSTRINGMATCH', r'\*\='), - ('CHAR', r'[^"\']') # MUST always be last - ] - -class CSSProductions(object): - """ - most attributes are set later - """ - EOF = True - # removed from productions as they simply are ATKEYWORD until - # tokenizing - CHARSET_SYM = 'CHARSET_SYM' - FONT_FACE_SYM = 'FONT_FACE_SYM' - MEDIA_SYM = 'MEDIA_SYM' - IMPORT_SYM = 'IMPORT_SYM' - NAMESPACE_SYM = 'NAMESPACE_SYM' - PAGE_SYM = 'PAGE_SYM' - VARIABLES_SYM = 'VARIABLES_SYM' - -for i, t in enumerate(PRODUCTIONS): - setattr(CSSProductions, t[0].replace('-', '_'), t[0]) - - -# may be enabled by settings.set -_DXImageTransform = ('FUNCTION', - r'progid\:DXImageTransform\.Microsoft\..+\(' - ) diff --git a/src/cssutils/errorhandler.py b/src/cssutils/errorhandler.py deleted file mode 100644 index d3f891e76e..0000000000 --- a/src/cssutils/errorhandler.py +++ /dev/null @@ -1,126 +0,0 @@ -#!/usr/bin/env python -"""cssutils ErrorHandler - -ErrorHandler - used as log with usual levels (debug, info, warn, error) - - if instanciated with ``raiseExceptions=True`` raises exeptions instead - of logging - -log - defaults to instance of ErrorHandler for any kind of log message from - lexerm, parser etc. - - - raiseExceptions = [False, True] - - setloglevel(loglevel) -""" -__all__ = ['ErrorHandler'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: errorhandler.py 1812 2009-07-29 13:11:49Z cthedot $' - -from helper import Deprecated -import logging -import urllib2 -import xml.dom - -class _ErrorHandler(object): - """ - handles all errors and log messages - """ - def __init__(self, log, defaultloglevel=logging.INFO, - raiseExceptions=True): - """ - inits log if none given - - log - for parse messages, default logs to sys.stderr - defaultloglevel - if none give this is logging.DEBUG - raiseExceptions - - True: Errors will be raised e.g. during building - - False: Errors will be written to the log, this is the - default behaviour when parsing - """ - # may be disabled during setting of known valid items - self.enabled = True - - if log: - self._log = log - else: - import sys - self._log = logging.getLogger('CSSUTILS') - hdlr = logging.StreamHandler(sys.stderr) - formatter = logging.Formatter('%(levelname)s\t%(message)s') - hdlr.setFormatter(formatter) - self._log.addHandler(hdlr) - self._log.setLevel(defaultloglevel) - - self.raiseExceptions = raiseExceptions - - def __getattr__(self, name): - "use self._log items" - calls = ('debug', 'info', 'warn', 'error', 'critical', 'fatal') - other = ('setLevel', 'getEffectiveLevel', 'addHandler', 'removeHandler') - - if name in calls: - self._logcall = getattr(self._log, name) - return self.__handle - elif name in other: - return getattr(self._log, name) - else: - raise AttributeError( - '(errorhandler) No Attribute %r found' % name) - - def __handle(self, msg=u'', token=None, error=xml.dom.SyntaxErr, - neverraise=False, args=None): - """ - handles all calls - logs or raises exception - """ - if self.enabled: - line, col = None, None - if token: - if isinstance(token, tuple): - value, line, col = token[1], token[2], token[3] - else: - value, line, col = token.value, token.line, token.col - msg = u'%s [%s:%s: %s]' % ( - msg, line, col, value) - - if error and self.raiseExceptions and not neverraise: - if isinstance(error, urllib2.HTTPError) or isinstance(error, urllib2.URLError): - raise - elif issubclass(error, xml.dom.DOMException): - error.line = line - error.col = col - # raise error(msg, line, col) - # else: - raise error(msg) - else: - self._logcall(msg) - - def setLog(self, log): - """set log of errorhandler's log""" - self._log = log - - @Deprecated('Use setLog() instead.') - def setlog(self, log): - self.setLog(log) - - @Deprecated('Use setLevel() instead.') - def setloglevel(self, level): - self.setLevel(level) - - -class ErrorHandler(_ErrorHandler): - "Singleton, see _ErrorHandler" - instance = None - - def __init__(self, - log=None, defaultloglevel=logging.INFO, raiseExceptions=True): - - if ErrorHandler.instance is None: - ErrorHandler.instance = _ErrorHandler(log=log, - defaultloglevel=defaultloglevel, - raiseExceptions=raiseExceptions) - self.__dict__ = ErrorHandler.instance.__dict__ diff --git a/src/cssutils/helper.py b/src/cssutils/helper.py deleted file mode 100644 index 513c8712da..0000000000 --- a/src/cssutils/helper.py +++ /dev/null @@ -1,137 +0,0 @@ -"""cssutils helper -""" -__docformat__ = 'restructuredtext' -__version__ = '$Id: errorhandler.py 1234 2008-05-22 20:26:12Z cthedot $' - -import os -import re -import sys -import urllib - -class Deprecated(object): - """This is a decorator which can be used to mark functions - as deprecated. It will result in a warning being emitted - when the function is used. - - It accepts a single paramter ``msg`` which is shown with the warning. - It should contain information which function or method to use instead. - """ - def __init__(self, msg): - self.msg = msg - - def __call__(self, func): - def newFunc(*args, **kwargs): - import warnings - warnings.warn("Call to deprecated method %r. %s" % - (func.__name__, self.msg), - category=DeprecationWarning, - stacklevel=2) - return func(*args, **kwargs) - newFunc.__name__ = func.__name__ - newFunc.__doc__ = func.__doc__ - newFunc.__dict__.update(func.__dict__) - return newFunc - -# simple escapes, all non unicodes -_simpleescapes = re.compile(ur'(\\[^0-9a-fA-F])').sub -def normalize(x): - """ - normalizes x, namely: - - - remove any \ before non unicode sequences (0-9a-zA-Z) so for - x=="c\olor\" return "color" (unicode escape sequences should have - been resolved by the tokenizer already) - - lowercase - """ - if x: - def removeescape(matchobj): - return matchobj.group(0)[1:] - x = _simpleescapes(removeescape, x) - return x.lower() - else: - return x - -def path2url(path): - """Return file URL of `path`""" - return u'file:' + urllib.pathname2url(os.path.abspath(path)) - -def pushtoken(token, tokens): - """Return new generator starting with token followed by all tokens in - ``tokens``""" - # TODO: may use itertools.chain? - yield token - for t in tokens: - yield t - -def string(value): - """ - Serialize value with quotes e.g.:: - - ``a \'string`` => ``'a \'string'`` - """ - # \n = 0xa, \r = 0xd, \f = 0xc - value = value.replace(u'\n', u'\\a ').replace( - u'\r', u'\\d ').replace( - u'\f', u'\\c ').replace( - u'"', u'\\"') - - if value.endswith(u'\\'): - value = value[:-1] + u'\\\\' - - return u'"%s"' % value - -def stringvalue(string): - """ - Retrieve actual value of string without quotes. Escaped - quotes inside the value are resolved, e.g.:: - - ``'a \'string'`` => ``a 'string`` - """ - return string.replace(u'\\'+string[0], string[0])[1:-1] - -_match_forbidden_in_uri = re.compile(ur'''.*?[\(\)\s\;,'"]''', re.U).match -def uri(value): - """ - Serialize value by adding ``url()`` and with quotes if needed e.g.:: - - ``"`` => ``url("\"")`` - """ - if _match_forbidden_in_uri(value): - value = string(value) - return u'url(%s)' % value - -def urivalue(uri): - """ - Return actual content without surrounding "url(" and ")" - and removed surrounding quotes too including contained - escapes of quotes, e.g.:: - - ``url("\"")`` => ``"`` - """ - uri = uri[uri.find('(')+1:-1].strip() - if uri and (uri[0] in '\'"') and (uri[0] == uri[-1]): - return stringvalue(uri) - else: - return uri - -#def normalnumber(num): -# """ -# Return normalized number as string. -# """ -# sign = '' -# if num.startswith('-'): -# sign = '-' -# num = num[1:] -# elif num.startswith('+'): -# num = num[1:] -# -# if float(num) == 0.0: -# return '0' -# else: -# if num.find('.') == -1: -# return sign + str(int(num)) -# else: -# a, b = num.split('.') -# if not a: -# a = '0' -# return '%s%s.%s' % (sign, int(a), b) diff --git a/src/cssutils/parse.py b/src/cssutils/parse.py deleted file mode 100644 index 4330f153f7..0000000000 --- a/src/cssutils/parse.py +++ /dev/null @@ -1,185 +0,0 @@ -#!/usr/bin/env python -"""A validating CSSParser""" -__all__ = ['CSSParser'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: parse.py 1754 2009-05-30 14:50:13Z cthedot $' - -from helper import Deprecated, path2url -import codecs -import cssutils -import os -import tokenize2 -import urllib - -class CSSParser(object): - """Parse a CSS StyleSheet from URL, string or file and return a DOM Level 2 - CSS StyleSheet object. - - Usage:: - - parser = CSSParser() - # optionally - parser.setFetcher(fetcher) - sheet = parser.parseFile('test1.css', 'ascii') - print sheet.cssText - """ - def __init__(self, log=None, loglevel=None, raiseExceptions=None, - fetcher=None): - """ - log - logging object - loglevel - logging loglevel - raiseExceptions - if log should simply log (default) or raise errors during - parsing. Later while working with the resulting sheets - the setting used in cssutils.log.raiseExeptions is used - fetcher - see ``setFetcher(fetcher)`` - """ - if log is not None: - cssutils.log.setLog(log) - if loglevel is not None: - cssutils.log.setLevel(loglevel) - - # remember global setting - self.__globalRaising = cssutils.log.raiseExceptions - if raiseExceptions: - self.__parseRaising = raiseExceptions - else: - # DEFAULT during parse - self.__parseRaising = False - - self.__tokenizer = tokenize2.Tokenizer() - self.setFetcher(fetcher) - - def __parseSetting(self, parse): - """during parse exceptions may be handled differently depending on - init parameter ``raiseExceptions`` - """ - if parse: - cssutils.log.raiseExceptions = self.__parseRaising - else: - cssutils.log.raiseExceptions = self.__globalRaising - - def parseString(self, cssText, encoding=None, href=None, media=None, - title=None): - """Parse `cssText` as :class:`~cssutils.css.CSSStyleSheet`. - Errors may be raised (e.g. UnicodeDecodeError). - - :param cssText: - CSS string to parse - :param encoding: - If ``None`` the encoding will be read from BOM or an @charset - rule or defaults to UTF-8. - If given overrides any found encoding including the ones for - imported sheets. - It also will be used to decode `cssText` if given as a (byte) - string. - :param href: - The ``href`` attribute to assign to the parsed style sheet. - Used to resolve other urls in the parsed sheet like @import hrefs. - :param media: - The ``media`` attribute to assign to the parsed style sheet - (may be a MediaList, list or a string). - :param title: - The ``title`` attribute to assign to the parsed style sheet. - :returns: - :class:`~cssutils.css.CSSStyleSheet`. - """ - self.__parseSetting(True) - if isinstance(cssText, str): - cssText = codecs.getdecoder('css')(cssText, encoding=encoding)[0] - - sheet = cssutils.css.CSSStyleSheet(href=href, - media=cssutils.stylesheets.MediaList(media), - title=title) - sheet._setFetcher(self.__fetcher) - # tokenizing this ways closes open constructs and adds EOF - sheet._setCssTextWithEncodingOverride(self.__tokenizer.tokenize(cssText, - fullsheet=True), - encodingOverride=encoding) - self.__parseSetting(False) - return sheet - - def parseFile(self, filename, encoding=None, - href=None, media=None, title=None): - """Retrieve content from `filename` and parse it. Errors may be raised - (e.g. IOError). - - :param filename: - of the CSS file to parse, if no `href` is given filename is - converted to a (file:) URL and set as ``href`` of resulting - stylesheet. - If `href` is given it is set as ``sheet.href``. Either way - ``sheet.href`` is used to resolve e.g. stylesheet imports via - @import rules. - :param encoding: - Value ``None`` defaults to encoding detection via BOM or an - @charset rule. - Other values override detected encoding for the sheet at - `filename` including any imported sheets. - :returns: - :class:`~cssutils.css.CSSStyleSheet`. - """ - if not href: - # prepend // for file URL, urllib does not do this? - #href = u'file:' + urllib.pathname2url(os.path.abspath(filename)) - href = path2url(filename) - - return self.parseString(open(filename, 'rb').read(), - encoding=encoding, # read returns a str - href=href, media=media, title=title) - - def parseUrl(self, href, encoding=None, media=None, title=None): - """Retrieve content from URL `href` and parse it. Errors may be raised - (e.g. URLError). - - :param href: - URL of the CSS file to parse, will also be set as ``href`` of - resulting stylesheet - :param encoding: - Value ``None`` defaults to encoding detection via HTTP, BOM or an - @charset rule. - A value overrides detected encoding for the sheet at ``href`` - including any imported sheets. - :returns: - :class:`~cssutils.css.CSSStyleSheet`. - """ - encoding, enctype, text = cssutils.util._readUrl(href, - overrideEncoding=encoding) - if enctype == 5: - # do not used if defaulting to UTF-8 - encoding = None - - if text is not None: - return self.parseString(text, encoding=encoding, - href=href, media=media, title=title) - - def setFetcher(self, fetcher=None): - """Replace the default URL fetch function with a custom one. - - :param fetcher: - A function which gets a single parameter - - ``url`` - the URL to read - - and must return ``(encoding, content)`` where ``encoding`` is the - HTTP charset normally given via the Content-Type header (which may - simply omit the charset in which case ``encoding`` would be - ``None``) and ``content`` being the string (or unicode) content. - - The Mimetype should be 'text/css' but this has to be checked by the - fetcher itself (the default fetcher emits a warning if encountering - a different mimetype). - - Calling ``setFetcher`` with ``fetcher=None`` resets cssutils - to use its default function. - """ - self.__fetcher = fetcher - - @Deprecated('Use cssutils.CSSParser().parseFile() instead.') - def parse(self, filename, encoding=None, - href=None, media=None, title=None): - self.parseFile(filename, encoding, href, media, title) diff --git a/src/cssutils/prodparser.py b/src/cssutils/prodparser.py deleted file mode 100644 index 368f9a7b5b..0000000000 --- a/src/cssutils/prodparser.py +++ /dev/null @@ -1,666 +0,0 @@ -# -*- coding: utf-8 -*- -"""Productions parser used by css and stylesheets classes to parse -test into a cssutils.util.Seq and at the same time retrieving -additional specific cssutils.util.Item objects for later use. - -TODO: - - ProdsParser - - handle EOF or STOP? - - handle unknown @rules - - handle S: maybe save to Seq? parameterized? - - store['_raw']: always? - - - Sequence: - - opt first(), naive impl for now - -""" -__all__ = ['ProdParser', 'Sequence', 'Choice', 'Prod', 'PreDef'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: parse.py 1418 2008-08-09 19:27:50Z cthedot $' - -import cssutils -import sys - - -class ParseError(Exception): - """Base Exception class for ProdParser (used internally).""" - pass - -class Done(ParseError): - """Raised if Sequence or Choice is finished and no more Prods left.""" - pass - -class Exhausted(ParseError): - """Raised if Sequence or Choice is finished but token is given.""" - pass - -class Missing(ParseError): - """Raised if Sequence or Choice is not finished but no matching token given.""" - pass - -class NoMatch(ParseError): - """Raised if nothing in Sequence or Choice does match.""" - pass - - -class Choice(object): - """A Choice of productions (Sequence or single Prod).""" - - def __init__(self, *prods, **options): - """ - *prods - Prod or Sequence objects - options: - optional=False - """ - self._prods = prods - - try: - self.optional = options['optional'] - except KeyError, e: - for p in self._prods: - if p.optional: - self.optional = True - break - else: - self.optional = False - - self.reset() - - def reset(self): - """Start Choice from zero""" - self._exhausted = False - - def matches(self, token): - """Check if token matches""" - for prod in self._prods: - if prod.matches(token): - return True - return False - - def nextProd(self, token): - """ - Return: - - - next matching Prod or Sequence - - ``None`` if any Prod or Sequence is optional and no token matched - - raise ParseError if nothing matches and all are mandatory - - raise Exhausted if choice already done - - ``token`` may be None but this occurs when no tokens left.""" - if not self._exhausted: - optional = False - for x in self._prods: - if x.matches(token): - self._exhausted = True - x.reset() - return x - elif x.optional: - optional = True - else: - if not optional: - # None matched but also None is optional - raise ParseError(u'No match in %s' % self) - elif token: - raise Exhausted(u'Extra token') - - def __str__(self): - return u'Choice(%s)' % u', '.join([str(x) for x in self._prods]) - - -class Sequence(object): - """A Sequence of productions (Choice or single Prod).""" - def __init__(self, *prods, **options): - """ - *prods - Prod or Sequence objects - **options: - minmax = lambda: (1, 1) - callback returning number of times this sequence may run - """ - self._prods = prods - try: - minmax = options['minmax'] - except KeyError: - minmax = lambda: (1, 1) - - self._min, self._max = minmax() - if self._max is None: - # unlimited - try: - # py2.6/3 - self._max = sys.maxsize - except AttributeError: - # py<2.6 - self._max = sys.maxint - - self._prodcount = len(self._prods) - self.reset() - - def matches(self, token): - """Called by Choice to try to find if Sequence matches.""" - for prod in self._prods: - if prod.matches(token): - return True - try: - if not prod.optional: - break - except AttributeError: - pass - return False - - def reset(self): - """Reset this Sequence if it is nested.""" - self._roundstarted = False - self._i = 0 - self._round = 0 - - def _currentName(self): - """Return current element of Sequence, used by name""" - # TODO: current impl first only if 1st if an prod! - for prod in self._prods[self._i:]: - if not prod.optional: - return str(prod) - else: - return 'Sequence' - - optional = property(lambda self: self._min == 0) - - def nextProd(self, token): - """Return - - - next matching Prod or Choice - - raises ParseError if nothing matches - - raises Exhausted if sequence already done - """ - while self._round < self._max: - # for this round - i = self._i - round = self._round - p = self._prods[i] - if i == 0: - self._roundstarted = False - - # for next round - self._i += 1 - if self._i == self._prodcount: - self._round += 1 - self._i = 0 - - if p.matches(token): - self._roundstarted = True - # reset nested Choice or Prod to use from start - p.reset() - return p - - elif p.optional: - continue - - elif round < self._min: - raise Missing(u'Missing token for production %s' % p) - - elif not token: - if self._roundstarted: - raise Missing(u'Missing token for production %s' % p) - else: - raise Done() - - else: - raise NoMatch(u'No matching production for token') - - if token: - raise Exhausted(u'Extra token') - - def __str__(self): - return u'Sequence(%s)' % u', '.join([str(x) for x in self._prods]) - - -class Prod(object): - """Single Prod in Sequence or Choice.""" - def __init__(self, name, match, optional=False, - toSeq=None, toStore=None, - stop=False, stopAndKeep=False, - nextSor=False, mayEnd=False): - """ - name - name used for error reporting - match callback - function called with parameters tokentype and tokenvalue - returning True, False or raising ParseError - toSeq callback (optional) or False - calling toSeq(token, tokens) returns (type_, val) == (token[0], token[1]) - to be appended to seq else simply unaltered (type_, val) - - if False nothing is added - - toStore (optional) - key to save util.Item to store or callback(store, util.Item) - optional = False - wether Prod is optional or not - stop = False - if True stop parsing of tokens here - stopAndKeep - if True stop parsing of tokens here but return stopping - token in unused tokens - nextSor=False - next is S or other like , or / (CSSValue) - mayEnd = False - no token must follow even defined by Sequence. - Used for operator ',/ ' currently only - """ - self._name = name - self.match = match - self.optional = optional - self.stop = stop - self.stopAndKeep = stopAndKeep - self.nextSor = nextSor - self.mayEnd = mayEnd - - def makeToStore(key): - "Return a function used by toStore." - def toStore(store, item): - "Set or append store item." - if key in store: - store[key].append(item) - else: - store[key] = item - return toStore - - if toSeq or toSeq is False: - # called: seq.append(toSeq(value)) - self.toSeq = toSeq - else: - self.toSeq = lambda t, tokens: (t[0], t[1]) - - if hasattr(toStore, '__call__'): - self.toStore = toStore - elif toStore: - self.toStore = makeToStore(toStore) - else: - # always set! - self.toStore = None - - def matches(self, token): - """Return if token matches.""" - if not token: - return False - type_, val, line, col = token - return self.match(type_, val) - - def reset(self): - pass - - def __str__(self): - return self._name - - def __repr__(self): - return "" % ( - self.__class__.__name__, self._name, id(self)) - - -# global tokenizer as there is only one! -tokenizer = cssutils.tokenize2.Tokenizer() - -class ProdParser(object): - """Productions parser.""" - def __init__(self, clear=True): - self.types = cssutils.cssproductions.CSSProductions - self._log = cssutils.log - if clear: - tokenizer.clear() - - def _texttotokens(self, text): - """Build a generator which is the only thing that is parsed! - old classes may use lists etc - """ - if isinstance(text, basestring): - # DEFAULT, to tokenize strip space - return tokenizer.tokenize(text.strip()) - - elif isinstance(text, tuple): - # OLD: (token, tokens) or a single token - if len(text) == 2: - # (token, tokens) - def gen(token, tokens): - "new generator appending token and tokens" - yield token - for t in tokens: - yield t - - return (t for t in gen(*text)) - - else: - # single token - return (t for t in [text]) - - elif isinstance(text, list): - # OLD: generator from list - return (t for t in text) - - else: - # DEFAULT, already tokenized, assume generator - return text - - def _SorTokens(self, tokens, until=',/'): - """New tokens generator which has S tokens removed, - if followed by anything in ``until``, normally a ``,``.""" - def removedS(tokens): - for token in tokens: - if token[0] == self.types.S: - try: - next_ = tokens.next() - except StopIteration: - yield token - else: - if next_[1] in until: - # omit S as e.g. ``,`` has been found - yield next_ - elif next_[0] == self.types.COMMENT: - # pass COMMENT - yield next_ - else: - yield token - yield next_ - - elif token[0] == self.types.COMMENT: - # pass COMMENT - yield token - else: - yield token - break - # normal mode again - for token in tokens: - yield token - - return (token for token in removedS(tokens)) - - def parse(self, text, name, productions, keepS=False, store=None): - """ - text (or token generator) - to parse, will be tokenized if not a generator yet - - may be: - - a string to be tokenized - - a single token, a tuple - - a tuple of (token, tokensGenerator) - - already tokenized so a tokens generator - - name - used for logging - productions - used to parse tokens - keepS - if WS should be added to Seq or just be ignored - store UPDATED - If a Prod defines ``toStore`` the key defined there - is a key in store to be set or if store[key] is a list - the next Item is appended here. - - TODO: NEEDED? : - Key ``raw`` is always added and holds all unprocessed - values found - - returns - :wellformed: True or False - :seq: a filled cssutils.util.Seq object which is NOT readonly yet - :store: filled keys defined by Prod.toStore - :unusedtokens: token generator containing tokens not used yet - """ - tokens = self._texttotokens(text) - if not tokens: - self._log.error(u'No content to parse.') - # TODO: return??? - - seq = cssutils.util.Seq(readonly=False) - if not store: # store for specific values - store = {} - prods = [productions] # stack of productions - wellformed = True - - # while no real token is found any S are ignored - started = False - prod = None - # flag if default S handling should be done - defaultS = True - while True: - try: - token = tokens.next() - except StopIteration: - break - type_, val, line, col = token - - # default productions - if type_ == self.types.COMMENT: - # always append COMMENT - seq.append(cssutils.css.CSSComment(val), - cssutils.css.CSSComment, line, col) - elif defaultS and type_ == self.types.S: - # append S (but ignore starting ones) - if not keepS or not started: - continue - else: - seq.append(val, type_, line, col) -# elif type_ == self.types.ATKEYWORD: -# # @rule -# r = cssutils.css.CSSUnknownRule(cssText=val) -# seq.append(r, type(r), line, col) - elif type_ == self.types.INVALID: - # invalidate parse - wellformed = False - self._log.error(u'Invalid token: %r' % (token,)) - break - elif type_ == 'EOF': - # do nothing? (self.types.EOF == True!) - pass - else: - started = True # check S now - nextSor = False # reset - - try: - while True: - # find next matching production - try: - prod = prods[-1].nextProd(token) - except (Exhausted, NoMatch), e: - # try next - prod = None - if isinstance(prod, Prod): - # found actual Prod, not a Choice or Sequence - break - elif prod: - # nested Sequence, Choice - prods.append(prod) - else: - # nested exhausted, try in parent - if len(prods) > 1: - prods.pop() - else: - raise ParseError('No match') - except ParseError, e: - wellformed = False - self._log.error(u'%s: %s: %r' % (name, e, token)) - break - else: - # process prod - if prod.toSeq and not prod.stopAndKeep: - type_, val = prod.toSeq(token, tokens) - if val is not None: - seq.append(val, type_, line, col) - if prod.toStore: - prod.toStore(store, seq[-1]) - - if prod.stop: # EOF? - # stop here and ignore following tokens - break - - if prod.stopAndKeep: # e.g. ; - # stop here and ignore following tokens - # but keep this token for next run - tokenizer.push(token) - break - - if prod.nextSor: - # following is S or other token (e.g. ",")? - # remove S if - tokens = self._SorTokens(tokens, ',/') - defaultS = False - else: - defaultS = True - - lastprod = prod - while True: - # all productions exhausted? - try: - prod = prods[-1].nextProd(token=None) - except Done, e: - # ok - prod = None - - except Missing, e: - prod = None - # last was a S operator which may End a Sequence, then ok - if hasattr(lastprod, 'mayEnd') and not lastprod.mayEnd: - wellformed = False - self._log.error(u'%s: %s' % (name, e)) - - except ParseError, e: - prod = None - wellformed = False - self._log.error(u'%s: %s' % (name, e)) - - else: - if prods[-1].optional: - prod = None - elif prod and prod.optional: - # ignore optional - continue - - if prod and not prod.optional: - wellformed = False - self._log.error(u'%s: Missing token for production %r' - % (name, str(prod))) - break - elif len(prods) > 1: - # nested exhausted, next in parent - prods.pop() - else: - break - - # trim S from end - seq.rstrip() - return wellformed, seq, store, tokens - - -class PreDef(object): - """Predefined Prod definition for use in productions definition - for ProdParser instances. - """ - types = cssutils.cssproductions.CSSProductions - - @staticmethod - def char(name='char', char=u',', toSeq=None, - stop=False, stopAndKeep=False, - optional=True, nextSor=False): - "any CHAR" - return Prod(name=name, match=lambda t, v: v == char, toSeq=toSeq, - stop=stop, stopAndKeep=stopAndKeep, optional=optional, - nextSor=nextSor) - - @staticmethod - def comma(): - return PreDef.char(u'comma', u',') - - @staticmethod - def dimension(nextSor=False): - return Prod(name=u'dimension', - match=lambda t, v: t == PreDef.types.DIMENSION, - toSeq=lambda t, tokens: (t[0], cssutils.helper.normalize(t[1])), - nextSor=nextSor) - - @staticmethod - def function(toSeq=None, nextSor=False): - return Prod(name=u'function', - match=lambda t, v: t == PreDef.types.FUNCTION, - toSeq=toSeq, - nextSor=nextSor) - - @staticmethod - def funcEnd(stop=False): - ")" - return PreDef.char(u'end FUNC ")"', u')', - stop=stop) - - @staticmethod - def ident(toStore=None, nextSor=False): - return Prod(name=u'ident', - match=lambda t, v: t == PreDef.types.IDENT, - toStore=toStore, - nextSor=nextSor) - - @staticmethod - def number(nextSor=False): - return Prod(name=u'number', - match=lambda t, v: t == PreDef.types.NUMBER, - nextSor=nextSor) - - @staticmethod - def string(nextSor=False): - "string delimiters are removed by default" - return Prod(name=u'string', - match=lambda t, v: t == PreDef.types.STRING, - toSeq=lambda t, tokens: (t[0], cssutils.helper.stringvalue(t[1])), - nextSor=nextSor) - - @staticmethod - def percentage(nextSor=False): - return Prod(name=u'percentage', - match=lambda t, v: t == PreDef.types.PERCENTAGE, - nextSor=nextSor) - - @staticmethod - def S(toSeq=None, optional=False): - return Prod(name=u'whitespace', - match=lambda t, v: t == PreDef.types.S, - toSeq=toSeq, - optional=optional, - mayEnd=True) - - @staticmethod - def unary(): - "+ or -" - return Prod(name=u'unary +-', match=lambda t, v: v in (u'+', u'-'), - optional=True) - - @staticmethod - def uri(nextSor=False): - "'url(' and ')' are removed and URI is stripped" - return Prod(name=u'URI', - match=lambda t, v: t == PreDef.types.URI, - toSeq=lambda t, tokens: (t[0], cssutils.helper.urivalue(t[1])), - nextSor=nextSor) - - @staticmethod - def hexcolor(nextSor=False): - "#123456" - return Prod(name='HEX color', - match=lambda t, v: t == PreDef.types.HASH and ( - len(v) == 4 or len(v) == 7), - nextSor=nextSor - ) - - @staticmethod - def unicode_range(nextSor=False): - "u+123456-abc normalized to lower `u`" - return Prod(name='unicode-range', - match=lambda t, v: t == PreDef.types.UNICODE_RANGE, - toSeq=lambda t, tokens: (t[0], t[1].lower()), - nextSor=nextSor - ) - - @staticmethod - def variable(toSeq=None, nextSor=False): - return Prod(name=u'variable', - match=lambda t, v: u'var(' == cssutils.helper.normalize(v), - toSeq=toSeq, - nextSor=nextSor) - diff --git a/src/cssutils/profiles.py b/src/cssutils/profiles.py deleted file mode 100644 index 09d1e9a007..0000000000 --- a/src/cssutils/profiles.py +++ /dev/null @@ -1,572 +0,0 @@ -"""CSS profiles. - -Profiles is based on code by Kevin D. Smith, orginally used as cssvalues, -thanks! -""" -__all__ = ['Profiles'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: cssproperties.py 1116 2008-03-05 13:52:23Z cthedot $' - -import re - -class NoSuchProfileException(Exception): - """Raised if no profile with given name is found""" - pass - - -class Profiles(object): - """ - All profiles used for validation. ``cssutils.profile`` is a - preset object of this class and used by all properties for validation. - - Predefined profiles are (use - :meth:`~cssutils.profiles.Profiles.propertiesByProfile` to - get a list of defined properties): - - :attr:`~cssutils.profiles.Profiles.CSS_LEVEL_2` - Properties defined by CSS2.1 - :attr:`~cssutils.profiles.Profiles.CSS3_COLOR` - CSS 3 color properties - :attr:`~cssutils.profiles.Profiles.CSS3_BOX` - Currently overflow related properties only - :attr:`~cssutils.profiles.Profiles.CSS3_PAGED_MEDIA` - As defined at http://www.w3.org/TR/css3-page/ (at 090307) - - Predefined macros are: - - :attr:`~cssutils.profiles.Profiles._TOKEN_MACROS` - Macros containing the token values as defined to CSS2 - :attr:`~cssutils.profiles.Profiles._MACROS` - Additional general macros. - - If you want to redefine any of these macros do this in your custom - macros. - """ - CSS_LEVEL_2 = 'CSS Level 2.1' - CSS3_BOX = CSS_BOX_LEVEL_3 = 'CSS Box Module Level 3' - CSS3_COLOR = CSS_COLOR_LEVEL_3 = 'CSS Color Module Level 3' - CSS3_FONTS = 'CSS Fonts Module Level 3' - CSS3_FONT_FACE = 'CSS Fonts Module Level 3 @font-face properties' - CSS3_PAGED_MEDIA = 'CSS3 Paged Media Module' - - _TOKEN_MACROS = { - 'ident': r'[-]?{nmstart}{nmchar}*', - 'name': r'{nmchar}+', - 'nmstart': r'[_a-z]|{nonascii}|{escape}', - 'nonascii': r'[^\0-\177]', - 'unicode': r'\\[0-9a-f]{1,6}(\r\n|[ \n\r\t\f])?', - 'escape': r'{unicode}|\\[ -~\200-\777]', - # 'escape': r'{unicode}|\\[ -~\200-\4177777]', - 'int': r'[-]?\d+', - 'nmchar': r'[\w-]|{nonascii}|{escape}', - 'num': r'[-]?\d+|[-]?\d*\.\d+', - 'positivenum': r'\d+|\d*\.\d+', - 'number': r'{num}', - 'string': r'{string1}|{string2}', - 'string1': r'"(\\\"|[^\"])*"', - 'uri': r'url\({w}({string}|(\\\)|[^\)])+){w}\)', - 'string2': r"'(\\\'|[^\'])*'", - 'nl': r'\n|\r\n|\r|\f', - 'w': r'\s*', - } - _MACROS = { - 'hexcolor': r'#[0-9a-f]{3}|#[0-9a-f]{6}', - 'rgbcolor': r'rgb\({w}{int}{w},{w}{int}{w},{w}{int}{w}\)|rgb\({w}{num}%{w},{w}{num}%{w},{w}{num}%{w}\)', - 'namedcolor': r'(transparent|orange|maroon|red|orange|yellow|olive|purple|fuchsia|white|lime|green|navy|blue|aqua|teal|black|silver|gray)', - 'uicolor': r'(ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText)', - 'color': r'{namedcolor}|{hexcolor}|{rgbcolor}|{uicolor}', - #'color': r'(maroon|red|orange|yellow|olive|purple|fuchsia|white|lime|green|navy|blue|aqua|teal|black|silver|gray|ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText)|#[0-9a-f]{3}|#[0-9a-f]{6}|rgb\({w}{int}{w},{w}{int}{w},{w}{int}{w}\)|rgb\({w}{num}%{w},{w}{num}%{w},{w}{num}%{w}\)', - 'integer': r'{int}', - 'length': r'0|{num}(em|ex|px|in|cm|mm|pt|pc)', - 'positivelength': r'0|{positivenum}(em|ex|px|in|cm|mm|pt|pc)', - 'angle': r'0|{num}(deg|grad|rad)', - 'time': r'0|{num}m?s', - 'frequency': r'0|{num}k?Hz', - 'percentage': r'{num}%', - } - - def __init__(self, log=None): - """A few known profiles are predefined.""" - self._log = log - self._profileNames = [] # to keep order, REFACTOR! - self._profiles = {} - self._defaultProfiles = None - - self.addProfile(self.CSS_LEVEL_2, - properties[self.CSS_LEVEL_2], - macros[self.CSS_LEVEL_2]) - self.addProfile(self.CSS3_BOX, - properties[self.CSS3_BOX], - macros[self.CSS3_BOX]) - self.addProfile(self.CSS3_COLOR, - properties[self.CSS3_COLOR], - macros[self.CSS3_COLOR]) - - self.addProfile(self.CSS3_FONTS, - properties[self.CSS3_FONTS], - macros[self.CSS3_FONTS]) - - # new object for font-face only? - self.addProfile(self.CSS3_FONT_FACE, - properties[self.CSS3_FONT_FACE], - macros[self.CSS3_FONTS]) # same - - self.addProfile(self.CSS3_PAGED_MEDIA, - properties[self.CSS3_PAGED_MEDIA], - macros[self.CSS3_PAGED_MEDIA]) - - self.__update_knownNames() - - def _expand_macros(self, dictionary, macros): - """Expand macros in token dictionary""" - def macro_value(m): - return '(?:%s)' % macros[m.groupdict()['macro']] - for key, value in dictionary.items(): - if not hasattr(value, '__call__'): - while re.search(r'{[a-z][a-z0-9-]*}', value): - value = re.sub(r'{(?P[a-z][a-z0-9-]*)}', - macro_value, value) - dictionary[key] = value - return dictionary - - def _compile_regexes(self, dictionary): - """Compile all regular expressions into callable objects""" - for key, value in dictionary.items(): - if not hasattr(value, '__call__'): - value = re.compile('^(?:%s)$' % value, re.I).match - dictionary[key] = value - - return dictionary - - def __update_knownNames(self): - self._knownNames = [] - for properties in self._profiles.values(): - self._knownNames.extend(properties.keys()) - - def _getDefaultProfiles(self): - "If not explicitly set same as Profiles.profiles but in reverse order." - if not self._defaultProfiles: - return self.profiles - else: - return self._defaultProfiles - - def _setDefaultProfiles(self, profiles): - "profiles may be a single or a list of profile names" - if isinstance(profiles, basestring): - self._defaultProfiles = (profiles,) - else: - self._defaultProfiles = profiles - - defaultProfiles = property(_getDefaultProfiles, - _setDefaultProfiles, - doc=u"Names of profiles to use for validation." - u"To use e.g. the CSS2 profile set " - u"``cssutils.profile.defaultProfiles = " - u"cssutils.profile.CSS_LEVEL_2``") - - profiles = property(lambda self: self._profileNames, - doc=u'Names of all profiles in order as defined.') - - knownNames = property(lambda self: self._knownNames, - doc="All known property names of all profiles.") - - def addProfile(self, profile, properties, macros=None): - """Add a new profile with name `profile` (e.g. 'CSS level 2') - and the given `properties`. - - :param profile: - the new `profile`'s name - :param properties: - a dictionary of ``{ property-name: propery-value }`` items where - property-value is a regex which may use macros defined in given - ``macros`` or the standard macros Profiles.tokens and - Profiles.generalvalues. - - ``propery-value`` may also be a function which takes a single - argument which is the value to validate and which should return - True or False. - Any exceptions which may be raised during this custom validation - are reported or raised as all other cssutils exceptions depending - on cssutils.log.raiseExceptions which e.g during parsing normally - is False so the exceptions would be logged only. - :param macros: - may be used in the given properties definitions. There are some - predefined basic macros which may always be used in - :attr:`Profiles._TOKEN_MACROS` and :attr:`Profiles._MACROS`. - """ - if not macros: - macros = {} - m = Profiles._TOKEN_MACROS.copy() - m.update(Profiles._MACROS) - m.update(macros) - properties = self._expand_macros(properties, m) - self._profileNames.append(profile) - self._profiles[profile] = self._compile_regexes(properties) - - self.__update_knownNames() - - def removeProfile(self, profile=None, all=False): - """Remove `profile` or remove `all` profiles. - - :param profile: - profile name to remove - :param all: - if ``True`` removes all profiles to start with a clean state - :exceptions: - - :exc:`cssutils.profiles.NoSuchProfileException`: - If given `profile` cannot be found. - """ - if all: - self._profiles.clear() - del self._profileNames[:] - else: - try: - del self._profiles[profile] - del self._profileNames[self._profileNames.index(profile)] - except KeyError: - raise NoSuchProfileException(u'No profile %r.' % profile) - - self.__update_knownNames() - - def propertiesByProfile(self, profiles=None): - """Generator: Yield property names, if no `profiles` is given all - profile's properties are used. - - :param profiles: - a single profile name or a list of names. - """ - if not profiles: - profiles = self.profiles - elif isinstance(profiles, basestring): - profiles = (profiles, ) - try: - for profile in sorted(profiles): - for name in sorted(self._profiles[profile].keys()): - yield name - except KeyError, e: - raise NoSuchProfileException(e) - - def validate(self, name, value): - """Check if `value` is valid for given property `name` using **any** - profile. - - :param name: - a property name - :param value: - a CSS value (string) - :returns: - if the `value` is valid for the given property `name` in any - profile - """ - for profile in self.profiles: - if name in self._profiles[profile]: - try: - # custom validation errors are caught - r = bool(self._profiles[profile][name](value)) - except Exception, e: - self._log.error(e, error=Exception) - return False - if r: - return r - return False - - def validateWithProfile(self, name, value, profiles=None): - """Check if `value` is valid for given property `name` returning - ``(valid, profile)``. - - :param name: - a property name - :param value: - a CSS value (string) - :param profiles: - internal parameter used by Property.validate only - :returns: - ``valid, matching, profiles`` where ``valid`` is if the `value` - is valid for the given property `name` in any profile, - ``matching==True`` if it is valid in the given `profiles` - and ``profiles`` the profile names for which the value is valid - (or ``[]`` if not valid at all) - - Example:: - - >>> cssutils.profile.defaultProfiles = cssutils.profile.CSS_LEVEL_2 - >>> print cssutils.profile.validateWithProfile('color', 'rgba(1,1,1,1)') - (True, False, Profiles.CSS3_COLOR) - """ - if name not in self.knownNames: - return False, False, [] - else: - if not profiles: - profiles = self.defaultProfiles - elif isinstance(profiles, basestring): - profiles = (profiles, ) - - for profilename in profiles: - # check given profiles - if name in self._profiles[profilename]: - validate = self._profiles[profilename][name] - try: - if validate(value): - return True, True, [profilename] - except Exception, e: - self._log.error(e, error=Exception) - - for profilename in (p for p in self._profileNames - if p not in profiles): - # check remaining profiles as well - if name in self._profiles[profilename]: - validate = self._profiles[profilename][name] - try: - if validate(value): - return True, False, [profilename] - except Exception, e: - self._log.error(e, error=Exception) - - names = [] - for profilename, properties in self._profiles.items(): - # return profile to which name belongs - if name in properties.keys(): - names.append(profilename) - names.sort() - return False, False, names - - -properties = {} -macros = {} -""" -Define some regular expression fragments that will be used as -macros within the CSS property value regular expressions. -""" -macros[Profiles.CSS_LEVEL_2] = { - 'border-style': 'none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset', - 'border-color': '{color}', - 'border-width': '{length}|thin|medium|thick', - - 'background-color': r'{color}|transparent|inherit', - 'background-image': r'{uri}|none|inherit', - #'background-position': r'({percentage}|{length})(\s*({percentage}|{length}))?|((top|center|bottom)\s*(left|center|right)?)|((left|center|right)\s*(top|center|bottom)?)|inherit', - 'background-position': r'({percentage}|{length}|left|center|right)(\s*({percentage}|{length}|top|center|bottom))?|((top|center|bottom)\s*(left|center|right)?)|((left|center|right)\s*(top|center|bottom)?)|inherit', - 'background-repeat': r'repeat|repeat-x|repeat-y|no-repeat|inherit', - 'background-attachment': r'scroll|fixed|inherit', - - 'shape': r'rect\(({w}({length}|auto}){w},){3}{w}({length}|auto){w}\)', - 'counter': r'counter\({w}{identifier}{w}(?:,{w}{list-style-type}{w})?\)', - 'identifier': r'{ident}', - 'family-name': r'{string}|{identifier}({w}{identifier})*', - 'generic-family': r'serif|sans-serif|cursive|fantasy|monospace', - 'absolute-size': r'(x?x-)?(small|large)|medium', - 'relative-size': r'smaller|larger', - 'font-family': r'(({family-name}|{generic-family}){w},{w})*({family-name}|{generic-family})|inherit', - 'font-size': r'{absolute-size}|{relative-size}|{positivelength}|{percentage}|inherit', - 'font-style': r'normal|italic|oblique|inherit', - 'font-variant': r'normal|small-caps|inherit', - 'font-weight': r'normal|bold|bolder|lighter|[1-9]00|inherit', - 'line-height': r'normal|{number}|{length}|{percentage}|inherit', - 'list-style-image': r'{uri}|none|inherit', - 'list-style-position': r'inside|outside|inherit', - 'list-style-type': r'disc|circle|square|decimal|decimal-leading-zero|lower-roman|upper-roman|lower-greek|lower-(latin|alpha)|upper-(latin|alpha)|armenian|georgian|none|inherit', - 'margin-width': r'{length}|{percentage}|auto', - 'outline-color': r'{color}|invert|inherit', - 'outline-style': r'{border-style}|inherit', - 'outline-width': r'{border-width}|inherit', - 'padding-width': r'{length}|{percentage}', - 'specific-voice': r'{identifier}', - 'generic-voice': r'male|female|child', - 'content': r'{string}|{uri}|{counter}|attr\({w}{identifier}{w}\)|open-quote|close-quote|no-open-quote|no-close-quote', - 'border-attrs': r'{border-width}|{border-style}|{border-color}', - 'background-attrs': r'{background-color}|{background-image}|{background-repeat}|{background-attachment}|{background-position}', - 'list-attrs': r'{list-style-type}|{list-style-position}|{list-style-image}', - 'font-attrs': r'{font-style}|{font-variant}|{font-weight}', - 'outline-attrs': r'{outline-color}|{outline-style}|{outline-width}', - 'text-attrs': r'underline|overline|line-through|blink', - 'overflow': r'visible|hidden|scroll|auto|inherit', -} - -""" -Define the regular expressions for validation all CSS values -""" -properties[Profiles.CSS_LEVEL_2] = { - 'azimuth': r'{angle}|(behind\s+)?(left-side|far-left|left|center-left|center|center-right|right|far-right|right-side)(\s+behind)?|behind|leftwards|rightwards|inherit', - 'background-attachment': r'{background-attachment}', - 'background-color': r'{background-color}', - 'background-image': r'{background-image}', - 'background-position': r'{background-position}', - 'background-repeat': r'{background-repeat}', - # Each piece should only be allowed one time - 'background': r'{background-attrs}(\s+{background-attrs})*|inherit', - 'border-collapse': r'collapse|separate|inherit', - 'border-color': r'({border-color}|transparent)(\s+({border-color}|transparent)){0,3}|inherit', - 'border-spacing': r'{length}(\s+{length})?|inherit', - 'border-style': r'{border-style}(\s+{border-style}){0,3}|inherit', - 'border-top': r'{border-attrs}(\s+{border-attrs})*|inherit', - 'border-right': r'{border-attrs}(\s+{border-attrs})*|inherit', - 'border-bottom': r'{border-attrs}(\s+{border-attrs})*|inherit', - 'border-left': r'{border-attrs}(\s+{border-attrs})*|inherit', - 'border-top-color': r'{border-color}|transparent|inherit', - 'border-right-color': r'{border-color}|transparent|inherit', - 'border-bottom-color': r'{border-color}|transparent|inherit', - 'border-left-color': r'{border-color}|transparent|inherit', - 'border-top-style': r'{border-style}|inherit', - 'border-right-style': r'{border-style}|inherit', - 'border-bottom-style': r'{border-style}|inherit', - 'border-left-style': r'{border-style}|inherit', - 'border-top-width': r'{border-width}|inherit', - 'border-right-width': r'{border-width}|inherit', - 'border-bottom-width': r'{border-width}|inherit', - 'border-left-width': r'{border-width}|inherit', - 'border-width': r'{border-width}(\s+{border-width}){0,3}|inherit', - 'border': r'{border-attrs}(\s+{border-attrs})*|inherit', - 'bottom': r'{length}|{percentage}|auto|inherit', - 'caption-side': r'top|bottom|inherit', - 'clear': r'none|left|right|both|inherit', - 'clip': r'{shape}|auto|inherit', - 'color': r'{color}|inherit', - 'content': r'none|normal|{content}(\s+{content})*|inherit', - 'counter-increment': r'({identifier}(\s+{integer})?)(\s+({identifier}(\s+{integer})))*|none|inherit', - 'counter-reset': r'({identifier}(\s+{integer})?)(\s+({identifier}(\s+{integer})))*|none|inherit', - 'cue-after': r'{uri}|none|inherit', - 'cue-before': r'{uri}|none|inherit', - 'cue': r'({uri}|none|inherit){1,2}|inherit', - 'cursor': r'((({uri}{w},{w})*)?(auto|crosshair|default|pointer|move|(e|ne|nw|n|se|sw|s|w)-resize|text|wait|help|progress))|inherit', - 'direction': r'ltr|rtl|inherit', - 'display': r'inline|block|list-item|run-in|inline-block|table|inline-table|table-row-group|table-header-group|table-footer-group|table-row|table-column-group|table-column|table-cell|table-caption|none|inherit', - 'elevation': r'{angle}|below|level|above|higher|lower|inherit', - 'empty-cells': r'show|hide|inherit', - 'float': r'left|right|none|inherit', - 'font-family': r'{font-family}', - 'font-size': r'{font-size}', - 'font-style': r'{font-style}', - 'font-variant': r'{font-variant}', - 'font-weight': r'{font-weight}', - 'font': r'({font-attrs}\s+)*{font-size}({w}/{w}{line-height})?\s+{font-family}|caption|icon|menu|message-box|small-caption|status-bar|inherit', - 'height': r'{length}|{percentage}|auto|inherit', - 'left': r'{length}|{percentage}|auto|inherit', - 'letter-spacing': r'normal|{length}|inherit', - 'line-height': r'{line-height}', - 'list-style-image': r'{list-style-image}', - 'list-style-position': r'{list-style-position}', - 'list-style-type': r'{list-style-type}', - 'list-style': r'{list-attrs}(\s+{list-attrs})*|inherit', - 'margin-right': r'{margin-width}|inherit', - 'margin-left': r'{margin-width}|inherit', - 'margin-top': r'{margin-width}|inherit', - 'margin-bottom': r'{margin-width}|inherit', - 'margin': r'{margin-width}(\s+{margin-width}){0,3}|inherit', - 'max-height': r'{length}|{percentage}|none|inherit', - 'max-width': r'{length}|{percentage}|none|inherit', - 'min-height': r'{length}|{percentage}|none|inherit', - 'min-width': r'{length}|{percentage}|none|inherit', - 'orphans': r'{integer}|inherit', - 'outline-color': r'{outline-color}', - 'outline-style': r'{outline-style}', - 'outline-width': r'{outline-width}', - 'outline': r'{outline-attrs}(\s+{outline-attrs})*|inherit', - 'overflow': r'{overflow}', - 'padding-top': r'{padding-width}|inherit', - 'padding-right': r'{padding-width}|inherit', - 'padding-bottom': r'{padding-width}|inherit', - 'padding-left': r'{padding-width}|inherit', - 'padding': r'{padding-width}(\s+{padding-width}){0,3}|inherit', - 'page-break-after': r'auto|always|avoid|left|right|inherit', - 'page-break-before': r'auto|always|avoid|left|right|inherit', - 'page-break-inside': r'avoid|auto|inherit', - 'pause-after': r'{time}|{percentage}|inherit', - 'pause-before': r'{time}|{percentage}|inherit', - 'pause': r'({time}|{percentage}){1,2}|inherit', - 'pitch-range': r'{number}|inherit', - 'pitch': r'{frequency}|x-low|low|medium|high|x-high|inherit', - 'play-during': r'{uri}(\s+(mix|repeat))*|auto|none|inherit', - 'position': r'static|relative|absolute|fixed|inherit', - 'quotes': r'({string}\s+{string})(\s+{string}\s+{string})*|none|inherit', - 'richness': r'{number}|inherit', - 'right': r'{length}|{percentage}|auto|inherit', - 'speak-header': r'once|always|inherit', - 'speak-numeral': r'digits|continuous|inherit', - 'speak-punctuation': r'code|none|inherit', - 'speak': r'normal|none|spell-out|inherit', - 'speech-rate': r'{number}|x-slow|slow|medium|fast|x-fast|faster|slower|inherit', - 'stress': r'{number}|inherit', - 'table-layout': r'auto|fixed|inherit', - 'text-align': r'left|right|center|justify|inherit', - 'text-decoration': r'none|{text-attrs}(\s+{text-attrs})*|inherit', - 'text-indent': r'{length}|{percentage}|inherit', - 'text-transform': r'capitalize|uppercase|lowercase|none|inherit', - 'top': r'{length}|{percentage}|auto|inherit', - 'unicode-bidi': r'normal|embed|bidi-override|inherit', - 'vertical-align': r'baseline|sub|super|top|text-top|middle|bottom|text-bottom|{percentage}|{length}|inherit', - 'visibility': r'visible|hidden|collapse|inherit', - 'voice-family': r'({specific-voice}|{generic-voice}{w},{w})*({specific-voice}|{generic-voice})|inherit', - 'volume': r'{number}|{percentage}|silent|x-soft|soft|medium|loud|x-loud|inherit', - 'white-space': r'normal|pre|nowrap|pre-wrap|pre-line|inherit', - 'widows': r'{integer}|inherit', - 'width': r'{length}|{percentage}|auto|inherit', - 'word-spacing': r'normal|{length}|inherit', - 'z-index': r'auto|{integer}|inherit', -} - -# CSS Box Module Level 3 -macros[Profiles.CSS3_BOX] = { - 'overflow': macros[Profiles.CSS_LEVEL_2]['overflow'] - } -properties[Profiles.CSS3_BOX] = { - 'overflow': '{overflow}{w}{overflow}?|inherit', - 'overflow-x': '{overflow}|inherit', - 'overflow-y': '{overflow}|inherit' - } - -# CSS Color Module Level 3 -macros[Profiles.CSS3_COLOR] = { - # orange and transparent in CSS 2.1 - 'namedcolor': r'(currentcolor|transparent|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)', - # orange? - 'rgbacolor': r'rgba\({w}{int}{w},{w}{int}{w},{w}{int}{w},{w}{int}{w}\)|rgba\({w}{num}%{w},{w}{num}%{w},{w}{num}%{w},{w}{num}{w}\)', - 'hslcolor': r'hsl\({w}{int}{w},{w}{num}%{w},{w}{num}%{w}\)|hsla\({w}{int}{w},{w}{num}%{w},{w}{num}%{w},{w}{num}{w}\)', - 'x11color': r'aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen', - 'uicolor': r'(ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText)', - } -properties[Profiles.CSS3_COLOR] = { - 'color': r'{namedcolor}|{hexcolor}|{rgbcolor}|{rgbacolor}|{hslcolor}|inherit', - 'opacity': r'{num}|inherit' - } - -# CSS Fonts Module Level 3 http://www.w3.org/TR/css3-fonts/ -macros[Profiles.CSS3_FONTS] = { - 'family-name': r'{string}|{ident}', # but STRING is effectively an IDENT??? - 'font-face-name': 'local\({w}{ident}{w}\)', - 'font-stretch-names': r'(ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded)', - 'unicode-range': r'[uU]\+[0-9A-Fa-f?]{1,6}(\-[0-9A-Fa-f]{1,6})?' - } -properties[Profiles.CSS3_FONTS] = { - 'font-size-adjust': r'{number}|none|inherit', - 'font-stretch': r'normal|wider|narrower|{font-stretch-names}|inherit' - } -properties[Profiles.CSS3_FONT_FACE] = { - 'font-family': '{family-name}', - 'font-stretch': r'{font-stretch-names}', - 'font-style': r'normal|italic|oblique', - 'font-weight': r'normal|bold|[1-9]00', - 'src': r'({uri}{w}(format\({w}{string}{w}(\,{w}{string}{w})*\))?|{font-face-name})({w},{w}({uri}{w}(format\({w}{string}{w}(\,{w}{string}{w})*\))?|{font-face-name}))*', - 'unicode-range': '{unicode-range}({w},{w}{unicode-range})*' - } - - - -# CSS3 Paged Media -macros[Profiles.CSS3_PAGED_MEDIA] = { - 'pagesize': 'a5|a4|a3|b5|b4|letter|legal|ledger', - 'pagebreak': 'auto|always|avoid|left|right' - } -properties[Profiles.CSS3_PAGED_MEDIA] = { - 'fit': 'fill|hidden|meet|slice', - 'fit-position': r'auto|(({percentage}|{length})(\s*({percentage}|{length}))?|((top|center|bottom)\s*(left|center|right)?)|((left|center|right)\s*(top|center|bottom)?))', - 'image-orientation': 'auto|{angle}', - 'orphans': r'{integer}|inherit', - 'page': 'auto|{ident}', - 'page-break-before': '{pagebreak}|inherit', - 'page-break-after': '{pagebreak}|inherit', - 'page-break-inside': 'auto|avoid|inherit', - 'size': '({length}{w}){1,2}|auto|{pagesize}{w}(?:portrait|landscape)', - 'widows': r'{integer}|inherit' - } - - diff --git a/src/cssutils/sac.py b/src/cssutils/sac.py deleted file mode 100644 index 4e4fe0990f..0000000000 --- a/src/cssutils/sac.py +++ /dev/null @@ -1,428 +0,0 @@ -#!/usr/bin/env python -"""A validating CSSParser""" -__all__ = ['CSSParser'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: parse.py 1754 2009-05-30 14:50:13Z cthedot $' - -import helper -import codecs -import errorhandler -import os -import tokenize2 -import urllib -import sys - - -class ErrorHandler(object): - """Basic class for CSS error handlers. - - This class class provides a default implementation ignoring warnings and - recoverable errors and throwing a SAXParseException for fatal errors. - - If a CSS application needs to implement customized error handling, it must - extend this class and then register an instance with the CSS parser - using the parser's setErrorHandler method. The parser will then report all - errors and warnings through this interface. - - The parser shall use this class instead of throwing an exception: it is - up to the application whether to throw an exception for different types of - errors and warnings. Note, however, that there is no requirement that the - parser continue to provide useful information after a call to fatalError - (in other words, a CSS driver class could catch an exception and report a - fatalError). - """ - def __init__(self): - self._log = errorhandler.ErrorHandler() - - def error(self, exception, token=None): - self._log.error(exception, token, neverraise=True) - - def fatal(self, exception, token=None): - self._log.fatal(exception, token) - - def warn(self, exception, token=None): - self._log.warn(exception, token, neverraise=True) - - -class DocumentHandler(object): - """ - void endFontFace() - Receive notification of the end of a font face statement. - void endMedia(SACMediaList media) - Receive notification of the end of a media statement. - void endPage(java.lang.String name, java.lang.String pseudo_page) - Receive notification of the end of a media statement. - void importStyle(java.lang.String uri, SACMediaList media, java.lang.String defaultNamespaceURI) - Receive notification of a import statement in the style sheet. - void startFontFace() - Receive notification of the beginning of a font face statement. - void startMedia(SACMediaList media) - Receive notification of the beginning of a media statement. - void startPage(java.lang.String name, java.lang.String pseudo_page) - Receive notification of the beginning of a page statement. - """ - def __init__(self): - def log(msg): - sys.stderr.write('INFO\t%s\n' % msg) - self._log = log - - def comment(self, text, line=None, col=None): - "Receive notification of a comment." - self._log("comment %r at [%s, %s]" % (text, line, col)) - - def startDocument(self, encoding): - "Receive notification of the beginning of a style sheet." - # source - self._log("startDocument encoding=%s" % encoding) - - def endDocument(self, source=None, line=None, col=None): - "Receive notification of the end of a document." - self._log("endDocument EOF") - - def importStyle(self, uri, media, name, line=None, col=None): - "Receive notification of a import statement in the style sheet." - # defaultNamespaceURI??? - self._log("importStyle at [%s, %s]" % (line, col)) - - def namespaceDeclaration(self, prefix, uri, line=None, col=None): - "Receive notification of an unknown rule t-rule not supported by this parser." - # prefix might be None! - self._log("namespaceDeclaration at [%s, %s]" % (line, col)) - - def startSelector(self, selectors=None, line=None, col=None): - "Receive notification of the beginning of a rule statement." - # TODO selectorList! - self._log("startSelector at [%s, %s]" % (line, col)) - - def endSelector(self, selectors=None, line=None, col=None): - "Receive notification of the end of a rule statement." - self._log("endSelector at [%s, %s]" % (line, col)) - - def property(self, name, value='TODO', important=False, line=None, col=None): - "Receive notification of a declaration." - # TODO: value is LexicalValue? - self._log("property %r at [%s, %s]" % (name, line, col)) - - def ignorableAtRule(self, atRule, line=None, col=None): - "Receive notification of an unknown rule t-rule not supported by this parser." - self._log("ignorableAtRule %r at [%s, %s]" % (atRule, line, col)) - - - -class EchoHandler(DocumentHandler): - "Echos all input to property `out`" - def __init__(self): - super(EchoHandler, self).__init__() - self._out = [] - - out = property(lambda self: u''.join(self._out)) - - def startDocument(self, encoding): - super(EchoHandler, self).startDocument(encoding) - if u'utf-8' != encoding: - self._out.append(u'@charset "%s";\n' % encoding) - -# def comment(self, text, line=None, col=None): -# self._out.append(u'/*%s*/' % text) - - def importStyle(self, uri, media, name, line=None, col=None): - "Receive notification of a import statement in the style sheet." - # defaultNamespaceURI??? - super(EchoHandler, self).importStyle(uri, media, name, line, col) - self._out.append(u'@import %s%s%s;\n' % (helper.string(uri), - u'%s ' % media if media else u'', - u'%s ' % name if name else u'') - ) - - - def namespaceDeclaration(self, prefix, uri, line=None, col=None): - super(EchoHandler, self).namespaceDeclaration(prefix, uri, line, col) - self._out.append(u'@namespace %s%s;\n' % (u'%s ' % prefix if prefix else u'', - helper.string(uri))) - - def startSelector(self, selectors=None, line=None, col=None): - super(EchoHandler, self).startSelector(selectors, line, col) - if selectors: - self._out.append(u', '.join(selectors)) - self._out.append(u' {\n') - - def endSelector(self, selectors=None, line=None, col=None): - self._out.append(u' }') - - def property(self, name, value, important=False, line=None, col=None): - super(EchoHandler, self).property(name, value, line, col) - self._out.append(u' %s: %s%s;\n' % (name, value, - u' !important' if important else u'')) - - -class Parser(object): - """ - java.lang.String getParserVersion() - Returns a string about which CSS language is supported by this parser. - boolean parsePriority(InputSource source) - Parse a CSS priority value (e.g. - LexicalUnit parsePropertyValue(InputSource source) - Parse a CSS property value. - void parseRule(InputSource source) - Parse a CSS rule. - SelectorList parseSelectors(InputSource source) - Parse a comma separated list of selectors. - void parseStyleDeclaration(InputSource source) - Parse a CSS style declaration (without '{' and '}'). - void parseStyleSheet(InputSource source) - Parse a CSS document. - void parseStyleSheet(java.lang.String uri) - Parse a CSS document from a URI. - void setConditionFactory(ConditionFactory conditionFactory) - - void setDocumentHandler(DocumentHandler handler) - Allow an application to register a document event handler. - void setErrorHandler(ErrorHandler handler) - Allow an application to register an error event handler. - void setLocale(java.util.Locale locale) - Allow an application to request a locale for errors and warnings. - void setSelectorFactory(SelectorFactory selectorFactory) - """ - def __init__(self, documentHandler=None, errorHandler=None): - self._tokenizer = tokenize2.Tokenizer() - if documentHandler: - self.setDocumentHandler(documentHandler) - else: - self.setDocumentHandler(DocumentHandler()) - - if errorHandler: - self.setErrorHandler(errorHandler) - else: - self.setErrorHandler(ErrorHandler()) - - def parseString(self, cssText, encoding=None): - if isinstance(cssText, str): - cssText = codecs.getdecoder('css')(cssText, encoding=encoding)[0] - - tokens = self._tokenizer.tokenize(cssText, fullsheet=True) - - def COMMENT(val, line, col): - self._handler.comment(val[2:-2], line, col) - - def EOF(val, line, col): - self._handler.endDocument(val, line, col) - - def simple(t): - map = {'COMMENT': COMMENT, - 'S': lambda val, line, col: None, - 'EOF': EOF} - type_, val, line, col = t - if type_ in map: - map[type_](val, line, col) - return True - else: - return False - - # START PARSING - t = tokens.next() - type_, val, line, col = t - - encoding = 'utf-8' - if 'CHARSET_SYM' == type_: - # @charset "encoding"; - # S - encodingtoken = tokens.next() - semicolontoken = tokens.next() - if 'STRING' == type_: - encoding = helper.stringvalue(val) - # ; - if 'STRING' == encodingtoken[0] and semicolontoken: - encoding = helper.stringvalue(encodingtoken[1]) - else: - self._errorHandler.fatal(u'Invalid @charset') - - t = tokens.next() - type_, val, line, col = t - - self._handler.startDocument(encoding) - - while True: - start = (line, col) - try: - if simple(t): - pass - - elif 'ATKEYWORD' == type_ or type_ in ('PAGE_SYM', 'MEDIA_SYM', 'FONT_FACE_SYM'): - atRule = [val] - braces = 0 - while True: - # read till end ; - # TODO: or {} - t = tokens.next() - type_, val, line, col = t - atRule.append(val) - if u';' == val and not braces: - break - elif u'{' == val: - braces += 1 - elif u'}' == val: - braces -= 1 - if braces == 0: - break - - self._handler.ignorableAtRule(u''.join(atRule), *start) - - elif 'IMPORT_SYM' == type_: - # import URI or STRING media? name? - uri, media, name = None, None, None - while True: - t = tokens.next() - type_, val, line, col = t - if 'STRING' == type_: - uri = helper.stringvalue(val) - elif 'URI' == type_: - uri = helper.urivalue(val) - elif u';' == val: - break - - if uri: - self._handler.importStyle(uri, media, name) - else: - self._errorHandler.error(u'Invalid @import' - u' declaration at %r' - % (start,)) - - elif 'NAMESPACE_SYM' == type_: - prefix, uri = None, None - while True: - t = tokens.next() - type_, val, line, col = t - if 'IDENT' == type_: - prefix = val - elif 'STRING' == type_: - uri = helper.stringvalue(val) - elif 'URI' == type_: - uri = helper.urivalue(val) - elif u';' == val: - break - if uri: - self._handler.namespaceDeclaration(prefix, uri, *start) - else: - self._errorHandler.error(u'Invalid @namespace' - u' declaration at %r' - % (start,)) - - else: - # CSSSTYLERULE - selector = [] - selectors = [] - while True: - # selectors[, selector]* { - if 'S' == type_: - selector.append(u' ') - elif simple(t): - pass - elif u',' == val: - selectors.append(u''.join(selector).strip()) - selector = [] - elif u'{' == val: - selectors.append(u''.join(selector).strip()) - self._handler.startSelector(selectors, *start) - break - else: - selector.append(val) - - t = tokens.next() - type_, val, line, col = t - - end = None - while True: - # name: value [!important][;name: value [!important]]*;? - name, value, important = None, [], False - - while True: - # name: - t = tokens.next() - type_, val, line, col = t - if 'S' == type_: - pass - elif simple(t): - pass - elif 'IDENT' == type_: - if name: - self._errorHandler.error('more than one property name', t) - else: - name = val - elif u':' == val: - if not name: - self._errorHandler.error('no property name', t) - break - elif u';' == val: - self._errorHandler.error('premature end of property', t) - end = val - break - elif u'}' == val: - if name: - self._errorHandler.error('premature end of property', t) - end = val - break - else: - self._errorHandler.error('unexpected property name token %r' % val, t) - - while not u';' == end and not u'}' == end: - # value !;} - t = tokens.next() - type_, val, line, col = t - - if 'S' == type_: - value.append(u' ') - elif simple(t): - pass - elif u'!' == val or u';' == val or u'}' == val: - value = ''.join(value).strip() - if not value: - self._errorHandler.error('premature end of property (no value)', t) - end = val - break - else: - value.append(val) - - while u'!' == end: - # !important - t = tokens.next() - type_, val, line, col = t - - if simple(t): - pass - elif u'IDENT' == type_ and not important: - important = True - elif u';' == val or u'}' == val: - end = val - break - else: - self._errorHandler.error('unexpected priority token %r' % val) - - if name and value: - self._handler.property(name, value, important) - - if u'}' == end: - self._handler.endSelector(selectors, line=line, col=col) - break - else: - # reset - end = None - - else: - self._handler.endSelector(selectors, line=line, col=col) - - t = tokens.next() - type_, val, line, col = t - - except StopIteration: - break - - - - def setDocumentHandler(self, handler): - "Allow an application to register a document event `handler`." - self._handler = handler - - def setErrorHandler(self, handler): - "TODO" - self._errorHandler = handler - \ No newline at end of file diff --git a/src/cssutils/script.py b/src/cssutils/script.py deleted file mode 100644 index 9e5e5b0497..0000000000 --- a/src/cssutils/script.py +++ /dev/null @@ -1,354 +0,0 @@ -"""classes and functions used by cssutils scripts -""" -__all__ = ['CSSCapture', 'csscombine'] -__docformat__ = 'restructuredtext' -__version__ = '$Id: parse.py 1323 2008-07-06 18:13:57Z cthedot $' - -import HTMLParser -import codecs -import cssutils -import errno -import logging -import os -import sys -import urllib2 -import urlparse - -try: - import cssutils.encutils as encutils -except ImportError: - try: - import encutils - except ImportError: - sys.exit("You need encutils from http://cthedot.de/encutils/") - -# types of sheets in HTML -LINK = 0 # -STYLE = 1 # - -class CSSCaptureHTMLParser(HTMLParser.HTMLParser): - """CSSCapture helper: Parse given data for link and style elements""" - curtag = u'' - sheets = [] # (type, [atts, cssText]) - - def _loweratts(self, atts): - return dict([(a.lower(), v.lower()) for a, v in atts]) - - def handle_starttag(self, tag, atts): - if tag == u'link': - atts = self._loweratts(atts) - if u'text/css' == atts.get(u'type', u''): - self.sheets.append((LINK, atts)) - elif tag == u'style': - # also get content of style - atts = self._loweratts(atts) - if u'text/css' == atts.get(u'type', u''): - self.sheets.append((STYLE, [atts, u''])) - self.curtag = tag - else: - # close as only intersting \n" +"

Create a basic news " +"recipe, by adding RSS feeds to it.
For most feeds, you will have to " +"use the \"Advanced mode\" to further customize the fetch " +"process.

" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:260 +msgid "Recipe &title:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:261 +msgid "&Oldest article:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:262 +msgid "The oldest article to download" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:264 +msgid "&Max. number of articles per feed:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265 +msgid "Maximum number of articles to download per feed." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:266 +msgid "Feeds in recipe" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:268 +msgid "Remove feed from recipe" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:271 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:274 +msgid "Add feed to recipe" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:272 +msgid "&Feed title:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:273 +msgid "Feed &URL:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:275 +msgid "&Add feed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:276 +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:277 +msgid "Recipe source code (python)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:107 +msgid "" +"\n" +"\n" +"

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

\n" +"

A reference on the syntax " +"of regular expressions is available.

\n" +"

Use the Test functionality below to test your regular " +"expression on a few sample filenames. The group names for the various " +"metadata entries are documented in tooltips.

" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:114 +msgid "Regular &expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:116 +msgid "File &name:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:117 +msgid "Test" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:118 +msgid "Title:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:119 +msgid "Regular expression (?P<title>)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:94 +msgid "No match" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:121 +msgid "Authors:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:122 +msgid "Regular expression (?P)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:124 +msgid "Series:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:125 +msgid "Regular expression (?P)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:127 +msgid "Series index:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:128 +msgid "Regular expression (?P)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:130 +msgid "ISBN:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:131 +msgid "Regular expression (?P)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:53 +msgid "Job" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:54 +msgid "Status" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:55 +msgid "Progress" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:56 +msgid "Running time" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:68 +msgid "There are %d running jobs:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:94 +msgid "Unknown job" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:75 +msgid "There are %d waiting jobs:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:214 +msgid "Cannot kill job" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:212 +msgid "Cannot kill jobs that communicate with the device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:215 +msgid "Job has already run" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:243 +msgid "Unavailable" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:254 +msgid " - Jobs" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1146 +msgid "Size (MB)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1147 +msgid "Date" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:172 +msgid "Rating" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:440 +msgid "None" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:369 +msgid "Book %s of %s." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:882 +msgid "Not allowed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:883 +msgid "" +"Dropping onto a device is not supported. First add the book to the calibre " +"library." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1082 +msgid "Format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1136 +msgid "Double click to edit me

" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/config_ui.py:47 +msgid "Configure Viewer" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/config_ui.py:48 +msgid "Use white background" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/config_ui.py:49 +msgid "Hyphenate" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/config_ui.py:50 +msgid "Changes will only take effect after a restart." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:70 +msgid " - LRF Viewer" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 +msgid "No matches for the search phrase %s were found." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:433 +msgid "No matches found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:128 +msgid "LRF Viewer" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:129 +msgid "Parsing LRF file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:130 +msgid "LRF Viewer toolbar" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:131 +msgid "Next Page" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:132 +msgid "Previous Page" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:182 +msgid "Back" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:183 +msgid "Forward" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:135 +msgid "Next match" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:190 +msgid "Open ebook" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:137 +msgid "Configure" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:25 +msgid "Use the library located at the specified path." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:27 +msgid "Start minimized to system tray." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:29 +msgid "Log debugging information to console" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:31 +msgid "Do not check for updates" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:83 +msgid "If you are sure it is not running" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:85 +msgid "Cannot Start " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:86 +msgid "%s is already running." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:89 +msgid "may be running in the system tray, in the" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:91 +msgid "upper right region of the screen." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:93 +msgid "lower right region of the screen." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:96 +msgid "try rebooting your computer." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:110 +msgid "try deleting the file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:331 +msgid "calibre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:333 +msgid "Advanced search" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:335 +msgid "Alt+S" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:336 +msgid "&Search:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:337 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:338 +msgid "" +"

Search the list of books by title, author, publisher, tags, comments, " +"etc.

Words separated by spaces are ANDed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:339 +msgid "Reset Quick Search" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:341 +msgid "Sort by &popularity" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:342 +msgid "Match any" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:343 +msgid "Match all" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:344 +msgid "Add books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:345 +msgid "A" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:346 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:347 +msgid "Remove books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:348 +msgid "Del" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:349 +msgid "Edit meta information" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:350 +msgid "E" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:351 +msgid "Send to device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:304 +msgid "Save to disk" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:353 +msgid "S" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:354 +msgid "Fetch news" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:355 +msgid "F" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:356 +msgid "Convert E-books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:357 +msgid "C" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:314 +msgid "View" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:359 +msgid "V" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:360 +msgid "Open containing folder" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:361 +msgid "Show book details" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:362 +msgid "Books by same author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:363 +msgid "Books in this series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:364 +msgid "Books by this publisher" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:365 +msgid "Books with the same tags" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:367 +msgid "Configure calibre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:368 +msgid "Ctrl+P" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_window.py:20 +msgid "" +"Redirect console output to a dialog window (both stdout and stderr). Useful " +"on windows where GUI apps do not have a output streams." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_window.py:59 +msgid "&Preferences" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_window.py:60 +msgid "&Quit" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_window.py:85 +msgid "ERROR: Unhandled exception" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:89 +msgid "Book has neither title nor ISBN" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:115 +msgid "No matches found for this book" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:71 +msgid "Search" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:58 +msgid "Press a key..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:79 +msgid "Already assigned" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:81 +msgid "already assigned to" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 +msgid " or " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:68 +msgid "&Default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:135 +msgid "Customize shortcuts for" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 +msgid "Keys" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:225 +msgid "Double click to change" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:67 +msgid "Frame" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:69 +msgid "&Custom" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:70 +msgid "&Shortcut:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:76 +msgid "Click to change" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:78 +msgid "Clear" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:75 +msgid "&Alternate shortcut:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:149 +msgid "Jobs:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:158 +msgid "Click to see list of active jobs." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:196 +msgid "Click to browse books by their covers" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:196 +msgid "Click to turn off Cover Browsing" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:201 +msgid "" +"

Browsing books by their covers is disabled.
Import of pictureflow " +"module failed:
" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:209 +msgid "Click to browse books by tags" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 +msgid "Authors" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 +msgid "Publishers" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:182 +msgid "Convert book %d of %d (%s)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:202 +msgid "Could not convert some books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:203 +msgid "" +"Could not convert %d of %d books, because no suitable source format was " +"found." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:120 +msgid "Queueing books for bulk conversion" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:181 +msgid "Queueing " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:237 +msgid "Fetch news from " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:276 +msgid "Convert existing" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:277 +msgid "" +"The following books have already been converted to %s format. Do you wish to " +"reconvert them?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:63 +msgid "Save single format to disk..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:142 +msgid "Search (For Advanced Search click the button to the left)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:159 +msgid "Error communicating with device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:176 +msgid "&Restore" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:178 +msgid "&Donate to support calibre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:183 +msgid "&Restart" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:222 +msgid "

For help see the: User Manual
" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:224 +msgid "%s: %s by Kovid Goyal %%(version)s
%%(device)s

" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:247 +msgid "Edit metadata individually" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:249 +msgid "Edit metadata in bulk" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:251 +msgid "Download metadata and covers" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:252 +msgid "Download only metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:253 +msgid "Download only covers" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:254 +msgid "Download only social metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:257 +msgid "Add books from a single directory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:258 +msgid "" +"Add books from directories, including sub-directories (One book per " +"directory, assumes every ebook file is the same book in a different format)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:261 +msgid "" +"Add books from directories, including sub directories (Multiple books per " +"directory, assumes every ebook file is a different book)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:264 +msgid "Add Empty book. (Book entry with no formats)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:305 +msgid "Save to disk in a single directory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1750 +msgid "Save only %s format to disk" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:315 +msgid "View specific format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:319 +msgid "Remove selected books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:321 +msgid "Remove files of a specific format from selected books.." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:323 +msgid "Remove all formats from selected books, except..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:325 +msgid "Remove covers from selected books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:357 +msgid "Convert individually" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:358 +msgid "Bulk convert" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:361 +msgid "Create catalog of books in your calibre library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:377 +msgid "Run welcome wizard" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:413 +msgid "Similar books..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:473 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:474 +msgid "Bad database location" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:476 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:558 +msgid "Calibre Library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:486 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1906 +msgid "Choose a location for your ebook library." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:524 +msgid "Calibre Quick Start Guide" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:704 +msgid "Browse by covers" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:852 +msgid "Device: " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:854 +msgid " detected." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:878 +msgid "Connected " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:890 +msgid "Device database corrupted" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:891 +msgid "" +"\n" +"

The database of books on the reader is corrupted. Try the " +"following:\n" +"

    \n" +"
  1. Unplug the reader. Wait for it to finish regenerating " +"the database (i.e. wait till it is ready to be used). Plug it back in. Now " +"it should work with %(app)s. If not try the next step.
  2. \n" +"
  3. Quit %(app)s. Find the file media.xml in the reader's " +"main memory. Delete it. Unplug the reader. Wait for it to regenerate the " +"file. Re-connect it and start %(app)s.
  4. \n" +"
\n" +" " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:953 +msgid "How many empty books?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:954 +msgid "How many empty books should be added?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:998 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1044 +msgid "Uploading books to device." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1006 +msgid "EPUB Books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1007 +msgid "LRF Books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1008 +msgid "HTML Books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1009 +msgid "LIT Books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1010 +msgid "MOBI Books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1011 +msgid "Text books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1012 +msgid "PDF Books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1013 +msgid "Comics" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1014 +msgid "Archives" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1018 +msgid "Supported books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1055 +msgid "Failed to read metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1056 +msgid "Failed to read metadata from the following" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1075 +msgid "Cannot delete" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1078 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1639 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1655 +msgid "No book selected" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1088 +msgid "Choose formats to be deleted" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1106 +msgid "Choose formats not to be deleted" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1144 +msgid "" +"The selected books will be permanently deleted and the files removed " +"from your computer. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1171 +msgid "Deleting books from device." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1202 +msgid "Cannot download metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1203 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1260 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1293 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1318 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1377 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1495 +msgid "No books selected" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1218 +msgid "social metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1220 +msgid "covers" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1220 +msgid "metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1222 +msgid "Downloading %s for %d book(s)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1244 +msgid "Failed to download some metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1245 +msgid "Failed to download metadata for the following:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1248 +msgid "Failed to download metadata:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1259 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1292 +msgid "Cannot edit metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1317 +msgid "Cannot save to disk" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1320 +msgid "Choose destination directory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1347 +msgid "Error while saving" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1348 +msgid "There was an error while saving." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1355 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1356 +msgid "Could not save some books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1357 +msgid "Click the show details button to see which ones." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1378 +msgid "No books selected to generate catalog for" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1395 +msgid "Generating %s catalog..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1401 +msgid "" +"No books to catalog\n" +"Check exclude tags" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1411 +msgid "Catalog generated." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1414 +msgid "Export Catalog Directory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1415 +msgid "Select destination for %s.%s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1429 +msgid "Fetching news from " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1443 +msgid " fetched." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1494 +msgid "Cannot convert" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1523 +msgid "Starting conversion of %d book(s)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1639 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1692 +msgid "Cannot view" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1654 +msgid "Cannot open folder" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1676 +msgid "Multiple Books Selected" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1677 +msgid "" +"You are attempting to open %d books. Opening too many books at once can be " +"slow and have a negative effect on the responsiveness of your computer. Once " +"started the process cannot be stopped until complete. Do you wish to " +"continue?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1693 +msgid "%s has no available formats." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1734 +msgid "Cannot configure" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1735 +msgid "Cannot configure while there are running jobs." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1778 +msgid "No detailed info available" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1779 +msgid "No detailed information is available for books on the device." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1834 +msgid "Error talking to device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1835 +msgid "" +"There was a temporary error talking to the device. Please unplug and " +"reconnect the device and or reboot." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1858 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1886 +msgid "Conversion Error" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1859 +msgid "" +"

Could not convert: %s

It is a DRMed book. You must " +"first remove the DRM using third party tools." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1872 +msgid "Recipe Disabled" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1887 +msgid "Failed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1915 +msgid "Invalid library location" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1916 +msgid "Could not access %s. Using %s as the library." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1966 +msgid "" +"is the result of the efforts of many volunteers from all over the world. If " +"you find it useful, please consider donating to support its development." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1991 +msgid "There are active jobs. Are you sure you want to quit?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1994 +msgid "" +" is communicating with the device!
\n" +" Quitting may cause corruption on the device.
\n" +" Are you sure you want to quit?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1998 +msgid "WARNING: Active jobs" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2050 +msgid "" +"will keep running in the system tray. To close it, choose Quit in the " +"context menu of the system tray." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2069 +msgid "" +"Latest version: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2077 +msgid "Update available" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2078 +msgid "" +"%s has been updated to version %s. See the new features. Visit the download page?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +msgid "Edit bookmark" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +msgid "New title for bookmark:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:52 +msgid "Export Bookmarks" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:54 +msgid "Saved Bookmarks (*.pickle)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +msgid "Import Bookmarks" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +msgid "Pickled Bookmarks (*.pickle)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:89 +msgid "Name" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:56 +msgid "Bookmark Manager" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:57 +msgid "Actions" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:58 +msgid "Edit" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:59 +msgid "Delete" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:60 +msgid "Reset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:61 +msgid "Export" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:62 +msgid "Import" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:154 +msgid "Configure Ebook viewer" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:155 +msgid "&Font options" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:156 +msgid "Se&rif family:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:157 +msgid "&Sans family:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:158 +msgid "&Monospace family:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:159 +msgid "&Default font size:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:168 +msgid " px" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:161 +msgid "Monospace &font size:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:163 +msgid "S&tandard font:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:164 +msgid "Serif" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:165 +msgid "Sans-serif" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:166 +msgid "Monospace" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:167 +msgid "Remember last used &window size" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:169 +msgid "Maximum &view width:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:170 +msgid "H&yphenate (break line in the middle of large words)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:171 +msgid "" +"The default language to use for hyphenation rules. If the book does not " +"specify a language, this will be used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:172 +msgid "Default &language for hyphenation:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:173 +msgid "&Resize images larger than the viewer window (needs restart)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:174 +msgid "&User stylesheet" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:175 +msgid "&General" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:176 +msgid "Double click to change a keyboard shortcut" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:177 +msgid "&Keyboard shortcuts" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/dictionary.py:53 +msgid "No results found for:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:33 +msgid "Options to customize the ebook viewer" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:40 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:671 +msgid "Remember last used window size" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 +msgid "" +"Set the user CSS stylesheet. This can be used to customize the look of all " +"books." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:44 +msgid "Maximum width of the viewer window, in pixels." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:46 +msgid "Resize images larger than the viewer window to fit inside it" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 +msgid "Hyphenate text" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 +msgid "Default language for hyphenation rules" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 +msgid "Font options" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:53 +msgid "The serif font family" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 +msgid "The sans-serif font family" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:57 +msgid "The monospaced font family" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:58 +msgid "The standard font size in px" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 +msgid "The monospaced font size in px" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 +msgid "The standard font type" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:449 +msgid "&Lookup in dictionary" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:12 +msgid "Scroll to the next page" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:15 +msgid "Scroll to the previous page" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:18 +msgid "Scroll to the next section" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:21 +msgid "Scroll to the previous section" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:24 +msgid "Scroll to the bottom of the section" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:27 +msgid "Scroll to the top of the section" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:30 +msgid "Scroll to the end of the document" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:33 +msgid "Scroll to the start of the document" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:36 +msgid "Scroll down" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:39 +msgid "Scroll up" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:42 +msgid "Scroll left" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:45 +msgid "Scroll right" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:115 +msgid "Book format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:138 +msgid "Go to..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:184 +msgid "Position in book" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:191 +msgid "Go to a reference. To get reference numbers, use the reference mode." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:198 +msgid "Search for text in book" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:263 +msgid "Print Preview" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:294 +msgid "Connecting to dict.org to lookup: %s…" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:393 +msgid "Choose ebook" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:394 +msgid "Ebooks" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:413 +msgid "Add bookmark" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:413 +msgid "Enter title for bookmark:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:434 +msgid "No matches found for: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:474 +msgid "Loading flow..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:510 +msgid "Laying out %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:539 +msgid "Manage Bookmarks" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:574 +msgid "Loading ebook..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:582 +msgid "DRM Error" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:583 +msgid "

This book is protected by DRM" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:587 +msgid "Could not open ebook" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:661 +msgid "Options to control the ebook viewer" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:668 +msgid "" +"If specified, viewer window will try to come to the front when started." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:673 +msgid "Print javascript alert and console messages to the console" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:679 +msgid "" +"%prog [options] file\n" +"\n" +"View an ebook.\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:178 +msgid "Ebook Viewer" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:179 +msgid "Close dictionary" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:181 +msgid "toolBar" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:184 +msgid "Next page" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:185 +msgid "Previous page" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:186 +msgid "Font size larger" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:187 +msgid "Font size smaller" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:191 +msgid "Find next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:192 +msgid "Copy to clipboard" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:194 +msgid "Reference Mode" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:195 +msgid "Bookmark" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:196 +msgid "Toggle full screen" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:197 +msgid "Print" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/printing.py:114 +msgid "Print eBook" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:196 +msgid "Copy Image" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:197 +msgid "Paste Image" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:226 +msgid "" +"Library\n" +"%d\n" +"books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:227 +msgid "" +"Reader\n" +"%s\n" +"available" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:228 +msgid "" +"Card A\n" +"%s\n" +"available" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:229 +msgid "" +"Card B\n" +"%s\n" +"available" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:234 +msgid "Click to see the books available on your computer" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:235 +msgid "Click to see the books in the main memory of your reader" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:236 +msgid "Click to see the books on storage card A in your reader" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:237 +msgid "Click to see the books on storage card B in your reader" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:530 +msgid "Change Case" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:531 +msgid "Upper Case" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:532 +msgid "Lower Case" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:533 +msgid "Swap Case" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:534 +msgid "Title Case" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:330 +msgid "" +"If you use the WordPlayer e-book app on your Android phone, you can access " +"your calibre book collection directly on the device. To do this you have to " +"turn on the content server." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:334 +msgid "" +"Remember to leave calibre running as the server only runs as long as calibre " +"is running." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:336 +msgid "" +"You have to add the URL http://myhostname:8080 as your calibre library in " +"WordPlayer. Here myhostname should be the fully qualified hostname or the IP " +"address of the computer calibre is running on." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:413 +msgid "Moving library..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:429 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:430 +msgid "Failed to move library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:484 +msgid "Invalid database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:485 +msgid "" +"

An invalid library already exists at %s, delete it before trying to move " +"the existing library.
Error: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:496 +msgid "Could not move library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:625 +msgid "welcome wizard" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:42 +msgid "Welcome to calibre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:43 +msgid "The one stop solution to all your e-book needs." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:51 +msgid "" +"Choose your book reader. This will set the conversion options to produce " +"books optimized for your device." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:52 +msgid "&Manufacturers" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:53 +msgid "&Devices" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:41 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:41 +msgid "WizardPage" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:48 +msgid "" +"

Congratulations!

You have successfully setup calibre. Press the %s " +"button to apply your settings." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:49 +msgid "" +"

Demo videos

Videos demonstrating the various features of calibre are " +"available online." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:50 +msgid "" +"

User Manual

A User Manual is also available online." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:44 +msgid "" +"

calibre can automatically send books by email to your Kindle. To do that " +"you have to setup email delivery below. The easiest way is to setup a free " +"gmail account and click the Use gmail " +"button below. You will also have to register your gmail address in your " +"Amazon account." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:45 +msgid "&Kindle email:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:52 +msgid "Choose your &language:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:53 +msgid "" +"Choose a location for your books. When you add books to calibre, they will " +"be copied here:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:54 +msgid "&Change" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:55 +msgid "" +"If you have an existing calibre library, it will be copied to the new " +"location. If a calibre library already exists at the new location, calibre " +"will switch to using it." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:32 +msgid "Using: %s:%s@%s:%s and %s encryption" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:37 +msgid "Sending..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:42 +msgid "Mail successfully sent" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:114 +msgid "Finish gmail setup" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:115 +msgid "" +"Dont forget to enter your gmail username and password. You can sign up for a " +"free gmail account at http://gmail.com" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:130 +msgid "Bad configuration" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:124 +msgid "You must set the From email address" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:131 +msgid "You must set the username and password for the mail server." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:108 +msgid "Send email &from:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:109 +msgid "" +"

This is what will be present in the From: field of emails sent by " +"calibre.
Set it to your email address" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:110 +msgid "" +"

A mail server is useful if the service you are sending mail to only " +"accepts email from well know mail services." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:111 +msgid "Mail &Server" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:112 +msgid "calibre can optionally use a server to send mail" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:113 +msgid "&Hostname:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:114 +msgid "The hostname of your mail server. For e.g. smtp.gmail.com" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:115 +msgid "&Port:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:116 +msgid "" +"The port your mail server listens for connections on. The default is 25" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:118 +msgid "Your username on the mail server" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:120 +msgid "Your password on the mail server" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:121 +msgid "&Show" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:122 +msgid "&Encryption:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:123 +msgid "" +"Use TLS encryption when connecting to the mail server. This is the most " +"common." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:124 +msgid "&TLS" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:125 +msgid "Use SSL encryption when connecting to the mail server." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:126 +msgid "&SSL" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:127 +msgid "Use Gmail" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:128 +msgid "&Test email" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:44 +msgid "" +"

If you use the Stanza e-" +"book app on your iPhone/iTouch, you can access your calibre book collection " +"directly on the device. To do this you have to turn on the calibre content " +"server." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:45 +msgid "Turn on the &content server" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/__init__.py:8 +msgid "Settings to control the calibre content server" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/__init__.py:12 +msgid "The port on which to listen. Default is %default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/__init__.py:14 +msgid "The server timeout in seconds. Default is %default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/__init__.py:16 +msgid "The max number of worker threads to use. Default is %default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/__init__.py:18 +msgid "Set a password to restrict access. By default access is unrestricted." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/__init__.py:20 +msgid "Username for access. By default, it is: %default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/__init__.py:24 +msgid "The maximum size for displayed covers. Default is %default." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/__init__.py:26 +msgid "" +"The maximum number of matches to return per OPDS query. This affects Stanza, " +"WordPlayer, etc. integration." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:35 +msgid "" +"The fields to output when cataloging books in the database. Should be a " +"comma-separated list of fields.\n" +"Available fields: %s.\n" +"Default: '%%default'\n" +"Applies to: CSV, XML output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:44 +msgid "" +"Output field to sort on.\n" +"Available fields: author_sort, id, rating, size, timestamp, title.\n" +"Default: '%default'\n" +"Applies to: CSV, XML output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:253 +msgid "" +"Title of generated catalog used as title in metadata.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:259 +msgid "" +"Save the output from different stages of the conversion pipeline to the " +"specified directory. Useful if you are unsure at which stage of the " +"conversion process a bug is occurring.\n" +"Default: '%default'None\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:268 +msgid "" +"Regex describing tags to exclude as genres.\n" +"Default: '%default' excludes bracketed tags, e.g. '[]'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:273 +msgid "" +"Comma-separated list of tag words indicating book should be excluded from " +"output. Case-insensitive.\n" +"--exclude-tags=skip will match 'skip this book' and 'Skip will like this'.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:280 +msgid "" +"Include 'Titles' section in catalog.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:286 +msgid "" +"Include 'Recently Added' section in catalog.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:292 +msgid "" +"Tag prefix for user notes, e.g. '*Jeff might enjoy reading this'.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:298 +msgid "" +"Sort titles with leading numbers as text, e.g.,\n" +"'2001: A Space Odyssey' sorts as \n" +"'Two Thousand One: A Space Odyssey'.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:304 +msgid "" +"Specifies the output profile. In some cases, an output profile is required " +"to optimize the catalog for the device. For example, 'kindle' or " +"'kindle_dx' creates a structured Table of Contents with Sections and " +"Articles.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:310 +msgid "" +"Tag indicating book has been read.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:121 +msgid "" +"Path to the calibre library. Default is to use the path stored in the " +"settings." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:200 +msgid "" +"%prog list [options]\n" +"\n" +"List the books available in the calibre database.\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:208 +msgid "" +"The fields to display when listing books in the database. Should be a comma " +"separated list of fields.\n" +"Available fields: %s\n" +"Default: %%default. The special field \"all\" can be used to select all " +"fields. Only has effect in the text output format." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:210 +msgid "" +"The field by which to sort the results.\n" +"Available fields: %s\n" +"Default: %%default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:212 +msgid "Sort results in ascending order" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:214 +msgid "" +"Filter the results by the search query. For the format of the search query, " +"please see the search related documentation in the User Manual. Default is " +"to do no filtering." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:216 +msgid "" +"The maximum width of a single line in the output. Defaults to detecting " +"screen size." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:217 +msgid "The string used to separate fields. Default is a space." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:218 +msgid "" +"The prefix for all file paths. Default is the absolute path to the library " +"folder." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:221 +msgid "" +"The format in which to output the data. Available choices: %s. Defaults is " +"text." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:234 +msgid "Invalid fields. Available fields:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:241 +msgid "Invalid sort field. Available fields:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:312 +msgid "" +"The following books were not added as they already exist in the database " +"(see --duplicates option):" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:335 +msgid "" +"%prog add [options] file1 file2 file3 ...\n" +"\n" +"Add the specified files as books to the database. You can also specify " +"directories, see\n" +"the directory related options below.\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:344 +msgid "" +"Assume that each directory has only a single logical book and that all files " +"in it are different e-book formats of that book" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:346 +msgid "Process directories recursively" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:348 +msgid "" +"Add books to database even if they already exist. Comparison is done based " +"on book titles." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:358 +msgid "You must specify at least one file to add" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:374 +msgid "" +"%prog remove ids\n" +"\n" +"Remove the books identified by ids from the database. ids should be a comma " +"separated list of id numbers (you can get id numbers by using the list " +"command). For example, 23,34,57-85\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:389 +msgid "You must specify at least one book to remove" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:408 +msgid "" +"%prog add_format [options] id ebook_file\n" +"\n" +"Add the ebook in ebook_file to the available formats for the logical book " +"identified by id. You can get id by using the list command. If the format " +"already exists, it is replaced.\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:423 +msgid "You must specify an id and an ebook file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:428 +msgid "ebook file must have an extension" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:436 +msgid "" +"\n" +"%prog remove_format [options] id fmt\n" +"\n" +"Remove the format fmt from the logical book identified by id. You can get id " +"by using the list command. fmt should be a file extension like LRF or TXT or " +"EPUB. If the logical book does not have fmt available, do nothing.\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:453 +msgid "You must specify an id and a format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:471 +msgid "" +"\n" +"%prog show_metadata [options] id\n" +"\n" +"Show the metadata stored in the calibre database for the book identified by " +"id.\n" +"id is an id number from the list command.\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:479 +msgid "Print metadata in OPF form (XML)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:488 +msgid "You must specify an id" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:501 +msgid "" +"\n" +"%prog set_metadata [options] id /path/to/metadata.opf\n" +"\n" +"Set the metadata stored in the calibre database for the book identified by " +"id\n" +"from the OPF file metadata.opf. id is an id number from the list command. " +"You\n" +"can get a quick feel for the OPF format by using the --as-opf switch to the\n" +"show_metadata command.\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:517 +msgid "You must specify an id and a metadata file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:537 +msgid "" +"%prog export [options] ids\n" +"\n" +"Export the books specified by ids (a comma separated list) to the " +"filesystem.\n" +"The export operation saves all formats of the book, its cover and metadata " +"(in\n" +"an opf file). You can get id numbers from the list command.\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:545 +msgid "Export all books in database, ignoring the list of ids." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:547 +msgid "Export books to the specified directory. Default is" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:549 +msgid "Export all books into a single directory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:556 +msgid "Specifying this switch will turn this behavior off." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:579 +msgid "You must specify some ids or the %s option" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:634 +msgid "" +"\n" +" %prog catalog /path/to/destination.(csv|epub|mobi|xml ...) [options]\n" +"\n" +" Export a catalog in format specified by path/to/destination extension.\n" +" Options control how entries are displayed in the generated catalog " +"ouput.\n" +" " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:648 +msgid "" +"Comma-separated list of database IDs to catalog.\n" +"If declared, --search is ignored.\n" +"Default: all" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:652 +msgid "" +"Filter the results by the search query. For the format of the search query, " +"please see the search-related documentation in the User Manual.\n" +"Default: no filtering" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:658 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:482 +msgid "Show detailed output information. Useful for debugging" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:671 +msgid "Error: You must specify a catalog output file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:687 +msgid "" +"%%prog command [options] [arguments]\n" +"\n" +"%%prog is the command line interface to the calibre books database.\n" +"\n" +"command is one of:\n" +" %s\n" +"\n" +"For help on an individual command: %%prog command --help\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1744 +msgid "

Migrating old database to ebook library in %s

" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1773 +msgid "Copying %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1790 +msgid "Compacting database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1883 +msgid "Checking SQL integrity..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1920 +msgid "Checking for missing files." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1942 +msgid "Checked id" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:24 +msgid "The title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:25 +msgid "The authors" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:26 +msgid "" +"The author sort string. To use only the first letter of the name use " +"{author_sort[0]}" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:28 +msgid "The tags" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:29 +msgid "The series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:30 +msgid "The series number. To get leading zeros use {series_index:0>3s}" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:31 +msgid "The rating" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:32 +msgid "The ISBN" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:33 +msgid "The publisher" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:34 +msgid "The date" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:35 +msgid "The published date" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:36 +msgid "The calibre internal id" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:46 +msgid "Options to control saving to disk" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:52 +msgid "" +"Normally, calibre will update the metadata in the saved files from what is " +"in the calibre library. Makes saving to disk slower." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:55 +msgid "" +"Normally, calibre will write the metadata into a separate OPF file along " +"with the actual e-book files." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:58 +msgid "" +"Normally, calibre will save the cover in a separate file along with the " +"actual e-book file(s)." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:61 +msgid "" +"Comma separated list of formats to save for each book. By default all " +"available books are saved." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:64 +msgid "" +"The template to control the filename and directory structure of the saved " +"files. Default is \"%s\" which will save books into a per-author " +"subdirectory with filenames containing title and author. Available controls " +"are: {%s}" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:69 +msgid "" +"The template to control the filename and directory structure of files sent " +"to the device. Default is \"%s\" which will save books into a per-author " +"directory with filenames containing title and author. Available controls " +"are: {%s}" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:76 +msgid "" +"Normally, calibre will convert all non English characters into English " +"equivalents for the file names. WARNING: If you turn this off, you may " +"experience errors when saving, depending on how well the filesystem you are " +"saving to supports unicode." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:82 +msgid "" +"The format in which to display dates. %d - day, %b - month, %Y - year. " +"Default is: %b, %Y" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:85 +msgid "Convert paths to lowercase." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:87 +msgid "Replace whitespace with underscores." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:256 +msgid "Requested formats not available" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server.py:378 +msgid "Password to access your calibre library. Username is " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server.py:860 +msgid "" +"[options]\n" +"\n" +"Start the calibre content server." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server.py:862 +msgid "Path to the library folder to serve with the content server" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:48 +msgid "%sUsage%s: %s\n" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:92 +msgid "Created by " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:93 +msgid "" +"Whenever you pass arguments to %prog that have spaces in them, enclose the " +"arguments in quotation marks." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:650 +msgid "Path to the database in which books are stored" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:652 +msgid "Pattern to guess metadata from filenames" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:654 +msgid "Access key for isbndb.com" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:656 +msgid "Default timeout for network operations (seconds)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:658 +msgid "Path to directory in which your library of books is stored" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:660 +msgid "The language in which to display the user interface" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:662 +msgid "The default output format for ebook conversions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:666 +msgid "Ordered list of formats to prefer for input." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:668 +msgid "Read metadata from files" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:670 +msgid "The priority of worker processes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:672 +msgid "Swap author first and last names when reading metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:43 +msgid "Waiting..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:51 +msgid "Stopped" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 +msgid "Finished" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:75 +msgid "Working..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:93 +msgid "Brazilian Portuguese" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:94 +msgid "English (UK)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:95 +msgid "Simplified Chinese" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:96 +msgid "Chinese (HK)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:97 +msgid "Traditional Chinese" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:98 +msgid "English" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:99 +msgid "English (Australia)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:100 +msgid "English (New Zealand)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:101 +msgid "English (Canada)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:102 +msgid "English (India)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:103 +msgid "English (Thailand)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:104 +msgid "English (Cyprus)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:105 +msgid "English (Pakistan)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:106 +msgid "English (Singapore)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:107 +msgid "English (Yemen)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:108 +msgid "German (AT)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:109 +msgid "Dutch (NL)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:110 +msgid "Dutch (BE)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/sftp.py:53 +msgid "URL must have the scheme sftp" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/sftp.py:57 +msgid "host must be of the form user@hostname" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/sftp.py:68 +msgid "Failed to negotiate SSH session: " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/sftp.py:71 +msgid "Failed to authenticate with server: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/smtp.py:234 +msgid "Control email delivery" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:103 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:125 +msgid "Unknown feed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:143 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:166 +msgid "Untitled article" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:21 +msgid "Download periodical content from the internet" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:36 +msgid "" +"Useful for recipe development. Forces max_articles_per_feed to 2 and " +"downloads at most 2 feeds." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:39 +msgid "Username for sites that require a login to access content." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:42 +msgid "Password for sites that require a login to access content." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:46 +msgid "" +"Do not download latest version of builtin recipes from the calibre server" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:40 +msgid "Unknown News Source" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:550 +msgid "The \"%s\" recipe needs a username and password." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:637 +msgid "Download finished" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:639 +msgid "Failed to download the following articles:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:645 +msgid "Failed to download parts of the following articles:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:647 +msgid " from " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:649 +msgid "\tFailed links:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:730 +msgid "Could not fetch article. Run with -vv to see the reason" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:751 +msgid "Fetching feeds..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:756 +msgid "Got feeds from index page" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:762 +msgid "Trying to download cover..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:764 +msgid "Generating masthead..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:842 +msgid "Starting download [%d thread(s)]..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:858 +msgid "Feeds downloaded to %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:868 +msgid "Could not download cover: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:880 +msgid "Downloading cover from %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:915 +msgid "Masthead image downloaded" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1150 +msgid "Untitled Article" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1221 +msgid "Article downloaded: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1232 +msgid "Article download failed: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1249 +msgid "Fetching feed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:46 +msgid "You" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:73 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:82 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:181 +msgid "Scheduled" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:84 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:182 +msgid "Custom" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:459 +msgid "" +"%prog URL\n" +"\n" +"Where URL is for example http://google.com" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:462 +msgid "Base directory into which URL is saved. Default is %default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:465 +msgid "" +"Timeout in seconds to wait for a response from the server. Default: %default " +"s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:468 +msgid "" +"Maximum number of levels to recurse i.e. depth of links to follow. Default " +"%default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:471 +msgid "" +"The maximum number of files to download. This only applies to files from tags. Default is %default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:473 +msgid "" +"Minimum interval in seconds between consecutive fetches. Default is %default " +"s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:475 +msgid "" +"The character encoding for the websites you are trying to download. The " +"default is to try and guess the encoding." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:477 +msgid "" +"Only links that match this regular expression will be followed. This option " +"can be specified multiple times, in which case as long as a link matches any " +"one regexp, it will be followed. By default all links are followed." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:479 +msgid "" +"Any link that matches this regular expression will be ignored. This option " +"can be specified multiple times, in which case as long as any regexp matches " +"a link, it will be ignored.By default, no links are ignored. If both --" +"filter-regexp and --match-regexp are specified, then --filter-regexp is " +"applied first." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:481 +msgid "Do not download CSS stylesheets." +msgstr "" diff --git a/src/calibre/translations/es.po b/src/calibre/translations/es.po index 230ea68f65..8eea04d407 100644 --- a/src/calibre/translations/es.po +++ b/src/calibre/translations/es.po @@ -10,14 +10,14 @@ msgid "" msgstr "" "Project-Id-Version: es\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-01-25 18:58+0000\n" -"PO-Revision-Date: 2010-01-31 21:38+0000\n" -"Last-Translator: Kovid Goyal \n" +"POT-Creation-Date: 2010-02-12 23:37+0000\n" +"PO-Revision-Date: 2010-02-16 20:28+0000\n" +"Last-Translator: Jellby \n" "Language-Team: Spanish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-02-01 04:44+0000\n" +"X-Launchpad-Export-Date: 2010-02-17 04:54+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -33,7 +33,7 @@ msgstr "No hacer nada en absoluto" #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58 #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:205 -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:417 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:418 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:69 #: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:319 @@ -41,19 +41,19 @@ msgstr "No hacer nada en absoluto" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1894 #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1896 #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:24 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:225 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:256 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:259 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:359 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:229 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:260 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:263 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:363 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:35 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:60 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:46 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:36 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:62 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:104 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:106 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:171 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:107 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:109 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:224 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:329 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:444 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:894 @@ -68,18 +68,18 @@ msgstr "No hacer nada en absoluto" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:79 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:121 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:155 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:607 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:797 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:609 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:799 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:51 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:896 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:901 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:961 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:909 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:914 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:980 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:137 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:139 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:105 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:171 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:172 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:173 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:174 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:39 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/palmdoc/writer.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ztxt/writer.py:27 @@ -102,10 +102,10 @@ msgstr "No hacer nada en absoluto" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:233 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:235 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:273 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:121 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:276 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:138 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:132 @@ -116,23 +116,23 @@ msgstr "No hacer nada en absoluto" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:842 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:109 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:143 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:454 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:455 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:402 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:424 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:919 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1045 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:183 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:406 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:428 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:952 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1078 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:185 #: /home/kovid/work/calibre/src/calibre/library/cli.py:281 #: /home/kovid/work/calibre/src/calibre/library/database.py:913 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:703 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:715 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1143 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1180 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1552 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1554 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1670 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:744 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:756 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1185 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1222 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1600 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1602 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1718 #: /home/kovid/work/calibre/src/calibre/library/server.py:645 #: /home/kovid/work/calibre/src/calibre/library/server.py:721 #: /home/kovid/work/calibre/src/calibre/library/server.py:768 @@ -165,7 +165,7 @@ msgstr "Escritor de metadados" msgid "Catalog generator" msgstr "Generador de catálogo" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:14 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:15 msgid "" "Follow all local links in an HTML file and create a ZIP file containing all " "linked files. This plugin is run every time you add an HTML file to the " @@ -175,7 +175,7 @@ msgstr "" "con los ficheros enlazados. Este complemento se ejecuta cada vez que se " "añade un fichero HTML a la biblioteca." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:49 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:50 msgid "" "Character encoding for the input HTML files. Common choices include: cp1252, " "latin1, iso-8859-1 and utf-8." @@ -183,7 +183,7 @@ msgstr "" "Codificación de los ficheros HTML de entrada. Las opciones comunes incluyen: " "cp1252, latin1, iso-8859-1 and utf-8." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:56 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:57 msgid "" "Create a PMLZ archive containing the PML file and all images in the " "directory pmlname_img or images. This plugin is run every time you add a PML " @@ -193,47 +193,47 @@ msgstr "" "los directorios pmlname_img o images. Este complemento se ejecutará cada vez " "que añada un archivo PML a la biblioteca" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:87 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:88 msgid "Extract cover from comic files" msgstr "Extraer la portada de los ficheros de cómic" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:108 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:120 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:130 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:140 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:151 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:161 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:171 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:181 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:191 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:201 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:212 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:223 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:235 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:256 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:267 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:277 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:287 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:109 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:121 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:131 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:141 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:152 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:162 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:172 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:182 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:192 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:202 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:213 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:224 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:236 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:257 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:268 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:278 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:288 msgid "Read metadata from %s files" msgstr "Leer metadatos desde ficheros %s" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:246 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:247 msgid "Read metadata from ebooks in RAR archives" msgstr "Leer metadatos de libros electrónicos en archivos RAR" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:298 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:299 msgid "Read metadata from ebooks in ZIP archives" msgstr "Leer metadatos de libros electrónicos en archivos ZIP" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:309 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:319 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:329 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:351 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:362 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:310 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:320 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:330 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:352 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:363 msgid "Set metadata in %s files" msgstr "Asignar metadatos a los ficheros %s" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:340 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:341 msgid "Set metadata from %s files" msgstr "Establecer metadatos desde ficheros %s" @@ -519,6 +519,10 @@ msgstr "Interfaz del dispositivo" msgid "Communicate with the IRex Digital Reader 1000 eBook reader." msgstr "Comunicar con el lector IRex Digital Reader 1000." +#: /home/kovid/work/calibre/src/calibre/devices/irexdr/driver.py:42 +msgid "Communicate with the IRex Digital Reader 800" +msgstr "Comunicar con el lector IRex Digital Reader 800" + #: /home/kovid/work/calibre/src/calibre/devices/iriver/driver.py:15 msgid "Communicate with the Iriver Story reader." msgstr "Comunicar con el lector Iriver Story." @@ -660,12 +664,12 @@ msgid "There is insufficient free space on the storage card" msgstr "No hay suficiente espacio libre en la tarjeta de almacenamiento" #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:799 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:822 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:824 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:232 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1068 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1072 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1452 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1109 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1113 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1500 msgid "News" msgstr "Noticias" @@ -821,8 +825,8 @@ msgstr "" msgid "Apply no processing to the image" msgstr "Dejar imágenes sin procesar" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:441 -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:452 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:442 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:453 msgid "Page" msgstr "Página" @@ -1186,9 +1190,9 @@ msgid "" "paragraph indent, to ensure that paragraphs can be easily distinguished. " "This option controls the width of that indent." msgstr "" -"Cuando calibre elimina el espacio entre párrafos, añade automáticamente una " +"Cuando Calibre elimina el espacio entre párrafos, añade automáticamente una " "sangría en la primera línea para que los párrafos puedan distinguirse " -"fácilmente. Esta opción controla la anchura de dicha sangría." +"fácilmente. Esta opción controla el ancho de dicha sangría." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:323 msgid "" @@ -1753,79 +1757,79 @@ msgstr "Tipo de letra monoespaciada a incrustar." msgid "Comic" msgstr "Cómic" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:358 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:362 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:45 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:163 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:399 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1111 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:403 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1144 msgid "Title" msgstr "Título" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:359 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:363 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:57 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:164 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:404 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1112 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:408 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1145 msgid "Author(s)" msgstr "Autor(es)" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:360 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:364 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:59 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:173 msgid "Publisher" msgstr "Editorial" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:361 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:365 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:49 msgid "Producer" msgstr "Productor" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:362 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:366 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:183 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:100 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:67 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:364 #: /home/kovid/work/calibre/src/calibre/gui2/status.py:94 msgid "Comments" msgstr "Comentarios" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:370 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:170 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:349 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1055 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1115 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1088 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1148 #: /home/kovid/work/calibre/src/calibre/gui2/status.py:96 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 msgid "Tags" msgstr "Etiquetas" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:372 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:171 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:365 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:369 #: /home/kovid/work/calibre/src/calibre/gui2/status.py:95 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 msgid "Series" msgstr "Serie" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:373 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:377 msgid "Language" msgstr "Idioma" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:375 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1054 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:379 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1087 msgid "Timestamp" msgstr "Marca de tiempo" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:377 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:381 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:61 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:171 msgid "Published" msgstr "Publicado" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:379 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:383 msgid "Rights" msgstr "Derechos" @@ -1833,6 +1837,14 @@ msgstr "Derechos" msgid "EDITORIAL REVIEW" msgstr "REVISIÓN EDITORIAL" +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/archive.py:21 +msgid "" +"Extract common e-book formats from archives (zip/rar) files. Also try to " +"autodetect if they are actually cbz/cbr files." +msgstr "" +"Extraer los formatos de libro digital comunes de archivos (zip/rar). También " +"intenta detectar automáticamente si se trata de ficheros cbz/cbr." + #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:19 msgid "options" msgstr "opciones" @@ -2057,7 +2069,7 @@ msgstr "" "LibraryThing.com\n" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1083 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1328 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1347 msgid "Cover" msgstr "Portada" @@ -2088,74 +2100,74 @@ msgstr "Título para cualquier índice generado en el texto." msgid "Disable compression of the file contents." msgstr "Desactivar la compresión del fichero." -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:102 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:105 msgid "All articles" msgstr "Todos los artículos" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1329 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1348 msgid "Title Page" msgstr "Página de título" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1330 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1349 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:53 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:188 msgid "Table of Contents" msgstr "Índice" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1331 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1350 msgid "Index" msgstr "Índice analítico" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1332 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1351 msgid "Glossary" msgstr "Glosario" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1333 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1352 msgid "Acknowledgements" msgstr "Agradecimientos" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1334 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1353 msgid "Bibliography" msgstr "Bibliografía" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1335 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1354 msgid "Colophon" msgstr "Colofón" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1336 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1355 msgid "Copyright" msgstr "Copyright" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1337 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1356 msgid "Dedication" msgstr "Dedicatoria" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1338 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1357 msgid "Epigraph" msgstr "Epígrafe" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1339 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1358 msgid "Foreword" msgstr "Prólogo" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1340 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1359 msgid "List of Illustrations" msgstr "Lista de ilustraciones" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1341 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1360 msgid "List of Tables" msgstr "Lista de tablas" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1342 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1361 msgid "Notes" msgstr "Notas" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1343 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1362 msgid "Preface" msgstr "Prefacio" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1344 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1363 msgid "Main Text" msgstr "Texto principal" @@ -2524,10 +2536,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:199 msgid "" "This RTF file has a feature calibre does not support. Convert it to HTML " -"first and then try it." +"first and then try it.\n" +"%s" msgstr "" -"Este fichero RTF tiene una característica no soportada por calibre. " -"Conviértalo a HTML primero y pruebe con éste." +"Este fichero RTF contiene una característica no soportada por calibre. " +"Conviértalo primero a HTML y vuelva a intentarlo.\n" +"%s" #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:23 msgid "" @@ -2599,83 +2613,83 @@ msgstr "" "espacio. También permite que la longitud de línea máxima sea menor que el " "valor mínimo." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:29 msgid "Send file to storage card instead of main memory by default" msgstr "" "Por defecto, enviar fichero a tarjeta de almacenamiento en vez de a memoria " "principal" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:30 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:31 msgid "Confirm before deleting" msgstr "Confirmar antes de borrar" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:33 msgid "Toolbar icon size" msgstr "Tamaño de los iconos de la barra de herramientas" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:34 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:35 msgid "Show button labels in the toolbar" msgstr "Mostrar etiquetas en los botones de la barra de herramientas" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:36 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:37 msgid "Main window geometry" msgstr "Geometría de la ventana principal" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:39 msgid "Notify when a new version is available" msgstr "Notificar cuando haya una nueva versión disponible" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:40 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:41 msgid "Use Roman numerals for series number" msgstr "Usar números romanos para los número de series" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:43 msgid "Sort tags list by popularity" msgstr "Ordenar la lista de etiquetas por popularidad" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:44 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:45 msgid "Number of covers to show in the cover browsing mode" msgstr "" "Numero de portadas de libros a mostrar en el modo de exploración por portadas" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:47 msgid "Defaults for conversion to LRF" msgstr "Opciones por defecto para la conversión a LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:49 msgid "Options for the LRF ebook viewer" msgstr "Opciones para el visor de libros LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:52 msgid "Formats that are viewed using the internal viewer" msgstr "Formatos que se visualizan usando el visor interno" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 msgid "Columns to be displayed in the book list" msgstr "Columnas mostradas en la lista de libros" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 msgid "Automatically launch content server on application startup" msgstr "" "Lanzar el servidor de contenidos automáticamente al iniciar la aplicación" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 msgid "Oldest news kept in database" msgstr "Antigüedad máxima de las noticias guardadas en la base de datos" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:57 msgid "Show system tray icon" msgstr "Mostrar el icono en la bandeja del sistema" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:59 msgid "Upload downloaded news to device" msgstr "Pasar las noticias descargadas al dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:61 msgid "Delete books from library after uploading to device" msgstr "Eliminar libros de la biblioteca después de pasarlos al dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:63 msgid "" "Show the cover flow in a separate window instead of in the main calibre " "window" @@ -2683,83 +2697,88 @@ msgstr "" "Mostrar el explorador de portadas en una ventana separada en vez de en la " "ventana principal de calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:65 msgid "Disable notifications from the system tray icon" msgstr "Desactivar las notificaciones del icono de la bandeja del sistema" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:67 msgid "Default action to perform when send to device button is clicked" msgstr "" "Acción por defecto que se ejecutará cuando se pulse el botón de enviar al " "dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:89 msgid "Maximum number of waiting worker processes" msgstr "Númera máximo de procesos en espera" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:91 msgid "Download social metadata (tags/rating/etc.)" msgstr "Descargar metadatos sociales (etiquetas/valoración/etc...)" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:93 +msgid "Overwrite author and title with new metadata" +msgstr "Reemplazar el autor y el título con nuevos metadatos" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:95 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "Limitar el número de tareas al número de CPU" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:439 msgid "Copied" msgstr "Copiado" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:167 msgid "Copy" msgstr "Copiar" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:167 msgid "Copy to Clipboard" msgstr "Copiar al portapapeles" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:395 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:398 msgid "Choose Files" msgstr "Escoger ficheros" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:52 msgid "Searching in" msgstr "Buscando en" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:173 msgid "Adding..." msgstr "Añadiendo..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:186 msgid "Searching in all sub-directories..." msgstr "Buscando en todos los subdirectorios..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:199 msgid "Path error" msgstr "Error en la ruta" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:200 msgid "The specified directory could not be processed." msgstr "El directorio especificado no se puede procesar." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:495 msgid "No books" msgstr "Sin libros" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1400 msgid "No books found" msgstr "No se encontró ningún libro" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:271 msgid "Added" msgstr "Añadido" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:284 msgid "Adding failed" msgstr "Fallo al añadir" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:285 msgid "" "The add books process seems to have hung. Try restarting calibre and adding " "the books in smaller increments, until you find the problem book." @@ -2768,11 +2787,11 @@ msgstr "" "calibre y añadir los libros en grupos más pequeños, hasta que encuentre el " "libro que causa el problema." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:287 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:297 msgid "Duplicates found!" msgstr "¡Se han encontrado duplicados!" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:298 msgid "" "Books with the same title as the following already exist in the database. " "Add them anyway?" @@ -2780,15 +2799,15 @@ msgstr "" "Ya existen libros con el mismo titulo que los siguientes en la base de " "datos. ¿Añadirlos de todas formas?" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:301 msgid "Adding duplicates..." msgstr "Añadiendo duplicados" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:362 msgid "Saving..." msgstr "Guardando..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:415 msgid "Saved" msgstr "Guardado" @@ -2803,7 +2822,7 @@ msgstr "Opciones CSV/XML" #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:13 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:20 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input.py:13 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:13 @@ -2819,7 +2838,7 @@ msgstr "Opciones específicas para" #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:20 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output.py:15 @@ -2828,7 +2847,7 @@ msgid "output" msgstr "salida" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:36 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:64 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:27 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:49 @@ -2838,8 +2857,8 @@ msgstr "salida" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:118 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:115 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:165 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:44 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:114 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input_ui.py:31 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:35 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:38 @@ -2868,28 +2887,56 @@ msgid "E-book options" msgstr "Opciones de libro digital" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:256 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1416 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1430 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:271 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1464 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1478 msgid "Catalog" msgstr "Catálogo" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:52 -msgid "Tags to exclude as genres (regex):" -msgstr "Etiquetas para excluir de los géneros (regex):" - -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:65 msgid "'Don't include this book' tag:" msgstr "Etiqueta para 'no incluir este libro':" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:66 msgid "'Mark this book as read' tag:" msgstr "Etiqueta para 'marcar este libro como leído':" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:67 msgid "Additional note tag prefix:" msgstr "Prefijo adicional para notas:" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:68 +msgid "Regex pattern describing tags to exclude as genres:" +msgstr "" +"Expresión regular que describe las etiquetas que no se considerarán como " +"géneros:" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:69 +msgid "" +"Regex tips:\n" +"- The default regex - \\[[\\w ]*\\] - excludes genre tags of the form [tag], " +"e.g., [Amazon Freebie]\n" +"- A regex pattern of a single dot excludes all genre tags, generating no " +"Genre Section" +msgstr "" +"Apuntes de expresiones regulares:\n" +"- El patrón predeterminado, \\[[\\w ]*\\], excluye las etiquetas de la forma " +"[etiqueta], p. ej. [promoción de Amazon]\n" +"- Un patrón con un punto únicamente excluye todas las etiquetas, con lo que " +"no se genera la sección Géneros." + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:72 +msgid "Include 'Titles' Section" +msgstr "Incluir la sección 'Títulos'" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:73 +msgid "Include 'Recently Added' Section" +msgstr "Incluir la sección 'Añadidos recientemente'" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:74 +msgid "Sort numbers as text" +msgstr "Ordenar los números como texto" + #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:28 msgid "Tab template for catalog.ui" msgstr "Plantilla para catalog.ui" @@ -3025,12 +3072,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:570 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:574 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:357 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376 @@ -3160,10 +3207,10 @@ msgstr "Cla&ve de tamaño de letra" #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:118 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:125 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:118 #: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:126 msgid " pt" msgstr " pt" @@ -3385,7 +3432,7 @@ msgid "Change the title of this book" msgstr "Cambiar el título del libro" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:173 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:140 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:358 msgid "&Author(s): " msgstr "&Autor(es): " @@ -3403,7 +3450,7 @@ msgstr "" "comas." #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:149 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367 msgid "&Publisher: " msgstr "&Editorial: " @@ -3414,7 +3461,7 @@ msgid "Ta&gs: " msgstr "Eti&quetas: " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:178 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:151 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:369 msgid "" "Tags categorize the book. This is particularly useful while searching. " @@ -3424,15 +3471,15 @@ msgstr "" "utilizarse cualesquier palabras o frases, separadas por comas." #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:179 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:156 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:372 msgid "&Series:" msgstr "&Serie:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:181 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:154 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:158 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:373 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374 msgid "List of known series. You can add new series." @@ -3443,63 +3490,75 @@ msgstr "Lista de series conocidas. Se pueden añadir nuevas series." msgid "Book " msgstr "Libro " -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:20 msgid "MOBI Output" msgstr "Salida MOBI" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:42 +msgid "Default" +msgstr "Predeterminado" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:58 msgid "&Title for Table of Contents:" msgstr "&Título para el Índice:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:59 msgid "Rescale images for &Palm devices" msgstr "Reducir imágenes para dispositivos &Palm" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:60 msgid "Use author &sort for author" msgstr "Usar el o&rden de autor como autor(es)" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:61 msgid "Disable compression of the file contents" msgstr "&Desactivar la compresión del fichero" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:62 msgid "Do not add Table of Contents to book" msgstr "&No añadir un Índice al libro" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:63 +msgid "Kindle options" +msgstr "Opciones de Kindle" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:64 +msgid "Masthead font:" +msgstr "Tipo de letra para el rótulo:" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup.py:35 msgid "Page Setup" msgstr "Configuración de página" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:115 msgid "&Output profile:" msgstr "Perfil de &salida:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:116 msgid "Profile description" msgstr "Descripción del perfil" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:117 msgid "&Input profile:" msgstr "Perfil de &entrada:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:118 msgid "Margins" msgstr "Márgenes" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:119 msgid "&Left:" msgstr "&Izquierda:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:121 msgid "&Top:" msgstr "&Arriba:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:123 msgid "&Right:" msgstr "&Derecha:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:125 msgid "&Bottom:" msgstr "A&bajo:" @@ -3554,7 +3613,7 @@ msgid "RB Output" msgstr "Salida RB" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1637 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1645 msgid "Choose the format to view" msgstr "Elija el formato para visualizar" @@ -3867,7 +3926,7 @@ msgstr "" "ebook.com/user_manual/xpath.html\">Tutorial de XPathl.

" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:38 -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:132 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:135 msgid "No details available." msgstr "No hay detalles disponibles." @@ -4095,8 +4154,8 @@ msgstr "Guardar &template:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:110 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:111 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:356 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1050 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1083 #: /home/kovid/work/calibre/src/calibre/gui2/status.py:92 msgid "Path" msgstr "Ruta" @@ -4106,7 +4165,7 @@ msgstr "Ruta" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:114 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:216 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/status.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 msgid "Formats" @@ -4129,7 +4188,7 @@ msgid "My Books" msgstr "Mis libros" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:67 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:264 msgid "Generate catalog" msgstr "Genera el catálogo" @@ -4265,130 +4324,130 @@ msgstr "" msgid "new email address" msgstr "nueva dirección de correo electrónico" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:477 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:821 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:478 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:823 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1249 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 msgid "Error" msgstr "Error" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:478 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:479 msgid "Failed to install command line tools." msgstr "Fallo al instalar las herramientas de línea de órdenes." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:481 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:482 msgid "Command line tools installed" msgstr "Herramientas de línea de órdenes instaladas" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:482 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:483 msgid "Command line tools installed in" msgstr "Herramientas de línea de órdenes instaladas en" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:483 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:484 msgid "" "If you move calibre.app, you have to re-install the command line tools." msgstr "" "Si mueve calibre.app, deberá reinstalar las herramientas de línea de órdenes." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:534 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:535 msgid "No valid plugin path" msgstr "No hay ninguna ruta de complementos válida" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:536 msgid "%s is not a valid plugin path" msgstr "%s no es una ruta de complementos válida" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:539 msgid "Choose plugin" msgstr "Elegir complemento" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551 msgid "Plugin cannot be disabled" msgstr "El complemento no puede desactivarse" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:552 msgid "The plugin: %s cannot be disabled" msgstr "El complemento: %s no puede desactivarse" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:561 msgid "Plugin not customizable" msgstr "Complemento no personalizable" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:561 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:562 msgid "Plugin: %s does not need customization" msgstr "Complemento: %s no necesita personalización" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:569 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:570 msgid "Customize" msgstr "Personalizar" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:608 msgid "Cannot remove builtin plugin" msgstr "No se puede eliminar el complemento incorporado" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:609 msgid " cannot be removed. It is a builtin plugin. Try disabling it instead." msgstr "" " no puede eliminarse. Es un complemento incorporado. Intente desactivarlo en " "su lugar." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:641 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:642 msgid "Error log:" msgstr "Registro de errores:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:648 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:649 msgid "Access log:" msgstr "Registro de accesos:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:676 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:659 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:677 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:660 msgid "Failed to start content server" msgstr "Fallo al iniciar el servidor de contenidos" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:701 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:550 msgid "Select location for books" msgstr "Seleccionar ubicación para los libros" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:708 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:709 msgid "Invalid size" msgstr "Tamaño no válido" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:709 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:710 msgid "The size %s is invalid. must be of the form widthxheight" msgstr "El tamaño %s no es válido. Debe ser de la forma anchuraxaltura" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:762 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:767 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:764 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:769 msgid "Invalid database location" msgstr "Ubicación de la base de datos no válida" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:763 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:765 msgid "Invalid database location " msgstr "Ubicación de la base de datos no válida " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:764 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:766 msgid "
Must be a directory." msgstr "
Debe ser un directorio." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:768 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:770 msgid "Invalid database location.
Cannot write to " msgstr "Ubicación de la base de datos no válida.
Imposible escribir en " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:802 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:804 msgid "Checking database integrity" msgstr "Comprobando la integridad de la base de datos" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:822 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:824 msgid "Failed to check database integrity" msgstr "Fallo al comprobar la integridad de la base de datos" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:827 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:829 msgid "Some inconsistencies found" msgstr "Se encontraron incoherencias" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:828 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:830 msgid "" "The following books had formats listed in the database that are not actually " "available. The entries for the formats have been removed. You should check " @@ -4495,15 +4554,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:118 msgid "Sending to &device" -msgstr "Enviara &dispositivo" +msgstr "Enviar a &dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504 #: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:366 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 msgid "Preferences" msgstr "Preferencias" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 msgid "" "&Location of ebooks (The ebooks are stored in folders sorted by author and " "metadata is stored in the file metadata.db)" @@ -4512,24 +4571,28 @@ msgstr "" "en carpetas ordenadas por autor, los metadatos se almacenan en el fichero " "metadata.db)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:503 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 msgid "Browse for the new database location" msgstr "Seleccionar la nueva ubicación de la base de datos" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 msgid "Show notification when &new version is available" msgstr "Mostrar un aviso cuando haya una &nueva versión disponible" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 msgid "Download &social metadata (tags/ratings/etc.) by default" msgstr "" "Descargar metadatos &sociales (etiquetas/valoraciones/etc...) por defecto" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 +msgid "&Overwrite author and title by default when fetching metadata" +msgstr "&Reemplazar el autor y el título al adquirir metadatos" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 msgid "Default network &timeout:" msgstr "&Tiempo de espera máximo por defecto de la red:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 msgid "" "Set the default timeout for network fetches (i.e. anytime we go out to the " "internet to get information)" @@ -4537,156 +4600,156 @@ msgstr "" "Establecer el tiempo de espera maximo para peticiones de red (cada vez que " "se conecte a Internet para adquirir alguna información)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 msgid " seconds" msgstr " segundos" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 msgid "Choose &language (requires restart):" msgstr "Se&leccionar idioma (requiere reiniciar el programa):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 msgid "Normal" msgstr "Normal" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 msgid "High" msgstr "Alta" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 msgid "Low" msgstr "Baja" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 msgid "Job &priority:" msgstr "&Prioridad de tareas:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 msgid "Preferred &output format:" msgstr "F&ormato de salida preferente:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 msgid "Preferred &input format order:" msgstr "Orden de preferenc&ia de formatos de entrada:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 msgid "Use &Roman numerals for series number" msgstr "Uso de números &romanos para los números dentro de una serie" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 msgid "Enable system &tray icon (needs restart)" msgstr "Activar icono en &bandeja del sistema (requiere reinicio)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 msgid "Show ¬ifications in system tray" msgstr "Mostrar ¬icaciones en la bandeja del sistema" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 msgid "Show cover &browser in a separate window (needs restart)" msgstr "" "Mostrar explorador de &portadas en ventana separada (requiere reinicio)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 msgid "Search as you type" msgstr "&Buscar mientras se escribe" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 msgid "Automatically send downloaded &news to ebook reader" msgstr "" "Enviar ¬icias descargadas automáticamente al lector de libros electrónicos" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 msgid "&Delete news from library when it is automatically sent to reader" msgstr "" "&Eliminar noticias de la biblioteca cuando se hayan enviado automáticamente " "al lector." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 msgid "&Number of covers to show in browse mode (needs restart):" msgstr "Nú&mero de portadas a mostrar en el explorador (requiere reinicio):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 msgid "Toolbar" msgstr "Barra de herramientas" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 msgid "Large" msgstr "Grande" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 msgid "Medium" msgstr "Medio" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 msgid "Small" msgstr "Pequeño" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 msgid "&Button size in toolbar" msgstr "Tamaño de botón en la barra de &herramientas" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 msgid "Show &text in toolbar buttons" msgstr "Mostrar &texto en los botones de la barra de herramientas" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 msgid "Select visible &columns in library view" msgstr "Seleccione las &columnas visibles en la vista de la biblioteca" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 msgid "Use internal &viewer for:" msgstr "&Usar visor interno para:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 msgid "Add an email address to which to send books" msgstr "" "Añadir una dirección de correo electrónico a la que se enviarán los libros" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 msgid "&Add email" msgstr "&Añadir correo electrónico" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 msgid "Make &default" msgstr "Asignar como pre&determinada" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 msgid "&Remove email" msgstr "E&liminar correo electrónico" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 msgid "calibre can send your books to you (or your reader) by email" msgstr "" "calibre le puede enviar los libros a usted (o a su lector) por correo " "electrónico" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 msgid "&Maximum number of waiting worker processes (needs restart):" msgstr "&Número máximo de procesos en espera (necesita reiniciar):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 msgid "&Check database integrity" msgstr "&Comprobar la integridad de la base de datos" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 msgid "&Install command line tools" msgstr "Instalar &herramientas de línea de órdenes" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549 msgid "Open calibre &configuration directory" msgstr "&Abrir el directorio de configuración de calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 msgid "Limit the max. simultaneous jobs to the available CPU &cores" msgstr "" "Limitar el número máximo de tareas simultáneas al número de núcleos de &CPU " "disponibles." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 msgid "Debug &device detection" msgstr "Depurar detección de &dispositivos" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 msgid "" "calibre contains a network server that allows you to access your book " "collection using a browser from anywhere in the world. Any changes to the " @@ -4697,25 +4760,25 @@ msgstr "" "en las preferencias tendrá efecto sólo después de que se reinicie el " "servidor." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553 msgid "Server &port:" msgstr "&Puerto del servidor:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117 msgid "&Username:" msgstr "&Usuario:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119 msgid "&Password:" msgstr "Cont&raseña:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 msgid "" "If you leave the password blank, anyone will be able to access your book " "collection using the web interface." @@ -4723,7 +4786,7 @@ msgstr "" "Si se deja la contraseña en blanco, cualquiera podrá acceder a su colección " "de libros a través la interfaz web." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " @@ -4731,41 +4794,41 @@ msgstr "" "El tamaño máximo (anchura × altura) con el que se mostrarán las portadas. " "Las portadas mayores se redimensionarán. " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558 msgid "Max. &cover size:" msgstr "&Tamaño máximo de portada:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212 msgid "&Show password" msgstr "&Mostrar contraseña" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560 msgid "Max. &OPDS items per query:" msgstr "Número máximo de elementos &OPDS por consulta:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561 msgid "&Start Server" msgstr "&Iniciar servidor" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:562 msgid "St&op Server" msgstr "&Detener servidor" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:563 msgid "&Test Server" msgstr "Pro&bar servidor" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:564 msgid "Run server &automatically on startup" msgstr "Ejecutar servidor &automáticamente al iniciar" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:565 msgid "View &server logs" msgstr "Ver registros del &servidor" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:566 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46 msgid "" "

Remember to leave calibre running as the server only runs as long as " @@ -4782,7 +4845,7 @@ msgstr "" "el lector Stanza de su iPhone, donde miservidor es el nombre de servidor " "completo o la dirección IP del equipo donde se ejecuta calibre." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:564 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:568 msgid "" "Here you can customize the behavior of Calibre by controlling what plugins " "it uses." @@ -4790,27 +4853,27 @@ msgstr "" "Aquí puede personalizar el comportamiento de calibre controlando qué " "complementos usa." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:565 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:569 msgid "Enable/&Disable plugin" msgstr "Activar/&Desactivar complemento" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:566 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:570 msgid "&Customize plugin" msgstr "&Personalizar complemento" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:567 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:571 msgid "&Remove plugin" msgstr "&Eliminar complemento" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:568 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:572 msgid "Add new plugin" msgstr "Añadir nuevo complemento" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:569 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:573 msgid "Plugin &file:" msgstr "&Fichero de complemento:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:571 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:575 msgid "&Add" msgstr "&Añadir" @@ -4880,43 +4943,43 @@ msgstr "Orden de autor" msgid "ISBN" msgstr "ISBN" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:151 msgid "Finding metadata..." msgstr "Buscando metadatos..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:164 msgid "Could not find metadata" msgstr "No se encontraron metadatos" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:165 msgid "The metadata download seems to have stalled. Try again later." msgstr "" "La descarga de metadatos parece haberse interrumpido. Inténtelo de nuevo más " "tarde." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:174 msgid "Warning" msgstr "Aviso" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:175 msgid "Could not fetch metadata from:" msgstr "No se pudieron obtener los metadatos de:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:179 msgid "No metadata found" msgstr "No se encontraron metadatos" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:180 msgid "" "No metadata found, try adjusting the title and author or the ISBN key." msgstr "" "No se encontraron metadatos, intente ajustar el título y el autor o el ISBN" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:84 msgid "Fetch metadata" msgstr "Buscar metadatos" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85 msgid "" "

calibre can find metadata for your books from two locations: Google " "Books and isbndb.com.

To use isbndb.com you must sign up for a " @@ -4928,29 +4991,33 @@ msgstr "" "href=\"http://www.isbndb.com\">cuenta gratuita e introducir su " "contraseña de acceso debajo." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:86 msgid "&Access Key:" msgstr "&Clave de acceso:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87 msgid "Fetch" msgstr "Buscar" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:88 msgid "Matches" msgstr "Coincidencias" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:89 msgid "" "Select the book that most closely matches your copy from the list below" msgstr "Seleccionar el libro que más se aproxime del listado mostrado abajo" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:90 msgid "Download &social metadata (tags/rating/etc.) for the selected book" msgstr "" "Descargar metadatos &sociales (etiquetas/valoraciones/etc...) para el libro " "seleccionado" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:91 +msgid "Overwrite author and title with author and title of selected book" +msgstr "Reemplazar el autor y el título del libro seleccionado" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/job_view_ui.py:37 msgid "Details of job" msgstr "Detalles de la tarea" @@ -4971,24 +5038,24 @@ msgstr "Mostrar &detalles de la tarea" msgid "Stop &all jobs" msgstr "Detener &todas las tareas" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:138 msgid "Edit Meta information" msgstr "Editar metainformación" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:353 msgid "Meta information" msgstr "Metainformación" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:141 msgid "A&utomatically set author sort" msgstr "Establecer a&utomáticamente el orden de autor" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:142 msgid "Author s&ort: " msgstr "&Orden de autor: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:143 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360 msgid "" "Specify how the author(s) of this book should be sorted. For example Charles " @@ -4997,48 +5064,52 @@ msgstr "" "Especificar cómo ordenar el(los) autor(es) de este libro. Por ejemplo, " "ordena Miguel de Cervantes como Cervantes, Miguel de." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:144 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:363 msgid "&Rating:" msgstr "&Valoración:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:143 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:364 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:365 msgid "Rating of this book. 0-5 stars" msgstr "Valoración de este libro: 0-5 estrellas" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:147 +msgid "No change" +msgstr "Sin cambios" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:366 msgid " stars" msgstr " estrellas" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:150 msgid "Add ta&gs: " msgstr "Añadir eti&quetas: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:149 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:370 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371 msgid "Open Tag Editor" msgstr "Abrir editor de etiquetas" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:154 msgid "&Remove tags:" msgstr "Eli&minar etiquetas" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:155 msgid "Comma separated list of tags to remove from the books. " msgstr "" "Lista de etiquetas, separadas por comas, para eliminar de los libros " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:159 msgid "Remove &format:" msgstr "Eliminar &formato:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:160 msgid "&Swap title and author" msgstr "&Intercambiar título y autor" @@ -5051,7 +5122,7 @@ msgid "Choose formats for " msgstr "Elegir formatos para " #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:137 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1004 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1005 msgid "Books" msgstr "Libros" @@ -5093,70 +5164,70 @@ msgstr "La portada del formato %s no es válida" msgid "Abort the editing of all remaining books" msgstr "Abortar la edición de todos los libros restantes" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:407 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:412 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:408 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:413 msgid "This ISBN number is valid" msgstr "Este ISBN es válido" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:415 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:416 msgid "This ISBN number is invalid" msgstr "Este ISBN no es válido" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:511 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:512 msgid "Downloading cover..." msgstr "Descargando portada..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:523 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:528 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:534 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:535 msgid "Cannot fetch cover" msgstr "No se pudo descargar la portada" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:524 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:525 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:536 msgid "Could not fetch cover.
" msgstr "No se pudo descargar la portada.
" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:525 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:526 msgid "The download timed out." msgstr "El tiempo de descarga ha vencido." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:530 msgid "Could not find cover for this book. Try specifying the ISBN first." msgstr "" "No se pudo encontrar la portada de este libro. Inténtelo de nuevo " "especificando primero el ISBN." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:541 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:542 msgid "Bad cover" msgstr "Portada incorrecta" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:542 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:543 msgid "The cover is not a valid picture" msgstr "La portada no es una imagen válida" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:572 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:573 msgid "There were errors" msgstr "Se encontraron errores" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:573 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:574 msgid "There were errors downloading social metadata" msgstr "Se encontraron errores al descargar los metadatos sociales" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:604 msgid "Cannot fetch metadata" msgstr "No se pudieron obtener los metadatos" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:598 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:605 msgid "You must specify at least one of ISBN, Title, Authors or Publisher" msgstr "" "Debe especificar al menos uno de entre ISBN, título, autores o editorial" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:660 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:675 msgid "Permission denied" msgstr "Permiso denegado" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:661 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:676 msgid "Could not open %s. Is it being used by another program?" msgstr "No se pudo abrir %s. ¿Lo está usando algún otro programa?" @@ -5420,35 +5491,59 @@ msgstr "" msgid "Negate" msgstr "Negar" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:113 msgid "Advanced Search" msgstr "Búsqueda avanzada" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:114 msgid "Find entries that have..." msgstr "Encuentra entradas que tengan..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:115 msgid "&All these words:" msgstr "&Todas estas palabras:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:116 msgid "This exact &phrase:" msgstr "Esta &frase exacta:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:117 msgid "&One or more of these words:" msgstr "&Una o más de estas palabras:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:118 msgid "But dont show entries that have..." msgstr "Pero no mostrar las entradas que tengan..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:119 msgid "Any of these &unwanted words:" msgstr "Cualquiera de estas palabras &no deseadas:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:95 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:120 +msgid "What kind of match to use:" +msgstr "Tipo de coincidencias:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:121 +msgid "Contains: the word or phrase matches anywhere in the metadata" +msgstr "" +"Contiene: se busca la palabra o frase en cualquier posición de los metadatos" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:122 +msgid "Equals: the word or phrase must match an entire metadata field" +msgstr "" +"Coincide: La palabra o frase debe corresponder al campo de metadatos completo" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:123 +msgid "" +"Regular expression: the expression must match anywhere in the metadata" +msgstr "" +"Expresión regular: se busca la expresión en cualquier lugar de los metadatos" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:124 +msgid " " +msgstr " " + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:125 msgid "" "See the User Manual for more help" @@ -5887,23 +5982,23 @@ msgstr "No disponible" msgid " - Jobs" msgstr " - tareas" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:165 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1113 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1146 msgid "Size (MB)" msgstr "Tamaño (MB)" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1114 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1147 msgid "Date" msgstr "Fecha" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:172 msgid "Rating" msgstr "Valoración" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:348 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:354 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:363 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:72 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:77 @@ -5911,15 +6006,15 @@ msgstr "Valoración" msgid "None" msgstr "Ninguno" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:365 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:369 msgid "Book %s of %s." msgstr "Libro %s de %s." -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:877 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:882 msgid "Not allowed" msgstr "No permitido" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:878 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:883 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -5927,11 +6022,11 @@ msgstr "" "Copiar directamente a un dispositivo no está soportado. Añada antes el libro " "a la biblioteca de calibre." -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1049 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1082 msgid "Format" msgstr "Formato" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1103 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1136 msgid "Double click to edit me

" msgstr "Doble clic para editarme

" @@ -5961,7 +6056,7 @@ msgstr "" "No se encontraron coincidencias para la búsqueda \"%s\"." #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:410 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:433 msgid "No matches found" msgstr "No se encontraron coincidencias" @@ -6008,52 +6103,52 @@ msgstr "Abrir libro electrónico" msgid "Configure" msgstr "Configurar" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:24 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:25 msgid "Use the library located at the specified path." msgstr "Usar la biblioteca de la ruta especificada." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:27 msgid "Start minimized to system tray." msgstr "Iniciar el programa minimizado en la bandeja del sistema" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:29 msgid "Log debugging information to console" msgstr "Dirigir registro de depuración a la consola" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:30 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:31 msgid "Do not check for updates" msgstr "No comprobar actualizaciones" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:83 msgid "If you are sure it is not running" msgstr "Si está seguro de que no está en ejecución" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:85 msgid "Cannot Start " msgstr "No se puede iniciar " -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:86 msgid "%s is already running." msgstr "%s ya está ejecutándose." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:89 msgid "may be running in the system tray, in the" msgstr "puede estar en ejecución en la bandeja del sistema, en la" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:91 msgid "upper right region of the screen." msgstr "zona superior derecha de la pantalla." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:93 msgid "lower right region of the screen." msgstr "zona inferior derecha de la pantalla." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:96 msgid "try rebooting your computer." msgstr "inténtelo después de reiniciar el equipo." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:95 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:110 msgid "try deleting the file" msgstr "pruebe a borrar el fichero" @@ -6215,11 +6310,11 @@ msgstr "&Salir" msgid "ERROR: Unhandled exception" msgstr "ERROR: Excepción no contemplada" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:89 msgid "Book has neither title nor ISBN" msgstr "El libro no tiene ni título ni ISBN" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:115 msgid "No matches found for this book" msgstr "No se ha encontrado el libro" @@ -6354,11 +6449,11 @@ msgstr "Poniendo en cola " msgid "Fetch news from " msgstr "Obtener noticias de " -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:276 msgid "Convert existing" msgstr "La conversión ya existe" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:277 msgid "" "The following books have already been converted to %s format. Do you wish to " "reconvert them?" @@ -6453,7 +6548,7 @@ msgid "Save to disk in a single directory" msgstr "Guardar en el disco, en un único directorio" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1745 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1750 msgid "Save only %s format to disk" msgstr "Guardar solamente el formato %s en disco" @@ -6477,66 +6572,66 @@ msgstr "Eliminar todos los formatos de los libros seleccionados, excepto..." msgid "Remove covers from selected books" msgstr "Eliminar cubiertas de los libros seleccionados" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:357 msgid "Convert individually" msgstr "Convertir por separado" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:358 msgid "Bulk convert" msgstr "Convertir en bloque" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:361 msgid "Create catalog of books in your calibre library" msgstr "Crear catálogo de los libros en la biblioteca de calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:377 msgid "Run welcome wizard" msgstr "Ejecutar el asistente de bienvenida" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:412 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:413 msgid "Similar books..." msgstr "Libros similares..." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:472 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:473 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:474 msgid "Bad database location" msgstr "Ubicación de la base de datos incorrecta" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:475 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:476 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:558 msgid "Calibre Library" msgstr "Biblioteca de calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:485 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1901 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:486 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1906 msgid "Choose a location for your ebook library." msgstr "Elija otra ubicación para la biblioteca de libros electrónicos." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:523 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:524 msgid "Calibre Quick Start Guide" msgstr "Guía de inicio rápido de calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:703 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:704 msgid "Browse by covers" msgstr "Explorar por portadas" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:851 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:852 msgid "Device: " msgstr "Dispositivo: " -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:853 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:854 msgid " detected." msgstr " detectado." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:877 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:878 msgid "Connected " msgstr "Conectado " -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:889 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:890 msgid "Device database corrupted" msgstr "Base de datos del dispositivo corrupta" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:890 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:891 msgid "" "\n" "

The database of books on the reader is corrupted. Try the " @@ -6566,86 +6661,86 @@ msgstr "" " \n" " " -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:952 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:953 msgid "How many empty books?" msgstr "¿Cuantos libros vacios?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:953 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:954 msgid "How many empty books should be added?" msgstr "¿Cuantos libros vacios debe de estar aumentado?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:997 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:998 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1044 msgid "Uploading books to device." msgstr "Enviando libros al dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1005 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1006 msgid "EPUB Books" msgstr "Libros en EPUB" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1006 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1007 msgid "LRF Books" msgstr "Libros en LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1007 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1008 msgid "HTML Books" msgstr "Libros en HTML" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1008 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1009 msgid "LIT Books" msgstr "Libros en LIT" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1009 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1010 msgid "MOBI Books" msgstr "Libros en MOBI" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1010 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1011 msgid "Text books" msgstr "Libros en formato texto" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1011 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1012 msgid "PDF Books" msgstr "Libros en PDF" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1012 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1013 msgid "Comics" msgstr "Cómics" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1013 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1014 msgid "Archives" msgstr "Archivos" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1017 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1018 msgid "Supported books" msgstr "Libros soportados" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1052 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1055 msgid "Failed to read metadata" msgstr "Fallo leyendo metadatos" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1053 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1056 msgid "Failed to read metadata from the following" msgstr "Fallo leyendo metadatos de" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1072 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1075 msgid "Cannot delete" msgstr "No se puede borrar" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1075 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1631 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1650 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1078 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1639 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1655 msgid "No book selected" msgstr "No hay libros seleccionados" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1085 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1088 msgid "Choose formats to be deleted" msgstr "Elegir formatos a borrar" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1103 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1106 msgid "Choose formats not to be deleted" msgstr "Elegir formatos que no hayan de ser borrados" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1141 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1144 msgid "" "The selected books will be permanently deleted and the files removed " "from your computer. Are you sure?" @@ -6653,131 +6748,139 @@ msgstr "" "Los libros seleccionados serán eliminados permanentemente y los " "ficheros borrados del equipo. ¿Está seguro?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1168 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1171 msgid "Deleting books from device." msgstr "Eliminando libros del dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1199 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1202 msgid "Cannot download metadata" msgstr "No se pueden descargar los metadatos" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1200 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1257 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1290 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1315 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1374 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1487 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1203 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1260 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1293 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1318 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1377 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1495 msgid "No books selected" msgstr "No hay libros seleccionados" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1215 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1218 msgid "social metadata" msgstr "metadatos sociales" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1220 msgid "covers" msgstr "portadas" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1220 msgid "metadata" msgstr "metadatos" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1222 msgid "Downloading %s for %d book(s)" msgstr "Descargando %s para %d libro(s)" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1241 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1244 msgid "Failed to download some metadata" msgstr "No se pudieron descargar algunos metadatos" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1242 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1245 msgid "Failed to download metadata for the following:" msgstr "No se pudieron descargar metadatos para:" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1245 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1248 msgid "Failed to download metadata:" msgstr "No se pudieron descargar metadatos:" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1256 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1289 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1259 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1292 msgid "Cannot edit metadata" msgstr "No se pueden editar los metadatos" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1314 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1317 msgid "Cannot save to disk" msgstr "No se puede guardar en disco" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1317 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1320 msgid "Choose destination directory" msgstr "Elegir directorio de destino" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1344 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1347 msgid "Error while saving" msgstr "Error al guardar" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1345 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1348 msgid "There was an error while saving." msgstr "Hubo un error al guardar." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1352 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1353 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1355 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1356 msgid "Could not save some books" msgstr "No se pudieron guardar algunos libros" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1354 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1357 msgid "Click the show details button to see which ones." msgstr "Pulse el botón \"Mostrar detalles\" para ver cuáles." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1375 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1378 msgid "No books selected to generate catalog for" msgstr "No se han seleccionado libros para generar el catálogo" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1392 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1395 msgid "Generating %s catalog..." msgstr "Generando catálogo %s..." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1403 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1401 +msgid "" +"No books to catalog\n" +"Check exclude tags" +msgstr "" +"No hay libros para incluir en el catálogo\n" +"Compruebe la exclusión de etiquetas" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1411 msgid "Catalog generated." msgstr "Catálogo generado." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1406 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1414 msgid "Export Catalog Directory" msgstr "Directorio para exportar catálogos" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1407 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1415 msgid "Select destination for %s.%s" msgstr "Seleccionar destino para %s.%s" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1421 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1429 msgid "Fetching news from " msgstr "Obteniendo noticias de " -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1435 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1443 msgid " fetched." msgstr " obtenidas." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1486 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1494 msgid "Cannot convert" msgstr "No se puede convertir" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1515 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1523 msgid "Starting conversion of %d book(s)" msgstr "Iniciando la conversión de %d libro(s)" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1631 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1687 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1639 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1692 msgid "Cannot view" msgstr "No se puede visualizar" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1649 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1654 msgid "Cannot open folder" msgstr "No se puede abrir la carpeta" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1671 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1676 msgid "Multiple Books Selected" msgstr "Varios libros seleccionados" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1672 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1677 msgid "" "You are attempting to open %d books. Opening too many books at once can be " "slow and have a negative effect on the responsiveness of your computer. Once " @@ -6789,32 +6892,32 @@ msgstr "" "equipo. Una vez comenzado el proceso no puede deterse hasta que se complete. " "¿Desea continuar?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1688 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1693 msgid "%s has no available formats." msgstr "%s no tiene formatos disponibles." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1729 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1734 msgid "Cannot configure" msgstr "No se puede configurar" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1730 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1735 msgid "Cannot configure while there are running jobs." msgstr "No se puede configurar mientras haya tareas en ejecución." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1773 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1778 msgid "No detailed info available" msgstr "No hay información detallada disponible" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1774 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1779 msgid "No detailed information is available for books on the device." msgstr "" "No hay información detallada disponible para los libros en el dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1829 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1834 msgid "Error talking to device" msgstr "Error de comunicación con el dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1830 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1835 msgid "" "There was a temporary error talking to the device. Please unplug and " "reconnect the device and or reboot." @@ -6822,12 +6925,12 @@ msgstr "" "Hubo un error de comunicación con el dispositivo. Desconecte y vuelva a " "conectar el dispositivo o reinicie la aplicación." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1853 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1881 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1858 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1886 msgid "Conversion Error" msgstr "Error de conversión" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1854 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1859 msgid "" "

Could not convert: %s

It is a DRMed book. You must " "first remove the DRM using third party tools." @@ -6836,23 +6939,23 @@ msgstr "" "href=\"%s\">DRM. Debe eliminar primero el DRM con herramientas de " "terceros." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1867 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1872 msgid "Recipe Disabled" msgstr "Receta deshabilitada" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1882 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1887 msgid "Failed" msgstr "Fallo" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1910 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1915 msgid "Invalid library location" msgstr "Ubicación de la biblioteca no válida" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1911 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1916 msgid "Could not access %s. Using %s as the library." msgstr "No se puede acceder a %s. Usando %s como biblioteca." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1961 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1966 msgid "" "is the result of the efforts of many volunteers from all over the world. If " "you find it useful, please consider donating to support its development." @@ -6861,11 +6964,11 @@ msgstr "" "lo encuentra útil, por favor, considere donar dinero para apoyar su " "desarrollo." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1986 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1991 msgid "There are active jobs. Are you sure you want to quit?" msgstr "Hay tareas activas. ¿Está seguro de que quiere salir?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1989 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1994 msgid "" " is communicating with the device!
\n" " Quitting may cause corruption on the device.
\n" @@ -6876,11 +6979,11 @@ msgstr "" "de datos en el dispositivo.
\n" " ¿Está seguro de que desea salir?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1993 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1998 msgid "WARNING: Active jobs" msgstr "AVISO: Tareas activas" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2045 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2050 msgid "" "will keep running in the system tray. To close it, choose Quit in the " "context menu of the system tray." @@ -6888,7 +6991,7 @@ msgstr "" "continuará ejecutándose en la bandeja del sistema. Para cerrarlo, elija " "Salir en el menú de contexto de la bandeja del sistema." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2064 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2069 msgid "" "Latest version: %s" @@ -6896,11 +6999,11 @@ msgstr "" "Última versión: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2072 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2077 msgid "Update available" msgstr "Actualización disponible" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2073 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2078 msgid "" "%s has been updated to version %s. See the new features. Visit the download page?" @@ -7069,7 +7172,7 @@ msgid "Options to customize the ebook viewer" msgstr "Opciones para personalizar el visor de libros electrónicos" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:40 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:648 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:671 msgid "Remember last used window size" msgstr "&Recordar el último tamaño de ventana usado" @@ -7128,7 +7231,7 @@ msgstr "El tamaño de letra monoespaciada en px" msgid "The standard font type" msgstr "El tipo de letra estándar" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:408 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:449 msgid "&Lookup in dictionary" msgstr "&Localizar en el diccionario" @@ -7188,92 +7291,92 @@ msgstr "Formato del libro" msgid "Go to..." msgstr "Ir a..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:184 msgid "Position in book" msgstr "Posición en el libro" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:191 msgid "Go to a reference. To get reference numbers, use the reference mode." msgstr "" "Ir a una referencia. Para obtener los número de referencia, usar el modo de " "referencia." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:198 msgid "Search for text in book" msgstr "Buscar un texto en el libro" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:259 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:263 msgid "Print Preview" msgstr "Previsualización de impresión" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:271 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:294 msgid "Connecting to dict.org to lookup: %s…" msgstr "Conectando con dict.org para buscar: %s..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:370 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:393 msgid "Choose ebook" msgstr "Elegir libro electrónico" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:371 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:394 msgid "Ebooks" msgstr "Libros electrónicos" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:390 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:413 msgid "Add bookmark" msgstr "Añadir marcador" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:390 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:413 msgid "Enter title for bookmark:" msgstr "Introducir el título del marcador:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:411 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:434 msgid "No matches found for: %s" msgstr "No se encontraron correspondencias para: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:474 msgid "Loading flow..." msgstr "Cargando flujo..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:487 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:510 msgid "Laying out %s" msgstr "Disponiendo %s" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:539 msgid "Manage Bookmarks" msgstr "Administrar marcadores" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:574 msgid "Loading ebook..." msgstr "Cargando libro electrónico..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:559 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:582 msgid "DRM Error" msgstr "Error de DRM" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:583 msgid "

This book is protected by DRM" msgstr "

Este libro está protegido por DRM" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:564 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:587 msgid "Could not open ebook" msgstr "No se pudo abrir el libro electrónico" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:638 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:661 msgid "Options to control the ebook viewer" msgstr "Opciones para controlar el visor de libros electrónicos" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:645 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:668 msgid "" "If specified, viewer window will try to come to the front when started." msgstr "" "Si se especifica, la ventana del visor intentará situarse en el frente " "cuando se inicie el programa." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:650 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:673 msgid "Print javascript alert and console messages to the console" msgstr "Dirigir alertas de javascript y mensajes de consola a la consola" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:656 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:679 msgid "" "%prog [options] file\n" "\n" @@ -7780,7 +7883,7 @@ msgstr "" "El número máximo de correspondencias devueltas por cada consulta OPDS. Esto " "afecta a la integración con Stanza, WordPlayer, etc." -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:34 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:35 msgid "" "The fields to output when cataloging books in the database. Should be a " "comma-separated list of fields.\n" @@ -7794,7 +7897,7 @@ msgstr "" "Valor por defecto: '%%default'\n" "Aplicable a: formatos de salida CSV, XML" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:43 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:44 msgid "" "Output field to sort on.\n" "Available fields: author_sort, id, rating, size, timestamp, title.\n" @@ -7807,7 +7910,7 @@ msgstr "" "Valor por defecto: '%default'\n" "Aplicable a: formatos de salida CSV, XML" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:238 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:253 msgid "" "Title of generated catalog used as title in metadata.\n" "Default: '%default'\n" @@ -7817,7 +7920,7 @@ msgstr "" "Valor por defecto: '%default'\n" "Aplicable a: formatos de salida ePub, MOBI" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:244 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:259 msgid "" "Save the output from different stages of the conversion pipeline to the " "specified directory. Useful if you are unsure at which stage of the " @@ -7831,7 +7934,7 @@ msgstr "" "Valor por defecto: '%default'None\n" "Aplicable a: formatos de salida ePub, MOBI" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:253 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:268 msgid "" "Regex describing tags to exclude as genres.\n" "Default: '%default' excludes bracketed tags, e.g. '[]'\n" @@ -7843,7 +7946,7 @@ msgstr "" "ejemplo '[]'\n" "Aplicable a: formatos de salida ePub, MOBI" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:258 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:273 msgid "" "Comma-separated list of tag words indicating book should be excluded from " "output. Case-insensitive.\n" @@ -7857,17 +7960,27 @@ msgstr "" "Valor por defecto: '%default'\n" "Aplicable a: formatos de salida ePub, MOBI" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:265 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:280 msgid "" -"Tag indicating book has been read.\n" +"Include 'Titles' section in catalog.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -"Etiqueta que indica que el libro ya ha sido leído.\n" +"Incluir la sección 'Títulos' en el catálogo.\n" "Valor por defecto: '%default'\n" "Aplicable a: formatos de salida ePub, MOBI" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:270 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:286 +msgid "" +"Include 'Recently Added' section in catalog.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" +"Incluir la sección 'Añadidos recientemente' en el catálogo.\n" +"Valor por defecto: '%default'\n" +"Aplicable a: formatos de salida ePub, MOBI" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:292 msgid "" "Tag prefix for user notes, e.g. '*Jeff might enjoy reading this'.\n" "Default: '%default'\n" @@ -7878,7 +7991,21 @@ msgstr "" "Valor por defecto: '%default'\n" "Aplicable a: formatos de salida ePub, MOBI" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:276 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:298 +msgid "" +"Sort titles with leading numbers as text, e.g.,\n" +"'2001: A Space Odyssey' sorts as \n" +"'Two Thousand One: A Space Odyssey'.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" +"Ordenar títulos con números al principio como texto, p. ej.,\n" +"'2001: A Space Odyssey' se ordena como \n" +"'Two Thousand One: A Space Odyssey'.\n" +"Valor por defecto: '%default'\n" +"Aplicable a: formatos de salida ePub, MOBI" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:304 msgid "" "Specifies the output profile. In some cases, an output profile is required " "to optimize the catalog for the device. For example, 'kindle' or " @@ -7893,6 +8020,16 @@ msgstr "" "Valor por defecto: '%default'\n" "Aplicable a: formatos de salida ePub y MOBI" +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:310 +msgid "" +"Tag indicating book has been read.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" +"Etiqueta que indica que el libro ya ha sido leído.\n" +"Valor por defecto: '%default'\n" +"Aplicable a: formatos de salida ePub, MOBI" + #: /home/kovid/work/calibre/src/calibre/library/cli.py:121 msgid "" "Path to the calibre library. Default is to use the path stored in the " @@ -8226,7 +8363,7 @@ msgstr "" "Valor por defecto: sin filtrado" #: /home/kovid/work/calibre/src/calibre/library/cli.py:658 -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:484 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:482 msgid "Show detailed output information. Useful for debugging" msgstr "Mostrar información de salida detallada. Útil para la depuración" @@ -8234,7 +8371,7 @@ msgstr "Mostrar información de salida detallada. Útil para la depuración" msgid "Error: You must specify a catalog output file" msgstr "Error: Debe especificar un fichero de salida para el catálogo" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:689 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:687 msgid "" "%%prog command [options] [arguments]\n" "\n" @@ -8255,29 +8392,29 @@ msgstr "" "\n" "Para ver la ayuda de cada orden ejecute: %%prog orden --help\n" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1696 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1744 msgid "

Migrating old database to ebook library in %s

" msgstr "" "

Migrando la base de datos antigua a la biblioteca de libros electrónicos " "en %s

" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1725 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1773 msgid "Copying %s" msgstr "Copiando %s" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1742 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1790 msgid "Compacting database" msgstr "Compactando la base de datos" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1835 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1883 msgid "Checking SQL integrity..." msgstr "Comprobando la integridad de SQL..." -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1872 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1920 msgid "Checking for missing files." msgstr "Comprobando ficheros inexistentes." -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1894 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1942 msgid "Checked id" msgstr "ID comprobado" @@ -8521,7 +8658,7 @@ msgstr "Detenido" msgid "Finished" msgstr "Terminado" -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:72 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:75 msgid "Working..." msgstr "Trabajando..." @@ -8661,76 +8798,84 @@ msgstr "" msgid "Unknown News Source" msgstr "Fuente de noticias desconocida" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:533 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:550 msgid "The \"%s\" recipe needs a username and password." msgstr "La receta \"%s\" necesita usuario y contraseña." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:619 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:637 msgid "Download finished" msgstr "Descarga finalizada" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:621 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:639 msgid "Failed to download the following articles:" msgstr "Fallo al descargar los siguientes artículos:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:627 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:645 msgid "Failed to download parts of the following articles:" msgstr "Fallo al descargar partes de los siguientes artículos" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:629 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:647 msgid " from " msgstr " de " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:631 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:649 msgid "\tFailed links:" msgstr "\tEnlaces fallidos:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:712 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:730 msgid "Could not fetch article. Run with -vv to see the reason" msgstr "" "No se pudo obtener el artículo. Ejecute calibre con -vv para ver el motivo" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:733 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:751 msgid "Fetching feeds..." msgstr "Obteniendo canales de noticias..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:738 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:756 msgid "Got feeds from index page" msgstr "Se obtivieron canales de noticias de la página principal" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:744 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:762 msgid "Trying to download cover..." msgstr "Intentando descargar la portada..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:802 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:764 +msgid "Generating masthead..." +msgstr "Generando el rótulo:" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:842 msgid "Starting download [%d thread(s)]..." msgstr "Iniciando la descarga [%d proceso(s)]" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:818 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:858 msgid "Feeds downloaded to %s" msgstr "Canales de noticias descargados en %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:868 msgid "Could not download cover: %s" msgstr "No se pudo descargar la portada: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:840 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:880 msgid "Downloading cover from %s" msgstr "Descargando la portada desde %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:983 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:915 +msgid "Masthead image downloaded" +msgstr "Imagen del rótulo descargada" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1150 msgid "Untitled Article" msgstr "Artículo sin título" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1221 msgid "Article downloaded: %s" msgstr "Artículo descargado: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1065 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1232 msgid "Article download failed: %s" msgstr "Falló la descarga del artículo: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1082 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1249 msgid "Fetching feed" msgstr "Obteniendo canal de noticias" @@ -8749,7 +8894,7 @@ msgstr "Planificado" msgid "Custom" msgstr "Personalizado" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:461 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:459 msgid "" "%prog URL\n" "\n" @@ -8759,12 +8904,12 @@ msgstr "" "\n" "Donde URL es por ejemplo http://google.com" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:464 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:462 msgid "Base directory into which URL is saved. Default is %default" msgstr "" "Directorio base en el cual se almacena la URL. Por defecto es %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:467 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:465 msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " "s" @@ -8772,7 +8917,7 @@ msgstr "" "Tiempo máximo de espera de respuesta del servidor (en segundos). Valor por " "defecto: %default s" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:470 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:468 msgid "" "Maximum number of levels to recurse i.e. depth of links to follow. Default " "%default" @@ -8780,7 +8925,7 @@ msgstr "" "Máximo número de niveles de recursión, es decir, profundidad de los enlaces " "a seguir. Valor por defecto: %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:473 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:471 msgid "" "The maximum number of files to download. This only applies to files from tags. Default is %default" @@ -8788,7 +8933,7 @@ msgstr "" "El número máximo de ficheros a descargar. Esto se aplica solamente a " "ficheros procedentes de etiquetas . Por defecto es %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:475 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:473 msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" @@ -8796,7 +8941,7 @@ msgstr "" "Intervalo minimo en segundos entre adquisiciones de datos consecutivas. " "Valor defecto: %default s" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:477 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:475 msgid "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." @@ -8804,7 +8949,7 @@ msgstr "" "Codificación para los sitios web que está intentando descargar. Por defecto " "se intentará averiguar la codificación." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:479 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:477 msgid "" "Only links that match this regular expression will be followed. This option " "can be specified multiple times, in which case as long as a link matches any " @@ -8815,7 +8960,7 @@ msgstr "" "de las expresiones regulares, se seguirá el enlace. Por defecto todos los " "enlaces se siguen." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:481 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:479 msgid "" "Any link that matches this regular expression will be ignored. This option " "can be specified multiple times, in which case as long as any regexp matches " @@ -8829,7 +8974,7 @@ msgstr "" "enlace se descarta. Si ambas opciones --filter-regexp y --match-regexp se " "especifican, entonces --filter-regexp se aplica primero." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:483 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:481 msgid "Do not download CSS stylesheets." msgstr "No descargar estilos CSS." @@ -10615,6 +10760,13 @@ msgstr "No descargar estilos CSS." #~ msgid "Usage: ebook-convert INFILE OUTFILE [OPTIONS..]" #~ msgstr "Uso: ebook-convert FICHERO_ENTRADA FICHERO_SALIDA [OPCIONES...]" +#~ msgid "" +#~ "This RTF file has a feature calibre does not support. Convert it to HTML " +#~ "first and then try it." +#~ msgstr "" +#~ "Este fichero RTF tiene una característica no soportada por calibre. " +#~ "Conviértalo a HTML primero y pruebe con éste." + #~ msgid "Input character &encoding" #~ msgstr "Codificación de &entrada" @@ -10708,9 +10860,6 @@ msgstr "No descargar estilos CSS." #~ msgid "You must set a username and password for %s" #~ msgstr "Debe establecer un usuario y contraseña para %s" -#~ msgid "Default" -#~ msgstr "Predeterminado" - #~ msgid "" #~ "

Demo videos

Videos demonstrating the various features of calibre are " #~ "available
Date: Wed, 17 Feb 2010 09:00:21 -0700 Subject: [PATCH 126/164] Wired UK by Darko Miletic --- resources/images/news/wired_uk.png | Bin 0 -> 647 bytes resources/recipes/wired_uk.recipe | 74 +++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 resources/images/news/wired_uk.png create mode 100644 resources/recipes/wired_uk.recipe diff --git a/resources/images/news/wired_uk.png b/resources/images/news/wired_uk.png new file mode 100644 index 0000000000000000000000000000000000000000..c807e36d1f47825ea779e09f82da8baece2f56ba GIT binary patch literal 647 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zK-vS0-A-oPfdtD69Mgd`SU*F|v9*U87#KHrx;TbdoIX0));}arpl$xl--3cMk6G`i z9?@XkwR>S?q)={7PS4uT*0oy=&Hiv(|8MxmENpGrkNU)^@)(3=(mV?`fUC+(oBPE|jh=S~l!mT+9?nX<5TYi%^sAFss62gF1^_ZB8~ z2nT!2nlF^Ka6@5&g_m~ti4=)xX;Z?M_^?H;oi5RH+BR@oecx++i9au$^P=WNRCONh zmDsX)KjSfpC(|P=*5}AZee2uwb@qLovmTL|70GOUhA;Sajvw0?^L@p9(ML<}2)&oE zX|xWn=?iwR|G>|=bMwI!lV(r%X5Kze&_$;owj-z7xRx=M_@#%mbgZgq$HN4S|t~y0x1R~149E{10!8S^AH0I zD%(2h_me>FVdQ&MBb@ E0I~N1wg3PC literal 0 HcmV?d00001 diff --git a/resources/recipes/wired_uk.recipe b/resources/recipes/wired_uk.recipe new file mode 100644 index 0000000000..d0429f9573 --- /dev/null +++ b/resources/recipes/wired_uk.recipe @@ -0,0 +1,74 @@ + +__license__ = 'GPL v3' +__copyright__ = '2010, Darko Miletic ' +''' +www.wired.co.uk +''' + +from calibre import strftime +from calibre.web.feeds.news import BasicNewsRecipe + +class Wired_UK(BasicNewsRecipe): + title = 'Wired Magazine - UK edition' + __author__ = 'Darko Miletic' + description = 'Gaming news' + publisher = 'Conde Nast Digital' + category = 'news, games, IT, gadgets' + oldest_article = 32 + max_articles_per_feed = 100 + no_stylesheets = True + encoding = 'utf-8' + use_embedded_content = False + masthead_url = 'http://www.wired.co.uk/_/media/wired-logo_UK.gif' + language = 'en_GB' + extra_css = ' body{font-family: Palatino,"Palatino Linotype","Times New Roman",Times,serif} img{margin-bottom: 0.8em } .img-descr{font-family: Tahoma,Arial,Helvetica,sans-serif; font-size: 0.6875em; display: block} ' + index = 'http://www.wired.co.uk/wired-magazine.aspx' + + conversion_options = { + 'comment' : description + , 'tags' : category + , 'publisher' : publisher + , 'language' : language + } + + keep_only_tags = [dict(name='div', attrs={'class':'article-box'})] + remove_tags = [ + dict(name=['object','embed','iframe','link']) + ,dict(attrs={'class':['opts','comment','stories']}) + ] + remove_tags_after = dict(name='div',attrs={'class':'stories'}) + remove_attributes = ['height','width'] + + + def parse_index(self): + totalfeeds = [] + soup = self.index_to_soup(self.index) + maincontent = soup.find('div',attrs={'class':'main-content'}) + mfeed = [] + if maincontent: + st = maincontent.find(attrs={'class':'most-wired-box'}) + if st: + for itt in st.findAll('a',href=True): + url = 'http://www.wired.co.uk' + itt['href'] + title = self.tag_to_string(itt) + description = '' + date = strftime(self.timefmt) + mfeed.append({ + 'title' :title + ,'date' :date + ,'url' :url + ,'description':description + }) + totalfeeds.append(('Articles',mfeed)) + return totalfeeds + + def get_cover_url(self): + cover_url = None + soup = self.index_to_soup(self.index) + cover_item = soup.find('span',attrs={'class':'cover'}) + if cover_item: + cover_url = cover_item.img['src'] + return cover_url + + def print_version(self, url): + return url + '?page=all' From 9a7f6259569ce0ff160c8eb3240b4b3bd7bdaf32 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 17 Feb 2010 10:47:04 -0700 Subject: [PATCH 127/164] ... --- resources/recipes/wired_uk.recipe | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/recipes/wired_uk.recipe b/resources/recipes/wired_uk.recipe index d0429f9573..4c682feef2 100644 --- a/resources/recipes/wired_uk.recipe +++ b/resources/recipes/wired_uk.recipe @@ -59,13 +59,13 @@ class Wired_UK(BasicNewsRecipe): ,'url' :url ,'description':description }) - totalfeeds.append(('Articles',mfeed)) + totalfeeds.append(('Articles', mfeed)) return totalfeeds def get_cover_url(self): cover_url = None soup = self.index_to_soup(self.index) - cover_item = soup.find('span',attrs={'class':'cover'}) + cover_item = soup.find('span', attrs={'class':'cover'}) if cover_item: cover_url = cover_item.img['src'] return cover_url From e84310af6397f2afb25aa0011289482be0c60793 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 17 Feb 2010 11:30:59 -0700 Subject: [PATCH 128/164] MOBI Output: Encode titles as UTF-8 in the PalmDoc header as well as the EXTH header, since there are apparently MOBI readers that use the title from the PalmDoc header in preference to the title from the EXTH header. --- src/calibre/ebooks/mobi/writer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/ebooks/mobi/writer.py b/src/calibre/ebooks/mobi/writer.py index 8de702a617..0f26e25609 100644 --- a/src/calibre/ebooks/mobi/writer.py +++ b/src/calibre/ebooks/mobi/writer.py @@ -1376,7 +1376,7 @@ class MobiWriter(object): self._text_length, self._text_nrecords-1, RECORD_SIZE, 0, 0)) # 0 - 15 (0x0 - 0xf) uid = random.randint(0, 0xffffffff) - title = str(metadata.title[0]) + title = unicode(metadata.title[0]).encode('utf-8') # The MOBI Header # 0x0 - 0x3 From d45da570474791f33aa09fdbc3aab5bc3911d596 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 17 Feb 2010 11:46:21 -0700 Subject: [PATCH 129/164] MOBI metadata: Handle setting of non-ascii titles correctly --- src/calibre/ebooks/metadata/mobi.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/calibre/ebooks/metadata/mobi.py b/src/calibre/ebooks/metadata/mobi.py index 1de73d7dd4..3791a14b22 100644 --- a/src/calibre/ebooks/metadata/mobi.py +++ b/src/calibre/ebooks/metadata/mobi.py @@ -187,6 +187,8 @@ class MetadataUpdater(object): def create_exth(self, new_title=None, exth=None): # Add an EXTH block to record 0, rewrite the stream # self.hexdump(self.record0) + if isinstance(new_title, unicode): + new_title = new_title.encode(self.codec, 'replace') # Fetch the existing title title_offset, = unpack('>L', self.record0[0x54:0x58]) @@ -219,12 +221,7 @@ class MetadataUpdater(object): new_record0 = StringIO() new_record0.write(self.record0[:0x10 + mobi_header_length]) new_record0.write(exth) - if new_title: - #new_record0.write(new_title.encode(self.codec, 'replace')) - new_title = (new_title or _('Unknown')).encode(self.codec, 'replace') - new_record0.write(new_title) - else: - new_record0.write(title_in_file) + new_record0.write(new_title if new_title else title_in_file) # Pad to a 4-byte boundary trail = len(new_record0.getvalue()) % 4 From e833b64ab8fe26356a6b88694b9c2639a7a5dad5 Mon Sep 17 00:00:00 2001 From: Translators <> Date: Thu, 18 Feb 2010 04:46:11 +0000 Subject: [PATCH 130/164] Launchpad automatic translations update. --- src/calibre/translations/en_CA.po | 2 +- src/calibre/translations/pt.po | 4207 +++++++++++++++++------------ 2 files changed, 2549 insertions(+), 1660 deletions(-) diff --git a/src/calibre/translations/en_CA.po b/src/calibre/translations/en_CA.po index 5fadc81614..97d8ea2870 100644 --- a/src/calibre/translations/en_CA.po +++ b/src/calibre/translations/en_CA.po @@ -14,7 +14,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-02-17 04:54+0000\n" +"X-Launchpad-Export-Date: 2010-02-18 04:46+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 diff --git a/src/calibre/translations/pt.po b/src/calibre/translations/pt.po index 0d73f31aae..8300ec9e2c 100644 --- a/src/calibre/translations/pt.po +++ b/src/calibre/translations/pt.po @@ -7,77 +7,78 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2009-11-14 02:36+0000\n" -"PO-Revision-Date: 2009-11-13 23:52+0000\n" -"Last-Translator: Kovid Goyal \n" +"POT-Creation-Date: 2010-02-12 23:37+0000\n" +"PO-Revision-Date: 2010-02-17 16:19+0000\n" +"Last-Translator: Pedro Barreira \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2009-11-15 04:35+0000\n" +"X-Launchpad-Export-Date: 2010-02-18 04:46+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 msgid "Does absolutely nothing" msgstr "Não faz absolutamente nada" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:44 -#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:94 -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:53 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:46 +#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:72 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:54 +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:70 +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:71 +#: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267 #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58 #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:730 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:733 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:177 -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:410 -#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:65 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:205 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:418 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67 +#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:69 #: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:319 #: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:322 -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1895 -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1897 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1894 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1896 #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:24 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:225 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:256 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:259 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:359 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:23 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:45 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:229 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:260 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:263 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:363 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:35 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:60 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:46 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:36 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:62 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:104 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:106 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:171 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:107 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:109 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:224 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:329 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:444 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:894 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:39 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:21 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:18 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:40 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:28 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:49 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/topaz.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/txt.py:14 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:44 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:70 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:79 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:121 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:154 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:591 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:778 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:155 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:609 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:799 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:51 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:886 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:891 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:951 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:909 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:914 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:980 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:137 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:139 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:105 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:185 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:186 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:173 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:174 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:39 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/palmdoc/writer.py:28 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/palmdoc/writer.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ztxt/writer.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:82 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:83 @@ -96,68 +97,72 @@ msgstr "Não faz absolutamente nada" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:28 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:29 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:217 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:219 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:268 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:275 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:120 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:127 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:233 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:276 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:138 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:21 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:99 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:124 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:126 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:543 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:552 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:771 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:774 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:839 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:842 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:109 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:143 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:434 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:455 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:391 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:404 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:876 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1002 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:406 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:428 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:952 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1078 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:185 #: /home/kovid/work/calibre/src/calibre/library/cli.py:281 #: /home/kovid/work/calibre/src/calibre/library/database.py:913 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:702 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:714 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1114 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1151 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1485 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1487 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1598 -#: /home/kovid/work/calibre/src/calibre/library/server.py:649 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:744 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:756 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1185 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1222 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1600 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1602 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1718 +#: /home/kovid/work/calibre/src/calibre/library/server.py:645 #: /home/kovid/work/calibre/src/calibre/library/server.py:721 #: /home/kovid/work/calibre/src/calibre/library/server.py:768 -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:103 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:111 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:77 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:43 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:46 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:49 msgid "Unknown" msgstr "Desconhecido" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:62 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:64 msgid "Base" msgstr "Padrão" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:148 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:150 msgid "File type" msgstr "Tipo de ficheiro" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:182 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:184 msgid "Metadata reader" msgstr "Leitor de metadados" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:213 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:215 msgid "Metadata writer" msgstr "Editor de metadados" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:13 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:241 +msgid "Catalog generator" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:15 msgid "" "Follow all local links in an HTML file and create a ZIP file containing all " "linked files. This plugin is run every time you add an HTML file to the " @@ -167,7 +172,7 @@ msgstr "" "contendo todos os ficheiros ligados. Este extra executa cada vez que se " "adiciona um ficheiro HTML à bilbioteca." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:48 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:50 msgid "" "Character encoding for the input HTML files. Common choices include: cp1252, " "latin1, iso-8859-1 and utf-8." @@ -175,55 +180,62 @@ msgstr "" "Codificação de caracteres para os ficheiros HTML de origem. Escolhas comuns " "incluem: cp1252, latin1, iso-8859-1 e utf-8." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:56 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:57 +msgid "" +"Create a PMLZ archive containing the PML file and all images in the " +"directory pmlname_img or images. This plugin is run every time you add a PML " +"file to the library." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:88 msgid "Extract cover from comic files" msgstr "Extrai a capa dos ficheiros de banda desenhada" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:77 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:89 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:99 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:109 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:120 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:130 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:140 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:150 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:160 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:170 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:181 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:121 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:131 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:141 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:152 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:162 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:172 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:182 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:192 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:204 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:225 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:202 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:213 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:224 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:236 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:246 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:256 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:257 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:268 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:278 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:288 msgid "Read metadata from %s files" msgstr "Lê os metadados dos ficheiros %s" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:215 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:247 msgid "Read metadata from ebooks in RAR archives" msgstr "Lê os metadados dos arquivos RAR" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:267 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:299 msgid "Read metadata from ebooks in ZIP archives" msgstr "Lê os metadados dos arquivos ZIP" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:278 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:288 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:298 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:310 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:320 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:331 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:330 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:352 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:363 msgid "Set metadata in %s files" msgstr "Define os metadados nos ficheiros %s" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:309 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:341 msgid "Set metadata from %s files" msgstr "Define os metadados dos ficheiros %s" -#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:99 +#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:102 msgid "Conversion Input" msgstr "Origem da conversão" -#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:122 +#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:125 msgid "" "Specify the character encoding of the input document. If set this option " "will override any encoding declared by the document itself. Particularly " @@ -235,11 +247,11 @@ msgstr "" "documento. Particularmente útil em documentos que não declaram uma " "codificação ou que têm declarações de codificação erradas." -#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:225 +#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:228 msgid "Conversion Output" msgstr "Ficheiro de destino da conversão" -#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:239 +#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:242 msgid "" "If specified, the output plugin will try to create output that is as human " "readable as possible. May not have any effect for some output plugins." @@ -261,54 +273,75 @@ msgstr "" "sobre o documento de origem." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:56 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:194 -msgid "This profile is intended for the SONY PRS line. The 500/505/700 etc." -msgstr "Este perfil é destinado à linha PRS da Sony. A 500/505/700, etc." +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:235 +msgid "" +"This profile is intended for the SONY PRS line. The 500/505/600/700 etc." +msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:69 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:229 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:68 +msgid "This profile is intended for the SONY PRS 300." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:77 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:257 +msgid "This profile is intended for the SONY PRS-900." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:85 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:287 msgid "This profile is intended for the Microsoft Reader." msgstr "Este perfil é destinado ao Microsoft Reader." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:80 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:240 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:96 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:298 msgid "This profile is intended for the Mobipocket books." msgstr "Este perfil é destinado aos livros Mobipocket." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:93 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:109 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:311 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "Este perfil é destinado ao Hanlin V3 e aos seus clones." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:105 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:265 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:121 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:323 +msgid "This profile is intended for the Hanlin V5 and its clones." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:131 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:331 msgid "This profile is intended for the Cybook G3." msgstr "Este perfil é destinado ao Cybook G3." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:118 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:278 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:144 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:344 msgid "This profile is intended for the Cybook Opus." msgstr "Este perfil é destinado ao Cybook Opus." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:130 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:289 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:156 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:355 msgid "This profile is intended for the Amazon Kindle." msgstr "Este perfil é destinado ao Amazon Kindle." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:142 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:322 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:168 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:388 msgid "This profile is intended for the Irex Illiad." msgstr "Este perfil é destinado ao Irex Illiad." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:154 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:335 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:180 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:401 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "Este perfil é destinado ao IRex Digital Reader 1000." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:172 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:194 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:415 +msgid "This profile is intended for the B&N Nook." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:213 msgid "Output profile" msgstr "Perfil de destino" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:176 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:217 msgid "" "This profile tries to provide sane defaults and is useful if you want to " "produce a document intended to be read at a computer or on a range of " @@ -317,11 +350,15 @@ msgstr "" "Este perfil tenta fornecer predefinições correctas e é útil se quiser criar " "um documento que possa ser lido no computador ou em vários aparelhos." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:206 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:248 +msgid "This profile is intended for the SONY PRS-300." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:266 msgid "This profile is intended for the 5-inch JetBook." msgstr "Este perfil é destinado ao JetBook de 5 polegadas." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:217 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:275 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." @@ -329,11 +366,7 @@ msgstr "" "Este perfil é destinado à linha SONY PRS. A 500/505/700, etc, em modo " "paisagem. Principalmente útil para banda desenhada." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:253 -msgid "This profile is intended for the Hanlin V3/V5 and its clones." -msgstr "Este perfil é destinado ao Hanlin V3/V5 e aos seus clones." - -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:306 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:372 msgid "This profile is intended for the Amazon Kindle DX." msgstr "Este perfil é destinado ao Amazon Kindle DX." @@ -353,15 +386,15 @@ msgstr "Personalização do extra local" msgid "Disabled plugins" msgstr "Extras desactivados" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:76 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:77 msgid "No valid plugin found in " msgstr "Nenhum extra válido encontrado em " -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:262 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:263 msgid "Initialization of plugin %s failed with traceback:" msgstr "A inicialização do extra %s falhou, deixando o seguinte relatório:" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:396 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:418 msgid "" " %prog options\n" "\n" @@ -373,18 +406,18 @@ msgstr "" " Personalize o calibre carregando extras externos.\n" " " -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:402 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:424 msgid "Add a plugin by specifying the path to the zip file containing it." msgstr "" "Adicione um extra especificando um caminho para o ficheiro zip que o contém." -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:404 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:426 msgid "Remove a custom plugin by name. Has no effect on builtin plugins" msgstr "" "Remova um extra identificado pelo seu nome. Não tem qualquer efeito sobre os " "extras integrados." -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:406 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:428 msgid "" "Customize plugin. Specify name of plugin and customization string separated " "by a comma." @@ -392,15 +425,15 @@ msgstr "" "Personalize o extra. Especifique o nome do extra e uma expressão " "identificadora, separados por uma vírgula." -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:408 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:430 msgid "List all installed plugins" msgstr "Listar todos os extras instalados" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:410 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:432 msgid "Enable the named plugin" msgstr "Activar o extra mencionado" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:412 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:434 msgid "Disable the named plugin" msgstr "Desactivar o extra mencionado" @@ -408,58 +441,31 @@ msgstr "Desactivar o extra mencionado" msgid "Communicate with Android phones." msgstr "Comunica com telefones Android." -#: /home/kovid/work/calibre/src/calibre/devices/bebook/driver.py:19 -msgid "Communicate with the BeBook eBook reader." -msgstr "Comunica com o leitor BeBook." +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:26 +msgid "" +"Comma separated list of directories to send e-books to on the device. The " +"first one that exists will be used" +msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/bebook/driver.py:95 -msgid "Communicate with the BeBook Mini eBook reader." -msgstr "Comunica com o leitor Mini BeBook." +#: /home/kovid/work/calibre/src/calibre/devices/binatone/driver.py:17 +msgid "Communicate with the Binatone Readme eBook reader." +msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:12 +#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:13 msgid "Communicate with the Blackberry smart phone." msgstr "Comunica com o smart phone Blackberry." -#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:13 -#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:24 -#: /home/kovid/work/calibre/src/calibre/devices/eslick/driver.py:17 -#: /home/kovid/work/calibre/src/calibre/devices/iriver/driver.py:16 +#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:14 #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:18 -#: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:88 +#: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:90 msgid "Kovid Goyal" msgstr "Kovid Goyal" -#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:21 -msgid "Communicate with the Cybook Gen 3 eBook reader." -msgstr "Comunica com o leitor Cybook Gen 3." +#: /home/kovid/work/calibre/src/calibre/devices/cybook/driver.py:22 +msgid "Communicate with the Cybook Gen 3 / Opus eBook reader." +msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:22 -#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:86 -#: /home/kovid/work/calibre/src/calibre/devices/iliad/driver.py:17 -#: /home/kovid/work/calibre/src/calibre/devices/irexdr/driver.py:18 -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:22 -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:67 -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:78 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:30 -msgid "John Schember" -msgstr "John Schember" - -#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:74 -#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:76 -#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:76 -#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:78 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:130 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:132 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:99 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:101 -msgid "Transferring books to device..." -msgstr "A transferir o(s) livro(s) para o aparelho..." - -#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:85 -msgid "Communicate with the Cybook Opus eBook reader." -msgstr "Comunica com o leitor Cybook Opus." - -#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:23 +#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:24 msgid "Communicate with the EB600 eBook reader." msgstr "Comunica com o leitor EB600." @@ -467,11 +473,33 @@ msgstr "Comunica com o leitor EB600." msgid "Communicate with the ESlick eBook reader." msgstr "Comunica-se com o leitor ESlick." +#: /home/kovid/work/calibre/src/calibre/devices/hanlin/driver.py:19 +msgid "Communicate with Hanlin V3 eBook readers." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/hanlin/driver.py:95 +msgid "Communicate with Hanlin V5 eBook readers." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/hanlin/driver.py:113 +msgid "Communicate with the BOOX eBook reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:17 +msgid "Communicate with the Hanvon N520 eBook reader." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/iliad/driver.py:16 msgid "Communicate with the IRex Iliad eBook reader." msgstr "Comunica com o leitor IRex Iliad." -#: /home/kovid/work/calibre/src/calibre/devices/interface.py:20 +#: /home/kovid/work/calibre/src/calibre/devices/iliad/driver.py:17 +#: /home/kovid/work/calibre/src/calibre/devices/irexdr/driver.py:18 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:30 +msgid "John Schember" +msgstr "John Schember" + +#: /home/kovid/work/calibre/src/calibre/devices/interface.py:22 msgid "Device Interface" msgstr "Interface do aparelho" @@ -479,88 +507,118 @@ msgstr "Interface do aparelho" msgid "Communicate with the IRex Digital Reader 1000 eBook reader." msgstr "Comunica com o leitor IRex Digital Reader 1000." +#: /home/kovid/work/calibre/src/calibre/devices/irexdr/driver.py:42 +msgid "Communicate with the IRex Digital Reader 800" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/iriver/driver.py:15 msgid "Communicate with the Iriver Story reader." msgstr "Comunica com o leitor Iriver Story." -#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:22 +#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:20 msgid "Communicate with the JetBook eBook reader." msgstr "Comunica com o leitor JetBook." -#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:23 -msgid "James Ralston" -msgstr "James Ralston" - -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:21 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:22 msgid "Communicate with the Kindle eBook reader." msgstr "Comunica com o leitor Kindle." -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:66 -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:77 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:67 msgid "Communicate with the Kindle 2 eBook reader." msgstr "Comunica com o leitor Kindle 2." +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:77 +msgid "Communicate with the Kindle DX eBook reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:17 +msgid "Communicate with the Nokia 770 internet tablet." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:40 +msgid "Communicate with the Nokia 810 internet tablet." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:20 +msgid "The Nook" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:21 +msgid "Communicate with the Nook eBook reader." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." msgstr "Comunica com o leitor Nuut2." -#: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:87 +#: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:89 msgid "Communicate with the Sony PRS-500 eBook reader." msgstr "Comunica com o leitor Sony PRS-500." #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:150 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:93 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:96 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:99 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:110 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:49 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:52 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:55 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:68 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:74 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:78 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:102 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:105 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:108 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:119 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:45 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:48 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:51 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:71 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:81 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:90 msgid "Getting list of books on device..." msgstr "A ir buscar a lista dos livros no aparelho..." #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:26 -msgid "Communicate with the Sony PRS-300/505 eBook reader." -msgstr "Comunica com o leitor Sony PRS-300/505." +msgid "Communicate with the Sony PRS-300/505/500 eBook reader." +msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:27 -#: /home/kovid/work/calibre/src/calibre/devices/prs700/driver.py:18 -msgid "Kovid Goyal and John Schember" -msgstr "Kovid Goyal e John Schember" +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:58 +msgid "" +"Comma separated list of metadata fields to turn into collections on the " +"device. Possibilities include: " +msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:163 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:170 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:119 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:134 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:139 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:141 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:116 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:118 +msgid "Transferring books to device..." +msgstr "A transferir o(s) livro(s) para o aparelho..." + +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:174 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:181 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:145 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:162 msgid "Removing books from device..." msgstr "A remover os livros do aparelho..." -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:198 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:149 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:209 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:177 msgid "Sending metadata to device..." msgstr "A enviar os metadados para o aparelho..." -#: /home/kovid/work/calibre/src/calibre/devices/prs700/driver.py:17 -msgid "Communicate with the Sony PRS-600/700 eBook reader." -msgstr "Comunica com o leitor Sony PRS-600/700." +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:215 +msgid "Communicate with the Sony PRS-600/700/900 eBook reader." +msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:285 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:357 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:250 msgid "Unable to detect the %s disk drive. Try rebooting." msgstr "Incapaz de detectar o disco %s. Tente reiniciar" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:425 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:429 +msgid "Unable to detect the %s mount point. Try rebooting." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:484 msgid "Unable to detect the %s disk drive." msgstr "Incapaz de detectar o disco %s." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:518 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:577 msgid "Could not find mount helper: %s." msgstr "É impossível encontrar o ajudante de montagem: %s." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:530 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:589 msgid "" "Unable to detect the %s disk drive. Your kernel is probably exporting a " "deprecated version of SYSFS." @@ -568,85 +626,95 @@ msgstr "" "É impossível detectar o disco %s. O seu kernel está provavelmente a exportar " "uma versão obsoleta do SYSFS." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:538 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:597 msgid "Unable to mount main memory (Error code: %d)" msgstr "Incapaz de montar a memória principal (Código de erro: %d)" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:670 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:672 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:734 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:736 msgid "The reader has no storage card in this slot." msgstr "O leitor não tem nenhum cartão de memória nesta ranhura." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:674 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:738 msgid "Selected slot: %s is not supported." msgstr "Ranhura seleccionada: %s não é suportado." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:698 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:771 msgid "There is insufficient free space in main memory" msgstr "O espaço livre na memória principal é insuficiente" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:700 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:702 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:773 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:775 msgid "There is insufficient free space on the storage card" msgstr "O espaço livre no cartão de memória é insuficiente" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:713 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:799 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:824 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:232 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:122 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1058 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1062 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1385 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1109 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1113 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1500 msgid "News" msgstr "Notícias" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:11 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:12 msgid "Configure Device" msgstr "Configurar o Aparelho" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:16 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:28 msgid "settings for device drivers" msgstr "definições para os drivers dos aparelhos" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:17 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:30 msgid "Ordered list of formats the device will accept" msgstr "Lista ordenada dos formatos que o aparelho aceita" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:18 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:32 msgid "Place files in sub directories if the device supports them" msgstr "Colocar os ficheiros em sub-pastas se o aparelho os suportar" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:19 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:64 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:34 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:78 msgid "Read metadata from files on device" msgstr "Ler os metadados dos ficheiros no aparelho" +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:36 +msgid "Template to control how books are saved" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:80 +msgid "Extra customization" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:29 msgid "Communicate with an eBook reader." msgstr "Comunica com um leitor de livros." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:41 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:37 msgid "Get device information..." msgstr "A ir buscar informação sobre o aparelho..." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:107 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:115 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:133 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:141 msgid "Adding books to device metadata listing..." msgstr "A adicionar os livros à listagem de metadados do aparelho..." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:138 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:143 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:166 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:171 msgid "Removing books from device metadata listing..." msgstr "A apagar os livros da listagem de metadados do aparelho..." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:196 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:200 msgid "Rendered %s" msgstr "%s representado" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:199 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:203 msgid "Failed %s" msgstr "Falha em %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:256 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:260 msgid "" "Failed to process comic: \n" "\n" @@ -656,7 +724,7 @@ msgstr "" "\n" "%s" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:274 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:278 msgid "" "Number of colors for grayscale image conversion. Default: %default. Values " "of less than 256 may result in blurred text on your device if you are " @@ -667,23 +735,23 @@ msgstr "" "esbatido no seu aparelho, se estiver a criar a banda desenhada no formato " "EPUB." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:278 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:282 msgid "" "Disable normalize (improve contrast) color range for pictures. Default: False" msgstr "" "Desactivar a normalização (melhoria do contraste) do campo de cores das " "imagens. A predefinição é: False" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:285 msgid "Maintain picture aspect ratio. Default is to fill the screen." msgstr "" "Manter a relação de aspecto da imagem. A predefinição é preencher o écran." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:287 msgid "Disable sharpening." msgstr "Desactivar a nitidez." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:285 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:289 msgid "" "Disable trimming of comic pages. For some comics, trimming might remove " "content as well as borders." @@ -691,12 +759,12 @@ msgstr "" "Desactivar o aparar das páginas de banda desenhada. Em certas bandas " "desenhadas aparar pode remover conteúdos além das margens." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:292 msgid "Don't split landscape images into two portrait images" msgstr "" "Não dividir as imagens em modo de paisagem em duas imagens em modo de retrato" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:290 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:294 msgid "" "Keep aspect ratio and scale image using screen height as image width for " "viewing in landscape mode." @@ -704,7 +772,7 @@ msgstr "" "Manter a relação de aspecto e escala da imagem usando a altura do écran como " "largura da imagem para visualização em modo paisagem." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:293 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:297 msgid "" "Used for right-to-left publications like manga. Causes landscape pages to be " "split into portrait pages from right to left." @@ -713,7 +781,7 @@ msgstr "" "páginas em modo de paisagem a serem divididas em páginas em modo de retrato " "da direita para a esquerda." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:297 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:301 msgid "" "Enable Despeckle. Reduces speckle noise. May greatly increase processing " "time." @@ -721,7 +789,7 @@ msgstr "" "Activar Limpar Irregularidades. Reduz as irregularidades. Pode aumentar " "muito o tempo de processamento." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:300 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:304 msgid "" "Don't sort the files found in the comic alphabetically by name. Instead use " "the order they were added to the comic." @@ -730,7 +798,7 @@ msgstr "" "nome. Em vez disso, usar a ordem pela qual foram adicionados à banda " "desenhada." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:304 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:308 msgid "" "The format that images in the created ebook are converted to. You can " "experiment to see which format gives you optimal size and look on your " @@ -740,12 +808,12 @@ msgstr "" "experimentar para ver qual o formato que fica com melhor tamanho e aparência " "no seu aparelho." -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:308 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:312 msgid "Apply no processing to the image" msgstr "Não aplicar processamento à imagem" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:434 -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:445 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:442 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:453 msgid "Page" msgstr "Página" @@ -843,16 +911,16 @@ msgstr "Opções para ajudar com a depuração da conversão" msgid "List builtin recipes" msgstr "Listar as receitas integradas" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:251 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:252 msgid "Output saved to" msgstr "Ficheiro de destino guardado em" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:91 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:92 msgid "Level of verbosity. Specify multiple times for greater verbosity." msgstr "" "Nível de indicações. Especificar múltiplas vezes para mais indicações." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:98 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:99 msgid "" "Save the output from different stages of the conversion pipeline to the " "specified directory. Useful if you are unsure at which stage of the " @@ -862,7 +930,7 @@ msgstr "" "especificada. Útil se não tem a certeza em que etapa do processo de " "conversão é que está a ocorrer o erro." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:107 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:108 msgid "" "Specify the input profile. The input profile gives the conversion system " "information on how to interpret various information in the input document. " @@ -874,7 +942,7 @@ msgstr "" "oriem. Por exemplo comprimento dependente da resolução (i. e. comprimento em " "pixels). Escolhas disponíveis:" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:118 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:119 msgid "" "Specify the output profile. The output profile tells the conversion system " "how to optimize the created document for the specified device. In some " @@ -887,7 +955,7 @@ msgstr "" "funcionem num aparelho. Por exemplo EPUB no leitor SONY. Escolhas " "disponíveis:" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:129 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:130 msgid "" "The base font size in pts. All font sizes in the produced book will be " "rescaled based on this size. By choosing a larger size you can make the " @@ -900,7 +968,7 @@ msgstr "" "destino serão maiores e vice versa. Por predefinição o tamanho do tipo de " "letra padrão é escolhido baseado no perfil de destino que escolheu." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:139 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:140 msgid "" "Mapping from CSS font names to font sizes in pts. An example setting is " "12,12,14,16,18,20,22,24. These are the mappings for the sizes xx-small to xx-" @@ -916,11 +984,11 @@ msgstr "" "tipos de letra. A predefinição é usar a estrutura baseada no perfil de " "destino que escolheu." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:151 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:152 msgid "Disable all rescaling of font sizes." msgstr "Desactivar a alteração proporcional do tamanho dos tipos de letra." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:158 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:159 msgid "" "The line height in pts. Controls spacing between consecutive lines of text. " "By default no line height manipulation is performed." @@ -929,7 +997,7 @@ msgstr "" "de texto. Por predefinição não é efectuada qualquer manipulação na altura da " "linha." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:166 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:167 msgid "" "Some badly designed documents use tables to control the layout of text on " "the page. When converted these documents often have text that runs off the " @@ -941,7 +1009,7 @@ msgstr "" "que sai para fora da página e outros problemas. Esta opção extrai o conteúdo " "das tabelas e apresenta-o de uma forma linear." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:176 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:177 msgid "" "XPath expression that specifies all tags that should be added to the Table " "of Contents at level one. If this is specified, it takes precedence over " @@ -951,7 +1019,7 @@ msgstr "" "ao Índice com o nível 1. Se isto for especificado assume prevalência sobre " "outras formas de detecção automática." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:185 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:186 msgid "" "XPath expression that specifies all tags that should be added to the Table " "of Contents at level two. Each entry is added under the previous level one " @@ -961,7 +1029,7 @@ msgstr "" "ao Índice com o nível 2. Cada entrada é acrescentada abaixo da entrada " "anterior com o nível 1." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:193 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:194 msgid "" "XPath expression that specifies all tags that should be added to the Table " "of Contents at level three. Each entry is added under the previous level two " @@ -971,7 +1039,7 @@ msgstr "" "ao Índice com o nível 3. Cada entrada é acrescentada abaixo da entrada " "anterior com o nível 2." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:201 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:202 msgid "" "Normally, if the source file already has a Table of Contents, it is used in " "preference to the auto-generated one. With this option, the auto-generated " @@ -981,11 +1049,11 @@ msgstr "" "vez do gerado automaticamente. Com esta opção o gerado automaticamente é " "sempre utilizado." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:209 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:210 msgid "Don't add auto-detected chapters to the Table of Contents." msgstr "Não adicionar ao Índice os capítulos detectados automaticamente." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:216 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:217 msgid "" "If fewer than this number of chapters is detected, then links are added to " "the Table of Contents. Default: %default" @@ -993,7 +1061,7 @@ msgstr "" "Se forem detectados menos capítulos do que este número, os atalhos serão " "adicionados ao Índice. A predefinição é: %default" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:223 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:224 msgid "" "Maximum number of links to insert into the TOC. Set to 0 to disable. Default " "is: %default. Links are only added to the TOC if less than the threshold " @@ -1003,7 +1071,7 @@ msgstr "" "predefinição é: %default. Os atalhos só são adicionados ao Índice se forem " "detectados menos que o limite de capítulos." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:231 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:232 msgid "" "Remove entries from the Table of Contents whose titles match the specified " "regular expression. Matching entries and all their children are removed." @@ -1012,7 +1080,7 @@ msgstr "" "especificada. As entradas correspondentes e as suas dependentes são " "removidas." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:242 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:243 msgid "" "An XPath expression to detect chapter titles. The default is to consider " "

or

tags that contain the words \"chapter\",\"book\",\"section\" or " @@ -1029,7 +1097,7 @@ msgstr "" "expressão \"/\". Ver o Tutorial XPath no Manual do Utilizador do calibre " "para mais ajuda em como usar esta funcionalidade." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:256 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:257 msgid "" "Specify how to mark detected chapters. A value of \"pagebreak\" will insert " "page breaks before chapters. A value of \"rule\" will insert a line before " @@ -1042,7 +1110,7 @@ msgstr "" "desactivar a marcação de capítulos e um valor \"ambos\" irá usar tanto " "quebras de página como linhas para marcar os capítulos." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:266 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:267 msgid "" "Either the path to a CSS stylesheet or raw CSS. This CSS will be appended to " "the style rules from the source file, so it can be used to override those " @@ -1052,42 +1120,42 @@ msgstr "" "adicionado às regras de estilo do ficheiro de origem de modo a ser usado " "para se sobrepor a essas regras." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:275 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:276 msgid "" "An XPath expression. Page breaks are inserted before the specified elements." msgstr "" "Uma expressão XPath. As quebras de página são inseridas antes dos elementos " "especificados." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:281 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:282 msgid "" "Set the top margin in pts. Default is %default. Note: 72 pts equals 1 inch" msgstr "" "Definir a margem superior em pts. A predefinição é %default. Nota: 72 pts é " "igual a 1 polegada" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:286 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:287 msgid "" "Set the bottom margin in pts. Default is %default. Note: 72 pts equals 1 inch" msgstr "" "Definir a margem inferior em pts. A predefinição é %default. Nota: 72 pts é " "igual a 1 polegada" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:291 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:292 msgid "" "Set the left margin in pts. Default is %default. Note: 72 pts equals 1 inch" msgstr "" "Definir a margem esquerda em pts. A predefinição é %default. Nota: 72 pts é " "igual a 1 polegada" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:296 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:297 msgid "" "Set the right margin in pts. Default is %default. Note: 72 pts equals 1 inch" msgstr "" "Definir a margem direita em pts. A predefinição é %default. Nota: 72 pts é " "igual a 1 polegada" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:301 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:302 msgid "" "Do not force text to be justified in output. Whether text is actually " "displayed justified or not depends on whether the ebook format and reading " @@ -1097,7 +1165,7 @@ msgstr "" "texto ser apresentado justificado depende se o formato do livro ou do " "aparelho de leitura suporta a justificação." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:308 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:309 msgid "" "Remove spacing between paragraphs. Also sets an indent on paragraphs of " "1.5em. Spacing removal will not work if the source file does not use " @@ -1107,14 +1175,21 @@ msgstr "" "parágrafos de 1.5em. A remoção do espaçamento não funciona se o ficheiro de " "origem não usar parágrafos (etiquetas

ou

)." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:315 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:316 +msgid "" +"When calibre removes inter paragraph spacing, it automatically sets a " +"paragraph indent, to ensure that paragraphs can be easily distinguished. " +"This option controls the width of that indent." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:323 msgid "" "Use the cover detected from the source file in preference to the specified " "cover." msgstr "" "Usar a capa detectada no ficheiro de origem em vez da capa especificada." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:321 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:329 msgid "" "Insert a blank line between paragraphs. Will not work if the source file " "does not use paragraphs (

or

tags)." @@ -1122,7 +1197,7 @@ msgstr "" "Inserir uma linha em branco entre os parágrafos. Não funciona se o ficheiro " "de origem não usar parágrafos (etiquetas

ou

)." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:328 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:336 msgid "" "Remove the first image from the input ebook. Useful if the first image in " "the source file is a cover and you are specifying an external cover." @@ -1130,7 +1205,7 @@ msgstr "" "Remover a primeira imagem do livro de origem. Útil se a primeira imagem do " "ficheiro de origem é a capa e se está a especificar uma capa externa." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:336 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:344 msgid "" "Insert the book metadata at the start of the book. This is useful if your " "ebook reader does not support displaying/searching metadata directly." @@ -1138,7 +1213,7 @@ msgstr "" "Inserir os metadados do livro no seu início. Isto é útil se o seu leitor não " "suporta apresentar/procurar os metadados directamente." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:344 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:352 msgid "" "Attempt to detect and correct hard line breaks and other problems in the " "source file. This may make things worse, so use with care." @@ -1146,23 +1221,23 @@ msgstr "" "Tentar detectar e corrigir as quebras de página e outros problemas no " "ficheiro de origem. Pode piorar as coisas, por isso use com cuidado." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:352 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:360 msgid "Use a regular expression to try and remove the header." msgstr "Usar a expressão regular para tentar remover o cabeçalho." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:359 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:367 msgid "The regular expression to use to remove the header." msgstr "A expressão regular a usar para remover o cabeçalho." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:365 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:373 msgid "Use a regular expression to try and remove the footer." msgstr "Usar a expressão regular para tentar remover o rodapé." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:372 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:380 msgid "The regular expression to use to remove the footer." msgstr "A expressão regular a usar para remover o rodapé." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:379 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:387 msgid "" "Read metadata from the specified OPF file. Metadata read from this file will " "override any metadata in the source file." @@ -1170,7 +1245,7 @@ msgstr "" "Ler os metadados do ficheiro OPF especificado. Os metadados lidos deste " "ficheiro vão sobrepor-se aos metadados no ficheiro de origem." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:386 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:394 msgid "" "Transliterate unicode characters to an ASCII representation. Use with care " "because this will replace unicode characters with ASCII. For instance it " @@ -1186,92 +1261,92 @@ msgstr "" "Chinês e o Japonês por exemplo) a representação usada pelo maior número de " "pessoas será usada (Chinês no exemplo anterior)." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:401 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:409 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:37 msgid "Set the title." msgstr "Definir o título." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:405 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:413 msgid "Set the authors. Multiple authors should be separated by ampersands." msgstr "Definir os autores. Múltiplos autores devem ser separados por &." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:410 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:418 msgid "The version of the title to be used for sorting. " msgstr "A versão do título a ser usada para a ordenação. " -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:414 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:422 msgid "String to be used when sorting by author. " msgstr "Expressão a ser usada quando ordenar por autor. " -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:418 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:426 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:51 msgid "Set the cover to the specified file." msgstr "Definir a capa do ficheiro especificado." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:422 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:430 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:53 msgid "Set the ebook description." msgstr "Definir a descrição do livro." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:426 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:434 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:55 msgid "Set the ebook publisher." msgstr "Definir a editora do livro." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:430 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:438 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:59 msgid "Set the series this ebook belongs to." msgstr "Definir a série a que este livro pertence." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:434 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:442 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:61 msgid "Set the index of the book in this series." msgstr "Definir o índice do livro nesta série." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:438 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:446 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:63 msgid "Set the rating. Should be a number between 1 and 5." msgstr "Definir a avaliação. Deve ser um algarismo entre 1 e 5." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:442 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:450 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:65 msgid "Set the ISBN of the book." msgstr "Definir o ISBN do livro." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:446 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:454 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:67 msgid "Set the tags for the book. Should be a comma separated list." msgstr "" "Definir as etiquetas do livro. Deve ser uma lista separada por vírgulas." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:450 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:458 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:69 msgid "Set the book producer." msgstr "Definir o produtor do livro." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:454 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:462 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:71 msgid "Set the language." msgstr "Definir a linguagem." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:546 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:562 msgid "Could not find an ebook inside the archive" msgstr "Foi impossível localizar um livro dentro do arquivo" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:604 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:620 msgid "Values of series index and rating must be numbers. Ignoring" msgstr "" "Os valores do índice da série e da avaliação devem ser algarismos. A ignorar" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:716 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:740 msgid "Converting input to HTML..." msgstr "A converter o ficheiro de origem para HTML..." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:739 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:763 msgid "Running transforms on ebook..." msgstr "A executar as transformações no livro..." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:825 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:850 msgid "Creating" msgstr "A criar" @@ -1318,9 +1393,9 @@ msgstr "" "nenhuma será gerada uma capa predefinida com o título, autores, etc. Esta " "opção desactiva a geração desta capa." -#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/fb2ml.py:126 -#: /home/kovid/work/calibre/src/calibre/ebooks/pml/pmlml.py:113 -#: /home/kovid/work/calibre/src/calibre/ebooks/rb/rbml.py:101 +#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/fb2ml.py:144 +#: /home/kovid/work/calibre/src/calibre/ebooks/pml/pmlml.py:129 +#: /home/kovid/work/calibre/src/calibre/ebooks/rb/rbml.py:102 #: /home/kovid/work/calibre/src/calibre/ebooks/txt/txtml.py:77 msgid "Table of Contents:" msgstr "Índice:" @@ -1379,56 +1454,56 @@ msgstr "" msgid "Creating LIT file from EPUB..." msgstr "A criar o ficheiro LIT a partir do formato EPUB..." -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:321 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:320 msgid "\tBook Designer file detected." msgstr "\tFicheiro do Book Designer detectado." -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:323 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:322 msgid "\tParsing HTML..." msgstr "\tA analisar o HTML..." -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:346 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:345 msgid "\tBaen file detected. Re-parsing..." msgstr "\tFicheiro da Baen detectado. A re-analisar..." -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:362 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:361 msgid "Written preprocessed HTML to " msgstr "Escrever o HTML pré-processado para " -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:380 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:379 msgid "Processing %s" msgstr "A processar %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:394 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:393 msgid "\tConverting to BBeB..." msgstr "\tA converter para o formato BBeB..." -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:540 -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:553 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:539 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:552 msgid "Could not parse file: %s" msgstr "É impossível analisar o ficheiro: %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:545 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:544 msgid "%s is an empty file" msgstr "%s é um ficheiro vazio" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:565 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:564 msgid "Failed to parse link %s %s" msgstr "Falha ao analisar o atalho %s %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:609 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:608 msgid "Cannot add link %s to TOC" msgstr "É impossível adicionar o atalho %s ao Índice" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:958 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:957 msgid "Unable to process image %s. Error: %s" msgstr "É impossível processar a imagem %s. Erro: %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1003 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1002 msgid "Unable to process interlaced PNG %s" msgstr "É impossível processar o ficheiro PNG interlaçado %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1018 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1017 msgid "" "Could not process image: %s\n" "%s" @@ -1436,14 +1511,14 @@ msgstr "" "É impossível processar a imagem: %s\n" "%s" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1773 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1772 msgid "" "An error occurred while processing a table: %s. Ignoring table markup." msgstr "" "Ocorreu um erro durante o processamento da tabela: %s. Ignorar as " "formatações da tabela." -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1775 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1774 msgid "" "Bad table:\n" "%s" @@ -1451,19 +1526,19 @@ msgstr "" "Tabela com erros:\n" "%s" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1797 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1796 msgid "Table has cell that is too large" msgstr "A tabela tem uma célula demasiado grande" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1863 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1862 msgid "Could not read cover image: %s" msgstr "É impossível ler a imagem da capa: %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1866 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1865 msgid "Cannot read from: %s" msgstr "É impossível ler a partir de: %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1996 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1994 msgid "Failed to process opf file" msgstr "Falha no processamento do ficheiro OPF" @@ -1670,86 +1745,92 @@ msgstr "Família de tipos de letra monospace a integrar" msgid "Comic" msgstr "Banda Desenhada" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:358 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:362 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:45 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:69 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:388 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1068 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:403 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1144 msgid "Title" msgstr "Título" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:359 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:363 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:57 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:159 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:393 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1069 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:408 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1145 msgid "Author(s)" msgstr "Autor(es)" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:360 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:364 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:59 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:173 msgid "Publisher" msgstr "Editora" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:361 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:365 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:49 msgid "Producer" msgstr "Produtor" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:362 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:366 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:71 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:64 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:349 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:94 msgid "Comments" msgstr "Comentários" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:370 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:165 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:338 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1012 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1072 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:94 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:122 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1088 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1148 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 msgid "Tags" msgstr "Etiquetas" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:372 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:354 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:93 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:122 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:369 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:95 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 msgid "Series" msgstr "Série" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:373 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:377 msgid "Language" msgstr "Linguagem" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:375 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1011 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:379 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1087 msgid "Timestamp" msgstr "Data e Hora" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:377 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:381 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:61 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:171 msgid "Published" msgstr "Editado" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:379 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:383 msgid "Rights" msgstr "Direitos" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/amazon.py:77 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/amazon.py:78 msgid "EDITORIAL REVIEW" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/archive.py:21 +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/cli.py:19 msgid "options" msgstr "opções" @@ -1833,49 +1914,65 @@ msgstr "" msgid "Set the BookID in LRF files" msgstr "Definir o ID do livro nos ficheiros LRF" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:144 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:148 msgid "No file specified" msgstr "Não foi especificado nenhum ficheiro" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:159 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:163 msgid "Original metadata" msgstr "Metadados originais" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:176 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:180 msgid "Changed metadata" msgstr "Metadados alterados" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:188 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:192 msgid "OPF created in" msgstr "Ficheiro OPF criado em" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:194 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:198 msgid "Cover saved to" msgstr "Capa guardada em" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:196 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:200 msgid "No cover found" msgstr "Não foi encontrada nenhuma capa" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:26 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:34 msgid "Metadata download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:63 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:111 +msgid "ratings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:111 +msgid "tags" +msgstr "etiquetas" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:112 +msgid "description/reviews" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:113 +msgid "Download %s from %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:137 msgid "Downloads metadata from Google Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:79 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:153 msgid "Downloads metadata from isbndb.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:106 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:181 msgid "" "To use isbndb.com you must sign up for a %sfree account%s and enter your " "access key below." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:118 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:189 msgid "Downloads social metadata from amazon.com" msgstr "" @@ -1954,7 +2051,7 @@ msgstr "" "LibraryThing.com\n" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1083 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1314 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1347 msgid "Cover" msgstr "Capa" @@ -1984,104 +2081,77 @@ msgstr "Título para qualquer Índice gerado em série." msgid "Disable compression of the file contents." msgstr "Desactivar a compressão do conteúdo do ficheiro." -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:102 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:105 msgid "All articles" msgstr "Todos os artigos" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1315 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1348 msgid "Title Page" msgstr "Página de Título" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1316 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1349 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:51 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:188 msgid "Table of Contents" msgstr "Índice" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1317 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1350 msgid "Index" msgstr "Índice" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1318 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1351 msgid "Glossary" msgstr "Glossário" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1319 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1352 msgid "Acknowledgements" msgstr "Agradecimentos" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1320 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1353 msgid "Bibliography" msgstr "Bibliografia" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1321 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1354 msgid "Colophon" msgstr "Marca Tipográfica" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1322 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1355 msgid "Copyright" msgstr "Direitos de Autor" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1323 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1356 msgid "Dedication" msgstr "Dedicatória" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1324 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1357 msgid "Epigraph" msgstr "Epígrafe" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1325 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1358 msgid "Foreword" msgstr "Prefácio" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1326 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1359 msgid "List of Illustrations" msgstr "Lista de Ilustrações" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1327 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1360 msgid "List of Tables" msgstr "Lista de Tabelas" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1328 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1361 msgid "Notes" msgstr "Notas" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1329 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1362 msgid "Preface" msgstr "Prefácio" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1330 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1363 msgid "Main Text" msgstr "Texto Principal" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:53 -msgid "Options to control e-book conversion." -msgstr "Opções para controlar a conversão de livros." - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:60 -msgid "Character encoding for input. Default is to auto detect." -msgstr "" -"Codificação de caracteres para o ficheiro de origem. A predefinição é " -"detectar automaticamente." - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:62 -msgid "Output file. Default is derived from input filename." -msgstr "Ficheiro de destino. A predefinição é o nome do ficheiro de origem." - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:64 -msgid "Produce more human-readable XML output." -msgstr "" -"Produzir um ficheiro de destino XML mais próximo possível da leitura humana." - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:66 -msgid "Useful for debugging." -msgstr "Útil para depurar." - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:71 -msgid "Usage: ebook-convert INFILE OUTFILE [OPTIONS..]" -msgstr "Utilização: ebook-convert INFILE OUTFILE [OPTIONS..]" - #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:39 msgid "%s format books are not supported" msgstr "Os livros no formato %s não são suportados" @@ -2120,11 +2190,11 @@ msgstr "" "Gerar um ficheiro Adobe \"page-map\" se a informação sobrea a paginação está " "disponível." -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/reader132.py:119 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/reader132.py:126 msgid "Footnotes" msgstr "Notas de rodapé" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/reader132.py:128 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/reader132.py:133 msgid "Sidebar" msgstr "Barra lateral" @@ -2166,11 +2236,11 @@ msgstr "" "Especifique a codificação de caracteres para o ficheiro de destino. A " "predefinição é cp1252. Nota: Esta opção não é cumprida por todos os formatos." -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:22 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:24 msgid "Do not extract images from the document" msgstr "Não extrair imagens do documento." -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:24 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:26 msgid "" "Scale used to determine the length at which a line should be unwrapped. " "Valid values are a decimal between 0 and 1. The default is 0.5, this is the " @@ -2180,6 +2250,10 @@ msgstr "" "Os valores válidos são decimais entre 0 e 1. A predefinição é 0.5, isto é o " "comprimento médio da linha." +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:30 +msgid "Use the new PDF conversion engine." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/cli.py:31 msgid "" "command ...\n" @@ -2431,7 +2505,7 @@ msgid "The orientation of the page. Default is portrait. Choices are %s" msgstr "" "A orientação da página. A predefinição é retrato. Escolhas disponíveis %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/pdftohtml.py:52 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/pdftohtml.py:55 msgid "Could not find pdftohtml, check it is in your PATH" msgstr "É impossível encontrar pdftohtml, verifique se está no seu caminho" @@ -2442,13 +2516,12 @@ msgstr "" "Especifique a codificação de caracteres para o documento de destino. A " "predefinição é cp1252." -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:183 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:199 msgid "" "This RTF file has a feature calibre does not support. Convert it to HTML " -"first and then try it." +"first and then try it.\n" +"%s" msgstr "" -"Este ficheiro RTF tem uma funcionalidade que o calibre não suporta. Converta-" -"o primeiro para HTML e então volte a tentar." #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:23 msgid "" @@ -2475,6 +2548,10 @@ msgstr "" "Passe o texto de origem pelo pré-processador markdown. Para aprender mais " "sobre markdown veja" +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:35 +msgid "Do not insert a Table of Contents into the output text." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:24 msgid "" "Type of newline to use. Options are %s. Default is 'system'. Use 'old_mac' " @@ -2495,11 +2572,6 @@ msgstr "" "predefinição é utf-8. Nota: Esta opção não é cumprida por todos os formatos." #: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:38 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:54 -msgid "Do not add a blank line between paragraphs." -msgstr "Não adicionar uma linha em branco entre os parágrafos." - -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:41 msgid "" "The maximum number of characters per line. This splits on the first space " "before the specified value. If no space is found the line will be broken at " @@ -2511,7 +2583,7 @@ msgstr "" "linha será dividida no espaço após o valor especificado e irá excedê-lo. O " "valor mínimo é de 25 caracteres. Use 0 para desactivar a divisão de linhas." -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:48 +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:45 msgid "" "Force splitting on the max-line-length value when no space is present. Also " "allows max-line-length to be below the minimum" @@ -2520,86 +2592,82 @@ msgstr "" "Também permite que o comprimento máximo da linha possa ser menor que o " "mínimo." -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:52 -msgid "Add a tab at the beginning of each paragraph." -msgstr "Adiciona uma tabulação no início de cada parágrafo." - -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:29 msgid "Send file to storage card instead of main memory by default" msgstr "" "Enviar o ficheiro para o cartão de memória em vez da memória principal por " "predefinição" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:29 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:31 msgid "Confirm before deleting" msgstr "Confirmar antes de apagar" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:31 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:33 msgid "Toolbar icon size" msgstr "Tamanho dos ícones da barra de ferramentas" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:33 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:35 msgid "Show button labels in the toolbar" msgstr "Mostrar as descrições nos botões da barra de ferramentas" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:37 msgid "Main window geometry" msgstr "Geometria da janela principal" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:37 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:39 msgid "Notify when a new version is available" msgstr "Notificar quando uma nova versão estiver disponível" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:41 msgid "Use Roman numerals for series number" msgstr "Usar números romanos para o número da série" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:41 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:43 msgid "Sort tags list by popularity" msgstr "Ordenar a lista de etiquetas por popularidade" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:45 msgid "Number of covers to show in the cover browsing mode" msgstr "Número de capas a mostrar no modo de navegação pelas capas" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:47 msgid "Defaults for conversion to LRF" msgstr "Predefinições para a conversão para o formato LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:49 msgid "Options for the LRF ebook viewer" msgstr "Opções para o Visualizador de livros em formato LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:52 msgid "Formats that are viewed using the internal viewer" msgstr "Formatos a usar pelo Visualizador interno" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 msgid "Columns to be displayed in the book list" msgstr "Colunas a serem apresentadas na lista de livros" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 msgid "Automatically launch content server on application startup" msgstr "" "Iniciar automaticamente o servidor de conteúdos no arranque da aplicação" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 msgid "Oldest news kept in database" msgstr "Notícias mais antigas guardadas na base de dados" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 -msgid "Show system tray icon" -msgstr "Mostrar o ícone da área de notificação" - #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:57 +msgid "Show system tray icon" +msgstr "Mostrar o ícone na área de notificação" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:59 msgid "Upload downloaded news to device" msgstr "Carregar as notícias descarregadas para o aparelho" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:61 msgid "Delete books from library after uploading to device" msgstr "Apagar os livros da biblioteca após carregamento para o aparelho" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:63 msgid "" "Show the cover flow in a separate window instead of in the main calibre " "window" @@ -2607,79 +2675,88 @@ msgstr "" "Mostrar o fluxo de capas numa janela separada em vez de na janela principal " "do calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:65 msgid "Disable notifications from the system tray icon" msgstr "Desactivar as notificações a partir do ícone da área de notificação" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:67 msgid "Default action to perform when send to device button is clicked" msgstr "" "Acção predefinida a executar quando se clica no botão \"Enviar para o " "aparelho\"" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:89 msgid "Maximum number of waiting worker processes" msgstr "Número máximo de processos de trabalho em espera." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:91 msgid "Download social metadata (tags/rating/etc.)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:125 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:398 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:93 +msgid "Overwrite author and title with new metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:95 +msgid "Limit max simultaneous jobs to number of CPUs" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:439 msgid "Copied" msgstr "Copiado" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:159 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:167 msgid "Copy" msgstr "Copiar" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:159 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:167 msgid "Copy to Clipboard" msgstr "Copiar para a Área de Transferência" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:398 msgid "Choose Files" msgstr "Escolher ficheiros" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:52 msgid "Searching in" msgstr "A procurar em" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:173 msgid "Adding..." msgstr "A adicionar..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:186 msgid "Searching in all sub-directories..." msgstr "A procurar em todas as sub-pastas..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:199 msgid "Path error" msgstr "Erro no caminho" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:200 msgid "The specified directory could not be processed." msgstr "É impossível processar a pasta especificada." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:195 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:486 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:495 msgid "No books" msgstr "Nenhuns livros" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1400 msgid "No books found" msgstr "Nenhum livros encontrados" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:271 msgid "Added" msgstr "Adicionado" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:284 msgid "Adding failed" msgstr "Falha ao adicionar" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:276 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:285 msgid "" "The add books process seems to have hung. Try restarting calibre and adding " "the books in smaller increments, until you find the problem book." @@ -2688,11 +2765,11 @@ msgstr "" "e adicionar os livros em incrementos mais pequenos até encontrar o livro " "problemático." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:297 msgid "Duplicates found!" msgstr "Duplicados encontrados!" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:298 msgid "" "Books with the same title as the following already exist in the database. " "Add them anyway?" @@ -2700,37 +2777,30 @@ msgstr "" "Livros com o mesmo título que o seguinte já existem na base de dados. " "Adicionar na mesma?" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:292 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:301 msgid "Adding duplicates..." msgstr "Adicionar duplicados..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:362 msgid "Saving..." msgstr "A guardar..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:406 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:415 msgid "Saved" msgstr "Guardado" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:60 -msgid "Bulk Convert" -msgstr "Converter a granel" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:73 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:184 -msgid "Options specific to the output format." -msgstr "Opções específicas ao formato de destino." - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:15 -msgid "Comic Input" -msgstr "Banda Desenhada de origem" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:16 +msgid "CSV/XML Options" +msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:13 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:20 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input.py:13 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:13 @@ -2741,24 +2811,32 @@ msgstr "Banda Desenhada de origem" msgid "Options specific to" msgstr "Opções específicas a" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:13 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input.py:13 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:13 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:13 -msgid "input" -msgstr "ficheiro de origem" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:18 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:20 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:21 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output.py:18 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:17 +msgid "output" +msgstr "Ficheiro de destino" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:36 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:27 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:49 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:41 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:28 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:118 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:115 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:165 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:44 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:114 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input_ui.py:31 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:35 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:38 @@ -2766,17 +2844,102 @@ msgstr "ficheiro de origem" #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:38 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:51 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:41 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:49 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:67 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template_ui.py:41 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:35 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:107 msgid "Form" msgstr "Formulário" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:37 +msgid "Fields to include in output:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:17 +msgid "E-book options" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:271 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1464 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1478 +msgid "Catalog" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:65 +msgid "'Don't include this book' tag:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:66 +msgid "'Mark this book as read' tag:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:67 +msgid "Additional note tag prefix:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:68 +msgid "Regex pattern describing tags to exclude as genres:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:69 +msgid "" +"Regex tips:\n" +"- The default regex - \\[[\\w ]*\\] - excludes genre tags of the form [tag], " +"e.g., [Amazon Freebie]\n" +"- A regex pattern of a single dot excludes all genre tags, generating no " +"Genre Section" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:72 +msgid "Include 'Titles' Section" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:73 +msgid "Include 'Recently Added' Section" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:74 +msgid "Sort numbers as text" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:28 +msgid "Tab template for catalog.ui" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:36 +msgid "" +"For settings that cannot be specified in this dialog, use the values saved " +"in a previous conversion (if they exist) instead of using the defaults " +"specified in the Preferences" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:67 +msgid "Bulk Convert" +msgstr "Converter a granel" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 +msgid "Options specific to the output format." +msgstr "Opções específicas ao formato de destino." + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:15 +msgid "Comic Input" +msgstr "Banda Desenhada de origem" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:13 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input.py:13 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:13 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:13 +msgid "input" +msgstr "ficheiro de origem" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:94 msgid "&Number of Colors:" @@ -2832,7 +2995,7 @@ msgid "&Disable comic processing" msgstr "Desactivar o &processamento de banda desenhada" #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:96 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:111 msgid "&Output format:" msgstr "Formato de &destino:" @@ -2872,25 +3035,25 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:53 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:124 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:170 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:44 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:61 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:496 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:356 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:361 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:386 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:388 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:390 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:395 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:397 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:574 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:387 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:391 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:396 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:398 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:126 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:128 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:131 @@ -2898,9 +3061,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:267 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:269 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:270 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:332 #: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:334 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:336 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:342 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:180 msgid "..." msgstr "..." @@ -2918,17 +3084,6 @@ msgstr "" msgid "EPUB Output" msgstr "Ficheiro de destino EPUB" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:20 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:16 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output.py:18 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:17 -msgid "output" -msgstr "Ficheiro de destino" - #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:42 msgid "Do not &split on page breaks" msgstr "Não dividir nas &quebras de página" @@ -2960,7 +3115,7 @@ msgstr "Ficheiro de destino FB2" #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:29 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:37 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:29 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:47 msgid "&Inline TOC" msgstr "Índice em &linha" @@ -2979,26 +3134,10 @@ msgid "" "

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

Este assistente ajuda-o a escolher uma chave de tamanho de letra " -"apropriada para as suas necessidades. Insira apenas o tamanho do tipo de " -"letra padrão do documento de origem e um tamanho do tipo de letra de origem. " -"O assistente vai apresentar o tamanho do tipo de letra para o qual vai ser " -"mapeado, pelo algoritmo de alteração proporcional dos tipos de letra. Pode " -"ajustar o algoritmo ajustando o tamanho do tipo de letra padrão de destino e " -"a chave de tamanho de letra abaixo. Quando encontrar valores apropriados " -"para si, clique OK.

\n" -"

Por predefinição, se o tamanho do tipo de letra padrão de destino é zero " -"e/ou nenhuma chave de tamanho de letra for especificada, o calibre vai usar " -"os valores do Perfil de Destino actual.

\n" -"

Veja o Manual do Utilizador para perceber como é que a alteração " -"proporcional dos tipos de letra funciona.

" #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:103 msgid "&Output document" @@ -3010,22 +3149,22 @@ msgid "&Base font size:" msgstr "&Tamanho do tipo de letra padrão:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:105 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:122 msgid "Font size &key:" msgstr "C&have do tamanho do tipo de letra:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:110 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:112 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:126 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:118 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:125 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:118 #: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:126 msgid " pt" msgstr " pt" @@ -3057,48 +3196,63 @@ msgstr "Aparência" msgid "Control the look and feel of the output" msgstr "Controlar o aspecto do ficheiro de destino" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:119 msgid "&Disable font size rescaling" msgstr "&Desactivar a alteração proporcional do tamanho do tipo de letra" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:120 msgid "Base &font size:" msgstr "Tamanho do tipo de letra &padrão:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:123 msgid "Wizard to help you choose an appropriate font size key" msgstr "" "Assistente para ajudar a escolher uma chave de tamanho de letra apropriada" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:125 msgid "Line &height:" msgstr "&Altura da linha:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:127 msgid "Input character &encoding:" msgstr "&Codificação de caracteres de origem:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:128 msgid "Remove &spacing between paragraphs" msgstr "Remover o &espaçamento entre parágrafos" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:129 +msgid "Indent size:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:130 +msgid "" +"

When calibre removes inter paragraph spacing, it automatically sets a " +"paragraph indent, to ensure that paragraphs can be easily distinguished. " +"This option controls the width of that indent." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:131 +msgid " em" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:132 msgid "Insert &blank line" msgstr "Inserir uma linha em &branco" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:133 msgid "No text &justification" msgstr "Não &justificar o texto" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:134 msgid "&Linearize tables" msgstr "&Linearizar as tabelas" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:135 msgid "&Transliterate unicode characters to ASCII." msgstr "&Transliterar os caracteres unicode para ASCII." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:136 msgid "Extra &CSS" msgstr "CSS e&xtra" @@ -3156,8 +3310,8 @@ msgid "&Monospaced font family:" msgstr "Família de tipos de letra &Monospace:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:41 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:145 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:189 msgid "Metadata" msgstr "Metadados" @@ -3169,39 +3323,39 @@ msgstr "" "Definir os metadados. O ficheiro de destino vai conter tantos metadados " "quanto possível." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:152 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:99 msgid "Choose cover for " msgstr "Escolher a capa para " -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:159 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:106 msgid "Cannot read" msgstr "É impossível ler" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:107 msgid "You do not have permission to read the file: " msgstr "Não tem permissão para ler o ficheiro: " -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:168 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:175 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:183 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:115 msgid "Error reading file" msgstr "Erro ao ler o ficheiro" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:169 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:116 msgid "

There was an error reading from file:
" msgstr "

Houve um erro ao ler do ficheiro:
" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:184 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:124 msgid " is not a valid picture" msgstr " não é uma imagem válida" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:392 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393 msgid "Book Cover" msgstr "Capa do livro" @@ -3210,28 +3364,28 @@ msgid "Use cover from &source file" msgstr "Usar a capa do ficheiro de &origem" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:168 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:394 msgid "Change &cover image:" msgstr "Alterar a imagem da &capa:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:169 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:394 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:395 msgid "Browse for an image to use as the cover of this book." msgstr "Navegar para uma imagem para usar como a capa deste livro" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:171 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:354 msgid "&Title: " msgstr "&Título: " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:355 msgid "Change the title of this book" msgstr "Alterar o título deste livro" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:173 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:358 msgid "&Author(s): " msgstr "&Autor(es): " @@ -3248,19 +3402,19 @@ msgstr "" "vírgula" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:143 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:366 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367 msgid "&Publisher: " msgstr "&Editora: " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:368 msgid "Ta&gs: " msgstr "Eti&quetas: " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:178 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:145 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:368 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:369 msgid "" "Tags categorize the book. This is particularly useful while searching. " "

They can be any words or phrases, separated by commas." @@ -3269,82 +3423,94 @@ msgstr "" "

Podem ser quaisquer palavras ou frases, separadas por vírgulas." #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:179 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:150 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:372 msgid "&Series:" msgstr "&Série:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:181 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:152 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:372 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:158 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:373 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374 msgid "List of known series. You can add new series." msgstr "Lista de séries conhecidas. Pode adicionar uma nova série." #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:182 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:379 msgid "Book " msgstr "Livro " -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:20 msgid "MOBI Output" msgstr "Ficheiro de destino MOBI" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:42 +msgid "Default" +msgstr "Predefinição" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:58 msgid "&Title for Table of Contents:" msgstr "&Título para o Índice:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:59 msgid "Rescale images for &Palm devices" msgstr "Alterar o tamanho das imagens proporcionalmente para &aparelhos Palm" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:60 msgid "Use author &sort for author" msgstr "Usar a &ordenação de autor para o autor" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:61 msgid "Disable compression of the file contents" msgstr "Desactivar a compressão do conteúdo do ficheiro" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:62 msgid "Do not add Table of Contents to book" msgstr "Não inserir um Índice no livro" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:63 +msgid "Kindle options" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:64 +msgid "Masthead font:" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup.py:35 msgid "Page Setup" msgstr "Configuração da Página" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:115 msgid "&Output profile:" msgstr "Perfil do ficheiro de &destino:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:116 msgid "Profile description" msgstr "Descrição do perfil" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:117 msgid "&Input profile:" msgstr "Perfil do ficheiro de &origem:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:118 msgid "Margins" msgstr "Margens" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:119 msgid "&Left:" msgstr "&Esquerda:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:121 msgid "&Top:" msgstr "&Superior:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:123 msgid "&Right:" msgstr "Di&reita:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:125 msgid "&Bottom:" msgstr "&Inferior" @@ -3353,12 +3519,12 @@ msgid "PDB Input" msgstr "Ficheiro de origem PDB" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input_ui.py:32 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:43 msgid "Treat each &line as a paragraph" msgstr "Tratar cada &linha como um parágrafo" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input_ui.py:33 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:44 msgid "Assume print formatting" msgstr "Assumir o formato de impressão" @@ -3399,7 +3565,7 @@ msgid "RB Output" msgstr "Ficheiro de destino RB" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1400 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1645 msgid "Choose the format to view" msgstr "Escolher o formato para ver" @@ -3433,25 +3599,29 @@ msgstr "Pré-visualizar" msgid "Regex:" msgstr "Regex:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:171 msgid "Convert" msgstr "Converter" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:196 msgid "Options specific to the input format." msgstr "Opções específicas ao formato de origem." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:105 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:64 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:48 msgid "Dialog" msgstr "Caixa de diálogo" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:109 msgid "&Input format:" msgstr "Formato de &origem:" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:110 +msgid "Use &saved conversion settings for individual books" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17 msgid "" "Structure\n" @@ -3485,12 +3655,12 @@ msgid "Footer regular expression:" msgstr "Expressão regular do rodapé:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:71 msgid "Invalid regular expression" msgstr "Expressão regular inválida" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:57 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:72 msgid "Invalid regular expression: %s" msgstr "Expressão regular inválida: %s" @@ -3576,11 +3746,11 @@ msgstr "Filtro do &Índice:" msgid "TXT Input" msgstr "Ficheiro de origem TXT" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:40 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:45 msgid "Process using markdown" msgstr "Processar usando markdown" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:41 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:46 msgid "" "

Markdown is a simple markup language for text files, that allows for " "advanced formatting. To learn more visit markdown." +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:47 +msgid "Do not insert Table of Contents into output text when using markdown" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:16 msgid "TXT Output" msgstr "Ficheiro de destino TXT" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:46 msgid "&Line ending style:" msgstr "Estilo de fim de &linha:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:55 -msgid "Add a tab at the beginning of each paragraph" -msgstr "Adiciona uma tabulação no início de cada parágrafo" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:48 msgid "&Maximum line length:" msgstr "Comprimento &máximo da linha:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:49 msgid "Force maximum line lenght" msgstr "Forçar o comprimento máximo da linha" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:66 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:41 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:49 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:57 @@ -3621,7 +3791,7 @@ msgstr "Forçar o comprimento máximo da linha" msgid "TextLabel" msgstr "Rótulo do Texto" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:51 msgid "Use a wizard to help construct the XPath expression" msgstr "Use um assistente para ajudar a construir a expressão XPath" @@ -3696,205 +3866,201 @@ msgid "" "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." +"href=\"http://calibre-ebook.com/user_manual/xpath.html\">XPath Tutorial." msgstr "" -"

Por exemplo, para corresponder todas as etiquetas h2 que têm " -"class=\"chapter\", definir a etiqueta para h2, o atributo para " -"class e o valor para chapter.

Deixar o atributo em " -"branco vai corresponder qualquer atributo e deixar o valor em branco vai " -"corresponder qualquer valor. Definir a etiqueta para * vai corresponder " -"qualquer etiqueta.

Para aprender utilizações mais avançadas do XPath " -"veja o Tutorial " -"XPath." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:39 -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:38 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:135 msgid "No details available." msgstr "Nenhuns detalhes disponíveis." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:120 msgid "Device no longer connected." msgstr "O aparelho já não está ligado." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:208 msgid "Get device information" msgstr "Ir buscar informação sobre o aparelho" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:219 msgid "Get list of books on device" msgstr "Listar os livros presentes no aparelho" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:228 msgid "Send metadata to device" msgstr "Enviar os metadados para o aparelho" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:237 msgid "Upload %d books to device" msgstr "Carregar %d livro(s) para o aparelho" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:243 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:252 msgid "Delete books from device" msgstr "Apagar os livros do aparelho" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:260 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:269 msgid "Download books from device" msgstr "Descarregar os livros do aparelho" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:270 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:279 msgid "View book on device" msgstr "Ver o livro no aparelho" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:277 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:286 msgid "and delete from library" msgstr "e apagar da biblioteca" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:298 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:307 msgid "Set default send to device action" msgstr "Definir a acção predefinida Enviar para o aparelho" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:303 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:310 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:312 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:314 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:323 msgid "Email to" msgstr "Email para" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:325 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:332 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:341 msgid "Send to main memory" msgstr "Enviar para a memória principal" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:327 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:336 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:343 msgid "Send to storage card A" msgstr "Enviar para o cartão de memória A" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:329 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:336 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:338 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:345 msgid "Send to storage card B" msgstr "Enviar para o cartão de memória B" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:339 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:348 msgid "Send specific format to main memory" msgstr "Enviar o formato específico para a memória principal" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:341 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:350 msgid "Send specific format to storage card A" msgstr "Enviar o formato específico para o cartão de memória A" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:343 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:352 msgid "Send specific format to storage card B" msgstr "Enviar o formato específico para o cartão de memória B" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:487 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:496 msgid "selected to send" msgstr "seleccionado para enviar" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:492 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:501 msgid "Choose format to send to device" msgstr "Escolher o formato a enviar para o aparelho" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:499 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:508 msgid "No device" msgstr "Nenhum aparelho" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:500 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:509 msgid "Cannot send: No device is connected" msgstr "É impossível enviar: O aparelho não está ligado" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:503 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:512 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:516 msgid "No card" msgstr "Nenhum cartão" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:504 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:513 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:517 msgid "Cannot send: Device has no storage card" msgstr "É impossível enviar: O aparelho não tem cartão de memória" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:558 msgid "E-book:" msgstr "Livro:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:561 msgid "Attached, you will find the e-book" msgstr "Anexado, vai encontrar o livro" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:562 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:177 msgid "by" msgstr "por" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:563 msgid "in the %s format." msgstr "no formato %s." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:568 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:576 msgid "Sending email to" msgstr "A enviar o email para" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:598 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:605 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:698 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:812 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:819 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:606 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:613 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:705 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:765 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:888 msgid "No suitable formats" msgstr "Nenhuns formatos suportados" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:599 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:607 msgid "Auto convert the following books before sending via email?" msgstr "" "Converter automaticamente os seguintes livros antes de enviar via email?" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:606 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:614 msgid "" "Could not email the following books as no suitable formats were found:" msgstr "" "É impossível enviar os livros seguintes por email poque não foram " "encontrados formatos adequados:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:625 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:632 msgid "Failed to email books" msgstr "Falha no envio dos livros" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:626 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:633 msgid "Failed to email the following books:" msgstr "Falha no envio dos seguintes livros:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:630 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:637 msgid "Sent by email:" msgstr "Enviado por email:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:657 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:664 msgid "News:" msgstr "Notícias:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:658 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:665 msgid "Attached is the" msgstr "Anexado está o" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:669 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:676 msgid "Sent news to" msgstr "Enviar as notícias para" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:699 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:813 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:766 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:882 msgid "Auto convert the following books before uploading to the device?" msgstr "" "Converter automaticamente os seguintes livros antes de os carregar para o " "aparelho?" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:730 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:735 +msgid "Sending catalogs to device." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:796 msgid "Sending news to device." msgstr "Enviar notícias para o aparelho." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:782 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:850 msgid "Sending books to device." msgstr "A enviar livros para o aparelho" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:820 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:889 msgid "" "Could not upload the following books to the device, as no suitable formats " "were found. Convert the book(s) to a format supported by your device first." @@ -3903,54 +4069,92 @@ msgstr "" "encontrados formatos adequados. Converta o(s) livro(s) para um formato " "suportado pelo seu aparelho primeiro." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:868 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:937 msgid "No space on device" msgstr "Sem espaço no aparelho" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:869 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:938 msgid "" "

Cannot upload books to device there is no more free space available " msgstr "" "

É impossível carregar os livros para o aparelho porque já não há mais " "espaço disponível " -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:75 msgid "Select available formats and their order for this device" msgstr "" "Seleccione os formatos disponíveis e a sua ordenação para este aparelho" -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:79 msgid "Use sub directories" msgstr "Usar sub-pastas" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:85 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:345 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1007 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:81 +msgid "Save &template:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1083 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:92 msgid "Path" msgstr "Caminho" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:87 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:89 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:216 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:344 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 msgid "Formats" msgstr "Formatos" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:68 +msgid "Fit &cover to view" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:69 msgid "&Previous" msgstr "&Anterior" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:70 msgid "&Next" msgstr "&Seguinte" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:37 +msgid "My Books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:264 +msgid "Generate catalog" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:68 +msgid "Catalog &format:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:69 +msgid "" +"Catalog &title (existing catalog with the same title will be replaced):" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:70 +msgid "&Send catalog to device automatically" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:71 +msgid "Catalog options" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:72 +msgid "Generate catalog for {0} books" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:40 msgid "Choose Format" msgstr "Escolher o formato" @@ -3985,6 +4189,12 @@ msgstr "%(plugins)s para %(plugin_type)s" msgid "plugins" msgstr "Extras" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:180 +msgid "" +"\n" +"Customization: " +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:196 msgid "Conversion" msgstr "Conversão" @@ -4051,130 +4261,130 @@ msgstr "" msgid "new email address" msgstr "novo endereço de email" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:468 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:811 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:152 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1074 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:478 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:823 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1249 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 msgid "Error" msgstr "Erro" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:479 msgid "Failed to install command line tools." msgstr "Falha na instalação das ferramentas da linha de comandos." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:472 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:482 msgid "Command line tools installed" msgstr "Ferramentas da linha de comandos instaladas" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:473 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:483 msgid "Command line tools installed in" msgstr "Ferramentas da linha de comandos instaladas em" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:474 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:484 msgid "" "If you move calibre.app, you have to re-install the command line tools." msgstr "" "Se mover o calibre.app, terá que reinstalar as ferramentas da linha de " "comandos." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:525 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:535 msgid "No valid plugin path" msgstr "Nenhum caminho válido para o extra" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:536 msgid "%s is not a valid plugin path" msgstr "%s não é um caminho válido para o extra" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:539 msgid "Choose plugin" msgstr "Escolher o extra" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:541 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551 msgid "Plugin cannot be disabled" msgstr "O extra não pode ser desactivado" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:542 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:552 msgid "The plugin: %s cannot be disabled" msgstr "O extra: %s não pode ser desactivado" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:561 msgid "Plugin not customizable" msgstr "Extra não personalizável" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:562 msgid "Plugin: %s does not need customization" msgstr "Extra: %s não necessita de personalização" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:570 msgid "Customize" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:598 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:608 msgid "Cannot remove builtin plugin" msgstr "É impossível remover o extra integrado" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:599 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:609 msgid " cannot be removed. It is a builtin plugin. Try disabling it instead." msgstr "" " não pode ser removido. É um extra integrado. Experimente desactivá-lo." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:632 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:642 msgid "Error log:" msgstr "Registo de erros:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:639 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:649 msgid "Access log:" msgstr "Registo de acesso:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:667 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:604 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:677 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:660 msgid "Failed to start content server" msgstr "Falha em iniciar o servidor de conteúdos" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:691 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:701 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:550 msgid "Select location for books" msgstr "Seleccione a localização dos livros" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:699 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:709 msgid "Invalid size" msgstr "Tamanho inválido" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:710 msgid "The size %s is invalid. must be of the form widthxheight" msgstr "O tamanho %s é inválido. Deve estar na forma larguraxaltura" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:752 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:757 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:764 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:769 msgid "Invalid database location" msgstr "Localização da base de dados inválida" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:753 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:765 msgid "Invalid database location " msgstr "Localização da base de dados inválida " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:754 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:766 msgid "
Must be a directory." msgstr "
Deve ser uma pasta." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:758 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:770 msgid "Invalid database location.
Cannot write to " msgstr "Localização da base de dados inválida.
É impossível escrever em " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:792 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:804 msgid "Checking database integrity" msgstr "A verificar a integridade da base de dados" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:824 msgid "Failed to check database integrity" msgstr "Falha na verificação da integridade da base de dados" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:817 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:829 msgid "Some inconsistencies found" msgstr "Foram encontradas algumas inconsistências" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:818 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:830 msgid "" "The following books had formats listed in the database that are not actually " "available. The entries for the formats have been removed. You should check " @@ -4186,14 +4396,6 @@ msgstr "" "verificá-los manualmente. Isto pode acontecer se manipular os ficheiros " "directamente nas pastas da biblioteca." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save.py:68 -msgid "Invalid template" -msgstr "Modelo inválido" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save.py:69 -msgid "The template %s is invalid:" -msgstr "O modelo %s é inválido:" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:100 msgid "TabWidget" msgstr "" @@ -4213,14 +4415,24 @@ msgid "Read metadata only from &file name" msgstr "Ler os metadados só a partir do nome do &ficheiro" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:103 +msgid "" +"Swap the firstname and lastname of the author. This affects only metadata " +"read from file names." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:104 +msgid "&Swap author firstname and lastname" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:105 msgid "&Configure metadata from file name" msgstr "&Configurar os metadados a partir do nome do ficheiro" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:106 msgid "&Adding books" msgstr "&Adicionar os livros" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:107 msgid "" "Here you can control how calibre will save your books when you click the " "Save to Disk button:" @@ -4228,71 +4440,60 @@ msgstr "" "Aqui pode controlar a maneira como o calibre guarda os seus livros quando " "clica no botão Guardar no disco:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:108 msgid "Save &cover separately" msgstr "Guardar a &capa separadamente" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:109 msgid "Update &metadata in saved copies" msgstr "Actualizar os &metadados nas cópias guardadas" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:110 msgid "Save metadata in &OPF file" msgstr "Guardar os metadados no ficheiro &OPF" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:111 msgid "Convert non-English characters to &English equivalents" msgstr "Converter os caracteres não Ingleses para equivalentes &Ingleses" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:112 msgid "Format &dates as:" msgstr "Formatar as &datas como:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:113 msgid "File &formats to save:" msgstr "&Formatos dos ficheiros a guardar:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:112 -msgid "Save &template" -msgstr "Guardar o &modelo" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:113 -msgid "" -"By adjusting the template below, you can control what folders the files are " -"saved in and what filenames they are given. You can use the / character to " -"indicate sub-folders. Available metadata variables are described below. If a " -"particular book does not have some metadata, the variable will be replaced " -"by the empty string." -msgstr "" -"Ao ajustar o modelo abaixo pode controlar em que pastas é que os ficheiros " -"são guardados e que nomes é que lhe são dados. Pode usar o caractere / para " -"indicar sub-pastas. As variáveis para os metadados disponíveis são descritas " -"abaixo. Se um livro em particular não tem alguns metadados então a variável " -"vai ser substituida por uma expressão vazia." - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:114 -msgid "Available variables:" -msgstr "Variáveis disponíveis:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:115 msgid "Replace space with &underscores" msgstr "Substituir espaços por &underscores" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:115 msgid "Change paths to &lowercase" msgstr "Alterar os caminhos para &minúsculas" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:116 msgid "&Saving books" msgstr "A &guardar os livros" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:493 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:368 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:117 +msgid "" +"Here you can control how calibre will save your books when you click the " +"Send to Device button. This setting can be overriden for individual devices " +"by customizing the device interface plugins in Preferences->Plugins" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:118 +msgid "Sending to &device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:366 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 msgid "Preferences" msgstr "Preferências" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:494 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 msgid "" "&Location of ebooks (The ebooks are stored in folders sorted by author and " "metadata is stored in the file metadata.db)" @@ -4300,23 +4501,27 @@ msgstr "" "&Localização dos livros (Os livros estão armazenados em pastas, ordenados " "por autor e os metadados estão armazenados no ficheiro metadata.db)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:495 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 msgid "Browse for the new database location" msgstr "Navegar para a nova localização da base de dados" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:497 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 msgid "Show notification when &new version is available" msgstr "Mostrar uma ¬ificação quando estiver disponível uma nova versão" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:498 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 msgid "Download &social metadata (tags/ratings/etc.) by default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:499 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 +msgid "&Overwrite author and title by default when fetching metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 msgid "Default network &timeout:" msgstr "Predefinição do &tempo de espera da rede:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:500 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 msgid "" "Set the default timeout for network fetches (i.e. anytime we go out to the " "internet to get information)" @@ -4324,145 +4529,153 @@ msgstr "" "Definir a predefinição para o tempo de espera para a recolha de dados na " "rede (i.e. sempre que se vai à internet buscar informação)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 msgid " seconds" msgstr " segundos" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 msgid "Choose &language (requires restart):" msgstr "Lin&guagem (precisa de reiniciar):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:503 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 msgid "Normal" msgstr "Normal" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 msgid "High" msgstr "Alta" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 msgid "Low" msgstr "Baixa" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 msgid "Job &priority:" msgstr "&Prioridade do processo:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 msgid "Preferred &output format:" msgstr "Formato de &destino preferido:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 msgid "Preferred &input format order:" msgstr "Ordem dos formatos preferidos como &origem:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 msgid "Use &Roman numerals for series number" msgstr "Usar números &romanos para o número da série" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 msgid "Enable system &tray icon (needs restart)" msgstr "Activar o &ícone na área de notificação (precisa de reiniciar)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 msgid "Show ¬ifications in system tray" msgstr "Mostrar ¬ificações na área de notificação" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 msgid "Show cover &browser in a separate window (needs restart)" msgstr "" "&Mostrar o navegador de capas numa janela separada (precisa de reiniciar)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 msgid "Search as you type" msgstr "Procurar à medida que escreve" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 msgid "Automatically send downloaded &news to ebook reader" msgstr "&Enviar automaticamente as notícias descarregadas para o leitor" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 msgid "&Delete news from library when it is automatically sent to reader" msgstr "" "&Apagar as notícias da biblioteca quando são enviadas automaticamente para o " "leitor" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 msgid "&Number of covers to show in browse mode (needs restart):" msgstr "" "Número de &capas a mostrar no modo de navegação (precisa de reiniciar):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 msgid "Toolbar" msgstr "Barra de ferramentas" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 msgid "Large" msgstr "Grande" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 msgid "Medium" msgstr "Médio" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 msgid "Small" msgstr "Pequeno" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 msgid "&Button size in toolbar" msgstr "Tamanho dos &botões da barra de ferramentas" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 msgid "Show &text in toolbar buttons" msgstr "Mostar &texto nos botões da barra de ferramentas" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 msgid "Select visible &columns in library view" msgstr "&Seleccionar as colunas visíveis na vista da biblioteca" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 msgid "Use internal &viewer for:" msgstr "Usar o &Visualizador interno para:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 msgid "Add an email address to which to send books" msgstr "Adicional um endereço de email para onde enviar os livros" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 msgid "&Add email" msgstr "&Adicionar email" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 msgid "Make &default" msgstr "Tor&nar predefinido" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 msgid "&Remove email" msgstr "&Remover email" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 msgid "calibre can send your books to you (or your reader) by email" msgstr "" "O calibre pode enviar os seu livros para si (ou para o seu leitor) por email" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 msgid "&Maximum number of waiting worker processes (needs restart):" msgstr "" "Número &máximo de processos de trabalho em espera (precisa de reiniciar):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 msgid "&Check database integrity" msgstr "&Verificar a integridade da base de dados" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 msgid "&Install command line tools" msgstr "&Instalar ferramentas da linha de comandos" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549 msgid "Open calibre &configuration directory" msgstr "Abir a pasta de &configuração do calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 +msgid "Limit the max. simultaneous jobs to the available CPU &cores" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 +msgid "Debug &device detection" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 msgid "" "calibre contains a network server that allows you to access your book " "collection using a browser from anywhere in the world. Any changes to the " @@ -4473,25 +4686,25 @@ msgstr "" "Quaisquer alterações nas definições só terão efeito depois do servidor ser " "reiniciado." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553 msgid "Server &port:" msgstr "P&orta do servidor:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117 msgid "&Username:" msgstr "&Utilizador:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119 msgid "&Password:" msgstr "Pala&vra-passe:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 msgid "" "If you leave the password blank, anyone will be able to access your book " "collection using the web interface." @@ -4499,7 +4712,7 @@ msgstr "" "Se deixar a palavra-passe em branco qualque pessoa poderá aceder à sua " "colecção de livros usando a interface de rede." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " @@ -4507,41 +4720,41 @@ msgstr "" "O tamanho máximo (larguraxaltura) para as capas apresentadas. Capas maiores " "são redimensionadas. " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558 msgid "Max. &cover size:" msgstr "Tam. máx. da &capa:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212 msgid "&Show password" msgstr "&Mostrar a palavra-passe" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560 msgid "Max. &OPDS items per query:" msgstr "Max. items &OPDS por pesquisa:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561 msgid "&Start Server" msgstr "&Iniciar o Servidor" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:562 msgid "St&op Server" msgstr "Pa&rar o Servidor" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:563 msgid "&Test Server" msgstr "&Testar o Servidor" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:564 msgid "Run server &automatically on startup" msgstr "Executar o servidor &automaticamente no arranque" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:565 msgid "View &server logs" msgstr "Ver o registo do &servidor" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:566 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46 msgid "" "

Remember to leave calibre running as the server only runs as long as " @@ -4558,7 +4771,7 @@ msgstr "" "Stanza no seu iPhone. Aqui myhostname deve ser o domínio ou o endereço IP do " "computador onde o calibre está a executar." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:568 msgid "" "Here you can customize the behavior of Calibre by controlling what plugins " "it uses." @@ -4566,30 +4779,72 @@ msgstr "" "Aqui pode personalizar o comportamento do calibre controlando quais os " "extras que este utiliza." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:569 msgid "Enable/&Disable plugin" msgstr "Activar/&Desactivar o extra" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:570 msgid "&Customize plugin" msgstr "&Personalizar o extra" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:571 msgid "&Remove plugin" msgstr "&Remover o extra" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:572 msgid "Add new plugin" msgstr "Adicionar novo extra" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:573 msgid "Plugin &file:" msgstr "&Ficheiro com o extra:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:575 msgid "&Add" msgstr "&Adicionar" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/device_debug.py:21 +msgid "Getting debug information" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/device_debug.py:22 +msgid "Copy to &clipboard" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/device_debug.py:24 +msgid "Debug device detection" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template.py:44 +msgid "Invalid template" +msgstr "Modelo inválido" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template.py:45 +msgid "The template %s is invalid:" +msgstr "O modelo %s é inválido:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template_ui.py:42 +msgid "Save &template" +msgstr "Guardar o &modelo" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template_ui.py:43 +msgid "" +"By adjusting the template below, you can control what folders the files are " +"saved in and what filenames they are given. You can use the / character to " +"indicate sub-folders. Available metadata variables are described below. If a " +"particular book does not have some metadata, the variable will be replaced " +"by the empty string." +msgstr "" +"Ao ajustar o modelo abaixo pode controlar em que pastas é que os ficheiros " +"são guardados e que nomes é que lhe são dados. Pode usar o caractere / para " +"indicar sub-pastas. As variáveis para os metadados disponíveis são descritas " +"abaixo. Se um livro em particular não tem alguns metadados então a variável " +"vai ser substituida por uma expressão vazia." + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template_ui.py:44 +msgid "Available variables:" +msgstr "Variáveis disponíveis:" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/social.py:34 msgid "Downloading social metadata, please wait..." msgstr "" @@ -4614,42 +4869,42 @@ msgstr "Ordenação do(s) Autor(es)" msgid "ISBN" msgstr "ISBN" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:151 msgid "Finding metadata..." msgstr "A encontrar os metadados..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:164 msgid "Could not find metadata" msgstr "É impossível encontrar os metadados" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:165 msgid "The metadata download seems to have stalled. Try again later." msgstr "O descarregamento dos metadados parece ter parado. Tente mais tarde." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:174 msgid "Warning" msgstr "Aviso" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:175 msgid "Could not fetch metadata from:" msgstr "É impossível encontrar os metadados de:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:179 msgid "No metadata found" msgstr "Não foram encontrados metadados" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:180 msgid "" "No metadata found, try adjusting the title and author or the ISBN key." msgstr "" "Não foram encontrados metadados, experimente ajustar o título e o autor ou a " "chave ISBN." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:84 msgid "Fetch metadata" msgstr "Recolher os metadados" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85 msgid "" "

calibre can find metadata for your books from two locations: Google " "Books and isbndb.com.

To use isbndb.com you must sign up for a " @@ -4661,27 +4916,31 @@ msgstr "" "isbndb.com deve registar-se para uma conta " "grátis e introduzir a sua chave de acesso abaixo." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:86 msgid "&Access Key:" msgstr "Chave de &Acesso:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87 msgid "Fetch" msgstr "Recolher" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:88 msgid "Matches" msgstr "Correspondências" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:89 msgid "" "Select the book that most closely matches your copy from the list below" msgstr "Seleccionar o livro que é mais parecido com o seu da lista abaixo" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:90 msgid "Download &social metadata (tags/rating/etc.) for the selected book" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:91 +msgid "Overwrite author and title with author and title of selected book" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/job_view_ui.py:37 msgid "Details of job" msgstr "Detalhes do processo" @@ -4702,25 +4961,25 @@ msgstr "Mostrar os &detalhes do processo" msgid "Stop &all jobs" msgstr "P&arar todos os processos" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:138 msgid "Edit Meta information" msgstr "Editar os metadados" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:134 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:353 msgid "Meta information" msgstr "Metadados" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:141 msgid "A&utomatically set author sort" msgstr "Definir a&utomaticamente a ordenação do(s) autor(es)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:142 msgid "Author s&ort: " msgstr "&Ordenação de autor: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:138 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360 msgid "" "Specify how the author(s) of this book should be sorted. For example Charles " "Dickens should be sorted as Dickens, Charles." @@ -4728,226 +4987,243 @@ msgstr "" "Especificar como é que o(s) autor(es) deste livro deve(m) ser ordenado(s). " "Por exemplo: Charles Dickens deve ser ordenado como Dickens, Charles." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:139 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:363 msgid "&Rating:" msgstr "A&valiação:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:140 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:141 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:365 msgid "Rating of this book. 0-5 stars" msgstr "Avaliação deste livro. 0-5 estrelas" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:142 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:365 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:147 +msgid "No change" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:366 msgid " stars" msgstr " estrelas" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:150 msgid "Add ta&gs: " msgstr "Adicionar eti&quetas: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:146 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:147 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:369 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:370 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371 msgid "Open Tag Editor" msgstr "Abrir o Editor de Etiquetas" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:154 msgid "&Remove tags:" msgstr "&Remover etiquetas:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:155 msgid "Comma separated list of tags to remove from the books. " msgstr "Lista de etiquetas separadas por vírgulas a remover dos livros. " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:159 msgid "Remove &format:" msgstr "Remover &formatos:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:160 +msgid "&Swap title and author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:123 msgid "Not a valid picture" msgstr "Não é uma imagem válida" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:136 msgid "Choose formats for " msgstr "Escolher formatos para " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:136 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:912 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1005 msgid "Books" msgstr "Livros" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:165 msgid "No permission" msgstr "Não tem permissão" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:166 msgid "You do not have permission to read the following files:" msgstr "Não tem permissão para ler os seguintes ficheiros:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:190 msgid "No format selected" msgstr "Nenhum formato seleccionado" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:201 msgid "Could not read metadata" msgstr "É impossível ler os metadados" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:202 msgid "Could not read metadata from %s format" msgstr "É impossível ler os metadados do formato %s" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:244 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:250 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:247 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:253 msgid "Could not read cover" msgstr "É impossível ler a capa" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:248 msgid "Could not read cover from %s format" msgstr "É impossível ler a capa do formato %s." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:254 msgid "The cover in the %s format is invalid" msgstr "A capa do formato %s é inválida" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:291 msgid "Abort the editing of all remaining books" msgstr "Cancelar a edição de todos os restantes livros" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:491 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:408 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:413 +msgid "This ISBN number is valid" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:416 +msgid "This ISBN number is invalid" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:512 msgid "Downloading cover..." msgstr "A descarregar a capa..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:503 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:508 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:514 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:535 msgid "Cannot fetch cover" msgstr "É impossível recolher a capa" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:504 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:525 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:536 msgid "Could not fetch cover.
" msgstr "É impossível recolher a capa.
" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:505 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:526 msgid "The download timed out." msgstr "O descarregamento está a demorar demasiado tempo." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:530 msgid "Could not find cover for this book. Try specifying the ISBN first." msgstr "" "É impossível encontrar a capa para este livro. Tente especificar o ISBN " "primeiro." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:542 msgid "Bad cover" msgstr "Capa com erros" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:543 msgid "The cover is not a valid picture" msgstr "A capa não é uma imagem válida" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:573 msgid "There were errors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:574 msgid "There were errors downloading social metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:575 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:604 msgid "Cannot fetch metadata" msgstr "É impossível recolher os metadados" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:576 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:605 msgid "You must specify at least one of ISBN, Title, Authors or Publisher" msgstr "Deve especificar pelo menos um de ISBN, Título, Autores ou Editora" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:628 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:675 msgid "Permission denied" msgstr "Permissão negada" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:629 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:676 msgid "Could not open %s. Is it being used by another program?" msgstr "É impossível abrir %s. Está a ser usado por outro programa?" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:352 msgid "Edit Meta Information" msgstr "Editar os metadados" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:356 msgid "Swap the author and title" msgstr "Trocar o autor e o título" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:359 msgid "Author S&ort: " msgstr "&Ordenação do(s) Autor(es): " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:361 msgid "" "Automatically create the author sort entry based on the current author entry" msgstr "" "Criar automaticamente a ordenação do(s) autor(es) baseada na entrada actual" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375 msgid "Remove unused series (Series that have no books)" msgstr "Remover as séries não usadas (Séries que não têm livros)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:377 msgid "IS&BN:" msgstr "IS&BN:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:377 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:378 msgid "Publishe&d:" msgstr "Edita&do:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:380 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:381 msgid "dd MMM yyyy" msgstr "dd MMM aaaa" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:381 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:382 msgid "&Date:" msgstr "&Data:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:383 msgid "&Comments" msgstr "&Comentários" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:383 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:384 msgid "&Fetch metadata from server" msgstr "&Recolher os metadados do servidor" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:385 msgid "Available Formats" msgstr "Formatos disponíveis" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:386 msgid "Add a new format for this book to the database" msgstr "Adicionar um novo formato para este livro à base de dados" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:387 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:388 msgid "Remove the selected formats for this book from the database." msgstr "Remover os formatos seleccionados deste livro da base de dados" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:390 msgid "Set the cover for the book from the selected format" msgstr "Definir a capa para o livro a partir do formato seleccionado" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:391 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:392 msgid "Update metadata from the metadata in the selected format" msgstr "" "Actualizar os metadados a partir dos metadados do formato seleccionado" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:396 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:397 msgid "Reset cover to default" msgstr "Reiniciar a capa para a predefinida" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:398 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:399 msgid "Download &cover" msgstr "Descarregar a &capa" @@ -5130,47 +5406,70 @@ msgstr "" msgid "Negate" msgstr "Negar" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:113 msgid "Advanced Search" msgstr "Procura Avançada" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:114 msgid "Find entries that have..." msgstr "Encontrar as entradas que têm..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:115 msgid "&All these words:" msgstr "&Todas estas palavras:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:116 msgid "This exact &phrase:" msgstr "Esta &frase exacta:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:117 msgid "&One or more of these words:" msgstr "&Uma ou mais destas palavras:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:118 msgid "But dont show entries that have..." msgstr "Mas não mostrar as entradas que têm..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:119 msgid "Any of these &unwanted words:" msgstr "Alguma destas palavras &indesejadas:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:95 -msgid "" -"See the User Manual for more help" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:120 +msgid "What kind of match to use:" msgstr "" -"Ver o Manual do Utilizador para mais ajuda" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:121 +msgid "Contains: the word or phrase matches anywhere in the metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:122 +msgid "Equals: the word or phrase must match an entire metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:123 +msgid "" +"Regular expression: the expression must match anywhere in the metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:124 +msgid " " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:125 +msgid "" +"See the User Manual for more help" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/select_formats.py:45 +msgid "Choose formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:66 msgid "Are your sure?" msgstr "Tem a certeza?" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:67 msgid "" "The following tags are used by one or more books. Are you certain you want " "to delete them?" @@ -5232,7 +5531,7 @@ msgid "Send test mail from %s to:" msgstr "Enviar um email de teste de %s para:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:115 msgid "&Test" msgstr "&Teste" @@ -5429,7 +5728,7 @@ msgstr "" msgid "Recipe source code (python)" msgstr "Código fonte da receita (python)" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:107 msgid "" "\n" @@ -5474,98 +5773,98 @@ msgstr "" "regular em alguns exemplos de nomes de ficheiros. Os nomes para os vários " "grupos de metadados estão documentados em tooltips.

" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:114 msgid "Regular &expression" msgstr "&Expressão regular" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:116 msgid "File &name:" msgstr "&Nome do ficheiro:" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:117 msgid "Test" msgstr "Teste" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:118 msgid "Title:" msgstr "Título:" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:119 msgid "Regular expression (?P<title>)" msgstr "Expressão regular (?P<title>)" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:110 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:113 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:119 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:80 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:92 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:94 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:96 msgid "No match" msgstr "Nenhuma correspondência" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:121 msgid "Authors:" msgstr "Autor(es):" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:122 msgid "Regular expression (?P)" msgstr "Expressão regular (?P)" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:124 msgid "Series:" msgstr "Série:" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:125 msgid "Regular expression (?P)" msgstr "Expressão regular (?P)" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:127 msgid "Series index:" msgstr "Índice da série:" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:128 msgid "Regular expression (?P)" msgstr "Expressão regular (?P)" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:130 msgid "ISBN:" msgstr "ISBN:" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:131 msgid "Regular expression (?P)" msgstr "Expressão regular (?P)" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:53 msgid "Job" msgstr "Processo" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:54 msgid "Status" msgstr "Estado" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:55 msgid "Progress" msgstr "Progresso" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:56 msgid "Running time" msgstr "Tempo de execução" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:68 msgid "There are %d running jobs:" msgstr "Existem %d processos a executar:" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:71 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:78 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:94 msgid "Unknown job" msgstr "Processo desconhecido" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:75 msgid "There are %d waiting jobs:" msgstr "Existem %d processos à espera:" @@ -5590,36 +5889,39 @@ msgstr "Indisponível" msgid " - Jobs" msgstr " - Processos" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1070 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1146 msgid "Size (MB)" msgstr "Tamanho (MB)" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:161 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1071 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1147 msgid "Date" msgstr "Data" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:172 msgid "Rating" msgstr "Avaliação" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:337 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:343 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:348 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:408 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:440 msgid "None" msgstr "Nenhum" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:369 msgid "Book %s of %s." msgstr "Livro %s de %s." -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:834 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:882 msgid "Not allowed" msgstr "Não permitido" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:835 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:883 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -5627,11 +5929,11 @@ msgstr "" "Arrastar para o aparelho não é suportado. Primeiro adicionar o livro à " "biblioteca do calibre." -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1006 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1082 msgid "Format" msgstr "Formato" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1060 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1136 msgid "Double click to edit me

" msgstr "Duplo clique para me editar

" @@ -5651,18 +5953,18 @@ msgstr "Translinear" msgid "Changes will only take effect after a restart." msgstr "As alterações só terão efeito depois de reiniciar." -#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:70 msgid " - LRF Viewer" msgstr " - Visualizador de ficheiros LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 msgid "No matches for the search phrase %s were found." msgstr "" "Não foram encontradas correspondências para a frase procurada " "%s ." -#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:157 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:421 +#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:433 msgid "No matches found" msgstr "Não foram encontradas correspondências" @@ -5687,12 +5989,12 @@ msgid "Previous Page" msgstr "Página Anterior" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:182 msgid "Back" msgstr "Para trás" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:134 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:183 msgid "Forward" msgstr "Para a frente" @@ -5701,7 +6003,7 @@ msgid "Next match" msgstr "Correspondência seguinte" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:136 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:190 msgid "Open ebook" msgstr "Abrir um livro" @@ -5709,67 +6011,425 @@ msgstr "Abrir um livro" msgid "Configure" msgstr "Configurar" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:25 +msgid "Use the library located at the specified path." +msgstr "Usar a biblioteca localizada no caminho especificado." + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:27 +msgid "Start minimized to system tray." +msgstr "Iniciar minimizado na área de notificação." + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:29 +msgid "Log debugging information to console" +msgstr "Registar a informação de depuração na consola" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:31 +msgid "Do not check for updates" +msgstr "Não verificar por actualizações" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:83 +msgid "If you are sure it is not running" +msgstr "Se tem a certeza que não está a executar" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:85 +msgid "Cannot Start " +msgstr "É impossível começar " + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:86 +msgid "%s is already running." +msgstr "%s já está a executar." + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:89 +msgid "may be running in the system tray, in the" +msgstr "pode estar a executar na área de notificação, no" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:91 +msgid "upper right region of the screen." +msgstr "canto superior direito do écran" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:93 +msgid "lower right region of the screen." +msgstr "canto inferior direito do écran" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:96 +msgid "try rebooting your computer." +msgstr "tente reiniciar o seu computador" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:110 +msgid "try deleting the file" +msgstr "tente apagar o ficheiro" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:331 +msgid "calibre" +msgstr "calibre" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:333 +msgid "Advanced search" +msgstr "Procura Avançada" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:335 +msgid "Alt+S" +msgstr "Alt+S" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:336 +msgid "&Search:" +msgstr "&Procura:" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:337 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:338 +msgid "" +"

Search the list of books by title, author, publisher, tags, comments, " +"etc.

Words separated by spaces are ANDed" +msgstr "" +"

Procurar a lista de livros por título, autor, editora, etiquetas, " +"comentários, etc.

Nas palavras separadas por espaços os espaços são " +"substituidos por AND" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:339 +msgid "Reset Quick Search" +msgstr "Reiniciar a Procura Rápida" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:341 +msgid "Sort by &popularity" +msgstr "Ordenar por &popularidade" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:342 +msgid "Match any" +msgstr "Corresponder algum" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:343 +msgid "Match all" +msgstr "Corresponder todos" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:344 +msgid "Add books" +msgstr "Adicionar livros" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:345 +msgid "A" +msgstr "A" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:346 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:347 +msgid "Remove books" +msgstr "Remover livros" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:348 +msgid "Del" +msgstr "Apagar" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:349 +msgid "Edit meta information" +msgstr "Editar metadados" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:350 +msgid "E" +msgstr "E" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:351 +msgid "Send to device" +msgstr "Enviar para o aparelho" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:304 +msgid "Save to disk" +msgstr "Guardar no disco" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:353 +msgid "S" +msgstr "S" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:354 +msgid "Fetch news" +msgstr "Recolher notícias" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:355 +msgid "F" +msgstr "F" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:356 +msgid "Convert E-books" +msgstr "Converter livros" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:357 +msgid "C" +msgstr "C" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:314 +msgid "View" +msgstr "Ver" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:359 +msgid "V" +msgstr "V" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:360 +msgid "Open containing folder" +msgstr "Abrir a pasta com o conteúdo" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:361 +msgid "Show book details" +msgstr "Mostrar os detalhes do livro" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:362 +msgid "Books by same author" +msgstr "Livros do mesmo autor" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:363 +msgid "Books in this series" +msgstr "Livros nesta série" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:364 +msgid "Books by this publisher" +msgstr "Livros da mesma editora" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:365 +msgid "Books with the same tags" +msgstr "Livros com as mesmas etiquetas" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:367 +msgid "Configure calibre" +msgstr "Configurar o calibre" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:368 +msgid "Ctrl+P" +msgstr "Ctrl+P" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_window.py:20 +msgid "" +"Redirect console output to a dialog window (both stdout and stderr). Useful " +"on windows where GUI apps do not have a output streams." +msgstr "" +"Redireccionar os resultados da consola para uma janela de diálogo (tanto " +"stdout como stderr). Útil no Windows onde as aplicações GUI não têm fluxos " +"de resultado." + +#: /home/kovid/work/calibre/src/calibre/gui2/main_window.py:59 +msgid "&Preferences" +msgstr "&Preferências" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_window.py:60 +msgid "&Quit" +msgstr "&Sair" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_window.py:85 +msgid "ERROR: Unhandled exception" +msgstr "ERRO: Excepção não tratada" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:89 +msgid "Book has neither title nor ISBN" +msgstr "O livro não tem nem título nem ISBN" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:115 +msgid "No matches found for this book" +msgstr "Nenhuma correspondência encontrada para este livro" + +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:71 +msgid "Search" +msgstr "Procurar" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:58 +msgid "Press a key..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:79 +msgid "Already assigned" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:81 +msgid "already assigned to" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 +msgid " or " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:68 +msgid "&Default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:135 +msgid "Customize shortcuts for" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 +msgid "Keys" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:225 +msgid "Double click to change" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:67 +msgid "Frame" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:69 +msgid "&Custom" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:70 +msgid "&Shortcut:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:76 +msgid "Click to change" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:78 +msgid "Clear" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:75 +msgid "&Alternate shortcut:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:149 +msgid "Jobs:" +msgstr "Processos:" + +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:158 +msgid "Click to see list of active jobs." +msgstr "Clique para ver a lista dos processos activos." + +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:196 +msgid "Click to browse books by their covers" +msgstr "Clique para navegar os livros pelas capas" + +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:196 +msgid "Click to turn off Cover Browsing" +msgstr "Clique para desligar a navegação pelas capas" + +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:201 +msgid "" +"

Browsing books by their covers is disabled.
Import of pictureflow " +"module failed:
" +msgstr "" +"

Navegar os livros pelas capas está desactivado.
A importação do módulo " +"pictureflow falhou:
" + +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:209 +msgid "Click to browse books by tags" +msgstr "Clique para navegar os livros pelas etiquetas" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 +msgid "Authors" +msgstr "Autor(es)" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 +msgid "Publishers" +msgstr "Editoras" + +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:182 +msgid "Convert book %d of %d (%s)" +msgstr "Converter o livro %d de %d (%s)" + +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:202 +msgid "Could not convert some books" +msgstr "É impossível converter alguns livros" + +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:203 +msgid "" +"Could not convert %d of %d books, because no suitable source format was " +"found." +msgstr "" +"É impossível converter %d de %d livros, porque não foi encontrado um formato " +"fonte adequado." + +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:120 +msgid "Queueing books for bulk conversion" +msgstr "A criar a fila de espera dos livros para conversão a granel" + +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:181 +msgid "Queueing " +msgstr "A criar a fila de espera " + +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:237 +msgid "Fetch news from " +msgstr "Recolher as notícias de " + +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:276 +msgid "Convert existing" +msgstr "Converter existentes" + +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:277 +msgid "" +"The following books have already been converted to %s format. Do you wish to " +"reconvert them?" +msgstr "" +"Os seguintes livros já foram convertidos para o formato %s. Deseja voltar a " +"convertê-los?" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:63 msgid "Save single format to disk..." msgstr "Guardar só um formato no disco..." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:142 msgid "Search (For Advanced Search click the button to the left)" msgstr "Procura (Para a Procura Avançada clique no botão da esquerda)" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:159 msgid "Error communicating with device" msgstr "Erro ao comunicar com o aparelho" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:176 msgid "&Restore" msgstr "&Restaurar" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:178 msgid "&Donate to support calibre" msgstr "&Faça um donativo para ajudar o calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:183 msgid "&Restart" msgstr "&Reiniciar" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:216 -msgid "" -"

For help visit %s.kovidgoyal.net
" +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:222 +msgid "

For help see the: User Manual
" msgstr "" -"

Para ajuda visite %s.kovidgoyal.net
" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:224 msgid "%s: %s by Kovid Goyal %%(version)s
%%(device)s

" msgstr "%s: %s por Kovid Goyal %%(version)s
%%(device)s

" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:247 msgid "Edit metadata individually" msgstr "Editar os metadados individualmente" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:244 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:249 msgid "Edit metadata in bulk" msgstr "Editar os metadados a granel" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:246 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:251 msgid "Download metadata and covers" msgstr "Descarregar os metadados e as capas" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:247 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:252 msgid "Download only metadata" msgstr "Descarregar só os metadados" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:253 msgid "Download only covers" msgstr "Descarregar só as capas" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:254 +msgid "Download only social metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:257 msgid "Add books from a single directory" msgstr "Adicionar os livros a partir de uma pasta" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:252 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:258 msgid "" "Add books from directories, including sub-directories (One book per " "directory, assumes every ebook file is the same book in a different format)" @@ -5778,7 +6438,7 @@ msgstr "" "pasta, assume que todos os ficheiros de livros na mesma pasta estão em " "formatos diferentes)" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:255 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:261 msgid "" "Add books from directories, including sub directories (Multiple books per " "directory, assumes every ebook file is a different book)" @@ -5787,85 +6447,99 @@ msgstr "" "livros por pasta, assume que todos os ficheiros de livros são livros " "diferentes)" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:258 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:264 msgid "Add Empty book. (Book entry with no formats)" msgstr "Adicionar um livro vazio (Uma entrada de livro sem nenhum formato)" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:295 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:354 -msgid "Save to disk" -msgstr "Guardar no disco" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:296 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:305 msgid "Save to disk in a single directory" msgstr "Guardar no disco numa única pasta" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:297 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1502 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1750 msgid "Save only %s format to disk" msgstr "Guardar só o formato %s no disco" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:305 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:360 -msgid "View" -msgstr "Ver" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:315 msgid "View specific format" msgstr "Ver o formato específico" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:332 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:319 +msgid "Remove selected books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:321 +msgid "Remove files of a specific format from selected books.." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:323 +msgid "Remove all formats from selected books, except..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:325 +msgid "Remove covers from selected books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:357 msgid "Convert individually" msgstr "Converter individualmente" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:333 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:358 msgid "Bulk convert" msgstr "Converter a granel" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:361 +msgid "Create catalog of books in your calibre library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:377 msgid "Run welcome wizard" msgstr "Executar o assistente de boas vindas" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:413 msgid "Similar books..." msgstr "Livros semelhantes..." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:442 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:473 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:474 msgid "Bad database location" msgstr "Localização da base de dados com erros" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:445 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:476 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:558 msgid "Calibre Library" msgstr "Biblioteca do calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:455 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1645 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:486 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1906 msgid "Choose a location for your ebook library." msgstr "Escolher a localização para a sua biblioteca de livros" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:647 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:524 +msgid "Calibre Quick Start Guide" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:704 msgid "Browse by covers" msgstr "Navegar pelas capas" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:764 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:852 msgid "Device: " msgstr "Aparelho: " -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:766 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:854 msgid " detected." msgstr " detectado." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:789 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:878 msgid "Connected " msgstr "Ligado " -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:801 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:890 msgid "Device database corrupted" msgstr "Base de dados do aparelho corrompida" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:802 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:891 msgid "" "\n" "

The database of books on the reader is corrupted. Try the " @@ -5893,56 +6567,86 @@ msgstr "" " \n" " " -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:904 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:947 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:953 +msgid "How many empty books?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:954 +msgid "How many empty books should be added?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:998 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1044 msgid "Uploading books to device." msgstr "A carregar os livros para o aparelho." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:913 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1006 msgid "EPUB Books" msgstr "Livros em formato EPUB" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:914 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1007 msgid "LRF Books" msgstr "Livros em formato LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:915 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1008 msgid "HTML Books" msgstr "Livros em formato HTML" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1009 msgid "LIT Books" msgstr "Livros em formato LIT" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:917 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1010 msgid "MOBI Books" msgstr "Livros em formato MOBI" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:918 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1011 msgid "Text books" msgstr "Livros em formato texto" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:919 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1012 msgid "PDF Books" msgstr "Livros em formato PDF" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:920 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1013 msgid "Comics" msgstr "Banda desenhada" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:921 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1014 msgid "Archives" msgstr "Arquivos" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:956 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1018 +msgid "Supported books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1055 msgid "Failed to read metadata" msgstr "Falha ao ler os metadados" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:957 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1056 msgid "Failed to read metadata from the following" msgstr "Falha ao ler os metadados do(s) seguinte(s)" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:976 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1075 +msgid "Cannot delete" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1078 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1639 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1655 +msgid "No book selected" +msgstr "Nenhum livro seleccionado" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1088 +msgid "Choose formats to be deleted" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1106 +msgid "Choose formats not to be deleted" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1144 msgid "" "The selected books will be permanently deleted and the files removed " "from your computer. Are you sure?" @@ -5950,111 +6654,137 @@ msgstr "" "Os livros seleccionados vão ser permanentemente apagados e os " "ficheiros removidos do seu computador. Tem a certeza?" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1003 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1171 msgid "Deleting books from device." msgstr "A apagar livros do aparelho." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1034 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1202 msgid "Cannot download metadata" msgstr "É impossível descarregar os metadados" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1035 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1085 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1118 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1143 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1255 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1203 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1260 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1293 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1318 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1377 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1495 msgid "No books selected" msgstr "Nenhuns livros seleccionados" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1045 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1218 +msgid "social metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1220 msgid "covers" msgstr "capas" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1045 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1220 msgid "metadata" msgstr "metadados" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1047 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1222 msgid "Downloading %s for %d book(s)" msgstr "Descarregar %s para %d livro(s)" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1069 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1244 msgid "Failed to download some metadata" msgstr "Falha ao descarregar alguns metadados" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1070 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1245 msgid "Failed to download metadata for the following:" msgstr "Falha ao descarregar os metadados para os seguintes:" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1073 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1248 msgid "Failed to download metadata:" msgstr "Falha ao descarregar os metadados:" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1084 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1117 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1259 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1292 msgid "Cannot edit metadata" msgstr "É impossível editar os metadados" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1142 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1317 msgid "Cannot save to disk" msgstr "É impossível guardar no disco" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1145 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1320 msgid "Choose destination directory" msgstr "Escolher a pasta de destino" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1172 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1347 msgid "Error while saving" msgstr "Erro ao guardar" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1173 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1348 msgid "There was an error while saving." msgstr "Houve um erro ao guardar." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1180 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1181 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1355 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1356 msgid "Could not save some books" msgstr "É impossível guardar alguns livros" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1182 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1357 msgid "Click the show details button to see which ones." msgstr "Clique no botão ver detalhes para ver quais." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1201 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1378 +msgid "No books selected to generate catalog for" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1395 +msgid "Generating %s catalog..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1401 +msgid "" +"No books to catalog\n" +"Check exclude tags" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1411 +msgid "Catalog generated." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1414 +msgid "Export Catalog Directory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1415 +msgid "Select destination for %s.%s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1429 msgid "Fetching news from " msgstr "Recolher notícias de " -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1214 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1443 msgid " fetched." msgstr " recolhida." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1254 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1494 msgid "Cannot convert" msgstr "É impossível converter" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1283 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1523 msgid "Starting conversion of %d book(s)" msgstr "Iniciar a conversão de %d livro(s)" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1394 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1413 -msgid "No book selected" -msgstr "Nenhum livro seleccionado" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1394 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1444 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1639 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1692 msgid "Cannot view" msgstr "É impossível ver" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1412 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1654 msgid "Cannot open folder" msgstr "É impossível abrir a pasta" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1429 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1676 msgid "Multiple Books Selected" msgstr "Múltiplos livros seleccionados" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1430 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1677 msgid "" "You are attempting to open %d books. Opening too many books at once can be " "slow and have a negative effect on the responsiveness of your computer. Once " @@ -6065,31 +6795,31 @@ msgstr "" "e ter um efeito negativo na reacção do seu computador. Uma vez começado o " "processo não pode ser parado até estar completo. Deseja continuar?" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1445 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1693 msgid "%s has no available formats." msgstr "%s não tem formatos disponíveis." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1486 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1734 msgid "Cannot configure" msgstr "É impossível configurar" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1487 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1735 msgid "Cannot configure while there are running jobs." msgstr "É impossível configurar enquanto estiverem processos a executar." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1530 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1778 msgid "No detailed info available" msgstr "Nenhuma informação detalhada disponível" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1531 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1779 msgid "No detailed information is available for books on the device." msgstr "Nenhuma informação detalhada disponível para os livros no aparelho." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1583 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1834 msgid "Error talking to device" msgstr "Erro ao comunicar com o aparelho" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1584 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1835 msgid "" "There was a temporary error talking to the device. Please unplug and " "reconnect the device and or reboot." @@ -6097,12 +6827,12 @@ msgstr "" "Houve um erro temporário ao comunicar com o aparelho. Por favor desligue e " "volte a ligar o aparelho ou reinicie." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1607 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1625 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1858 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1886 msgid "Conversion Error" msgstr "Erro de conversão" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1608 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1859 msgid "" "

Could not convert: %s

It is a DRMed book. You must " "first remove the DRM using third party tools." @@ -6111,19 +6841,23 @@ msgstr "" "(Digital Rights Management). Primeiro deve remover o DRM usando " "ferramentas de terceiros." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1626 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1872 +msgid "Recipe Disabled" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1887 msgid "Failed" msgstr "Falha" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1654 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1915 msgid "Invalid library location" msgstr "Localização da biblioteca inválida" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1655 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1916 msgid "Could not access %s. Using %s as the library." msgstr "É impossível aceder a %s. A usar %s como a biblioteca." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1703 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1966 msgid "" "is the result of the efforts of many volunteers from all over the world. If " "you find it useful, please consider donating to support its development." @@ -6132,11 +6866,11 @@ msgstr "" "acha útil, por favor considere fazer um donativo para ajudar no seu " "desenvolvimento." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1727 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1991 msgid "There are active jobs. Are you sure you want to quit?" msgstr "Existem processos activos. Tem a certeza que quer sair?" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1730 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1994 msgid "" " is communicating with the device!
\n" " Quitting may cause corruption on the device.
\n" @@ -6146,11 +6880,11 @@ msgstr "" " Sair pode causar corrupção no aparelho.
\n" " Tem a certeza que quer sair?" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1734 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1998 msgid "WARNING: Active jobs" msgstr "AVISO: Processos activos" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1785 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2050 msgid "" "will keep running in the system tray. To close it, choose Quit in the " "context menu of the system tray." @@ -6158,7 +6892,7 @@ msgstr "" "vai continuar a executar na área de notificação. Para fechar escolha " "Sair no menu de contexto da área de notificação." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1804 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2069 msgid "" "Latest version: %s" @@ -6166,307 +6900,15 @@ msgstr "" "Última versão: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1812 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2077 msgid "Update available" msgstr "Actualização disponível" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1813 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2078 msgid "" -"%s has been updated to version %s. See the new features. " -"Visit the download page?" +"%s has been updated to version %s. See the new features. Visit the download page?" msgstr "" -"%s foi actualizado para a versão %s. Ver as novas " -"funcionalidades. Visitar a página para descarregar?" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1831 -msgid "Use the library located at the specified path." -msgstr "Usar a biblioteca localizada no caminho especificado." - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1833 -msgid "Start minimized to system tray." -msgstr "Iniciar minimizado na área de notificação." - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1835 -msgid "Log debugging information to console" -msgstr "Registar a informação de depuração na consola" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1837 -msgid "Do not check for updates" -msgstr "Não verificar por actualizações" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1885 -msgid "If you are sure it is not running" -msgstr "Se tem a certeza que não está a executar" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1887 -msgid "Cannot Start " -msgstr "É impossível começar " - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1888 -msgid "%s is already running." -msgstr "%s já está a executar." - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1891 -msgid "may be running in the system tray, in the" -msgstr "pode estar a executar na área de notificação, no" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1893 -msgid "upper right region of the screen." -msgstr "canto superior direito do écran" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1895 -msgid "lower right region of the screen." -msgstr "canto inferior direito do écran" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1898 -msgid "try rebooting your computer." -msgstr "tente reiniciar o seu computador" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1900 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1912 -msgid "try deleting the file" -msgstr "tente apagar o ficheiro" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:333 -msgid "calibre" -msgstr "calibre" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:335 -msgid "Advanced search" -msgstr "Procura Avançada" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:337 -msgid "Alt+S" -msgstr "Alt+S" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:338 -msgid "&Search:" -msgstr "&Procura:" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:339 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:340 -msgid "" -"

Search the list of books by title, author, publisher, tags, comments, " -"etc.

Words separated by spaces are ANDed" -msgstr "" -"

Procurar a lista de livros por título, autor, editora, etiquetas, " -"comentários, etc.

Nas palavras separadas por espaços os espaços são " -"substituidos por AND" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:341 -msgid "Reset Quick Search" -msgstr "Reiniciar a Procura Rápida" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:343 -msgid "Match any" -msgstr "Corresponder algum" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:344 -msgid "Match all" -msgstr "Corresponder todos" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:345 -msgid "Sort by &popularity" -msgstr "Ordenar por &popularidade" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:346 -msgid "Add books" -msgstr "Adicionar livros" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:347 -msgid "A" -msgstr "A" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:348 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:349 -msgid "Remove books" -msgstr "Remover livros" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:350 -msgid "Del" -msgstr "Apagar" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:351 -msgid "Edit meta information" -msgstr "Editar metadados" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:352 -msgid "E" -msgstr "E" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:353 -msgid "Send to device" -msgstr "Enviar para o aparelho" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:355 -msgid "S" -msgstr "S" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:356 -msgid "Fetch news" -msgstr "Recolher notícias" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:357 -msgid "F" -msgstr "F" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:358 -msgid "Convert E-books" -msgstr "Converter livros" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:359 -msgid "C" -msgstr "C" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:361 -msgid "V" -msgstr "V" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:362 -msgid "Open containing folder" -msgstr "Abrir a pasta com o conteúdo" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:363 -msgid "Show book details" -msgstr "Mostrar os detalhes do livro" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:364 -msgid "Books by same author" -msgstr "Livros do mesmo autor" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:365 -msgid "Books in this series" -msgstr "Livros nesta série" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:366 -msgid "Books by this publisher" -msgstr "Livros da mesma editora" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:367 -msgid "Books with the same tags" -msgstr "Livros com as mesmas etiquetas" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:369 -msgid "Configure calibre" -msgstr "Configurar o calibre" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:370 -msgid "Ctrl+P" -msgstr "Ctrl+P" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_window.py:20 -msgid "" -"Redirect console output to a dialog window (both stdout and stderr). Useful " -"on windows where GUI apps do not have a output streams." -msgstr "" -"Redireccionar os resultados da consola para uma janela de diálogo (tanto " -"stdout como stderr). Útil no Windows onde as aplicações GUI não têm fluxos " -"de resultado." - -#: /home/kovid/work/calibre/src/calibre/gui2/main_window.py:59 -msgid "&Preferences" -msgstr "&Preferências" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_window.py:60 -msgid "&Quit" -msgstr "&Sair" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_window.py:85 -msgid "ERROR: Unhandled exception" -msgstr "ERRO: Excepção não tratada" - -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:87 -msgid "Book has neither title nor ISBN" -msgstr "O livro não tem nem título nem ISBN" - -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:105 -msgid "No matches found for this book" -msgstr "Nenhuma correspondência encontrada para este livro" - -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:71 -msgid "Search" -msgstr "Procurar" - -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:149 -msgid "Jobs:" -msgstr "Processos:" - -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:158 -msgid "Click to see list of active jobs." -msgstr "Clique para ver a lista dos processos activos." - -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:188 -msgid "Click to browse books by their covers" -msgstr "Clique para navegar os livros pelas capas" - -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:188 -msgid "Click to turn off Cover Browsing" -msgstr "Clique para desligar a navegação pelas capas" - -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:193 -msgid "" -"

Browsing books by their covers is disabled.
Import of pictureflow " -"module failed:
" -msgstr "" -"

Navegar os livros pelas capas está desactivado.
A importação do módulo " -"pictureflow falhou:
" - -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:201 -msgid "Click to browse books by tags" -msgstr "Clique para navegar os livros pelas etiquetas" - -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:122 -msgid "Authors" -msgstr "Autor(es)" - -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:122 -msgid "Publishers" -msgstr "Editoras" - -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:63 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:182 -msgid "Convert book %d of %d (%s)" -msgstr "Converter o livro %d de %d (%s)" - -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:90 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:202 -msgid "Could not convert some books" -msgstr "É impossível converter alguns livros" - -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:203 -msgid "" -"Could not convert %d of %d books, because no suitable source format was " -"found." -msgstr "" -"É impossível converter %d de %d livros, porque não foi encontrado um formato " -"fonte adequado." - -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:121 -msgid "Queueing books for bulk conversion" -msgstr "A criar a fila de espera dos livros para conversão a granel" - -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:181 -msgid "Queueing " -msgstr "A criar a fila de espera " - -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:237 -msgid "Fetch news from " -msgstr "Recolher as notícias de " - -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:248 -msgid "Convert existing" -msgstr "Converter existentes" - -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:249 -msgid "" -"The following books have already been converted to %s format. Do you wish to " -"reconvert them?" -msgstr "" -"Os seguintes livros já foram convertidos para o formato %s. Deseja voltar a " -"convertê-los?" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 msgid "Edit bookmark" @@ -6524,70 +6966,70 @@ msgstr "Exportar" msgid "Import" msgstr "Importar" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:154 msgid "Configure Ebook viewer" msgstr "Configurar o Visualizador de livros" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:155 msgid "&Font options" msgstr "Opções do &tipo de letra" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:156 msgid "Se&rif family:" msgstr "Família &serif:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:157 msgid "&Sans family:" msgstr "Família s&ans:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:158 msgid "&Monospace family:" msgstr "Família &monospace:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:159 msgid "&Default font size:" msgstr "T&amanho do tipo de letra predefinido:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:139 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:141 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:168 msgid " px" msgstr " px" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:161 msgid "Monospace &font size:" msgstr "Tamanho do tipo de letra mo&nospace:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:163 msgid "S&tandard font:" msgstr "Tipo de letra &predefinido:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:164 msgid "Serif" msgstr "Serif" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:165 msgid "Sans-serif" msgstr "Sans-serif" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:166 msgid "Monospace" msgstr "Monospace" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:167 msgid "Remember last used &window size" msgstr "Lembrar o tamanho da última &janela utilizada" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:169 msgid "Maximum &view width:" msgstr "Largura máxima de &visualização:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:170 msgid "H&yphenate (break line in the middle of large words)" msgstr "" "&Translinear (no fim de uma linha separar uma palavra em duas partes)" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:171 msgid "" "The default language to use for hyphenation rules. If the book does not " "specify a language, this will be used." @@ -6595,25 +7037,45 @@ msgstr "" "A linguagem predefinida a usar para as regras de translineação. Se o livro " "não especificar a linguagem, esta será usada." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:172 msgid "Default &language for hyphenation:" msgstr "&Linguagem predefinida para a translineação:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:173 +msgid "&Resize images larger than the viewer window (needs restart)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:174 msgid "&User stylesheet" msgstr "Folha de estilos do &utilizador" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:31 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:175 +msgid "&General" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:176 +msgid "Double click to change a keyboard shortcut" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:177 +msgid "&Keyboard shortcuts" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/dictionary.py:53 +msgid "No results found for:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:33 msgid "Options to customize the ebook viewer" msgstr "Opções para personalizar o Visualizador de livros" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:38 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:650 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:40 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:671 msgid "Remember last used window size" msgstr "Lembrar o tamanho da última janela utilizada" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:40 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 msgid "" "Set the user CSS stylesheet. This can be used to customize the look of all " "books." @@ -6621,136 +7083,196 @@ msgstr "" "Definir a folha de estilos CSS. Pode ser usada para personalizar a aparência " "de todos os livros." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:44 msgid "Maximum width of the viewer window, in pixels." msgstr "Largura máxima da janela do Visualizador, em pixels." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:46 +msgid "Resize images larger than the viewer window to fit inside it" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 msgid "Hyphenate text" msgstr "Translinear o texto" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 msgid "Default language for hyphenation rules" msgstr "A linguagem predefinida a usar para as regras de translineação" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 msgid "Font options" msgstr "Opções do tipo de letra" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:53 msgid "The serif font family" msgstr "A família do tipo de letra serif" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 msgid "The sans-serif font family" msgstr "A família do tipo de letra sans-serif" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:57 msgid "The monospaced font family" msgstr "A família do tipo de letra monospace" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:58 msgid "The standard font size in px" msgstr "O tamanho do tipo de letra padrão em px" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 msgid "The monospaced font size in px" msgstr "O tamanho do tipo de letra monospace padrão em px" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 msgid "The standard font type" msgstr "O tipo de letra padrão" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:449 +msgid "&Lookup in dictionary" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:12 +msgid "Scroll to the next page" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:15 +msgid "Scroll to the previous page" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:18 +msgid "Scroll to the next section" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:21 +msgid "Scroll to the previous section" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:24 +msgid "Scroll to the bottom of the section" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:27 +msgid "Scroll to the top of the section" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:30 +msgid "Scroll to the end of the document" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:33 +msgid "Scroll to the start of the document" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:36 +msgid "Scroll down" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:39 +msgid "Scroll up" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:42 +msgid "Scroll left" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:45 +msgid "Scroll right" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:115 msgid "Book format" msgstr "Formato do livro" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:138 msgid "Go to..." msgstr "Ir para..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:184 msgid "Position in book" msgstr "Posição no livro" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:191 msgid "Go to a reference. To get reference numbers, use the reference mode." msgstr "" "Ir para uma referência. Para saber o número da referência use o modo de " "referência." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:198 msgid "Search for text in book" msgstr "Procurar neste livro" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:263 msgid "Print Preview" msgstr "Pré-visualizar" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:381 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:294 +msgid "Connecting to dict.org to lookup: %s…" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:393 msgid "Choose ebook" msgstr "Escolher o livro" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:394 msgid "Ebooks" msgstr "Livros" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:401 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:413 msgid "Add bookmark" msgstr "Adicionar marcador" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:401 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:413 msgid "Enter title for bookmark:" msgstr "Introduzir o título para o marcador" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:422 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:434 msgid "No matches found for: %s" msgstr "Nenhuma correspondência encontrada para: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:462 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:474 msgid "Loading flow..." msgstr "A carregar o fluxo..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:489 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:510 msgid "Laying out %s" msgstr "A representar %s" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:518 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:539 msgid "Manage Bookmarks" msgstr "Gerir Marcadores" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:574 msgid "Loading ebook..." msgstr "A carregar o livro..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:561 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:582 msgid "DRM Error" msgstr "Erro de DRM" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:583 msgid "

This book is protected by DRM" msgstr "

Este livro está protegido por DRM" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:566 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:587 msgid "Could not open ebook" msgstr "É impossível abrir o livro" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:640 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:661 msgid "Options to control the ebook viewer" msgstr "Opções para controlar o Visualizador de livros" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:647 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:668 msgid "" "If specified, viewer window will try to come to the front when started." msgstr "" "Se especificado a janela do Visualizador vai tentar vir para a frente quando " "iniciada." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:652 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:673 msgid "Print javascript alert and console messages to the console" msgstr "Imprimir alertas javascript e mensagens da consola na consola" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:658 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:679 msgid "" "%prog [options] file\n" "\n" @@ -6760,51 +7282,55 @@ msgstr "" "\n" "Ver um livro.\n" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:178 msgid "Ebook Viewer" msgstr "Visualizador de livros" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:179 +msgid "Close dictionary" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:181 msgid "toolBar" msgstr "Barra de ferramentas" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:184 msgid "Next page" msgstr "Página seguinte" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:185 msgid "Previous page" msgstr "Página anterior" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:186 msgid "Font size larger" msgstr "Diminuir o tipo de letra" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:187 msgid "Font size smaller" msgstr "Aumentar o tipo de letra" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:191 msgid "Find next" msgstr "Procurar o seguinte" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:192 msgid "Copy to clipboard" msgstr "Copiar para a Área de Transferência" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:194 msgid "Reference Mode" msgstr "Modo de Referência" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:195 msgid "Bookmark" msgstr "Marcadores" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:196 msgid "Toggle full screen" msgstr "Écran inteiro" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:197 msgid "Print" msgstr "Imprimir" @@ -6812,7 +7338,15 @@ msgstr "Imprimir" msgid "Print eBook" msgstr "Imprimir o livro" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:196 +msgid "Copy Image" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:197 +msgid "Paste Image" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:226 msgid "" "Library\n" "%d\n" @@ -6822,7 +7356,7 @@ msgstr "" "%d\n" "livros" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:227 msgid "" "Reader\n" "%s\n" @@ -6832,7 +7366,7 @@ msgstr "" "%s\n" "disponíveis" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:228 msgid "" "Card A\n" "%s\n" @@ -6842,7 +7376,7 @@ msgstr "" "%s\n" "disponíveis" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:229 msgid "" "Card B\n" "%s\n" @@ -6852,46 +7386,46 @@ msgstr "" "%s\n" "disponíveis" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:234 msgid "Click to see the books available on your computer" msgstr "Clique para ver os livros disponíveis no seu computador" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:207 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:235 msgid "Click to see the books in the main memory of your reader" msgstr "" "Clique para ver os livros disponíveis na memória principal do seu aparelho" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:208 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:236 msgid "Click to see the books on storage card A in your reader" msgstr "" "Clique para ver os livros disponíveis no cartão de memória A do seu aparelho" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:237 msgid "Click to see the books on storage card B in your reader" msgstr "" "Clique para ver os livros disponíveis no cartão de memória B do seu aparelho" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:498 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:530 msgid "Change Case" msgstr "Alterar a Capitalização" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:499 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:531 msgid "Upper Case" msgstr "Maiúsculas" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:500 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:532 msgid "Lower Case" msgstr "Minúsculas" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:533 msgid "Swap Case" msgstr "Alterar a Capitalização" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:534 msgid "Title Case" msgstr "Capitalização de Título" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:330 msgid "" "If you use the WordPlayer e-book app on your Android phone, you can access " "your calibre book collection directly on the device. To do this you have to " @@ -6901,7 +7435,7 @@ msgstr "" "colecção de livros do calibre directamente no aparelho. Para fazer isto tem " "de ligar o servidor de conteúdos do calibre." -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:334 msgid "" "Remember to leave calibre running as the server only runs as long as calibre " "is running." @@ -6909,7 +7443,7 @@ msgstr "" "Lembre-se de deixar o calibre a executar porque o servidor só trabalha " "enquanto o calibre estiver a executar." -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:336 msgid "" "You have to add the URL http://myhostname:8080 as your calibre library in " "WordPlayer. Here myhostname should be the fully qualified hostname or the IP " @@ -6919,20 +7453,20 @@ msgstr "" "no WordPlayer. Aqui myhostname deve ser o domínio ou o endereço IP do " "computador onde o calibre está a executar." -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:372 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:413 msgid "Moving library..." msgstr "A mover a biblioteca..." -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:388 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:429 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:430 msgid "Failed to move library" msgstr "Falha ao mover a biblioteca" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:484 msgid "Invalid database" msgstr "Base de dados inválida" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:444 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:485 msgid "" "

An invalid library already exists at %s, delete it before trying to move " "the existing library.
Error: %s" @@ -6940,11 +7474,11 @@ msgstr "" "

Já existe uma biblioteca inválida em %s, apague-a antes de tentar mover a " "biblioteca existente.
Erro: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:455 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:496 msgid "Could not move library" msgstr "É impossível mover a biblioteca" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:583 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:625 msgid "welcome wizard" msgstr "assistente de boas vindas" @@ -7001,20 +7535,14 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:49 msgid "" "

Demo videos

Videos demonstrating the various features of calibre are " -"available online." +"available online." msgstr "" -"

Videos de demonstração

Videos que demonstram as várias " -"funcionalidades do calibre estão disponíveis online." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:50 msgid "" -"

User Manual

A User Manual is also available online." +"

User Manual

A User Manual is also available online." msgstr "" -"

Manual do Utilizador

O Manual do Utilizador também está disponível " -"online." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:44 msgid "" @@ -7245,6 +7773,102 @@ msgstr "" "O número máximo de resultados a serem mostrados por pesquisa OPDS. Isto " "afecta a integração com Stanza, WordPlayer, etc." +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:35 +msgid "" +"The fields to output when cataloging books in the database. Should be a " +"comma-separated list of fields.\n" +"Available fields: %s.\n" +"Default: '%%default'\n" +"Applies to: CSV, XML output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:44 +msgid "" +"Output field to sort on.\n" +"Available fields: author_sort, id, rating, size, timestamp, title.\n" +"Default: '%default'\n" +"Applies to: CSV, XML output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:253 +msgid "" +"Title of generated catalog used as title in metadata.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:259 +msgid "" +"Save the output from different stages of the conversion pipeline to the " +"specified directory. Useful if you are unsure at which stage of the " +"conversion process a bug is occurring.\n" +"Default: '%default'None\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:268 +msgid "" +"Regex describing tags to exclude as genres.\n" +"Default: '%default' excludes bracketed tags, e.g. '[]'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:273 +msgid "" +"Comma-separated list of tag words indicating book should be excluded from " +"output. Case-insensitive.\n" +"--exclude-tags=skip will match 'skip this book' and 'Skip will like this'.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:280 +msgid "" +"Include 'Titles' section in catalog.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:286 +msgid "" +"Include 'Recently Added' section in catalog.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:292 +msgid "" +"Tag prefix for user notes, e.g. '*Jeff might enjoy reading this'.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:298 +msgid "" +"Sort titles with leading numbers as text, e.g.,\n" +"'2001: A Space Odyssey' sorts as \n" +"'Two Thousand One: A Space Odyssey'.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:304 +msgid "" +"Specifies the output profile. In some cases, an output profile is required " +"to optimize the catalog for the device. For example, 'kindle' or " +"'kindle_dx' creates a structured Table of Contents with Sections and " +"Articles.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:310 +msgid "" +"Tag indicating book has been read.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/library/cli.py:121 msgid "" "Path to the calibre library. Default is to use the path stored in the " @@ -7532,7 +8156,41 @@ msgstr "Especificar este parâmetro vai desligar este comportamento." msgid "You must specify some ids or the %s option" msgstr "Deve especificar alguns IDs ou a opção %s" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:591 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:634 +msgid "" +"\n" +" %prog catalog /path/to/destination.(csv|epub|mobi|xml ...) [options]\n" +"\n" +" Export a catalog in format specified by path/to/destination extension.\n" +" Options control how entries are displayed in the generated catalog " +"ouput.\n" +" " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:648 +msgid "" +"Comma-separated list of database IDs to catalog.\n" +"If declared, --search is ignored.\n" +"Default: all" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:652 +msgid "" +"Filter the results by the search query. For the format of the search query, " +"please see the search-related documentation in the User Manual.\n" +"Default: no filtering" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:658 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:482 +msgid "Show detailed output information. Useful for debugging" +msgstr "Mostrar informação detalhada. Útil para depurar." + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:671 +msgid "Error: You must specify a catalog output file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:687 msgid "" "%%prog command [options] [arguments]\n" "\n" @@ -7552,85 +8210,87 @@ msgstr "" " %s\n" "Para ajuda num comando individual: %%prog comando --help\n" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1624 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1744 msgid "

Migrating old database to ebook library in %s

" msgstr "" "

A migrar a base de dados antiga para a biblioteca de livros em " "%s

" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1653 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1773 msgid "Copying %s" msgstr "A copiar %s" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1670 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1790 msgid "Compacting database" msgstr "A compactar a base de dados" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1763 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1883 msgid "Checking SQL integrity..." msgstr "A verificar a integridade do SQL..." -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1800 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1920 msgid "Checking for missing files." msgstr "A verificar ficheiros desaparecidos." -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1824 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1942 msgid "Checked id" msgstr "ID verificado" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:22 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:24 msgid "The title" msgstr "O título" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:23 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:25 msgid "The authors" msgstr "Os autores" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:24 -msgid "The author sort string" -msgstr "A expressão para ordenar o autor" +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:26 +msgid "" +"The author sort string. To use only the first letter of the name use " +"{author_sort[0]}" +msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:25 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:28 msgid "The tags" msgstr "As etiquetas" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:26 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:29 msgid "The series" msgstr "A série" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:27 -msgid "The series number" -msgstr "O número da série" +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:30 +msgid "The series number. To get leading zeros use {series_index:0>3s}" +msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:28 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:31 msgid "The rating" msgstr "A avaliação" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:29 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:32 msgid "The ISBN" msgstr "O ISBN" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:30 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:33 msgid "The publisher" msgstr "A editora" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:31 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:34 msgid "The date" msgstr "A data." -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:32 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:35 msgid "The published date" msgstr "A data de edição" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:33 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:36 msgid "The calibre internal id" msgstr "O ID interno do calibre" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:43 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:46 msgid "Options to control saving to disk" msgstr "Opções para controlar o guardar para o disco" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:49 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:52 msgid "" "Normally, calibre will update the metadata in the saved files from what is " "in the calibre library. Makes saving to disk slower." @@ -7638,7 +8298,7 @@ msgstr "" "Normalmente o calibre actualiza os metadados nos ficheiros guardados a " "partir da biblioteca do calibre. Torna o guardar no disco mais lento." -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:52 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:55 msgid "" "Normally, calibre will write the metadata into a separate OPF file along " "with the actual e-book files." @@ -7646,7 +8306,7 @@ msgstr "" "Normalmente o calibre escreve os metadados num ficheiro OPF separado, junto " "dos outros ficheiros do livro." -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:55 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:58 msgid "" "Normally, calibre will save the cover in a separate file along with the " "actual e-book file(s)." @@ -7654,7 +8314,7 @@ msgstr "" "Normalmente o calibre guarda a capa num ficheiro separado, junto dos outros " "ficheiros do livro." -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:58 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:61 msgid "" "Comma separated list of formats to save for each book. By default all " "available books are saved." @@ -7662,7 +8322,7 @@ msgstr "" "Lista de formatos separados por vírgulas a guardar para cada livro. Por " "predefinição todos os livros disponíveis são guardados." -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:61 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:64 msgid "" "The template to control the filename and directory structure of the saved " "files. Default is \"%s\" which will save books into a per-author " @@ -7674,7 +8334,15 @@ msgstr "" "sub-pastas por autor e os nomes dos ficheiros contêm o título e o autor. Os " "controlos disponíveis são: {%s}" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:66 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:69 +msgid "" +"The template to control the filename and directory structure of files sent " +"to the device. Default is \"%s\" which will save books into a per-author " +"directory with filenames containing title and author. Available controls " +"are: {%s}" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:76 msgid "" "Normally, calibre will convert all non English characters into English " "equivalents for the file names. WARNING: If you turn this off, you may " @@ -7686,7 +8354,7 @@ msgstr "" "podem ocorrer erros ao guardar, dependendo do suporte unicode do sistema de " "ficheiros no qual está a guardar." -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:72 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:82 msgid "" "The format in which to display dates. %d - day, %b - month, %Y - year. " "Default is: %b, %Y" @@ -7694,15 +8362,15 @@ msgstr "" "O formato no qual apresentar as datas. %d - dia, %b - mês, %Y - ano. A " "predefinição é: %b, %Y" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:75 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:85 msgid "Convert paths to lowercase." msgstr "Converter os caminhos para minúsculas." -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:77 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:87 msgid "Replace whitespace with underscores." msgstr "Substituir espaços por underscores" -#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:230 +#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:256 msgid "Requested formats not available" msgstr "Os formatos pedidos não estão disponíveis" @@ -7720,15 +8388,19 @@ msgstr "" "\n" "Iniciar o servidor de conteúdos do calibre." -#: /home/kovid/work/calibre/src/calibre/utils/config.py:47 +#: /home/kovid/work/calibre/src/calibre/library/server.py:862 +msgid "Path to the library folder to serve with the content server" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/config.py:48 msgid "%sUsage%s: %s\n" msgstr "%sUtilização%s: %s\n" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:91 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:92 msgid "Created by " msgstr "Criado por " -#: /home/kovid/work/calibre/src/calibre/utils/config.py:92 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:93 msgid "" "Whenever you pass arguments to %prog that have spaces in them, enclose the " "arguments in quotation marks." @@ -7736,46 +8408,50 @@ msgstr "" "Sempre que passar argumentos para o %prog que contenham espaços ponha-os " "entre aspas." -#: /home/kovid/work/calibre/src/calibre/utils/config.py:559 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:650 msgid "Path to the database in which books are stored" msgstr "Caminho para a base de dados onde os livros estão armazenados" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:561 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:652 msgid "Pattern to guess metadata from filenames" msgstr "Padrão para adivinhar os metadados a partir do nome dos ficheiros" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:563 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:654 msgid "Access key for isbndb.com" msgstr "Chave de acesso para isbndb.com" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:565 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:656 msgid "Default timeout for network operations (seconds)" msgstr "Predefinição do tempo de espera para as operações de rede (segundos)" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:567 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:658 msgid "Path to directory in which your library of books is stored" msgstr "Caminho para a pasta onde a sua biblioteca de livros está armazenada" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:569 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:660 msgid "The language in which to display the user interface" msgstr "A linguagem de apresentação da interface do utilizador" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:571 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:662 msgid "The default output format for ebook conversions." msgstr "O formato de destino predefinido para a conversão de livros." -#: /home/kovid/work/calibre/src/calibre/utils/config.py:575 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:666 msgid "Ordered list of formats to prefer for input." msgstr "Lista ordenada de formatos preferidos como origem." -#: /home/kovid/work/calibre/src/calibre/utils/config.py:577 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:668 msgid "Read metadata from files" msgstr "Ler os metadados a partir dos ficheiros" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:579 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:670 msgid "The priority of worker processes" msgstr "A prioridade dos processos de trabalho" +#: /home/kovid/work/calibre/src/calibre/utils/config.py:672 +msgid "Swap author first and last names when reading metadata" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:43 msgid "Waiting..." msgstr "À espera..." @@ -7788,45 +8464,81 @@ msgstr "Parado" msgid "Finished" msgstr "Terminado" -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:70 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:75 msgid "Working..." msgstr "A Processar..." -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:94 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:93 msgid "Brazilian Portuguese" msgstr "Português do Brasil" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:95 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:94 msgid "English (UK)" msgstr "Inglês (Reino Unido)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:96 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:95 msgid "Simplified Chinese" msgstr "Chinês Simplificado" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:97 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:96 msgid "Chinese (HK)" msgstr "Chinês (Hong Kong)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:98 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:97 msgid "Traditional Chinese" msgstr "Chinês Tradicional" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:99 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:98 msgid "English" msgstr "Inglês" +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:99 +msgid "English (Australia)" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/utils/localization.py:100 -msgid "English (AU)" -msgstr "Inglês (Austrália)" +msgid "English (New Zealand)" +msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:101 -msgid "English (CA)" -msgstr "Inglês (Canadá)" +msgid "English (Canada)" +msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:102 -msgid "English (IND)" -msgstr "English (India)" +msgid "English (India)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:103 +msgid "English (Thailand)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:104 +msgid "English (Cyprus)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:105 +msgid "English (Pakistan)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:106 +msgid "English (Singapore)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:107 +msgid "English (Yemen)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:108 +msgid "German (AT)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:109 +msgid "Dutch (NL)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:110 +msgid "Dutch (BE)" +msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/sftp.py:53 msgid "URL must have the scheme sftp" @@ -7858,11 +8570,11 @@ msgstr "Fonte deconhecida" msgid "Untitled article" msgstr "Artigo sem título" -#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:17 +#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:21 msgid "Download periodical content from the internet" msgstr "Descarregar conteúdo periódico da internet" -#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:32 +#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:36 msgid "" "Useful for recipe development. Forces max_articles_per_feed to 2 and " "downloads at most 2 feeds." @@ -7870,110 +8582,123 @@ msgstr "" "Útil para o desenvolvimento da receita. Força max_articles_per_feed para 2 e " "descarrega no máximo 2 fontes." -#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:35 +#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:39 msgid "Username for sites that require a login to access content." msgstr "" "Utilizador para sítios que requeiram ínicio de sessão para aceder a " "conteúdos." -#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:38 +#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:42 msgid "Password for sites that require a login to access content." msgstr "" "Palavra-passe para sítios que requeiram ínicio de sessão para aceder a " "conteúdos" +#: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:46 +msgid "" +"Do not download latest version of builtin recipes from the calibre server" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:40 msgid "Unknown News Source" msgstr "Fonte de Notícias desconhecida" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:507 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:550 msgid "The \"%s\" recipe needs a username and password." msgstr "A receita \"%s\" necessita de um utilizador e palavra-passe." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:590 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:637 msgid "Download finished" msgstr "Descarregamento terminado" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:592 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:639 msgid "Failed to download the following articles:" msgstr "Falha no descarregamento dos seguintes artigos:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:598 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:645 msgid "Failed to download parts of the following articles:" msgstr "Falha no descarregamento de partes dos seguintes artigos:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:600 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:647 msgid " from " msgstr " de " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:602 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:649 msgid "\tFailed links:" msgstr "\tAtalhos falhados:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:683 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:730 msgid "Could not fetch article. Run with -vv to see the reason" msgstr "É impossível recolher o artigo. Execute com -vv para ver a razão." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:704 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:751 msgid "Fetching feeds..." msgstr "A recolher as fontes..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:709 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:756 msgid "Got feeds from index page" msgstr "Tirar as fontes da página de índice" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:715 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:762 msgid "Trying to download cover..." msgstr "A tentar descarregar a capa..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:769 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:764 +msgid "Generating masthead..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:842 msgid "Starting download [%d thread(s)]..." msgstr "A iniciar o descarregamento [%d thread(s)]..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:785 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:858 msgid "Feeds downloaded to %s" msgstr "Fontes descarregadas para %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:795 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:868 msgid "Could not download cover: %s" msgstr "É impossível descarregar a capa: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:802 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:880 msgid "Downloading cover from %s" msgstr "A descarregar a capa de %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:928 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:915 +msgid "Masthead image downloaded" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1150 msgid "Untitled Article" msgstr "Artigo Sem Título" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:999 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1221 msgid "Article downloaded: %s" msgstr "Artigo descarregado: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1010 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1232 msgid "Article download failed: %s" msgstr "Falha no descarregamento do artigo: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1027 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1249 msgid "Fetching feed" msgstr "A recolher a fonte" -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:43 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:46 msgid "You" msgstr "O utilizador" #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:73 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:82 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:172 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:181 msgid "Scheduled" msgstr "Programado" #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:84 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:173 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:182 msgid "Custom" msgstr "Personalizar" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:458 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:459 msgid "" "%prog URL\n" "\n" @@ -7983,11 +8708,11 @@ msgstr "" "\n" "Onde o URL é por exemplo http://google.com" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:461 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:462 msgid "Base directory into which URL is saved. Default is %default" msgstr "Pasta padrão onde o URL é guardado. A predefinição é %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:464 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:465 msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " "s" @@ -7995,7 +8720,7 @@ msgstr "" "O tempo de espera em segundos para esperar uma resposta do servidor. A " "predefinição é: %default s" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:467 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:468 msgid "" "Maximum number of levels to recurse i.e. depth of links to follow. Default " "%default" @@ -8003,7 +8728,7 @@ msgstr "" "O número máximo de níveis a seguir recursivamente, i.e. a profundidade de " "atalhos a seguir. A predefinição é %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:470 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:471 msgid "" "The maximum number of files to download. This only applies to files from tags. Default is %default" @@ -8011,7 +8736,7 @@ msgstr "" "O número máximo de ficheiros para descarregar. Isto só se aplica a ficheiros " "com etiquetas . A predefinição é %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:472 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:473 msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" @@ -8019,7 +8744,7 @@ msgstr "" "Intervalo mínimo em segundos entre recolhas consecutivas. A predefinição é " "%default s" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:474 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:475 msgid "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." @@ -8027,7 +8752,7 @@ msgstr "" "A codificação de caracteres para os sítios que está a tentar descarregar. A " "predefinição é tentar descobrir a codificação." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:476 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:477 msgid "" "Only links that match this regular expression will be followed. This option " "can be specified multiple times, in which case as long as a link matches any " @@ -8038,7 +8763,7 @@ msgstr "" "um atalho corresponder a alguma expressão regular, ele será seguido. A " "predefinição é seguir todas os atalhos." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:478 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:479 msgid "" "Any link that matches this regular expression will be ignored. This option " "can be specified multiple times, in which case as long as any regexp matches " @@ -8052,14 +8777,10 @@ msgstr "" "predefinição é não ignorar nenhum atalho. Se ambos --filter-regexp e --match-" "regexp forem especificados, então --filter-regexp é aplicado primeiro." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:480 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:481 msgid "Do not download CSS stylesheets." msgstr "Não descarregar folhas de estilos CSS." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:481 -msgid "Show detailed output information. Useful for debugging" -msgstr "Mostrar informação detalhada. Útil para depurar." - #~ msgid "Options to control the conversion to EPUB" #~ msgstr "Opções para controlar a conversão para EPUB" @@ -8088,6 +8809,9 @@ msgstr "Mostrar informação detalhada. Útil para depurar." #~ msgid "%prog [options] LITFILE" #~ msgstr "%prog [options] LITFILE" +#~ msgid "Useful for debugging." +#~ msgstr "Útil para depurar." + #~ msgid "%prog [options] OPFFILE" #~ msgstr "%prog [options] OPFFILE" @@ -8267,6 +8991,9 @@ msgstr "Mostrar informação detalhada. Útil para depurar." #~ msgid "The author(s) of the ebook, as a & separated list." #~ msgstr "O(s) autor(es) do livro, como uma lista separada por &." +#~ msgid "Output file. Default is derived from input filename." +#~ msgstr "Ficheiro de destino. A predefinição é o nome do ficheiro de origem." + #~ msgid "OEB ebook created in" #~ msgstr "Livro OEB criado em" @@ -8766,6 +9493,20 @@ msgstr "Mostrar informação detalhada. Útil para depurar." #~ msgid "Regular expression (?P)" #~ msgstr "Expressão regular (?P)" +#~ msgid "" +#~ "See the User Manual for more help" +#~ msgstr "" +#~ "Ver o Manual do Utilizador para mais ajuda" + +#~ msgid "" +#~ "

For help visit %s.kovidgoyal.net
" +#~ msgstr "" +#~ "

Para ajuda visite %s.kovidgoyal.net
" + #~ msgid "No help available" #~ msgstr "Sem ajuda disponível" @@ -9185,6 +9926,15 @@ msgstr "Mostrar informação detalhada. Útil para depurar." #~ "

Já existem livros com o mesmo título na base de dados. Adicioná-los na " #~ "mesma?

    " +#~ msgid "" +#~ "%s has been updated to version %s. See the new features. " +#~ "Visit the download page?" +#~ msgstr "" +#~ "%s foi actualizado para a versão %s. Ver as novas " +#~ "funcionalidades. Visitar a página para descarregar?" + #~ msgid "" #~ "This RTF file has a feature calibre does not support. Convert it to HTML and " #~ "then convert it." @@ -9738,9 +10488,27 @@ msgstr "Mostrar informação detalhada. Útil para depurar." #~ msgid "Send specific format to storage card" #~ msgstr "Enviar o formato específico para o cartão de memória" +#~ msgid "Communicate with the BeBook eBook reader." +#~ msgstr "Comunica com o leitor BeBook." + +#~ msgid "Communicate with the BeBook Mini eBook reader." +#~ msgstr "Comunica com o leitor Mini BeBook." + +#~ msgid "Communicate with the Cybook Gen 3 eBook reader." +#~ msgstr "Comunica com o leitor Cybook Gen 3." + +#~ msgid "Communicate with the Cybook Opus eBook reader." +#~ msgstr "Comunica com o leitor Cybook Opus." + +#~ msgid "James Ralston" +#~ msgstr "James Ralston" + #~ msgid "Communicate with the Sony PRS-505 eBook reader." #~ msgstr "Comunica com o leitor Sony PRS-505." +#~ msgid "Kovid Goyal and John Schember" +#~ msgstr "Kovid Goyal e John Schember" + #~ msgid "Communicate with the Sony PRS-700 eBook reader." #~ msgstr "Comunica com o leitor Sony PRS-700." @@ -9751,9 +10519,18 @@ msgstr "Mostrar informação detalhada. Útil para depurar." #~ "Comprimento médio da linha para fazer a quebra de linha se o ficheiro HTML é " #~ "o resultado de uma conversão parcial de um ficheiro PDF." +#~ msgid "Character encoding for input. Default is to auto detect." +#~ msgstr "" +#~ "Codificação de caracteres para o ficheiro de origem. A predefinição é " +#~ "detectar automaticamente." + #~ msgid "Input character &encoding" #~ msgstr "&Codificação de caracteres para o ficheiro de origem" +#~ msgid "Produce more human-readable XML output." +#~ msgstr "" +#~ "Produzir um ficheiro de destino XML mais próximo possível da leitura humana." + #~ msgid "Portuguese" #~ msgstr "Português" @@ -9769,18 +10546,63 @@ msgstr "Mostrar informação detalhada. Útil para depurar." #~ msgid "Chinese" #~ msgstr "Chinês" -#~ msgid "Default" -#~ msgstr "Predefinição" +#~ msgid "Options to control e-book conversion." +#~ msgstr "Opções para controlar a conversão de livros." + +#~ msgid "Usage: ebook-convert INFILE OUTFILE [OPTIONS..]" +#~ msgstr "Utilização: ebook-convert INFILE OUTFILE [OPTIONS..]" #~ msgid "Starting conversion of %d books" #~ msgstr "A começar a conversão de %d livro(s)" +#~ msgid "" +#~ "This RTF file has a feature calibre does not support. Convert it to HTML " +#~ "first and then try it." +#~ msgstr "" +#~ "Este ficheiro RTF tem uma funcionalidade que o calibre não suporta. Converta-" +#~ "o primeiro para HTML e então volte a tentar." + #~ msgid "&Footer regular expression:" #~ msgstr "&Expressão regular para o rodapé:" #~ msgid "&Header regular expression:" #~ msgstr "E&xpressão regular para o cabeçalho:" +#~ 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 "" +#~ "

    Por exemplo, para corresponder todas as etiquetas h2 que têm " +#~ "class=\"chapter\", definir a etiqueta para h2, o atributo para " +#~ "class e o valor para chapter.

    Deixar o atributo em " +#~ "branco vai corresponder qualquer atributo e deixar o valor em branco vai " +#~ "corresponder qualquer valor. Definir a etiqueta para * vai corresponder " +#~ "qualquer etiqueta.

    Para aprender utilizações mais avançadas do XPath " +#~ "veja o Tutorial " +#~ "XPath." + +#~ msgid "" +#~ "

    Demo videos

    Videos demonstrating the various features of calibre are " +#~ "available online." +#~ msgstr "" +#~ "

    Videos de demonstração

    Videos que demonstram as várias " +#~ "funcionalidades do calibre estão disponíveis online." + +#~ msgid "" +#~ "

    User Manual

    A User Manual is also available online." +#~ msgstr "" +#~ "

    Manual do Utilizador

    O Manual do Utilizador também está disponível " +#~ "online." + #~ msgid "" #~ "\n" @@ -9828,5 +10650,72 @@ msgstr "Mostrar informação detalhada. Útil para depurar." #~ msgid "Vietnamese" #~ msgstr "Vietnamita" +#~ msgid "The author sort string" +#~ msgstr "A expressão para ordenar o autor" + +#~ msgid "The series number" +#~ msgstr "O número da série" + #~ msgid "Montenegrin" #~ msgstr "Montenegrino" + +#~ msgid "English (AU)" +#~ msgstr "Inglês (Austrália)" + +#~ msgid "This profile is intended for the SONY PRS line. The 500/505/700 etc." +#~ msgstr "Este perfil é destinado à linha PRS da Sony. A 500/505/700, etc." + +#~ msgid "This profile is intended for the Hanlin V3/V5 and its clones." +#~ msgstr "Este perfil é destinado ao Hanlin V3/V5 e aos seus clones." + +#~ msgid "Communicate with the Sony PRS-600/700 eBook reader." +#~ msgstr "Comunica com o leitor Sony PRS-600/700." + +#~ msgid "Communicate with the Sony PRS-300/505 eBook reader." +#~ msgstr "Comunica com o leitor Sony PRS-300/505." + +#~ msgid "Add a tab at the beginning of each paragraph." +#~ msgstr "Adiciona uma tabulação no início de cada parágrafo." + +#~ msgid "Do not add a blank line between paragraphs." +#~ msgstr "Não adicionar uma linha em branco entre os parágrafos." + +#~ 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.

    " +#~ msgstr "" +#~ "

    Este assistente ajuda-o a escolher uma chave de tamanho de letra " +#~ "apropriada para as suas necessidades. Insira apenas o tamanho do tipo de " +#~ "letra padrão do documento de origem e um tamanho do tipo de letra de origem. " +#~ "O assistente vai apresentar o tamanho do tipo de letra para o qual vai ser " +#~ "mapeado, pelo algoritmo de alteração proporcional dos tipos de letra. Pode " +#~ "ajustar o algoritmo ajustando o tamanho do tipo de letra padrão de destino e " +#~ "a chave de tamanho de letra abaixo. Quando encontrar valores apropriados " +#~ "para si, clique OK.

    \n" +#~ "

    Por predefinição, se o tamanho do tipo de letra padrão de destino é zero " +#~ "e/ou nenhuma chave de tamanho de letra for especificada, o calibre vai usar " +#~ "os valores do Perfil de Destino actual.

    \n" +#~ "

    Veja o Manual do Utilizador para perceber como é que a alteração " +#~ "proporcional dos tipos de letra funciona.

    " + +#~ msgid "Add a tab at the beginning of each paragraph" +#~ msgstr "Adiciona uma tabulação no início de cada parágrafo" + +#~ msgid "English (CA)" +#~ msgstr "Inglês (Canadá)" + +#~ msgid "English (IND)" +#~ msgstr "English (India)" From 40e3b163fa47433017900dc7493c632a2437293b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 18 Feb 2010 10:12:48 -0700 Subject: [PATCH 131/164] Fix catalog date issues --- src/calibre/customize/__init__.py | 7 +++---- src/calibre/library/database2.py | 15 +++++++++------ 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/calibre/customize/__init__.py b/src/calibre/customize/__init__.py index 42b379fa0b..2341ecdf0c 100644 --- a/src/calibre/customize/__init__.py +++ b/src/calibre/customize/__init__.py @@ -139,12 +139,11 @@ class FileTypePlugin(Plugin): #: to the database on_import = False - #: If True, this plugin is run whenever an any2* tool - #: is used, on the file passed to the any2* tool. + #: If True, this plugin is run just before a conversion on_preprocess = False - #: If True, this plugin is run after an any2* tool is - #: used, on the final file produced by the tool. + #: If True, this plugin is run after conversion + #: on the final file produced by the conversion output plugin. on_postprocess = False type = _('File type') diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index f1929578f7..3c45acd621 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -1475,18 +1475,21 @@ class LibraryDatabase2(LibraryDatabase): self.data.books_added([db_id], self) self.set_path(db_id, index_is_id=True) self.conn.commit() + try: + mi = get_metadata(stream, + os.path.splitext(path)[1][1:].lower()) + except: mi = MetaInformation(title, ['calibre']) - mi.tags = [_('Catalog')] - self.set_metadata(db_id, mi) + + mi.title, mi.authors = title, ['calibre'] + mi.tags = [_('Catalog')] + mi.pubdate = mi.timestamp = nowf() + self.set_metadata(db_id, mi) self.add_format(db_id, format, stream, index_is_id=True) if not hasattr(path, 'read'): stream.close() self.conn.commit() - if existing: - t = utcnow() - self.set_timestamp(db_id, t, notify=False) - self.set_pubdate(db_id, t, notify=False) self.data.refresh_ids(self, [db_id]) # Needed to update format list and size return db_id From 1dbbd470a0b3e92485c9f6da2c48f8e772ffaac3 Mon Sep 17 00:00:00 2001 From: GRiker Date: Thu, 18 Feb 2010 10:15:09 -0700 Subject: [PATCH 132/164] GwR catalog comments --- src/calibre/library/catalog.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/calibre/library/catalog.py b/src/calibre/library/catalog.py index 2032785ae9..a5062de5db 100644 --- a/src/calibre/library/catalog.py +++ b/src/calibre/library/catalog.py @@ -3404,6 +3404,19 @@ class EPUB_MOBI(CatalogPlugin): tag_list.append(tag) return tag_list + def updateCatalogMetadata(self, comments): + ''' Store comments to library entry's comments metadata ''' + self.db.search('title:"%s" author:calibre' % self.title) + data = self.db.get_data_as_dict() + if data: + catalog_id = data[0]['id'] + cm = self.db.get_metadata(catalog_id, index_is_id=True) + cm.comments = comments + self.db.set_metadata(catalog_id, cm) + else: + self.opts.log(u"updateCatalogMetadata(): No library entry found for catalog '%s'" % self.title) + return + def updateProgressFullStep(self, description): self.currentStep += 1 self.progressString = description @@ -3516,6 +3529,9 @@ class EPUB_MOBI(CatalogPlugin): recommendations = [] # recommendations.append(('cover', I('catalog.svg'), OptionRecommendation.HIGH)) + recommendations.append(('comments', 'I added this comment in library.cli:run()', + OptionRecommendation.HIGH)) + dp = getattr(opts, 'debug_pipeline', None) if dp is not None: recommendations.append(('debug_pipeline', dp, @@ -3537,6 +3553,7 @@ class EPUB_MOBI(CatalogPlugin): plumber.merge_ui_recommendations(recommendations) plumber.run() + catalog.updateCatalogMetadata("I added this comment from library.catalog:run()") return 0 else: return 1 From db0635d91fe39140277f02f0efb6550491811912 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 18 Feb 2010 10:31:21 -0700 Subject: [PATCH 133/164] ... --- src/calibre/ebooks/metadata/mobi.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/calibre/ebooks/metadata/mobi.py b/src/calibre/ebooks/metadata/mobi.py index 86a78b34eb..981a089a51 100644 --- a/src/calibre/ebooks/metadata/mobi.py +++ b/src/calibre/ebooks/metadata/mobi.py @@ -12,7 +12,6 @@ __docformat__ = 'restructuredtext en' from struct import pack, unpack from cStringIO import StringIO -from calibre import prints from calibre.ebooks.mobi import MobiError from calibre.ebooks.mobi.writer import rescale_image, MAX_THUMB_DIMEN from calibre.ebooks.mobi.langcodes import iana2mobi From 679fb2f4c95774d8087cbfea4249e2167a278e99 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 18 Feb 2010 10:35:14 -0700 Subject: [PATCH 134/164] Que Leer by Darko Miletic --- resources/recipes/queleer.recipe | 56 ++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 resources/recipes/queleer.recipe diff --git a/resources/recipes/queleer.recipe b/resources/recipes/queleer.recipe new file mode 100644 index 0000000000..bef0bd8395 --- /dev/null +++ b/resources/recipes/queleer.recipe @@ -0,0 +1,56 @@ +__license__ = 'GPL v3' +__copyright__ = '2010, Darko Miletic ' +''' +www.que-leer.com +''' + +import re +from calibre.web.feeds.news import BasicNewsRecipe + +class QueLeer(BasicNewsRecipe): + title = 'Que Leer' + __author__ = 'Darko Miletic' + description = 'Libros, Novedades en libros, Criticas, Noticias libro' + publisher = 'MC Ediciones, S.A.' + category = 'news, books, criticas, libros' + oldest_article = 7 + max_articles_per_feed = 200 + no_stylesheets = True + encoding = 'utf-8' + use_embedded_content = False + language = 'es' + remove_empty_feeds = True + masthead_url = 'http://www.que-leer.com/wp-content/themes/queleer/images/backgrounds/que-leer.jpg' + extra_css = ' body{font-family: Arial,sans-serif } img{margin-bottom: 0.4em} ' + + conversion_options = { + 'comment' : description + , 'tags' : category + , 'publisher' : publisher + , 'language' : language + } + + preprocess_regexps = [(re.compile(r'

    .*?', re.DOTALL|re.IGNORECASE),lambda match: '')] + + remove_tags = [ + dict(attrs={'class':['post-ratings','post-ratings-loading','sociable','toc-anchor']}) + ,dict(name=['object','embed','iframe','link']) + ,dict(attrs={'id':'left'}) + ] + + remove_tags_after = dict(attrs={'class':'sociable'}) + remove_attributes = ['width','height'] + keep_only_tags = [dict(attrs={'class':'post'})] + + feeds = [(u'Articulos', u'http://www.que-leer.com/feed')] + + def preprocess_html(self, soup): + for item in soup.findAll(style=True): + del item['style'] + url = 'http://www.que-leer.com/comprar-libros-tienda-que-leer/libros-recomendados' + fitem = soup.find('a',href=url) + if fitem: + par = fitem.parent + par.extract() + return self.adeify_images(soup) + From 0df82cc222b666f160c933b3f5bdd4f2c6cd17ef Mon Sep 17 00:00:00 2001 From: GRiker Date: Thu, 18 Feb 2010 16:08:12 -0700 Subject: [PATCH 135/164] GwR remove updateCatalogMetadata(), redundant --- src/calibre/library/catalog.py | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/calibre/library/catalog.py b/src/calibre/library/catalog.py index 8c27bf883b..7b6f6f92c1 100644 --- a/src/calibre/library/catalog.py +++ b/src/calibre/library/catalog.py @@ -3399,19 +3399,6 @@ class EPUB_MOBI(CatalogPlugin): tag_list.append(tag) return tag_list - def updateCatalogMetadata(self, comments): - ''' Store comments to library entry's comments metadata ''' - self.db.search('title:"%s" author:calibre' % self.title) - data = self.db.get_data_as_dict() - if data: - catalog_id = data[0]['id'] - cm = self.db.get_metadata(catalog_id, index_is_id=True) - cm.comments = comments - self.db.set_metadata(catalog_id, cm) - else: - self.opts.log(u"updateCatalogMetadata(): No library entry found for catalog '%s'" % self.title) - return - def updateProgressFullStep(self, description): self.currentStep += 1 self.progressString = description @@ -3549,7 +3536,6 @@ class EPUB_MOBI(CatalogPlugin): plumber.merge_ui_recommendations(recommendations) plumber.run() - catalog.updateCatalogMetadata('\n'.join(line for line in build_log)) return 0 else: return 1 From d0e4d394b8dd86d9f7be0397356b9b3f2a979491 Mon Sep 17 00:00:00 2001 From: GRiker Date: Thu, 18 Feb 2010 16:10:08 -0700 Subject: [PATCH 136/164] GwR remove updateCatalogMetadata(), redundant --- src/calibre/library/catalog.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/calibre/library/catalog.py b/src/calibre/library/catalog.py index 7b6f6f92c1..dc474b2a6f 100644 --- a/src/calibre/library/catalog.py +++ b/src/calibre/library/catalog.py @@ -3534,7 +3534,6 @@ class EPUB_MOBI(CatalogPlugin): opts.basename + '.opf'), path_to_output, log, report_progress=notification, abort_after_input_dump=False) plumber.merge_ui_recommendations(recommendations) - plumber.run() return 0 else: From 434988c7c05116076a467cfbd0b2362a0ef5e720 Mon Sep 17 00:00:00 2001 From: Translators <> Date: Fri, 19 Feb 2010 04:35:47 +0000 Subject: [PATCH 137/164] Launchpad automatic translations update. --- src/calibre/translations/ru.po | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/calibre/translations/ru.po b/src/calibre/translations/ru.po index 2a48a6634d..db6c4abfe2 100644 --- a/src/calibre/translations/ru.po +++ b/src/calibre/translations/ru.po @@ -7,13 +7,13 @@ msgstr "" "Project-Id-Version: calibre 0.4.55\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-02-12 23:37+0000\n" -"PO-Revision-Date: 2010-02-12 22:44+0000\n" -"Last-Translator: Boris Rybalkin \n" +"PO-Revision-Date: 2010-02-18 09:16+0000\n" +"Last-Translator: Nikolai \n" "Language-Team: American English \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-02-13 04:57+0000\n" +"X-Launchpad-Export-Date: 2010-02-19 04:35+0000\n" "X-Generator: Launchpad (build Unknown)\n" "X-Poedit-Country: RUSSIAN FEDERATION\n" "X-Poedit-Language: Russian\n" @@ -2206,6 +2206,10 @@ msgid "" "spaces) represents a paragraph. Paragraphs end when the next line that " "starts with an indent is reached." msgstr "" +"Обычно калибр обрабатывает пустые строки в качестве знаков абзацев. С этой " +"опцией он будет считать, что каждая строка, начинающаяся с отступа " +"(табуляции или 2+ пробелов), представляет собой абзац. Абзац заканчивается " +"при достижении строки, начинающейся с отступа." #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/output.py:23 msgid "Format to use inside the pdb container. Choices are:" @@ -2648,7 +2652,7 @@ msgstr "Скачать социальные метаданные (тэги/ре #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:93 msgid "Overwrite author and title with new metadata" -msgstr "" +msgstr "Заменять автора и название новыми метаданными" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:95 msgid "Limit max simultaneous jobs to number of CPUs" From 1ba09aedec3da41bc74ada0d3195aa8ae4a7afcd Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 19 Feb 2010 09:37:46 -0700 Subject: [PATCH 138/164] Various Polish reciped by Tomasz Dlugosz --- resources/recipes/di.recipe | 60 ++++++++++++++++++++++ resources/recipes/eclicto.recipe | 49 ++++++++++++++++++ resources/recipes/eksiazki.recipe | 12 ++--- resources/recipes/interia_fakty.recipe | 38 ++++++++++++++ resources/recipes/interia_sport.recipe | 71 ++++++++++++++++++++++++++ resources/recipes/legeartis.recipe | 43 ++++++++++++++++ resources/recipes/legitymizm.recipe | 49 ++++++++++++++++++ resources/recipes/michalkiewicz.recipe | 26 ++++++++++ resources/recipes/nczas.recipe | 35 +++++++++++++ 9 files changed, 377 insertions(+), 6 deletions(-) create mode 100644 resources/recipes/di.recipe create mode 100644 resources/recipes/eclicto.recipe create mode 100644 resources/recipes/interia_fakty.recipe create mode 100644 resources/recipes/interia_sport.recipe create mode 100644 resources/recipes/legeartis.recipe create mode 100644 resources/recipes/legitymizm.recipe create mode 100644 resources/recipes/michalkiewicz.recipe create mode 100644 resources/recipes/nczas.recipe diff --git a/resources/recipes/di.recipe b/resources/recipes/di.recipe new file mode 100644 index 0000000000..3b3f6e5c7c --- /dev/null +++ b/resources/recipes/di.recipe @@ -0,0 +1,60 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' +__author__ = 'Mori' +__version__ = 'v. 0.5' +''' +di.com.pl +''' + +from calibre.web.feeds.news import BasicNewsRecipe +import re + +class DziennikInternautowRecipe(BasicNewsRecipe): + __author__ = 'Mori' + language = 'pl' + + title = u'Dziennik Internautow' + publisher = u'Dziennik Internaut\xc3\xb3w Sp. z o.o.' + description =u'Internet w \xc5\xbcyciu i biznesie. Porady, wywiady, interwencje, bezpiecze\xc5\x84stwo w Sieci, technologia.' + + max_articles_per_feed = 100 + oldest_article = 7 + cover_url = 'http://di.com.pl/pic/logo_di_norm.gif' + + no_stylesheets = True + remove_javascript = True + encoding = 'utf-8' + + extra_css = ''' + .fotodesc{font-size: 75%;} + .pub_data{font-size: 75%;} + .fotonews{clear: both; padding-top: 10px; padding-bottom: 10px;} + #pub_foto{font-size: 75%; float: left; padding-right: 10px;} + ''' + + feeds = [ + (u'Dziennik Internautów', u'http://feeds.feedburner.com/glowny-di') + ] + + keep_only_tags = [ + dict(name = 'div', attrs = {'id' : 'pub_head'}), + dict(name = 'div', attrs = {'id' : 'pub_content'}) + ] + + remove_tags = [ + dict(name = 'div', attrs = {'class' : 'poradniki_context'}), + dict(name = 'div', attrs = {'class' : 'uniBox'}), + dict(name = 'object', attrs = {}), + dict(name = 'h3', attrs = {}) + ] + + preprocess_regexps = [ + (re.compile(i[0], re.IGNORECASE | re.DOTALL), i[1]) for i in + [ + (r', ', lambda match: '
    '), + (r'http://di.com.pl/pic/photo/mini/', lambda match: 'http://di.com.pl/pic/photo/oryginal/'), + (r'\s*' ''' eksiazki.org @@ -10,17 +10,17 @@ from calibre.web.feeds.news import BasicNewsRecipe class eksiazki(BasicNewsRecipe): - title = u'eksiazki.org' - desciption = u'Twoje centrum wiedzy o epapierze i ebookach' + title = u'eKsiazki.org' + desciption = u'Twoje centrum wiedzy o ePapierze i eBookach' language = 'pl' __author__ = u'Tomasz D\u0142ugosz' no_stylesheets = True remove_javascript = True - feeds = [(u'wpisy', u'http://www.eksiazki.org/feed/')] + feeds = [(u'eKsiazki.org', u'http://www.eksiazki.org/feed/')] keep_only_tags = [dict(name='div', attrs={'id':'content-body'})] remove_tags = [ - dict(name='span', attrs={'class':'nr_comm'}), - dict(name='div', attrs={'id':'tabsContainer'}), + dict(name='span', attrs={'class':'nr_comm'}), + dict(name='div', attrs={'id':'tabsContainer'}), dict(name='div', attrs={'class':'next_previous_links'})] diff --git a/resources/recipes/interia_fakty.recipe b/resources/recipes/interia_fakty.recipe new file mode 100644 index 0000000000..cdd245fdd7 --- /dev/null +++ b/resources/recipes/interia_fakty.recipe @@ -0,0 +1,38 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' +__copyright__ = u'2010, Tomasz Dlugosz ' +''' +fakty.interia.pl +''' + +from calibre.web.feeds.news import BasicNewsRecipe + +class InteriaFakty(BasicNewsRecipe): + title = u'Interia.pl - Fakty' + language = 'pl' + oldest_article = 7 + __author__ = u'Tomasz D\u0142ugosz' + simultaneous_downloads = 2 + no_stylesheets = True + remove_javascript = True + max_articles_per_feed = 100 + + feeds = [(u'Kraj', u'http://kanaly.rss.interia.pl/kraj.xml'), + (u'\u015awiat', u'http://kanaly.rss.interia.pl/swiat.xml'), + (u'Wiadomo\u015bci dnia', u'http://kanaly.rss.interia.pl/fakty.xml'), + (u'Przegl\u0105d prasy', u'http://kanaly.rss.interia.pl/przeglad_prasy.xml'), + (u'Wywiady', u'http://kanaly.rss.interia.pl/wywiady.xml'), + (u'Ciekawostki', u'http://kanaly.rss.interia.pl/ciekawostki.xml')] + + keep_only_tags = [dict(name='div', attrs={'id':'article'})] + + remove_tags = [ + dict(name='div', attrs={'class':'box fontSizeSwitch'}), + dict(name='div', attrs={'class':'clear'}), + dict(name='div', attrs={'class':'embed embedLeft articleEmbedArticleList articleEmbedArticleListTitle'}), + dict(name='span', attrs={'class':'keywords'})] + + extra_css = ''' + h2 { font-size: 1.2em; } + ''' diff --git a/resources/recipes/interia_sport.recipe b/resources/recipes/interia_sport.recipe new file mode 100644 index 0000000000..9c72ee28a7 --- /dev/null +++ b/resources/recipes/interia_sport.recipe @@ -0,0 +1,71 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' +__copyright__ = u'2010, Tomasz Dlugosz ' +''' +sport.interia.pl +''' + +import re +from calibre.web.feeds.news import BasicNewsRecipe + +class InteriaSport(BasicNewsRecipe): + title = u'Interia.pl - Sport' + language = 'pl' + oldest_article = 7 + __author__ = u'Tomasz D\u0142ugosz' + simultaneous_downloads = 3 + no_stylesheets = True + remove_javascript = True + max_articles_per_feed = 100 + + feeds = [(u'Wydarzenia sportowe', u'http://kanaly.rss.interia.pl/sport.xml'), + (u'Pi\u0142ka no\u017cna', u'http://kanaly.rss.interia.pl/pilka_nozna.xml'), + (u'Siatk\xf3wka', u'http://kanaly.rss.interia.pl/siatkowka.xml'), + (u'Koszyk\xf3wka', u'http://kanaly.rss.interia.pl/koszykowka.xml'), + (u'NBA', u'http://kanaly.rss.interia.pl/nba.xml'), + (u'Kolarstwo', u'http://kanaly.rss.interia.pl/kolarstwo.xml'), + (u'\u017bu\u017cel', u'http://kanaly.rss.interia.pl/zuzel.xml'), + (u'Tenis', u'http://kanaly.rss.interia.pl/tenis.xml')] + + keep_only_tags = [dict(name='div', attrs={'id':'article'})] + + remove_tags = [dict(name='div', attrs={'class':'object gallery'})] + + extra_css = ''' + .articleDate { + font-size: 0.5em; + color: black; + } + + .articleFoto { + display: block; + font-family: sans; + font-size: 0.5em; + text-indent: 0 + color: black; + } + + .articleText { + display: block; + margin-bottom: 1em; + margin-left: 0; + margin-right: 0; + margin-top: 1em + color: black; + } + + .articleLead { + font-size: 1.2em; + } + ''' + + preprocess_regexps = [ + (re.compile(i[0], re.IGNORECASE | re.DOTALL), i[1]) for i in + [ + (r'

    ', lambda match: ''), + # FIXME + #(r'(
    )(.*?)()(.*?)()', lambda match: '\1\2\4'), + (r'

    ()?(ZOBACZ|CZYTAJ) T.*?

    ', lambda match: '
    ') + ] + ] diff --git a/resources/recipes/legeartis.recipe b/resources/recipes/legeartis.recipe new file mode 100644 index 0000000000..7d5de45035 --- /dev/null +++ b/resources/recipes/legeartis.recipe @@ -0,0 +1,43 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' +__author__ = 'Mori' +__version__ = 'v. 0.1' +''' +olgierd.bblog.pl +''' + +from calibre.web.feeds.news import BasicNewsRecipe + +class LegeArtisRecipe(BasicNewsRecipe): + __author__ = 'Mori' + language = 'pl' + + title = u'Lege Artis' + publisher = u'Olgierd Rudak' + description = u'Wszystko, co chcieliby\xc5\x9bcie wiedzie\xc4\x87 o prawie, ale wstydzicie si\xc4\x99 zapyta\xc4\x87' + + max_articles_per_feed = 100 + + no_stylesheets = True + remove_javascript = True + + extra_css = ''' + img{clear: both;} + ''' + + feeds = [ + (u'Lege Artis', u'http://olgierd.bblog.pl/rss/rss20.xml') + ] + + keep_only_tags = [ + dict(name = 'div', attrs = {'class' : 'post_title'}), + dict(name = 'div', attrs = {'class' : 'post_date'}), + dict(name = 'div', attrs = {'class' : 'post_content'}) + ] + + remove_tags = [ + dict(name = 'div', attrs = {'id' : 'bb_tools'}), + dict(name = 'div', attrs = {'class' : 'post_comments'}), + dict(name = 'object', attrs = {}) + ] diff --git a/resources/recipes/legitymizm.recipe b/resources/recipes/legitymizm.recipe new file mode 100644 index 0000000000..468f1b1d6b --- /dev/null +++ b/resources/recipes/legitymizm.recipe @@ -0,0 +1,49 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' +__copyright__ = u'2010, Tomasz Dlugosz ' +''' +legitymizm.org +''' + +from calibre.web.feeds.news import BasicNewsRecipe + +class Legitymizm(BasicNewsRecipe): + title = u'Organizacja Monarchist\xf3w Polskich' + language = 'pl' + oldest_article = 7 + __author__ = u'Tomasz D\u0142ugosz' + max_articles_per_feed = 100 + cover_url = 'http://www.legitymizm.org/img_omp/logo.gif' + no_stylesheets = True + + feeds = [(u'Aktualno\u015bci i publicystyka', u'http://www.legitymizm.org/rss.php')] + + keep_only_tags = [dict(name='div', attrs={'id':'szeroka_kolumna'})] + remove_tags = [dict(name = 'div', attrs = {'class' : 'koniec_tresci_wlasciwej'}), + dict(name = 'div', attrs = {'class' : 'return'})] + + extra_css = ''' + body { font-family: Georgia, 'Times New Roman', Times, serif; } + h1 { color: #898981; font-weight: normal; font-size: 26px; letter-spacing: -1px; line-height: 23px; text-align: left; } + h2, h3 { font-weight: normal; font-size: 20px; line-height: 23px; letter-spacing: -1px; margin: 0 0 3px 0; text-align: left; } + #szeroka_kolumna { float: left; line-height: 20px; } + #szeroka_kolumna ul.wykaz { list-style-type: none; margin: 0 0 1.2em 0; padding: 0; } + #szeroka_kolumna ul.wykaz li.wykaz_2 { font-weight: bold; margin: 0.6em 0 0 0; } + #szeroka_kolumna ul.wykaz a { text-decoration: none; } + #szeroka_kolumna ul.wykaz li.wykaz_1, #szeroka_kolumna ul.wykaz li.wykaz_2 ul li { list-style-type: square; color: #898981; text-transform: none; font-weight: normal; padding: 0; } + #szeroka_kolumna ul.wykaz li.wykaz_1 { margin: 0 0 0 1.3em; } + #szeroka_kolumna ul.wykaz li.wykaz_2 ul { margin: 0; padding: 0 0 0 1.3em; } + #szeroka_kolumna h3.autor { background-color: #898981; color: #f9f9f8; margin: -25px 0px 30px 0; text-align: left; padding: 0 0 0 2px; } + .tresc_wlasciwa { border-top: 1px solid #898981; padding: 30px 0px 0px 0px; position: relative; } + #cytat { font-size: 11px; line-height: 19px; font-style: italic; text-align: justify; } + #cytat img { width: 100px; height: 105px; float: right; margin: 3px 0 0 10px; } + .duzy_cytat { padding: 20px 20px 10px 20px; margin: 0 0 1.2em 0; } + #szeroka_kolumna img, #szeroka_kolumna object { padding: 3px; border: 1px solid #898981; } + #szeroka_kolumna img.ilustracja { margin: 0px 10px 0 0; float: left; } + p { margin: 0 0 1.2em 0; } + #cytat p.sentencja { margin: 0; } + #cytat p.sentencja:first-letter { font-size: 44px; line-height: 33px; margin: 0 2px 0 0; font-style: normal; float: left; display: block; } + p.autor { text-transform: uppercase; color: #898981; font-style: normal; text-align: left; } + ''' + diff --git a/resources/recipes/michalkiewicz.recipe b/resources/recipes/michalkiewicz.recipe new file mode 100644 index 0000000000..ba58ba432b --- /dev/null +++ b/resources/recipes/michalkiewicz.recipe @@ -0,0 +1,26 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' +__copyright__ = '2010, Tomasz Dlugosz ' +''' +michalkiewicz.pl +''' + +from calibre.web.feeds.news import BasicNewsRecipe + +# + +class michalkiewicz(BasicNewsRecipe): + title = u'Stanis\u0142aw Michalkiewicz' + desciption = u'Strona autorska * felietony * artyku\u0142y * komentarze' + __author__ = u'Tomasz D\u0142ugosz' + language = 'pl' + oldest_article = 7 + max_articles_per_feed = 100 + no_stylesheets = True + + keep_only_tags = [dict(name='div', attrs={'class':'modul_srodek'})] + remove_tags = [dict(name='ul', attrs={'class':'menu'})] + + feeds = [(u'Teksty', u'http://www.michalkiewicz.pl/rss.xml')] + diff --git a/resources/recipes/nczas.recipe b/resources/recipes/nczas.recipe new file mode 100644 index 0000000000..ccf963e43a --- /dev/null +++ b/resources/recipes/nczas.recipe @@ -0,0 +1,35 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' +__copyright__ = '2010, Tomasz Dlugosz ' +''' +nczas.com +''' + +from calibre.web.feeds.news import BasicNewsRecipe + +# + +class NCzas(BasicNewsRecipe): + title = u'Najwy\u017cszy Czas!' + desciption = u'Najwy\u017cszy Czas!\nwydanie internetowe' + __author__ = u'Tomasz D\u0142ugosz' + language = 'pl' + oldest_article = 7 + max_articles_per_feed = 100 + no_stylesheets = True + cover_url = 'http://nczas.com/wp-content/themes/default/grafika/logo.png' + + keep_only_tags = [dict(name='div', attrs={'class':'trescartykulu'})] + + feeds = [(u'Najwy\u017cszy Czas!', u'http://nczas.com/feed/')] + + def postprocess_html(self, soup, first): + + for tag in soup.findAll(name= 'img', alt=""): + tag.extract() + + for item in soup.findAll(align = "right"): + del item['align'] + + return soup From ad117486c1c1995412fd5764e551199a510ae125 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 19 Feb 2010 10:28:56 -0700 Subject: [PATCH 139/164] Implement #4909 (Feature request: allow URL arguments to ebook-convert --cover) --- src/calibre/ebooks/conversion/cli.py | 8 ++++++-- src/calibre/ebooks/conversion/plumber.py | 18 +++++++++++++++++- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/calibre/ebooks/conversion/cli.py b/src/calibre/ebooks/conversion/cli.py index fa1b4056db..0b5c15b3f0 100644 --- a/src/calibre/ebooks/conversion/cli.py +++ b/src/calibre/ebooks/conversion/cli.py @@ -233,14 +233,18 @@ def create_option_parser(args, log): return parser, plumber +def abspath(x): + if x.startswith('http:') or x.startswith('https:'): + return x + return os.path.abspath(os.path.expanduser(x)) + def main(args=sys.argv): log = Log() parser, plumber = create_option_parser(args, log) opts = parser.parse_args(args)[0] - y = lambda q : os.path.abspath(os.path.expanduser(q)) for x in ('read_metadata_from_opf', 'cover'): if getattr(opts, x, None) is not None: - setattr(opts, x, y(getattr(opts, x))) + setattr(opts, x, abspath(getattr(opts, x))) recommendations = [(n.dest, getattr(opts, n.dest), OptionRecommendation.HIGH) \ for n in parser.options_iter() diff --git a/src/calibre/ebooks/conversion/plumber.py b/src/calibre/ebooks/conversion/plumber.py index 9bb3a71c03..339f1f92ec 100644 --- a/src/calibre/ebooks/conversion/plumber.py +++ b/src/calibre/ebooks/conversion/plumber.py @@ -424,7 +424,7 @@ OptionRecommendation(name='author_sort', OptionRecommendation(name='cover', recommended_value=None, level=OptionRecommendation.LOW, - help=_('Set the cover to the specified file.')), + help=_('Set the cover to the specified file or URL')), OptionRecommendation(name='comments', recommended_value=None, level=OptionRecommendation.LOW, @@ -638,6 +638,20 @@ OptionRecommendation(name='timestamp', continue setattr(mi, x, val) + def download_cover(self, url): + from calibre import browser + from PIL import Image + from cStringIO import StringIO + from calibre.ptempfile import PersistentTemporaryFile + self.log('Downloading cover from %r'%url) + br = browser() + raw = br.open_novisit(url).read() + buf = StringIO(raw) + pt = PersistentTemporaryFile('.jpg') + pt.close() + img = Image.open(buf) + img.convert('RGB').save(pt.name) + return pt.name def read_user_metadata(self): ''' @@ -655,6 +669,8 @@ OptionRecommendation(name='timestamp', mi = MetaInformation(opf) self.opts_to_mi(mi) if mi.cover: + if mi.cover.startswith('http:') or mi.cover.startswith('https:'): + mi.cover = self.download_cover(mi.cover) mi.cover_data = ('', open(mi.cover, 'rb').read()) mi.cover = None self.user_metadata = mi From 0d90ff04d3f407db68536cabf331f29365cd247e Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 19 Feb 2010 10:38:16 -0700 Subject: [PATCH 140/164] ... --- src/calibre/utils/date.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/utils/date.py b/src/calibre/utils/date.py index 9a433e3a6d..fb9d3e90b0 100644 --- a/src/calibre/utils/date.py +++ b/src/calibre/utils/date.py @@ -72,7 +72,7 @@ def qt_to_dt(qdate_or_qdatetime, as_utc=True): return dt.astimezone(_utc_tz if as_utc else _local_tz) def fromtimestamp(ctime, as_utc=True): - dt = datetime.utcfromtimestamp().replace(tzinfo=_utc_tz) + dt = datetime.utcfromtimestamp(ctime).replace(tzinfo=_utc_tz) if not as_utc: dt = dt.astimezone(_local_tz) return dt From c1e71855909d55602bef710e05fea6777d67394d Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 19 Feb 2010 11:12:09 -0700 Subject: [PATCH 141/164] Handle multiple file drops onto dock icon in OS X correctly --- src/calibre/gui2/__init__.py | 15 +++++++++++++-- src/calibre/gui2/ui.py | 21 +++++++++++++++------ 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py index fed22f87e2..870010b168 100644 --- a/src/calibre/gui2/__init__.py +++ b/src/calibre/gui2/__init__.py @@ -2,9 +2,11 @@ __license__ = 'GPL v3' __copyright__ = '2008, Kovid Goyal ' """ The GUI """ import os +from threading import RLock + from PyQt4.QtCore import QVariant, QFileInfo, QObject, SIGNAL, QBuffer, Qt, QSize, \ QByteArray, QTranslator, QCoreApplication, QThread, \ - QEvent + QEvent, QTimer from PyQt4.QtGui import QFileDialog, QMessageBox, QPixmap, QFileIconProvider, \ QIcon, QTableView, QApplication, QDialog, QPushButton @@ -533,6 +535,8 @@ class Application(QApplication): self._translator = None self.load_translations() qt_app = self + self._file_open_paths = [] + self._file_open_lock = RLock() if islinux: self.setStyleSheet(''' @@ -545,6 +549,11 @@ class Application(QApplication): } ''') + def _send_file_open_events(self): + with self._file_open_lock: + self.file_event_hook(self._file_open_paths) + self._file_open_paths = [] + def load_translations(self): if self._translator is not None: @@ -557,7 +566,9 @@ class Application(QApplication): if callable(self.file_event_hook) and e.type() == QEvent.FileOpen: path = unicode(e.file()) if os.access(path, os.R_OK): - self.file_event_hook(path) + with self._file_open_lock: + self._file_open_paths.append(path) + QTimer.singleShot(self._send_file_open_events, 1000) return True else: return QApplication.event(self, e) diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index c16b868b34..110224e4f2 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -988,15 +988,23 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): self.cover_cache.refresh([cid]) self.library_view.model().current_changed(current_idx, current_idx) - def add_filesystem_book(self, path, allow_device=True): - if os.access(path, os.R_OK): - books = [os.path.abspath(path)] + def _add_filesystem_book(self, paths, allow_device=True): + if isinstance(paths, basestring): + paths = [paths] + books = [os.path.abspath(path) for path in paths is os.access(path, + os.R_OK)] + + if books: to_device = allow_device and self.stack.currentIndex() != 0 self._add_books(books, to_device) if to_device: self.status_bar.showMessage(\ _('Uploading books to device.'), 2000) + + def add_filesystem_book(self, paths, allow_device=True): + Dispatcher(self._add_filesystem_book)(paths, allow_device=allow_device) + def add_books(self, checked): ''' Add books from the local filesystem to either the library or the device. @@ -1042,11 +1050,11 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): infos, on_card=on_card) self.status_bar.showMessage( _('Uploading books to device.'), 2000) - if self._adder.number_of_books_added > 0: + if getattr(self._adder, 'number_of_books_added', 0) > 0: self.library_view.model().books_added(self._adder.number_of_books_added) if hasattr(self, 'db_images'): self.db_images.reset() - if self._adder.critical: + if getattr(self._adder, 'critical', None) is not None: det_msg = [] for name, log in self._adder.critical.items(): if isinstance(name, str): @@ -1056,7 +1064,8 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): _('Failed to read metadata from the following')+':', det_msg='\n\n'.join(det_msg), show=True) - self._adder.cleanup() + if hasattr(self._adder, 'cleanup'): + self._adder.cleanup() self._adder = None From 762fc523101fcb4d7551df5fa5c41ff7af2a8b7f Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 19 Feb 2010 12:03:02 -0700 Subject: [PATCH 142/164] Fix #4849 (drap and drop) --- src/calibre/gui2/__init__.py | 18 ++++++++++-------- src/calibre/gui2/ui.py | 12 ++++++++---- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py index 870010b168..bcbb777aca 100644 --- a/src/calibre/gui2/__init__.py +++ b/src/calibre/gui2/__init__.py @@ -6,7 +6,7 @@ from threading import RLock from PyQt4.QtCore import QVariant, QFileInfo, QObject, SIGNAL, QBuffer, Qt, QSize, \ QByteArray, QTranslator, QCoreApplication, QThread, \ - QEvent, QTimer + QEvent, QTimer, pyqtSignal from PyQt4.QtGui import QFileDialog, QMessageBox, QPixmap, QFileIconProvider, \ QIcon, QTableView, QApplication, QDialog, QPushButton @@ -236,16 +236,17 @@ def human_readable(size): return size + " " + suffix class Dispatcher(QObject): - '''Convenience class to ensure that a function call always happens in the GUI thread''' - SIGNAL = SIGNAL('dispatcher(PyQt_PyObject,PyQt_PyObject)') + '''Convenience class to ensure that a function call always happens in the + thread the reciver was created in.''' + dispatch_signal = pyqtSignal(object, object) def __init__(self, func): QObject.__init__(self) self.func = func - self.connect(self, self.SIGNAL, self.dispatch, Qt.QueuedConnection) + self.dispatch_signal.connect(self.dispatch, type=Qt.QueuedConnection) def __call__(self, *args, **kwargs): - self.emit(self.SIGNAL, args, kwargs) + self.dispatch_signal.emit(args, kwargs) def dispatch(self, args, kwargs): self.func(*args, **kwargs) @@ -551,8 +552,9 @@ class Application(QApplication): def _send_file_open_events(self): with self._file_open_lock: - self.file_event_hook(self._file_open_paths) - self._file_open_paths = [] + if self._file_open_paths: + self.file_event_hook(self._file_open_paths) + self._file_open_paths = [] def load_translations(self): @@ -568,7 +570,7 @@ class Application(QApplication): if os.access(path, os.R_OK): with self._file_open_lock: self._file_open_paths.append(path) - QTimer.singleShot(self._send_file_open_events, 1000) + QTimer.singleShot(1000, self._send_file_open_events) return True else: return QApplication.event(self, e) diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index 110224e4f2..756ac113dc 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -601,6 +601,8 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): if dynamic.get('tag_view_visible', False): self.status_bar.tag_view_button.toggle() + self._add_filesystem_book = Dispatcher(self.__add_filesystem_book) + def resizeEvent(self, ev): MainWindow.resizeEvent(self, ev) @@ -988,10 +990,11 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): self.cover_cache.refresh([cid]) self.library_view.model().current_changed(current_idx, current_idx) - def _add_filesystem_book(self, paths, allow_device=True): + def __add_filesystem_book(self, paths, allow_device=True): + print 222, paths if isinstance(paths, basestring): paths = [paths] - books = [os.path.abspath(path) for path in paths is os.access(path, + books = [path for path in map(os.path.abspath, paths) if os.access(path, os.R_OK)] if books: @@ -1003,7 +1006,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): def add_filesystem_book(self, paths, allow_device=True): - Dispatcher(self._add_filesystem_book)(paths, allow_device=allow_device) + self._add_filesystem_book(paths, allow_device=allow_device) def add_books(self, checked): ''' @@ -1054,12 +1057,13 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): self.library_view.model().books_added(self._adder.number_of_books_added) if hasattr(self, 'db_images'): self.db_images.reset() - if getattr(self._adder, 'critical', None) is not None: + if getattr(self._adder, 'critical', None): det_msg = [] for name, log in self._adder.critical.items(): if isinstance(name, str): name = name.decode(filesystem_encoding, 'replace') det_msg.append(name+'\n'+log) + warning_dialog(self, _('Failed to read metadata'), _('Failed to read metadata from the following')+':', det_msg='\n\n'.join(det_msg), show=True) From 171c8d889c58aada9081bf94a74d888ec8aacd41 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 19 Feb 2010 12:50:20 -0700 Subject: [PATCH 143/164] Store datetimes in db in same format as before --- Changelog.yaml | 65 ++++++++++++++++++++++++++++++++ src/calibre/library/database2.py | 18 +++++++-- src/calibre/library/sqlite.py | 2 +- 3 files changed, 81 insertions(+), 4 deletions(-) diff --git a/Changelog.yaml b/Changelog.yaml index 3b5dcd8d10..a4b7984a40 100644 --- a/Changelog.yaml +++ b/Changelog.yaml @@ -4,6 +4,71 @@ # for important features/bug fixes. # Also, each release can have new and improved recipes. +- version: 0.6.41 + date: 2010-02-19 + + new features: + - title: "Make calibre timezone aware. This required lots of internal changes, so I may have broken something" + type: major + + - title: "Allow editing of metadata in DRMed MOBI files" + type: major + + - title: "ebook-convert: Allow passing URLs as argument to --cover" + tickets: [4909] + + - title: "OS X/linux driver for EB511" + + - title: "ebook-meta: Allow changing of published date" + + - title: "Make replacing of files in ZIP archives faster and (hopefully) more robust" + + - title: "Speed optimization for viewing large EPUB files" + + - title: "Speed up parsing of OPF files" + tickets: [4908] + + bug fixes: + - title: "Fix drag and drop of multiple books to OS X dock icon" + tickets: [4849] + + - title: "MOBI Output: Encode titles as UTF-8 in the PalmDoc header as well as the EXTH header, since there are apparently MOBI readers that use the title from the PalmDoc header in preference to the title from the EXTH header." + + - title: "MOBI Output: Remove soft hyphens as the Kindle doesn't support them." + tickets: [4887] + + - title: "Fix Boox main mem and SD card swapped on windows" + + - title: "Fix sending large ebook fiels to devices" + tickets: [4896] + + - title: "EPUB Output: Strip invalid anchors from NCX TOC as Adobe Digital Editions cries when it sees one" + tickets: [4907] + + - title: "EPUB metadata: Don't set title_sort as a file_as attribute, as the brain-dead OPF spec doesn't allow this" + + - title: "Make publishing the content server via mDNS a little more robust" + + - title: "Content server: Use new exact matching for greater precision when generating OPDS catalogs. Also fix regression that broke rowsing by Tags on Stanza." + + - title: "Proper fix for breakage in LRF viewer caused by API change in QGraphicsItem in Qt 4.6" + + new recipes: + - title: Various Polish news sources + author: Tomaz Dlugosz + + - title: Que Leer, Wired UK + author: Darko Miletic + + - title: Kathermini and Ta Nea + author: Pan + + - title: Winter Olympics + author: Starson17 + + improved recipes: + - Wired Magazine + - version: 0.6.40 date: 2010-02-12 diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index 2f3319b2c9..27c009b10a 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -1482,7 +1482,7 @@ class LibraryDatabase2(LibraryDatabase): mi.title, mi.authors = title, ['calibre'] mi.tags = [_('Catalog')] - mi.pubdate = mi.timestamp = nowf() + mi.pubdate = mi.timestamp = utcnow() self.set_metadata(db_id, mi) self.add_format(db_id, format, stream, index_is_id=True) @@ -1511,6 +1511,10 @@ class LibraryDatabase2(LibraryDatabase): self.data.books_added([id], self) self.set_path(id, index_is_id=True) self.conn.commit() + if mi.pubdate is None: + mi.pubdate = utcnow() + if mi.timestamp is None: + mi.timestamp = utcnow() self.set_metadata(id, mi) self.add_format(id, format, stream, index_is_id=True) @@ -1548,6 +1552,10 @@ class LibraryDatabase2(LibraryDatabase): self.data.books_added([id], self) self.set_path(id, True) self.conn.commit() + if mi.timestamp is None: + mi.timestamp = utcnow() + if mi.pubdate is None: + mi.pubdate = utcnow() self.set_metadata(id, mi) if cover is not None: self.set_cover(id, cover) @@ -1583,7 +1591,9 @@ class LibraryDatabase2(LibraryDatabase): self.set_path(id, True) self.conn.commit() if mi.timestamp is None: - mi.timestamp = nowf() + mi.timestamp = utcnow() + if mi.pubdate is None: + mi.pubdate = utcnow() self.set_metadata(id, mi) npath = self.run_import_plugins(path, format) format = os.path.splitext(npath)[-1].lower().replace('.', '').upper() @@ -1616,7 +1626,9 @@ class LibraryDatabase2(LibraryDatabase): self.data.books_added([id], self) self.set_path(id, True) if mi.timestamp is None: - mi.timestamp = nowf() + mi.timestamp = utcnow() + if mi.pubdate is None: + mi.pubdate = utcnow() self.set_metadata(id, mi, ignore_errors=True) for path in formats: ext = os.path.splitext(path)[1][1:].lower() diff --git a/src/calibre/library/sqlite.py b/src/calibre/library/sqlite.py index 498d00005a..39b857952d 100644 --- a/src/calibre/library/sqlite.py +++ b/src/calibre/library/sqlite.py @@ -23,7 +23,7 @@ def convert_timestamp(val): return parse_date(val, as_utc=False) def adapt_datetime(dt): - return isoformat(dt) + return isoformat(dt, sep=' ') sqlite.register_adapter(datetime, adapt_datetime) sqlite.register_converter('timestamp', convert_timestamp) From d1a5068617c92d4a8ed7aafed6845bf17966671d Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 19 Feb 2010 12:50:38 -0700 Subject: [PATCH 144/164] version 0.6.41 --- src/calibre/constants.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/constants.py b/src/calibre/constants.py index ff8a575e26..aec392a859 100644 --- a/src/calibre/constants.py +++ b/src/calibre/constants.py @@ -2,7 +2,7 @@ __license__ = 'GPL v3' __copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net' __docformat__ = 'restructuredtext en' __appname__ = 'calibre' -__version__ = '0.6.40' +__version__ = '0.6.41' __author__ = "Kovid Goyal " import re From 63c4f94f95d5d754ab66cd6e0f5cf3abee0fe15d Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 19 Feb 2010 13:26:16 -0700 Subject: [PATCH 145/164] IGN:Tag release --- src/calibre/translations/calibre.pot | 961 ++++++++++++++------------- 1 file changed, 509 insertions(+), 452 deletions(-) diff --git a/src/calibre/translations/calibre.pot b/src/calibre/translations/calibre.pot index 7286a7301b..83efdfcea1 100644 --- a/src/calibre/translations/calibre.pot +++ b/src/calibre/translations/calibre.pot @@ -4,9 +4,9 @@ # msgid "" msgstr "" -"Project-Id-Version: calibre 0.6.40\n" -"POT-Creation-Date: 2010-02-12 15:13+MST\n" -"PO-Revision-Date: 2010-02-12 15:13+MST\n" +"Project-Id-Version: calibre 0.6.41\n" +"POT-Creation-Date: 2010-02-19 12:51+MST\n" +"PO-Revision-Date: 2010-02-19 12:51+MST\n" "Last-Translator: Automatically generated\n" "Language-Team: LANGUAGE\n" "MIME-Version: 1.0\n" @@ -28,6 +28,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58 #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:205 +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:280 +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:283 #: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:418 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:69 @@ -36,10 +38,10 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1894 #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1896 #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:24 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:229 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:260 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:263 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:363 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:230 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:261 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:264 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:364 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:35 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:60 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:46 @@ -48,23 +50,22 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:107 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:109 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:224 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:329 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:444 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:894 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:889 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:39 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:28 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:49 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/topaz.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/txt.py:14 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:44 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:70 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:79 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:121 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:155 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:609 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:799 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:43 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:69 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:81 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:122 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:156 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:610 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:800 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:51 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:909 @@ -97,8 +98,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:233 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:235 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:276 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:279 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:286 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:131 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:138 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:21 @@ -112,22 +113,22 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:144 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:455 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:453 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:171 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:406 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:428 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:952 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1078 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:950 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1077 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:185 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:281 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:285 #: /home/kovid/work/calibre/src/calibre/library/database.py:913 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:744 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:756 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1185 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1222 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1600 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1602 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1718 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:745 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:757 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1186 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1223 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1615 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1617 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1737 #: /home/kovid/work/calibre/src/calibre/library/server.py:645 #: /home/kovid/work/calibre/src/calibre/library/server.py:721 #: /home/kovid/work/calibre/src/calibre/library/server.py:768 @@ -135,8 +136,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:77 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:46 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:49 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:47 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:50 msgid "Unknown" msgstr "" @@ -144,19 +145,19 @@ msgstr "" msgid "Base" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:150 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:149 msgid "File type" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:184 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:183 msgid "Metadata reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:215 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:214 msgid "Metadata writer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:241 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:240 msgid "Catalog generator" msgstr "" @@ -430,10 +431,14 @@ msgstr "" msgid "Communicate with the BOOX eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:17 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:18 msgid "Communicate with the Hanvon N520 eBook reader." msgstr "" +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:40 +msgid "Communicate with the Elonex EB 511 eBook reader." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/iliad/driver.py:16 msgid "Communicate with the IRex Iliad eBook reader." msgstr "" @@ -536,12 +541,12 @@ msgstr "" msgid "Removing books from device..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:209 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:207 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:177 msgid "Sending metadata to device..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:215 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:213 msgid "Communicate with the Sony PRS-600/700/900 eBook reader." msgstr "" @@ -589,11 +594,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:799 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:824 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:232 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:233 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1109 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1113 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1500 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1110 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1114 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1503 msgid "News" msgstr "" @@ -645,6 +650,91 @@ msgstr "" msgid "Removing books from device metadata listing..." msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:33 +msgid "%prog [options] mybook.chm" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:34 +msgid "Output directory. Defaults to current directory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:37 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:589 +msgid "Set the book title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:591 +msgid "Set sort key for the title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:593 +msgid "Set the author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:43 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:595 +msgid "Set sort key for the author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:45 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:597 +msgid "The category this book belongs to. E.g.: History" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:48 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:600 +msgid "Path to a graphic that will be set as this files' thumbnail" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:51 +msgid "Path to a txt file containing a comment." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:54 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:607 +msgid "Extract thumbnail from LRF file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:55 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:608 +msgid "Set the publisher" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:56 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:609 +msgid "Set the book classification" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:57 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:610 +msgid "Set the book creator" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:58 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:611 +msgid "Set the book producer" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:60 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:613 +msgid "Extract cover from LRF file. Note that the LRF format has no defined cover, so we use some heuristics to guess the cover." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:62 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:615 +msgid "Set book ID" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:64 +msgid "Set font delta" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:203 +msgid "dummy option until real options are determined." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:200 msgid "Rendered %s" msgstr "" @@ -768,250 +858,261 @@ msgstr "" msgid "List builtin recipes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:252 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:256 msgid "Output saved to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:92 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:93 msgid "Level of verbosity. Specify multiple times for greater verbosity." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:99 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:100 msgid "Save the output from different stages of the conversion pipeline to the specified directory. Useful if you are unsure at which stage of the conversion process a bug is occurring." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:108 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:109 msgid "Specify the input profile. The input profile gives the conversion system information on how to interpret various information in the input document. For example resolution dependent lengths (i.e. lengths in pixels). Choices are:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:119 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:120 msgid "Specify the output profile. The output profile tells the conversion system how to optimize the created document for the specified device. In some cases, an output profile is required to produce documents that will work on a device. For example EPUB on the SONY reader. Choices are:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:130 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:131 msgid "The base font size in pts. All font sizes in the produced book will be rescaled based on this size. By choosing a larger size you can make the fonts in the output bigger and vice versa. By default, the base font size is chosen based on the output profile you chose." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:140 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:141 msgid "Mapping from CSS font names to font sizes in pts. An example setting is 12,12,14,16,18,20,22,24. These are the mappings for the sizes xx-small to xx-large, with the final size being for huge fonts. The font rescaling algorithm uses these sizes to intelligently rescale fonts. The default is to use a mapping based on the output profile you chose." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:152 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:153 msgid "Disable all rescaling of font sizes." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:159 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:160 msgid "The line height in pts. Controls spacing between consecutive lines of text. By default no line height manipulation is performed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:167 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:168 msgid "Some badly designed documents use tables to control the layout of text on the page. When converted these documents often have text that runs off the page and other artifacts. This option will extract the content from the tables and present it in a linear fashion." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:177 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:178 msgid "XPath expression that specifies all tags that should be added to the Table of Contents at level one. If this is specified, it takes precedence over other forms of auto-detection." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:186 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:187 msgid "XPath expression that specifies all tags that should be added to the Table of Contents at level two. Each entry is added under the previous level one entry." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:194 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:195 msgid "XPath expression that specifies all tags that should be added to the Table of Contents at level three. Each entry is added under the previous level two entry." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:202 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:203 msgid "Normally, if the source file already has a Table of Contents, it is used in preference to the auto-generated one. With this option, the auto-generated one is always used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:210 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:211 msgid "Don't add auto-detected chapters to the Table of Contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:217 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:218 msgid "If fewer than this number of chapters is detected, then links are added to the Table of Contents. Default: %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:224 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:225 msgid "Maximum number of links to insert into the TOC. Set to 0 to disable. Default is: %default. Links are only added to the TOC if less than the threshold number of chapters were detected." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:232 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:233 msgid "Remove entries from the Table of Contents whose titles match the specified regular expression. Matching entries and all their children are removed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:243 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:244 msgid "An XPath expression to detect chapter titles. The default is to consider

    or

    tags that contain the words \"chapter\",\"book\",\"section\" or \"part\" as chapter titles as well as any tags that have class=\"chapter\". The expression used must evaluate to a list of elements. To disable chapter detection, use the expression \"/\". See the XPath Tutorial in the calibre User Manual for further help on using this feature." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:257 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:258 msgid "Specify how to mark detected chapters. A value of \"pagebreak\" will insert page breaks before chapters. A value of \"rule\" will insert a line before chapters. A value of \"none\" will disable chapter marking and a value of \"both\" will use both page breaks and lines to mark chapters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:267 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:268 msgid "Either the path to a CSS stylesheet or raw CSS. This CSS will be appended to the style rules from the source file, so it can be used to override those rules." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:276 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:277 msgid "An XPath expression. Page breaks are inserted before the specified elements." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:282 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:283 msgid "Set the top margin in pts. Default is %default. Note: 72 pts equals 1 inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:287 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:288 msgid "Set the bottom margin in pts. Default is %default. Note: 72 pts equals 1 inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:292 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:293 msgid "Set the left margin in pts. Default is %default. Note: 72 pts equals 1 inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:297 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:298 msgid "Set the right margin in pts. Default is %default. Note: 72 pts equals 1 inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:302 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:303 msgid "Do not force text to be justified in output. Whether text is actually displayed justified or not depends on whether the ebook format and reading device support justification." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:309 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:310 msgid "Remove spacing between paragraphs. Also sets an indent on paragraphs of 1.5em. Spacing removal will not work if the source file does not use paragraphs (

    or

    tags)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:317 msgid "When calibre removes inter paragraph spacing, it automatically sets a paragraph indent, to ensure that paragraphs can be easily distinguished. This option controls the width of that indent." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:323 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:324 msgid "Use the cover detected from the source file in preference to the specified cover." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:329 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:330 msgid "Insert a blank line between paragraphs. Will not work if the source file does not use paragraphs (

    or

    tags)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:336 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:337 msgid "Remove the first image from the input ebook. Useful if the first image in the source file is a cover and you are specifying an external cover." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:344 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:345 msgid "Insert the book metadata at the start of the book. This is useful if your ebook reader does not support displaying/searching metadata directly." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:352 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:353 msgid "Attempt to detect and correct hard line breaks and other problems in the source file. This may make things worse, so use with care." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:360 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:361 msgid "Use a regular expression to try and remove the header." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:367 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:368 msgid "The regular expression to use to remove the header." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:373 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:374 msgid "Use a regular expression to try and remove the footer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:380 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:381 msgid "The regular expression to use to remove the footer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:387 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:388 msgid "Read metadata from the specified OPF file. Metadata read from this file will override any metadata in the source file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:394 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:395 msgid "Transliterate unicode characters to an ASCII representation. Use with care because this will replace unicode characters with ASCII. For instance it will replace \"%s\" with \"Mikhail Gorbachiov\". Also, note that in cases where there are multiple representations of a character (characters shared by Chinese and Japanese for instance) the representation used by the largest number of people will be used (Chinese in the previous example)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:409 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:37 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:410 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:38 msgid "Set the title." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:413 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:414 msgid "Set the authors. Multiple authors should be separated by ampersands." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:418 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:419 msgid "The version of the title to be used for sorting. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:422 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:423 msgid "String to be used when sorting by author. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:426 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:51 -msgid "Set the cover to the specified file." +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:427 +msgid "Set the cover to the specified file or URL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:430 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:53 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:431 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:54 msgid "Set the ebook description." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:434 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:55 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:435 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:56 msgid "Set the ebook publisher." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:438 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:59 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:439 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:60 msgid "Set the series this ebook belongs to." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:442 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:61 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:443 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:62 msgid "Set the index of the book in this series." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:446 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:63 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:447 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:64 msgid "Set the rating. Should be a number between 1 and 5." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:450 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:65 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:451 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:66 msgid "Set the ISBN of the book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:454 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:67 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:455 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:68 msgid "Set the tags for the book. Should be a comma separated list." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:458 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:69 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:459 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:70 msgid "Set the book producer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:462 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:71 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:463 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:72 msgid "Set the language." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:562 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:467 +msgid "Set the publication date." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:471 +msgid "Set the book timestamp (used by the date column in calibre)." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:571 msgid "Could not find an ebook inside the archive" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:620 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:629 msgid "Values of series index and rating must be numbers. Ignoring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:740 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:636 +msgid "Failed to parse date/time" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:773 msgid "Converting input to HTML..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:763 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:796 msgid "Running transforms on ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:850 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:883 msgid "Creating" msgstr "" @@ -1213,62 +1314,10 @@ msgid "" "\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:589 -msgid "Set the book title" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:591 -msgid "Set sort key for the title" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:593 -msgid "Set the author" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:595 -msgid "Set sort key for the author" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:597 -msgid "The category this book belongs to. E.g.: History" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:600 -msgid "Path to a graphic that will be set as this files' thumbnail" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:603 msgid "Path to a txt file containing the comment to be stored in the lrf file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:607 -msgid "Extract thumbnail from LRF file" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:608 -msgid "Set the publisher" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:609 -msgid "Set the book classification" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:610 -msgid "Set the book creator" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:611 -msgid "Set the book producer" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:613 -msgid "Extract cover from LRF file. Note that the LRF format has no defined cover, so we use some heuristics to guess the cover." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:615 -msgid "Set book ID" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:90 msgid "Enable autorotation of images that are wider than the screen width." msgstr "" @@ -1317,37 +1366,37 @@ msgstr "" msgid "Comic" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:362 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:363 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:45 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:56 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:167 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:403 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1144 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1140 msgid "Title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:363 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:364 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:168 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:408 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1145 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1141 msgid "Author(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:364 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:365 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:173 msgid "Publisher" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:365 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:366 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:49 msgid "Producer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:366 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:367 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:183 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:100 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:67 @@ -1356,17 +1405,17 @@ msgstr "" msgid "Comments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:374 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:375 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:174 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:353 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1088 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1148 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1085 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1144 #: /home/kovid/work/calibre/src/calibre/gui2/status.py:96 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 msgid "Tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:376 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:377 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:175 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:369 #: /home/kovid/work/calibre/src/calibre/gui2/status.py:95 @@ -1374,26 +1423,26 @@ msgstr "" msgid "Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:377 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:378 msgid "Language" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:379 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1087 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:380 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1084 msgid "Timestamp" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:381 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:382 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:61 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:171 msgid "Published" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:383 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:384 msgid "Rights" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/amazon.py:78 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/amazon.py:76 msgid "EDITORIAL REVIEW" msgstr "" @@ -1401,11 +1450,11 @@ 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/cli.py:19 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:20 msgid "options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:20 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:21 msgid "" "\n" "Read/Write metadata from/to ebook files.\n" @@ -1419,59 +1468,67 @@ msgid "" "silently ignored.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:40 msgid "Set the authors. Multiple authors should be separated by the & character. Author names should be in the order Firstname Lastname." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:43 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:44 msgid "The version of the title to be used for sorting. If unspecified, and the title is specified, it will be auto-generated from the title." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:47 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:48 msgid "String to be used when sorting by author. If unspecified, and the author(s) are specified, it will be auto-generated from the author(s)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:57 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:52 +msgid "Set the cover to the specified file." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:58 msgid "Set the book category." msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:74 -msgid "Get the cover from the ebook and save it at as the specified file." +msgid "Set the published date." msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:77 -msgid "Specify the name of an OPF file. The metadata will be written to the OPF file." +msgid "Get the cover from the ebook and save it at as the specified file." msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:80 +msgid "Specify the name of an OPF file. The metadata will be written to the OPF file." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:83 msgid "Read metadata from the specified OPF file and use it to set metadata in the ebook. Metadata specified on the command line will override metadata read from the OPF file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:85 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:88 msgid "Set the BookID in LRF files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:148 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:153 msgid "No file specified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:163 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:168 msgid "Original metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:180 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:185 msgid "Changed metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:192 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:197 msgid "OPF created in" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:198 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:203 msgid "Cover saved to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:200 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:205 msgid "No cover found" msgstr "" @@ -1564,7 +1621,7 @@ msgid "" "Fetch a cover image for the book identified by ISBN from LibraryThing.com\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1083 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1080 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1347 msgid "Cover" msgstr "" @@ -1965,120 +2022,120 @@ msgstr "" msgid "Force splitting on the max-line-length value when no space is present. Also allows max-line-length to be below the minimum" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:29 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:31 msgid "Send file to storage card instead of main memory by default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:31 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:33 msgid "Confirm before deleting" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:33 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:35 msgid "Toolbar icon size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:37 msgid "Show button labels in the toolbar" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:37 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:39 msgid "Main window geometry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:41 msgid "Notify when a new version is available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:41 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:43 msgid "Use Roman numerals for series number" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:45 msgid "Sort tags list by popularity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:47 msgid "Number of covers to show in the cover browsing mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:49 msgid "Defaults for conversion to LRF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:51 msgid "Options for the LRF ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 msgid "Formats that are viewed using the internal viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 msgid "Columns to be displayed in the book list" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:57 msgid "Automatically launch content server on application startup" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:58 msgid "Oldest news kept in database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:59 msgid "Show system tray icon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:61 msgid "Upload downloaded news to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:63 msgid "Delete books from library after uploading to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:65 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:65 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:67 msgid "Disable notifications from the system tray icon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:69 msgid "Default action to perform when send to device button is clicked" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:91 msgid "Maximum number of waiting worker processes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:93 msgid "Download social metadata (tags/rating/etc.)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:95 msgid "Overwrite author and title with new metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:95 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:97 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:135 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:439 msgid "Copied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:169 msgid "Copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:169 msgid "Copy to Clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:398 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:401 msgid "Choose Files" msgstr "" @@ -2108,7 +2165,7 @@ msgid "No books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:205 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1400 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1413 msgid "No books found" msgstr "" @@ -2220,9 +2277,9 @@ msgid "E-book options" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:271 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1464 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1478 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:280 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1465 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1484 msgid "Catalog" msgstr "" @@ -2883,7 +2940,7 @@ msgid "RB Output" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1645 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1658 msgid "Choose the format to view" msgstr "" @@ -3387,7 +3444,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:110 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:360 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1083 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1082 #: /home/kovid/work/calibre/src/calibre/gui2/status.py:92 msgid "Path" msgstr "" @@ -3420,7 +3477,7 @@ msgid "My Books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:67 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:285 msgid "Generate catalog" msgstr "" @@ -3541,7 +3598,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:478 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:823 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1249 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1262 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 msgid "Error" msgstr "" @@ -3611,7 +3668,7 @@ msgid "Access log:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:677 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:660 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:662 msgid "Failed to start content server" msgstr "" @@ -3884,7 +3941,7 @@ msgid "&Remove email" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 -msgid "calibre can send your books to you (or your reader) by email" +msgid "calibre can send your books to you (or your reader) by email. Emails will be automatically sent for downloaded news to all email addresses that have Auto-send checked." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 @@ -4230,7 +4287,7 @@ msgid "Choose formats for " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:137 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1005 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1016 msgid "Books" msgstr "" @@ -4272,67 +4329,67 @@ msgstr "" msgid "Abort the editing of all remaining books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:408 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:413 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:406 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:411 msgid "This ISBN number is valid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:416 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:414 msgid "This ISBN number is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:512 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:510 msgid "Downloading cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:524 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:529 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:527 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:533 msgid "Cannot fetch cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:525 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:536 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:523 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:534 msgid "Could not fetch cover.
    " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:524 msgid "The download timed out." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:528 msgid "Could not find cover for this book. Try specifying the ISBN first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:542 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:540 msgid "Bad cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:543 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:541 msgid "The cover is not a valid picture" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:573 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:571 msgid "There were errors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:574 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:572 msgid "There were errors downloading social metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:604 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:601 msgid "Cannot fetch metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:605 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:602 msgid "You must specify at least one of ISBN, Title, Authors or Publisher" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:675 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:671 msgid "Permission denied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:676 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:672 msgid "Could not open %s. Is it being used by another program?" msgstr "" @@ -4416,36 +4473,36 @@ msgstr "" msgid "Aborting..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:118 msgid "Need username and password" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:119 msgid "You must provide a username and/or password to use this news source." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170 msgid "Created by: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:177 msgid "Last downloaded: never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:192 msgid "%d days, %d hours and %d minutes ago" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:194 msgid "Last downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:214 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:190 msgid "Schedule news download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:217 msgid "Add a custom news source" msgstr "" @@ -4986,12 +5043,12 @@ msgid " - Jobs" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/library.py:169 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1146 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1142 msgid "Size (MB)" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/library.py:170 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1147 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1143 msgid "Date" msgstr "" @@ -5013,19 +5070,19 @@ msgstr "" msgid "Book %s of %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:882 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:880 msgid "Not allowed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:883 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:881 msgid "Dropping onto a device is not supported. First add the book to the calibre library." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1082 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1081 msgid "Format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1136 +#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1132 msgid "Double click to edit me

    " msgstr "" @@ -5429,11 +5486,11 @@ msgstr "" msgid "Fetch news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:276 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:297 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:277 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:298 msgid "The following books have already been converted to %s format. Do you wish to reconvert them?" msgstr "" @@ -5514,7 +5571,7 @@ msgid "Save to disk in a single directory" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1750 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1763 msgid "Save only %s format to disk" msgstr "" @@ -5569,7 +5626,7 @@ msgid "Calibre Library" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:486 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1906 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1919 msgid "Choose a location for your ebook library." msgstr "" @@ -5577,27 +5634,27 @@ msgstr "" msgid "Calibre Quick Start Guide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:704 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:706 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:852 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:854 msgid "Device: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:856 msgid " detected." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:878 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:880 msgid "Connected " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:890 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:892 msgid "Device database corrupted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:891 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:893 msgid "" "\n" "

    The database of books on the reader is corrupted. Try the following:\n" @@ -5608,308 +5665,308 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:953 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:955 msgid "How many empty books?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:954 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:956 msgid "How many empty books should be added?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:998 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1044 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1005 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1055 msgid "Uploading books to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1006 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1017 msgid "EPUB Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1007 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1018 msgid "LRF Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1008 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1019 msgid "HTML Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1009 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1020 msgid "LIT Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1010 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1021 msgid "MOBI Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1011 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1022 msgid "Text books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1012 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1023 msgid "PDF Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1013 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1024 msgid "Comics" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1014 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1025 msgid "Archives" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1018 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1029 msgid "Supported books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1055 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1067 msgid "Failed to read metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1056 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1068 msgid "Failed to read metadata from the following" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1075 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1088 msgid "Cannot delete" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1078 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1639 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1655 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1091 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1652 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1668 msgid "No book selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1088 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1101 msgid "Choose formats to be deleted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1106 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1119 msgid "Choose formats not to be deleted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1144 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1157 msgid "The selected books will be permanently deleted and the files removed from your computer. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1171 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1184 msgid "Deleting books from device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1202 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1215 msgid "Cannot download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1203 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1260 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1293 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1318 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1377 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1495 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1216 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1273 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1306 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1331 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1390 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1508 msgid "No books selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1218 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1231 msgid "social metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1220 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1233 msgid "covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1220 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1233 msgid "metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1222 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1235 msgid "Downloading %s for %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1244 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1257 msgid "Failed to download some metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1245 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1258 msgid "Failed to download metadata for the following:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1248 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1261 msgid "Failed to download metadata:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1259 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1292 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1272 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1305 msgid "Cannot edit metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1317 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1330 msgid "Cannot save to disk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1320 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1333 msgid "Choose destination directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1347 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1360 msgid "Error while saving" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1348 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1361 msgid "There was an error while saving." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1355 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1356 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1368 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1369 msgid "Could not save some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1357 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1370 msgid "Click the show details button to see which ones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1378 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1391 msgid "No books selected to generate catalog for" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1395 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1408 msgid "Generating %s catalog..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1401 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1414 msgid "" "No books to catalog\n" "Check exclude tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1411 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1424 msgid "Catalog generated." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1414 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1427 msgid "Export Catalog Directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1415 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1428 msgid "Select destination for %s.%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1429 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1442 msgid "Fetching news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1443 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1456 msgid " fetched." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1494 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1507 msgid "Cannot convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1523 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1536 msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1639 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1692 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1652 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1705 msgid "Cannot view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1654 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1667 msgid "Cannot open folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1676 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1689 msgid "Multiple Books Selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1677 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1690 msgid "You are attempting to open %d books. Opening too many books at once can be slow and have a negative effect on the responsiveness of your computer. Once started the process cannot be stopped until complete. Do you wish to continue?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1693 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1706 msgid "%s has no available formats." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1734 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1747 msgid "Cannot configure" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1735 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1748 msgid "Cannot configure while there are running jobs." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1778 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1791 msgid "No detailed info available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1779 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1792 msgid "No detailed information is available for books on the device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1834 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1847 msgid "Error talking to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1835 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1848 msgid "There was a temporary error talking to the device. Please unplug and reconnect the device and or reboot." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1858 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1886 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1871 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1899 msgid "Conversion Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1859 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1872 msgid "

    Could not convert: %s

    It is a DRMed book. You must first remove the DRM using third party tools." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1872 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1885 msgid "Recipe Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1887 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1900 msgid "Failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1915 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1928 msgid "Invalid library location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1916 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1929 msgid "Could not access %s. Using %s as the library." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1966 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1979 msgid "is the result of the efforts of many volunteers from all over the world. If you find it useful, please consider donating to support its development." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1991 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2004 msgid "There are active jobs. Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1994 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2007 msgid "" " is communicating with the device!
    \n" " Quitting may cause corruption on the device.
    \n" " Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1998 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2011 msgid "WARNING: Active jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2050 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2063 msgid "will keep running in the system tray. To close it, choose Quit in the context menu of the system tray." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2069 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2082 msgid "Latest version: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2077 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2090 msgid "Update available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2078 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2091 msgid "%s has been updated to version %s. See the new features. Visit the download page?" msgstr "" @@ -6654,7 +6711,7 @@ msgstr "" msgid "The maximum number of matches to return per OPDS query. This affects Stanza, WordPlayer, etc. integration." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:35 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:38 msgid "" "The fields to output when cataloging books in the database. Should be a comma-separated list of fields.\n" "Available fields: %s.\n" @@ -6662,7 +6719,7 @@ msgid "" "Applies to: CSV, XML output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:44 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:48 msgid "" "Output field to sort on.\n" "Available fields: author_sort, id, rating, size, timestamp, title.\n" @@ -6670,28 +6727,28 @@ msgid "" "Applies to: CSV, XML output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:253 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:260 msgid "" "Title of generated catalog used as title in metadata.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:259 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:267 msgid "" "Save the output from different stages of the conversion pipeline to the specified directory. Useful if you are unsure at which stage of the conversion process a bug is occurring.\n" "Default: '%default'None\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:268 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:277 msgid "" "Regex describing tags to exclude as genres.\n" "Default: '%default' excludes bracketed tags, e.g. '[]'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:273 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:283 msgid "" "Comma-separated list of tag words indicating book should be excluded from output. Case-insensitive.\n" "--exclude-tags=skip will match 'skip this book' and 'Skip will like this'.\n" @@ -6699,28 +6756,28 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:280 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:291 msgid "" "Include 'Titles' section in catalog.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:286 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:298 msgid "" "Include 'Recently Added' section in catalog.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:292 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:305 msgid "" "Tag prefix for user notes, e.g. '*Jeff might enjoy reading this'.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:298 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:312 msgid "" "Sort titles with leading numbers as text, e.g.,\n" "'2001: A Space Odyssey' sorts as \n" @@ -6729,82 +6786,82 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:304 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:319 msgid "" "Specifies the output profile. In some cases, an output profile is required to optimize the catalog for the device. For example, 'kindle' or 'kindle_dx' creates a structured Table of Contents with Sections and Articles.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:310 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:326 msgid "" "Tag indicating book has been read.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:121 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:122 msgid "Path to the calibre library. Default is to use the path stored in the settings." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:200 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:204 msgid "" "%prog list [options]\n" "\n" "List the books available in the calibre database.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:208 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:212 msgid "" "The fields to display when listing books in the database. Should be a comma separated list of fields.\n" "Available fields: %s\n" "Default: %%default. The special field \"all\" can be used to select all fields. Only has effect in the text output format." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:210 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:214 msgid "" "The field by which to sort the results.\n" "Available fields: %s\n" "Default: %%default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:212 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:216 msgid "Sort results in ascending order" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:214 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:218 msgid "Filter the results by the search query. For the format of the search query, please see the search related documentation in the User Manual. Default is to do no filtering." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:216 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:220 msgid "The maximum width of a single line in the output. Defaults to detecting screen size." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:217 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:221 msgid "The string used to separate fields. Default is a space." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:218 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:222 msgid "The prefix for all file paths. Default is the absolute path to the library folder." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:221 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:225 msgid "The format in which to output the data. Available choices: %s. Defaults is text." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:234 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:238 msgid "Invalid fields. Available fields:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:241 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:245 msgid "Invalid sort field. Available fields:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:312 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:316 msgid "The following books were not added as they already exist in the database (see --duplicates option):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:335 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:339 msgid "" "%prog add [options] file1 file2 file3 ...\n" "\n" @@ -6812,49 +6869,49 @@ msgid "" "the directory related options below.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:344 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:348 msgid "Assume that each directory has only a single logical book and that all files in it are different e-book formats of that book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:346 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:350 msgid "Process directories recursively" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:348 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:352 msgid "Add books to database even if they already exist. Comparison is done based on book titles." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:358 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:362 msgid "You must specify at least one file to add" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:374 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:378 msgid "" "%prog remove ids\n" "\n" "Remove the books identified by ids from the database. ids should be a comma separated list of id numbers (you can get id numbers by using the list command). For example, 23,34,57-85\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:389 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:393 msgid "You must specify at least one book to remove" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:408 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:412 msgid "" "%prog add_format [options] id ebook_file\n" "\n" "Add the ebook in ebook_file to the available formats for the logical book identified by id. You can get id by using the list command. If the format already exists, it is replaced.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:423 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:427 msgid "You must specify an id and an ebook file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:428 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:432 msgid "ebook file must have an extension" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:436 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:440 msgid "" "\n" "%prog remove_format [options] id fmt\n" @@ -6862,11 +6919,11 @@ msgid "" "Remove the format fmt from the logical book identified by id. You can get id by using the list command. fmt should be a file extension like LRF or TXT or EPUB. If the logical book does not have fmt available, do nothing.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:453 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:457 msgid "You must specify an id and a format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:471 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:475 msgid "" "\n" "%prog show_metadata [options] id\n" @@ -6875,15 +6932,15 @@ msgid "" "id is an id number from the list command.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:479 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:483 msgid "Print metadata in OPF form (XML)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:488 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:492 msgid "You must specify an id" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:501 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:505 msgid "" "\n" "%prog set_metadata [options] id /path/to/metadata.opf\n" @@ -6894,11 +6951,11 @@ msgid "" "show_metadata command.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:517 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:521 msgid "You must specify an id and a metadata file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:537 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:541 msgid "" "%prog export [options] ids\n" "\n" @@ -6907,27 +6964,27 @@ msgid "" "an opf file). You can get id numbers from the list command.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:545 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:549 msgid "Export all books in database, ignoring the list of ids." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:547 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:551 msgid "Export books to the specified directory. Default is" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:549 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:553 msgid "Export all books into a single directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:556 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:560 msgid "Specifying this switch will turn this behavior off." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:579 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:583 msgid "You must specify some ids or the %s option" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:634 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:642 msgid "" "\n" " %prog catalog /path/to/destination.(csv|epub|mobi|xml ...) [options]\n" @@ -6937,29 +6994,29 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:648 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:656 msgid "" "Comma-separated list of database IDs to catalog.\n" "If declared, --search is ignored.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:652 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:660 msgid "" "Filter the results by the search query. For the format of the search query, please see the search-related documentation in the User Manual.\n" "Default: no filtering" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:658 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:666 #: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:482 msgid "Show detailed output information. Useful for debugging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:671 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:679 msgid "Error: You must specify a catalog output file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:687 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:699 msgid "" "%%prog command [options] [arguments]\n" "\n" @@ -6971,27 +7028,27 @@ msgid "" "For help on an individual command: %%prog command --help\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1744 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1763 msgid "

    Migrating old database to ebook library in %s

    " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1773 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1792 msgid "Copying %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1790 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1809 msgid "Compacting database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1883 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1902 msgid "Checking SQL integrity..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1920 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1939 msgid "Checking for missing files." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1942 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1961 msgid "Checked id" msgstr "" @@ -7271,13 +7328,13 @@ msgstr "" msgid "Control email delivery" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:103 -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:125 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:102 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:124 msgid "Unknown feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:143 -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:166 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:142 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:165 msgid "Untitled article" msgstr "" @@ -7301,91 +7358,91 @@ msgstr "" msgid "Do not download latest version of builtin recipes from the calibre server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:40 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:39 msgid "Unknown News Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:550 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:549 msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:637 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:636 msgid "Download finished" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:639 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:638 msgid "Failed to download the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:645 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:644 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:647 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:646 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:649 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:648 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:730 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:729 msgid "Could not fetch article. Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:751 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:750 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:756 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:755 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:762 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:761 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:764 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:763 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:842 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:841 msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:858 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:857 msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:868 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:880 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:879 msgid "Downloading cover from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:915 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:914 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1150 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1149 msgid "Untitled Article" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1221 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1220 msgid "Article downloaded: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1232 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1231 msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1249 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1248 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:46 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:47 msgid "You" msgstr "" From 839c03372f5bc0548e65693f3873d0414dcd0fbc Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 19 Feb 2010 19:08:41 -0700 Subject: [PATCH 146/164] Fix regression that broke catalog generation in the GUI --- src/calibre/library/database2.py | 56 +++++++++++++++----------------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index 27c009b10a..1b00865361 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -1458,36 +1458,34 @@ class LibraryDatabase2(LibraryDatabase): def add_catalog(self, path, title): format = os.path.splitext(path)[1][1:].lower() - stream = path if hasattr(path, 'read') else open(path, 'rb') - stream.seek(0) - matches = self.data.get_matches('title', title) - if matches: - tag_matches = self.data.get_matches('tags', _('Catalog')) - matches = matches.intersection(tag_matches) - db_id, existing = None, False - if matches: - db_id = list(matches)[0] - if db_id is None: - obj = self.conn.execute('INSERT INTO books(title, author_sort) VALUES (?, ?)', - (title, 'calibre')) - db_id = obj.lastrowid - self.data.books_added([db_id], self) - self.set_path(db_id, index_is_id=True) - self.conn.commit() - try: - mi = get_metadata(stream, - os.path.splitext(path)[1][1:].lower()) - except: - mi = MetaInformation(title, ['calibre']) + with open(path, 'rb') as stream: + matches = self.data.get_matches('title', '='+title) + if matches: + tag_matches = self.data.get_matches('tags', '='+_('Catalog')) + matches = matches.intersection(tag_matches) + db_id = None + if matches: + db_id = list(matches)[0] + if db_id is None: + obj = self.conn.execute('INSERT INTO books(title, author_sort) VALUES (?, ?)', + (title, 'calibre')) + db_id = obj.lastrowid + self.data.books_added([db_id], self) + self.set_path(db_id, index_is_id=True) + self.conn.commit() + try: + mi = get_metadata(stream, format) + except: + import traceback + traceback.print_exc() + mi = MetaInformation(title, ['calibre']) + stream.seek(0) + mi.title, mi.authors = title, ['calibre'] + mi.tags = [_('Catalog')] + mi.pubdate = mi.timestamp = utcnow() + self.set_metadata(db_id, mi) + self.add_format(db_id, format, stream, index_is_id=True) - mi.title, mi.authors = title, ['calibre'] - mi.tags = [_('Catalog')] - mi.pubdate = mi.timestamp = utcnow() - self.set_metadata(db_id, mi) - - self.add_format(db_id, format, stream, index_is_id=True) - if not hasattr(path, 'read'): - stream.close() self.conn.commit() self.data.refresh_ids(self, [db_id]) # Needed to update format list and size return db_id From 8d3631fc5d99922c57719de2234c963f2858b440 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 19 Feb 2010 19:37:04 -0700 Subject: [PATCH 147/164] Fix #2922 (xkcd, EPUB, PRS-505, border issue) --- src/calibre/customize/profiles.py | 2 +- src/calibre/ebooks/oeb/transforms/rescale.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/calibre/customize/profiles.py b/src/calibre/customize/profiles.py index 1a8e43a233..89e9a30111 100644 --- a/src/calibre/customize/profiles.py +++ b/src/calibre/customize/profiles.py @@ -235,7 +235,7 @@ class SonyReaderOutput(OutputProfile): description = _('This profile is intended for the SONY PRS line. ' 'The 500/505/600/700 etc.') - screen_size = (600, 775) + screen_size = (584, 775) dpi = 168.451 fbase = 12 fsizes = [7.5, 9, 10, 12, 15.5, 20, 22, 24] diff --git a/src/calibre/ebooks/oeb/transforms/rescale.py b/src/calibre/ebooks/oeb/transforms/rescale.py index fbf0e9bc4f..6ed863929c 100644 --- a/src/calibre/ebooks/oeb/transforms/rescale.py +++ b/src/calibre/ebooks/oeb/transforms/rescale.py @@ -53,7 +53,8 @@ class RescaleImages(object): scaled, new_width, new_height = fit_image(width, height, page_width, page_height) if scaled: - self.log('Rescaling image', item.href) + self.log('Rescaling image from %dx%d to %dx%d'%( + width, height, new_width, new_height), item.href) if qt: img = img.scaled(new_width, new_height, Qt.IgnoreAspectRatio, Qt.SmoothTransformation) From 2495b1cc62fe9b102abe250835256f0eb1d6f1d8 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 19 Feb 2010 19:47:37 -0700 Subject: [PATCH 148/164] When rescaling images, take margins into account, unless input document is a comic --- src/calibre/customize/profiles.py | 2 +- src/calibre/ebooks/conversion/plumber.py | 1 + src/calibre/ebooks/oeb/transforms/rescale.py | 3 +++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/calibre/customize/profiles.py b/src/calibre/customize/profiles.py index 89e9a30111..1a8e43a233 100644 --- a/src/calibre/customize/profiles.py +++ b/src/calibre/customize/profiles.py @@ -235,7 +235,7 @@ class SonyReaderOutput(OutputProfile): description = _('This profile is intended for the SONY PRS line. ' 'The 500/505/600/700 etc.') - screen_size = (584, 775) + screen_size = (600, 775) dpi = 168.451 fbase = 12 fsizes = [7.5, 9, 10, 12, 15.5, 20, 22, 24] diff --git a/src/calibre/ebooks/conversion/plumber.py b/src/calibre/ebooks/conversion/plumber.py index 339f1f92ec..b6e7684c48 100644 --- a/src/calibre/ebooks/conversion/plumber.py +++ b/src/calibre/ebooks/conversion/plumber.py @@ -786,6 +786,7 @@ OptionRecommendation(name='timestamp', self.oeb = create_oebbook(self.log, self.oeb, self.opts, self.input_plugin) self.input_plugin.postprocess_book(self.oeb, self.opts, self.log) + self.opts.is_image_collection = self.input_plugin.is_image_collection pr = CompositeProgressReporter(0.34, 0.67, self.ui_reporter) self.flush() if self.opts.debug_pipeline is not None: diff --git a/src/calibre/ebooks/oeb/transforms/rescale.py b/src/calibre/ebooks/oeb/transforms/rescale.py index 6ed863929c..df4cc206a2 100644 --- a/src/calibre/ebooks/oeb/transforms/rescale.py +++ b/src/calibre/ebooks/oeb/transforms/rescale.py @@ -29,6 +29,9 @@ class RescaleImages(object): page_width, page_height = self.opts.dest.width, self.opts.dest.height + if not self.opts.is_image_collection: + page_width -= (self.opts.margin_left + self.opts.margin_right) * self.opts.dest.dpi/72. + page_height -= (self.opts.margin_top + self.opts.margin_bottom) * self.opts.dest.dpi/72. for item in self.oeb.manifest: if item.media_type.startswith('image'): raw = item.data From 673002d89c0cba0492134186e5030f6e1698ee17 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 19 Feb 2010 19:50:02 -0700 Subject: [PATCH 149/164] version 0.6.42 --- Changelog.yaml | 9 +++++++++ src/calibre/constants.py | 2 +- src/calibre/library/database2.py | 4 ++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Changelog.yaml b/Changelog.yaml index a4b7984a40..d8a785dd43 100644 --- a/Changelog.yaml +++ b/Changelog.yaml @@ -4,6 +4,15 @@ # for important features/bug fixes. # Also, each release can have new and improved recipes. +- version: 0.6.42 + date: 2010-02-20 + + bug fixes: + - title: "Fix regression that broke catalog generation from the Graphical User Interface in 0.6.41" + + - title: "Fix right edge of comics like Dilbert and xkcd getting cut off on the SONY reader. More generally, take page margins into account when rescaling images to fit in the selected output profile." + + - version: 0.6.41 date: 2010-02-19 diff --git a/src/calibre/constants.py b/src/calibre/constants.py index aec392a859..8b5191ee5d 100644 --- a/src/calibre/constants.py +++ b/src/calibre/constants.py @@ -2,7 +2,7 @@ __license__ = 'GPL v3' __copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net' __docformat__ = 'restructuredtext en' __appname__ = 'calibre' -__version__ = '0.6.41' +__version__ = '0.6.42' __author__ = "Kovid Goyal " import re diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index 1b00865361..6ccb7363ec 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -1476,13 +1476,13 @@ class LibraryDatabase2(LibraryDatabase): try: mi = get_metadata(stream, format) except: - import traceback - traceback.print_exc() mi = MetaInformation(title, ['calibre']) stream.seek(0) mi.title, mi.authors = title, ['calibre'] mi.tags = [_('Catalog')] mi.pubdate = mi.timestamp = utcnow() + if format == 'mobi': + mi.cover, mi.cover_data = None, (None, None) self.set_metadata(db_id, mi) self.add_format(db_id, format, stream, index_is_id=True) From d9c267d2048ae1943830255ef1a921e21d75d8eb Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 19 Feb 2010 20:30:00 -0700 Subject: [PATCH 150/164] IGN:Tag release --- src/calibre/ebooks/metadata/meta.py | 8 +++++ src/calibre/ebooks/oeb/transforms/rescale.py | 2 +- src/calibre/manual/viewer.rst | 2 +- src/calibre/translations/calibre.pot | 32 ++++++++++---------- 4 files changed, 26 insertions(+), 18 deletions(-) diff --git a/src/calibre/ebooks/metadata/meta.py b/src/calibre/ebooks/metadata/meta.py index 94c0388b99..2d22190ad4 100644 --- a/src/calibre/ebooks/metadata/meta.py +++ b/src/calibre/ebooks/metadata/meta.py @@ -70,6 +70,14 @@ def is_recipe(filename): filename.rpartition('.')[0].endswith('_recipe_out') def get_metadata(stream, stream_type='lrf', use_libprs_metadata=False): + pos = stream.tell() + try: + return _get_metadata(stream, stream_type, use_libprs_metadata) + finally: + stream.seek(pos) + + +def _get_metadata(stream, stream_type, use_libprs_metadata): if stream_type: stream_type = stream_type.lower() if stream_type in ('html', 'html', 'xhtml', 'xhtm', 'xml'): stream_type = 'html' diff --git a/src/calibre/ebooks/oeb/transforms/rescale.py b/src/calibre/ebooks/oeb/transforms/rescale.py index df4cc206a2..980c27d504 100644 --- a/src/calibre/ebooks/oeb/transforms/rescale.py +++ b/src/calibre/ebooks/oeb/transforms/rescale.py @@ -29,7 +29,7 @@ class RescaleImages(object): page_width, page_height = self.opts.dest.width, self.opts.dest.height - if not self.opts.is_image_collection: + if not getattr(self.opts, 'is_image_collection', False): page_width -= (self.opts.margin_left + self.opts.margin_right) * self.opts.dest.dpi/72. page_height -= (self.opts.margin_top + self.opts.margin_bottom) * self.opts.dest.dpi/72. for item in self.oeb.manifest: diff --git a/src/calibre/manual/viewer.rst b/src/calibre/manual/viewer.rst index 70bf98412a..dd70674b99 100644 --- a/src/calibre/manual/viewer.rst +++ b/src/calibre/manual/viewer.rst @@ -1,6 +1,6 @@ .. include:: global.rst -.. _gui: +.. _viewer: The E-book Viewer ============================= diff --git a/src/calibre/translations/calibre.pot b/src/calibre/translations/calibre.pot index 83efdfcea1..44710ffffa 100644 --- a/src/calibre/translations/calibre.pot +++ b/src/calibre/translations/calibre.pot @@ -4,9 +4,9 @@ # msgid "" msgstr "" -"Project-Id-Version: calibre 0.6.41\n" -"POT-Creation-Date: 2010-02-19 12:51+MST\n" -"PO-Revision-Date: 2010-02-19 12:51+MST\n" +"Project-Id-Version: calibre 0.6.42\n" +"POT-Creation-Date: 2010-02-19 19:53+MST\n" +"PO-Revision-Date: 2010-02-19 19:53+MST\n" "Last-Translator: Automatically generated\n" "Language-Team: LANGUAGE\n" "MIME-Version: 1.0\n" @@ -126,9 +126,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/database2.py:757 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1186 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1223 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1613 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1615 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1617 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1737 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1735 #: /home/kovid/work/calibre/src/calibre/library/server.py:645 #: /home/kovid/work/calibre/src/calibre/library/server.py:721 #: /home/kovid/work/calibre/src/calibre/library/server.py:768 @@ -598,7 +598,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1110 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1114 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1503 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1501 msgid "News" msgstr "" @@ -1108,11 +1108,11 @@ msgstr "" msgid "Converting input to HTML..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:796 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:797 msgid "Running transforms on ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:883 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:884 msgid "Creating" msgstr "" @@ -2278,8 +2278,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:280 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1465 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1484 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1464 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1482 msgid "Catalog" msgstr "" @@ -7028,27 +7028,27 @@ msgid "" "For help on an individual command: %%prog command --help\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1763 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1761 msgid "

    Migrating old database to ebook library in %s

    " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1792 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1790 msgid "Copying %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1809 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1807 msgid "Compacting database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1902 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1900 msgid "Checking SQL integrity..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1939 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1937 msgid "Checking for missing files." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1961 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1959 msgid "Checked id" msgstr "" From 7ca92a591c4dcd0c79e073fcc39f78516badcfea Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 20 Feb 2010 09:36:38 -0700 Subject: [PATCH 151/164] Improved reciped for San Frna Chronicle and Houston Chronicle --- resources/recipes/houston_chronicle.recipe | 35 +++++++++++-- resources/recipes/san_fran_chronicle.recipe | 58 ++++++++++++++++++--- src/calibre/ebooks/rtf/preprocess.py | 14 ++--- 3 files changed, 89 insertions(+), 18 deletions(-) diff --git a/resources/recipes/houston_chronicle.recipe b/resources/recipes/houston_chronicle.recipe index 77e35dfc0c..3ec1abbf0f 100644 --- a/resources/recipes/houston_chronicle.recipe +++ b/resources/recipes/houston_chronicle.recipe @@ -1,17 +1,41 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai from calibre.web.feeds.news import BasicNewsRecipe class HoustonChronicle(BasicNewsRecipe): title = u'The Houston Chronicle' description = 'News from Houston, Texas' - __author__ = 'Kovid Goyal' + __author__ = 'Kovid Goyal and Sujata Raman' language = 'en' timefmt = ' [%a, %d %b, %Y]' no_stylesheets = True - keep_only_tags = [dict(id=['story-head', 'story'])] - remove_tags = [dict(id=['share-module', 'resource-box', - 'resource-box-header'])] + keep_only_tags = [ + dict(id=['story-head', 'story']) + ] + + remove_tags = [ + dict(id=['share-module', 'resource-box', + 'resource-box-header']) + ] + + extra_css = ''' + h1{font-family :Arial,Helvetica,sans-serif; font-size:large;} + h2{font-family :Arial,Helvetica,sans-serif; font-size:medium; color:#666666;} + h3{font-family :Arial,Helvetica,sans-serif; font-size:medium; color:#000000;} + h4{font-family :Arial,Helvetica,sans-serif; font-size: x-small;} + p{font-family :Arial,Helvetica,sans-serif; font-size:x-small;} + #story-head h1{font-family :Arial,Helvetica,sans-serif; font-size: xx-large;} + #story-head h2{font-family :Arial,Helvetica,sans-serif; font-size: small; color:#000000;} + #story-head h3{font-family :Arial,Helvetica,sans-serif; font-size: xx-small;} + #story-head h4{font-family :Arial,Helvetica,sans-serif; font-size: xx-small;} + #story{font-family :Arial,Helvetica,sans-serif; font-size:xx-small;} + #Text-TextSubhed BoldCond PoynterAgateZero h3{color:#444444;font-family :Arial,Helvetica,sans-serif; font-size:small;} + .p260x p{font-family :Arial,Helvetica,serif; font-size:x-small;font-style:italic;} + .p260x h6{color:#777777;font-family :Arial,Helvetica,sans-serif; font-size:xx-small;} + ''' + def parse_index(self): soup = self.index_to_soup('http://www.chron.com/news/') @@ -64,3 +88,6 @@ class HoustonChronicle(BasicNewsRecipe): feeds.append((current_section, current_articles)) return feeds + + + diff --git a/resources/recipes/san_fran_chronicle.recipe b/resources/recipes/san_fran_chronicle.recipe index 5649da9bf8..cfdf0b07f0 100644 --- a/resources/recipes/san_fran_chronicle.recipe +++ b/resources/recipes/san_fran_chronicle.recipe @@ -7,10 +7,11 @@ sfgate.com ''' from calibre.web.feeds.news import BasicNewsRecipe +import re class SanFranciscoChronicle(BasicNewsRecipe): title = u'San Francisco Chronicle' - __author__ = u'Darko Miletic' + __author__ = u'Darko Miletic and Sujata Raman' description = u'San Francisco news' language = 'en' @@ -19,13 +20,56 @@ class SanFranciscoChronicle(BasicNewsRecipe): no_stylesheets = True use_embedded_content = False - remove_tags_before = {'class':'articleheadings'} - remove_tags_after = dict(name='div', attrs={'id':'articlecontent' }) - remove_tags = [ - dict(name='div', attrs={'class':'tools tools_top'}) - ,dict(name='div', attrs={'id':'articlebox' }) - ] + + + remove_tags_before = {'id':'printheader'} + + remove_tags = [ + dict(name='div',attrs={'id':'printheader'}) + ,dict(name='a', attrs={'href':re.compile('http://ads\.pheedo\.com.*')}) + ,dict(name='div',attrs={'id':'footer'}) + ] + + extra_css = ''' + h1{font-family :Arial,Helvetica,sans-serif; font-size:large;} + h2{font-family :Arial,Helvetica,sans-serif; font-size:medium; color:#666666;} + h3{font-family :Arial,Helvetica,sans-serif; font-size:medium; color:#000000;} + h4{font-family :Arial,Helvetica,sans-serif; font-size: x-small;} + p{font-family :Arial,Helvetica,sans-serif; font-size:x-small;} + .byline{font-family :Arial,Helvetica,sans-serif; font-size: xx-small;} + .date{font-family :Arial,Helvetica,sans-serif; font-size: xx-small;} + .dtlcomment{font-style:italic;} + .georgia h3{font-family :Arial,Helvetica,sans-serif; font-size:x-small; color:#000000;} + ''' feeds = [ (u'Top News Stories', u'http://www.sfgate.com/rss/feeds/news.xml') ] + + def print_version(self,url): + url= url +"&type=printable" + return url + + def get_article_url(self, article): + print str(article['title_detail']['value']) + url = article.get('guid',None) + url = "http://www.sfgate.com/cgi-bin/article.cgi?f="+url + if "Presented By:" in str(article['title_detail']['value']): + url = '' + return url + + + + + + + + + + + + + + + + diff --git a/src/calibre/ebooks/rtf/preprocess.py b/src/calibre/ebooks/rtf/preprocess.py index 07e6d41fac..a3076651fd 100644 --- a/src/calibre/ebooks/rtf/preprocess.py +++ b/src/calibre/ebooks/rtf/preprocess.py @@ -131,9 +131,9 @@ class RtfTokenParser(): if isString(self.tokens[i].name, "\\'"): i = i + 1 if not isinstance(self.tokens[i], tokenData): - raise BaseException('Error: token8bitChar without data.') + raise Exception('Error: token8bitChar without data.') if len(self.tokens[i].data) < 2: - raise BaseException('Error: token8bitChar without data.') + raise Exception('Error: token8bitChar without data.') newTokens.append(token8bitChar(self.tokens[i].data[0:2])) if len(self.tokens[i].data) > 2: newTokens.append(tokenData(self.tokens[i].data[2:])) @@ -195,7 +195,7 @@ class RtfTokenParser(): i = i + 1 j = j + 1 continue - raise BaseException('Error: incorect utf replacement.') + raise Exception('Error: incorect utf replacement.') #calibre rtf2xml does not support utfreplace replace = [] @@ -248,7 +248,7 @@ class RtfTokenizer(): if isChar(self.rtfData[i], '\\'): if i + 1 >= len(self.rtfData): - raise BaseException('Error: Control character found at the end of the document.') + raise Exception('Error: Control character found at the end of the document.') if lastDataStart > -1: self.tokens.append(tokenData(self.rtfData[lastDataStart : i])) @@ -269,7 +269,7 @@ class RtfTokenizer(): i = i + 1 if not consumed: - raise BaseException('Error (at:%d): Control Word without end.'%(tokenStart)) + raise Exception('Error (at:%d): Control Word without end.'%(tokenStart)) #we have numeric argument before delimiter if isChar(self.rtfData[i], '-') or isDigit(self.rtfData[i]): @@ -283,10 +283,10 @@ class RtfTokenizer(): l = l + 1 i = i + 1 if l > 10 : - raise BaseException('Error (at:%d): Too many digits in control word numeric argument.'%[tokenStart]) + raise Exception('Error (at:%d): Too many digits in control word numeric argument.'%[tokenStart]) if not consumed: - raise BaseException('Error (at:%d): Control Word without numeric argument end.'%[tokenStart]) + raise Exception('Error (at:%d): Control Word without numeric argument end.'%[tokenStart]) separator = '' if isChar(self.rtfData[i], ' '): From 7f6dd779233fa0d72fb73bb9daaa2f756b356c34 Mon Sep 17 00:00:00 2001 From: GRiker Date: Sat, 20 Feb 2010 09:36:48 -0700 Subject: [PATCH 152/164] GwR fix for EPUB anchors beginning with numbers in Recently Added --- src/calibre/library/catalog.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/calibre/library/catalog.py b/src/calibre/library/catalog.py index 97f801cbd7..ded5ac97a8 100644 --- a/src/calibre/library/catalog.py +++ b/src/calibre/library/catalog.py @@ -1585,7 +1585,7 @@ class EPUB_MOBI(CatalogPlugin): pIndexTag = Tag(soup, "p") pIndexTag['class'] = "date_index" aTag = Tag(soup, "a") - aTag['name'] = "%s-%s" % (current_date.year, current_date.month) + aTag['name'] = "bda_%s-%s" % (current_date.year, current_date.month) pIndexTag.insert(0,aTag) pIndexTag.insert(1,NavigableString(date_string)) divTag.insert(dtc,pIndexTag) @@ -1665,7 +1665,7 @@ class EPUB_MOBI(CatalogPlugin): pIndexTag = Tag(soup, "p") pIndexTag['class'] = "date_index" aTag = Tag(soup, "a") - aTag['name'] = date_range.replace(' ','') + aTag['name'] = "bda_%s" % date_range.replace(' ','') pIndexTag.insert(0,aTag) pIndexTag.insert(1,NavigableString(date_range)) divTag.insert(dtc,pIndexTag) @@ -2529,7 +2529,7 @@ class EPUB_MOBI(CatalogPlugin): navLabelTag.insert(0, textTag) navPointByDateRangeTag.insert(0,navLabelTag) contentTag = Tag(soup, 'content') - contentTag['src'] = "%s#%s" % (HTML_file, + contentTag['src'] = "%s#bda_%s" % (HTML_file, books_by_date_range[1].replace(' ','')) navPointByDateRangeTag.insert(1,contentTag) @@ -2581,7 +2581,7 @@ class EPUB_MOBI(CatalogPlugin): datestr = strftime(u'%B %Y', books_by_month[1].timetuple()) navPointByMonthTag = Tag(soup, 'navPoint') navPointByMonthTag['class'] = "article" - navPointByMonthTag['id'] = "%s-%s-ID" % (books_by_month[1].year,books_by_month[1].month ) + navPointByMonthTag['id'] = "bda_%s-%s-ID" % (books_by_month[1].year,books_by_month[1].month ) navPointTag['playOrder'] = self.playOrder self.playOrder += 1 navLabelTag = Tag(soup, 'navLabel') @@ -2590,7 +2590,7 @@ class EPUB_MOBI(CatalogPlugin): navLabelTag.insert(0, textTag) navPointByMonthTag.insert(0,navLabelTag) contentTag = Tag(soup, 'content') - contentTag['src'] = "%s#%s-%s" % (HTML_file, + contentTag['src'] = "%s#bda_%s-%s" % (HTML_file, books_by_month[1].year,books_by_month[1].month) navPointByMonthTag.insert(1,contentTag) From e4b0e9f5186874eac5b874627e01d8e31d865487 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 20 Feb 2010 09:57:35 -0700 Subject: [PATCH 153/164] Fix #4951 (Seach Interface History - Keyword Missmatch) --- src/calibre/utils/search_query_parser.py | 110 +++++++++++------------ 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/src/calibre/utils/search_query_parser.py b/src/calibre/utils/search_query_parser.py index 425b4c2d49..a92d195bff 100644 --- a/src/calibre/utils/search_query_parser.py +++ b/src/calibre/utils/search_query_parser.py @@ -6,14 +6,14 @@ __docformat__ = 'restructuredtext en' ''' A parser for search queries with a syntax very similar to that used by -the Google search engine. +the Google search engine. -For details on the search query syntax see :class:`SearchQueryParser`. -To use the parser, subclass :class:`SearchQueryParser` and implement the -methods :method:`SearchQueryParser.universal_set` and +For details on the search query syntax see :class:`SearchQueryParser`. +To use the parser, subclass :class:`SearchQueryParser` and implement the +methods :method:`SearchQueryParser.universal_set` and :method:`SearchQueryParser.get_matches`. See for example :class:`Tester`. -If this module is run, it will perform a series of unit tests. +If this module is run, it will perform a series of unit tests. ''' import sys, string, operator @@ -24,26 +24,26 @@ from calibre.utils.pyparsing import Keyword, Group, Forward, CharsNotIn, Suppres class SearchQueryParser(object): ''' - Parses a search query. - + Parses a search query. + A search query consists of tokens. The tokens can be combined using - the `or`, `and` and `not` operators as well as grouped using parentheses. + the `or`, `and` and `not` operators as well as grouped using parentheses. When no operator is specified between two tokens, `and` is assumed. - + Each token is a string of the form `location:query`. `location` is a string - from :member:`LOCATIONS`. It is optional. If it is omitted, it is assumed to - be `all`. `query` is an arbitrary string that must not contain parentheses. + from :member:`LOCATIONS`. It is optional. If it is omitted, it is assumed to + be `all`. `query` is an arbitrary string that must not contain parentheses. If it contains whitespace, it should be quoted by enclosing it in `"` marks. - + Examples:: - + * `Asimov` [search for the string "Asimov" in location `all`] * `comments:"This is a good book"` [search for "This is a good book" in `comments`] * `author:Asimov tag:unread` [search for books by Asimov that have been tagged as unread] * `author:Asimov or author:Hardy` [search for books by Asimov or Hardy] - * `(author:Asimov or author:Hardy) and not tag:read` [search for unread books by Asimov or Hardy] + * `(author:Asimov or author:Hardy) and not tag:read` [search for unread books by Asimov or Hardy] ''' - + LOCATIONS = [ 'tag', 'title', @@ -57,12 +57,12 @@ class SearchQueryParser(object): 'isbn', 'all', ] - + @staticmethod def run_tests(parser, result, tests): failed = [] for test in tests: - print '\tTesting:', test[0], + print '\tTesting:', test[0], res = parser.parseString(test[0]) if list(res.get(result, None)) == test[1]: print 'OK' @@ -70,7 +70,7 @@ class SearchQueryParser(object): print 'FAILED:', 'Expected:', test[1], 'Got:', list(res.get(result, None)) failed.append(test[0]) return failed - + def __init__(self, test=False): self._tests_failed = False # Define a token @@ -95,50 +95,50 @@ class SearchQueryParser(object): ('title:"one two"', ['title', 'one two']), ) ) - + Or = Forward() - + Parenthesis = Group( Suppress('(') + Or + Suppress(')') ).setResultsName('parenthesis') | Token - - + + Not = Forward() Not << (Group( Suppress(Keyword("not", caseless=True)) + Not ).setResultsName("not") | Parenthesis) - + And = Forward() And << (Group( Not + Suppress(Keyword("and", caseless=True)) + And ).setResultsName("and") | Group( - Not + OneOrMore(~oneOf("and or") + And) + Not + OneOrMore(~oneOf("and or", caseless=True) + And) ).setResultsName("and") | Not) - + Or << (Group( And + Suppress(Keyword("or", caseless=True)) + Or ).setResultsName("or") | And) - + if test: Or.validate() self._tests_failed = bool(failed) - + self._parser = Or #self._parser.setDebug(True) #self.parse('(tolstoy)') self._parser.setDebug(False) - - + + def parse(self, query): res = self._parser.parseString(query)[0] return self.evaluate(res) - + def method(self, group_name): return getattr(self, 'evaluate_'+group_name) - + def evaluate(self, parse_result): return self.method(parse_result.getName())(parse_result) - + def evaluate_and(self, argument): return self.evaluate(argument[0]).intersection(self.evaluate(argument[1])) @@ -150,27 +150,27 @@ class SearchQueryParser(object): def evaluate_parenthesis(self, argument): return self.evaluate(argument[0]) - + def evaluate_token(self, argument): return self.get_matches(argument[0], argument[1]) - + def get_matches(self, location, query): ''' - Should return the set of matches for :param:'location` and :param:`query`. - + Should return the set of matches for :param:'location` and :param:`query`. + :param:`location` is one of the items in :member:`SearchQueryParser.LOCATIONS`. - :param:`query` is a string literal. + :param:`query` is a string literal. ''' return set([]) - + def universal_set(self): ''' Should return the set of all matches. ''' return set([]) - + class Tester(SearchQueryParser): - + texts = { 1: [u'Eugenie Grandet', u'Honor\xe9 de Balzac', u'manybooks.net', u'lrf'], 2: [u'Fanny Hill', u'John Cleland', u'manybooks.net', u'lrf'], @@ -459,30 +459,30 @@ class Tester(SearchQueryParser): u'Washington Square Press', u'lrf,rar'] } - + tests = { 'Dysfunction' : set([348]), 'title:Dysfunction' : set([348]), - 'title:Dysfunction or author:Laurie': set([348, 444]), + 'title:Dysfunction OR author:Laurie': set([348, 444]), '(tag:txt or tag:pdf)': set([33, 258, 354, 305, 242, 51, 55, 56, 154]), - '(tag:txt or tag:pdf) and author:Tolstoy': set([55, 56]), + '(tag:txt OR tag:pdf) and author:Tolstoy': set([55, 56]), 'Tolstoy txt': set([55, 56]), 'Hamilton Amsterdam' : set([]), u'Beär' : set([91]), 'dysfunc or tolstoy': set([348, 55, 56]), - 'tag:txt and not tolstoy': set([33, 258, 354, 305, 242, 154]), + 'tag:txt AND NOT tolstoy': set([33, 258, 354, 305, 242, 154]), 'not tag:lrf' : set([305]), 'london:thames': set([13]), 'publisher:london:thames': set([13]), '"(1977)"': set([13]), } fields = {'title':0, 'author':1, 'publisher':2, 'tag':3} - + _universal_set = set(texts.keys()) - + def universal_set(self): return self._universal_set - + def get_matches(self, location, query): location = location.lower() if location in self.fields.keys(): @@ -491,19 +491,19 @@ class Tester(SearchQueryParser): getter = lambda y: ''.join(x if x else '' for x in y) else: getter = lambda x: '' - + if not query: - return set([]) + return set([]) query = query.lower() return set(key for key, val in self.texts.items() \ if query and query in getattr(getter(val), 'lower', lambda : '')()) - - - + + + def run_tests(self): failed = [] for query in self.tests.keys(): - print 'Testing query:', query, + print 'Testing query:', query, res = self.parse(query) if res != self.tests[query]: print 'FAILED', 'Expected:', self.tests[query], 'Got:', res @@ -511,7 +511,7 @@ class Tester(SearchQueryParser): else: print 'OK' return failed - + def main(args=sys.argv): tester = Tester(test=True) @@ -519,7 +519,7 @@ def main(args=sys.argv): if tester._tests_failed or failed: print '>>>>>>>>>>>>>> Tests Failed <<<<<<<<<<<<<<<' return 1 - + return 0 if __name__ == '__main__': From dc0562d05eeb30bd46873b0a51a35578eeeb7943 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 20 Feb 2010 11:22:08 -0700 Subject: [PATCH 154/164] Cleanups --- src/calibre/gui2/library.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/calibre/gui2/library.py b/src/calibre/gui2/library.py index bf4fd02fa8..4be4156f1b 100644 --- a/src/calibre/gui2/library.py +++ b/src/calibre/gui2/library.py @@ -1,10 +1,11 @@ -from calibre.ebooks.metadata import authors_to_string __license__ = 'GPL v3' __copyright__ = '2008, Kovid Goyal ' + import os, textwrap, traceback, re, shutil from operator import attrgetter - from math import cos, sin, pi +from contextlib import closing + from PyQt4.QtGui import QTableView, QAbstractItemView, QColor, \ QItemDelegate, QPainterPath, QLinearGradient, QBrush, \ QPen, QStyle, QPainter, \ @@ -22,7 +23,8 @@ from calibre.gui2 import NONE, TableView, qstring_to_unicode, config, \ from calibre.gui2.widgets import EnLineEdit, TagsLineEdit from calibre.utils.search_query_parser import SearchQueryParser from calibre.ebooks.metadata.meta import set_metadata as _set_metadata -from calibre.ebooks.metadata import string_to_authors, fmt_sidx +from calibre.ebooks.metadata import string_to_authors, fmt_sidx, \ + authors_to_string from calibre.utils.config import tweaks from calibre.utils.date import dt_factory, qt_to_dt, isoformat @@ -469,9 +471,10 @@ class BooksModel(QAbstractTableModel): break if format is not None: pt = PersistentTemporaryFile(suffix='.'+format) - src = self.db.format(id, format, index_is_id=True, as_file=True) - shutil.copyfileobj(src, pt) - pt.flush() + with closing(self.db.format(id, format, index_is_id=True, + as_file=True)) as src: + shutil.copyfileobj(src, pt) + pt.flush() pt.seek(0) if set_metadata: _set_metadata(pt, self.db.get_metadata(id, get_cover=True, index_is_id=True), @@ -505,8 +508,10 @@ class BooksModel(QAbstractTableModel): break if format is not None: pt = PersistentTemporaryFile(suffix='.'+format) - pt.write(self.db.format(row, format)) - pt.flush() + with closing(self.db.format(row, format, as_file=True)) as src: + shutil.copyfileobj(src, pt) + pt.flush() + pt.seek(0) if set_metadata: _set_metadata(pt, self.db.get_metadata(row, get_cover=True), format) From 58892090ce38331b9865869eab0f74c36004111d Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 20 Feb 2010 11:33:16 -0700 Subject: [PATCH 155/164] USBMS: Sleep a little before retyring a copy to device --- src/calibre/devices/usbms/cli.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/calibre/devices/usbms/cli.py b/src/calibre/devices/usbms/cli.py index 67d457efe1..829267a0b8 100644 --- a/src/calibre/devices/usbms/cli.py +++ b/src/calibre/devices/usbms/cli.py @@ -4,8 +4,7 @@ __license__ = 'GPL 3' __copyright__ = '2009, John Schember ' __docformat__ = 'restructuredtext en' -import os -import shutil +import os, shutil, time from calibre.devices.errors import PathError @@ -55,6 +54,7 @@ class CLI(object): shutil.copyfileobj(infile, dest) except IOError: print 'WARNING: First attempt to send file to device failed' + time.sleep(0.2) infile.seek(0) dest.seek(0) dest.truncate() From a8ca7b362cce946c59f699d0896532db350e1082 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 20 Feb 2010 11:34:28 -0700 Subject: [PATCH 156/164] ... --- src/calibre/devices/usbms/cli.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/devices/usbms/cli.py b/src/calibre/devices/usbms/cli.py index 829267a0b8..1554d6fce0 100644 --- a/src/calibre/devices/usbms/cli.py +++ b/src/calibre/devices/usbms/cli.py @@ -49,7 +49,7 @@ class CLI(object): d = os.path.dirname(path) if not os.path.exists(d): os.makedirs(d) - with open(path, 'wb') as dest: + with open(path, 'w+b') as dest: try: shutil.copyfileobj(infile, dest) except IOError: From 13e3d2c6101e15b3aa5a02b96fdf33ed9550e877 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 20 Feb 2010 11:58:04 -0700 Subject: [PATCH 157/164] Fix WSJ --- resources/recipes/wsj.recipe | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/resources/recipes/wsj.recipe b/resources/recipes/wsj.recipe index 3ced77023d..835f660b0b 100644 --- a/resources/recipes/wsj.recipe +++ b/resources/recipes/wsj.recipe @@ -69,8 +69,10 @@ class WallStreetJournal(BasicNewsRecipe): soup = self.wsj_get_index() year = strftime('%Y') - for x in soup.findAll('td', attrs={'class':'b14'}): + for x in soup.findAll('td', height='25', attrs={'class':'b14'}): txt = self.tag_to_string(x).strip() + txt = txt.replace(u'\xa0', ' ') + txt = txt.encode('ascii', 'ignore') if year in txt: self.timefmt = ' [%s]'%txt break From b42671831ed64e3ba1d82ad37b1c5d69cf619dde Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 20 Feb 2010 13:04:02 -0700 Subject: [PATCH 158/164] No longer need Qt to generate the default cover for news downloads --- resources/images/library.png | Bin 119269 -> 126719 bytes src/calibre/web/feeds/news.py | 105 +++++++++++++++------------------- 2 files changed, 46 insertions(+), 59 deletions(-) diff --git a/resources/images/library.png b/resources/images/library.png index e093247162575f95e635f36c133257beeade503f..721ef0546d4cefa0cec5e381830f2018522ebe9e 100644 GIT binary patch delta 124989 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

    nMX-&`y$S-D^-&<`F-$5a+(`lDp826z=44=)Xb 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

    oo2=g>umAQh@uK?8wQVOsfg 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 V52lINC5JEofv2mV%Q~loCIA|nnmYgh diff --git a/src/calibre/web/feeds/news.py b/src/calibre/web/feeds/news.py index 6e9c72de26..5b2bb99022 100644 --- a/src/calibre/web/feeds/news.py +++ b/src/calibre/web/feeds/news.py @@ -19,15 +19,13 @@ from calibre.ebooks.BeautifulSoup import BeautifulSoup, NavigableString, CData, from calibre.ebooks.metadata.opf2 import OPFCreator from calibre import entity_to_unicode from calibre.web import Recipe -from calibre.ebooks import render_html from calibre.ebooks.metadata.toc import TOC from calibre.ebooks.metadata import MetaInformation from calibre.web.feeds import feed_from_xml, templates, feeds_from_index, Feed from calibre.web.fetch.simple import option_parser as web2disk_option_parser from calibre.web.fetch.simple import RecursiveFetcher from calibre.utils.threadpool import WorkRequest, ThreadPool, NoResultsPending -from calibre.ptempfile import PersistentTemporaryFile, \ - PersistentTemporaryDirectory +from calibre.ptempfile import PersistentTemporaryFile from calibre.utils.date import now as nowf class BasicNewsRecipe(Recipe): @@ -928,63 +926,52 @@ class BasicNewsRecipe(Recipe): ''' Create a generic cover for recipes that dont have a cover ''' - from calibre.gui2 import is_ok_to_use_qt - if not is_ok_to_use_qt(): - return False - img_data = open(I('library.png'), 'rb').read() - tdir = PersistentTemporaryDirectory('_default_cover') - img = os.path.join(tdir, 'logo.png') - with open(img, 'wb') as g: - g.write(img_data) - img = os.path.basename(img) - html= u'''\ - - - - - - -

    %(title)s

    -

    -
    -
    - calibre -
    -
    -

    %(date)s

    -




    -

    %(author)s

    -








    -

    Produced by %(app)s

    -
    -
    - - - '''%dict(title=self.title if isinstance(self.title, unicode) else self.title.decode(preferred_encoding, 'replace'), - author=self.__author__ if isinstance(self.__author__, unicode) else self.__author__.decode(preferred_encoding, 'replace'), - date=strftime(self.timefmt), - app=__appname__ +' '+__version__, - img=img) - hf = os.path.join(tdir, 'cover.htm') - with open(hf, 'wb') as f: - f.write(html.encode('utf-8')) - renderer = render_html(hf) - if renderer.tb is not None: - self.log.warning('Failed to render default cover') - self.log.debug(renderer.tb) - else: - cover_file.write(renderer.data) + try: + try: + from PIL import Image, ImageDraw, ImageFont + Image, ImageDraw, ImageFont + except ImportError: + import Image, ImageDraw, ImageFont + font_path = P('fonts/liberation/LiberationSerif-Bold.ttf') + font = ImageFont.truetype(font_path, 48) + title = self.title if isinstance(self.title, unicode) else \ + self.title.decode(preferred_encoding, 'replace') + date = strftime(self.timefmt) + app = '['+__appname__ +' '+__version__+']' + + COVER_WIDTH, COVER_HEIGHT = 590, 750 + img = Image.new('RGB', (COVER_WIDTH, COVER_HEIGHT), 'white') + draw = ImageDraw.Draw(img) + # Title + width, height = draw.textsize(title, font=font) + left = max(int((COVER_WIDTH - width)/2.), 0) + top = 15 + draw.text((left, top), title, fill=(0,0,0), font=font) + bottom = top + height + # Date + font = ImageFont.truetype(font_path, 32) + width, height = draw.textsize(date, font=font) + left = max(int((COVER_WIDTH - width)/2.), 0) + draw.text((left, bottom+15), date, fill=(0,0,0), font=font) + # Vanity + font = ImageFont.truetype(font_path, 28) + width, height = draw.textsize(app, font=font) + left = max(int((COVER_WIDTH - width)/2.), 0) + top = COVER_HEIGHT - height - 15 + draw.text((left, top), app, fill=(0,0,0), font=font) + # Logo + logo = Image.open(I('library.png'), 'r') + width, height = logo.size + left = max(int((COVER_WIDTH - width)/2.), 0) + top = max(int((COVER_HEIGHT - height)/2.), 0) + img.paste(logo, (left, top)) + img = img.convert('RGB').convert('P', palette=Image.ADAPTIVE) + + img.convert('RGB').save(cover_file, 'JPEG') cover_file.flush() + except: + self.log.exception('Failed to generate default cover') + return False return True def get_masthead_title(self): From dd0905ad3f1d4811bf3949920d597d0f05dd38d0 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 20 Feb 2010 13:05:15 -0700 Subject: [PATCH 159/164] ... --- src/calibre/web/feeds/news.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/web/feeds/news.py b/src/calibre/web/feeds/news.py index 5b2bb99022..8b1757371d 100644 --- a/src/calibre/web/feeds/news.py +++ b/src/calibre/web/feeds/news.py @@ -933,7 +933,6 @@ class BasicNewsRecipe(Recipe): except ImportError: import Image, ImageDraw, ImageFont font_path = P('fonts/liberation/LiberationSerif-Bold.ttf') - font = ImageFont.truetype(font_path, 48) title = self.title if isinstance(self.title, unicode) else \ self.title.decode(preferred_encoding, 'replace') date = strftime(self.timefmt) @@ -943,6 +942,7 @@ class BasicNewsRecipe(Recipe): img = Image.new('RGB', (COVER_WIDTH, COVER_HEIGHT), 'white') draw = ImageDraw.Draw(img) # Title + font = ImageFont.truetype(font_path, 44) width, height = draw.textsize(title, font=font) left = max(int((COVER_WIDTH - width)/2.), 0) top = 15 From ce5c3e39515e9676ed4da935f3fe31031512ac4b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 20 Feb 2010 13:13:18 -0700 Subject: [PATCH 160/164] Check for successful login in WSJ recipe --- resources/recipes/wsj.recipe | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/resources/recipes/wsj.recipe b/resources/recipes/wsj.recipe index 835f660b0b..25f175f78b 100644 --- a/resources/recipes/wsj.recipe +++ b/resources/recipes/wsj.recipe @@ -50,7 +50,11 @@ class WallStreetJournal(BasicNewsRecipe): br.select_form(nr=0) br['user'] = self.username br['password'] = self.password - br.submit() + res = br.submit() + raw = res.read() + if 'Welcome,' not in raw: + raise ValueError('Failed to log in to wsj.com, check your ' + 'username and password') return br def postprocess_html(self, soup, first): From 3edb183c25c6165bd4169103b19096dc5f1267bd Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 20 Feb 2010 13:42:32 -0700 Subject: [PATCH 161/164] Fix #4958 (Metadata not imported for zipped Mobipocket file) --- src/calibre/ebooks/metadata/meta.py | 7 +++++-- src/calibre/ebooks/metadata/zip.py | 11 +++++++---- src/calibre/ebooks/mobi/reader.py | 5 ++--- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/calibre/ebooks/metadata/meta.py b/src/calibre/ebooks/metadata/meta.py index 2d22190ad4..4f808e3fb0 100644 --- a/src/calibre/ebooks/metadata/meta.py +++ b/src/calibre/ebooks/metadata/meta.py @@ -70,11 +70,14 @@ def is_recipe(filename): filename.rpartition('.')[0].endswith('_recipe_out') def get_metadata(stream, stream_type='lrf', use_libprs_metadata=False): - pos = stream.tell() + pos = 0 + if hasattr(stream, 'tell'): + pos = stream.tell() try: return _get_metadata(stream, stream_type, use_libprs_metadata) finally: - stream.seek(pos) + if hasattr(stream, 'seek'): + stream.seek(pos) def _get_metadata(stream, stream_type, use_libprs_metadata): diff --git a/src/calibre/ebooks/metadata/zip.py b/src/calibre/ebooks/metadata/zip.py index db9d751f3a..08ac132d53 100644 --- a/src/calibre/ebooks/metadata/zip.py +++ b/src/calibre/ebooks/metadata/zip.py @@ -3,9 +3,10 @@ __license__ = 'GPL v3' __copyright__ = '2008, Kovid Goyal ' import os -from zipfile import ZipFile -from cStringIO import StringIO +from calibre.utils.zipfile import ZipFile +from calibre.ptempfile import TemporaryDirectory +from calibre import CurrentDir def get_metadata(stream): from calibre.ebooks.metadata.meta import get_metadata @@ -23,8 +24,10 @@ def get_metadata(stream): stream_type = stream_type[1:] if stream_type in ('lit', 'opf', 'prc', 'mobi', 'fb2', 'epub', 'rb', 'imp', 'pdf', 'lrf'): - stream = StringIO(zf.read(f)) - return get_metadata(stream, stream_type) + with TemporaryDirectory() as tdir: + with CurrentDir(tdir): + path = zf.extract(f) + return get_metadata(open(path, 'rb'), stream_type) raise ValueError('No ebook found in ZIP archive') diff --git a/src/calibre/ebooks/mobi/reader.py b/src/calibre/ebooks/mobi/reader.py index 88396b4346..55a8b2a799 100644 --- a/src/calibre/ebooks/mobi/reader.py +++ b/src/calibre/ebooks/mobi/reader.py @@ -795,8 +795,7 @@ class MobiReader(object): def get_metadata(stream): from calibre.utils.logging import Log - log = Log() - + log = Log(level=Log.DEBUG) mi = MetaInformation(os.path.basename(stream.name), [_('Unknown')]) try: mh = MetadataHeader(stream, log) @@ -823,5 +822,5 @@ def get_metadata(stream): im.convert('RGBA').save(obuf, format='JPEG') mi.cover_data = ('jpg', obuf.getvalue()) except: - log.exception() + log.exception('Failed to read MOBI metadata') return mi From 466fb8f4f647e848fe5c42a68a6fd86694962415 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 20 Feb 2010 14:08:11 -0700 Subject: [PATCH 162/164] Make reading MOBI metadata a little more robust --- src/calibre/ebooks/mobi/reader.py | 17 ++++++++++++----- src/calibre/libunrar.py | 19 ++++++++++++++----- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/src/calibre/ebooks/mobi/reader.py b/src/calibre/ebooks/mobi/reader.py index 55a8b2a799..ae175f1493 100644 --- a/src/calibre/ebooks/mobi/reader.py +++ b/src/calibre/ebooks/mobi/reader.py @@ -795,10 +795,12 @@ class MobiReader(object): def get_metadata(stream): from calibre.utils.logging import Log - log = Log(level=Log.DEBUG) + log = Log() mi = MetaInformation(os.path.basename(stream.name), [_('Unknown')]) try: mh = MetadataHeader(stream, log) + if mh.title and mh.title != _('Unknown'): + mi.title = mh.title if mh.exth is not None: if mh.exth.mi is not None: @@ -817,10 +819,15 @@ def get_metadata(stream): else: data = mh.section_data(mh.first_image_index) buf = cStringIO.StringIO(data) - im = PILImage.open(buf) - obuf = cStringIO.StringIO() - im.convert('RGBA').save(obuf, format='JPEG') - mi.cover_data = ('jpg', obuf.getvalue()) + try: + im = PILImage.open(buf) + except: + log.exception('Failed to read MOBI cover') + else: + obuf = cStringIO.StringIO() + im.convert('RGB').save(obuf, format='JPEG') + mi.cover_data = ('jpg', obuf.getvalue()) except: + log.filter_level = Log.DEBUG log.exception('Failed to read MOBI metadata') return mi diff --git a/src/calibre/libunrar.py b/src/calibre/libunrar.py index 06732b931a..bff284d4c8 100644 --- a/src/calibre/libunrar.py +++ b/src/calibre/libunrar.py @@ -224,6 +224,11 @@ def extract_member(path, match=re.compile(r'\.(jpg|jpeg|gif|png)\s*$', re.I), na f.write(data) f.flush() path = f.name + + def is_match(fname): + return (name is not None and fname == name) or \ + (match is not None and match.search(fname)) + with TemporaryDirectory('_libunrar') as dir: with CurrentDir(dir): open_archive_data = RAROpenArchiveDataEx(ArcName=path, OpenMode=RAR_OM_EXTRACT, CmtBuf=None) @@ -235,14 +240,18 @@ def extract_member(path, match=re.compile(r'\.(jpg|jpeg|gif|png)\s*$', re.I), na while True: if _libunrar.RARReadHeaderEx(arc_data, byref(header_data)) != 0: raise UnRARException('%s has no files'%path) - PFCode = _libunrar.RARProcessFileW(arc_data, RAR_EXTRACT, None, None) - if PFCode != 0: - raise UnRARException(_interpret_process_file_error(PFCode)) file_name = header_data.FileNameW - if (name is not None and file_name == name) or \ - (match is not None and match.search(file_name)): + if is_match(file_name): + PFCode = _libunrar.RARProcessFileW(arc_data, RAR_EXTRACT, None, None) + if PFCode != 0: + raise UnRARException(_interpret_process_file_error(PFCode)) return header_data.FileNameW.replace('/', os.sep), \ open(os.path.join(dir, *header_data.FileNameW.split('/')), 'rb').read() + else: + PFCode = _libunrar.RARProcessFileW(arc_data, RAR_SKIP, None, None) + if PFCode != 0: + raise UnRARException(_interpret_process_file_error(PFCode)) + finally: _libunrar.RARCloseArchive(arc_data) From 76c6434898f70780c05eaa35bdbe91095499ab16 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 20 Feb 2010 14:32:41 -0700 Subject: [PATCH 163/164] Make extracting single files from RAR archives more efficient --- src/calibre/libunrar.py | 75 ++++++++++++++++++++++++----------------- 1 file changed, 44 insertions(+), 31 deletions(-) diff --git a/src/calibre/libunrar.py b/src/calibre/libunrar.py index bff284d4c8..bf38a47d64 100644 --- a/src/calibre/libunrar.py +++ b/src/calibre/libunrar.py @@ -217,7 +217,41 @@ def names(path): finally: _libunrar.RARCloseArchive(arc_data) -def extract_member(path, match=re.compile(r'\.(jpg|jpeg|gif|png)\s*$', re.I), name=None): +def _extract_member(path, match, name): + + def is_match(fname): + return (name is not None and fname == name) or \ + (match is not None and match.search(fname) is not None) + + open_archive_data = RAROpenArchiveDataEx(ArcName=path, OpenMode=RAR_OM_EXTRACT, CmtBuf=None) + arc_data = _libunrar.RAROpenArchiveEx(byref(open_archive_data)) + try: + if open_archive_data.OpenResult != 0: + raise UnRARException(_interpret_open_error(open_archive_data.OpenResult, path)) + header_data = RARHeaderDataEx(CmtBuf=None) + first = True + while True: + if _libunrar.RARReadHeaderEx(arc_data, byref(header_data)) != 0: + raise UnRARException('%s has no files'%path if first + else 'No match found in %s'%path) + file_name = header_data.FileNameW + if is_match(file_name): + PFCode = _libunrar.RARProcessFileW(arc_data, RAR_EXTRACT, None, None) + if PFCode != 0: + raise UnRARException(_interpret_process_file_error(PFCode)) + abspath = os.path.abspath(*file_name.split('/')) + return abspath + else: + PFCode = _libunrar.RARProcessFileW(arc_data, RAR_SKIP, None, None) + if PFCode != 0: + raise UnRARException(_interpret_process_file_error(PFCode)) + first = False + + finally: + _libunrar.RARCloseArchive(arc_data) + +def extract_member(path, match=re.compile(r'\.(jpg|jpeg|gif|png)\s*$', re.I), + name=None, as_file=False): if hasattr(path, 'read'): data = path.read() f = NamedTemporaryFile(suffix='.rar') @@ -225,34 +259,13 @@ def extract_member(path, match=re.compile(r'\.(jpg|jpeg|gif|png)\s*$', re.I), na f.flush() path = f.name - def is_match(fname): - return (name is not None and fname == name) or \ - (match is not None and match.search(fname)) - - with TemporaryDirectory('_libunrar') as dir: - with CurrentDir(dir): - open_archive_data = RAROpenArchiveDataEx(ArcName=path, OpenMode=RAR_OM_EXTRACT, CmtBuf=None) - arc_data = _libunrar.RAROpenArchiveEx(byref(open_archive_data)) - try: - if open_archive_data.OpenResult != 0: - raise UnRARException(_interpret_open_error(open_archive_data.OpenResult, path)) - header_data = RARHeaderDataEx(CmtBuf=None) - while True: - if _libunrar.RARReadHeaderEx(arc_data, byref(header_data)) != 0: - raise UnRARException('%s has no files'%path) - file_name = header_data.FileNameW - if is_match(file_name): - PFCode = _libunrar.RARProcessFileW(arc_data, RAR_EXTRACT, None, None) - if PFCode != 0: - raise UnRARException(_interpret_process_file_error(PFCode)) - return header_data.FileNameW.replace('/', os.sep), \ - open(os.path.join(dir, *header_data.FileNameW.split('/')), 'rb').read() - else: - PFCode = _libunrar.RARProcessFileW(arc_data, RAR_SKIP, None, None) - if PFCode != 0: - raise UnRARException(_interpret_process_file_error(PFCode)) - - finally: - _libunrar.RARCloseArchive(arc_data) - + path = os.path.abspath(path) + if as_file: + path = _extract_member(path, match, name) + return path, open(path, 'rb') + else: + with TemporaryDirectory('_libunrar') as tdir: + with CurrentDir(tdir): + path = _extract_member(path, match, name) + return path, open(path, 'rb').read() From b3011cad5956b44832de63493847b28b2589c1b9 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 20 Feb 2010 14:34:47 -0700 Subject: [PATCH 164/164] Fix reading metadata from MOBI files in RAR archives --- src/calibre/ebooks/metadata/rar.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/calibre/ebooks/metadata/rar.py b/src/calibre/ebooks/metadata/rar.py index 896e3d7777..d23577eab1 100644 --- a/src/calibre/ebooks/metadata/rar.py +++ b/src/calibre/ebooks/metadata/rar.py @@ -8,9 +8,10 @@ Read metadata from RAR archives ''' import os -from cStringIO import StringIO -from calibre.ptempfile import PersistentTemporaryFile + +from calibre.ptempfile import PersistentTemporaryFile, TemporaryDirectory from calibre.libunrar import extract_member, names +from calibre import CurrentDir def get_metadata(stream): from calibre.ebooks.metadata.archive import is_comic @@ -32,8 +33,10 @@ def get_metadata(stream): stream_type = stream_type[1:] if stream_type in ('lit', 'opf', 'prc', 'mobi', 'fb2', 'epub', 'rb', 'imp', 'pdf', 'lrf'): - data = extract_member(path, match=None, name=f)[1] - stream = StringIO(data) + with TemporaryDirectory() as tdir: + with CurrentDir(tdir): + stream = extract_member(path, match=None, name=f, + as_file=True)[1] return get_metadata(stream, stream_type) raise ValueError('No ebook found in RAR archive')