diff --git a/src/calibre/constants.py b/src/calibre/constants.py index 0bccd77c44..d49f97f48e 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.4.115' +__version__ = '0.4.116' __author__ = "Kovid Goyal " ''' Various run time constants. diff --git a/src/calibre/devices/prs505/books.py b/src/calibre/devices/prs505/books.py index f42f1b5513..b63b089fdd 100644 --- a/src/calibre/devices/prs505/books.py +++ b/src/calibre/devices/prs505/books.py @@ -60,7 +60,7 @@ class Book(object): rpath = book_metadata_field("path") id = book_metadata_field("id", formatter=int) sourceid = book_metadata_field("sourceid", formatter=int) - size = book_metadata_field("size", formatter=int) + size = book_metadata_field("size", formatter=lambda x : int(float(x))) # When setting this attribute you must use an epoch datetime = book_metadata_field("date", formatter=strptime, setter=strftime) diff --git a/src/calibre/ebooks/lrf/html/convert_from.py b/src/calibre/ebooks/lrf/html/convert_from.py index 2554d91f15..8eeff46d79 100644 --- a/src/calibre/ebooks/lrf/html/convert_from.py +++ b/src/calibre/ebooks/lrf/html/convert_from.py @@ -32,7 +32,6 @@ from calibre.ebooks.lrf.html.table import Table from calibre import filename_to_utf8, setup_cli_handlers, __appname__, \ fit_image, LoggingInterface, preferred_encoding from calibre.ptempfile import PersistentTemporaryFile -from calibre.ebooks.metadata.opf import OPFReader from calibre.devices.interface import Device from calibre.ebooks.lrf.html.color_map import lrs_color from calibre.ebooks.chardet import xml_to_unicode @@ -106,6 +105,8 @@ class HTMLConverter(object, LoggingInterface): (re.compile(r'()', re.IGNORECASE|re.DOTALL), strip_style_comments), + # Remove self closing script tags as they also mess up BeautifulSoup + (re.compile(r'(?i)]+?/>'), lambda match: ''), ] # Fix Baen markup @@ -334,7 +335,8 @@ class HTMLConverter(object, LoggingInterface): soup = BeautifulSoup(raw, convertEntities=BeautifulSoup.XHTML_ENTITIES, markupMassage=nmassage) - + else: + raise if not self.baen and self.is_baen(soup): self.baen = True self.log_info(_('\tBaen file detected. Re-parsing...')) diff --git a/src/calibre/ebooks/lrf/pylrs/pylrs.py b/src/calibre/ebooks/lrf/pylrs/pylrs.py index 081c5a5179..60f8d21336 100644 --- a/src/calibre/ebooks/lrf/pylrs/pylrs.py +++ b/src/calibre/ebooks/lrf/pylrs/pylrs.py @@ -1432,7 +1432,7 @@ class Page(LrsObject, LrsContainer): #print "page contents:", pageContent # ObjectList not needed and causes slowdown in SONY LRF renderer - p.appendLrfTag(LrfTag("ObjectList", pageContent)) + #p.appendLrfTag(LrfTag("ObjectList", pageContent)) p.appendLrfTag(LrfTag("Link", self.pageStyle.objId)) p.appendLrfTag(LrfTag("ParentPageTree", lrfWriter.getPageTreeId())) p.appendTagDict(self.settings) diff --git a/src/calibre/ebooks/mobi/reader.py b/src/calibre/ebooks/mobi/reader.py index a3aa5b7ae7..420159299e 100644 --- a/src/calibre/ebooks/mobi/reader.py +++ b/src/calibre/ebooks/mobi/reader.py @@ -101,7 +101,7 @@ class BookHeader(object): if ident == 'TEXTREAD' or self.length < 0xE4 or 0xE8 < self.length: self.extra_flags = 0 else: - self.extra_flags, = struct.unpack('>L', raw[0xF0:0xF4]) + self.extra_flags, = struct.unpack('>H', raw[0xF2:0xF4]) if self.compression_type == 'DH': self.huff_offset, self.huff_number = struct.unpack('>LL', raw[0x70:0x78]) diff --git a/src/calibre/gui2/images/news/linux_magazine.png b/src/calibre/gui2/images/news/linux_magazine.png new file mode 100644 index 0000000000..ef6ed8c3fe Binary files /dev/null and b/src/calibre/gui2/images/news/linux_magazine.png differ diff --git a/src/calibre/gui2/main.py b/src/calibre/gui2/main.py index 12b4e99ee6..267699a3ad 100644 --- a/src/calibre/gui2/main.py +++ b/src/calibre/gui2/main.py @@ -219,6 +219,7 @@ class Main(MainWindow, Ui_MainWindow): QObject.connect(self.view_menu.actions()[1], SIGNAL("triggered(bool)"), self.view_specific_format) self.connect(self.action_open_containing_folder, SIGNAL('triggered(bool)'), self.view_folder) self.action_open_containing_folder.setShortcut(Qt.Key_O) + self.addAction(self.action_open_containing_folder) self.action_sync.setShortcut(Qt.Key_D) self.action_sync.setMenu(sm) self.action_edit.setMenu(md) diff --git a/src/calibre/trac/plugins/Changelog.py b/src/calibre/trac/plugins/Changelog.py index 05f1b4456f..8d02ebdd73 100644 --- a/src/calibre/trac/plugins/Changelog.py +++ b/src/calibre/trac/plugins/Changelog.py @@ -17,7 +17,7 @@ BZR_PATH = '/var/bzr/code/calibre/trunk' class ChangelogFormatter(blog.LogFormatter): supports_tags = True - supports_merge_revisions = True + supports_merge_revisions = False def __init__(self, num_of_versions=20): self.num_of_versions = num_of_versions diff --git a/src/calibre/translations/bg.po b/src/calibre/translations/bg.po index cb3c5d3171..2de05c1fba 100644 --- a/src/calibre/translations/bg.po +++ b/src/calibre/translations/bg.po @@ -13,7 +13,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2008-12-15 18:24+0000\n" +"X-Launchpad-Export-Date: 2008-12-17 21:16+0000\n" "X-Generator: Launchpad (build Unknown)\n" "Generated-By: pygettext.py 1.5\n" diff --git a/src/calibre/translations/ca.po b/src/calibre/translations/ca.po index 033728d130..59ea3bdbc2 100644 --- a/src/calibre/translations/ca.po +++ b/src/calibre/translations/ca.po @@ -17,7 +17,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2008-12-15 18:24+0000\n" +"X-Launchpad-Export-Date: 2008-12-17 21:17+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:137 diff --git a/src/calibre/translations/cs.po b/src/calibre/translations/cs.po index 1da250437d..123e6e03e6 100644 --- a/src/calibre/translations/cs.po +++ b/src/calibre/translations/cs.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: 2008-12-15 18:24+0000\n" +"X-Launchpad-Export-Date: 2008-12-17 21:17+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:137 diff --git a/src/calibre/translations/de.po b/src/calibre/translations/de.po index f305d8c19e..0d8da52e10 100644 --- a/src/calibre/translations/de.po +++ b/src/calibre/translations/de.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: 2008-12-15 18:24+0000\n" +"X-Launchpad-Export-Date: 2008-12-17 21:17+0000\n" "X-Generator: Launchpad (build Unknown)\n" "Generated-By: pygettext.py 1.5\n" diff --git a/src/calibre/translations/el.po b/src/calibre/translations/el.po index 151d510f98..74c516ef36 100644 --- a/src/calibre/translations/el.po +++ b/src/calibre/translations/el.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: 2008-12-15 18:24+0000\n" +"X-Launchpad-Export-Date: 2008-12-17 21:16+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:137 diff --git a/src/calibre/translations/es.po b/src/calibre/translations/es.po index 169f01bfcd..cc09fc08dd 100644 --- a/src/calibre/translations/es.po +++ b/src/calibre/translations/es.po @@ -17,7 +17,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2008-12-15 18:24+0000\n" +"X-Launchpad-Export-Date: 2008-12-17 21:16+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:137 diff --git a/src/calibre/translations/fr.po b/src/calibre/translations/fr.po index cf8feb00a0..2b5156333b 100644 --- a/src/calibre/translations/fr.po +++ b/src/calibre/translations/fr.po @@ -13,7 +13,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2008-12-15 18:24+0000\n" +"X-Launchpad-Export-Date: 2008-12-17 21:17+0000\n" "X-Generator: Launchpad (build Unknown)\n" "Generated-By: pygettext.py 1.5\n" diff --git a/src/calibre/translations/gl.po b/src/calibre/translations/gl.po index 50628a03f3..99b22741be 100644 --- a/src/calibre/translations/gl.po +++ b/src/calibre/translations/gl.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: 2008-12-15 18:24+0000\n" +"X-Launchpad-Export-Date: 2008-12-17 21:16+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:137 diff --git a/src/calibre/translations/it.po b/src/calibre/translations/it.po index 17cee61773..305fb1c38a 100644 --- a/src/calibre/translations/it.po +++ b/src/calibre/translations/it.po @@ -15,7 +15,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2008-12-15 18:24+0000\n" +"X-Launchpad-Export-Date: 2008-12-17 21:17+0000\n" "X-Generator: Launchpad (build Unknown)\n" "Generated-By: pygettext.py 1.5\n" diff --git a/src/calibre/translations/nb.po b/src/calibre/translations/nb.po index 7eb819dce6..8ec68e90b3 100644 --- a/src/calibre/translations/nb.po +++ b/src/calibre/translations/nb.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: 2008-12-15 18:24+0000\n" +"X-Launchpad-Export-Date: 2008-12-17 21:17+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:137 diff --git a/src/calibre/translations/nds.po b/src/calibre/translations/nds.po index 7ea1f964bb..fdc7cbbc82 100644 --- a/src/calibre/translations/nds.po +++ b/src/calibre/translations/nds.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: 2008-12-15 18:24+0000\n" +"X-Launchpad-Export-Date: 2008-12-17 21:17+0000\n" "X-Generator: Launchpad (build Unknown)\n" "Generated-By: pygettext.py 1.5\n" diff --git a/src/calibre/translations/nl.po b/src/calibre/translations/nl.po index c8873c7bd6..cf4fde52c7 100644 --- a/src/calibre/translations/nl.po +++ b/src/calibre/translations/nl.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: 2008-12-15 18:24+0000\n" +"X-Launchpad-Export-Date: 2008-12-17 21:17+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:137 diff --git a/src/calibre/translations/pl.po b/src/calibre/translations/pl.po index 08d6daea13..34671e5830 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: 2008-12-15 02:49+0000\n" -"PO-Revision-Date: 2008-12-15 11:28+0000\n" -"Last-Translator: Bartosz Kaszubowski \n" +"PO-Revision-Date: 2008-12-17 16:54+0000\n" +"Last-Translator: Andrzej MoST (Marcin Ostajewski) \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: 2008-12-15 18:24+0000\n" +"X-Launchpad-Export-Date: 2008-12-17 21:17+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:137 @@ -852,6 +852,8 @@ msgstr "" msgid "" "Disable normalize (improve contrast) color range for pictures. Default: False" msgstr "" +"Nie zezwalaj na normalizowanie (poprawianie kontrastu) głębi kolorów. " +"Domyślne: Fałsz" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/comic/convert_from.py:299 msgid "Maintain picture aspect ratio. Default is to fill the screen." @@ -993,7 +995,7 @@ msgstr "Przetwarzanie %s" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:388 msgid "\tConverting to BBeB..." -msgstr "" +msgstr "\tKonwersja do BBeB..." #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:534 #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:547 @@ -1038,6 +1040,8 @@ msgid "" "Bad table:\n" "%s" msgstr "" +"Nieprawidłowy spis:\n" +"%s" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1789 msgid "Table has cell that is too large" @@ -1059,7 +1063,7 @@ msgstr "Nie można odczytać z: %s" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1997 msgid "Failed to process opf file" -msgstr "" +msgstr "Nie udało się przetworzyć pliku opf" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:2003 msgid "" @@ -2673,7 +2677,7 @@ msgstr " gwiazdek" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:138 msgid "Add Ta&gs: " -msgstr "Dodaj ta&gi: " +msgstr "Dodaj &etykiety: " #: /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 @@ -4070,7 +4074,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:102 msgid "&Font options" -msgstr "" +msgstr "&Opcje czcionki" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:103 msgid "Se&rif family:" @@ -4094,19 +4098,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:110 msgid "S&tandard font:" -msgstr "" +msgstr "Czcionka pods&tawowa:" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:111 msgid "Serif" -msgstr "" +msgstr "Szeryfowa" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:112 msgid "Sans-serif" -msgstr "" +msgstr "Sans-serif" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:113 msgid "Monospace" -msgstr "" +msgstr "Maszynowa" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:114 msgid "&User stylesheet" @@ -4125,19 +4129,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:58 msgid "Font options" -msgstr "" +msgstr "Opcje czcionki" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 msgid "The serif font family" -msgstr "" +msgstr "Rodzina czcionek szeryfowych" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 msgid "The sans-serif font family" -msgstr "" +msgstr "Rodzina czcionek sans-serif" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:61 msgid "The monospaced font family" -msgstr "" +msgstr "Rodzina czcionek monospace" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:62 msgid "The standard font size in px" @@ -4154,11 +4158,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:154 msgid "Table of Contents" -msgstr "" +msgstr "Spis treści" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:166 msgid "Go to..." -msgstr "" +msgstr "Przejście do..." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:207 msgid "Position in book" @@ -4174,23 +4178,23 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:219 msgid "Search for text in book" -msgstr "" +msgstr "Szukanie tekstu w książce" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:329 msgid "Choose ebook" -msgstr "" +msgstr "Wybierz e-book" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:330 msgid "Ebooks" -msgstr "" +msgstr "E-booki" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:348 msgid "Add bookmark" -msgstr "" +msgstr "Dodaj zakładkę" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:348 msgid "Enter title for bookmark:" -msgstr "" +msgstr "Dodaj tytuł zakładki" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:369 msgid "No matches found for: %s" @@ -4214,15 +4218,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:493 msgid "DRM Error" -msgstr "" +msgstr "Błąd DRM" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:495 msgid "Could not open ebook" -msgstr "" +msgstr "Nie można otworzyć e-booka" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:496 msgid "%s

%s

" -msgstr "" +msgstr "%s

%s

" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:556 msgid "Options to control the ebook viewer" @@ -4245,11 +4249,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:150 msgid "Next page" -msgstr "" +msgstr "Następna strona" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:151 msgid "Previous page" -msgstr "" +msgstr "Poprzednia strona" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:152 msgid "Font size larger" @@ -4261,15 +4265,15 @@ msgstr "Mniejszy rozmiar czcionki" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:157 msgid "Find next" -msgstr "" +msgstr "Znajdź następny" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:158 msgid "Copy to clipboard" -msgstr "" +msgstr "Skopiuj do schowka" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:159 msgid "Preferences" -msgstr "" +msgstr "Preferencje" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:160 msgid "Reference Mode" @@ -4277,11 +4281,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:161 msgid "Bookmark" -msgstr "" +msgstr "Zakładka" #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:47 msgid "Invalid regular expression" -msgstr "" +msgstr "Nieprawidłowe wyrażenie regularne" #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:48 msgid "Invalid regular expression: %s" @@ -4469,7 +4473,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/cli.py:346 msgid "You must specify at least one book to remove" -msgstr "" +msgstr "Wybierz co najmniej jedną książkę do usunięcia" #: /home/kovid/work/calibre/src/calibre/library/cli.py:366 msgid "" @@ -4582,12 +4586,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/database2.py:1144 msgid "

Copying books to %s

" -msgstr "" +msgstr "

Kopiowanie książek do %s

" #: /home/kovid/work/calibre/src/calibre/library/database2.py:1157 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1266 msgid "Copying %s" -msgstr "" +msgstr "Kopiowanie %s" #: /home/kovid/work/calibre/src/calibre/library/database2.py:1237 msgid "

Migrating old database to ebook library in %s

" @@ -4595,11 +4599,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/database2.py:1283 msgid "Compacting database" -msgstr "" +msgstr "Kompaktowanie bazy danych" #: /home/kovid/work/calibre/src/calibre/library/server.py:139 msgid "Password to access your calibre library. Username is " -msgstr "" +msgstr "Hasło do biblioteki calibre. Nazwa użytkownika to " #: /home/kovid/work/calibre/src/calibre/library/server.py:382 msgid "" @@ -4614,15 +4618,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/parallel.py:787 msgid "Job stopped by user" -msgstr "" +msgstr "Zadanie zatrzymane przez użytkownika" #: /home/kovid/work/calibre/src/calibre/utils/config.py:39 msgid "%sUsage%s: %s\n" -msgstr "" +msgstr "%sUżycie%s: %s\n" #: /home/kovid/work/calibre/src/calibre/utils/config.py:77 msgid "Created by " -msgstr "" +msgstr "Stworzony przez " #: /home/kovid/work/calibre/src/calibre/utils/config.py:524 msgid "Path to the database in which books are stored" @@ -4642,11 +4646,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/config.py:532 msgid "Path to directory in which your library of books is stored" -msgstr "" +msgstr "Ścieżka do katalogu w którym przechowywana jest biblioteka książek" #: /home/kovid/work/calibre/src/calibre/utils/config.py:534 msgid "The language in which to display the user interface" -msgstr "" +msgstr "Język wyświetlania interfejsu użytkownika" #: /home/kovid/work/calibre/src/calibre/utils/config.py:538 msgid "Read metadata from files" @@ -4670,7 +4674,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/sftp.py:68 msgid "Failed to negotiate SSH session: " -msgstr "" +msgstr "Nie udało się wynegocjować sesji SSH: " #: /home/kovid/work/calibre/src/calibre/utils/sftp.py:71 msgid "Failed to authenticate with server: %s" @@ -4699,7 +4703,7 @@ msgstr "Dostosuj silnik pobierania" msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " "s" -msgstr "" +msgstr "Czas oczekiwania na odpowiedź serwera. Domyślnie: %default sek." #: /home/kovid/work/calibre/src/calibre/web/feeds/main.py:22 #: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:450 @@ -4736,7 +4740,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/web/feeds/main.py:30 #: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:458 msgid "Do not download CSS stylesheets." -msgstr "" +msgstr "Nie pobieraj arkuszy styli CSS." #: /home/kovid/work/calibre/src/calibre/web/feeds/main.py:33 #: /home/kovid/work/calibre/src/calibre/web/feeds/main.py:88 @@ -4870,7 +4874,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:684 msgid "Trying to download cover..." -msgstr "" +msgstr "Próba pobrania okładki..." #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:737 msgid "Starting download [%d thread(s)]..." @@ -4943,6 +4947,8 @@ msgid "" "The maximum number of files to download. This only applies to files from tags. Default is %default" msgstr "" +"Maksymalna liczba plików do pobrania. Stosowane jedynie do plików z etykiet " +". Wartość domyślna: %default" #: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:459 msgid "Show detailed output information. Useful for debugging" diff --git a/src/calibre/translations/pt.po b/src/calibre/translations/pt.po index edb6759fac..1435ce6b7b 100644 --- a/src/calibre/translations/pt.po +++ b/src/calibre/translations/pt.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: 2008-12-15 18:24+0000\n" +"X-Launchpad-Export-Date: 2008-12-17 21:17+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:137 diff --git a/src/calibre/translations/ru.po b/src/calibre/translations/ru.po index 3ed8c5de93..8f137f55fd 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: 2008-12-15 02:49+0000\n" -"PO-Revision-Date: 2008-12-15 18:19+0000\n" -"Last-Translator: Kovid Goyal \n" +"PO-Revision-Date: 2008-12-17 09:35+0000\n" +"Last-Translator: Andrew V. Skvortsov \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: 2008-12-15 18:24+0000\n" +"X-Launchpad-Export-Date: 2008-12-17 21:17+0000\n" "X-Generator: Launchpad (build Unknown)\n" "X-Poedit-Country: RUSSIAN FEDERATION\n" "X-Poedit-Language: Russian\n" @@ -1830,11 +1830,11 @@ msgstr "Сбой запуска контент сервера" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:228 msgid "Invalid size" -msgstr "" +msgstr "Неверный размер" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:228 msgid "The size %s is invalid. must be of the form widthxheight" -msgstr "" +msgstr "Размер %s указан неверно. Должен быть задан в виде [ширина]x[высота]" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:270 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:274 @@ -1966,19 +1966,19 @@ msgstr "&Формат результата" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:381 msgid "Normal" -msgstr "" +msgstr "Обычный" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:382 msgid "High" -msgstr "" +msgstr "Высокий" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:383 msgid "Low" -msgstr "" +msgstr "Низкий" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:384 msgid "Job &priority:" -msgstr "" +msgstr "&Приоритет задачи" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:386 msgid "Add a directory to the frequently used directories list" @@ -2098,10 +2098,12 @@ msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " msgstr "" +"Максимальный размер ([ширина]x[высота]) обложек при отображении. Более " +"крупные обложки подгоняются по размеру. " #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:415 msgid "Max. &cover size:" -msgstr "" +msgstr "Макс. размер обложки:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:416 msgid "&Start Server" @@ -2825,6 +2827,16 @@ msgid "" "margin-left:0px; margin-right:0px; -qt-block-indent:0; text-" "indent:0px;\">

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

" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:126 msgid "Edit Meta information" @@ -2891,7 +2903,7 @@ msgstr "Формат удаления:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 msgid "A&utomatically set author sort" -msgstr "" +msgstr "Автоматически выставить сортировку по автору" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:265 msgid "" @@ -2991,7 +3003,7 @@ msgstr "Найти" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:234 msgid "%d recipes" -msgstr "" +msgstr "%d набор параметров" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:263 msgid "Must set account information" @@ -3201,114 +3213,114 @@ msgstr "Добавить описание в доступное и исполь #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:63 msgid "No recipe selected" -msgstr "" +msgstr "Нет выбранных параметров" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:69 msgid "The attached file: %s is a recipe to download %s." -msgstr "" +msgstr "Присоединенный файл: %s как параметр загружаемый %s" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:70 msgid "Recipe for " -msgstr "" +msgstr "Параметры для " #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:97 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:221 msgid "Switch to Advanced mode" -msgstr "" +msgstr "Переключиться в расширенный режим" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:92 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:100 msgid "Switch to Basic mode" -msgstr "" +msgstr "Переключиться в обычный режим" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:110 msgid "Feed must have a title" -msgstr "" +msgstr "Поле должно быть заголовком" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:111 msgid "The feed must have a title" -msgstr "" +msgstr "Поле должно быть заголовком" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:115 msgid "Feed must have a URL" -msgstr "" +msgstr "Поле должно иметь URL" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:116 msgid "The feed %s must have a URL" -msgstr "" +msgstr "Поле %s должно иметь URL" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:121 msgid "Already exists" -msgstr "" +msgstr "Уже существует" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:122 msgid "This feed has already been added to the recipe" -msgstr "" +msgstr "Поле уже было добавлено в параметры" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:163 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:229 msgid "Invalid input" -msgstr "" +msgstr "Неверное значение" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:173 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:230 msgid "

Could not create recipe. Error:
%s" -msgstr "" +msgstr "Не могу создать параметр. Ошибка:
%s" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:179 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:235 msgid "Replace recipe?" -msgstr "" +msgstr "Заменить параметр" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:212 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:236 msgid "A custom recipe named %s already exists. Do you want to replace it?" -msgstr "" +msgstr "Выбранное имя параметра %s уже существует. Хотите заменить его?" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202 msgid "Pick recipe" -msgstr "" +msgstr "Подобрать параметр" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202 msgid "Pick the recipe to customize" -msgstr "" +msgstr "Подобрать параметр выборочно" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:222 msgid "Choose a recipe file" -msgstr "" +msgstr "Выбрать файл параметра" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:214 msgid "Add custom news source" -msgstr "" +msgstr "Добавить источник новостей" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:215 msgid "Available user recipes" -msgstr "" +msgstr "Доступные пользователю параметры" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:216 msgid "Add/Update &recipe" -msgstr "" +msgstr "Добавить/Обновить параметры" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:217 msgid "&Remove recipe" -msgstr "" +msgstr "Удалить параметры" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:218 msgid "&Share recipe" -msgstr "" +msgstr "Совместный параметр" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:219 msgid "Customize &builtin recipe" -msgstr "" +msgstr "Настроить встроенный параметр" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:220 msgid "&Load recipe from file" -msgstr "" +msgstr "Загрузить параметр из файла" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:222 msgid "" @@ -3323,61 +3335,74 @@ msgid "" "use the \"Advanced mode\" to further customize the fetch " "process.

" msgstr "" +"\n" +"

Создайте параметр основных " +"новостей, добавляемых в RSS ленту.
Для большинства лент, вы можете " +"использовать для просесса загрузки \"Расширенный режим\".

" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:226 msgid "Recipe &title:" -msgstr "" +msgstr "Параметр заголовка" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:227 msgid "&Oldest article:" -msgstr "" +msgstr "Старая статья:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:228 msgid "The oldest article to download" -msgstr "" +msgstr "Загружена старая статья" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:230 msgid "&Max. number of articles per feed:" -msgstr "" +msgstr "Максимальное количество статей в ленте:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:231 msgid "Maximum number of articles to download per feed." -msgstr "" +msgstr "Максимальное количество статей загружаемых в ленту." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:232 msgid "Feeds in recipe" -msgstr "" +msgstr "Поля в параметре" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:234 msgid "Remove feed from recipe" -msgstr "" +msgstr "Удалить поле из параметра" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:237 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:240 msgid "Add feed to recipe" -msgstr "" +msgstr "Добавить поле в параметр" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:238 msgid "&Feed title:" -msgstr "" +msgstr "Поле заглавия:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:239 msgid "Feed &URL:" -msgstr "" +msgstr "&Адрес ленты новостей:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:241 msgid "&Add feed" -msgstr "" +msgstr "Добавить ленту" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:242 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:243 msgid "Recipe source code (python)" -msgstr "" +msgstr "Параметр кода источника (python)" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:97 msgid "" @@ -3405,27 +3430,27 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:104 msgid "Regular &expression" -msgstr "" +msgstr "Регулярное &выражение" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:105 msgid "&Test" -msgstr "" +msgstr "&Тест" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:106 msgid "File &name:" -msgstr "" +msgstr "&Имя файла:" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:107 msgid "Test" -msgstr "" +msgstr "Тест" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:108 msgid "Title:" -msgstr "" +msgstr "Название:" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:109 msgid "Regular expression (?P<title>)" -msgstr "" +msgstr "Обычный параметр (?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 @@ -3438,43 +3463,43 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:68 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:70 msgid "No match" -msgstr "" +msgstr "Нет совпадений" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:111 msgid "Authors:" -msgstr "" +msgstr "Авторы:" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:112 msgid "Regular expression (?P)" -msgstr "" +msgstr "Обычный параметр (?P)" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:114 msgid "Series:" -msgstr "" +msgstr "Серия:" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:115 msgid "Regular expression (?P)" -msgstr "" +msgstr "Обычный параметр (?P)" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:117 msgid "Series index:" -msgstr "" +msgstr "Индекс серии:" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:118 msgid "Regular expression (?P)" -msgstr "" +msgstr "Обычный параметр (?P)" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:120 msgid "ISBN:" -msgstr "" +msgstr "ISBN:" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:121 msgid "Regular expression (?P)" -msgstr "" +msgstr "Обычный параметр (?P)" #: /home/kovid/work/calibre/src/calibre/gui2/jobs2.py:46 msgid "Job" -msgstr "" +msgstr "Задание" #: /home/kovid/work/calibre/src/calibre/gui2/jobs2.py:47 msgid "Status" @@ -3482,7 +3507,7 @@ msgstr "Статус" #: /home/kovid/work/calibre/src/calibre/gui2/jobs2.py:48 msgid "Progress" -msgstr "" +msgstr "Ход выполнения" #: /home/kovid/work/calibre/src/calibre/gui2/jobs2.py:49 msgid "Running time" @@ -3511,25 +3536,25 @@ msgstr "Работа" #: /home/kovid/work/calibre/src/calibre/gui2/jobs2.py:162 #: /home/kovid/work/calibre/src/calibre/gui2/jobs2.py:166 msgid "Cannot kill job" -msgstr "" +msgstr "Немогу удалить задание" #: /home/kovid/work/calibre/src/calibre/gui2/jobs2.py:163 msgid "Cannot kill jobs that communicate with the device" -msgstr "" +msgstr "Немогу удалить задание при подключенном устройстве" #: /home/kovid/work/calibre/src/calibre/gui2/jobs2.py:167 msgid "Job has already run" -msgstr "" +msgstr "Задание уже запущено" #: /home/kovid/work/calibre/src/calibre/gui2/library.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:898 msgid "Size (MB)" -msgstr "" +msgstr "Размер (МБ)" #: /home/kovid/work/calibre/src/calibre/gui2/library.py:94 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:899 msgid "Date" -msgstr "" +msgstr "Дата" #: /home/kovid/work/calibre/src/calibre/gui2/library.py:95 msgid "Rating" @@ -3539,64 +3564,64 @@ msgstr "Рейтинг" #: /home/kovid/work/calibre/src/calibre/gui2/library.py:280 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:285 msgid "None" -msgstr "" +msgstr "Ничего" #: /home/kovid/work/calibre/src/calibre/gui2/library.py:291 msgid "Book %s of %s." -msgstr "" +msgstr "Книга %s из %s." #: /home/kovid/work/calibre/src/calibre/gui2/library.py:830 msgid "Format" -msgstr "" +msgstr "Формат" #: /home/kovid/work/calibre/src/calibre/gui2/library.py:835 msgid "Timestamp" -msgstr "" +msgstr "Временная метка" #: /home/kovid/work/calibre/src/calibre/gui2/library.py:933 msgid "Search (For Advanced Search click the button to the left)" -msgstr "" +msgstr "Поиск (для расширенного поиска нажмите кнопку слева)" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/config_ui.py:47 msgid "Configure Viewer" -msgstr "" +msgstr "Настройка просматровщика" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/config_ui.py:48 msgid "Use white background" -msgstr "" +msgstr "Использовать белый фон" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/config_ui.py:49 msgid "Hyphenate" -msgstr "" +msgstr "Перенести" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/config_ui.py:50 msgid "Changes will only take effect after a restart." -msgstr "" +msgstr "Изменения применятся только после перезагрузки." #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:64 msgid " - LRF Viewer" -msgstr "" +msgstr " - LRF просмотровщик" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:157 msgid "No matches for the search phrase %s were found." -msgstr "" +msgstr "Нет совпадений для искомой фразы %s ." #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:157 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:368 msgid "No matches found" -msgstr "" +msgstr "Совпадений не найдено" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:128 msgid "LRF Viewer" -msgstr "" +msgstr "LRF просмотровщик" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:129 msgid "Parsing LRF file" -msgstr "" +msgstr "Разбор файла LRF" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:130 msgid "LRF Viewer toolbar" -msgstr "" +msgstr "Панель промотра LRF" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:131 msgid "Next Page" @@ -3609,7 +3634,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:148 msgid "Back" -msgstr "" +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:149 @@ -3627,7 +3652,7 @@ msgstr "Открыть книгу" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:137 msgid "Configure" -msgstr "" +msgstr "Настроить" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:86 msgid "Error communicating with device" @@ -3635,11 +3660,11 @@ msgstr "Ошибка подключения с устройством" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:98 msgid "&Restore" -msgstr "" +msgstr "Восстановить" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:99 msgid "&Donate" -msgstr "" +msgstr "Вознаградить" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:100 msgid "&Quit" @@ -3647,17 +3672,20 @@ msgstr "&Выход" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:102 msgid "&Restart" -msgstr "" +msgstr "&Перезапуск" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:131 msgid "" "

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

Для справки поситите %s.kovidgoyal.net
" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:132 msgid "%s: %s by Kovid Goyal %%(version)s
%%(device)s

" msgstr "" +"%s: %s by Kovid Goyal %%(версия)и
%%(устройств)а

" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:150 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:152 @@ -3672,11 +3700,11 @@ msgstr "Отправить в карту памяти" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:152 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:153 msgid "and delete from library" -msgstr "" +msgstr "и удалите из библиотеки" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:155 msgid "Send to storage card by default" -msgstr "" +msgstr "По умолчанию отправлять в карту памяти" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:168 msgid "Edit metadata individually" @@ -3684,23 +3712,27 @@ msgstr "Редактировать метаданные индивидуальн #: /home/kovid/work/calibre/src/calibre/gui2/main.py:170 msgid "Edit metadata in bulk" -msgstr "" +msgstr "Редактировать основные метаданные" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:173 msgid "Add books from a single directory" -msgstr "" +msgstr "Добавить книги из одной директории" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:174 msgid "" "Add books recursively (One book per directory, assumes every ebook file is " "the same book in a different format)" msgstr "" +"Добавить книги рекурсивно (Каждый файл одной книги в директории принимается, " +"как книга другого формата)" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:175 msgid "" "Add books recursively (Multiple books per directory, assumes every ebook " "file is a different book)" msgstr "" +"Добавить книги рекурсивно (Множество книг в дериктории принимаются, как " +"книги разных форматов)" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:190 #: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:311 @@ -3709,17 +3741,17 @@ msgstr "Сохранить на диск" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:191 msgid "Save to disk in a single directory" -msgstr "" +msgstr "Сохранить на диск в одну директорию" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:192 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:1108 msgid "Save only %s format to disk" -msgstr "" +msgstr "Сохранять на диск только формат %s" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:195 #: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:317 msgid "View" -msgstr "" +msgstr "Вид" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:196 msgid "View specific format" @@ -3727,19 +3759,19 @@ msgstr "Просмотреть особый формат" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:212 msgid "Convert individually" -msgstr "" +msgstr "Индивидуальное преобразование" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:213 msgid "Bulk convert" -msgstr "" +msgstr "Общее преобразование" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:215 msgid "Set defaults for conversion" -msgstr "" +msgstr "Настройки по умолчанию для преобразования" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:216 msgid "Set defaults for conversion of comics" -msgstr "" +msgstr "Настройки по умолчанию для преобразования комиксов" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:260 msgid "Bad database location" @@ -3748,11 +3780,11 @@ msgstr "Плохое расположение базы данных" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:262 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:1264 msgid "Choose a location for your ebook library." -msgstr "" +msgstr "Выбререте расположение Вашей библиотеки электронных книг." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:274 msgid "Migrating database" -msgstr "" +msgstr "Перемещение базы данных" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:418 msgid "Device: " @@ -3760,7 +3792,7 @@ msgstr "Устройство: " #: /home/kovid/work/calibre/src/calibre/gui2/main.py:419 msgid " detected." -msgstr "" +msgstr " определено." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:441 msgid "Connected " @@ -3785,13 +3817,26 @@ msgid "" " \n" " " msgstr "" +"\n" +"

База данных книг устройства неисправна. Попробуйте " +"следующее:\n" +"

    \n" +"
  1. Отключите устройство. Дождитесь завершения создания " +"базы данных (т.е. дождисеь ее готовности к использованию). Подключите " +"устройство. Теперь должно все заработать в приложении %. Если этого не " +"произошло переходите к следующему пункту.
  2. \n" +"
  3. Закройте %приложение. Найдите файл media.xml в основной " +"памяти устройства. Удалите его. Отключите устройство. Подождите создания " +"файла. Подключите устройство снова и запустите приложение %.
  4. \n" +"
\n" +" " #: /home/kovid/work/calibre/src/calibre/gui2/main.py:505 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:601 msgid "" "

Books with the same title as the following already exist in the database. " "Add them anyway?

    " -msgstr "" +msgstr "

    Книги с таким названием уже есть в библиотеки. Всеравно добавить?

      " #: /home/kovid/work/calibre/src/calibre/gui2/main.py:508 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:604 @@ -3805,27 +3850,27 @@ msgstr "Загрузка книг в устройство." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:549 msgid "Books" -msgstr "" +msgstr "Книги" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:550 msgid "EPUB Books" -msgstr "" +msgstr "Книги EPUB" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:551 msgid "LRF Books" -msgstr "" +msgstr "Книги LRF" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:552 msgid "HTML Books" -msgstr "" +msgstr "Книги HTML" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:553 msgid "LIT Books" -msgstr "" +msgstr "Книги LIT" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:554 msgid "MOBI Books" -msgstr "" +msgstr "Книги MOBI" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:555 msgid "Text books" @@ -3833,15 +3878,15 @@ msgstr "Текстовые книги" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:556 msgid "PDF Books" -msgstr "" +msgstr "Книги PDF" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:557 msgid "Comics" -msgstr "" +msgstr "Комиксы" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:558 msgid "Archives" -msgstr "" +msgstr "Архивы" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:636 msgid "No space on device" @@ -3851,6 +3896,7 @@ msgstr "Нет места на устройстве" msgid "" "

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

      Немогу загрузить книги на устройство, из-за отсутствия свободной памяти. " #: /home/kovid/work/calibre/src/calibre/gui2/main.py:667 msgid "Confirm delete" @@ -3858,11 +3904,11 @@ msgstr "Подтвердить удаление" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:668 msgid "Are you sure you want to delete these %d books?" -msgstr "" +msgstr "Вы уверены, что хотите удалить эти книги %d?" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:680 msgid "Deleting books from device." -msgstr "" +msgstr "Удаляются книги из устройства." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:710 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:732 @@ -3878,7 +3924,7 @@ msgstr "Нет Выбранных книг" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:779 msgid "Sending news to device." -msgstr "" +msgstr "Отправляются новости на устройство." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:831 msgid "Sending books to device." @@ -3893,6 +3939,8 @@ msgid "" "Could not upload the following books to the device, as no suitable formats " "were found:

        %s
      " msgstr "" +"Не могу загрузить книги на устройство, так как они не соответствуют формату: " +"
        %s
      " #: /home/kovid/work/calibre/src/calibre/gui2/main.py:851 msgid "Cannot save to disk" @@ -3907,10 +3955,11 @@ msgid "" "

      Could not save the following books to disk, because the %s format is not " "available for them:

        " msgstr "" +"

        Не могу сохранить гники на диск потому, что формат %s не доступен для:

          " #: /home/kovid/work/calibre/src/calibre/gui2/main.py:866 msgid "Could not save some ebooks" -msgstr "" +msgstr "Не могу сохранить некоторые книги" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:886 msgid "Fetching news from " @@ -3918,7 +3967,7 @@ msgstr "Вызвать новость из " #: /home/kovid/work/calibre/src/calibre/gui2/main.py:900 msgid " fetched." -msgstr "" +msgstr " загружено." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:1014 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:1032 @@ -3935,11 +3984,11 @@ msgstr "Невозможно просмотреть" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:1020 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:1065 msgid "Choose the format to view" -msgstr "" +msgstr "Выберете для просмотра формат" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:1032 msgid "Cannot open folder" -msgstr "" +msgstr "Не могу открыть папку" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:1061 msgid "%s has no available formats." @@ -3951,11 +4000,11 @@ msgstr "Невозможно настроить" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:1099 msgid "Cannot configure while there are running jobs." -msgstr "" +msgstr "Пока запущено задание, не могу настроить" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:1118 msgid "Copying database" -msgstr "" +msgstr "Копирование базы данных" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:1120 msgid "Copying library to " @@ -3970,6 +4019,8 @@ msgid "" "

          An invalid database already exists at %s, delete it before trying to move " "the existing database.
          Error: %s" msgstr "" +"

          Уже используется неправильная база данных %s, удалите ее прежде, чем " +"перенести используемую.
          Ошибка: %s" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:1137 msgid "Could not move database" @@ -3981,7 +4032,7 @@ msgstr "Нет доступной подробной информации" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:1158 msgid "No detailed information is available for books on the device." -msgstr "" +msgstr "Не доступна подробная информация книг на устройстве" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:1201 msgid "Error talking to device" @@ -3992,6 +4043,8 @@ 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/main.py:1215 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:1230 @@ -4004,6 +4057,8 @@ msgid "" "

          Could not convert: %s

          It is a DRMed book. You must " "first remove the DRM using 3rd party tools." msgstr "" +"

          Не могу преобразовать: %s

          Это DRM книга. Перед " +"преобразование удалите DRM используя программное обеспечение." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:1250 msgid "Database does not exist" @@ -4014,10 +4069,12 @@ msgid "" "The directory in which the database should be: %s no longer exists. Please " "choose a new database location." msgstr "" +"Не доступна директория, в которой должна быть база данных %s. Пожалуста " +"выберете новое расположение базы данных." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:1253 msgid "Choose new location for database" -msgstr "" +msgstr "Выберете новое расположение базы данных." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:1306 msgid "" @@ -4027,7 +4084,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:1327 msgid "There are active jobs. Are you sure you want to quit?" -msgstr "" +msgstr "Имеется активное задание. Вы всеравно хотите выйти?" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:1329 msgid "" @@ -4840,7 +4897,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/config.py:534 msgid "The language in which to display the user interface" -msgstr "" +msgstr "Язык для отображения пользовательского интерфейса" #: /home/kovid/work/calibre/src/calibre/utils/config.py:538 msgid "Read metadata from files" @@ -4868,7 +4925,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/sftp.py:71 msgid "Failed to authenticate with server: %s" -msgstr "" +msgstr "Ошибка авторизации на сервере: %s" #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:76 #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:97 @@ -4878,7 +4935,7 @@ msgstr "Неизвестная заготовка" #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:115 #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:137 msgid "Untitled article" -msgstr "" +msgstr "Безымянная статья" #: /home/kovid/work/calibre/src/calibre/web/feeds/main.py:15 msgid "Options to control the fetching of periodical content from the web." diff --git a/src/calibre/translations/sk.po b/src/calibre/translations/sk.po index 94557809c4..2e0e7fac27 100644 --- a/src/calibre/translations/sk.po +++ b/src/calibre/translations/sk.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-12-15 02:49+0000\n" -"PO-Revision-Date: 2008-12-12 09:25+0000\n" +"PO-Revision-Date: 2008-12-15 22:58+0000\n" "Last-Translator: Michael Gallo \n" "Language-Team: Slovak \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2008-12-15 18:24+0000\n" +"X-Launchpad-Export-Date: 2008-12-17 21:17+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:137 @@ -2473,7 +2473,7 @@ msgstr "Automatické rozoznávanie &kapitol" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/epub_ui.py:408 msgid "&XPath:" -msgstr "" +msgstr "Výraz &XPath:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/epub_ui.py:409 msgid "" @@ -2492,151 +2492,173 @@ msgid "" "style=\" text-decoration: underline; color:#0000ff;\">XPath " "tutorial

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

          Automatické rozoznávanie " +"kapitol môžete ovládať pomocou výrazu XPath. Viac informácií o výrazoch " +"XPath nájdete v XPath " +"tutoriáli.

          " #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/epub_ui.py:414 msgid "Chapter &mark:" -msgstr "" +msgstr "&Značka kapitol:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/epub_ui.py:415 msgid "Automatic &Table of Contents" -msgstr "" +msgstr "Automatický &obsah" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/epub_ui.py:416 msgid "Number of &links to add to Table of Contents" -msgstr "" +msgstr "&Počet odkazov, ktoré budú pridané do obsahu" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/epub_ui.py:417 msgid "Do not add &detected chapters to the Table of Contents" -msgstr "" +msgstr "&Nepridávať automaticky rozoznané kapitoly do obsahu" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/epub_ui.py:418 msgid "Chapter &threshold" -msgstr "" +msgstr "Prahová úroveň &kapitol" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/epub_ui.py:419 msgid "&Force use of auto-generated Table of Contents" -msgstr "" +msgstr "&Vždy použiť automaticky generovaný obsah" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/epub_ui.py:420 msgid "Level &1 TOC" -msgstr "" +msgstr "Obsah úrovne &1" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/epub_ui.py:421 msgid "Level &2 TOC" -msgstr "" +msgstr "Obsah úrovne &2" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:38 msgid "Author Sort" -msgstr "" +msgstr "Autor (triediť ako)" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:40 msgid "ISBN" -msgstr "" +msgstr "ISBN" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:104 msgid "Cannot connect" -msgstr "" +msgstr "Spojenie zlyhalo" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:105 msgid "You must specify a valid access key for isbndb.com" -msgstr "" +msgstr "Musíte zadať platný kľúč pre isbndb.com" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:139 msgid "Error fetching metadata" -msgstr "" +msgstr "Chyba preberania metadát" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:144 msgid "No metadata found" -msgstr "" +msgstr "Žiadne metadáta neboli nájdené" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:144 msgid "" "No metadata found, try adjusting the title and author or the ISBN key." msgstr "" +"Žiadne metadáta neboli nájdené, skúste pozmeniť titul a autora, alebo ISBN " +"kód." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:77 msgid "Fetch metadata" -msgstr "" +msgstr "Prevziať metadáta" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:78 msgid "Fetching metadata for %1" -msgstr "" +msgstr "Preberám metadáta pre %1" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:79 msgid "" "Sign up for a free account from ISBNdb.com to get an access key." msgstr "" +"Založte si bezplatný účet na ISBNdb.com a získate prístupový kľúč." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:80 msgid "&Access Key:" -msgstr "" +msgstr "&Prístupový kľúč:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:81 msgid "Fetch" -msgstr "" +msgstr "Prevziať" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:82 msgid "Matches" -msgstr "" +msgstr "Zhody" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:83 msgid "" "Select the book that most closely matches your copy from the list below" -msgstr "" +msgstr "Zo zoznamu dole vyberte knihu, ktorá sa najviac zhoduje s vašou" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/job_view_ui.py:33 msgid "Details of job" -msgstr "" +msgstr "Podrobnosti úlohy" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs.py:27 msgid "Unavailable" -msgstr "" +msgstr "Nie sú k dispozícii" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs.py:38 msgid " - Jobs" -msgstr "" +msgstr " - Úlohy" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:38 msgid "Active Jobs" -msgstr "" +msgstr "Aktívne úlohy" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:39 msgid "&Stop selected job" -msgstr "" +msgstr "&Zastaviť označenú úlohu" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single.py:98 msgid "Choose the format to convert into LRF" -msgstr "" +msgstr "Vyberte zdrojový formát na prevod do LRF" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single.py:106 msgid "Convert %s to LRF" -msgstr "" +msgstr "Previesť %s do formátu LRF" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/tools.py:347 msgid "Set conversion defaults" -msgstr "" +msgstr "Štandardné nastavenie prevodu" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single.py:260 msgid "" "Preprocess the file before converting to LRF. This is useful if you know " "that the file is from a specific source. Known sources:" msgstr "" +"Predspracovať súbor pred prevodom do LRF. Užitočné ak poznáte zdroj z " +"ktorého súbor pochádza. Známe zdroje:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single.py:261 msgid "
          1. baen - Books from BAEN Publishers
          2. " -msgstr "" +msgstr "
            1. baen - Knihy z vydavateľstva BAEN
            2. " #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single.py:262 msgid "" "
            3. pdftohtml - HTML files that are the output of the program " "pdftohtml
            4. " msgstr "" +"
            5. pdftohtml - HTML súbory vygenerované programom pdftohtml
            6. " #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single.py:263 msgid "
            7. book-designer - HTML0 files from Book Designer
            8. " msgstr "" +"
            9. book-designer - súbory HTML0 z programu Book Designer
            10. " #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single.py:296 msgid "" diff --git a/src/calibre/translations/sl.po b/src/calibre/translations/sl.po index 93d057fc15..bb1b00fff8 100644 --- a/src/calibre/translations/sl.po +++ b/src/calibre/translations/sl.po @@ -13,7 +13,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2008-12-15 18:25+0000\n" +"X-Launchpad-Export-Date: 2008-12-17 21:17+0000\n" "X-Generator: Launchpad (build Unknown)\n" "Generated-By: pygettext.py 1.5\n" diff --git a/src/calibre/translations/sv.po b/src/calibre/translations/sv.po index 9e2623cb29..73c5a269fa 100644 --- a/src/calibre/translations/sv.po +++ b/src/calibre/translations/sv.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: 2008-12-15 18:24+0000\n" +"X-Launchpad-Export-Date: 2008-12-17 21:16+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:137 diff --git a/src/calibre/translations/te.po b/src/calibre/translations/te.po index fb04f5911a..4e7db53d2d 100644 --- a/src/calibre/translations/te.po +++ b/src/calibre/translations/te.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: 2008-12-15 18:24+0000\n" +"X-Launchpad-Export-Date: 2008-12-17 21:16+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:137 diff --git a/src/calibre/utils/lzx/compressor.c b/src/calibre/utils/lzx/compressor.c index cf3c3f6e92..1c496a5c27 100644 --- a/src/calibre/utils/lzx/compressor.c +++ b/src/calibre/utils/lzx/compressor.c @@ -21,7 +21,7 @@ + ((compressor)->input.size - (compressor)->input.offset)) typedef struct buffer_t { - void *data; + char *data; unsigned int size; unsigned int offset; } buffer_t; @@ -222,7 +222,7 @@ Compressor_init(Compressor *self, PyObject *args, PyObject *kwds) static PyObject * Compressor_compress__( - Compressor *self, unsigned char *data, unsigned int inlen, int flush) + Compressor *self, char *data, unsigned int inlen, int flush) { buffer_t *residue = &self->residue; buffer_t *input = &self->input; @@ -305,7 +305,7 @@ static PyObject * Compressor_compress(Compressor *self, PyObject *args, PyObject *kwds) { static char *kwlist[] = {"data", "flush", NULL}; - unsigned char *data = NULL; + char *data = NULL; unsigned int inlen = 0; int flush = 0; diff --git a/src/calibre/utils/lzx/lzc.c b/src/calibre/utils/lzx/lzc.c index 0709714d81..e1f153d97c 100644 --- a/src/calibre/utils/lzx/lzc.c +++ b/src/calibre/utils/lzx/lzc.c @@ -27,7 +27,6 @@ #include #include #include -#include #include #ifdef DEBUG_PERF #include @@ -75,7 +74,7 @@ void lz_init(lz_info *lzi, int wsize, int max_dist, lzi->user_data = user_data; lzi->frame_size = frame_size; lzi->lentab = calloc(lzi->block_buf_size + 1, sizeof(int)); - lzi->prevtab = calloc(lzi->block_buf_size + 1, sizeof(u_char *)); + lzi->prevtab = calloc(lzi->block_buf_size + 1, sizeof(unsigned char *)); lzi->analysis_valid = 0; } @@ -103,7 +102,7 @@ typedef struct lz_user_data int R0, R1, R2; } lz_user_data; -int tmp_get_chars(lz_info *lzi, int n, u_char *buf) +int tmp_get_chars(lz_info *lzi, int n, unsigned char *buf) { lz_user_data *lzud = (lz_user_data *)lzi->user_data; return fread(buf, 1, n, lzud->infile); @@ -120,7 +119,7 @@ int tmp_output_match(lz_info *lzi, int match_pos, int match_len) return 0; } -void tmp_output_literal(lz_info *lzi, u_char ch) +void tmp_output_literal(lz_info *lzi, unsigned char ch) { lz_user_data *lzud = (lz_user_data *)lzi->user_data; fprintf(lzud->outfile, "'%c'", ch); @@ -138,7 +137,7 @@ int main(int argc, char *argv[]) } #endif -__inline__ int lz_left_to_process(lz_info *lzi) +int lz_left_to_process(lz_info *lzi) { return lzi->chars_in_buf - lzi->block_loc; } @@ -147,7 +146,7 @@ static void fill_blockbuf(lz_info *lzi, int maxchars) { int toread; - u_char *readhere; + unsigned char *readhere; int nread; if (lzi->eofcount) return; @@ -164,10 +163,10 @@ fill_blockbuf(lz_info *lzi, int maxchars) static void lz_analyze_block(lz_info *lzi) { int *lentab, *lenp; - u_char **prevtab, **prevp; - u_char *bbp, *bbe; - u_char *chartab[256]; - u_char *cursor; + unsigned char **prevtab, **prevp; + unsigned char *bbp, *bbe; + unsigned char *chartab[256]; + unsigned char *cursor; int prevlen; int ch; int maxlen; @@ -288,9 +287,9 @@ void lz_stop_compressing(lz_info *lzi) int lz_compress(lz_info *lzi, int nchars) { - u_char *bbp, *bbe; + unsigned char *bbp, *bbe; int *lentab, *lenp; - u_char **prevtab, **prevp; + unsigned char **prevtab, **prevp; int len; int holdback; short trimmed; diff --git a/src/calibre/utils/lzx/lzc.h b/src/calibre/utils/lzx/lzc.h index a721fede60..8a24f2c090 100644 --- a/src/calibre/utils/lzx/lzc.h +++ b/src/calibre/utils/lzx/lzc.h @@ -16,24 +16,24 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ typedef struct lz_info lz_info; -typedef int (*get_chars_t)(lz_info *lzi, int n, u_char *buf); +typedef int (*get_chars_t)(lz_info *lzi, int n, unsigned char *buf); typedef int (*output_match_t)(lz_info *lzi, int match_pos, int match_len); -typedef void (*output_literal_t)(lz_info *lzi, u_char ch); +typedef void (*output_literal_t)(lz_info *lzi, unsigned char ch); struct lz_info { int wsize; /* window size in bytes */ int max_match; /* size of longest match in bytes */ int min_match; - u_char *block_buf; - u_char *block_bufe; + unsigned char *block_buf; + unsigned char *block_bufe; int block_buf_size; int chars_in_buf; int cur_loc; /* location within stream */ int block_loc; int frame_size; int max_dist; - u_char **prevtab; + unsigned char **prevtab; int *lentab; short eofcount; short stop; diff --git a/src/calibre/utils/lzx/lzxc.c b/src/calibre/utils/lzx/lzxc.c index c5ad518bc2..1617e544d2 100644 --- a/src/calibre/utils/lzx/lzxc.c +++ b/src/calibre/utils/lzx/lzxc.c @@ -23,7 +23,11 @@ #include #include -#include +#ifdef _MSC_VER +# include "msstdint.h" +#else /* _MSC_VER */ +# include +#endif /* _MSC_VER */ #include /* for memset on Linux */ #include #include @@ -75,7 +79,7 @@ /* as corrected by Caie */ short num_position_slots[] = {30, 32, 34, 36, 38, 42, 50}; unsigned long position_base[51]; -u_char extra_bits[52]; +unsigned char extra_bits[52]; double rloge2; typedef struct ih_elem { @@ -455,7 +459,7 @@ struct lzxc_data }; static int -lzx_get_chars(lz_info *lzi, int n, u_char *buf) +lzx_get_chars(lz_info *lzi, int n, unsigned char *buf) { /* force lz compression to stop after every block */ int chars_read; @@ -500,9 +504,9 @@ lzx_get_chars(lz_info *lzi, int n, u_char *buf) #ifdef NONSLIDE static int find_match_at(lz_info *lzi, int loc, int match_len, int *match_locp) { - u_char *matchb; - u_char *nmatchb; - u_char *c1, *c2; + unsigned char *matchb; + unsigned char *nmatchb; + unsigned char *c1, *c2; int j; if (-*match_locp == loc) return -1; @@ -527,9 +531,9 @@ static int find_match_at(lz_info *lzi, int loc, int match_len, int *match_locp) #else static int find_match_at(lz_info *lzi, int loc, int match_len, int *match_locp) { - u_char *matchb; - u_char *nmatchb; - u_char *c1, *c2; + unsigned char *matchb; + unsigned char *nmatchb; + unsigned char *c1, *c2; int j; if (-*match_locp == loc) return -1; @@ -794,7 +798,7 @@ lzx_output_match(lz_info *lzi, int match_pos, int match_len) } static void -lzx_output_literal(lz_info *lzi, u_char ch) +lzx_output_literal(lz_info *lzi, unsigned char ch) { lzxc_data *lzud = (lzxc_data *)lzi->user_data; @@ -957,15 +961,15 @@ lzx_write_compressed_tree(struct lzxc_data *lzxd, struct huff_entry *tree, uint8_t *prevlengths, int treesize) { - u_char *codes; - u_char *runs; + unsigned char *codes; + unsigned char *runs; int freqs[LZX_PRETREE_SIZE]; int cur_run; int last_len; huff_entry pretree[20]; - u_char *codep; - u_char *codee; - u_char *runp; + unsigned char *codep; + unsigned char *codee; + unsigned char *runp; int excess; int i; int cur_code; diff --git a/src/calibre/utils/lzx/lzxc.h b/src/calibre/utils/lzx/lzxc.h index bb8407e0e2..30da460a81 100644 --- a/src/calibre/utils/lzx/lzxc.h +++ b/src/calibre/utils/lzx/lzxc.h @@ -15,6 +15,11 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#ifdef _MSC_VER +#include "msstdint.h" +#endif + typedef struct lzxc_data lzxc_data; typedef int (*lzxc_get_bytes_t)(void *arg, int n, void *buf); typedef int (*lzxc_put_bytes_t)(void *arg, int n, void *buf); diff --git a/src/calibre/utils/lzx/msstdint.h b/src/calibre/utils/lzx/msstdint.h new file mode 100644 index 0000000000..e032ff1605 --- /dev/null +++ b/src/calibre/utils/lzx/msstdint.h @@ -0,0 +1,232 @@ +// ISO C9x compliant stdint.h for Microsoft Visual Studio +// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 +// +// Copyright (c) 2006-2008 Alexander Chemeris +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. The name of the author may be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +/////////////////////////////////////////////////////////////////////////////// + +#ifndef _MSC_VER // [ +#error "Use this header only with Microsoft Visual C++ compilers!" +#endif // _MSC_VER ] + +#ifndef _MSC_STDINT_H_ // [ +#define _MSC_STDINT_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif + +#include + +// For Visual Studio 6 in C++ mode wrap include with 'extern "C++" {}' +// or compiler give many errors like this: +// error C2733: second C linkage of overloaded function 'wmemchr' not allowed +#if (_MSC_VER < 1300) && defined(__cplusplus) + extern "C++" { +#endif +# include +#if (_MSC_VER < 1300) && defined(__cplusplus) + } +#endif + +// Define _W64 macros to mark types changing their size, like intptr_t. +#ifndef _W64 +# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300 +# define _W64 __w64 +# else +# define _W64 +# endif +#endif + + +// 7.18.1 Integer types + +// 7.18.1.1 Exact-width integer types +typedef __int8 int8_t; +typedef __int16 int16_t; +typedef __int32 int32_t; +typedef __int64 int64_t; +typedef unsigned __int8 uint8_t; +typedef unsigned __int16 uint16_t; +typedef unsigned __int32 uint32_t; +typedef unsigned __int64 uint64_t; + +// 7.18.1.2 Minimum-width integer types +typedef int8_t int_least8_t; +typedef int16_t int_least16_t; +typedef int32_t int_least32_t; +typedef int64_t int_least64_t; +typedef uint8_t uint_least8_t; +typedef uint16_t uint_least16_t; +typedef uint32_t uint_least32_t; +typedef uint64_t uint_least64_t; + +// 7.18.1.3 Fastest minimum-width integer types +typedef int8_t int_fast8_t; +typedef int16_t int_fast16_t; +typedef int32_t int_fast32_t; +typedef int64_t int_fast64_t; +typedef uint8_t uint_fast8_t; +typedef uint16_t uint_fast16_t; +typedef uint32_t uint_fast32_t; +typedef uint64_t uint_fast64_t; + +// 7.18.1.4 Integer types capable of holding object pointers +#ifdef _WIN64 // [ + typedef __int64 intptr_t; + typedef unsigned __int64 uintptr_t; +#else // _WIN64 ][ + typedef _W64 int intptr_t; + typedef _W64 unsigned int uintptr_t; +#endif // _WIN64 ] + +// 7.18.1.5 Greatest-width integer types +typedef int64_t intmax_t; +typedef uint64_t uintmax_t; + + +// 7.18.2 Limits of specified-width integer types + +#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259 + +// 7.18.2.1 Limits of exact-width integer types +#define INT8_MIN ((int8_t)_I8_MIN) +#define INT8_MAX _I8_MAX +#define INT16_MIN ((int16_t)_I16_MIN) +#define INT16_MAX _I16_MAX +#define INT32_MIN ((int32_t)_I32_MIN) +#define INT32_MAX _I32_MAX +#define INT64_MIN ((int64_t)_I64_MIN) +#define INT64_MAX _I64_MAX +#define UINT8_MAX _UI8_MAX +#define UINT16_MAX _UI16_MAX +#define UINT32_MAX _UI32_MAX +#define UINT64_MAX _UI64_MAX + +// 7.18.2.2 Limits of minimum-width integer types +#define INT_LEAST8_MIN INT8_MIN +#define INT_LEAST8_MAX INT8_MAX +#define INT_LEAST16_MIN INT16_MIN +#define INT_LEAST16_MAX INT16_MAX +#define INT_LEAST32_MIN INT32_MIN +#define INT_LEAST32_MAX INT32_MAX +#define INT_LEAST64_MIN INT64_MIN +#define INT_LEAST64_MAX INT64_MAX +#define UINT_LEAST8_MAX UINT8_MAX +#define UINT_LEAST16_MAX UINT16_MAX +#define UINT_LEAST32_MAX UINT32_MAX +#define UINT_LEAST64_MAX UINT64_MAX + +// 7.18.2.3 Limits of fastest minimum-width integer types +#define INT_FAST8_MIN INT8_MIN +#define INT_FAST8_MAX INT8_MAX +#define INT_FAST16_MIN INT16_MIN +#define INT_FAST16_MAX INT16_MAX +#define INT_FAST32_MIN INT32_MIN +#define INT_FAST32_MAX INT32_MAX +#define INT_FAST64_MIN INT64_MIN +#define INT_FAST64_MAX INT64_MAX +#define UINT_FAST8_MAX UINT8_MAX +#define UINT_FAST16_MAX UINT16_MAX +#define UINT_FAST32_MAX UINT32_MAX +#define UINT_FAST64_MAX UINT64_MAX + +// 7.18.2.4 Limits of integer types capable of holding object pointers +#ifdef _WIN64 // [ +# define INTPTR_MIN INT64_MIN +# define INTPTR_MAX INT64_MAX +# define UINTPTR_MAX UINT64_MAX +#else // _WIN64 ][ +# define INTPTR_MIN INT32_MIN +# define INTPTR_MAX INT32_MAX +# define UINTPTR_MAX UINT32_MAX +#endif // _WIN64 ] + +// 7.18.2.5 Limits of greatest-width integer types +#define INTMAX_MIN INT64_MIN +#define INTMAX_MAX INT64_MAX +#define UINTMAX_MAX UINT64_MAX + +// 7.18.3 Limits of other integer types + +#ifdef _WIN64 // [ +# define PTRDIFF_MIN _I64_MIN +# define PTRDIFF_MAX _I64_MAX +#else // _WIN64 ][ +# define PTRDIFF_MIN _I32_MIN +# define PTRDIFF_MAX _I32_MAX +#endif // _WIN64 ] + +#define SIG_ATOMIC_MIN INT_MIN +#define SIG_ATOMIC_MAX INT_MAX + +#ifndef SIZE_MAX // [ +# ifdef _WIN64 // [ +# define SIZE_MAX _UI64_MAX +# else // _WIN64 ][ +# define SIZE_MAX _UI32_MAX +# endif // _WIN64 ] +#endif // SIZE_MAX ] + +// WCHAR_MIN and WCHAR_MAX are also defined in +#ifndef WCHAR_MIN // [ +# define WCHAR_MIN 0 +#endif // WCHAR_MIN ] +#ifndef WCHAR_MAX // [ +# define WCHAR_MAX _UI16_MAX +#endif // WCHAR_MAX ] + +#define WINT_MIN 0 +#define WINT_MAX _UI16_MAX + +#endif // __STDC_LIMIT_MACROS ] + + +// 7.18.4 Limits of other integer types + +#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260 + +// 7.18.4.1 Macros for minimum-width integer constants + +#define INT8_C(val) val##i8 +#define INT16_C(val) val##i16 +#define INT32_C(val) val##i32 +#define INT64_C(val) val##i64 + +#define UINT8_C(val) val##ui8 +#define UINT16_C(val) val##ui16 +#define UINT32_C(val) val##ui32 +#define UINT64_C(val) val##ui64 + +// 7.18.4.2 Macros for greatest-width integer constants +#define INTMAX_C INT64_C +#define UINTMAX_C UINT64_C + +#endif // __STDC_CONSTANT_MACROS ] + + +#endif // _MSC_STDINT_H_ ] diff --git a/src/calibre/web/feeds/recipes/__init__.py b/src/calibre/web/feeds/recipes/__init__.py index 6d4f399d10..ec2a609eee 100644 --- a/src/calibre/web/feeds/recipes/__init__.py +++ b/src/calibre/web/feeds/recipes/__init__.py @@ -18,6 +18,7 @@ recipe_modules = [ 'nytimes_sub', 'security_watch', 'cyberpresse', 'st_petersburg_times', 'clarin', 'financial_times', 'heise', 'le_monde', 'harpers', 'science_aas', 'science_news', 'the_nation', 'lrb', 'harpers_full', 'liberation', + 'linux_magazine', ] import re, imp, inspect, time, os diff --git a/src/calibre/web/feeds/recipes/linux_magazine.py b/src/calibre/web/feeds/recipes/linux_magazine.py new file mode 100644 index 0000000000..8b6d6ba81f --- /dev/null +++ b/src/calibre/web/feeds/recipes/linux_magazine.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' +__copyright__ = '2008, Darko Miletic ' +''' +linux-magazine.com +''' + +from calibre.ebooks.BeautifulSoup import BeautifulSoup +from calibre.web.feeds.news import BasicNewsRecipe + +class LinuxMagazine(BasicNewsRecipe): + title = u'Linux Magazine' + __author__ = 'Darko Miletic' + description = 'Linux news' + oldest_article = 7 + max_articles_per_feed = 100 + no_stylesheets = True + use_embedded_content = False + + remove_tags_after = dict(name='div', attrs={'class':'end_intro'}) + remove_tags = [ + dict(name='div' , attrs={'class':'end_intro' }) + ,dict(name='table' , attrs={'width':'100%'}) + ] + + feeds = [(u'Linux Magazine Full Feed', u'http://www.linux-magazine.com/rss/feed/lmi_full')] + + def print_version(self, url): + raw = self.browser.open(url).read() + soup = BeautifulSoup(raw.decode('utf8', 'replace')) + print_link = soup.find('a', {'title':'Print this page'}) + if print_link is None: + return url + return 'http://www.linux-magazine.com'+print_link['href'] +