From 0ed2f3fceb3cc4cc06319d199109b7647e5c9af4 Mon Sep 17 00:00:00 2001 From: ldolse Date: Fri, 1 Oct 2010 17:45:47 +0800 Subject: [PATCH 001/377] partial/potential fix for mobi problem --- src/calibre/ebooks/mobi/mobiml.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/ebooks/mobi/mobiml.py b/src/calibre/ebooks/mobi/mobiml.py index 231ad51eee..31b1ac5834 100644 --- a/src/calibre/ebooks/mobi/mobiml.py +++ b/src/calibre/ebooks/mobi/mobiml.py @@ -188,7 +188,7 @@ class MobiMLizer(object): para = wrapper emleft = int(round(left / self.profile.fbase)) - 1 emleft = min((emleft, 10)) - while emleft > 0: + while emleft > 1: para = etree.SubElement(para, XHTML('blockquote')) emleft -= 1 else: From 3900216da0896ff1d372714f074ea71e39885054 Mon Sep 17 00:00:00 2001 From: ldolse Date: Fri, 1 Oct 2010 19:17:32 +0800 Subject: [PATCH 002/377] revert mobi change --- src/calibre/ebooks/mobi/mobiml.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/ebooks/mobi/mobiml.py b/src/calibre/ebooks/mobi/mobiml.py index 31b1ac5834..231ad51eee 100644 --- a/src/calibre/ebooks/mobi/mobiml.py +++ b/src/calibre/ebooks/mobi/mobiml.py @@ -188,7 +188,7 @@ class MobiMLizer(object): para = wrapper emleft = int(round(left / self.profile.fbase)) - 1 emleft = min((emleft, 10)) - while emleft > 1: + while emleft > 0: para = etree.SubElement(para, XHTML('blockquote')) emleft -= 1 else: From 4a044b8e9d6b5f0168ef4e65d6a3e9aa47f182b4 Mon Sep 17 00:00:00 2001 From: ldolse Date: Mon, 4 Oct 2010 16:16:33 +0800 Subject: [PATCH 003/377] small tweak --- src/calibre/ebooks/conversion/utils.py | 8 +++++--- src/calibre/ebooks/mobi/mobiml.py | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/calibre/ebooks/conversion/utils.py b/src/calibre/ebooks/conversion/utils.py index 2faec27b68..976ed6a8f4 100644 --- a/src/calibre/ebooks/conversion/utils.py +++ b/src/calibre/ebooks/conversion/utils.py @@ -146,7 +146,7 @@ class PreProcessor(object): #print "blanks between paragraphs is marked True" else: blanks_between_paragraphs = False - #self.log("\n\n\n\n\n\n\n\n\n\n\n"+html+"\n\n\n\n\n\n\n\n\n\n\n\n\n") + self.log("\n\n\n\n\n\n\n\n\n\n\n"+html+"\n\n\n\n\n\n\n\n\n\n\n\n\n") # detect chapters/sections to match xpath or splitting logic # # Build the Regular Expressions in pieces @@ -166,13 +166,13 @@ class PreProcessor(object): title_line_close = "()?\s*()?\s*(]*>)?\s*" opt_title_close = ")?" - default_title = r"(\s*[\w\'\"-]+){1,5}(?!<)" + default_title = r"(\s*[\w\'\"-]+){1,5}?(?=<)" typical_chapters = r".?(Introduction|Synopsis|Acknowledgements|Chapter|Kapitel|Epilogue|Volume\s|Prologue|Book\s|Part\s|Dedication)\s*([\d\w-]+\:?\s*){0,4}" numeric_chapters = r".?(\d+\.?|(CHAPTER\s*([\dA-Z\-\'\"\?\.!#,]+\s*){1,10}))\s*" uppercase_chapters = r"\s*.?([A-Z#]+(\s|-){0,3}){1,5}\s*" chapter_marker = lookahead+chapter_line_open+chapter_header_open+typical_chapters+chapter_header_close+chapter_line_close+blank_lines+opt_title_open+title_line_open+title_header_open+default_title+title_header_close+title_line_close+opt_title_close - #print chapter_marker + print chapter_marker heading = re.compile(']*>', re.IGNORECASE) self.html_preprocess_sections = len(heading.findall(html)) self.log("found " + unicode(self.html_preprocess_sections) + " pre-existing headings") @@ -184,12 +184,14 @@ class PreProcessor(object): if self.html_preprocess_sections < 10: self.log("not enough chapters, only " + unicode(self.html_preprocess_sections) + ", trying numeric chapters") chapter_marker = lookahead+chapter_line_open+chapter_header_open+numeric_chapters+chapter_header_close+chapter_line_close+blank_lines+opt_title_open+title_line_open+title_header_open+default_title+title_header_close+title_line_close+opt_title_close + print chapter_marker chapdetect2 = re.compile(r'%s' % chapter_marker, re.IGNORECASE) html = chapdetect2.sub(self.chapter_head, html) if self.html_preprocess_sections < 10: self.log("not enough chapters, only " + unicode(self.html_preprocess_sections) + ", trying with uppercase words") chapter_marker = lookahead+chapter_line_open+chapter_header_open+uppercase_chapters+chapter_header_close+chapter_line_close+blank_lines+opt_title_open+title_line_open+title_header_open+default_title+title_header_close+title_line_close+opt_title_close + print chapter_marker chapdetect2 = re.compile(r'%s' % chapter_marker, re.UNICODE) html = chapdetect2.sub(self.chapter_head, html) ###### Unwrap lines ###### diff --git a/src/calibre/ebooks/mobi/mobiml.py b/src/calibre/ebooks/mobi/mobiml.py index 231ad51eee..d4801e637e 100644 --- a/src/calibre/ebooks/mobi/mobiml.py +++ b/src/calibre/ebooks/mobi/mobiml.py @@ -184,12 +184,12 @@ class MobiMLizer(object): elif tag in NESTABLE_TAGS and istate.rendered: para = wrapper = bstate.nested[-1] elif left > 0 and indent >= 0: - para = wrapper = etree.SubElement(parent, XHTML('blockquote')) + para = wrapper = etree.SubElement(parent, XHTML('div')) para = wrapper emleft = int(round(left / self.profile.fbase)) - 1 emleft = min((emleft, 10)) while emleft > 0: - para = etree.SubElement(para, XHTML('blockquote')) + para = etree.SubElement(para, XHTML('div')) emleft -= 1 else: para = wrapper = etree.SubElement(parent, XHTML('p')) From b45dc837830b0e4f61b9cc19dfcc5f214589eb83 Mon Sep 17 00:00:00 2001 From: ldolse Date: Mon, 11 Oct 2010 00:14:00 +1000 Subject: [PATCH 004/377] preprocessing tweaks, fixed division by zero error in line_histogram --- src/calibre/ebooks/conversion/preprocess.py | 2 ++ src/calibre/ebooks/conversion/utils.py | 6 +++++- src/calibre/ebooks/pdb/input.py | 6 ++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/calibre/ebooks/conversion/preprocess.py b/src/calibre/ebooks/conversion/preprocess.py index c5ebae4bba..de01188829 100644 --- a/src/calibre/ebooks/conversion/preprocess.py +++ b/src/calibre/ebooks/conversion/preprocess.py @@ -144,6 +144,8 @@ class DocAnalysis(object): # Normalize the histogram into percents totalLines = len(self.lines) + if totalLines == 0: + return False h = [ float(count)/totalLines for count in hRaw ] #print "\nhRaw histogram lengths are: "+str(hRaw) #print " percents are: "+str(h)+"\n" diff --git a/src/calibre/ebooks/conversion/utils.py b/src/calibre/ebooks/conversion/utils.py index 976ed6a8f4..a01c29f2fb 100644 --- a/src/calibre/ebooks/conversion/utils.py +++ b/src/calibre/ebooks/conversion/utils.py @@ -146,7 +146,7 @@ class PreProcessor(object): #print "blanks between paragraphs is marked True" else: blanks_between_paragraphs = False - self.log("\n\n\n\n\n\n\n\n\n\n\n"+html+"\n\n\n\n\n\n\n\n\n\n\n\n\n") + #self.log("\n\n\n\n\n\n\n\n\n\n\n"+html+"\n\n\n\n\n\n\n\n\n\n\n\n\n") # detect chapters/sections to match xpath or splitting logic # # Build the Regular Expressions in pieces @@ -230,6 +230,7 @@ class PreProcessor(object): html = dehyphenator(html,'html', length) self.log("Done dehyphenating") # Unwrap lines using punctation and line length + unwrap_quotes = re.compile(u"(?<=.{%i}\"')\s*\s*()?\s*(?P<(p|span|div)[^>]*>\s*(<(p|span|div)[^>]*>\s*\s*)\s*){0,3}\s*<(span|div|p)[^>]*>\s*(<(span|div|p)[^>]*>)?\s*(?=[a-z])" % length, re.UNICODE) unwrap = re.compile(u"(?<=.{%i}([a-z,:)\IA\u00DF]|(?\s*()?\s*(?P<(p|span|div)[^>]*>\s*(<(p|span|div)[^>]*>\s*\s*)\s*){0,3}\s*<(span|div|p)[^>]*>\s*(<(span|div|p)[^>]*>)?\s*" % length, re.UNICODE) html = unwrap.sub(' ', html) #check any remaining hyphens, but only unwrap if there is a match @@ -259,5 +260,8 @@ class PreProcessor(object): # put back non-breaking spaces in empty paragraphs to preserve original formatting html = blankreg.sub('\n'+r'\g'+u'\u00a0'+r'\g', html) + + # Center separator lines + html = re.sub(u'

\s*(?P([*#•]+\s*)+)\s*

', '

' + '\g' + '

', html) return html diff --git a/src/calibre/ebooks/pdb/input.py b/src/calibre/ebooks/pdb/input.py index dfe5b653dd..6850c48b16 100644 --- a/src/calibre/ebooks/pdb/input.py +++ b/src/calibre/ebooks/pdb/input.py @@ -9,6 +9,7 @@ import os from calibre.customize.conversion import InputFormatPlugin, OptionRecommendation from calibre.ebooks.pdb.header import PdbHeaderReader from calibre.ebooks.pdb import PDBError, IDENTITY_TO_NAME, get_reader +from calibre.ebooks.conversion.utils import PreProcessor class PDBInput(InputFormatPlugin): @@ -44,3 +45,8 @@ class PDBInput(InputFormatPlugin): opf = reader.extract_content(os.getcwd()) return opf + + def preprocess_html(self, options, html): + self.options = options + preprocessor = PreProcessor(self.options, log=getattr(self, 'log', None)) + return preprocessor(html) \ No newline at end of file From 87b615f81f694f2dffa23a07afe6e87d6e90497f Mon Sep 17 00:00:00 2001 From: ldolse Date: Mon, 18 Oct 2010 04:55:53 +0800 Subject: [PATCH 005/377] added new chapter heading type --- src/calibre/ebooks/conversion/utils.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/calibre/ebooks/conversion/utils.py b/src/calibre/ebooks/conversion/utils.py index a01c29f2fb..6002509013 100644 --- a/src/calibre/ebooks/conversion/utils.py +++ b/src/calibre/ebooks/conversion/utils.py @@ -154,7 +154,7 @@ class PreProcessor(object): chapter_line_open = "<(?Pp|div)[^>]*>\s*(<(?Pfont|span|[ibu])[^>]*>)?\s*(<(?Pfont|span|[ibu])[^>]*>)?\s*(<(?Pfont|span|[ibu])[^>]*>)?\s*" chapter_header_open = r"(?P" chapter_header_close = ")\s*" - chapter_line_close = "()?\s*()?\s*(]*>)?\s*\s*" + chapter_line_close = "()?\s*()?\s*()?\s*\s*" if blanks_between_paragraphs: blank_lines = "(\s*]*>\s*

){0,2}\s*" else: @@ -170,6 +170,7 @@ class PreProcessor(object): typical_chapters = r".?(Introduction|Synopsis|Acknowledgements|Chapter|Kapitel|Epilogue|Volume\s|Prologue|Book\s|Part\s|Dedication)\s*([\d\w-]+\:?\s*){0,4}" numeric_chapters = r".?(\d+\.?|(CHAPTER\s*([\dA-Z\-\'\"\?\.!#,]+\s*){1,10}))\s*" uppercase_chapters = r"\s*.?([A-Z#]+(\s|-){0,3}){1,5}\s*" + numeric_titles = r".?(\d+\.?\s+([\d\w-]+\:?\'?-?\s?){0,5})\s*" chapter_marker = lookahead+chapter_line_open+chapter_header_open+typical_chapters+chapter_header_close+chapter_line_close+blank_lines+opt_title_open+title_line_open+title_header_open+default_title+title_header_close+title_line_close+opt_title_close print chapter_marker @@ -194,6 +195,14 @@ class PreProcessor(object): print chapter_marker chapdetect2 = re.compile(r'%s' % chapter_marker, re.UNICODE) html = chapdetect2.sub(self.chapter_head, html) + + if self.html_preprocess_sections < 10: + self.log("not enough chapters, only " + unicode(self.html_preprocess_sections) + ", trying numeric chapters with titles") + chapter_marker = lookahead+chapter_line_open+chapter_header_open+numeric_titles+chapter_header_close+chapter_line_close+blank_lines+opt_title_open+title_line_open+title_header_open+default_title+title_header_close+title_line_close+opt_title_close + print chapter_marker + chapdetect2 = re.compile(r'%s' % chapter_marker, re.IGNORECASE) + html = chapdetect2.sub(self.chapter_head, html) + ###### Unwrap lines ###### # # Some OCR sourced files have line breaks in the html using a combination of span & p tags From ccb683ef09ded0d708f8eeda5269c2be6a1b3ba7 Mon Sep 17 00:00:00 2001 From: ldolse Date: Mon, 18 Oct 2010 09:02:07 +0800 Subject: [PATCH 006/377] added unicode hyphens to dehyphenation function --- src/calibre/ebooks/conversion/preprocess.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/calibre/ebooks/conversion/preprocess.py b/src/calibre/ebooks/conversion/preprocess.py index de01188829..4a77f58df4 100644 --- a/src/calibre/ebooks/conversion/preprocess.py +++ b/src/calibre/ebooks/conversion/preprocess.py @@ -219,13 +219,13 @@ class Dehyphenator(object): self.html = html self.format = format if format == 'html': - intextmatch = re.compile(u'(?<=.{%i})(?P[^\[\]\\\^\$\.\|\?\*\+\(\)“"\s>]+)-\s*(?=<)(?P\s*(\s*<[iubp][^>]*>\s*)?]*>|\s*<[iubp][^>]*>)?\s*(?P[\w\d]+)' % length) + intextmatch = re.compile(u'(?<=.{%i})(?P[^\[\]\\\^\$\.\|\?\*\+\(\)“"\s>]+)(-|‐)\s*(?=<)(?P\s*(\s*<[iubp][^>]*>\s*)?]*>|\s*<[iubp][^>]*>)?\s*(?P[\w\d]+)' % length) elif format == 'pdf': - intextmatch = re.compile(u'(?<=.{%i})(?P[^\[\]\\\^\$\.\|\?\*\+\(\)“"\s>]+)-\s*(?P

|\s*

\s*<[iub]>)\s*(?P[\w\d]+)'% length) + intextmatch = re.compile(u'(?<=.{%i})(?P[^\[\]\\\^\$\.\|\?\*\+\(\)“"\s>]+)(-|‐)\s*(?P

|\s*

\s*<[iub]>)\s*(?P[\w\d]+)'% length) elif format == 'individual_words': - intextmatch = re.compile(u'>[^<]*\b(?P[^\[\]\\\^\$\.\|\?\*\+\(\)"\s>]+)-(?P[^<]*\b(?P[^\[\]\\\^\$\.\|\?\*\+\(\)"\s>]+)(-|‐)(?P[^\[\]\\\^\$\.\|\?\*\+\(\)“"\s>]+)-\s*(?=<)(?P\s*(\s*<[iubp][^>]*>\s*)?]*>|\s*<[iubp][^>]*>)?\s*(?P[\w\d]+)') + intextmatch = re.compile(u'(?P[^\[\]\\\^\$\.\|\?\*\+\(\)“"\s>]+)(-|‐)\s*(?=<)(?P\s*(\s*<[iubp][^>]*>\s*)?]*>|\s*<[iubp][^>]*>)?\s*(?P[\w\d]+)') html = intextmatch.sub(self.dehyphenate, html) return html From 940d3fd6a6a3fd9dcb957753541606c6da08aa20 Mon Sep 17 00:00:00 2001 From: Hiroshi Miura Date: Sun, 7 Nov 2010 08:43:56 +0900 Subject: [PATCH 007/377] Introduce several news recipes - nikkei * free subscribe version works * subscriber version need more work - CNet/Japan - The H --- resources/recipes/cnet.recipe | 30 +++++++++ resources/recipes/nikkei_free.recipe | 48 +++++++++++++++ resources/recipes/nikkei_sports_sub.recipe | 48 +++++++++++++++ resources/recipes/nikkei_sub.recipe | 71 ++++++++++++++++++++++ resources/recipes/the_h.recipe | 23 +++++++ 5 files changed, 220 insertions(+) create mode 100644 resources/recipes/cnet.recipe create mode 100644 resources/recipes/nikkei_free.recipe create mode 100644 resources/recipes/nikkei_sports_sub.recipe create mode 100644 resources/recipes/nikkei_sub.recipe create mode 100644 resources/recipes/the_h.recipe diff --git a/resources/recipes/cnet.recipe b/resources/recipes/cnet.recipe new file mode 100644 index 0000000000..8f81630762 --- /dev/null +++ b/resources/recipes/cnet.recipe @@ -0,0 +1,30 @@ +import re; + +class AdvancedUserRecipe1287588358(BasicNewsRecipe): + title = u'CNET Japan' + oldest_article = 3 + max_articles_per_feed = 30 + + feeds = [(u'cnet rss', u'http://feeds.japan.cnet.com/cnet/rss')] + language = 'ja' + encoding = 'Shift_JIS' + remove_javascript = True + + preprocess_regexps = [ + (re.compile(ur'.*', re.DOTALL|re.IGNORECASE|re.UNICODE), + lambda match: ''), + (re.compile(r'.*', re.DOTALL|re.IGNORECASE), + lambda match: ''), + (re.compile(ur'.*', re.UNICODE), + lambda match: ''), + ] + + remove_tags_before = dict(name="h2") + remove_tags = [ + {'class':"social_bkm_share"}, + {'class':"social_bkm_print"}, + {'class':"block20 clearfix"}, + dict(name="div",attrs={'id':'bookreview'}), + ] + remove_tags_after = {'class':"block20"} + diff --git a/resources/recipes/nikkei_free.recipe b/resources/recipes/nikkei_free.recipe new file mode 100644 index 0000000000..f3a51e2fd6 --- /dev/null +++ b/resources/recipes/nikkei_free.recipe @@ -0,0 +1,48 @@ +class AdvancedUserRecipe1287958571(BasicNewsRecipe): + title = u'\u65e5\u7d4c\u65b0\u805e\u96fb\u5b50\u7248(Free)' + __author__ = 'Hiroshi Miura' + description = 'News and current market affairs from Japan' + oldest_article = 2 + max_articles_per_feed = 20 + language = 'ja' + + feeds = [ (u'\u65e5\u7d4c\u4f01\u696d', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=sangyo'), + (u'\u65e5\u7d4c\u88fd\u54c1', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=newpro'), + (u'internet', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=internet'), + (u'\u653f\u6cbb', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=seiji'), + (u'\u8ca1\u52d9', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=zaimu'), + (u'\u7d4c\u6e08', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=keizai'), + (u'\u56fd\u969b', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=kaigai'), + (u'\u79d1\u5b66', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=kagaku'), + (u'\u30de\u30fc\u30b1\u30c3\u30c8', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=market'), + (u'\u304f\u3089\u3057', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=kurashi'), + (u'\u30b9\u30dd\u30fc\u30c4', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=sports'), + (u'\u793e\u4f1a', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=shakai'), + (u'\u30a8\u30b3', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=eco'), + (u'\u5065\u5eb7', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=kenkou'), + (u'\u96c7\u7528', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=koyou'), + (u'\u6559\u80b2', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=kyouiku'), + (u'\u304a\u304f\u3084\u307f', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=okuyami'), + (u'\u4eba\u4e8b', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=zinzi'), + (u'\u7279\u96c6', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=special'), + (u'\u5730\u57df\u30cb\u30e5\u30fc\u30b9', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=local'), + (u'\u7d71\u8a08\u30fb\u767d\u66f8', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=report'), + (u'\u30e9\u30f3\u30ad\u30f3\u30b0', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=ranking'), + (u'\u4f1a\u898b', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=interview'), + (u'\u793e\u8aac\u30fb\u6625\u79cb', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=shasetsu'), + (u'\u30b9\u30dd\u30fc\u30c4\uff1a\u30d7\u30ed\u91ce\u7403', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=baseball'), + (u'\u30b9\u30dd\u30fc\u30c4\uff1a\u5927\u30ea\u30fc\u30b0', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=mlb'), + (u'\u30b9\u30dd\u30fc\u30c4\uff1a\u30b5\u30c3\u30ab\u30fc', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=soccer'), + (u'\u30b9\u30dd\u30fc\u30c4\uff1a\u30b4\u30eb\u30d5', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=golf'), + (u'\u30b9\u30dd\u30fc\u30c4\uff1a\u76f8\u64b2', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=sumou'), + (u'\u30b9\u30dd\u30fc\u30c4\uff1a\u7af6\u99ac', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=keiba'), + (u'\u8abf\u67fb\u30fb\u30a2\u30f3\u30b1\u30fc\u30c8', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=research') + ] + + remove_tags_before = dict(id="CONTENTS") + remove_tags = [ + dict(name="form"), + {'class':"cmn-hide"}, + ] + remove_tags_after = {'class':"cmn-pr_list"} + diff --git a/resources/recipes/nikkei_sports_sub.recipe b/resources/recipes/nikkei_sports_sub.recipe new file mode 100644 index 0000000000..350a749dc6 --- /dev/null +++ b/resources/recipes/nikkei_sports_sub.recipe @@ -0,0 +1,48 @@ +import string, re, sys +from calibre import strftime +from calibre.web.feeds.recipes import BasicNewsRecipe + +class NikkeiNet_subscription(BasicNewsRecipe): + title = u'\u65e5\u7d4c\u65b0\u805e\u96fb\u5b50\u7248' + __author__ = 'Hiroshi Miura' + description = 'News and current market affairs from Japan' + needs_subscription = True + oldest_article = 3 + max_articles_per_feed = 20 + language = 'ja' + + feeds = [ + (u'\u30b9\u30dd\u30fc\u30c4\uff1a\u30d7\u30ed\u91ce\u7403', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=baseball'), + (u'\u30b9\u30dd\u30fc\u30c4\uff1a\u5927\u30ea\u30fc\u30b0', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=mlb'), + (u'\u30b9\u30dd\u30fc\u30c4\uff1a\u30b5\u30c3\u30ab\u30fc', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=soccer'), + (u'\u30b9\u30dd\u30fc\u30c4\uff1a\u30b4\u30eb\u30d5', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=golf'), + (u'\u30b9\u30dd\u30fc\u30c4\uff1a\u76f8\u64b2', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=sumou'), + (u'\u30b9\u30dd\u30fc\u30c4\uff1a\u7af6\u99ac', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=keiba') + ] + + remove_tags_before = dict(id="CONTENTS") + remove_tags = [ + dict(name="form"), + {'class':"cmn-hide"}, + ] + remove_tags_after = {'class':"cmn-pr_list"} + recursions = 4 + + def get_browser(self): + br = BasicNewsRecipe.get_browser() + if self.username is not None and self.password is not None: + br.open('https://id.nikkei.com/lounge/nl/base/LA0010.seam?cid=123456&flashId=654321') + assert br.viewing_html() + print br.title() + response = br.response() + response.set_data(response.get_data().replace("", " -->")) + br.set_response(response) + br.select_form(name='LA0010Form01') + br['LA0010Form01:LA0010Email'] = self.username + br['LA0010Form01:LA0010Password'] = self.password + res = br.submit() + raw = res.read() + if '日経IDのサービス一覧へ' not in raw: + raise ValueError('Failed to log in to nikkei.net, check your username(email address) and password') + return br diff --git a/resources/recipes/nikkei_sub.recipe b/resources/recipes/nikkei_sub.recipe new file mode 100644 index 0000000000..8eab6ec328 --- /dev/null +++ b/resources/recipes/nikkei_sub.recipe @@ -0,0 +1,71 @@ +import string, re, sys +from calibre import strftime +from calibre.web.feeds.recipes import BasicNewsRecipe + +class NikkeiNet_subscription(BasicNewsRecipe): + title = u'\u65e5\u7d4c\u65b0\u805e\u96fb\u5b50\u7248' + __author__ = 'Hiroshi Miura' + description = 'News and current market affairs from Japan' + needs_subscription = True + oldest_article = 2 + max_articles_per_feed = 20 + language = 'ja' + recursions = 3 + remove_javascript = False + + feeds = [ (u'\u65e5\u7d4c\u4f01\u696d', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=sangyo'), + (u'\u65e5\u7d4c\u88fd\u54c1', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=newpro'), + (u'internet', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=internet'), + (u'\u653f\u6cbb', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=seiji'), + (u'\u8ca1\u52d9', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=zaimu'), + (u'\u7d4c\u6e08', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=keizai'), + (u'\u56fd\u969b', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=kaigai'), + (u'\u79d1\u5b66', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=kagaku'), + (u'\u30de\u30fc\u30b1\u30c3\u30c8', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=market'), + (u'\u304f\u3089\u3057', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=kurashi'), + (u'\u30b9\u30dd\u30fc\u30c4', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=sports'), + (u'\u793e\u4f1a', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=shakai'), + (u'\u30a8\u30b3', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=eco'), + (u'\u5065\u5eb7', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=kenkou'), + (u'\u96c7\u7528', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=koyou'), + (u'\u6559\u80b2', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=kyouiku'), + (u'\u304a\u304f\u3084\u307f', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=okuyami'), + (u'\u4eba\u4e8b', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=zinzi'), + (u'\u7279\u96c6', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=special'), + (u'\u5730\u57df\u30cb\u30e5\u30fc\u30b9', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=local'), + (u'\u7d71\u8a08\u30fb\u767d\u66f8', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=report'), + (u'\u30e9\u30f3\u30ad\u30f3\u30b0', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=ranking'), + (u'\u4f1a\u898b', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=interview'), + (u'\u793e\u8aac\u30fb\u6625\u79cb', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=shasetsu'), + (u'\u30b9\u30dd\u30fc\u30c4\uff1a\u30d7\u30ed\u91ce\u7403', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=baseball'), + (u'\u30b9\u30dd\u30fc\u30c4\uff1a\u5927\u30ea\u30fc\u30b0', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=mlb'), + (u'\u30b9\u30dd\u30fc\u30c4\uff1a\u30b5\u30c3\u30ab\u30fc', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=soccer'), + (u'\u30b9\u30dd\u30fc\u30c4\uff1a\u30b4\u30eb\u30d5', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=golf'), + (u'\u30b9\u30dd\u30fc\u30c4\uff1a\u76f8\u64b2', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=sumou'), + (u'\u30b9\u30dd\u30fc\u30c4\uff1a\u7af6\u99ac', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=keiba'), + (u'\u8abf\u67fb\u30fb\u30a2\u30f3\u30b1\u30fc\u30c8', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=research') + ] + + def get_browser(self): + br = BasicNewsRecipe.get_browser() + if self.username is not None and self.password is not None: + br.open('https://id.nikkei.com/lounge/nl/base/LA0010.seam') + response = br.response() + response.set_data(response.get_data().replace("", " -->")) + br.set_response(response) + br.select_form(name='LA0010Form01') + br['LA0010Form01:LA0010Email'] = self.username + br['LA0010Form01:LA0010Password'] = self.password + res = br.submit() + raw = res.read() + if '日経IDのサービス一覧へ' not in raw: + raise ValueError('Failed to log in to nikkei.net, check your username(email address) and password') + br.open('http://www.nikkei.com/') + br.select_form(nr=0) + res = br.submit() + print res.read() + return br + + + diff --git a/resources/recipes/the_h.recipe b/resources/recipes/the_h.recipe new file mode 100644 index 0000000000..c25a39ca99 --- /dev/null +++ b/resources/recipes/the_h.recipe @@ -0,0 +1,23 @@ +class AdvancedUserRecipe1289003166(BasicNewsRecipe): + title = u'The H' + __author__ = 'Hiroshi Miura' + oldest_article = 3 + description = 'In association with Heise Online' + publisher = 'Heise Media UK Ltd.' + category = 'news, technology, security' + max_articles_per_feed = 100 + language = 'en' + encoding = 'utf-8' + conversion_options = { + 'comment' : description + ,'tags' : category + ,'publisher': publisher + ,'language' : language + } + feeds = [ + (u'The H News Feed', u'http://www.h-online.com/news/atom.xml') + ] + + def print_version(self, url): + return url + '?view=print' + From e9dec414a78d5d5c7a383130ce6d183953877075 Mon Sep 17 00:00:00 2001 From: Hiroshi Miura Date: Tue, 9 Nov 2010 07:48:06 +0900 Subject: [PATCH 008/377] introduce mainichi news paper and cnet japan renames --- .../recipes/{cnet.recipe => cnetjapan.recipe} | 2 +- resources/recipes/mainichi.recipe | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) rename resources/recipes/{cnet.recipe => cnetjapan.recipe} (95%) create mode 100644 resources/recipes/mainichi.recipe diff --git a/resources/recipes/cnet.recipe b/resources/recipes/cnetjapan.recipe similarity index 95% rename from resources/recipes/cnet.recipe rename to resources/recipes/cnetjapan.recipe index 8f81630762..03a4c2ce2d 100644 --- a/resources/recipes/cnet.recipe +++ b/resources/recipes/cnetjapan.recipe @@ -1,6 +1,6 @@ import re; -class AdvancedUserRecipe1287588358(BasicNewsRecipe): +class CNetJapan(BasicNewsRecipe): title = u'CNET Japan' oldest_article = 3 max_articles_per_feed = 30 diff --git a/resources/recipes/mainichi.recipe b/resources/recipes/mainichi.recipe new file mode 100644 index 0000000000..3653c2e252 --- /dev/null +++ b/resources/recipes/mainichi.recipe @@ -0,0 +1,16 @@ +class MainichiDailyNews(BasicNewsRecipe): + title = u'Mainichi News' + __author__ = 'Hiroshi Miura' + oldest_article = 2 + max_articles_per_feed = 100 + description = 'Japanese traditional newspaper Mainichi Daily News' + publisher = 'Mainichi Daily News' + category = 'news, japan' + language = 'ja' + + feeds = [(u'mainichi IT', u'http://mainichi.pheedo.jp/f/mainichijp_electronics')] + + remove_tags_before = {'class':"NewsTitle"} + remove_tags = [{'class':"RelatedArticle"}] + remove_tags_after = {'class':"ArticleLower"} + From 62759f161b15a4a3d1f126bc0c3f1add41aad878 Mon Sep 17 00:00:00 2001 From: Starson17 Date: Wed, 10 Nov 2010 11:58:15 -0500 Subject: [PATCH 009/377] Sorted user recipes in serialize_collection --- src/calibre/web/feeds/recipes/collection.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/calibre/web/feeds/recipes/collection.py b/src/calibre/web/feeds/recipes/collection.py index 012e24a799..cc96131c4b 100644 --- a/src/calibre/web/feeds/recipes/collection.py +++ b/src/calibre/web/feeds/recipes/collection.py @@ -61,8 +61,8 @@ def serialize_recipe(urn, recipe_class): def serialize_collection(mapping_of_recipe_classes): collection = E.recipe_collection() - for urn, recipe_class in mapping_of_recipe_classes.items(): - recipe = serialize_recipe(urn, recipe_class) + for urn in sorted(mapping_of_recipe_classes.keys(), key = lambda key: mapping_of_recipe_classes[key].title): + recipe = serialize_recipe(urn, mapping_of_recipe_classes[urn]) collection.append(recipe) collection.set('count', str(len(collection))) return etree.tostring(collection, encoding='utf-8', xml_declaration=True, From 798d97a41f20b29f6b6c6105a1b8311d6c8a9fc1 Mon Sep 17 00:00:00 2001 From: Translators <> Date: Sat, 13 Nov 2010 04:55:08 +0000 Subject: [PATCH 010/377] Launchpad automatic translations update. --- src/calibre/translations/ca.po | 360 ++++++++++--------- src/calibre/translations/cs.po | 342 +++++++++--------- src/calibre/translations/da.po | 354 +++++++++--------- src/calibre/translations/de.po | 362 ++++++++++--------- src/calibre/translations/en_GB.po | 354 +++++++++--------- src/calibre/translations/es.po | 356 +++++++++--------- src/calibre/translations/eu.po | 362 ++++++++++--------- src/calibre/translations/fr.po | 579 +++++++++++++++++------------- src/calibre/translations/it.po | 386 +++++++++++--------- src/calibre/translations/nl.po | 573 ++++++++++++++++------------- src/calibre/translations/pl.po | 548 ++++++++++++++++------------ src/calibre/translations/ru.po | 532 +++++++++++++++------------ src/calibre/translations/sl.po | 530 +++++++++++++++------------ src/calibre/translations/sr.po | 352 +++++++++--------- src/calibre/translations/sv.po | 354 +++++++++--------- src/calibre/translations/th.po | 542 ++++++++++++++++------------ 16 files changed, 3763 insertions(+), 3123 deletions(-) diff --git a/src/calibre/translations/ca.po b/src/calibre/translations/ca.po index c96f18d7d9..7dc7075706 100644 --- a/src/calibre/translations/ca.po +++ b/src/calibre/translations/ca.po @@ -10,14 +10,14 @@ msgid "" msgstr "" "Project-Id-Version: ca\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-11-10 14:27+0000\n" -"PO-Revision-Date: 2010-11-10 19:55+0000\n" +"POT-Creation-Date: 2010-11-12 23:11+0000\n" +"PO-Revision-Date: 2010-11-12 20:28+0000\n" "Last-Translator: FerranRius \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-11 04:40+0000\n" +"X-Launchpad-Export-Date: 2010-11-13 04:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -34,7 +34,7 @@ msgstr "No fa absolutament res" #: /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/sony_cache.py:643 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:650 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 @@ -77,14 +77,14 @@ msgstr "No fa absolutament res" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:78 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:119 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:153 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:616 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:822 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:824 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:620 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:826 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:828 #: /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:911 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:916 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:982 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:913 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:918 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:984 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:143 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:150 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:64 @@ -126,8 +126,8 @@ msgstr "No fa absolutament res" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:141 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:927 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:936 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1243 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1249 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1252 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 @@ -195,7 +195,7 @@ msgstr "Acció d'interfície d'usuari" msgid "Preferences" msgstr "Preferències" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:17 +#: /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 " @@ -205,7 +205,7 @@ msgstr "" "contingui els fitxers enllaçats. Aquest connector s'executa cada vegada que " "s'afegeix un fitxer HTML a la biblioteca." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:53 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:51 msgid "" "Character encoding for the input HTML files. Common choices include: cp1252, " "latin1, iso-8859-1 and utf-8." @@ -213,7 +213,7 @@ msgstr "" "Joc de caràcters dels fitxers HTML d'entrada. Les opcions comunes inclouen: " "cp1252, latin1, iso-8859-1 i utf-8." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:60 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:58 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 " @@ -223,7 +223,7 @@ msgstr "" "carpetes pmlname_ing o images. Aquest connector s'executa cada vegada que " "afegiu un fitxer PML a la biblioteca." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:94 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:92 msgid "Extract cover from comic files" msgstr "Extreu la portada dels fitxers de còmic" @@ -270,46 +270,46 @@ msgstr "Estableix les metadades als fitxers %s" msgid "Set metadata from %s files" msgstr "Estableix les metadades des dels fitxers %s" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:711 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:712 msgid "Look and Feel" msgstr "Aspecte i comportament" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:713 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:725 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:736 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:747 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:714 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:726 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:737 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:748 msgid "Interface" msgstr "Interfície" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:717 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:718 msgid "Adjust the look and feel of the calibre interface to suit your tastes" msgstr "" "Ajusta l'aspecte i el comportament de la interfície del calibre adaptar-lo " "al vostre gust" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:723 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:724 msgid "Behavior" msgstr "Comportament" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:729 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:730 msgid "Change the way calibre behaves" msgstr "Canvia el comportament del calibre" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:734 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:208 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:209 msgid "Add your own columns" msgstr "Afegeix les teves columnes" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:740 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:741 msgid "Add/remove your own columns to the calibre book list" msgstr "" "Afegeix/elimina les teves columnes a la llista de llibres del calibre" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:745 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746 msgid "Customize the toolbar" msgstr "Personalitza la barra d'eines" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:751 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:752 msgid "" "Customize the toolbars and context menus, changing which actions are " "available in each" @@ -317,60 +317,60 @@ msgstr "" "Personalitza les barres d'eines i els menús de context, canviant quines " "accions estan disponibles" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:757 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:758 msgid "Input Options" msgstr "Opcions d'entrada" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:759 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:770 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:781 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:760 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:771 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:782 msgid "Conversion" msgstr "Conversió" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:763 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:764 msgid "Set conversion options specific to each input format" msgstr "" "Ajusta les opcions de conversió específiques per a cada format d'entrada" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:768 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769 msgid "Common Options" msgstr "Opcions comunes" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:774 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:775 msgid "Set conversion options common to all formats" msgstr "Ajusta les opcions de conversió comunes a tots els formats" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:779 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780 msgid "Output Options" msgstr "Opcions de sortida" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:785 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:786 msgid "Set conversion options specific to each output format" msgstr "" "Ajusta les opcions de conversió específiques de cada format de sortida" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:790 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791 msgid "Adding books" msgstr "Afegint llibres" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:792 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:804 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:816 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:828 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:793 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:805 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:817 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:829 msgid "Import/Export" msgstr "Importa/exporta" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:796 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:797 msgid "Control how calibre reads metadata from files when adding books" msgstr "" "Controla com el calibre llegeix les metadades dels arxius quan s'afegeixen " "llibres" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:802 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:803 msgid "Saving books to disk" msgstr "Desant els llibres al disc" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:808 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:809 msgid "" "Control how calibre exports files from its database to disk when using Save " "to disk" @@ -378,32 +378,32 @@ msgstr "" "Controla com el calibre exporta fitxers de la seva base de dades al disc en " "utilitzar «Desa al disc»" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:814 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:815 msgid "Sending books to devices" msgstr "S'està enviant llibres als dispositius" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:820 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:821 msgid "Control how calibre transfers files to your ebook reader" msgstr "Controla com el calibre envia fitxers al lector de llibres" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:826 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:827 msgid "Metadata plugboards" msgstr "Metadades dels quadres de connexions" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:832 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:833 msgid "Change metadata fields before saving/sending" msgstr "Canvia els camps de les metadades abans de desar/enviar" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:837 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838 msgid "Sharing books by email" msgstr "Compartint llibres via correu electrònic" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:839 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:851 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:840 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:852 msgid "Sharing" msgstr "Compartint" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:843 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:844 msgid "" "Setup sharing of books via email. Can be used for automatic sending of " "downloaded news to your devices" @@ -411,11 +411,11 @@ msgstr "" "Configura la compartició de llibres per correu electrònic. Es pot utilitzar " "per enviar notícies descarregades als vostres dispositius" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:849 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:850 msgid "Sharing over the net" msgstr "Compartint en xarxa" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:855 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:856 msgid "" "Setup the calibre Content Server which will give you access to your calibre " "library from anywhere, on any device, over the internet" @@ -423,35 +423,35 @@ msgstr "" "Configura el Servidor de Continguts donarà accés a la biblioteca des de " "qualsevol lloc i dispositiu, a través d'internet" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:862 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863 msgid "Plugins" msgstr "Plugins" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:864 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:876 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:887 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:865 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:877 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:888 msgid "Advanced" msgstr "Avançat" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:868 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:869 msgid "Add/remove/customize various bits of calibre functionality" msgstr "" "Afegeix/suprimeix/personalitza diversos bits de la funcionalitat del calibre" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:874 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:875 msgid "Tweaks" msgstr "Ajustos" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:880 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:881 msgid "Fine tune how calibre behaves in various contexts" msgstr "" "Configura en detall el comportament del calibre en diversos contextos" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:885 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886 msgid "Miscellaneous" msgstr "Miscel·lània" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:891 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:892 msgid "Miscellaneous advanced configuration" msgstr "Configuració avançada" @@ -497,7 +497,7 @@ msgstr "" "sabeu res del document d'entrada." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:59 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:436 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:444 msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "" @@ -508,62 +508,62 @@ msgid "This profile is intended for the SONY PRS 300." msgstr "Aquest perfil és adient per al SONY PRS-300." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:80 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:476 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:484 msgid "This profile is intended for the SONY PRS-900." msgstr "Aquest perfil és adient per al SONY PRS-900." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:88 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:506 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:513 msgid "This profile is intended for the Microsoft Reader." msgstr "Aquest perfil és adient per al Microsoft Reader." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:99 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:517 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:524 msgid "This profile is intended for the Mobipocket books." msgstr "Aquest perfil és adient per a llibres Mobipocket." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:112 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:530 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:537 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "Aquest perfil és adient per al Hanlin V3 i els seus clons." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:124 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:542 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:549 msgid "This profile is intended for the Hanlin V5 and its clones." msgstr "Aquest perfil és adient per al Hanlin V5 i els seus clons." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:134 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:550 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:557 msgid "This profile is intended for the Cybook G3." msgstr "Aquest perfil és adient per al Cybook G3." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:147 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:563 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:570 msgid "This profile is intended for the Cybook Opus." msgstr "Aquest perfil és adient per al Cybook Opus" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:159 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:576 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:583 msgid "This profile is intended for the Amazon Kindle." msgstr "Aquest perfil és adient per a l'Amazon Kindle." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:171 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:617 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:631 msgid "This profile is intended for the Irex Illiad." msgstr "Aquest perfil és adient per a l'Irex Illiad" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:183 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:630 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "Aquest perfil és adient per a l'IRex Digital Reader 1000." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:196 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 msgid "This profile is intended for the IRex Digital Reader 800." msgstr "Aquest perfil és adient per a l'IRex Digital Reader 800." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:208 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 msgid "This profile is intended for the B&N Nook." msgstr "Aquest perfil és adient per al B&N Nook." @@ -581,30 +581,30 @@ msgstr "" "si voleu generar un document que es pugui llegir en un PC o en un conjunt " "ampli de dispositius diferents." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:273 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:276 msgid "" "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "" "Destinats als dispositius d'IPAD i similars amb una resolució de 768x1024" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:427 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:435 msgid "Intended for generic tablet devices, does no resizing of images" msgstr "" "Pensat per a dispositius «tablet PC» genèrics, no redimensiona imatges" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:454 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:462 msgid "This profile is intended for the Kobo Reader." msgstr "Aquest perfil és adient per al Kobo Reader." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:467 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:475 msgid "This profile is intended for the SONY PRS-300." msgstr "Aquest perfil és adient per al SONY PRS-300." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:485 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:493 msgid "This profile is intended for the 5-inch JetBook." msgstr "Aquest perfil és adient per al 5-inch JetBook" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:494 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:502 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." @@ -612,11 +612,11 @@ msgstr "" "Aquest perfil és adient per a la línia PRS de SONY. Models 500/505/700... en " "mode apaïsat. Sobretot és útil per als còmics." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:597 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:609 msgid "This profile is intended for the Amazon Kindle DX." msgstr "Aquest perfil és adient per a l'Amazon Kindle DX." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:686 msgid "This profile is intended for the Sanda Bambook." msgstr "Aquest perfil és adient per al Sanda Bambook." @@ -695,7 +695,7 @@ msgstr "Inhabilita el connector anomenat" msgid "Communicate with Android phones." msgstr "Comunica't amb telèfons Android" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:53 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:56 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" @@ -703,7 +703,7 @@ msgstr "" "Llista de carpetes del dispositiu separades per comes on s'enviaran els " "llibres. Es farà servir la primera que ja existeixi al dispositiu." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:95 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:98 msgid "Communicate with S60 phones." msgstr "Comunica't amb telèfons S60." @@ -1061,6 +1061,14 @@ msgstr "El Nook" msgid "Communicate with the Nook eBook reader." msgstr "Comunica't amb un lector Nook." +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 +msgid "Nook Color" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 +msgid "Communicate with the Nook Color eBook reader." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." msgstr "Comunica't amb un lector Nuut2" @@ -2838,7 +2846,7 @@ msgstr "" "identificat amb ISBN des de LibraryThing.com\n" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1399 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 msgid "Cover" msgstr "Portada" @@ -2882,70 +2890,70 @@ msgstr "Tots els articles" msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "Aquest és un llibre Amazon Topaz. No es pot processar" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1400 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 msgid "Title Page" msgstr "Pàgina del títol" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 #: /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:199 msgid "Table of Contents" msgstr "Índex" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 msgid "Index" msgstr "Índex" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 msgid "Glossary" msgstr "Glossari" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 msgid "Acknowledgements" msgstr "Reconeixements" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 msgid "Bibliography" msgstr "Bibliografia" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 msgid "Colophon" msgstr "Colofó" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 msgid "Copyright" msgstr "Drets d'autor" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 msgid "Dedication" msgstr "Dedicatòria" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 msgid "Epigraph" msgstr "Epígraf" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 msgid "Foreword" msgstr "Prefaci" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 msgid "List of Illustrations" msgstr "Índex d'il·lustracions" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 msgid "List of Tables" msgstr "Índex de taules" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 msgid "Notes" msgstr "Anotacions" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1416 msgid "Preface" msgstr "Pròleg" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1417 msgid "Main Text" msgstr "Text principal" @@ -4021,7 +4029,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:391 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:741 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 msgid "Not allowed" msgstr "No està permès" @@ -5138,11 +5146,11 @@ msgstr "" "valors desats d'una conversió prèvia (si existeix) en comptes de fer servir " "els valors per defecte que s'indiquen a les Preferències" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:70 msgid "Bulk Convert" msgstr "Convertir en massa" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 msgid "Options specific to the output format." msgstr "Opcions específiques per al format de sortida" @@ -6356,10 +6364,10 @@ msgstr "S'està enviant correu electrònic a" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:982 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:990 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1083 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1168 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1287 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1295 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1089 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1174 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1293 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1301 msgid "No suitable formats" msgstr "No hi ha formats adequats" @@ -6388,39 +6396,39 @@ msgstr "Error en enviar els següents llibres per email:" msgid "Sent by email:" msgstr "S'ha enviat per correu electrònic:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1042 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1048 msgid "News:" msgstr "Notícies:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1049 msgid "Attached is the" msgstr "S'adjunta el" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1054 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1060 msgid "Sent news to" msgstr "S'ha enviat notícies a" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1084 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1169 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1288 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1090 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1175 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1294 msgid "Auto convert the following books before uploading to the device?" msgstr "" "S'ha de convertir automàticament aquests llibres abans de carregar-los al " "dispositiu?" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1114 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1120 msgid "Sending catalogs to device." msgstr "S'estan enviant els catàlegs al dispositiu." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1201 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1207 msgid "Sending news to device." msgstr "S'estan enviant les notícies al dispositiu." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1254 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1260 msgid "Sending books to device." msgstr "S'estan enviant els llibres al dispositiu." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1296 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1302 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." @@ -6429,11 +6437,11 @@ msgstr "" "un format adequat. Convertiu primer el(s) llibre(s) a un format compatible " "amb el vostre dispositiu." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1360 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1366 msgid "No space on device" msgstr "No hi ha espai al dispositiu" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1367 msgid "" "

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

No es pot desar llibres al dispositiu perquè no hi ha prou espai " @@ -7511,7 +7519,7 @@ msgstr "Pu&blicació:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:402 msgid "dd MMM yyyy" -msgstr "dd MMM aaaa" +msgstr "dd MMM yyyy" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:403 msgid "&Date:" @@ -7838,49 +7846,45 @@ msgid "Advanced Search" msgstr "Cerca avançada" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 -msgid "Find entries that have..." -msgstr "Troba les entrades que tenen..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 -msgid "&All these words:" -msgstr "Totes &aquestes paraules:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 -msgid "This exact &phrase:" -msgstr "Aquesta &frase exacta:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 -msgid "&One or more of these words:" -msgstr "Una &o més d'aquestes paraules:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 -msgid "But dont show entries that have..." -msgstr "Però no mostris les entrades que tenen..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 -msgid "Any of these &unwanted words:" -msgstr "Qualsevol d'aquestes para&ules no desitjades:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 msgid "What kind of match to use:" msgstr "Tipus de coincidència que s'ha de fer servir:" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +msgid "Contains: the word or phrase matches anywhere in the metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +msgid "Equals: the word or phrase must match the entire metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 +msgid "" +"Regular expression: the expression must match anywhere in the metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +msgid "Find entries that have..." +msgstr "Troba les entrades que tenen..." + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +msgid "&All these words:" +msgstr "Totes &aquestes paraules:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +msgid "This exact &phrase:" +msgstr "Aquesta &frase exacta:" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 -msgid "Contains: the word or phrase matches anywhere in the metadata" -msgstr "Conté: la paraula o frase està a qualsevol lloc de les metadades" +msgid "&One or more of these words:" +msgstr "Una &o més d'aquestes paraules:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 -msgid "Equals: the word or phrase must match an entire metadata field" -msgstr "" -"Coincideix: la paraula o frase ha de coincidir amb el camp de metadades " -"sencer" +msgid "But dont show entries that have..." +msgstr "Però no mostris les entrades que tenen..." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 -msgid "" -"Regular expression: the expression must match anywhere in the metadata" -msgstr "" -"Expressió regular: l'expressió ha de coincidir en qualsevol posició de les " -"metadades" +msgid "Any of these &unwanted words:" +msgstr "Qualsevol d'aquestes para&ules no desitjades:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 msgid "" @@ -8726,47 +8730,47 @@ msgstr "S'ha marcat per suprimir" msgid "Double click to edit me

" msgstr "Feu doble clic per a edittar>/b>
-me" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:147 msgid "Hide column %s" msgstr "Amaga la columna %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 msgid "Sort on %s" msgstr "Ordena per %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 msgid "Ascending" msgstr "Ascendent" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:156 msgid "Descending" msgstr "Descendent" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 msgid "Change text alignment for %s" msgstr "Canvia l'alineació del text de %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Left" msgstr "Esquerra" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Right" msgstr "Dreta" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:171 msgid "Center" msgstr "Centrat" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:190 msgid "Show column" msgstr "Mostra la columna" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202 msgid "Restore default layout" msgstr "Restaura la disposició per defecte" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:743 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -13876,6 +13880,20 @@ msgstr "No descarreguis els fulls d'estil CSS" #~ msgstr "" #~ "No es pot fer servir l'editor d'etiquetes si heu modificat les etiquetes" +#~ msgid "Contains: the word or phrase matches anywhere in the metadata" +#~ msgstr "Conté: la paraula o frase està a qualsevol lloc de les metadades" + +#~ msgid "" +#~ "Regular expression: the expression must match anywhere in the metadata" +#~ msgstr "" +#~ "Expressió regular: l'expressió ha de coincidir en qualsevol posició de les " +#~ "metadades" + +#~ msgid "Equals: the word or phrase must match an entire metadata field" +#~ msgstr "" +#~ "Coincideix: la paraula o frase ha de coincidir amb el camp de metadades " +#~ "sencer" + #~ msgid "" #~ "Book formats and metadata from the selected books will be merged into the " #~ "first selected book. ISBN will not be merged.

After " diff --git a/src/calibre/translations/cs.po b/src/calibre/translations/cs.po index 8fe3135949..88f90c8704 100644 --- a/src/calibre/translations/cs.po +++ b/src/calibre/translations/cs.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2010-11-10 14:27+0000\n" -"PO-Revision-Date: 2010-11-10 21:04+0000\n" -"Last-Translator: Marek Sušický \n" +"POT-Creation-Date: 2010-11-12 23:11+0000\n" +"PO-Revision-Date: 2010-11-12 22:54+0000\n" +"Last-Translator: Kovid Goyal \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-11 04:40+0000\n" +"X-Launchpad-Export-Date: 2010-11-13 04:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -31,7 +31,7 @@ msgstr "Nedělá vůbec nic" #: /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/sony_cache.py:643 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:650 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 @@ -74,14 +74,14 @@ msgstr "Nedělá vůbec nic" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:78 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:119 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:153 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:616 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:822 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:824 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:620 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:826 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:828 #: /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:911 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:916 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:982 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:913 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:918 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:984 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:143 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:150 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:64 @@ -123,8 +123,8 @@ msgstr "Nedělá vůbec nic" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:141 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:927 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:936 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1243 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1249 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1252 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 @@ -192,7 +192,7 @@ msgstr "Akce Uživatelského rozhraní" msgid "Preferences" msgstr "Možnosti" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:17 +#: /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 " @@ -202,7 +202,7 @@ msgstr "" "všechny soubory na které odkazy směrují. Tento modul je spušten pokaždé, " "když je do knihovny přidán HTML soubor." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:53 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:51 msgid "" "Character encoding for the input HTML files. Common choices include: cp1252, " "latin1, iso-8859-1 and utf-8." @@ -210,7 +210,7 @@ msgstr "" "Kódování vstupních HTML souborů. Bežně používané kódování jsou např. cp1252, " "latin1 iso-8859-1 nebo UTF-8." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:60 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:58 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 " @@ -220,7 +220,7 @@ msgstr "" "pmlname_img nebo images. Tento plugin je spuštěn pokaždé když přidáte PML " "soubor do knihovny." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:94 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:92 msgid "Extract cover from comic files" msgstr "Vyjmout obálky ze souborů s komixy" @@ -267,98 +267,98 @@ msgstr "Nastavuje metadata do souborů %s" msgid "Set metadata from %s files" msgstr "Nastavuje metadata ze souborů %s" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:711 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:712 msgid "Look and Feel" msgstr "Vzhled" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:713 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:725 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:736 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:747 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:714 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:726 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:737 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:748 msgid "Interface" msgstr "Rozhraní" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:717 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:718 msgid "Adjust the look and feel of the calibre interface to suit your tastes" msgstr "Přizpůsobení vzhledu uživatelského rozhraní calibre" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:723 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:724 msgid "Behavior" msgstr "Chování" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:729 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:730 msgid "Change the way calibre behaves" msgstr "Mění způsob chování calibre" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:734 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:208 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:209 msgid "Add your own columns" msgstr "Přidejte své vlastní sloupce" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:740 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:741 msgid "Add/remove your own columns to the calibre book list" msgstr "Přidejte/odeberte své vlastní sloupce z calibre seznamu knih" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:745 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746 msgid "Customize the toolbar" msgstr "Upravit lištu nástrojů" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:751 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:752 msgid "" "Customize the toolbars and context menus, changing which actions are " "available in each" msgstr "Přizpůsobení panelu nástrojů a kontextových menu." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:757 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:758 msgid "Input Options" msgstr "Volby vstupu" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:759 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:770 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:781 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:760 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:771 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:782 msgid "Conversion" msgstr "Převod" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:763 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:764 msgid "Set conversion options specific to each input format" msgstr "Nastavení převodu specifické pro jednotlivé formáty" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:768 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769 msgid "Common Options" msgstr "Obecné nastavení" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:774 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:775 msgid "Set conversion options common to all formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:779 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780 msgid "Output Options" msgstr "Nastavení výstupu" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:785 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:786 msgid "Set conversion options specific to each output format" msgstr "Nastavení převodu specifické pro jednotlivé formáty" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:790 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791 msgid "Adding books" msgstr "Přidávání knih" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:792 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:804 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:816 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:828 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:793 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:805 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:817 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:829 msgid "Import/Export" msgstr "Import/Export" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:796 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:797 msgid "Control how calibre reads metadata from files when adding books" msgstr "Nastavuje jak calibre čte metadata ze souborů při přidávání knih" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:802 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:803 msgid "Saving books to disk" msgstr "Ukládání knih na disk" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:808 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:809 msgid "" "Control how calibre exports files from its database to disk when using Save " "to disk" @@ -366,32 +366,32 @@ msgstr "" "Nastavuje jak calibre exportuje soubory z jeho databáze na disk při použití " "Ulož na disk" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:814 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:815 msgid "Sending books to devices" msgstr "Posílání knih do zařízení" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:820 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:821 msgid "Control how calibre transfers files to your ebook reader" msgstr "Nastavuje jak calibre přesouvá soubory do vaší čtečky" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:826 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:827 msgid "Metadata plugboards" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:832 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:833 msgid "Change metadata fields before saving/sending" msgstr "Změň metadata před uložením/odesláním" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:837 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838 msgid "Sharing books by email" msgstr "Sdílení knih pomocí emailu" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:839 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:851 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:840 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:852 msgid "Sharing" msgstr "Sdílení" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:843 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:844 msgid "" "Setup sharing of books via email. Can be used for automatic sending of " "downloaded news to your devices" @@ -399,11 +399,11 @@ msgstr "" "Natavení sdílení knih pomocí emailu. Může být použito pro automatické " "odesílání stažených zpráv do vašeho zařízení." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:849 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:850 msgid "Sharing over the net" msgstr "Sdílení po síti" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:855 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:856 msgid "" "Setup the calibre Content Server which will give you access to your calibre " "library from anywhere, on any device, over the internet" @@ -411,33 +411,33 @@ msgstr "" "Natavení calibre Obsahového Serveru, který vám umožní přistupovat k vaší " "knihovně calibre odkudkoliv, na jakémkoli zařízení, přes internet." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:862 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863 msgid "Plugins" msgstr "Moduly" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:864 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:876 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:887 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:865 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:877 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:888 msgid "Advanced" msgstr "Rozšířené" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:868 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:869 msgid "Add/remove/customize various bits of calibre functionality" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:874 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:875 msgid "Tweaks" msgstr "Vylepšení" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:880 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:881 msgid "Fine tune how calibre behaves in various contexts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:885 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886 msgid "Miscellaneous" msgstr "Různé" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:891 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:892 msgid "Miscellaneous advanced configuration" msgstr "Pokročilá konfigurace" @@ -482,7 +482,7 @@ msgstr "" "nevíte nic o vstupním dokumentu" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:59 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:436 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:444 msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "Tento profil je určen pro řadu SONY PSR. modely 500/505/600/700 atd." @@ -492,62 +492,62 @@ msgid "This profile is intended for the SONY PRS 300." msgstr "Tento profil je určen pro SONY PSR 300." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:80 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:476 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:484 msgid "This profile is intended for the SONY PRS-900." msgstr "Tento profil je určen pro SONY PSR 900." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:88 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:506 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:513 msgid "This profile is intended for the Microsoft Reader." msgstr "Tento profil je určený pro Microsoft Reader." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:99 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:517 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:524 msgid "This profile is intended for the Mobipocket books." msgstr "Tento profil je určený pro knihy Mobipocket." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:112 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:530 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:537 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "Tento profil je určený pro Hanlin V3 a jeho klony." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:124 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:542 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:549 msgid "This profile is intended for the Hanlin V5 and its clones." msgstr "Tento profil je určen pro Hanlin V5 a jeho klony." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:134 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:550 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:557 msgid "This profile is intended for the Cybook G3." msgstr "Tento profil je určený pro Cybook G3." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:147 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:563 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:570 msgid "This profile is intended for the Cybook Opus." msgstr "Tento profil je určen pro Cybook Opus." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:159 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:576 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:583 msgid "This profile is intended for the Amazon Kindle." msgstr "Tento profil je určený pro Amazon Kindle." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:171 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:617 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:631 msgid "This profile is intended for the Irex Illiad." msgstr "Tento profil je určen pro Irex Illiad." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:183 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:630 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "Tento profil je určen pro Irex Digital Reader 1000." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:196 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 msgid "This profile is intended for the IRex Digital Reader 800." msgstr "Tento profil je určený pro IRex Digital Reader 800." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:208 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 msgid "This profile is intended for the B&N Nook." msgstr "Tento profil je určen pro B&N Nook." @@ -565,28 +565,28 @@ msgstr "" "chcete vytvořit dokument určený ke čtení na počítači nebo na vetším rozpětí " "zařízení." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:273 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:276 msgid "" "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "Připraveno pro iPad a podobná zařízení s rozlišením 768x1024" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:427 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:435 msgid "Intended for generic tablet devices, does no resizing of images" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:454 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:462 msgid "This profile is intended for the Kobo Reader." msgstr "Tento profil je připraven pro Kobo Reader." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:467 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:475 msgid "This profile is intended for the SONY PRS-300." msgstr "Tento profil je určen pro SONY PSR 300." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:485 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:493 msgid "This profile is intended for the 5-inch JetBook." msgstr "Tento profil je určen pro 5\" Jetbook" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:494 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:502 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." @@ -594,11 +594,11 @@ msgstr "" "Tento profil je určený pro zařízení SONY PRS. 500/505/700 atd. pro čtení na " "šířku. Nejvíce užitečné pro čtení komiksu." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:597 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:609 msgid "This profile is intended for the Amazon Kindle DX." msgstr "Tento profil je určený pro Amazon Kindle DX." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:686 msgid "This profile is intended for the Sanda Bambook." msgstr "Tento profil je určený pro Sanda Bambook." @@ -673,7 +673,7 @@ msgstr "Deaktivovat modul podle jména" msgid "Communicate with Android phones." msgstr "Komunikace s telefony Android." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:53 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:56 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" @@ -681,7 +681,7 @@ msgstr "" "seznam adresářů oddělený čárkami k odeslání knih na zařízení. První který " "existuje pude použit." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:95 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:98 msgid "Communicate with S60 phones." msgstr "Komunikovat s telefony serie S60." @@ -1029,6 +1029,14 @@ msgstr "Nook" msgid "Communicate with the Nook eBook reader." msgstr "Komunikuje se čtečkou Nook." +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 +msgid "Nook Color" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 +msgid "Communicate with the Nook Color eBook reader." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." msgstr "Komunikuje se čtečkou Nuut2." @@ -2668,7 +2676,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1399 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 msgid "Cover" msgstr "Obálka" @@ -2708,70 +2716,70 @@ msgstr "Všechny články" msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1400 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 msgid "Title Page" msgstr "Titulní stránka" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 #: /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:199 msgid "Table of Contents" msgstr "Obsah" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 msgid "Index" msgstr "Rejstřík" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 msgid "Glossary" msgstr "Slovník pojmů" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 msgid "Acknowledgements" msgstr "Pděkování" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 msgid "Bibliography" msgstr "Bibliografie" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 msgid "Colophon" msgstr "Tiráž" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 msgid "Copyright" msgstr "Autorská práva" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 msgid "Dedication" msgstr "Věnování" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 msgid "Epigraph" msgstr "Doslov" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 msgid "Foreword" msgstr "Předmluva" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 msgid "List of Illustrations" msgstr "Seznam Ilustrací" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 msgid "List of Tables" msgstr "Seznam tabulek" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 msgid "Notes" msgstr "Poznámky" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1416 msgid "Preface" msgstr "Úvod" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1417 msgid "Main Text" msgstr "Hlavní text" @@ -3727,7 +3735,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:391 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:741 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 msgid "Not allowed" msgstr "Nedovolené" @@ -4794,11 +4802,11 @@ msgid "" "specified in the Preferences" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:70 msgid "Bulk Convert" msgstr "Hromadné Převedení" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 msgid "Options specific to the output format." msgstr "Možnosti specifické pro výstupní formát." @@ -5971,10 +5979,10 @@ msgstr "Odeslat email" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:982 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:990 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1083 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1168 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1287 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1295 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1089 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1174 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1293 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1301 msgid "No suitable formats" msgstr "Žádné vhodné formáty" @@ -5999,48 +6007,48 @@ msgstr "Poslání následujících knih selhalo:" msgid "Sent by email:" msgstr "Odesláno emailem:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1042 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1048 msgid "News:" msgstr "Zprávy:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1049 msgid "Attached is the" msgstr "Přiloženo je" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1054 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1060 msgid "Sent news to" msgstr "Odeslat zprávy do" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1084 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1169 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1288 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1090 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1175 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1294 msgid "Auto convert the following books before uploading to the device?" msgstr "" "Automaticky zkonvertovat následující knihy, než se nahrají do zařízení?" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1114 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1120 msgid "Sending catalogs to device." msgstr "Odeslat katalog do zařízení" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1201 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1207 msgid "Sending news to device." msgstr "Odesílám zprávy do zařízení" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1254 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1260 msgid "Sending books to device." msgstr "Odesílám knihy do zařízení" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1296 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1302 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:1360 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1366 msgid "No space on device" msgstr "Na zařízení není volné místo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1367 msgid "" "

Cannot upload books to device there is no more free space available " msgstr "" @@ -7336,45 +7344,45 @@ msgid "Advanced Search" msgstr "Rozšířené vyhledávání" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 -msgid "Find entries that have..." -msgstr "Najít položky, které obsahují ....." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 -msgid "&All these words:" -msgstr "Všechn&a tato slova" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 -msgid "This exact &phrase:" -msgstr "Tuto frázi" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 -msgid "&One or more of these words:" -msgstr "Kterékoliv z těchto slov" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 -msgid "But dont show entries that have..." -msgstr "Ale nezobrazovat položky, které mají...." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 -msgid "Any of these &unwanted words:" -msgstr "Některé z těchto slov:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 msgid "What kind of match to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 -msgid "Contains: the word or phrase matches anywhere in the metadata" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +msgid "Equals: the word or phrase must match the entire metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 +msgid "" +"Regular expression: the expression must match anywhere in the metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +msgid "Find entries that have..." +msgstr "Najít položky, které obsahují ....." + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +msgid "&All these words:" +msgstr "Všechn&a tato slova" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +msgid "This exact &phrase:" +msgstr "Tuto frázi" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +msgid "&One or more of these words:" +msgstr "Kterékoliv z těchto slov" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 -msgid "Equals: the word or phrase must match an entire metadata field" -msgstr "" +msgid "But dont show entries that have..." +msgstr "Ale nezobrazovat položky, které mají...." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 -msgid "" -"Regular expression: the expression must match anywhere in the metadata" -msgstr "" +msgid "Any of these &unwanted words:" +msgstr "Některé z těchto slov:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 msgid "" @@ -8171,47 +8179,47 @@ msgstr "" msgid "Double click to edit me

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:147 msgid "Hide column %s" msgstr "Skryj sloupce %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 msgid "Sort on %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 msgid "Ascending" msgstr "Vzestupně" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:156 msgid "Descending" msgstr "Sestupně" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 msgid "Change text alignment for %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:171 msgid "Center" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:190 msgid "Show column" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202 msgid "Restore default layout" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:743 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." diff --git a/src/calibre/translations/da.po b/src/calibre/translations/da.po index e6488b0664..dd93151e79 100644 --- a/src/calibre/translations/da.po +++ b/src/calibre/translations/da.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2010-11-10 14:27+0000\n" -"PO-Revision-Date: 2010-11-10 17:03+0000\n" -"Last-Translator: Glenn \n" +"POT-Creation-Date: 2010-11-12 23:11+0000\n" +"PO-Revision-Date: 2010-11-12 22:04+0000\n" +"Last-Translator: Kovid Goyal \n" "Language-Team: Danish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-11 04:41+0000\n" +"X-Launchpad-Export-Date: 2010-11-13 04:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -31,7 +31,7 @@ msgstr "Gør absolut ingenting" #: /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/sony_cache.py:643 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:650 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 @@ -74,14 +74,14 @@ msgstr "Gør absolut ingenting" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:78 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:119 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:153 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:616 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:822 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:824 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:620 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:826 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:828 #: /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:911 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:916 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:982 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:913 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:918 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:984 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:143 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:150 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:64 @@ -123,8 +123,8 @@ msgstr "Gør absolut ingenting" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:141 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:927 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:936 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1243 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1249 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1252 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 @@ -192,7 +192,7 @@ msgstr "Brugergrænseflade aktion" msgid "Preferences" msgstr "Indstillinger" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:17 +#: /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 " @@ -202,7 +202,7 @@ msgstr "" "fil. Dette udvidelsesmodul bliver kørt hver gang du tilføjer en HTML-fil til " "biblioteket." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:53 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:51 msgid "" "Character encoding for the input HTML files. Common choices include: cp1252, " "latin1, iso-8859-1 and utf-8." @@ -210,7 +210,7 @@ msgstr "" "Tegnsæt for kilde HTML-filerne. Typiske valg inkluderer: cp1252, latin1, iso-" "8859-1 og utf-8." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:60 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:58 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 " @@ -220,7 +220,7 @@ msgstr "" "pmlname_img eller billeder. Dette udvidelsesmodul kører hver gang du " "tilføjer en PML-fil til biblioteket." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:94 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:92 msgid "Extract cover from comic files" msgstr "Udtræk omslag fra tegneserie-filer" @@ -267,43 +267,43 @@ msgstr "Gemmer metadata i %s filerne" msgid "Set metadata from %s files" msgstr "Sæt metadata fra %s filer" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:711 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:712 msgid "Look and Feel" msgstr "Fremtoning" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:713 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:725 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:736 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:747 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:714 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:726 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:737 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:748 msgid "Interface" msgstr "Brugergrænseflade" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:717 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:718 msgid "Adjust the look and feel of the calibre interface to suit your tastes" msgstr "Tilpas calibres grænseflades fremtoning til din smag" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:723 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:724 msgid "Behavior" msgstr "Opførsel" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:729 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:730 msgid "Change the way calibre behaves" msgstr "Ændr måden calibre opfører sig på" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:734 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:208 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:209 msgid "Add your own columns" msgstr "Tilføj dine egne søjler" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:740 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:741 msgid "Add/remove your own columns to the calibre book list" msgstr "Tilføj/fjern dine egne søjler til calibre boglisten" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:745 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746 msgid "Customize the toolbar" msgstr "Tilpas værktøjslinjen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:751 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:752 msgid "" "Customize the toolbars and context menus, changing which actions are " "available in each" @@ -311,56 +311,56 @@ msgstr "" "Tilpas værktøjslinjen og kontekstmenuen, ændre hvilke aktioner som er " "tilgængelige i hver" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:757 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:758 msgid "Input Options" msgstr "Input tilvalg" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:759 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:770 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:781 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:760 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:771 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:782 msgid "Conversion" msgstr "Konvertering" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:763 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:764 msgid "Set conversion options specific to each input format" msgstr "Vælg konverteringsvalgmuligheder specifikke for hvert input-format" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:768 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769 msgid "Common Options" msgstr "Fælles tilvalg" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:774 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:775 msgid "Set conversion options common to all formats" msgstr "Vælg konverteringsvalgmuligheder fælles for alle formater" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:779 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780 msgid "Output Options" msgstr "Output valgmuligheder" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:785 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:786 msgid "Set conversion options specific to each output format" msgstr "Vælg konverteringsvalgmuligheder specifikke for hvert output-format" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:790 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791 msgid "Adding books" msgstr "Tilføjer boger" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:792 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:804 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:816 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:828 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:793 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:805 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:817 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:829 msgid "Import/Export" msgstr "Import/eksport" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:796 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:797 msgid "Control how calibre reads metadata from files when adding books" msgstr "Styre hvordan calibre læser metadata fra filer, når bøger tilføjes" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:802 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:803 msgid "Saving books to disk" msgstr "Gemmer bøger til disk" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:808 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:809 msgid "" "Control how calibre exports files from its database to disk when using Save " "to disk" @@ -368,32 +368,32 @@ msgstr "" "Styre hvordan calibre eksporterer filer fra dens database til disk, når gem-" "til-disk anvendes" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:814 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:815 msgid "Sending books to devices" msgstr "Sender bøger til enheder" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:820 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:821 msgid "Control how calibre transfers files to your ebook reader" msgstr "Styre hvordan calibre overfører filer til din e-bogslæser" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:826 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:827 msgid "Metadata plugboards" msgstr "Metadata plugboards" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:832 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:833 msgid "Change metadata fields before saving/sending" msgstr "Ændre metadata felter før gem/send" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:837 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838 msgid "Sharing books by email" msgstr "Deler bøger via email" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:839 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:851 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:840 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:852 msgid "Sharing" msgstr "Deler" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:843 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:844 msgid "" "Setup sharing of books via email. Can be used for automatic sending of " "downloaded news to your devices" @@ -401,11 +401,11 @@ msgstr "" "Opsætning som deler bøger via email. Kan anvendes til automatisk sending af " "downloadede nyheder til dine enheder" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:849 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:850 msgid "Sharing over the net" msgstr "Deler over internettet" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:855 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:856 msgid "" "Setup the calibre Content Server which will give you access to your calibre " "library from anywhere, on any device, over the internet" @@ -413,33 +413,33 @@ msgstr "" "Opsætning af calibre indholdsserveren, hvilket vil give dig adgang til dit " "calibre-bibliotek fra overalt, på enhver enhed, over internettet" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:862 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863 msgid "Plugins" msgstr "Udvidelsesmoduler" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:864 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:876 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:887 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:865 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:877 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:888 msgid "Advanced" msgstr "Avanceret" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:868 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:869 msgid "Add/remove/customize various bits of calibre functionality" msgstr "Tilføj/fjern/tilpas forskellige dele af calibres funktionalitet" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:874 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:875 msgid "Tweaks" msgstr "Tweaks" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:880 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:881 msgid "Fine tune how calibre behaves in various contexts" msgstr "Finjustér hvordan calibre opfører sig i forskellige sammenhænge" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:885 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886 msgid "Miscellaneous" msgstr "Diverse" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:891 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:892 msgid "Miscellaneous advanced configuration" msgstr "Diverse avanceret opsætning" @@ -484,7 +484,7 @@ msgstr "" "du intet aner om kildedokumentet." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:59 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:436 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:444 msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "" @@ -496,62 +496,62 @@ msgid "This profile is intended for the SONY PRS 300." msgstr "Denne profil er forbeholdt SONY's PRS-300." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:80 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:476 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:484 msgid "This profile is intended for the SONY PRS-900." msgstr "Denne profil er forbeholdt SONY's PRS-900." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:88 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:506 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:513 msgid "This profile is intended for the Microsoft Reader." msgstr "Denne profil er beregnet for Microsoft Reader" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:99 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:517 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:524 msgid "This profile is intended for the Mobipocket books." msgstr "Denne profil er beregnet til Mobipocket-bøgerne" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:112 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:530 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:537 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "Denne profil er beregnet til Hanlin V3 og kloner." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:124 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:542 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:549 msgid "This profile is intended for the Hanlin V5 and its clones." msgstr "Denne profil er forbeholdt Harlin V5 og kloner." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:134 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:550 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:557 msgid "This profile is intended for the Cybook G3." msgstr "Denne profil er beregnet til Cybook G3." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:147 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:563 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:570 msgid "This profile is intended for the Cybook Opus." msgstr "Denne profil er beregnet til Cybook Opus." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:159 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:576 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:583 msgid "This profile is intended for the Amazon Kindle." msgstr "Denne profil er beregnet til Amazon Kindle." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:171 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:617 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:631 msgid "This profile is intended for the Irex Illiad." msgstr "Denne profil er beregnet til Irex Illiad." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:183 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:630 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "Denne profil er beregnet til IRex Digital Reader 1000." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:196 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 msgid "This profile is intended for the IRex Digital Reader 800." msgstr "Denne profil er beregnet til IRex Digital Reader 800" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:208 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 msgid "This profile is intended for the B&N Nook." msgstr "Denne profil er forbeholdt B&N's Nook." @@ -569,29 +569,29 @@ msgstr "" "hvis du vil generere et dokument beregnet til at blive læst på computere " "eller flere enhedstyper." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:273 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:276 msgid "" "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "Beregnet til iPad og lignende enheder med en opløsning på 768x1024" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:427 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:435 msgid "Intended for generic tablet devices, does no resizing of images" msgstr "" "Forbeholdt til generiske tavle-pc enheder, ændrer ikke billedstørrelser" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:454 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:462 msgid "This profile is intended for the Kobo Reader." msgstr "Denne profil er beregnet til Kobo Reader." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:467 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:475 msgid "This profile is intended for the SONY PRS-300." msgstr "Denne profil er beregnet til SONY's PRS-300." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:485 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:493 msgid "This profile is intended for the 5-inch JetBook." msgstr "Denne profil er beregnet til 5\" JetBook." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:494 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:502 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." @@ -599,11 +599,11 @@ msgstr "" "Denne profil er beregnet til SONYs PRS serie. PRS 500/505/700 etc. i " "liggende tilstand. Hovedsageligt egnet til tegneserier." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:597 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:609 msgid "This profile is intended for the Amazon Kindle DX." msgstr "Denne profil er beregnet til Amazon Kindle DX." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:686 msgid "This profile is intended for the Sanda Bambook." msgstr "Denne profil er beregnet til Sanda Bambook." @@ -684,7 +684,7 @@ msgstr "Deaktivér det angivne udvidelsesmodul" msgid "Communicate with Android phones." msgstr "Kommunikér med Android telefoner" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:53 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:56 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" @@ -692,7 +692,7 @@ msgstr "" "Komma separeret liste af mapper til at sende e-bøger til, på enheden. Den " "første som findes, vil blive brugt." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:95 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:98 msgid "Communicate with S60 phones." msgstr "Kommunikér med S60 telefoner." @@ -1048,6 +1048,14 @@ msgstr "Nook e-bogen" msgid "Communicate with the Nook eBook reader." msgstr "Kommunikér med Nook e-bogslæser." +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 +msgid "Nook Color" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 +msgid "Communicate with the Nook Color eBook reader." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." msgstr "Kommunikér med Nuut2 e-bogslæser." @@ -2790,7 +2798,7 @@ msgstr "" "fra LibraryThing.com\n" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1399 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 msgid "Cover" msgstr "Omslag" @@ -2835,70 +2843,70 @@ msgstr "" "E-bogen er i det proprietære Amazon Topaz format. Den kan derfor ikke " "behandles." -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1400 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 msgid "Title Page" msgstr "Titelside" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 #: /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:199 msgid "Table of Contents" msgstr "Indholdsfortegnelse" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 msgid "Index" msgstr "Indeks" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 msgid "Glossary" msgstr "Ordliste" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 msgid "Acknowledgements" msgstr "Anerkendelser" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 msgid "Bibliography" msgstr "Litteraturliste" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 msgid "Colophon" msgstr "Kolofon" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 msgid "Copyright" msgstr "Ophavsret" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 msgid "Dedication" msgstr "Dedikation" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 msgid "Epigraph" msgstr "Epigraf" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 msgid "Foreword" msgstr "Forord" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 msgid "List of Illustrations" msgstr "Illustrationsliste" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 msgid "List of Tables" msgstr "Tabelliste" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 msgid "Notes" msgstr "Bemærkninger" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1416 msgid "Preface" msgstr "Forord" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1417 msgid "Main Text" msgstr "Hovedtekst" @@ -3951,7 +3959,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:391 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:741 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 msgid "Not allowed" msgstr "Ikke tilladt" @@ -5063,11 +5071,11 @@ msgstr "" "tidligere konverteringer (hvis de eksisterer) istedet for at anvende de " "standard givne indstillinger" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:70 msgid "Bulk Convert" msgstr "Klynge konvertering" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 msgid "Options specific to the output format." msgstr "Muligheder specifikt for output-formatet." @@ -6277,10 +6285,10 @@ msgstr "Sender e-mail til" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:982 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:990 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1083 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1168 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1287 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1295 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1089 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1174 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1293 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1301 msgid "No suitable formats" msgstr "Ingen egnede formater" @@ -6306,37 +6314,37 @@ msgstr "Fejlede med at e-maile følgende bøger:" msgid "Sent by email:" msgstr "Sendt via e-mail:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1042 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1048 msgid "News:" msgstr "Nyheder:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1049 msgid "Attached is the" msgstr "Forbundet er" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1054 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1060 msgid "Sent news to" msgstr "Send nyheder til" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1084 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1169 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1288 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1090 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1175 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1294 msgid "Auto convert the following books before uploading to the device?" msgstr "Auto konvertér følgende bøger før upload til enheden?" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1114 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1120 msgid "Sending catalogs to device." msgstr "Sender kataloger til enheden." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1201 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1207 msgid "Sending news to device." msgstr "Sender nyheder til enheden." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1254 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1260 msgid "Sending books to device." msgstr "Sender bøger til enheden." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1296 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1302 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." @@ -6344,11 +6352,11 @@ msgstr "" "Kunne ikke uploade følgende bøger til enheden, da ingen egnede formater blev " "fundet. Konvertér bog/bøgerne til et format understøttet af din enhed først." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1360 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1366 msgid "No space on device" msgstr "Ingen plads på enheden" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1367 msgid "" "

Cannot upload books to device there is no more free space available " msgstr "" @@ -7739,46 +7747,45 @@ msgid "Advanced Search" msgstr "Avanceret søgning" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 -msgid "Find entries that have..." -msgstr "Find indgange der har..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 -msgid "&All these words:" -msgstr "&alle disse ord:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 -msgid "This exact &phrase:" -msgstr "Den eksakte &frase:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 -msgid "&One or more of these words:" -msgstr "&En eller flere af disse ord:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 -msgid "But dont show entries that have..." -msgstr "men vis ikke indgange der har..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 -msgid "Any of these &unwanted words:" -msgstr "nogen af disse &uønskede ord:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 msgid "What kind of match to use:" msgstr "Hvilken slags match skal anvendes:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 -msgid "Contains: the word or phrase matches anywhere in the metadata" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "" -"Indeholder: Ordet eller frasen vil forsøges matchet overalt i metadataene" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +msgid "Equals: the word or phrase must match the entire metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 +msgid "" +"Regular expression: the expression must match anywhere in the metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +msgid "Find entries that have..." +msgstr "Find indgange der har..." + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +msgid "&All these words:" +msgstr "&alle disse ord:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +msgid "This exact &phrase:" +msgstr "Den eksakte &frase:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +msgid "&One or more of these words:" +msgstr "&En eller flere af disse ord:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 -msgid "Equals: the word or phrase must match an entire metadata field" -msgstr "Lig: Ordet eller frasen skal matche et helt metadata felt" +msgid "But dont show entries that have..." +msgstr "men vis ikke indgange der har..." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 -msgid "" -"Regular expression: the expression must match anywhere in the metadata" -msgstr "Regulært udtryk: Udtrykket forsøges matchet overalt i metadataene" +msgid "Any of these &unwanted words:" +msgstr "nogen af disse &uønskede ord:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 msgid "" @@ -8618,47 +8625,47 @@ msgstr "Markeret til sletning" msgid "Double click to edit me

" msgstr "Dobbeltklik for at redigere mig

" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:147 msgid "Hide column %s" msgstr "Gem kolonne %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 msgid "Sort on %s" msgstr "Sortér efter %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 msgid "Ascending" msgstr "Stigende" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:156 msgid "Descending" msgstr "Faldende" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 msgid "Change text alignment for %s" msgstr "Ændre tekstjustering for %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Left" msgstr "Venstre" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Right" msgstr "Højre" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:171 msgid "Center" msgstr "Centrér" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:190 msgid "Show column" msgstr "Vis kolonne" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202 msgid "Restore default layout" msgstr "Gendan standard layout" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:743 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -14673,6 +14680,17 @@ msgstr "Download ikke CSS-stilark" #~ "Automatisk opret forfattersorteringsindgang baseret på den aktuelle " #~ "forfatterindgang" +#~ msgid "Equals: the word or phrase must match an entire metadata field" +#~ msgstr "Lig: Ordet eller frasen skal matche et helt metadata felt" + +#~ msgid "" +#~ "Regular expression: the expression must match anywhere in the metadata" +#~ msgstr "Regulært udtryk: Udtrykket forsøges matchet overalt i metadataene" + +#~ msgid "Contains: the word or phrase matches anywhere in the metadata" +#~ msgstr "" +#~ "Indeholder: Ordet eller frasen vil forsøges matchet overalt i metadataene" + #~ msgid "" #~ "For help with writing advanced news recipes, please visit User Recipes" diff --git a/src/calibre/translations/de.po b/src/calibre/translations/de.po index 64f0940be3..4d16a386fa 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-11-10 14:27+0000\n" -"PO-Revision-Date: 2010-11-10 15:34+0000\n" -"Last-Translator: Manichean \n" +"POT-Creation-Date: 2010-11-12 23:11+0000\n" +"PO-Revision-Date: 2010-11-12 22:46+0000\n" +"Last-Translator: Kovid Goyal \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-11-11 04:41+0000\n" +"X-Launchpad-Export-Date: 2010-11-13 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" "Generated-By: pygettext.py 1.5\n" @@ -32,7 +32,7 @@ msgstr "Macht absolut gar nichts" #: /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/sony_cache.py:643 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:650 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 @@ -75,14 +75,14 @@ msgstr "Macht absolut gar nichts" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:78 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:119 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:153 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:616 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:822 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:824 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:620 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:826 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:828 #: /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:911 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:916 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:982 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:913 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:918 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:984 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:143 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:150 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:64 @@ -124,8 +124,8 @@ msgstr "Macht absolut gar nichts" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:141 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:927 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:936 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1243 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1249 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1252 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 @@ -193,7 +193,7 @@ msgstr "Benutzeroberflächenaktion" msgid "Preferences" msgstr "Einstellungen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:17 +#: /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 " @@ -203,7 +203,7 @@ msgstr "" "allen verlinkten Dateien erstellen. Dieses Plugin läuft immer, wenn sie eine " "HTML-Datei zur Bibliothek hinzufügen." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:53 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:51 msgid "" "Character encoding for the input HTML files. Common choices include: cp1252, " "latin1, iso-8859-1 and utf-8." @@ -211,7 +211,7 @@ msgstr "" "Zeichenkodierung der Eingabe-HTML-Dateien. Üblicherweise ist das: cp1252, " "latin1, iso-8859-1 und utf-8." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:60 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:58 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 " @@ -221,7 +221,7 @@ msgstr "" "pmlname_img oder images. Dieses Plugin wird immer dann ausgeführt, wenn Sie " "eine PML-Datei zur Bibliothek hinzufügen." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:94 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:92 msgid "Extract cover from comic files" msgstr "Umschlagbild aus Comic-Dateien extrahieren" @@ -268,101 +268,101 @@ msgstr "Geben Sie die Metadaten in %s-Dateien an" msgid "Set metadata from %s files" msgstr "Geben Sie die Metadaten von %s-Dateien an" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:711 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:712 msgid "Look and Feel" msgstr "Erscheinungsbild" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:713 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:725 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:736 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:747 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:714 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:726 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:737 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:748 msgid "Interface" msgstr "Bedienungsoberfläche" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:717 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:718 msgid "Adjust the look and feel of the calibre interface to suit your tastes" msgstr "Passen Sie das Erscheinungsbild von Calibre ihren Bedürfnissen an." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:723 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:724 msgid "Behavior" msgstr "Verhalten" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:729 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:730 msgid "Change the way calibre behaves" msgstr "Ändern Sie das Verhalten von Calibre." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:734 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:208 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:209 msgid "Add your own columns" msgstr "Eigene Spalten hinzufügen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:740 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:741 msgid "Add/remove your own columns to the calibre book list" msgstr "Hinzufügen/Entfernen eigener Spalten in der Calibre Buchliste" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:745 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746 msgid "Customize the toolbar" msgstr "Werkzeugleiste anpassen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:751 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:752 msgid "" "Customize the toolbars and context menus, changing which actions are " "available in each" msgstr "Passt individuell Werkzeugleiste und Kontextmenus an." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:757 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:758 msgid "Input Options" msgstr "Eingabeoptionen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:759 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:770 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:781 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:760 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:771 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:782 msgid "Conversion" msgstr "Konvertierung" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:763 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:764 msgid "Set conversion options specific to each input format" msgstr "Stellt Eingabeoptionen für jedes einzelne Eingabeformat ein." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:768 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769 msgid "Common Options" msgstr "Allgemeine Einstellungen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:774 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:775 msgid "Set conversion options common to all formats" msgstr "Gemeinsame Konvertierungsoptionen für alle Formate einstellen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:779 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780 msgid "Output Options" msgstr "Ausgabeoptionen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:785 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:786 msgid "Set conversion options specific to each output format" msgstr "" "Konvertierungsoptionen für jedes Ausgabeformat individuell einstellen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:790 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791 msgid "Adding books" msgstr "Bücher hinzufügen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:792 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:804 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:816 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:828 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:793 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:805 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:817 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:829 msgid "Import/Export" msgstr "Import/Export" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:796 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:797 msgid "Control how calibre reads metadata from files when adding books" msgstr "" "Stellt ein, wie Calibre mit den Metadaten aus den Dateien beim Einlesen von " "Büchern verfährt." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:802 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:803 msgid "Saving books to disk" msgstr "Bücher auf Datenträger speichern" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:808 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:809 msgid "" "Control how calibre exports files from its database to disk when using Save " "to disk" @@ -370,32 +370,32 @@ msgstr "" "Stellt ein, wie Calibre Dateien aus der Datenbank exportiert, wenn \"Bücher " "auf Datenträger speichern\" gewählt wird." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:814 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:815 msgid "Sending books to devices" msgstr "Übertragen der Bücher an Geräte" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:820 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:821 msgid "Control how calibre transfers files to your ebook reader" msgstr "Stellt ein, wie Calibre die Dateien an den eBook-Reader sendet." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:826 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:827 msgid "Metadata plugboards" msgstr "Metadaten- Schalttafel" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:832 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:833 msgid "Change metadata fields before saving/sending" msgstr "Ändere Metadaten-Felder vor dem Speichern/Senden" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:837 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838 msgid "Sharing books by email" msgstr "Bücherversand per Email" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:839 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:851 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:840 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:852 msgid "Sharing" msgstr "Versand" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:843 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:844 msgid "" "Setup sharing of books via email. Can be used for automatic sending of " "downloaded news to your devices" @@ -403,11 +403,11 @@ msgstr "" "Setup für Bücherversand per Email. Kann für den automatischen Versand von " "heruntergeladenen Nachrichten an Ihr Gerät genutzt werden." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:849 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:850 msgid "Sharing over the net" msgstr "Versand über Netzwerk" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:855 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:856 msgid "" "Setup the calibre Content Server which will give you access to your calibre " "library from anywhere, on any device, over the internet" @@ -415,34 +415,34 @@ msgstr "" "Einrichten des Calibre Servers, der Zugriff auf die Bibliothek von überall, " "mit jedem Gerät, via Internet ermöglicht." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:862 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863 msgid "Plugins" msgstr "Plugins" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:864 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:876 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:887 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:865 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:877 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:888 msgid "Advanced" msgstr "Erweitert" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:868 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:869 msgid "Add/remove/customize various bits of calibre functionality" msgstr "Hinzufügen/Entfernen/Einstellen von verschiedenen Calibre-Funktionen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:874 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:875 msgid "Tweaks" msgstr "Kniffe" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:880 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:881 msgid "Fine tune how calibre behaves in various contexts" msgstr "" "Feineinstellungen für das Verhalten von Calibre in verschiedenen Situationen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:885 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886 msgid "Miscellaneous" msgstr "Verschiedenes" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:891 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:892 msgid "Miscellaneous advanced configuration" msgstr "Konfiguration verschiedener fortgeschrittener Parameter" @@ -487,7 +487,7 @@ msgstr "" "hilfreich, wenn Sie nichts über das Eingabe-Dokument wissen." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:59 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:436 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:444 msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "" @@ -499,62 +499,62 @@ msgid "This profile is intended for the SONY PRS 300." msgstr "Dieses Profil ist geeignet für das SONY PRS 300." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:80 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:476 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:484 msgid "This profile is intended for the SONY PRS-900." msgstr "Dieses Profil ist geeignet für das SONY PRS-900." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:88 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:506 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:513 msgid "This profile is intended for the Microsoft Reader." msgstr "Dieses Profil ist geeignet für den Microsoft Reader." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:99 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:517 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:524 msgid "This profile is intended for the Mobipocket books." msgstr "Dieses Profil ist geeignet für Mobipocket-Bücher." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:112 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:530 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:537 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "Dieses Profil ist geeignet für den Hanlin V3 und dessen Klone." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:124 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:542 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:549 msgid "This profile is intended for the Hanlin V5 and its clones." msgstr "Dieses Profil ist geeignet für den Hanlin V5 und dessen Klone." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:134 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:550 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:557 msgid "This profile is intended for the Cybook G3." msgstr "Dieses Profil ist geeignet für das Cybook G3." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:147 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:563 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:570 msgid "This profile is intended for the Cybook Opus." msgstr "Dieses Profil ist geeignet für den Cybook Opus." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:159 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:576 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:583 msgid "This profile is intended for the Amazon Kindle." msgstr "Dieses Profil ist geeignet für den Amazon Kindle." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:171 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:617 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:631 msgid "This profile is intended for the Irex Illiad." msgstr "Dieses Profil ist geeignet für den Irex Illiad." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:183 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:630 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "Dieses Profil ist geeignet für den IRex Digital Reader 1000." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:196 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 msgid "This profile is intended for the IRex Digital Reader 800." msgstr "Dieses Profil ist geeignet für den IRex Digital Reader 800." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:208 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 msgid "This profile is intended for the B&N Nook." msgstr "Dieses Profil ist geeignet für den B&N Nook." @@ -572,31 +572,31 @@ msgstr "" "hilfreich, wenn Sie ein Dokument zum Lesen an einem Computer oder auf einer " "Reihe von verschiedenen Geräten erstellen wollen." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:273 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:276 msgid "" "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "" "Geeignet für das iPad und ähnliche Geräte mit einer Auflösung von 768 x1024" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:427 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:435 msgid "Intended for generic tablet devices, does no resizing of images" msgstr "" "Gedacht für allgemeine Tablet- PCs, führt keine Größenänderung bei Bildern " "durch" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:454 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:462 msgid "This profile is intended for the Kobo Reader." msgstr "Dieses Profil ist geeignet für den Kobo Reader." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:467 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:475 msgid "This profile is intended for the SONY PRS-300." msgstr "Dieses Profil ist geeignet für das SONY PRS-300." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:485 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:493 msgid "This profile is intended for the 5-inch JetBook." msgstr "Dieses Profil ist geeignet für das 5-Zoll JetBook." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:494 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:502 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." @@ -604,11 +604,11 @@ msgstr "" "Dieses Profil ist geeignet für die SONY PRS-Reihe. PRS 500/505/700 etc. in " "horizontaler Darstellung. Vor allem für Comics hilfreich." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:597 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:609 msgid "This profile is intended for the Amazon Kindle DX." msgstr "Dieses Profil ist geeignet für den Amazon Kindle DX." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:686 msgid "This profile is intended for the Sanda Bambook." msgstr "Dieses Profil ist geeignet für den Sanda Bambook" @@ -688,7 +688,7 @@ msgstr "Gewähltes Plugin ausschalten" msgid "Communicate with Android phones." msgstr "Kommunikation mit Android-Telefonen." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:53 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:56 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" @@ -696,7 +696,7 @@ msgstr "" "Durch Kommata getrennte Liste von Verzeichnissen an die eBooks auf das Gerät " "gesendet werden. Das erste vorhandene wird benutzt" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:95 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:98 msgid "Communicate with S60 phones." msgstr "Kommunikation mit S60-Telefonen." @@ -1053,6 +1053,14 @@ msgstr "Der Nook" msgid "Communicate with the Nook eBook reader." msgstr "Kommunikation mit dem Nook eBook Reader." +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 +msgid "Nook Color" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 +msgid "Communicate with the Nook Color eBook reader." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." msgstr "Kommunikation mit dem Nuut2 eBook Reader." @@ -2853,7 +2861,7 @@ msgstr "" "LibraryThing.com laden.\n" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1399 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 msgid "Cover" msgstr "Umschlagbild" @@ -2894,70 +2902,70 @@ msgstr "Alle Artikel" msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "Dies ist ein Amazon Topaz-Buch. Es kann nicht verarbeitet werden." -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1400 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 msgid "Title Page" msgstr "Titelseite" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 #: /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:199 msgid "Table of Contents" msgstr "Inhaltsverzeichnis" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 msgid "Index" msgstr "Index" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 msgid "Glossary" msgstr "Glossar" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 msgid "Acknowledgements" msgstr "Danksagung" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 msgid "Bibliography" msgstr "Literaturverzeichnis" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 msgid "Colophon" msgstr "Schlussschrift" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 msgid "Copyright" msgstr "Copyright" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 msgid "Dedication" msgstr "Widmung" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 msgid "Epigraph" msgstr "Epigraph" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 msgid "Foreword" msgstr "Vorwort" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 msgid "List of Illustrations" msgstr "Abbildungsverzeichnis" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 msgid "List of Tables" msgstr "Tabellenverzeichnis" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 msgid "Notes" msgstr "Anmerkungen" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1416 msgid "Preface" msgstr "Vorwort" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1417 msgid "Main Text" msgstr "Haupttext" @@ -4043,7 +4051,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:391 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:741 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 msgid "Not allowed" msgstr "Das ist nicht gestattet" @@ -5166,11 +5174,11 @@ msgstr "" "verwenden, anstelle der in den Einstellungen angegebenen voreingestellten " "Werte" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:70 msgid "Bulk Convert" msgstr "Auf einmal konvertieren" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 msgid "Options specific to the output format." msgstr "Einstellungen für das Ausgabe-Format." @@ -6393,10 +6401,10 @@ msgstr "Sende eMail an" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:982 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:990 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1083 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1168 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1287 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1295 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1089 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1174 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1293 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1301 msgid "No suitable formats" msgstr "Keine geeigneten Formate" @@ -6423,38 +6431,38 @@ msgstr "Senden der folgenden Bücher schlug fehl:" msgid "Sent by email:" msgstr "Per eMail versendet:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1042 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1048 msgid "News:" msgstr "Nachrichten:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1049 msgid "Attached is the" msgstr "Im Anhang ist" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1054 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1060 msgid "Sent news to" msgstr "Nachrichten senden an" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1084 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1169 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1288 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1090 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1175 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1294 msgid "Auto convert the following books before uploading to the device?" msgstr "" "Die folgenden Bücher vor dem Laden auf das Gerät automatisch konvertieren?" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1114 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1120 msgid "Sending catalogs to device." msgstr "Sende Kataloge ans Gerät." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1201 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1207 msgid "Sending news to device." msgstr "Sende Nachrichten an das Gerät." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1254 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1260 msgid "Sending books to device." msgstr "Sende Bücher an das Gerät." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1296 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1302 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." @@ -6463,11 +6471,11 @@ msgstr "" "fehlen. Konvertieren Sie die Bücher zuerst in ein von Ihrem Gerät " "unterstütztes Format." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1360 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1366 msgid "No space on device" msgstr "Gerätespeicher voll" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1367 msgid "" "

Cannot upload books to device there is no more free space available " msgstr "" @@ -7883,50 +7891,45 @@ msgid "Advanced Search" msgstr "Erweiterte Suche" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 -msgid "Find entries that have..." -msgstr "Finde Einträge, die das Folgende enthalten..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 -msgid "&All these words:" -msgstr "&Alle diese Worte:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 -msgid "This exact &phrase:" -msgstr "&Exakt diesen Ausdruck:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 -msgid "&One or more of these words:" -msgstr "Ein &oder mehrere dieser Worte:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 -msgid "But dont show entries that have..." -msgstr "Aber zeige nicht Einträge, die das Folgende enthalten..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 -msgid "Any of these &unwanted words:" -msgstr "Alle diese &unerwünschten Worte:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 msgid "What kind of match to use:" msgstr "Folgende Übereinstimmung verwenden:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 -msgid "Contains: the word or phrase matches anywhere in the metadata" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "" -"Enthalten: Word oder Ausdruck stimmt irgendwo in den Metadaten überein" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +msgid "Equals: the word or phrase must match the entire metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 +msgid "" +"Regular expression: the expression must match anywhere in the metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +msgid "Find entries that have..." +msgstr "Finde Einträge, die das Folgende enthalten..." + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +msgid "&All these words:" +msgstr "&Alle diese Worte:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +msgid "This exact &phrase:" +msgstr "&Exakt diesen Ausdruck:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +msgid "&One or more of these words:" +msgstr "Ein &oder mehrere dieser Worte:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 -msgid "Equals: the word or phrase must match an entire metadata field" -msgstr "" -"Übereinstimmend: Word oder Ausdruck muss mit einem ganzen Metadatenfeld " -"übereinstimmen" +msgid "But dont show entries that have..." +msgstr "Aber zeige nicht Einträge, die das Folgende enthalten..." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 -msgid "" -"Regular expression: the expression must match anywhere in the metadata" -msgstr "" -"Regulärer Ausdruck: der Reguläre Ausdruck muss irgendwo in den Metadaten " -"übereinstimmen" +msgid "Any of these &unwanted words:" +msgstr "Alle diese &unerwünschten Worte:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 msgid "" @@ -8778,47 +8781,47 @@ msgstr "Zum Löschen ausgewählt" msgid "Double click to edit me

" msgstr "Doppelklick ermöglicht Bearbeitung

" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:147 msgid "Hide column %s" msgstr "Spalte %s ausblenden" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 msgid "Sort on %s" msgstr "Sortieren nach %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 msgid "Ascending" msgstr "aufsteigend" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:156 msgid "Descending" msgstr "absteigend" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 msgid "Change text alignment for %s" msgstr "Textausrichtung ändern für %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Left" msgstr "Links" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Right" msgstr "Rechts" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:171 msgid "Center" msgstr "Zentriert" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:190 msgid "Show column" msgstr "Spalte anzeigen" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202 msgid "Restore default layout" msgstr "Voreingestelltes Layout wiederherstellen" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:743 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -16139,6 +16142,21 @@ msgstr "CSS-Stylesheets nicht herunterladen." #~ msgid " " #~ msgstr " " +#~ msgid "" +#~ "Regular expression: the expression must match anywhere in the metadata" +#~ msgstr "" +#~ "Regulärer Ausdruck: der Reguläre Ausdruck muss irgendwo in den Metadaten " +#~ "übereinstimmen" + +#~ msgid "Contains: the word or phrase matches anywhere in the metadata" +#~ msgstr "" +#~ "Enthalten: Word oder Ausdruck stimmt irgendwo in den Metadaten überein" + +#~ msgid "Equals: the word or phrase must match an entire metadata field" +#~ msgstr "" +#~ "Übereinstimmend: Word oder Ausdruck muss mit einem ganzen Metadatenfeld " +#~ "übereinstimmen" + #~ msgid "Masthead font:" #~ msgstr "Impressumsschrift:" diff --git a/src/calibre/translations/en_GB.po b/src/calibre/translations/en_GB.po index cdef318587..de8c211c01 100644 --- a/src/calibre/translations/en_GB.po +++ b/src/calibre/translations/en_GB.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2010-11-10 14:27+0000\n" -"PO-Revision-Date: 2010-11-10 20:32+0000\n" -"Last-Translator: Vladimir Oka \n" +"POT-Creation-Date: 2010-11-12 23:11+0000\n" +"PO-Revision-Date: 2010-11-12 22:58+0000\n" +"Last-Translator: Kovid Goyal \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: 2010-11-11 04:42+0000\n" +"X-Launchpad-Export-Date: 2010-11-13 04:55+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -31,7 +31,7 @@ msgstr "Does absolutely nothing" #: /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/sony_cache.py:643 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:650 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 @@ -74,14 +74,14 @@ msgstr "Does absolutely nothing" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:78 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:119 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:153 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:616 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:822 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:824 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:620 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:826 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:828 #: /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:911 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:916 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:982 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:913 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:918 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:984 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:143 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:150 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:64 @@ -123,8 +123,8 @@ msgstr "Does absolutely nothing" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:141 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:927 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:936 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1243 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1249 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1252 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 @@ -192,7 +192,7 @@ msgstr "User Interface Action" msgid "Preferences" msgstr "Preferences" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:17 +#: /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 " @@ -202,7 +202,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:53 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:51 msgid "" "Character encoding for the input HTML files. Common choices include: cp1252, " "latin1, iso-8859-1 and utf-8." @@ -210,7 +210,7 @@ msgstr "" "Character encoding for the input HTML files. Common choices include: cp1252, " "latin1, iso-8859-1 and utf-8." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:60 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:58 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 " @@ -220,7 +220,7 @@ msgstr "" "directory pmlname_img or images. This plugin is run every time you add a PML " "file to the library." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:94 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:92 msgid "Extract cover from comic files" msgstr "Extract cover from comic files" @@ -267,44 +267,44 @@ msgstr "Set metadata in %s files" msgid "Set metadata from %s files" msgstr "Set metadata from %s files" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:711 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:712 msgid "Look and Feel" msgstr "Look and Feel" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:713 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:725 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:736 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:747 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:714 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:726 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:737 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:748 msgid "Interface" msgstr "Interface" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:717 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:718 msgid "Adjust the look and feel of the calibre interface to suit your tastes" msgstr "" "Adjust the look and feel of the calibre interface to suit your tastes" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:723 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:724 msgid "Behavior" msgstr "Behaviour" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:729 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:730 msgid "Change the way calibre behaves" msgstr "Change the way calibre behaves" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:734 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:208 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:209 msgid "Add your own columns" msgstr "Add your own columns" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:740 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:741 msgid "Add/remove your own columns to the calibre book list" msgstr "Add/remove your own columns to the calibre book list" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:745 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746 msgid "Customize the toolbar" msgstr "Customise the toolbar" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:751 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:752 msgid "" "Customize the toolbars and context menus, changing which actions are " "available in each" @@ -312,56 +312,56 @@ msgstr "" "Customise the toolbars and context menus, changing which actions are " "available in each" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:757 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:758 msgid "Input Options" msgstr "Input Options" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:759 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:770 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:781 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:760 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:771 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:782 msgid "Conversion" msgstr "Conversion" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:763 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:764 msgid "Set conversion options specific to each input format" msgstr "Set conversion options specific to each input format" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:768 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769 msgid "Common Options" msgstr "Common Options" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:774 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:775 msgid "Set conversion options common to all formats" msgstr "Set conversion options common to all formats" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:779 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780 msgid "Output Options" msgstr "Output Options" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:785 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:786 msgid "Set conversion options specific to each output format" msgstr "Set conversion options specific to each output format" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:790 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791 msgid "Adding books" msgstr "Adding books" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:792 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:804 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:816 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:828 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:793 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:805 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:817 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:829 msgid "Import/Export" msgstr "Import/Export" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:796 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:797 msgid "Control how calibre reads metadata from files when adding books" msgstr "Control how calibre reads metadata from files when adding books" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:802 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:803 msgid "Saving books to disk" msgstr "Saving books to disc" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:808 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:809 msgid "" "Control how calibre exports files from its database to disk when using Save " "to disk" @@ -369,32 +369,32 @@ msgstr "" "Control how calibre exports files from its database to disc when using Save " "to disc" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:814 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:815 msgid "Sending books to devices" msgstr "Sending books to devices" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:820 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:821 msgid "Control how calibre transfers files to your ebook reader" msgstr "Control how calibre transfers files to your ebook reader" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:826 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:827 msgid "Metadata plugboards" msgstr "Metadata plugboards" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:832 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:833 msgid "Change metadata fields before saving/sending" msgstr "Change metadata fields before saving/sending" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:837 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838 msgid "Sharing books by email" msgstr "Sharing books by email" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:839 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:851 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:840 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:852 msgid "Sharing" msgstr "Sharing" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:843 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:844 msgid "" "Setup sharing of books via email. Can be used for automatic sending of " "downloaded news to your devices" @@ -402,11 +402,11 @@ msgstr "" "Setup sharing of books via email. Can be used for automatic sending of " "downloaded news to your devices" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:849 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:850 msgid "Sharing over the net" msgstr "Sharing over the net" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:855 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:856 msgid "" "Setup the calibre Content Server which will give you access to your calibre " "library from anywhere, on any device, over the internet" @@ -414,33 +414,33 @@ msgstr "" "Setup the calibre Content Server which will give you access to your calibre " "library from anywhere, on any device, over the internet" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:862 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863 msgid "Plugins" msgstr "Plugins" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:864 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:876 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:887 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:865 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:877 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:888 msgid "Advanced" msgstr "Advanced" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:868 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:869 msgid "Add/remove/customize various bits of calibre functionality" msgstr "Add/remove/customise various bits of calibre functionality" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:874 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:875 msgid "Tweaks" msgstr "Tweaks" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:880 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:881 msgid "Fine tune how calibre behaves in various contexts" msgstr "Fine tune how calibre behaves in various contexts" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:885 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886 msgid "Miscellaneous" msgstr "Miscellaneous" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:891 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:892 msgid "Miscellaneous advanced configuration" msgstr "Miscellaneous advanced configuration" @@ -485,7 +485,7 @@ msgstr "" "no information about the input document." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:59 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:436 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:444 msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "" @@ -496,62 +496,62 @@ msgid "This profile is intended for the SONY PRS 300." msgstr "This profile is intended for the SONY PRS 300." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:80 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:476 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:484 msgid "This profile is intended for the SONY PRS-900." msgstr "This profile is intended for the SONY PRS-900." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:88 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:506 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:513 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:99 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:517 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:524 msgid "This profile is intended for the Mobipocket books." msgstr "This profile is intended for the Mobipocket books." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:112 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:530 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:537 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "This profile is intended for the Hanlin V3 and its clones." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:124 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:542 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:549 msgid "This profile is intended for the Hanlin V5 and its clones." msgstr "This profile is intended for the Hanlin V5 and its clones." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:134 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:550 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:557 msgid "This profile is intended for the Cybook G3." msgstr "This profile is intended for the Cybook G3." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:147 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:563 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:570 msgid "This profile is intended for the Cybook Opus." msgstr "This profile is intended for the Cybook Opus." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:159 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:576 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:583 msgid "This profile is intended for the Amazon Kindle." msgstr "This profile is intended for the Amazon Kindle." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:171 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:617 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:631 msgid "This profile is intended for the Irex Illiad." msgstr "This profile is intended for the Irex Illiad." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:183 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:630 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "This profile is intended for the IRex Digital Reader 1000." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:196 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 msgid "This profile is intended for the IRex Digital Reader 800." msgstr "This profile is intended for the IRex Digital Reader 800." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:208 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 msgid "This profile is intended for the B&N Nook." msgstr "This profile is intended for the B&N Nook." @@ -569,29 +569,29 @@ 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:273 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:276 msgid "" "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "" "Intended for the iPad and similar devices with a resolution of 768x1024" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:427 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:435 msgid "Intended for generic tablet devices, does no resizing of images" msgstr "Intended for generic tablet devices, does no resizing of images" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:454 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:462 msgid "This profile is intended for the Kobo Reader." msgstr "This profile is intended for the Kobo Reader." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:467 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:475 msgid "This profile is intended for the SONY PRS-300." msgstr "This profile is intended for the SONY PRS-300." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:485 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:493 msgid "This profile is intended for the 5-inch JetBook." msgstr "This profile is intended for the 5-inch JetBook." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:494 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:502 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." @@ -599,11 +599,11 @@ 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:597 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:609 msgid "This profile is intended for the Amazon Kindle DX." msgstr "This profile is intended for the Amazon Kindle DX." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:686 msgid "This profile is intended for the Sanda Bambook." msgstr "This profile is intended for the Sanda Bambook." @@ -679,7 +679,7 @@ msgstr "Disable the named plugin" msgid "Communicate with Android phones." msgstr "Communicate with Android devices." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:53 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:56 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" @@ -687,7 +687,7 @@ msgstr "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:95 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:98 msgid "Communicate with S60 phones." msgstr "Communicate with S60 phones." @@ -1043,6 +1043,14 @@ msgstr "The Nook" msgid "Communicate with the Nook eBook reader." msgstr "Communicate with the Nook eBook reader." +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 +msgid "Nook Color" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 +msgid "Communicate with the Nook Color eBook reader." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." msgstr "Communicate with the Nuut2 eBook reader." @@ -2779,7 +2787,7 @@ msgstr "" "LibraryThing.com\n" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1399 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 msgid "Cover" msgstr "Cover" @@ -2820,70 +2828,70 @@ msgstr "All articles" msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "This is an Amazon Topaz book. It cannot be processed." -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1400 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 msgid "Title Page" msgstr "Title Page" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 #: /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:199 msgid "Table of Contents" msgstr "Table of Contents" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 msgid "Index" msgstr "Index" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 msgid "Glossary" msgstr "Glossary" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 msgid "Acknowledgements" msgstr "Acknowledgements" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 msgid "Bibliography" msgstr "Bibliography" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 msgid "Colophon" msgstr "Colophon" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 msgid "Copyright" msgstr "Copyright" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 msgid "Dedication" msgstr "Dedication" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 msgid "Epigraph" msgstr "Epigraph" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 msgid "Foreword" msgstr "Foreword" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 msgid "List of Illustrations" msgstr "List of Illustrations" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 msgid "List of Tables" msgstr "List of Tables" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 msgid "Notes" msgstr "Notes" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1416 msgid "Preface" msgstr "Preface" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1417 msgid "Main Text" msgstr "Main Text" @@ -3933,7 +3941,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:391 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:741 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 msgid "Not allowed" msgstr "Not allowed" @@ -5045,11 +5053,11 @@ msgstr "" "in a previous conversion (if they exist) instead of using the defaults " "specified in the Preferences" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:70 msgid "Bulk Convert" msgstr "Bulk Convert" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 msgid "Options specific to the output format." msgstr "Options specific to the output format." @@ -6255,10 +6263,10 @@ msgstr "Sending email to" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:982 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:990 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1083 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1168 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1287 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1295 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1089 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1174 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1293 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1301 msgid "No suitable formats" msgstr "No suitable formats" @@ -6284,37 +6292,37 @@ msgstr "Failed to email the following books:" msgid "Sent by email:" msgstr "Sent by email:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1042 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1048 msgid "News:" msgstr "News:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1049 msgid "Attached is the" msgstr "Attached is the" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1054 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1060 msgid "Sent news to" msgstr "Sent news to" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1084 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1169 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1288 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1090 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1175 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1294 msgid "Auto convert the following books before uploading to the device?" msgstr "Auto convert the following books before uploading to the device?" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1114 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1120 msgid "Sending catalogs to device." msgstr "Sending catalogues to device." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1201 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1207 msgid "Sending news to device." msgstr "Sending news to device." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1254 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1260 msgid "Sending books to device." msgstr "Sending books to device." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1296 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1302 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." @@ -6322,11 +6330,11 @@ msgstr "" "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." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1360 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1366 msgid "No space on device" msgstr "No space on device" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1367 msgid "" "

Cannot upload books to device there is no more free space available " msgstr "" @@ -7709,46 +7717,45 @@ msgid "Advanced Search" msgstr "Advanced Search" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 -msgid "Find entries that have..." -msgstr "Find entries that have..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 -msgid "&All these words:" -msgstr "&All these words:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 -msgid "This exact &phrase:" -msgstr "This exact &phrase:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 -msgid "&One or more of these words:" -msgstr "&One or more of these words:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 -msgid "But dont show entries that have..." -msgstr "But dont show entries that have..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 -msgid "Any of these &unwanted words:" -msgstr "Any of these &unwanted words:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 msgid "What kind of match to use:" msgstr "What kind of match to use:" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +msgid "Contains: the word or phrase matches anywhere in the metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +msgid "Equals: the word or phrase must match the entire metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 +msgid "" +"Regular expression: the expression must match anywhere in the metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +msgid "Find entries that have..." +msgstr "Find entries that have..." + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +msgid "&All these words:" +msgstr "&All these words:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +msgid "This exact &phrase:" +msgstr "This exact &phrase:" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 -msgid "Contains: the word or phrase matches anywhere in the metadata" -msgstr "Contains: the word or phrase matches anywhere in the metadata" +msgid "&One or more of these words:" +msgstr "&One or more of these words:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 -msgid "Equals: the word or phrase must match an entire metadata field" -msgstr "Equals: the word or phrase must match an entire metadata field" +msgid "But dont show entries that have..." +msgstr "But dont show entries that have..." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 -msgid "" -"Regular expression: the expression must match anywhere in the metadata" -msgstr "" -"Regular expression: the expression must match anywhere in the metadata" +msgid "Any of these &unwanted words:" +msgstr "Any of these &unwanted words:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 msgid "" @@ -8585,47 +8592,47 @@ msgstr "Marked for deletion" msgid "Double click to edit me

" msgstr "Double click to edit me

" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:147 msgid "Hide column %s" msgstr "Hide column %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 msgid "Sort on %s" msgstr "Sort on %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 msgid "Ascending" msgstr "Ascending" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:156 msgid "Descending" msgstr "Descending" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 msgid "Change text alignment for %s" msgstr "Change text alignment for %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Left" msgstr "Left" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Right" msgstr "Right" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:171 msgid "Center" msgstr "Centre" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:190 msgid "Show column" msgstr "Show column" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202 msgid "Restore default layout" msgstr "Restore default layout" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:743 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -13500,3 +13507,14 @@ msgstr "Do not download CSS stylesheets." #~ msgid " " #~ msgstr " " + +#~ msgid "" +#~ "Regular expression: the expression must match anywhere in the metadata" +#~ msgstr "" +#~ "Regular expression: the expression must match anywhere in the metadata" + +#~ msgid "Contains: the word or phrase matches anywhere in the metadata" +#~ msgstr "Contains: the word or phrase matches anywhere in the metadata" + +#~ msgid "Equals: the word or phrase must match an entire metadata field" +#~ msgstr "Equals: the word or phrase must match an entire metadata field" diff --git a/src/calibre/translations/es.po b/src/calibre/translations/es.po index 890f092200..0059e6370a 100644 --- a/src/calibre/translations/es.po +++ b/src/calibre/translations/es.po @@ -10,17 +10,17 @@ msgid "" msgstr "" "Project-Id-Version: es\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-11-10 14:27+0000\n" -"PO-Revision-Date: 2010-11-10 21:13+0000\n" +"POT-Creation-Date: 2010-11-12 23:11+0000\n" +"PO-Revision-Date: 2010-11-12 22:52+0000\n" "Last-Translator: DiegoJ \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-11-11 04:42+0000\n" +"X-Launchpad-Export-Date: 2010-11-13 04:54+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:494 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:502 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." @@ -28,7 +28,7 @@ msgstr "" "Este perfil está pensado para la línea PRS de SONY. Los 500/505/700, etc., " "en modo apaisado. Útil principalmente para cómics." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:597 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:609 msgid "This profile is intended for the Amazon Kindle DX." msgstr "Este perfil está pensado para el Kindle DX de Amazon." @@ -50,7 +50,7 @@ msgstr "No hace absolutamente nada" #: /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/sony_cache.py:643 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:650 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 @@ -93,14 +93,14 @@ msgstr "No hace absolutamente nada" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:78 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:119 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:153 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:616 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:822 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:824 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:620 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:826 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:828 #: /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:911 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:916 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:982 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:913 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:918 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:984 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:143 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:150 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:64 @@ -142,8 +142,8 @@ msgstr "No hace absolutamente nada" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:141 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:927 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:936 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1243 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1249 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1252 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 @@ -211,7 +211,7 @@ msgstr "Acción de interfaz de usuario" msgid "Preferences" msgstr "Preferencias" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:17 +#: /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 " @@ -221,7 +221,7 @@ msgstr "" "con los archivos enlazados. Este complemento se ejecuta cada vez que se " "añade un archivo HTML a la biblioteca." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:53 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:51 msgid "" "Character encoding for the input HTML files. Common choices include: cp1252, " "latin1, iso-8859-1 and utf-8." @@ -229,7 +229,7 @@ msgstr "" "Codificación de los archivos HTML de entrada. Las opciones comunes incluyen: " "cp1252, latin1, iso-8859-1 y utf-8." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:60 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:58 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 " @@ -239,7 +239,7 @@ msgstr "" "los directorios pmlname_img o imágenes. Este complemento se ejecutará cada " "vez que añada un archivo PML a la biblioteca" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:94 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:92 msgid "Extract cover from comic files" msgstr "Extraer la portada de los archivos de cómic" @@ -286,45 +286,45 @@ msgstr "Asignar metadatos a los archivos %s" msgid "Set metadata from %s files" msgstr "Establecer metadatos desde archivos %s" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:711 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:712 msgid "Look and Feel" msgstr "Aspecto Visual y Apariencia" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:713 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:725 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:736 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:747 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:714 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:726 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:737 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:748 msgid "Interface" msgstr "Interfaz" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:717 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:718 msgid "Adjust the look and feel of the calibre interface to suit your tastes" msgstr "" "Ajuste la apariencia y sensación de la interfaz de calibre para que se " "adapte a sus gustos" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:723 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:724 msgid "Behavior" msgstr "Comportamiento" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:729 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:730 msgid "Change the way calibre behaves" msgstr "Cambiar el comportamiento de calibre" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:734 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:208 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:209 msgid "Add your own columns" msgstr "Añadir sus propias columnas" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:740 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:741 msgid "Add/remove your own columns to the calibre book list" msgstr "Añada/elimine sus propias columnas en la lista de libros de calibre" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:745 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746 msgid "Customize the toolbar" msgstr "Personalizar la barra de herramientas" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:751 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:752 msgid "" "Customize the toolbars and context menus, changing which actions are " "available in each" @@ -332,60 +332,60 @@ msgstr "" "Personaliza las barras de herramientas y los menús de contexto, cambiando " "las acciones que estarán disponible en cada uno" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:757 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:758 msgid "Input Options" msgstr "Opciones de entrada" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:759 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:770 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:781 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:760 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:771 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:782 msgid "Conversion" msgstr "Conversión" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:763 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:764 msgid "Set conversion options specific to each input format" msgstr "" "Establecer las opciones de conversión específicas de cada formato de entrada" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:768 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769 msgid "Common Options" msgstr "Opciones comunes" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:774 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:775 msgid "Set conversion options common to all formats" msgstr "" "Establecer las opciones de conversión comunes para todos los formatos" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:779 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780 msgid "Output Options" msgstr "Opciones de salida" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:785 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:786 msgid "Set conversion options specific to each output format" msgstr "" "Establece las opciones específicas de conversión para cada formato de salida" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:790 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791 msgid "Adding books" msgstr "Añadir libros" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:792 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:804 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:816 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:828 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:793 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:805 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:817 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:829 msgid "Import/Export" msgstr "Importar/Exportar" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:796 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:797 msgid "Control how calibre reads metadata from files when adding books" msgstr "" "Controla cuándo calibre lee los metadatos de los archivos al añadir libros" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:802 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:803 msgid "Saving books to disk" msgstr "Guardar libros en disco" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:808 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:809 msgid "" "Control how calibre exports files from its database to disk when using Save " "to disk" @@ -393,33 +393,33 @@ msgstr "" "Controla cuándo calibre exporta archivos de su base de datos al dicos al " "usar Guardar al disco" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:814 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:815 msgid "Sending books to devices" msgstr "Enviar libros a dispositivos" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:820 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:821 msgid "Control how calibre transfers files to your ebook reader" msgstr "" "Controla cuándo calibre transfiere los archivos a su lector de libros" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:826 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:827 msgid "Metadata plugboards" msgstr "Control de metadatos" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:832 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:833 msgid "Change metadata fields before saving/sending" msgstr "Cambiar los cambpos de metadatos antes de guardar/enviar" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:837 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838 msgid "Sharing books by email" msgstr "Compartir de libros por correo" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:839 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:851 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:840 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:852 msgid "Sharing" msgstr "Compartir" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:843 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:844 msgid "" "Setup sharing of books via email. Can be used for automatic sending of " "downloaded news to your devices" @@ -427,11 +427,11 @@ msgstr "" "Configurar la compartición de libros por correo electrónico. Puede usarse " "para enviar automáticamente las noticias descargadas a sus dispositivos" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:849 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:850 msgid "Sharing over the net" msgstr "Compartir por red" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:855 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:856 msgid "" "Setup the calibre Content Server which will give you access to your calibre " "library from anywhere, on any device, over the internet" @@ -440,33 +440,33 @@ msgstr "" "biblioteca de calibre en cualquier lugar, con cualquier dispositivo, a " "través de Internet." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:862 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863 msgid "Plugins" msgstr "Complementos" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:864 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:876 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:887 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:865 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:877 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:888 msgid "Advanced" msgstr "Avanzada" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:868 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:869 msgid "Add/remove/customize various bits of calibre functionality" msgstr "Añadir/eliminar/configurar diversas funciones de calibre" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:874 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:875 msgid "Tweaks" msgstr "Ajustes" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:880 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:881 msgid "Fine tune how calibre behaves in various contexts" msgstr "Ajuste como se comporta calibre en diversos contextos" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:885 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886 msgid "Miscellaneous" msgstr "Miscelánea" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:891 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:892 msgid "Miscellaneous advanced configuration" msgstr "Configuración miscelánea avanzada" @@ -512,7 +512,7 @@ msgstr "" "útil si no sabe nada del documento de entrada." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:59 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:436 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:444 msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "" @@ -524,62 +524,62 @@ msgid "This profile is intended for the SONY PRS 300." msgstr "Este perfil está pensado para el SONY PRS-300." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:80 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:476 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:484 msgid "This profile is intended for the SONY PRS-900." msgstr "Este perfil está pensado para el SONY PRS-900" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:88 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:506 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:513 msgid "This profile is intended for the Microsoft Reader." msgstr "Este perfil está pensado para el Microsoft Reader." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:99 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:517 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:524 msgid "This profile is intended for the Mobipocket books." msgstr "Este perfil está pensado para los libros Mobipocket." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:112 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:530 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:537 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "Este perfil está pensado para el Hanlin V3 y sus clones." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:124 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:542 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:549 msgid "This profile is intended for the Hanlin V5 and its clones." msgstr "Este perfil está pensado para el Hanlin V5 y sus clones." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:134 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:550 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:557 msgid "This profile is intended for the Cybook G3." msgstr "Este perfil está pensado para el Cybook Gen3." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:147 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:563 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:570 msgid "This profile is intended for the Cybook Opus." msgstr "Este perfil está pensado para el Cybook Opus." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:159 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:576 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:583 msgid "This profile is intended for the Amazon Kindle." msgstr "Este perfil está pensado para el Kindle de Amazon" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:171 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:617 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:631 msgid "This profile is intended for the Irex Illiad." msgstr "Este perfil está pensado para el Irex Illiad." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:183 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:630 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "Este perfil está pensado para el IRex Digital Reader 1000." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:196 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 msgid "This profile is intended for the IRex Digital Reader 800." msgstr "Este perfil está pensado para el IRex Digital Reader 800." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:208 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 msgid "This profile is intended for the B&N Nook." msgstr "Este perfile está pensado para el Nook de B&N." @@ -597,30 +597,30 @@ msgstr "" "útil si quiere generar un documento que pueda ser leido en el PC o en varios " "dispositivos diferentes." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:273 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:276 msgid "" "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "" "Pensado para el Ipad y dispositivos similares con una resolución de 768x1024" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:427 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:435 msgid "Intended for generic tablet devices, does no resizing of images" msgstr "" "Orientado para dispositivos de tableta genéricos, sin redimensión de imágenes" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:454 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:462 msgid "This profile is intended for the Kobo Reader." msgstr "Este perfil está pensado para el lector Kobo" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:467 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:475 msgid "This profile is intended for the SONY PRS-300." msgstr "Este perfil está pensado para el SONY PRS-300." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:485 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:493 msgid "This profile is intended for the 5-inch JetBook." msgstr "Este perfil está pensado para el JetBook de 5 pulgadas." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:686 msgid "This profile is intended for the Sanda Bambook." msgstr "Este perfil está pensado para el Sandra Bambook." @@ -696,7 +696,7 @@ msgstr "Desactivar el complemento nombrado" msgid "Communicate with Android phones." msgstr "Comunicar con teléfonos Android." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:53 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:56 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" @@ -704,7 +704,7 @@ msgstr "" "Lista de directorios, separados por comas, donde almacenar los libros en el " "dispositivo. Se usará el primero que exista" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:95 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:98 msgid "Communicate with S60 phones." msgstr "Comunicar con teléfonos S60." @@ -1063,6 +1063,14 @@ msgstr "El Nook" msgid "Communicate with the Nook eBook reader." msgstr "Comunicarse con el lector Nook." +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 +msgid "Nook Color" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 +msgid "Communicate with the Nook Color eBook reader." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." msgstr "Comunicar con el lector Nuut2." @@ -2837,7 +2845,7 @@ msgstr "" "libro identificado por el ISBN.\n" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1399 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 msgid "Cover" msgstr "Portada" @@ -2881,70 +2889,70 @@ msgstr "Todos los artículos" msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "Este es un libro Topaz de Amazon. No se puede procesar." -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1400 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 msgid "Title Page" msgstr "Página de título" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 #: /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:199 msgid "Table of Contents" msgstr "Índice" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 msgid "Index" msgstr "Índice analítico" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 msgid "Glossary" msgstr "Glosario" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 msgid "Acknowledgements" msgstr "Agradecimientos" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 msgid "Bibliography" msgstr "Bibliografía" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 msgid "Colophon" msgstr "Colofón" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 msgid "Copyright" msgstr "Copyright" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 msgid "Dedication" msgstr "Dedicatoria" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 msgid "Epigraph" msgstr "Epígrafe" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 msgid "Foreword" msgstr "Prólogo" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 msgid "List of Illustrations" msgstr "Lista de ilustraciones" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 msgid "List of Tables" msgstr "Lista de tablas" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 msgid "Notes" msgstr "Notas" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1416 msgid "Preface" msgstr "Prefacio" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1417 msgid "Main Text" msgstr "Texto principal" @@ -4022,7 +4030,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:391 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:741 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 msgid "Not allowed" msgstr "No permitido" @@ -5138,11 +5146,11 @@ msgstr "" "valores guardados en una conversión anterior (si existe) en vez de usar los " "predeterminados especificados en las Preferencias" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:70 msgid "Bulk Convert" msgstr "Convertir en bloque" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 msgid "Options specific to the output format." msgstr "Opciones específicas del formato de salida." @@ -6358,10 +6366,10 @@ msgstr "Enviando correo electrónico a" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:982 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:990 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1083 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1168 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1287 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1295 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1089 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1174 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1293 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1301 msgid "No suitable formats" msgstr "No hay formatos adecuados" @@ -6390,39 +6398,39 @@ msgstr "Fallo al enviar por correo electrónico los siguientes libros:" msgid "Sent by email:" msgstr "Enviado por correo electrónico:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1042 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1048 msgid "News:" msgstr "Noticias:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1049 msgid "Attached is the" msgstr "Adjunto está el" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1054 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1060 msgid "Sent news to" msgstr "Enviar noticias a" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1084 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1169 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1288 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1090 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1175 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1294 msgid "Auto convert the following books before uploading to the device?" msgstr "" "¿Convertir automáticamente los siguientes libros antes de pasarlos al " "dispositivo?" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1114 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1120 msgid "Sending catalogs to device." msgstr "Enviando catálogos al dispositivo." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1201 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1207 msgid "Sending news to device." msgstr "Enviando noticias al dispositivo." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1254 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1260 msgid "Sending books to device." msgstr "Enviando libros al dispositivo." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1296 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1302 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." @@ -6431,11 +6439,11 @@ msgstr "" "encontraron formatos adecuados. Convierta el(los) libro(s) a un formato " "soportado por su dispositivo antes de volver a intentarlo." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1360 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1366 msgid "No space on device" msgstr "No hay espacio en el dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1367 msgid "" "

Cannot upload books to device there is no more free space available " msgstr "" @@ -7852,48 +7860,45 @@ msgid "Advanced Search" msgstr "Búsqueda avanzada" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 -msgid "Find entries that have..." -msgstr "Encuentra entradas que tengan..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 -msgid "&All these words:" -msgstr "&Todas estas palabras:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 -msgid "This exact &phrase:" -msgstr "Esta &frase exacta:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 -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:203 -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:204 -msgid "Any of these &unwanted words:" -msgstr "Cualquiera de estas palabras &no deseadas:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 msgid "What kind of match to use:" msgstr "Tipo de coincidencias:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 -msgid "Contains: the word or phrase matches anywhere in the metadata" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +msgid "Contains: the word or phrase matches anywhere in the metadata field" 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:201 +msgid "Equals: the word or phrase must match the entire metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 +msgid "" +"Regular expression: the expression must match anywhere in the metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +msgid "Find entries that have..." +msgstr "Encuentra entradas que tengan..." + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +msgid "&All these words:" +msgstr "&Todas estas palabras:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +msgid "This exact &phrase:" +msgstr "Esta &frase exacta:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +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:207 -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" +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:208 -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" +msgid "Any of these &unwanted words:" +msgstr "Cualquiera de estas palabras &no deseadas:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 msgid "" @@ -8741,47 +8746,47 @@ msgstr "Marcado para borrarlo" msgid "Double click to edit me

" msgstr "Doble clic para editarme

" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:147 msgid "Hide column %s" msgstr "Ocultar columna %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 msgid "Sort on %s" msgstr "Ordenar según %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 msgid "Ascending" msgstr "Ascendente" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:156 msgid "Descending" msgstr "Descendente" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 msgid "Change text alignment for %s" msgstr "Cambiar la alineación del texto para %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Left" msgstr "Izquierda" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Right" msgstr "Derecha" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:171 msgid "Center" msgstr "Centro" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:190 msgid "Show column" msgstr "Mostrar columna" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202 msgid "Restore default layout" msgstr "Restaurar formato por defecto" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:743 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -15853,6 +15858,19 @@ msgstr "No descargar estilos CSS." #~ msgid " " #~ msgstr " " +#~ 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" + +#~ 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" + +#~ 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" + #~ msgid "Masthead font:" #~ msgstr "Tipo de letra para el rótulo:" diff --git a/src/calibre/translations/eu.po b/src/calibre/translations/eu.po index 96257c2e70..39c6d3ad4c 100644 --- a/src/calibre/translations/eu.po +++ b/src/calibre/translations/eu.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2010-11-10 14:27+0000\n" -"PO-Revision-Date: 2010-11-10 17:34+0000\n" -"Last-Translator: Bingen Markes \n" +"POT-Creation-Date: 2010-11-12 23:11+0000\n" +"PO-Revision-Date: 2010-11-12 22:57+0000\n" +"Last-Translator: Kovid Goyal \n" "Language-Team: Basque \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-11 04:40+0000\n" +"X-Launchpad-Export-Date: 2010-11-13 04:51+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -31,7 +31,7 @@ msgstr "Ez du ezer egiten" #: /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/sony_cache.py:643 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:650 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 @@ -74,14 +74,14 @@ msgstr "Ez du ezer egiten" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:78 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:119 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:153 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:616 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:822 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:824 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:620 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:826 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:828 #: /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:911 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:916 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:982 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:913 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:918 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:984 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:143 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:150 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:64 @@ -123,8 +123,8 @@ msgstr "Ez du ezer egiten" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:141 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:927 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:936 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1243 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1249 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1252 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 @@ -192,7 +192,7 @@ msgstr "Erabiltzailearen interfaze ekintza" msgid "Preferences" msgstr "Hobespenak" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:17 +#: /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 " @@ -202,7 +202,7 @@ msgstr "" "estekatutako fitxategi guztiak barne dituelarik. Gehigarri hau, liburutegira " "HTML fitxategi bat gehitzen duzun bakoitzean exekutatuko da." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:53 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:51 msgid "" "Character encoding for the input HTML files. Common choices include: cp1252, " "latin1, iso-8859-1 and utf-8." @@ -210,7 +210,7 @@ msgstr "" "HTML sorburu fitxategientzako karaktere kodeketa. Aukeraketa arruntak " "barnean ditu: cp1252, latin1, iso-8859-1 and utf-8." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:60 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:58 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 " @@ -220,7 +220,7 @@ msgstr "" "pmlname_img direktorioan dauden irudi guztiekin. Gehigarri hau, liburutegira " "PML fitxategi bat gehitzen duzun bakoitzean exekutatuko da." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:94 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:92 msgid "Extract cover from comic files" msgstr "Erauzi ezazu liburu-azala komiki fitxategietatik" @@ -267,45 +267,45 @@ msgstr "Ezarri metadatuak %s fitxategietan" msgid "Set metadata from %s files" msgstr "Ezarri metadatuak %s fitxategietatik" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:711 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:712 msgid "Look and Feel" msgstr "Itxura eta izaera" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:713 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:725 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:736 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:747 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:714 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:726 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:737 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:748 msgid "Interface" msgstr "Interfazea" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:717 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:718 msgid "Adjust the look and feel of the calibre interface to suit your tastes" msgstr "Doi ezazu calibreren interfazearen itxura zure gustuen arabera" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:723 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:724 msgid "Behavior" msgstr "Jokabidea" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:729 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:730 msgid "Change the way calibre behaves" msgstr "Alda ezazu calibreren jokatzeko era" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:734 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:208 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:209 msgid "Add your own columns" msgstr "Gehi itzazu zureak diren zutabeak" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:740 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:741 msgid "Add/remove your own columns to the calibre book list" msgstr "" "Gehitu/ezabatu itzazu zuk egindako zure zutabeak calibreren liburu " "zerrendara/zerrendatik" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:745 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746 msgid "Customize the toolbar" msgstr "Pertsonalizatu tresna-barra" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:751 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:752 msgid "" "Customize the toolbars and context menus, changing which actions are " "available in each" @@ -313,58 +313,58 @@ msgstr "" "Pertsonalizatu tresna-barra eta testuinguruaren araberako menuak, bakoitzean " "eskuragarri agertuko diren ekintzekin aldatuz." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:757 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:758 msgid "Input Options" msgstr "Sorburu aukerak" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:759 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:770 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:781 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:760 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:771 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:782 msgid "Conversion" msgstr "Bihurketa" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:763 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:764 msgid "Set conversion options specific to each input format" msgstr "Ezarri itzazu sorburu formatu bakoitzeko bihurketa aukera zehatzak" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:768 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769 msgid "Common Options" msgstr "Aukera komunak" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:774 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:775 msgid "Set conversion options common to all formats" msgstr "Ezarri itzazu formatu guztietarako komunak diren bihurketa aukerak" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:779 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780 msgid "Output Options" msgstr "Helburu aukerak" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:785 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:786 msgid "Set conversion options specific to each output format" msgstr "Ezarri itzazu helburu formatu bakoitzeko bihurketa aukera zehatzak" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:790 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791 msgid "Adding books" msgstr "Liburuak gehitzen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:792 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:804 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:816 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:828 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:793 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:805 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:817 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:829 msgid "Import/Export" msgstr "Inportatu/Esportatu" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:796 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:797 msgid "Control how calibre reads metadata from files when adding books" msgstr "" "Kontrola ezazu calibrek nola irakurtzen dituen metadatuak fitxategietatik " "liburuak gehitzerakoan" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:802 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:803 msgid "Saving books to disk" msgstr "Liburuak diskan gordetzen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:808 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:809 msgid "" "Control how calibre exports files from its database to disk when using Save " "to disk" @@ -372,34 +372,34 @@ msgstr "" "Kontrola ezazu calibrek nola esportatzen dituen fitxategiak bere datu " "basetik diskora \"Diskoan gorde\" aukera erabiltzen denean." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:814 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:815 msgid "Sending books to devices" msgstr "Bidaltzen liburuak gailuetara" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:820 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:821 msgid "Control how calibre transfers files to your ebook reader" msgstr "" "Kontrola ezazu ea calibrek nola bidaltzen dituen fitxategiak zure liburu " "elektronikoetara" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:826 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:827 msgid "Metadata plugboards" msgstr "Metadatuen konektore-txartela" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:832 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:833 msgid "Change metadata fields before saving/sending" msgstr "Aldatu metadatu eremuak gorde/igorri baino lehenago" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:837 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838 msgid "Sharing books by email" msgstr "Liburuak e-posta bidez partekatzen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:839 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:851 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:840 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:852 msgid "Sharing" msgstr "Partekatzen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:843 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:844 msgid "" "Setup sharing of books via email. Can be used for automatic sending of " "downloaded news to your devices" @@ -407,11 +407,11 @@ msgstr "" "Antolatu liburuen elkarbanatzea e-postaren bidez. Saretik deskargatutako " "albisteak norbere gailuetara automatikoki bidaltzeko erabil daiteke" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:849 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:850 msgid "Sharing over the net" msgstr "Sarean zehar elkarbanatzen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:855 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:856 msgid "" "Setup the calibre Content Server which will give you access to your calibre " "library from anywhere, on any device, over the internet" @@ -420,35 +420,35 @@ msgstr "" "interneten bidezko sarbidea emango dizun edozein lekutan eta edozein " "gailuren bidez" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:862 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863 msgid "Plugins" msgstr "Pluginak" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:864 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:876 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:887 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:865 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:877 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:888 msgid "Advanced" msgstr "Aurreratua" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:868 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:869 msgid "Add/remove/customize various bits of calibre functionality" msgstr "Gehitu/ezabatu/pertsonalizatu calibreren zenbait aukera" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:874 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:875 msgid "Tweaks" msgstr "Doikuntzak" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:880 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:881 msgid "Fine tune how calibre behaves in various contexts" msgstr "" "Afina ezazu zehaztasun handiz nola jokatuko duen calibrek hainbat " "testuingurutan" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:885 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886 msgid "Miscellaneous" msgstr "Denetarik" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:891 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:892 msgid "Miscellaneous advanced configuration" msgstr "Hainbat gauzetarako ezarpen aurreratuak" @@ -494,7 +494,7 @@ msgstr "" "da sarrerako dokumentuari buruz ezer ez dakizunean." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:59 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:436 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:444 msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "" @@ -506,62 +506,62 @@ msgid "This profile is intended for the SONY PRS 300." msgstr "Profil hau \"SONY PRS 300\" horretara zuzendurik dago." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:80 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:476 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:484 msgid "This profile is intended for the SONY PRS-900." msgstr "Profil hau \"SONY PRS 900\" horretara zuzendurik dago." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:88 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:506 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:513 msgid "This profile is intended for the Microsoft Reader." msgstr "Profil hau Microsoft Reader-arentzat zuzendua dago." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:99 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:517 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:524 msgid "This profile is intended for the Mobipocket books." msgstr "Profil hau Mobipocket liburuentzat zuzendua dago." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:112 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:530 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:537 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "Profil hau Hanlin V3 eta bere klonentzat zuzendua dago." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:124 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:542 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:549 msgid "This profile is intended for the Hanlin V5 and its clones." msgstr "Profil hau \"Hanlin V5\" eta bere klonetara zuzendurik dago." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:134 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:550 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:557 msgid "This profile is intended for the Cybook G3." msgstr "Profil hau Cybook G3-arentzat zuzendua dago." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:147 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:563 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:570 msgid "This profile is intended for the Cybook Opus." msgstr "Profil hau Cybook Opus-arentzat zuzendua dago." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:159 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:576 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:583 msgid "This profile is intended for the Amazon Kindle." msgstr "Profil hau Amazon Kindle gailuarentzat dago prestaturik." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:171 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:617 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:631 msgid "This profile is intended for the Irex Illiad." msgstr "Profil hau Irex Illiad-arentzat zuzendua dago." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:183 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:630 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "Profil hau IRex Digital Reader 1000-rentzat zuzendua dago." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:196 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 msgid "This profile is intended for the IRex Digital Reader 800." msgstr "Profil hau \"IRex Digital Reader 800\" horrentzat dago prestaturik." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:208 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 msgid "This profile is intended for the B&N Nook." msgstr "Profil hau \"B&N Nook\" horrentzat dago prestaturik." @@ -579,32 +579,32 @@ msgstr "" "da ordenagailu edota gailu ezberdinentzat zuzenduta dagoen dokumentu bat " "egin nahi baduzu." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:273 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:276 msgid "" "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "" "iPad eta antzeko trepetetarako zuzendurik, 768x1024 bereizmena duten " "trepetetarako." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:427 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:435 msgid "Intended for generic tablet devices, does no resizing of images" msgstr "" "Edozein tablet gailutan erabiltzeko asmoz, ez ditu irudien neurriak modu " "automatikoan aldatuko" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:454 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:462 msgid "This profile is intended for the Kobo Reader." msgstr "Profil hau \"Kobo Reader\" horietara zuzendurik dago." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:467 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:475 msgid "This profile is intended for the SONY PRS-300." msgstr "Profil hau \"SONY PRS 300\" horretara zuzendurik dago." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:485 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:493 msgid "This profile is intended for the 5-inch JetBook." msgstr "Profil hau 5 hazbeteko JetBook gailuarentzat dago prestaturik." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:494 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:502 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." @@ -613,11 +613,11 @@ msgstr "" "500/505/600/700 eta abar orrialdea horizontal moduan erakutsita. Batez ere " "komikietan erabilgarria." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:597 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:609 msgid "This profile is intended for the Amazon Kindle DX." msgstr "Profil hau Amazon Kindle DX-arentzat zuzendua dago." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:686 msgid "This profile is intended for the Sanda Bambook." msgstr "Sanda Bambook horrentzat egindako profila." @@ -697,7 +697,7 @@ msgstr "Desgaitu izendaturiko gehigarria." msgid "Communicate with Android phones." msgstr "Adroid telefonoekin komunikatu." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:53 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:56 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" @@ -705,7 +705,7 @@ msgstr "" "Gailuan dagoen komen bitartez bereizitako direktorioen zerrenda, liburu " "elektronikoak hara igortzeko. Existitzen den lehena erabiliko da." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:95 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:98 msgid "Communicate with S60 phones." msgstr "S60 telefonoekin komunikatu." @@ -1067,6 +1067,14 @@ msgstr "Nook-a" msgid "Communicate with the Nook eBook reader." msgstr "Komunikatu Nook eBook irakurgailuarekin." +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 +msgid "Nook Color" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 +msgid "Communicate with the Nook Color eBook reader." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." msgstr "Komunikatu Nuut2 eBook irakurgailuarekin." @@ -2931,7 +2939,7 @@ msgstr "" "hemendik: LibraryThing.com\n" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1399 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 msgid "Cover" msgstr "Liburu-azala" @@ -2977,70 +2985,70 @@ msgstr "Artikulu guztiak" msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "Hauxe Amazon Topaz liburua da. Ezin da prozesatu." -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1400 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 msgid "Title Page" msgstr "Orriaren Izenburua" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 #: /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:199 msgid "Table of Contents" msgstr "Aurkibidea" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 msgid "Index" msgstr "Indizea" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 msgid "Glossary" msgstr "Glosarioa" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 msgid "Acknowledgements" msgstr "Aipamenak" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 msgid "Bibliography" msgstr "Bibliografia" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 msgid "Colophon" msgstr "Azken oharra" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 msgid "Copyright" msgstr "Copyright-a" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 msgid "Dedication" msgstr "Eskaintza" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 msgid "Epigraph" msgstr "Epigrafea" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 msgid "Foreword" msgstr "Sarrera" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 msgid "List of Illustrations" msgstr "Irudien zerrenda" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 msgid "List of Tables" msgstr "Taulen zerrenda" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 msgid "Notes" msgstr "Oharrak" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1416 msgid "Preface" msgstr "Aitzinsolasa" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1417 msgid "Main Text" msgstr "Testu nagusia" @@ -4121,7 +4129,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:391 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:741 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 msgid "Not allowed" msgstr "Not allowed" @@ -5246,11 +5254,11 @@ msgstr "" "gordetako bihurketen balioak (horrelakorik balego), erabili beharrean " "Lehentasunetan zehaztutako balio lehenetsiak." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:70 msgid "Bulk Convert" msgstr "Karga handiko bihurketa" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 msgid "Options specific to the output format." msgstr "Helburu formatuarentzako berariazko aukerak." @@ -6472,10 +6480,10 @@ msgstr "E-posta igortzen honi:" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:982 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:990 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1083 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1168 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1287 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1295 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1089 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1174 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1293 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1301 msgid "No suitable formats" msgstr "Ez dago formatu egokirik" @@ -6504,38 +6512,38 @@ msgstr "Huts egin du e-postaz hurrengo liburuak bidaltzerakoan:" msgid "Sent by email:" msgstr "E-postaz igorria:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1042 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1048 msgid "News:" msgstr "Albisteak:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1049 msgid "Attached is the" msgstr "Erantsita doana hau da" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1054 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1060 msgid "Sent news to" msgstr "Bidali albisteak honi:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1084 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1169 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1288 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1090 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1175 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1294 msgid "Auto convert the following books before uploading to the device?" msgstr "" "Bihurtu modu automatikoan hurrengo liburuak irakurgailuan kargatu aurretik?" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1114 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1120 msgid "Sending catalogs to device." msgstr "Katalogoak irakurgailura bidaltzen." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1201 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1207 msgid "Sending news to device." msgstr "Albisteak irakurgailura bidaltzen." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1254 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1260 msgid "Sending books to device." msgstr "Liburuak irakurgailura bidaltzen." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1296 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1302 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." @@ -6544,11 +6552,11 @@ msgstr "" "topatu egin ez delako. Lehenengo eta behin, bihurtu liburua(k) zure " "irakurgailuak onartzen duen formaturen batean." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1360 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1366 msgid "No space on device" msgstr "Lekurik ez irakurgailuan" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1367 msgid "" "

Cannot upload books to device there is no more free space available " msgstr "" @@ -7967,50 +7975,45 @@ msgid "Advanced Search" msgstr "Bilaketa aurreratua" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 -msgid "Find entries that have..." -msgstr "Bilatu hauxe duten sarrerak..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 -msgid "&All these words:" -msgstr "Hitz &hauek guztiak:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 -msgid "This exact &phrase:" -msgstr "Zehatz eta mehatz &esaldi hau:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 -msgid "&One or more of these words:" -msgstr "&Bat edo gehiago hitz hauetatik:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 -msgid "But dont show entries that have..." -msgstr "Baina ez erakutsi honako hauxe daukaten sarrerak..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 -msgid "Any of these &unwanted words:" -msgstr "&nahi-ez-den hitz hauetako bat:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 msgid "What kind of match to use:" msgstr "Zein motatako bat etortze erabili:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 -msgid "Contains: the word or phrase matches anywhere in the metadata" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "" -"Bere baitan: metadatuetan edonon bat egiten duten hitzak edo esaldiak" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +msgid "Equals: the word or phrase must match the entire metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 +msgid "" +"Regular expression: the expression must match anywhere in the metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +msgid "Find entries that have..." +msgstr "Bilatu hauxe duten sarrerak..." + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +msgid "&All these words:" +msgstr "Hitz &hauek guztiak:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +msgid "This exact &phrase:" +msgstr "Zehatz eta mehatz &esaldi hau:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +msgid "&One or more of these words:" +msgstr "&Bat edo gehiago hitz hauetatik:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 -msgid "Equals: the word or phrase must match an entire metadata field" -msgstr "" -"Berdinak: hitzak edo esaldiak metadatu baten eremu osoarekin egin beharko du " -"bat" +msgid "But dont show entries that have..." +msgstr "Baina ez erakutsi honako hauxe daukaten sarrerak..." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 -msgid "" -"Regular expression: the expression must match anywhere in the metadata" -msgstr "" -"Ohiko adierazpena: adierazpenak bat egin beharko du metadatuen edozein " -"tokitan" +msgid "Any of these &unwanted words:" +msgstr "&nahi-ez-den hitz hauetako bat:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 msgid "" @@ -8859,47 +8862,47 @@ msgstr "Ezabatzeko markatuta" msgid "Double click to edit me

" msgstr "Egin ezazu klik birritan editatzeko

" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:147 msgid "Hide column %s" msgstr "Ezkutatu %s zutabea" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 msgid "Sort on %s" msgstr "%s -en arabera sailkatu" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 msgid "Ascending" msgstr "Gorantz" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:156 msgid "Descending" msgstr "Beherantz" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 msgid "Change text alignment for %s" msgstr "Alda ezazu testuaren lerrokatzea %s horretarako" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Left" msgstr "Ezkerretara" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Right" msgstr "Eskuinetara" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:171 msgid "Center" msgstr "Erdian" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:190 msgid "Show column" msgstr "Erakutsi zutabea" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202 msgid "Restore default layout" msgstr "Berrezarri lehenetsitako diseinua" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:743 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -13797,6 +13800,15 @@ msgstr "Ez deskargatu CSS (Cascading Style Sheets) estilo orririk." #~ msgid "Download &cover" #~ msgstr "Deskargatu &liburu-azala" +#~ msgid "Contains: the word or phrase matches anywhere in the metadata" +#~ msgstr "" +#~ "Bere baitan: metadatuetan edonon bat egiten duten hitzak edo esaldiak" + +#~ msgid "Equals: the word or phrase must match an entire metadata field" +#~ msgstr "" +#~ "Berdinak: hitzak edo esaldiak metadatu baten eremu osoarekin egin beharko du " +#~ "bat" + #~ msgid "" #~ "[options]\n" #~ "\n" @@ -13871,6 +13883,12 @@ msgstr "Ez deskargatu CSS (Cascading Style Sheets) estilo orririk." #~ "Sortu modu automatikoan egile-izenaren araberako sailkapena oraingo egile-" #~ "izen honetan oinarriturik" +#~ msgid "" +#~ "Regular expression: the expression must match anywhere in the metadata" +#~ msgstr "" +#~ "Ohiko adierazpena: adierazpenak bat egin beharko du metadatuen edozein " +#~ "tokitan" + #~ msgid "" #~ "Comma separated list of formats to save for each book. By default all " #~ "available books are saved." diff --git a/src/calibre/translations/fr.po b/src/calibre/translations/fr.po index 17542ac491..a93dc4d4b4 100644 --- a/src/calibre/translations/fr.po +++ b/src/calibre/translations/fr.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre 0.4.22\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-11-06 15:45+0000\n" -"PO-Revision-Date: 2010-11-08 22:51+0000\n" -"Last-Translator: sengian \n" +"POT-Creation-Date: 2010-11-12 23:11+0000\n" +"PO-Revision-Date: 2010-11-12 22:36+0000\n" +"Last-Translator: Kovid Goyal \n" "Language-Team: Français \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-10 05:01+0000\n" +"X-Launchpad-Export-Date: 2010-11-13 04:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" "X-Poedit-Bookmarks: 1177,1104,-1,-1,-1,-1,-1,-1,-1,-1\n" "Generated-By: pygettext.py 1.5\n" @@ -33,7 +33,7 @@ msgstr "Ne fait strictement rien" #: /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/sony_cache.py:643 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:650 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 @@ -76,14 +76,14 @@ msgstr "Ne fait strictement rien" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:78 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:119 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:153 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:611 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:817 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:819 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:620 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:826 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:828 #: /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:911 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:916 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:982 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:913 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:918 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:984 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:143 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:150 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:64 @@ -125,8 +125,8 @@ msgstr "Ne fait strictement rien" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:141 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:927 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:936 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1243 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1249 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1252 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 @@ -194,7 +194,7 @@ msgstr "Action d'interface utilisateur" msgid "Preferences" msgstr "Préférences" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:17 +#: /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 " @@ -204,7 +204,7 @@ msgstr "" "contenant tous les fichiers liés. Ce plug-in est lancé chaque fois que vous " "ajoutez un fichier HTML à la bibliothèque." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:53 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:51 msgid "" "Character encoding for the input HTML files. Common choices include: cp1252, " "latin1, iso-8859-1 and utf-8." @@ -212,7 +212,7 @@ msgstr "" "Encodage des caractères pour les fichiers HTML en entrée. Les choix les plus " "communs incluent : cp1252, latin1, iso-8859-1 et utf-8." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:60 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:58 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 " @@ -222,7 +222,7 @@ msgstr "" "le répertoire pmlname_img ou images. Ce plugin est lancé à chaque ajout d'un " "fichier PML dans la bibliothèque." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:94 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:92 msgid "Extract cover from comic files" msgstr "Extraction de la couverture depuis des fichiers de bandes dessinées" @@ -269,44 +269,44 @@ msgstr "Définir les métadonnées des fichiers %s" msgid "Set metadata from %s files" msgstr "Définir les métadonnées à partir des fichiers %s" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:711 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:712 msgid "Look and Feel" msgstr "Apparence" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:713 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:725 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:736 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:747 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:714 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:726 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:737 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:748 msgid "Interface" msgstr "Interface" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:717 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:718 msgid "Adjust the look and feel of the calibre interface to suit your tastes" msgstr "" "Ajuster l'aspect et l'ergonomie de l'interface de Calibre à votre convenance" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:723 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:724 msgid "Behavior" msgstr "Comportement" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:729 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:730 msgid "Change the way calibre behaves" msgstr "Changer le comportement de calibre" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:734 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:206 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:209 msgid "Add your own columns" msgstr "Ajouter vos colonnes personnalisées" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:740 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:741 msgid "Add/remove your own columns to the calibre book list" msgstr "Ajouter/retirer vos propres colonnes dans la liste des livres" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:745 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746 msgid "Customize the toolbar" msgstr "Personnaliser la barre d'outils" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:751 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:752 msgid "" "Customize the toolbars and context menus, changing which actions are " "available in each" @@ -314,60 +314,60 @@ msgstr "" "Personnaliser les barres d'outils et les menus contextuels, en changeant les " "actions disponibles dans ceux-ci" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:757 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:758 msgid "Input Options" msgstr "Options de saisie" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:759 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:770 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:781 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:760 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:771 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:782 msgid "Conversion" msgstr "Conversion" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:763 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:764 msgid "Set conversion options specific to each input format" msgstr "" "Définissez les options de conversion spécfiques pour chaque format d'entrée" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:768 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769 msgid "Common Options" msgstr "Options communes" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:774 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:775 msgid "Set conversion options common to all formats" msgstr "" "Définisser les options de conversion communes à tous les formats d'entrée" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:779 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780 msgid "Output Options" msgstr "Formats de sortie" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:785 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:786 msgid "Set conversion options specific to each output format" msgstr "Définissez des options spécifiques pour chaque format de sortie" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:790 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791 msgid "Adding books" msgstr "Ajouter des livres" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:792 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:804 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:816 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:828 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:793 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:805 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:817 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:829 msgid "Import/Export" msgstr "Import/Export" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:796 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:797 msgid "Control how calibre reads metadata from files when adding books" msgstr "" "Définir comment les métadonnées sont lues par Calibre lors de l'ajout de " "livres" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:802 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:803 msgid "Saving books to disk" msgstr "Sauvegarder les livres sur le disque" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:808 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:809 msgid "" "Control how calibre exports files from its database to disk when using Save " "to disk" @@ -375,34 +375,34 @@ msgstr "" "Contrôle la manière dont Calibre exporte les fichiers de sa base de données " "sur le disque lors des sauvegardes sur disque" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:814 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:815 msgid "Sending books to devices" msgstr "Envoyer les livres aux appareils" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:820 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:821 msgid "Control how calibre transfers files to your ebook reader" msgstr "" "Contrôler la façon dont Calibre exporte les fichiers vers votre lecteur " "d'eBook" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:826 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:827 msgid "Metadata plugboards" msgstr "Tableau de connexions de métadonnées" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:832 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:833 msgid "Change metadata fields before saving/sending" msgstr "Modifier les champs de métadonnées avant de sauvegarder/envoyer" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:837 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838 msgid "Sharing books by email" msgstr "Partager des livres par courriel" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:839 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:851 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:840 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:852 msgid "Sharing" msgstr "Partage" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:843 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:844 msgid "" "Setup sharing of books via email. Can be used for automatic sending of " "downloaded news to your devices" @@ -410,11 +410,11 @@ msgstr "" "Mise en place du partage de livre par courriel. Peu aussi être utilisé pour " "envoyer automatiquement les dernières nouvelles téléchargées à votre appareil" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:849 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:850 msgid "Sharing over the net" msgstr "Partager à travers le réseau" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:855 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:856 msgid "" "Setup the calibre Content Server which will give you access to your calibre " "library from anywhere, on any device, over the internet" @@ -422,34 +422,34 @@ msgstr "" "Installer le serveur de contenu de Calibre qui vous permet d'accéder à votre " "bibliothèque Calibre n'importe où, sur tous vos appareils, via Internet" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:862 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863 msgid "Plugins" msgstr "Plugins" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:864 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:876 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:887 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:865 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:877 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:888 msgid "Advanced" msgstr "Avancé" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:868 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:869 msgid "Add/remove/customize various bits of calibre functionality" msgstr "Ajouter/Retirer/Modifier diverses fonctionalités de Calibre" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:874 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:875 msgid "Tweaks" msgstr "Ajustements" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:880 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:881 msgid "Fine tune how calibre behaves in various contexts" msgstr "" "Affiner la manière dont Calibre se comporte dans différents contextes" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:885 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886 msgid "Miscellaneous" msgstr "Divers" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:891 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:892 msgid "Miscellaneous advanced configuration" msgstr "Diverses configurations avancées" @@ -495,7 +495,7 @@ msgstr "" "vous ne savez rien à propos du document d'entrée." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:59 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:436 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:444 msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "" @@ -506,62 +506,62 @@ msgid "This profile is intended for the SONY PRS 300." msgstr "Ce profil est prévu pour le SONY PRS 300." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:80 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:476 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:484 msgid "This profile is intended for the SONY PRS-900." msgstr "Ce profil est prévu pour le SONY PRS-900." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:88 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:506 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:513 msgid "This profile is intended for the Microsoft Reader." msgstr "Ce profil est prévu pour le lecteur Microsoft." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:99 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:517 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:524 msgid "This profile is intended for the Mobipocket books." msgstr "Ce profil est prévu pour les livres Mobipocket." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:112 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:530 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:537 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "Ce profil est prévu pour le Handlin V3 et ses clones." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:124 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:542 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:549 msgid "This profile is intended for the Hanlin V5 and its clones." msgstr "Ce profil est prévu pour le Hanlin V5 et ses clones." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:134 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:550 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:557 msgid "This profile is intended for the Cybook G3." msgstr "Ce profil est prévu pour le Cybook G3." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:147 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:563 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:570 msgid "This profile is intended for the Cybook Opus." msgstr "Ce profil est prévu pour le Cybook Opus." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:159 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:576 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:583 msgid "This profile is intended for the Amazon Kindle." msgstr "Ce profil est prévu pour le Kindle d'Amazon." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:171 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:617 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:631 msgid "This profile is intended for the Irex Illiad." msgstr "Ce profil est prévu pour l'Iliad Irex." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:183 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:630 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "Ce profil est prévu pour l'IRex Digital Reader 1000." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:196 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 msgid "This profile is intended for the IRex Digital Reader 800." msgstr "Ce profil est prévu pour le lecteur IRex Digital 800." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:208 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 msgid "This profile is intended for the B&N Nook." msgstr "Ce profil est prévu pour le Nook B&N." @@ -579,29 +579,29 @@ msgstr "" "souhaitez générer un document que vous avez l'intention de lire sur un " "ordinateur ou sur une gamme d'appareils." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:273 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:276 msgid "" "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "" "Prévu pour l'iPad ou des appareils semblables avec une résolution de 768x1024" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:427 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:435 msgid "Intended for generic tablet devices, does no resizing of images" msgstr "Prévu pour les tablettes génériques, ne redimensionne pas les images" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:454 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:462 msgid "This profile is intended for the Kobo Reader." msgstr "Ce profil est prévu pour le lecteur Kobo" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:467 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:475 msgid "This profile is intended for the SONY PRS-300." msgstr "Ce profil est prévu pour le SONY PRS-300." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:485 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:493 msgid "This profile is intended for the 5-inch JetBook." msgstr "Ce profil est prévu pour le JetBook de 5 pouces." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:494 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:502 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." @@ -609,11 +609,11 @@ msgstr "" "Ce profil est prévu pour la gamme des SONY PRS (500, 505, 700, etc.) en mode " "paysage. Utile principalement pour les bandes dessinées." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:597 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:609 msgid "This profile is intended for the Amazon Kindle DX." msgstr "Ce profil est prévu pour le Kindle DX d'Amazon." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:686 msgid "This profile is intended for the Sanda Bambook." msgstr "Ce profil est prévu pour le Sanda Bambook." @@ -692,7 +692,7 @@ msgstr "Désactive le plugin nommé" msgid "Communicate with Android phones." msgstr "Communiquer avec les téléphones Android" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:53 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:56 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" @@ -700,7 +700,7 @@ msgstr "" "Liste de répertoires séparés par des virgules utilisée pour envoyer les " "ebooks vers l'appareil. Le premier existant sera utilisé." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:95 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:98 msgid "Communicate with S60 phones." msgstr "Communiquer avec les téléphones S60" @@ -1058,6 +1058,14 @@ msgstr "Le Nook" msgid "Communicate with the Nook eBook reader." msgstr "Communiquer avec le lecteur d'ebook Nook." +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 +msgid "Nook Color" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 +msgid "Communicate with the Nook Color eBook reader." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." msgstr "Communiquer avec le lecteur d'ebook Nuut2." @@ -2502,8 +2510,8 @@ msgstr "Oui" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:605 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:45 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:102 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:65 @@ -2537,8 +2545,8 @@ msgstr "Producteur" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:39 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:206 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:189 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:104 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:79 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:325 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1131 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:178 @@ -2869,7 +2877,7 @@ msgstr "" "à partir de LibraryThing.com\n" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1399 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 msgid "Cover" msgstr "Couverture" @@ -2910,74 +2918,74 @@ msgstr "" msgid "All articles" msgstr "Tous les articles" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:259 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:262 msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "C'est un livre Amazon Topaz. Il ne peut pas être traité." -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1400 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 msgid "Title Page" msgstr "Page de titre" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 #: /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:199 msgid "Table of Contents" msgstr "Table des matières" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 msgid "Index" msgstr "Index" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 msgid "Glossary" msgstr "Glossaire" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 msgid "Acknowledgements" msgstr "Remerciements" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 msgid "Bibliography" msgstr "Bibliographie" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 msgid "Colophon" msgstr "Marque de l'imprimeur" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 msgid "Copyright" msgstr "Copyright" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 msgid "Dedication" msgstr "Dédicace" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 msgid "Epigraph" msgstr "Epigraphe" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 msgid "Foreword" msgstr "Avant-propos" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 msgid "List of Illustrations" msgstr "Liste d'illustrations" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 msgid "List of Tables" msgstr "Liste des tables" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 msgid "Notes" msgstr "Notes" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1416 msgid "Preface" msgstr "Préface" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1417 msgid "Main Text" msgstr "Texte principal" @@ -4064,7 +4072,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:391 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:739 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 msgid "Not allowed" msgstr "Interdit" @@ -4133,7 +4141,7 @@ msgstr "Impossible de copier les livres : " #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:720 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:683 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:685 #: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:189 msgid "Failed" msgstr "Echec" @@ -4892,11 +4900,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:25 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:49 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:403 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:119 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:120 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:121 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:137 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:320 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1117 @@ -4905,10 +4913,10 @@ msgstr "Chemin" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:26 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:123 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:124 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:319 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:24 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:117 @@ -4939,7 +4947,7 @@ msgstr "Cliquer pour ouvrir" msgid "None" msgstr "Aucun" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:404 msgid "Double-click to open Book Details window" msgstr "Double-cliquer pour ouvrir la fenêtre de détails du livre" @@ -5165,6 +5173,19 @@ msgstr "Inclure la section 'Series'" msgid "Tab template for catalog.ui" msgstr "Gabarit d'étiquette pour catalog.ui" +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:25 +msgid "Bold" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:26 +msgid "Italic" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:28 +msgid "Underline" +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 " @@ -5176,11 +5197,11 @@ msgstr "" "(s'ils existent) à la place des valeurs par défaut spécifiées dans les " "préférences." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:70 msgid "Bulk Convert" msgstr "Conversion de masse" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 msgid "Options specific to the output format." msgstr "Options spécifiques pour le format de sortie." @@ -5695,6 +5716,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:185 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:353 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 msgid "&Series:" msgstr "&Séries :" @@ -5882,7 +5904,7 @@ msgid "Options specific to the input format." msgstr "Options spécifiques au format d'entrée." #: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:117 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:53 msgid "Dialog" @@ -6084,8 +6106,8 @@ msgid "Force maximum line length" msgstr "Forcer la longueur de ligne maximale" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:72 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:62 @@ -6399,10 +6421,10 @@ msgstr "Envoi d'un email à" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:982 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:990 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1083 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1168 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1287 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1295 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1089 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1174 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1293 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1301 msgid "No suitable formats" msgstr "Pas de format convenable" @@ -6431,39 +6453,39 @@ msgstr "L'envoi par email des livres suivants a échoué :" msgid "Sent by email:" msgstr "Envoyer par email :" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1042 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1048 msgid "News:" msgstr "News :" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1049 msgid "Attached is the" msgstr "Le fichier attaché est" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1054 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1060 msgid "Sent news to" msgstr "Envoi des News vers" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1084 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1169 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1288 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1090 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1175 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1294 msgid "Auto convert the following books before uploading to the device?" msgstr "" "Convertir automatiquement les livres suivants avant de les télécharger dans " "l'appareil ?" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1114 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1120 msgid "Sending catalogs to device." msgstr "Envoie les catalogues vers l'appareil." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1201 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1207 msgid "Sending news to device." msgstr "Envoi les News vers l'appareil." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1254 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1260 msgid "Sending books to device." msgstr "Envoie les livres dans l'appareil." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1296 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1302 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." @@ -6472,11 +6494,11 @@ msgstr "" "convenable n'a été trouvé. Convertissez avant le(s) livre(s) vers un format " "supporté par votre appareil." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1360 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1366 msgid "No space on device" msgstr "Le lecteur électronique n'a plus d'espace mémoire disponible" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1367 msgid "" "

Cannot upload books to device there is no more free space available " msgstr "" @@ -6534,15 +6556,15 @@ msgstr "" msgid "&Paste from clipboard" msgstr "Co&ller à partir du bloc-notes" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:80 msgid "Fit &cover within view" msgstr "Adapte la &couverture à l'emplacement" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:81 msgid "&Previous" msgstr "&Précédent" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:82 msgid "&Next" msgstr "Suiva&nt" @@ -6712,6 +6734,7 @@ msgid "Set options for converting %s" msgstr "Indiquer les options pour la conversion de %s" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:211 msgid "&Title:" msgstr "&Titre :" @@ -6982,19 +7005,12 @@ msgstr "Livre %d :" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:274 msgid "" "You can destroy your library using this feature. Changes are " -"permanent. There is no undo function. This feature is experimental, and " -"there may be bugs. You are strongly encouraged to back up your library " -"before proceeding.

Search and replace in text fields using character " -"matching or regular expressions. " +"permanent. There is no undo function. You are strongly encouraged to back up " +"your library before proceeding.

Search and replace in text fields using " +"character matching or regular expressions. " msgstr "" -"Vous pouvez détruire votre bibliothèque en utilisant cette option. " -"Les changements sont permanents. Il n'y a pas de fonction pour revenir en " -"arrière. Cette fonction est experimentale, et il peut y avoir des bugs. Vous " -"êtes fortement encouragé à sauvegarder votre bibliothèque avant de " -"continuer.

REchercher et remplacer dans les champs de texte en utilisant " -"une correspondance de caractères ou une expression régulière. " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:282 msgid "" "In character mode, the field is searched for the entered search text. The " "text is replaced by the specified replacement text everywhere it is found in " @@ -7011,7 +7027,7 @@ msgstr "" "n'est pas cochée, le texte correspondra à la fois aux majuscules et aux " "minuscules" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:293 msgid "" "In regular expression mode, the search text is an arbitrary python-" "compatible regular expression. The replacement text can contain " @@ -7038,35 +7054,35 @@ msgstr "" "plus d'informations sur les expressions régulières en python, et en " "particulier la fonction 'sub'." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:436 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:438 msgid "You must specify a destination when source is a composite field" msgstr "" "Vous devez préciser uen destination quand la source est un champ mixte" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:528 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:536 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:631 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:633 msgid "Search/replace invalid" msgstr "Recherche/Remplacement erroné" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:531 msgid "" "Authors cannot be set to the empty string. Book title %s not processed" msgstr "" "La clé auteur ne peut être une chaine vide. Le livre dont le titre est %s " "n'a pas été traité" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:537 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:539 msgid "Title cannot be set to the empty string. Book title %s not processed" msgstr "" "Le titre ne peut être une chaîne vide. Le livre dont le titre est %s n'a pas " "été traité" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:632 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:634 msgid "Search pattern is invalid: %s" msgstr "Motif de recherche erroné : %s" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:669 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:671 msgid "" "Applying changes to %d books.\n" "Phase {0} {1}%%." @@ -7350,8 +7366,8 @@ msgid "Your test:" msgstr "Votre test :" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:401 -msgid "&Search and replace (experimental)" -msgstr "&Rechercher et remplacer (experimental)" +msgid "&Search and replace" +msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:91 msgid "Last modified: %s" @@ -7899,62 +7915,52 @@ msgstr "" msgid "Negate" msgstr "Exclut" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 msgid "Advanced Search" msgstr "Recherche avancée" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:119 -msgid "Find entries that have..." -msgstr "Trouver les entrées qui ont..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:120 -msgid "&All these words:" -msgstr "&Tous ces mots :" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:121 -msgid "This exact &phrase:" -msgstr "Cette &phrase exacte :" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:122 -msgid "&One or more of these words:" -msgstr "&Un ou plus de ces mots :" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:123 -msgid "But dont show entries that have..." -msgstr "Mais ne montre pas les entrées qui ont..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:124 -msgid "Any of these &unwanted words:" -msgstr "A&ucun de ces mots non souhaités :" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 msgid "What kind of match to use:" msgstr "Type de correspondance à utiliser" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:126 -msgid "Contains: the word or phrase matches anywhere in the metadata" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "" -"Contient : le mot ou la phrase peuvent correspondre à n'importe quel élément " -"des métadonnées" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:127 -msgid "Equals: the word or phrase must match an entire metadata field" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +msgid "Equals: the word or phrase must match the entire metadata field" msgstr "" -"Egal : le mot ou la phrase doivent correspondrent à un champ entier de " -"métadonnée" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 msgid "" -"Regular expression: the expression must match anywhere in the metadata" +"Regular expression: the expression must match anywhere in the metadata field" msgstr "" -"Expression régulière : l'expression doit correspondre quelque part dans les " -"métadonnées" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:129 -msgid " " -msgstr " " +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +msgid "Find entries that have..." +msgstr "Trouver les entrées qui ont..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +msgid "&All these words:" +msgstr "&Tous ces mots :" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +msgid "This exact &phrase:" +msgstr "Cette &phrase exacte :" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +msgid "&One or more of these words:" +msgstr "&Un ou plus de ces mots :" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 +msgid "But dont show entries that have..." +msgstr "Mais ne montre pas les entrées qui ont..." + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 +msgid "Any of these &unwanted words:" +msgstr "A&ucun de ces mots non souhaités :" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 msgid "" "See the User Manual for more help" @@ -7962,6 +7968,47 @@ msgstr "" "Consulter le manuel utilisateur pour avoir plus d'informations." +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:210 +msgid "A&dvanced Search" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:212 +msgid "Enter the title." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:213 +msgid "&Author:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 +msgid "Ta&gs:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:216 +msgid "Enter an author's name. Only one author can be used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:217 +msgid "" +"Enter a series name, without an index. Only one series name can be used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:218 +msgid "Enter tags separated by spaces" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:219 +msgid "&Clear" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:220 +msgid "Search only in specific fields:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:221 +msgid "Titl&e/Author/Series ..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/select_formats.py:45 msgid "Choose formats" msgstr "Choisir les formats" @@ -8669,11 +8716,15 @@ msgstr "" "Les livres affichés seront limités à ceux correspondant à la recherche " "sauvegardée sélectionnée" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:170 +msgid "Shift+Ctrl+F" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:173 msgid "Advanced search" msgstr "Recherche avancée" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:178 msgid "" "

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

Words separated by spaces are ANDed" @@ -8682,28 +8733,28 @@ msgstr "" "commentaires, etc...

Les mots séparés par des espaces sont traités " "avec des AND" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:181 msgid "&Go!" msgstr "&Go!" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:187 msgid "Do Quick Search (you can also press the Enter key)" msgstr "Lancer une recherche rapide (vous pouvez aussi appuyer sur Enter)" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:193 msgid "Reset Quick Search" msgstr "Réinitialisation de la recherche rapide" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:205 msgid "Copy current search text (instead of search name)" msgstr "" "Copier le texte de recherche courant (au lieu du nom de la recherche)" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:211 msgid "Save current search under the name shown in the box" msgstr "Sauvegarder la recherche courante avec le nom indiqué dans la boite" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:217 msgid "Delete current saved search" msgstr "Supprimer la recherche sauvegardée actuelle" @@ -8760,47 +8811,47 @@ msgstr "Marqué pour suppression" msgid "Double click to edit me

" msgstr "Double clic pour m' éditer

" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:147 msgid "Hide column %s" msgstr "Cacher la colonne %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 msgid "Sort on %s" msgstr "Trier par %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 msgid "Ascending" msgstr "Ascendant" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:156 msgid "Descending" msgstr "Descendant" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 msgid "Change text alignment for %s" msgstr "Changer l'alignement du texte pour %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Left" msgstr "Gauche" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Right" msgstr "Droite" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:171 msgid "Center" msgstr "Centre" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:190 msgid "Show column" msgstr "Afficher la colonne" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202 msgid "Restore default layout" msgstr "Restorer l'affichage par défaut" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:740 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:743 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -10759,7 +10810,7 @@ msgid "Options to customize the ebook viewer" msgstr "Options pour personnalier l'afficheur d'ebook" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:704 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:708 msgid "Remember last used window size" msgstr "Se souvenir de la dernière taille de fenêtre utilisée" @@ -10937,70 +10988,70 @@ msgstr "Ebooks" msgid "No matches found for: %s" msgstr "Pas de correspondance trouvée pour : %s" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:481 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:485 msgid "Loading flow..." msgstr "Chargement du flux..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:517 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:521 msgid "Laying out %s" msgstr "Aménagement de %s" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:552 msgid "Bookmark #%d" msgstr "Marque-page #%d" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:556 msgid "Add bookmark" msgstr "Ajouter un signet" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:557 msgid "Enter title for bookmark:" msgstr "Entrer un titre pour le signet :" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:563 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:567 msgid "Manage Bookmarks" msgstr "Gérer les Signets" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:600 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:604 msgid "Loading ebook..." msgstr "Charge l'ebook..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:612 msgid "DRM Error" msgstr "Erreur de DRM" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:609 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:613 msgid "

This book is protected by DRM" msgstr "

Ce livre est protégé par DRM" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:613 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:617 msgid "Could not open ebook" msgstr "Impossible d'ouvrir l'ebook" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:691 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:695 msgid "Options to control the ebook viewer" msgstr "Options pour contrôler l'afficheur d'ebook" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:698 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:702 msgid "" "If specified, viewer window will try to come to the front when started." msgstr "" "Si spécifié, la fenêtre de l'afficheur essaiera d'apparaitre au premier plan " "au lancement." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:701 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:705 msgid "" "If specified, viewer window will try to open full screen when started." msgstr "" "Si précisé, la fenêtre de l'afficheur essaiera de s'ouvrir en plein écran au " "démarrage." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:710 msgid "Print javascript alert and console messages to the console" msgstr "" "Afficher les alertes javascript et les messages console dans la console" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:716 msgid "" "%prog [options] file\n" "\n" @@ -15923,6 +15974,9 @@ msgstr "Ne pas télécharger les feuilles de style CSS." #~ "- L'expression '.' ignore tout les tags; ne générant ainsi aucun genre de " #~ "catégories dans le catalogue" +#~ msgid " " +#~ msgstr " " + #~ msgid "Output directory. Defaults to current directory" #~ msgstr "Répertoire de sortie. Par défaut : répertoire courant" @@ -15940,6 +15994,12 @@ msgstr "Ne pas télécharger les feuilles de style CSS." #~ msgstr "" #~ "

Pour l'aide, consulter le Manuel Utilisateur
" +#~ msgid "" +#~ "Regular expression: the expression must match anywhere in the metadata" +#~ msgstr "" +#~ "Expression régulière : l'expression doit correspondre quelque part dans les " +#~ "métadonnées" + #~ msgid "" #~ "If an existing book with a similar title and author is found that does not " #~ "have the format being added, the format is added \n" @@ -16439,6 +16499,9 @@ msgstr "Ne pas télécharger les feuilles de style CSS." #~ msgid "Apply function &after replace:" #~ msgstr "Appliquer la fonction &après remplacement:" +#~ msgid "&Search and replace (experimental)" +#~ msgstr "&Rechercher et remplacer (experimental)" + #~ msgid "Path to a txt file containing a comment." #~ msgstr "Chemin vers un fichier txt contenant un commentaire." @@ -16479,6 +16542,20 @@ msgstr "Ne pas télécharger les feuilles de style CSS." #~ msgid "Run the check" #~ msgstr "Executer la vérification" +#~ msgid "" +#~ "You can destroy your library using this feature. Changes are " +#~ "permanent. There is no undo function. This feature is experimental, and " +#~ "there may be bugs. You are strongly encouraged to back up your library " +#~ "before proceeding.

Search and replace in text fields using character " +#~ "matching or regular expressions. " +#~ msgstr "" +#~ "Vous pouvez détruire votre bibliothèque en utilisant cette option. " +#~ "Les changements sont permanents. Il n'y a pas de fonction pour revenir en " +#~ "arrière. Cette fonction est experimentale, et il peut y avoir des bugs. Vous " +#~ "êtes fortement encouragé à sauvegarder votre bibliothèque avant de " +#~ "continuer.

REchercher et remplacer dans les champs de texte en utilisant " +#~ "une correspondance de caractères ou une expression régulière. " + #~ msgid "Check the library folders for potential problems" #~ msgstr "" #~ "Vérifie les dossiers de la bibliothèque à la recherche de problèmes " @@ -16532,6 +16609,16 @@ msgstr "Ne pas télécharger les feuilles de style CSS." #~ "do to force it to use the ';' that the kindle requires. A third would be to " #~ "specify the language." +#~ msgid "Contains: the word or phrase matches anywhere in the metadata" +#~ msgstr "" +#~ "Contient : le mot ou la phrase peuvent correspondre à n'importe quel élément " +#~ "des métadonnées" + +#~ msgid "Equals: the word or phrase must match an entire metadata field" +#~ msgstr "" +#~ "Egal : le mot ou la phrase doivent correspondrent à un champ entier de " +#~ "métadonnée" + #~ msgid "" #~ "\n" #~ " %prog restore_database [options]\n" diff --git a/src/calibre/translations/it.po b/src/calibre/translations/it.po index 4ca54fc6ac..ed6e43bc88 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-11-10 14:27+0000\n" -"PO-Revision-Date: 2010-11-11 10:09+0000\n" -"Last-Translator: MeltingShell \n" +"POT-Creation-Date: 2010-11-12 23:11+0000\n" +"PO-Revision-Date: 2010-11-12 23:09+0000\n" +"Last-Translator: Kovid Goyal \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-11-12 04:44+0000\n" +"X-Launchpad-Export-Date: 2010-11-13 04:53+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" @@ -34,7 +34,7 @@ msgstr "Non fa assolutamente niente" #: /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/sony_cache.py:643 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:650 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 @@ -77,14 +77,14 @@ msgstr "Non fa assolutamente niente" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:78 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:119 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:153 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:616 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:822 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:824 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:620 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:826 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:828 #: /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:911 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:916 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:982 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:913 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:918 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:984 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:143 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:150 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:64 @@ -126,8 +126,8 @@ msgstr "Non fa assolutamente niente" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:141 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:927 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:936 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1243 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1249 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1252 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 @@ -195,7 +195,7 @@ msgstr "Azioni interfaccia utente" msgid "Preferences" msgstr "Preferenze" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:17 +#: /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 " @@ -205,7 +205,7 @@ msgstr "" "tutti i file collegati. Questo plug-in viene eseguito ogni volta che si " "aggiunge un file HTML alla biblioteca." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:53 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:51 msgid "" "Character encoding for the input HTML files. Common choices include: cp1252, " "latin1, iso-8859-1 and utf-8." @@ -213,7 +213,7 @@ msgstr "" "Codifica dei caratteri nei file HTML in ingresso. Scelte comuni includono: " "cp1252, latin1, iso-8859-1 e utf-8." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:60 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:58 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 " @@ -223,7 +223,7 @@ msgstr "" "nella cartella pmlname_img o in images. Questo plug-in eseguito ogni volta " "che si aggiunge un documento PML alla biblioteca." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:94 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:92 msgid "Extract cover from comic files" msgstr "Estrae le copertine dai file dei fumetti" @@ -270,45 +270,45 @@ msgstr "Imposta i metadati nei file %s" msgid "Set metadata from %s files" msgstr "imposta metadati da %s file" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:711 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:712 msgid "Look and Feel" msgstr "Aspetto" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:713 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:725 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:736 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:747 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:714 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:726 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:737 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:748 msgid "Interface" msgstr "Interfaccia" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:717 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:718 msgid "Adjust the look and feel of the calibre interface to suit your tastes" msgstr "" "Modifica l'aspetto dell'interfaccia di calibre secondo i propri gusti" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:723 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:724 msgid "Behavior" msgstr "Comportamento" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:729 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:730 msgid "Change the way calibre behaves" msgstr "Cambia il comportamento di calibre" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:734 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:208 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:209 msgid "Add your own columns" msgstr "Aggiungi colonne personalizzate" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:740 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:741 msgid "Add/remove your own columns to the calibre book list" msgstr "" "Aggiunge/Rimuove colonne personalizzate dalla lista dei libri di calibre" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:745 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746 msgid "Customize the toolbar" msgstr "Personalizza la barra degli strumenti" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:751 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:752 msgid "" "Customize the toolbars and context menus, changing which actions are " "available in each" @@ -316,59 +316,59 @@ msgstr "" "Personalizza la barra degli strumenti e i menu contestuali, cambiando le " "azioni disponibili in ognuno" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:757 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:758 msgid "Input Options" msgstr "Opzioni di digitazione" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:759 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:770 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:781 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:760 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:771 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:782 msgid "Conversion" msgstr "Conversione" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:763 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:764 msgid "Set conversion options specific to each input format" msgstr "" "Imposta le opzioni di conversione specifiche per ogni formato di input" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:768 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769 msgid "Common Options" msgstr "Opzioni comuni" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:774 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:775 msgid "Set conversion options common to all formats" msgstr "Imposta le opzioni di conversione comuni a tutti i formati" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:779 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780 msgid "Output Options" msgstr "Opzioni di output" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:785 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:786 msgid "Set conversion options specific to each output format" msgstr "" "Imposta le opzioni di conversione specifiche per ogni formato di output" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:790 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791 msgid "Adding books" msgstr "Aggiunta libri" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:792 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:804 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:816 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:828 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:793 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:805 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:817 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:829 msgid "Import/Export" msgstr "Importa/Esporta" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:796 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:797 msgid "Control how calibre reads metadata from files when adding books" msgstr "" "Controlla come calibre legge i metadati dai libri quando vengono aggiunti" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:802 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:803 msgid "Saving books to disk" msgstr "Salvataggio libri su disco" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:808 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:809 msgid "" "Control how calibre exports files from its database to disk when using Save " "to disk" @@ -376,32 +376,32 @@ msgstr "" "Controlla come calibre esporta i file dal suo database al disco quando si " "usa «Salva su disco»" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:814 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:815 msgid "Sending books to devices" msgstr "Invio libri ai dispositivi" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:820 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:821 msgid "Control how calibre transfers files to your ebook reader" msgstr "Controlla come calibre trasferisce i file al lettore di ebook" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:826 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:827 msgid "Metadata plugboards" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:832 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:833 msgid "Change metadata fields before saving/sending" msgstr "Cambiare i campi dei metadati prima di salvare/inviare" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:837 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838 msgid "Sharing books by email" msgstr "Condivisione libri via email" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:839 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:851 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:840 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:852 msgid "Sharing" msgstr "Condivisione" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:843 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:844 msgid "" "Setup sharing of books via email. Can be used for automatic sending of " "downloaded news to your devices" @@ -409,11 +409,11 @@ msgstr "" "Imposta la condivisione dei libri via email. Può essere usato per inviare " "automaticamente le news scaricate ai dispositivi." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:849 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:850 msgid "Sharing over the net" msgstr "Condividi sulla rete" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:855 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:856 msgid "" "Setup the calibre Content Server which will give you access to your calibre " "library from anywhere, on any device, over the internet" @@ -421,34 +421,34 @@ msgstr "" "Imposta il Server di Contenuti calibre che da accesso alla biblioteca di " "calibre da ogni luogo, su ogni dispositivo, su internet" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:862 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863 msgid "Plugins" msgstr "Plugins" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:864 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:876 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:887 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:865 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:877 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:888 msgid "Advanced" msgstr "Avanzate" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:868 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:869 msgid "Add/remove/customize various bits of calibre functionality" msgstr "" "Aggiungi/rimuovi/personalizza varie opzioni delle funzionalità di calibre" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:874 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:875 msgid "Tweaks" msgstr "Ottimizzazioni" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:880 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:881 msgid "Fine tune how calibre behaves in various contexts" msgstr "Modifica in dettaglio come si comporta calibre in vari contesti" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:885 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886 msgid "Miscellaneous" msgstr "Varie" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:891 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:892 msgid "Miscellaneous advanced configuration" msgstr "Configurazione avanzata varia" @@ -493,7 +493,7 @@ msgstr "" "sa nulla sul documento di origine." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:59 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:436 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:444 msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "" @@ -505,62 +505,62 @@ msgid "This profile is intended for the SONY PRS 300." msgstr "Questo profilo è adatto per il Sony PRS 300." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:80 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:476 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:484 msgid "This profile is intended for the SONY PRS-900." msgstr "Questo profilo è adatto per il Sony PRS-900." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:88 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:506 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:513 msgid "This profile is intended for the Microsoft Reader." msgstr "Questo profilo è adatto per il Microsoft Reader." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:99 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:517 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:524 msgid "This profile is intended for the Mobipocket books." msgstr "Questo profilo è adatto per i libri in formato Mobipocket." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:112 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:530 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:537 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "Questo profilo è adatto per l'Hanlin V3 ed i suoi cloni." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:124 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:542 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:549 msgid "This profile is intended for the Hanlin V5 and its clones." msgstr "Questo profilo è adatto per Hanlin V5 e i suoi cloni." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:134 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:550 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:557 msgid "This profile is intended for the Cybook G3." msgstr "Questo profilo è adatto per il Cybook G3." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:147 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:563 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:570 msgid "This profile is intended for the Cybook Opus." msgstr "Questo profilo è adatto per il Cybook Opus." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:159 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:576 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:583 msgid "This profile is intended for the Amazon Kindle." msgstr "Questo profilo è adatto per il Kindle di Amazon." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:171 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:617 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:631 msgid "This profile is intended for the Irex Illiad." msgstr "Questo profilo è adatto per l'Irex di Illiad." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:183 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:630 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "Questo profilo è adatto per l'IRex Digital Reader 1000." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:196 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 msgid "This profile is intended for the IRex Digital Reader 800." msgstr "Questo profilo adatto per l'IRex Digital Reader 800." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:208 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 msgid "This profile is intended for the B&N Nook." msgstr "Questo profilo è adatto per il Nook B&N." @@ -578,31 +578,31 @@ msgstr "" "produrre un documento da poter leggere tramite computer o su vari " "dispositivi." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:273 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:276 msgid "" "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "" "Questo profilo è adatto per l'iPad e dispositivi simili con una risoluzione " "di 768x1024" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:427 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:435 msgid "Intended for generic tablet devices, does no resizing of images" msgstr "" "Pensato per dispositivi tablet generici, non ridimensiona le immagini" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:454 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:462 msgid "This profile is intended for the Kobo Reader." msgstr "Questo profilo è adatto per il Kobo Reader." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:467 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:475 msgid "This profile is intended for the SONY PRS-300." msgstr "Questo profilo è adatto per il Sony PRS-300." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:485 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:493 msgid "This profile is intended for the 5-inch JetBook." msgstr "Questo profilo è adatto per il JetBook da 5 pollici." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:494 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:502 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." @@ -610,11 +610,11 @@ msgstr "" "Questo profilo è adatto per la linea SONY PRS. Il 500/505/700 ecc, in " "modalità panoramica. Utile principalmente per i fumetti." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:597 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:609 msgid "This profile is intended for the Amazon Kindle DX." msgstr "Questo profilo è adatto per il Kindle DX di Amazon." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:686 msgid "This profile is intended for the Sanda Bambook." msgstr "Questo profilo è riservato a Sanda Bambook." @@ -692,7 +692,7 @@ msgstr "Disabilita il plugin nominato" msgid "Communicate with Android phones." msgstr "Comunica con i telefoni Android." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:53 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:56 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" @@ -700,7 +700,7 @@ msgstr "" "Lista delle cartelle separate da virgole dei libri da inviare al " "dispositivo. Verrà usata la prima cartella esistente." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:95 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:98 msgid "Communicate with S60 phones." msgstr "Comunica con i telefoni S60." @@ -1058,6 +1058,14 @@ msgstr "Il lettore Nook" msgid "Communicate with the Nook eBook reader." msgstr "Comunica con il lettore Nook." +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 +msgid "Nook Color" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 +msgid "Communicate with the Nook Color eBook reader." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." msgstr "Comunica con il lettore Nuut2." @@ -2839,7 +2847,7 @@ msgstr "" "con da ISBN da LibraryThing.com\n" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1399 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 msgid "Cover" msgstr "Copertina" @@ -2881,70 +2889,70 @@ msgstr "Tutti gli articoli" msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "Questo è un libro Amazon Topaz. Non può essere elaborato." -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1400 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 msgid "Title Page" msgstr "Pagina iniziale" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 #: /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:199 msgid "Table of Contents" msgstr "Indice" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 msgid "Index" msgstr "Indice analitico" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 msgid "Glossary" msgstr "Glossario" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 msgid "Acknowledgements" msgstr "Ringraziamenti" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 msgid "Bibliography" msgstr "Bibliografia" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 msgid "Colophon" msgstr "Colophon" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 msgid "Copyright" msgstr "Diritti d'autore" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 msgid "Dedication" msgstr "Dedica" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 msgid "Epigraph" msgstr "Epigrafe" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 msgid "Foreword" msgstr "Premessa" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 msgid "List of Illustrations" msgstr "Indice delle figure" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 msgid "List of Tables" msgstr "Indice delle tabelle" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 msgid "Notes" msgstr "Note" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1416 msgid "Preface" msgstr "Prefazione" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1417 msgid "Main Text" msgstr "Corpo del testo" @@ -4026,7 +4034,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:391 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:741 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 msgid "Not allowed" msgstr "Non permesso" @@ -4337,6 +4345,10 @@ msgid "" "second and subsequently selected books will not be deleted or " "changed.

Please confirm you want to proceed." msgstr "" +"I diversi formati del libro e i metadata dei libri selezionati saranno " +"aggiunti al primo libro selezionato (%s). Il codice ISBN non " +"sarà modificato.

I libri successivi non saranno cancellati o " +"modificati.

Conferma per procedere." #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:209 msgid "" @@ -5110,7 +5122,7 @@ msgstr "Grassetto" #: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:26 msgid "Italic" -msgstr "" +msgstr "Corsivo" #: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:27 #: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:28 @@ -5127,11 +5139,11 @@ msgstr "" "salvati in una conversione precedente (se esistente) invece di usare i " "valori predefiniti nelle Preferenze" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:70 msgid "Bulk Convert" msgstr "Conversione in gruppo" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 msgid "Options specific to the output format." msgstr "Opzioni specifiche per i formati di output" @@ -6347,10 +6359,10 @@ msgstr "Spedizione di un messaggio elettronico a" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:982 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:990 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1083 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1168 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1287 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1295 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1089 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1174 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1293 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1301 msgid "No suitable formats" msgstr "Nessun formato adatto" @@ -6379,38 +6391,38 @@ msgstr "Impossibile inviare via email i seguenti libri:" msgid "Sent by email:" msgstr "Inviato per posta elettronica" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1042 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1048 msgid "News:" msgstr "Notizie:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1049 msgid "Attached is the" msgstr "Allegato c'é" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1054 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1060 msgid "Sent news to" msgstr "Notizie inviate a" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1084 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1169 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1288 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1090 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1175 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1294 msgid "Auto convert the following books before uploading to the device?" msgstr "" "Convertire automaticamente i libri seguenti prima di inviarli al dispositivo?" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1114 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1120 msgid "Sending catalogs to device." msgstr "Inviando i cataloghi al dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1201 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1207 msgid "Sending news to device." msgstr "Invio delle notizie al dispositivo." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1254 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1260 msgid "Sending books to device." msgstr "Invio dei libri al dispositivo." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1296 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1302 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." @@ -6419,11 +6431,11 @@ msgstr "" "trovato un formato adeguato. È prima necessario convertire i libri in un " "formato supportato dal dispositivo." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1360 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1366 msgid "No space on device" msgstr "Spazio sul dispositivo insufficiente" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1367 msgid "" "

Cannot upload books to device there is no more free space available " msgstr "" @@ -7081,6 +7093,11 @@ msgid "" "for that series. Checking this box will tell calibre to start numbering\n" "from the value in the box" msgstr "" +"Le serie saranno normalmente renumerate partendo dal numero più alto del " +"database\n" +"per quella serie. Selezionando questa casella permetterai a calibre di " +"iniziare la numerazione\n" +"partendo dal valore presente nel box." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:367 msgid "Remove &format:" @@ -7143,6 +7160,8 @@ msgid "" "Choose whether to use basic text matching or advanced regular expression " "matching" msgstr "" +"Scegli se utilizzare una corrispondenza di testo semplice o una " +"corrispondenza di testo avanzata." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:382 msgid "&Search for:" @@ -7159,6 +7178,9 @@ msgid "" "Check this box if the search string must match exactly upper and lower case. " "Uncheck it if case is to be ignored" msgstr "" +"Seleziona questa casella se la stringa di ricerca deve far corrispondere " +"esattamente i caratteri maiuscoli e minuscoli. De-seleziona per ignorare la " +"corrispondenza." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:385 msgid "Case sensitive" @@ -7231,7 +7253,7 @@ msgstr "Il test:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:401 msgid "&Search and replace" -msgstr "" +msgstr "&Cerca e sostituisce" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:91 msgid "Last modified: %s" @@ -7778,48 +7800,45 @@ msgid "Advanced Search" msgstr "Ricerca avanzata" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 -msgid "Find entries that have..." -msgstr "Trova elementi che hanno..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 -msgid "&All these words:" -msgstr "&Tutte queste parole:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 -msgid "This exact &phrase:" -msgstr "&Questa frase esatta:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 -msgid "&One or more of these words:" -msgstr "&Una o più di queste parole:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 -msgid "But dont show entries that have..." -msgstr "Ma non visualizzare elementi che hanno..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 -msgid "Any of these &unwanted words:" -msgstr "Una di queste parole non richie&ste:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 msgid "What kind of match to use:" msgstr "Tipo di corrispondenza da usare:" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +msgid "Contains: the word or phrase matches anywhere in the metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +msgid "Equals: the word or phrase must match the entire metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 +msgid "" +"Regular expression: the expression must match anywhere in the metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +msgid "Find entries that have..." +msgstr "Trova elementi che hanno..." + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +msgid "&All these words:" +msgstr "&Tutte queste parole:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +msgid "This exact &phrase:" +msgstr "&Questa frase esatta:" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 -msgid "Contains: the word or phrase matches anywhere in the metadata" -msgstr "Contiene: la parola o frase corrispondenti ovunque nei metadati" +msgid "&One or more of these words:" +msgstr "&Una o più di queste parole:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 -msgid "Equals: the word or phrase must match an entire metadata field" -msgstr "" -"Uguale: la parola o frase deve corrispondere esattamente nei metadati" +msgid "But dont show entries that have..." +msgstr "Ma non visualizzare elementi che hanno..." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 -msgid "" -"Regular expression: the expression must match anywhere in the metadata" -msgstr "" -"Espressione regolare: l'espressione deve corrispondere in qualunque punto " -"dei metadati" +msgid "Any of these &unwanted words:" +msgstr "Una di queste parole non richie&ste:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 msgid "" @@ -7839,7 +7858,7 @@ msgstr "Inserisci il titolo" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:213 msgid "&Author:" -msgstr "" +msgstr "&Autore:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 msgid "Ta&gs:" @@ -8577,7 +8596,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:181 msgid "&Go!" -msgstr "" +msgstr "&Vai!" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:187 msgid "Do Quick Search (you can also press the Enter key)" @@ -8619,7 +8638,7 @@ msgstr "Dimensione (MB)" #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:331 msgid "Book %s of %s." -msgstr "" +msgstr "Libro %s di %s." #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:693 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1236 @@ -8652,47 +8671,47 @@ msgstr "Marcato per l'eliminazione" msgid "Double click to edit me

" msgstr "Doppio clic per modificarmi

" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:147 msgid "Hide column %s" msgstr "Nascondi colonna %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 msgid "Sort on %s" msgstr "Ordina per %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 msgid "Ascending" msgstr "Ascendente" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:156 msgid "Descending" msgstr "Discendente" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 msgid "Change text alignment for %s" msgstr "Cambia allineamento del testo per %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Left" msgstr "Sinistra" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Right" msgstr "Destra" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:171 msgid "Center" msgstr "Centrato" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:190 msgid "Show column" msgstr "Mostra colonna" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202 msgid "Restore default layout" msgstr "Ripristina layout perdefinito" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:743 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -10232,11 +10251,15 @@ msgstr "Gestione categorie utente" msgid "" "Changing the authors for several books can take a while. Are you sure?" msgstr "" +"Modificare gli autori di molti libri può durare un tempo abbastanza lungo. " +"Sei sicuro?" #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:456 msgid "" "Changing the metadata for that many books can take a while. Are you sure?" msgstr "" +"Modificare i metadata per tanti libri può durare un tempo abbastanza lungo. " +"Sei sicuro?" #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:512 #: /home/kovid/work/calibre/src/calibre/library/database2.py:320 @@ -15103,6 +15126,13 @@ msgstr "Non scaricare i fogli di stile CSS" #~ "\"una\"), la punteggiatura, maiuscole, ecc. Corrispondenza Autore fa lo " #~ "stesso." +#~ msgid "Contains: the word or phrase matches anywhere in the metadata" +#~ msgstr "Contiene: la parola o frase corrispondenti ovunque nei metadati" + +#~ msgid "Equals: the word or phrase must match an entire metadata field" +#~ msgstr "" +#~ "Uguale: la parola o frase deve corrispondere esattamente nei metadati" + #~ msgid "set in ui.py" #~ msgstr "posta in ui,py" @@ -15303,6 +15333,12 @@ msgstr "Non scaricare i fogli di stile CSS" #~ msgid "Failed to download metadata for the following:" #~ msgstr "Impossibile a scaricare i metadati per i seguenti:" +#~ msgid "" +#~ "Regular expression: the expression must match anywhere in the metadata" +#~ msgstr "" +#~ "Espressione regolare: l'espressione deve corrispondere in qualunque punto " +#~ "dei metadati" + #~ msgid "Connect to iTunes (EXPERIMENTAL)" #~ msgstr "Connetti ad iTunes (SPERIMENTALE)" diff --git a/src/calibre/translations/nl.po b/src/calibre/translations/nl.po index 52aa7600c5..ca95ca48c6 100644 --- a/src/calibre/translations/nl.po +++ b/src/calibre/translations/nl.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2010-11-06 15:45+0000\n" -"PO-Revision-Date: 2010-11-07 18:33+0000\n" -"Last-Translator: Mar2zz \n" +"POT-Creation-Date: 2010-11-12 23:11+0000\n" +"PO-Revision-Date: 2010-11-12 22:31+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-11-08 05:09+0000\n" +"X-Launchpad-Export-Date: 2010-11-13 04:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" "X-Poedit-Country: NETHERLANDS\n" "X-Poedit-Language: Dutch\n" @@ -37,7 +37,7 @@ msgstr "Doet helemaal niets" #: /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/sony_cache.py:643 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:650 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 @@ -80,14 +80,14 @@ msgstr "Doet helemaal niets" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:78 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:119 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:153 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:611 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:817 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:819 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:620 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:826 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:828 #: /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:911 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:916 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:982 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:913 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:918 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:984 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:143 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:150 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:64 @@ -129,8 +129,8 @@ msgstr "Doet helemaal niets" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:141 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:927 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:936 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1243 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1249 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1252 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 @@ -198,7 +198,7 @@ msgstr "Actie gebruikers interface" msgid "Preferences" msgstr "Voorkeuren" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:17 +#: /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 " @@ -208,7 +208,7 @@ msgstr "" "gelinkte bestanden. Deze plug-in wordt elke keer wanneer u een HTML-bestand " "aan de bibliotheek toevoegt uitgevoerd." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:53 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:51 msgid "" "Character encoding for the input HTML files. Common choices include: cp1252, " "latin1, iso-8859-1 and utf-8." @@ -216,7 +216,7 @@ msgstr "" "Karaktercodering voor de invoer HTML-bestanden. Standaard keuzes zijn: " "cp1252, latin1, iso-8859-1 en utf-8." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:60 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:58 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 " @@ -226,7 +226,7 @@ msgstr "" "of images bevat. Deze plug-in wordt steeds uitgevoerd als een PML-bestand " "aan de bibliotheek wordt toegevoegd." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:94 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:92 msgid "Extract cover from comic files" msgstr "Haal de omslag uit bestanden met stripverhalen" @@ -269,44 +269,44 @@ msgstr "Lees metagegevens van eboeken in ZIP-archieven" msgid "Set metadata in %s files" msgstr "Stel metagegevens van %s bestanden in" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:711 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:712 msgid "Look and Feel" msgstr "Uiterlijk en Vormgeving" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:713 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:725 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:736 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:747 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:714 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:726 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:737 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:748 msgid "Interface" msgstr "Interface" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:717 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:718 msgid "Adjust the look and feel of the calibre interface to suit your tastes" msgstr "" "Pas het uiterlijk en gedrag van de calibre interface aan naar je smaak" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:723 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:724 msgid "Behavior" msgstr "Gedrag" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:729 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:730 msgid "Change the way calibre behaves" msgstr "Verander de manier waarop calibre zich gedraagt" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:734 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:206 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:209 msgid "Add your own columns" msgstr "Voeg je eigen kolommen toe" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:740 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:741 msgid "Add/remove your own columns to the calibre book list" msgstr "Voeg/Verwijder je eigen kolommen toe aan de calibre boekenlijst" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:745 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746 msgid "Customize the toolbar" msgstr "Werkbalk aanpassen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:751 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:752 msgid "" "Customize the toolbars and context menus, changing which actions are " "available in each" @@ -314,58 +314,58 @@ msgstr "" "Pas de werkbalken en contextmenu's aan en verander daarmee de beschikbare " "actie's in beide." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:757 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:758 msgid "Input Options" msgstr "Invoeropties" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:759 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:770 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:781 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:760 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:771 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:782 msgid "Conversion" msgstr "Conversie" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:763 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:764 msgid "Set conversion options specific to each input format" msgstr "" "Configureer de conversie-instellingen specifiek voor ieder invoerformaat" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:768 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769 msgid "Common Options" msgstr "Algemene opties" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:774 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:775 msgid "Set conversion options common to all formats" msgstr "Configureer de conversieopties die alle formaten gemeen hebben" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:779 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780 msgid "Output Options" msgstr "Uitvoeropties" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:785 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:786 msgid "Set conversion options specific to each output format" msgstr "Set de conversieopties specifiek voor ieder uitvoerformaat" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:790 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791 msgid "Adding books" msgstr "Boeken toevoegen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:792 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:804 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:816 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:828 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:793 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:805 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:817 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:829 msgid "Import/Export" msgstr "Importeren/Exporteren" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:796 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:797 msgid "Control how calibre reads metadata from files when adding books" msgstr "" "Bepaal hoe calibre metadata uit bestanden leest als boeken worden toegevoegd" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:802 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:803 msgid "Saving books to disk" msgstr "Boeken bewaren op schijf" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:808 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:809 msgid "" "Control how calibre exports files from its database to disk when using Save " "to disk" @@ -373,32 +373,32 @@ msgstr "" "Bepaal hoe calibre bestanden uit zijn database op schijf bewaard als je " "Bewaar op schijf gebruikt" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:814 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:815 msgid "Sending books to devices" msgstr "Stuur boeken naar apparaten" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:820 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:821 msgid "Control how calibre transfers files to your ebook reader" msgstr "Bepaal hoe calibre bestanden naar je ebook reader overplaats" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:826 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:827 msgid "Metadata plugboards" msgstr "Invoegtoepassing voor metagegevens" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:832 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:833 msgid "Change metadata fields before saving/sending" msgstr "Verander de velden met metagegevens voordat het opslaan/versturen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:837 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838 msgid "Sharing books by email" msgstr "Deel boeken via email" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:839 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:851 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:840 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:852 msgid "Sharing" msgstr "Delen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:843 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:844 msgid "" "Setup sharing of books via email. Can be used for automatic sending of " "downloaded news to your devices" @@ -406,11 +406,11 @@ msgstr "" "Configureer het delen van boeken via email. Dit kan gebruikt worden om " "automatisch gedownload nieuws naar je apparaten te sturen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:849 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:850 msgid "Sharing over the net" msgstr "Delen over het net" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:855 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:856 msgid "" "Setup the calibre Content Server which will give you access to your calibre " "library from anywhere, on any device, over the internet" @@ -418,35 +418,35 @@ msgstr "" "Configureer de calibre Content Server, die je toegang tot je calibre " "bibliotheek geeft van overal, op elk apparaat, via het internet" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:862 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863 msgid "Plugins" msgstr "Plugins" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:864 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:876 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:887 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:865 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:877 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:888 msgid "Advanced" msgstr "Geavanceerd" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:868 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:869 msgid "Add/remove/customize various bits of calibre functionality" msgstr "" "Voeg toe/verwijder/customize de verschillende delen van de calibre " "functionaliteit" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:874 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:875 msgid "Tweaks" msgstr "Tweaks" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:880 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:881 msgid "Fine tune how calibre behaves in various contexts" msgstr "Stem af hoe calibre zich gedraagt in bepaalde situaties" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:885 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886 msgid "Miscellaneous" msgstr "Diversen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:891 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:892 msgid "Miscellaneous advanced configuration" msgstr "Diverse geavanceerde instellingen" @@ -492,7 +492,7 @@ msgstr "" "niets over het invoer document weet." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:59 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:436 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:444 msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "" @@ -503,62 +503,62 @@ msgid "This profile is intended for the SONY PRS 300." msgstr "Dit profiel is bedoeld voor de SONY PRS 300." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:80 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:476 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:484 msgid "This profile is intended for the SONY PRS-900." msgstr "Dit profiel is bedoeld voor de SONY PRS-900." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:88 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:506 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:513 msgid "This profile is intended for the Microsoft Reader." msgstr "Dit profiel is bedoeld voor de Microsoft Reader." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:99 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:517 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:524 msgid "This profile is intended for the Mobipocket books." msgstr "Dit profiel is bedoeld voor de Mobipocket boeken." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:112 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:530 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:537 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "Dit profiel is bedoeld voor de Hanlin V3 en zijn afgeleiden." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:124 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:542 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:549 msgid "This profile is intended for the Hanlin V5 and its clones." msgstr "Dit profiel is bedoeld voor de Hanlin V5 en zijn afgeleiden." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:134 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:550 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:557 msgid "This profile is intended for the Cybook G3." msgstr "Dit profiel is bedoeld voor de Cybook G3." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:147 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:563 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:570 msgid "This profile is intended for the Cybook Opus." msgstr "Dit profiel is bedoeld voor de Cybook Opus." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:159 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:576 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:583 msgid "This profile is intended for the Amazon Kindle." msgstr "Dit profiel is bedoeld voor de Amazon Kindle." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:171 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:617 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:631 msgid "This profile is intended for the Irex Illiad." msgstr "Dit profiel is bedoeld voor de Irex Illiad." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:183 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:630 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "Dit profiel is bedoeld voor de IRex Digital Reader 1000." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:196 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 msgid "This profile is intended for the IRex Digital Reader 800." msgstr "Dit profiel is bestemd voor de IRex Digital Reader 800." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:208 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 msgid "This profile is intended for the B&N Nook." msgstr "Dit profiel is bedoeld voor de B&N Nook." @@ -575,30 +575,30 @@ msgstr "" "Dit profiel probeert zinnige instellingen te gebruiken, en is handig om een " "document te maken dat op een computer of meedere apparaten gelezen wordt." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:273 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:276 msgid "" "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "" "Bedoeld voor de iPad en soortgelijke apparaten met een resolutie van 768x1024" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:427 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:435 msgid "Intended for generic tablet devices, does no resizing of images" msgstr "" "Bedoeld voor normale tablets, doet geen aanpassingen aan afbeeldingen." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:454 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:462 msgid "This profile is intended for the Kobo Reader." msgstr "Dit profiel is bedoeld voor de Kobo Reader." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:467 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:475 msgid "This profile is intended for the SONY PRS-300." msgstr "Dit profiel is bedoeld voor de SONY PRS-300" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:485 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:493 msgid "This profile is intended for the 5-inch JetBook." msgstr "Dit profiel is bedoeld voor de 5-inch JetBook." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:494 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:502 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." @@ -606,11 +606,11 @@ msgstr "" "Dit profiel is bedoeld voor de SONY PRS reeks. De 300/600 etc, in " "horizontale schermmodus. Vooral handig voor stripboeken." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:597 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:609 msgid "This profile is intended for the Amazon Kindle DX." msgstr "Dit profiel is bedoeld voor de Amazon Kindle DX." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:686 msgid "This profile is intended for the Sanda Bambook." msgstr "Dit profiel is bedoeld voor het Sanda Bamboek." @@ -690,7 +690,7 @@ msgstr "Deactiveer de genoemde plugin" msgid "Communicate with Android phones." msgstr "Communiceer met Android telefoons." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:53 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:56 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" @@ -698,7 +698,7 @@ msgstr "" "Komma-gescheiden lijst van folders om e-boeken naar toe te sturen op het " "apparaat. De eerste die wordt gevonden zal worden gebruikt." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:95 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:98 msgid "Communicate with S60 phones." msgstr "Communiceert met S60 telefoons" @@ -1055,6 +1055,14 @@ msgstr "De Nook" msgid "Communicate with the Nook eBook reader." msgstr "Communiceer met de Nook eBook lezer." +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 +msgid "Nook Color" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 +msgid "Communicate with the Nook Color eBook reader." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." msgstr "Communiceer met de Nuut2 eBook lezer." @@ -2480,8 +2488,8 @@ msgstr "Ja" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:605 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:45 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:102 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:65 @@ -2515,8 +2523,8 @@ msgstr "Producent" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:39 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:206 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:189 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:104 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:79 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:325 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1131 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:178 @@ -2842,7 +2850,7 @@ msgstr "" "voor het boek aangeduid met ISBN van LibraryThing.com\n" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1399 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 msgid "Cover" msgstr "Omslag" @@ -2881,74 +2889,74 @@ msgstr "" msgid "All articles" msgstr "Alle artikelen" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:259 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:262 msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "Dit is een Amazon Topaz boek. Het kan niet worden verwerkt." -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1400 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 msgid "Title Page" msgstr "Titelpagina" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 #: /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:199 msgid "Table of Contents" msgstr "Inhoudsopgave" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 msgid "Index" msgstr "Index" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 msgid "Glossary" msgstr "Verklarende woordenlijst" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 msgid "Acknowledgements" msgstr "Erkenning" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 msgid "Bibliography" msgstr "Bibliografie" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 msgid "Colophon" msgstr "Colofon" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 msgid "Copyright" msgstr "Auteursrecht" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 msgid "Dedication" msgstr "Opgedragen aan" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 msgid "Epigraph" msgstr "Epigraaf" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 msgid "Foreword" msgstr "Voorwoord" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 msgid "List of Illustrations" msgstr "Lijst met afbeeldingen" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 msgid "List of Tables" msgstr "Lijst met tabellen" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 msgid "Notes" msgstr "Aantekeningen" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1416 msgid "Preface" msgstr "Voorwoord" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1417 msgid "Main Text" msgstr "Hoofd Tekst" @@ -4023,7 +4031,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:391 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:739 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 msgid "Not allowed" msgstr "Niet toegestaan" @@ -4091,7 +4099,7 @@ msgstr "Kan boeken niet kopieren: " #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:720 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:683 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:685 #: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:189 msgid "Failed" msgstr "Mislukt" @@ -4843,11 +4851,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:25 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:49 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:403 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:119 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:120 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:121 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:137 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:320 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1117 @@ -4856,10 +4864,10 @@ msgstr "Pad" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:26 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:123 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:124 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:319 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:24 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:117 @@ -4890,7 +4898,7 @@ msgstr "Klik om te openen" msgid "None" msgstr "Geen" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:404 msgid "Double-click to open Book Details window" msgstr "Dubbelklikken om de boekdetails te zien" @@ -5115,6 +5123,19 @@ msgstr "Voeg 'Series\" gedeelte toe" msgid "Tab template for catalog.ui" msgstr "Tab sjabloon voor catalog.ui" +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:25 +msgid "Bold" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:26 +msgid "Italic" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:28 +msgid "Underline" +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 " @@ -5126,11 +5147,11 @@ msgstr "" "(indien deze bestaan) in plaats van de standaard waarden die zijn opgegeven " "onder de voorkeursinstellingen." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:70 msgid "Bulk Convert" msgstr "Massa conversie" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 msgid "Options specific to the output format." msgstr "Opties specifiek voor het uitvoer formaat." @@ -5645,6 +5666,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:185 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:353 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 msgid "&Series:" msgstr "&Series:" @@ -5830,7 +5852,7 @@ msgid "Options specific to the input format." msgstr "Op[ties specifiek voor het invoer formaat." #: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:117 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:53 msgid "Dialog" @@ -6026,8 +6048,8 @@ msgid "Force maximum line length" msgstr "Forceer maximale regellengte" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:72 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:62 @@ -6340,10 +6362,10 @@ msgstr "Versturen van email naar" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:982 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:990 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1083 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1168 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1287 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1295 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1089 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1174 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1293 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1301 msgid "No suitable formats" msgstr "Geen geschikte formaten" @@ -6371,38 +6393,38 @@ msgstr "De volgende boeken konden niet worden ge-emailed:" msgid "Sent by email:" msgstr "Verstuurd via email:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1042 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1048 msgid "News:" msgstr "Nieuws:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1049 msgid "Attached is the" msgstr "Bijgevoegd is de" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1054 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1060 msgid "Sent news to" msgstr "Nieuws verzonden naar" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1084 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1169 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1288 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1090 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1175 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1294 msgid "Auto convert the following books before uploading to the device?" msgstr "" "Auto-converteer de volgende boeken alvorens ze te uploaden naar het appraat?" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1114 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1120 msgid "Sending catalogs to device." msgstr "Verstuur catalogus naar apparaat." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1201 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1207 msgid "Sending news to device." msgstr "Versturen van nieuws naar apparaat." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1254 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1260 msgid "Sending books to device." msgstr "Boeken worden naar de lezer verzonden." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1296 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1302 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." @@ -6411,11 +6433,11 @@ msgstr "" "er geen geschikte bestandsformaten konden worden gevonden. Converteer " "boek(en) eerst naar een formaat dat word ondersteund door je lezer." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1360 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1366 msgid "No space on device" msgstr "Geen schijfruimte op de lezer." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1367 msgid "" "

Cannot upload books to device there is no more free space available " msgstr "" @@ -6472,15 +6494,15 @@ msgstr "" msgid "&Paste from clipboard" msgstr "&Plak van klembord" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:80 msgid "Fit &cover within view" msgstr "Pas de &omslag in het overzicht" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:81 msgid "&Previous" msgstr "Vo&rige" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:82 msgid "&Next" msgstr "&Volgende" @@ -6649,6 +6671,7 @@ msgid "Set options for converting %s" msgstr "Zet opties voor conversie %s" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:211 msgid "&Title:" msgstr "&Titel:" @@ -6917,18 +6940,12 @@ msgstr "Boek %d:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:274 msgid "" "You can destroy your library using this feature. Changes are " -"permanent. There is no undo function. This feature is experimental, and " -"there may be bugs. You are strongly encouraged to back up your library " -"before proceeding.

Search and replace in text fields using character " -"matching or regular expressions. " +"permanent. There is no undo function. You are strongly encouraged to back up " +"your library before proceeding.

Search and replace in text fields using " +"character matching or regular expressions. " msgstr "" -"Je kunt je bibliotheek met deze functie kapot maken. Veranderingen " -"zijn permanent. Je kunt niet ongedaan maken. Deze functie is experimenteel " -"en er kunnen fouten optreden. Je wordt sterk aangeraden eerst een backup van " -"je bibliotheek te maken voor je verder gaat.

Zoek en vervang in " -"tekstvelden met karaktercombinaties of reguliere expressies. " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:282 msgid "" "In character mode, the field is searched for the entered search text. The " "text is replaced by the specified replacement text everywhere it is found in " @@ -6945,7 +6962,7 @@ msgstr "" "overeenkomen. Als je deze niet kiest dan zal alle tekst, kleine en grote " "letters, overeenkomen." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:293 msgid "" "In regular expression mode, the search text is an arbitrary python-" "compatible regular expression. The replacement text can contain " @@ -6970,30 +6987,30 @@ msgstr "" "informatie van python's reguliere expressies en dan vooral de 'sub' " "(ingebedde) functie." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:436 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:438 msgid "You must specify a destination when source is a composite field" msgstr "Je moet een doel opgeven als de bron een opgemaakt veld is" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:528 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:536 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:631 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:633 msgid "Search/replace invalid" msgstr "Zoek/vervang ongeldig" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:531 msgid "" "Authors cannot be set to the empty string. Book title %s not processed" msgstr "Auteurs kunnen niet opgenomen worden. Boek titel %s niet aangepast." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:537 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:539 msgid "Title cannot be set to the empty string. Book title %s not processed" msgstr "Titel kan niet opgenomen worden. Boek titel %s niet aangepast." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:632 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:634 msgid "Search pattern is invalid: %s" msgstr "Zoekpatroon is ongeldig: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:669 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:671 msgid "" "Applying changes to %d books.\n" "Phase {0} {1}%%." @@ -7270,8 +7287,8 @@ msgid "Your test:" msgstr "Jouw test:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:401 -msgid "&Search and replace (experimental)" -msgstr "Zoek tek&st en vervang (experimenteel)" +msgid "&Search and replace" +msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:91 msgid "Last modified: %s" @@ -7819,60 +7836,52 @@ msgstr "" msgid "Negate" msgstr "omdraaien" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 msgid "Advanced Search" msgstr "Geavanceerde zoekopdracht" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:119 -msgid "Find entries that have..." -msgstr "Zoek inzendingen die..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:120 -msgid "&All these words:" -msgstr "&al deze woorden:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:121 -msgid "This exact &phrase:" -msgstr "Deze exacte &uitdrukking:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:122 -msgid "&One or more of these words:" -msgstr "&Een of meer vam deze woorden:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:123 -msgid "But dont show entries that have..." -msgstr "Maar laat geen inzendingen zien die..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:124 -msgid "Any of these &unwanted words:" -msgstr "Deze &ongewenste woorden bevat:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 msgid "What kind of match to use:" msgstr "Welke vergelijking gebruiken:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:126 -msgid "Contains: the word or phrase matches anywhere in the metadata" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "" -"Bevat: het woord of de uitdrukking komt ergens in de metagegevens voor" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:127 -msgid "Equals: the word or phrase must match an entire metadata field" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +msgid "Equals: the word or phrase must match the entire metadata field" msgstr "" -"Gelijk aan: het woord of de zin komt overeen met een compleet veld in de " -"metagegevens" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 msgid "" -"Regular expression: the expression must match anywhere in the metadata" +"Regular expression: the expression must match anywhere in the metadata field" msgstr "" -"Reguliere expressie: de expressie moet ergens in de metagegevens voorkomen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:129 -msgid " " -msgstr " " +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +msgid "Find entries that have..." +msgstr "Zoek inzendingen die..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +msgid "&All these words:" +msgstr "&al deze woorden:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +msgid "This exact &phrase:" +msgstr "Deze exacte &uitdrukking:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +msgid "&One or more of these words:" +msgstr "&Een of meer vam deze woorden:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 +msgid "But dont show entries that have..." +msgstr "Maar laat geen inzendingen zien die..." + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 +msgid "Any of these &unwanted words:" +msgstr "Deze &ongewenste woorden bevat:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 msgid "" "See the User Manual for more help" @@ -7880,6 +7889,47 @@ msgstr "" "Zie het Gebruikers Handboek voor meer informatie" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:210 +msgid "A&dvanced Search" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:212 +msgid "Enter the title." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:213 +msgid "&Author:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 +msgid "Ta&gs:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:216 +msgid "Enter an author's name. Only one author can be used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:217 +msgid "" +"Enter a series name, without an index. Only one series name can be used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:218 +msgid "Enter tags separated by spaces" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:219 +msgid "&Clear" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:220 +msgid "Search only in specific fields:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:221 +msgid "Titl&e/Author/Series ..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/select_formats.py:45 msgid "Choose formats" msgstr "Kies formaten" @@ -8582,11 +8632,15 @@ msgstr "" "De weergave van boeken zal beperkt worden tot de criteria die aan de " "geselecteerde zoekopdracht voldoen" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:170 +msgid "Shift+Ctrl+F" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:173 msgid "Advanced search" msgstr "Geavanceerde Zoekopdracht" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:178 msgid "" "

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

Words separated by spaces are ANDed" @@ -8594,27 +8648,27 @@ msgstr "" "

Zoek door de boekenlijst gesorteerd op titel, auteur, uitgever, labels, " "commentaar, enz.

Woorden gescheiden door spaties worden samengevoegd" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:181 msgid "&Go!" msgstr "&Ga!" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:187 msgid "Do Quick Search (you can also press the Enter key)" msgstr "Ga snelzoeken (je kunt ook Enter drukken)" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:193 msgid "Reset Quick Search" msgstr "Snelzoeken wissen" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:205 msgid "Copy current search text (instead of search name)" msgstr "Kopieer de huidige zoektekst (in plaats van zoeknaam)" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:211 msgid "Save current search under the name shown in the box" msgstr "Bewaar de huidige zoekopdracht onder de naam getoond in de box" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:217 msgid "Delete current saved search" msgstr "Verwijder de huidige bewaarde zoekopdracht" @@ -8671,47 +8725,47 @@ msgstr "Gemarkeerd voor wissen" msgid "Double click to edit me

" msgstr "Dubbel-klik om me te wijzigen

" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:147 msgid "Hide column %s" msgstr "Verberg kolom %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 msgid "Sort on %s" msgstr "Sorteer op %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 msgid "Ascending" msgstr "Oplopend" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:156 msgid "Descending" msgstr "Aflopend" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 msgid "Change text alignment for %s" msgstr "Verander de uitlijning van de text voor %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Left" msgstr "Links" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Right" msgstr "Rechts" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:171 msgid "Center" msgstr "Midden" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:190 msgid "Show column" msgstr "Geef kolom weer" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202 msgid "Restore default layout" msgstr "Herstel standaard layout" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:740 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:743 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -10634,7 +10688,7 @@ msgid "Options to customize the ebook viewer" msgstr "Opties om de eboek viewer te verpersoonlijken" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:704 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:708 msgid "Remember last used window size" msgstr "onthoudt de laatst gebruikte venster grootte" @@ -10810,69 +10864,69 @@ msgstr "Eboeken" msgid "No matches found for: %s" msgstr "Geen zoekterm gevonden voor: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:481 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:485 msgid "Loading flow..." msgstr "Bezig met het laden van de omslagbrowser..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:517 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:521 msgid "Laying out %s" msgstr "Opbaren %s" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:552 msgid "Bookmark #%d" msgstr "Bladwijzer #%d" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:556 msgid "Add bookmark" msgstr "Bladwijzer toevoegen" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:557 msgid "Enter title for bookmark:" msgstr "Geef titel voor bladwijzer" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:563 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:567 msgid "Manage Bookmarks" msgstr "Beheer Bladwijzers" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:600 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:604 msgid "Loading ebook..." msgstr "Eboek wordt geladen..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:612 msgid "DRM Error" msgstr "DRM foutmelding" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:609 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:613 msgid "

This book is protected by DRM" msgstr "

Dit boek wordt beschermd door DRM" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:613 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:617 msgid "Could not open ebook" msgstr "EBoek kan niet worden geopend" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:691 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:695 msgid "Options to control the ebook viewer" msgstr "Opties voor de eboek viewer" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:698 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:702 msgid "" "If specified, viewer window will try to come to the front when started." msgstr "" "Indien gespecificeerd, dan zal het viewer venster proberen naar voren te " "komen na het opstarten." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:701 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:705 msgid "" "If specified, viewer window will try to open full screen when started." msgstr "" "Als dit is opgegeven zal het leesvenster proberen om volledig scherm te " "openen." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:710 msgid "Print javascript alert and console messages to the console" msgstr "Print javascript waarschuwingen en console berichten op de console" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:716 msgid "" "%prog [options] file\n" "\n" @@ -14795,6 +14849,9 @@ msgstr "Download geen CSS stylesheets" #~ msgid "Tags to exclude as genres (regex):" #~ msgstr "Labels te vermeiden als genres (reguliere expressie):" +#~ msgid " " +#~ msgstr " " + #~ msgid "Communicate with the Teclast K3 reader." #~ msgstr "Communicatie met Telecast K3 Reader" @@ -15015,6 +15072,20 @@ msgstr "Download geen CSS stylesheets" #~ "Geen metagegevens gevonden, probeer een andere titel en auteur of een ander " #~ "ISBN nummer." +#~ msgid "Contains: the word or phrase matches anywhere in the metadata" +#~ msgstr "" +#~ "Bevat: het woord of de uitdrukking komt ergens in de metagegevens voor" + +#~ msgid "" +#~ "Regular expression: the expression must match anywhere in the metadata" +#~ msgstr "" +#~ "Reguliere expressie: de expressie moet ergens in de metagegevens voorkomen" + +#~ msgid "Equals: the word or phrase must match an entire metadata field" +#~ msgstr "" +#~ "Gelijk aan: het woord of de zin komt overeen met een compleet veld in de " +#~ "metagegevens" + #~ msgid "Preserve all collections even if not in library metadata." #~ msgstr "" #~ "Onthoud alle collecties zelfs als deze zich niet in de metagegevens van de " @@ -15090,3 +15161,19 @@ msgstr "Download geen CSS stylesheets" #~ msgid "Toolbars/Context menus" #~ msgstr "Knoppenbalken/Context menu's" + +#~ msgid "" +#~ "You can destroy your library using this feature. Changes are " +#~ "permanent. There is no undo function. This feature is experimental, and " +#~ "there may be bugs. You are strongly encouraged to back up your library " +#~ "before proceeding.

Search and replace in text fields using character " +#~ "matching or regular expressions. " +#~ msgstr "" +#~ "Je kunt je bibliotheek met deze functie kapot maken. Veranderingen " +#~ "zijn permanent. Je kunt niet ongedaan maken. Deze functie is experimenteel " +#~ "en er kunnen fouten optreden. Je wordt sterk aangeraden eerst een backup van " +#~ "je bibliotheek te maken voor je verder gaat.

Zoek en vervang in " +#~ "tekstvelden met karaktercombinaties of reguliere expressies. " + +#~ msgid "&Search and replace (experimental)" +#~ msgstr "Zoek tek&st en vervang (experimenteel)" diff --git a/src/calibre/translations/pl.po b/src/calibre/translations/pl.po index ed88f7be29..222c189949 100644 --- a/src/calibre/translations/pl.po +++ b/src/calibre/translations/pl.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2010-11-06 15:45+0000\n" -"PO-Revision-Date: 2010-11-07 14:27+0000\n" +"POT-Creation-Date: 2010-11-12 23:11+0000\n" +"PO-Revision-Date: 2010-11-12 22:43+0000\n" "Last-Translator: B.J. Stobiecki \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-11-08 05:10+0000\n" +"X-Launchpad-Export-Date: 2010-11-13 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -31,7 +31,7 @@ msgstr "Ta opcja zupełnie nic nie zmienia" #: /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/sony_cache.py:643 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:650 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 @@ -74,14 +74,14 @@ msgstr "Ta opcja zupełnie nic nie zmienia" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:78 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:119 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:153 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:611 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:817 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:819 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:620 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:826 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:828 #: /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:911 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:916 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:982 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:913 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:918 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:984 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:143 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:150 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:64 @@ -123,8 +123,8 @@ msgstr "Ta opcja zupełnie nic nie zmienia" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:141 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:927 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:936 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1243 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1249 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1252 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 @@ -192,7 +192,7 @@ msgstr "Akcja interfejsu użytkownika." msgid "Preferences" msgstr "Preferencje" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:17 +#: /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 " @@ -202,7 +202,7 @@ msgstr "" "zawierający wszystkie podlinkowane pliki. Ta wtyczka jest uruchamiana za " "każdym razem, gdy dodasz plik HTML do biblioteki." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:53 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:51 msgid "" "Character encoding for the input HTML files. Common choices include: cp1252, " "latin1, iso-8859-1 and utf-8." @@ -210,7 +210,7 @@ msgstr "" "Kodowanie znaków dla źródłowych plików HTML. Popularne wybory to: cp1252, " "latin1, iso-8859-1 i utf-8." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:60 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:58 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 " @@ -220,7 +220,7 @@ msgstr "" "pmlname_img lub images. Plugin ten jest uruchamiany przy każdym dodaniu " "pliku PML do biblioteki." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:94 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:92 msgid "Extract cover from comic files" msgstr "Wyodrębnij okładki z plików komiksów" @@ -267,43 +267,43 @@ msgstr "Ustaw metadane w %s plikach" msgid "Set metadata from %s files" msgstr "Pobierz metadane z %s plików" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:711 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:712 msgid "Look and Feel" msgstr "Wygląd" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:713 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:725 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:736 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:747 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:714 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:726 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:737 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:748 msgid "Interface" msgstr "Interfejs" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:717 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:718 msgid "Adjust the look and feel of the calibre interface to suit your tastes" msgstr "Dostosowanie wyglądu interfejsu Calibre do indywidualnych upodobań" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:723 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:724 msgid "Behavior" msgstr "Działanie" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:729 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:730 msgid "Change the way calibre behaves" msgstr "Zmień zachowanie programu" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:734 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:206 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:209 msgid "Add your own columns" msgstr "Dodaj własne kolumny" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:740 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:741 msgid "Add/remove your own columns to the calibre book list" msgstr "Dodaj/usuń swoje kolumny do/z listy książek" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:745 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746 msgid "Customize the toolbar" msgstr "Dopasuj pasek narzędziowy" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:751 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:752 msgid "" "Customize the toolbars and context menus, changing which actions are " "available in each" @@ -311,129 +311,129 @@ msgstr "" "Dopasuj paski narzędzi i menu kontekstowe, zmieniając czynności, jakie są im " "przypisane" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:757 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:758 msgid "Input Options" msgstr "Opcje wejścia" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:759 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:770 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:781 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:760 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:771 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:782 msgid "Conversion" msgstr "Konwersja" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:763 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:764 msgid "Set conversion options specific to each input format" msgstr "Zmień ustawienia konwersji specyficzne dla każdego formatu" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:768 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769 msgid "Common Options" msgstr "Opcje wspólne" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:774 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:775 msgid "Set conversion options common to all formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:779 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780 msgid "Output Options" msgstr "Opce Wyjściowe" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:785 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:786 msgid "Set conversion options specific to each output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:790 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791 msgid "Adding books" msgstr "Dodawanie książek" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:792 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:804 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:816 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:828 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:793 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:805 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:817 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:829 msgid "Import/Export" msgstr "Importuj/Eksportuj" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:796 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:797 msgid "Control how calibre reads metadata from files when adding books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:802 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:803 msgid "Saving books to disk" msgstr "Zapisuje książki na dysku" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:808 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:809 msgid "" "Control how calibre exports files from its database to disk when using Save " "to disk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:814 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:815 msgid "Sending books to devices" msgstr "Przesyłanie książek na urządzenie" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:820 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:821 msgid "Control how calibre transfers files to your ebook reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:826 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:827 msgid "Metadata plugboards" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:832 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:833 msgid "Change metadata fields before saving/sending" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:837 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838 msgid "Sharing books by email" msgstr "Dzielenie się książkami poprzez email" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:839 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:851 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:840 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:852 msgid "Sharing" msgstr "Udostępnianie" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:843 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:844 msgid "" "Setup sharing of books via email. Can be used for automatic sending of " "downloaded news to your devices" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:849 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:850 msgid "Sharing over the net" msgstr "Współdzielenie poprzez sieć" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:855 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:856 msgid "" "Setup the calibre Content Server which will give you access to your calibre " "library from anywhere, on any device, over the internet" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:862 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863 msgid "Plugins" msgstr "Wtyczki" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:864 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:876 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:887 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:865 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:877 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:888 msgid "Advanced" msgstr "Zaawansowane" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:868 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:869 msgid "Add/remove/customize various bits of calibre functionality" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:874 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:875 msgid "Tweaks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:880 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:881 msgid "Fine tune how calibre behaves in various contexts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:885 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886 msgid "Miscellaneous" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:891 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:892 msgid "Miscellaneous advanced configuration" msgstr "" @@ -479,7 +479,7 @@ msgstr "" "jeśli nie wiesz nic o dokumencie wejściowym." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:59 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:436 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:444 msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "" @@ -491,63 +491,63 @@ msgid "This profile is intended for the SONY PRS 300." msgstr "Ten profil przeznaczony jest dla urządzenia SONY PRS-300." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:80 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:476 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:484 msgid "This profile is intended for the SONY PRS-900." msgstr "Ten profil przeznaczony jest dla urządzenia SONY PRS-900." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:88 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:506 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:513 msgid "This profile is intended for the Microsoft Reader." msgstr "Ten profil przeznaczony jest dla programu Microsoft Reader." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:99 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:517 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:524 msgid "This profile is intended for the Mobipocket books." msgstr "Ten profil przeznaczony jest dla urządzeń Mobipocket." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:112 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:530 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:537 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "Ten profil przeznaczony jest dla urządzenia Hanlin V3 i jego klonów." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:124 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:542 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:549 msgid "This profile is intended for the Hanlin V5 and its clones." msgstr "Ten profil przeznaczony jest dla urządzenia Hanlin V5 i jego klonów." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:134 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:550 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:557 msgid "This profile is intended for the Cybook G3." msgstr "Ten profil przeznaczony jest dla urządzenia Cybook G3." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:147 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:563 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:570 msgid "This profile is intended for the Cybook Opus." msgstr "Ten profil przeznaczony jest dla urządzenia Cybook Opus." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:159 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:576 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:583 msgid "This profile is intended for the Amazon Kindle." msgstr "Ten profil przeznaczony jest dla urządzenia Amazon Kindle." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:171 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:617 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:631 msgid "This profile is intended for the Irex Illiad." msgstr "Ten profil przeznaczony jest dla urządzenia Irex Illiad." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:183 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:630 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "" "Ten profil przeznaczony jest dla urządzenia IRex Digital Reader 1000." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:196 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 msgid "This profile is intended for the IRex Digital Reader 800." msgstr "Ten profil przeznaczony jest dla urządzenia IRex Digital Reader 800." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:208 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 msgid "This profile is intended for the B&N Nook." msgstr "Ten profil przeznaczony jest dla urządzenia B&N Nook." @@ -565,29 +565,29 @@ msgstr "" "jeśli chcesz stworzyć dokument przeznaczony do odczytu na komputerze lub " "większej liczbie urządzeń." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:273 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:276 msgid "" "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "" "Przeznaczone dla iPada i podobnych urządzeń z rozdzielczością 768x1024" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:427 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:435 msgid "Intended for generic tablet devices, does no resizing of images" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:454 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:462 msgid "This profile is intended for the Kobo Reader." msgstr "Ten profil przeznaczony jest dla urządzenia Kobo Reader." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:467 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:475 msgid "This profile is intended for the SONY PRS-300." msgstr "Ten profil przeznaczony jest dla urządzenia SONY PRS-300." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:485 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:493 msgid "This profile is intended for the 5-inch JetBook." msgstr "Ten profil przeznaczony jest dla 5 calowego urządzenia JetBook." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:494 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:502 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." @@ -595,11 +595,11 @@ msgstr "" "Ten profil przeznaczony jest dla urządzeń z linii SONY PRS w trybie " "panoramicznym. Np. 500/505/700 itd. Głównie użyteczny przy komiksach." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:597 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:609 msgid "This profile is intended for the Amazon Kindle DX." msgstr "Ten profil przeznaczony jest dla urządzenia Amazon Kindle DX." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:686 msgid "This profile is intended for the Sanda Bambook." msgstr "" @@ -676,7 +676,7 @@ msgstr "Wyłącz wtyczkę" msgid "Communicate with Android phones." msgstr "Umożliwia komunikację z telefonami z Androidem." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:53 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:56 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" @@ -684,7 +684,7 @@ msgstr "" "Oddzielona przecinkami lista katalogów na urządzeniu, do których mają być " "wysyłane książki. Zostanie użyty pierwszy istniejący katalog." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:95 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:98 msgid "Communicate with S60 phones." msgstr "Umożliwia komunikację z telefonami S60." @@ -1034,6 +1034,14 @@ msgstr "Nook" msgid "Communicate with the Nook eBook reader." msgstr "Umożliwia komunikację z czytnikiem książek Nook." +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 +msgid "Nook Color" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 +msgid "Communicate with the Nook Color eBook reader." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." msgstr "Umożliwia komunikację z czytnikiem książek Nuut2." @@ -2354,8 +2362,8 @@ msgstr "Tak" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:605 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:45 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:102 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:65 @@ -2389,8 +2397,8 @@ msgstr "Producent" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:39 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:206 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:189 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:104 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:79 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:325 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1131 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:178 @@ -2680,7 +2688,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1399 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 msgid "Cover" msgstr "Okładka" @@ -2717,75 +2725,75 @@ msgstr "" msgid "All articles" msgstr "Wszystkie artykuły" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:259 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:262 msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "" "To jest książka z czytnika Amazon Topaz. Nie może ona zostać przetworzona." -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1400 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 msgid "Title Page" msgstr "Strona tytułowa" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 #: /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:199 msgid "Table of Contents" msgstr "Spis treści" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 msgid "Index" msgstr "Spis" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 msgid "Glossary" msgstr "Słowniczek" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 msgid "Acknowledgements" msgstr "Podziękowania" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 msgid "Bibliography" msgstr "Bibliografia" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 msgid "Colophon" msgstr "Kolofon" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 msgid "Copyright" msgstr "Prawa autorskie" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 msgid "Dedication" msgstr "Dedykacja" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 msgid "Epigraph" msgstr "Epigraf" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 msgid "Foreword" msgstr "Przedsłowie" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 msgid "List of Illustrations" msgstr "Lista ilustracji" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 msgid "List of Tables" msgstr "Lista tabel" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 msgid "Notes" msgstr "Notatki" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1416 msgid "Preface" msgstr "Wstęp" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1417 msgid "Main Text" msgstr "Tekst główny" @@ -3755,7 +3763,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:391 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:739 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 msgid "Not allowed" msgstr "Niedozwolone" @@ -3822,7 +3830,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:720 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:683 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:685 #: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:189 msgid "Failed" msgstr "Nie udało się" @@ -4541,11 +4549,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:25 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:49 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:403 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:119 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:120 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:121 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:137 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:320 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1117 @@ -4554,10 +4562,10 @@ msgstr "Ścieżka" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:26 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:123 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:124 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:319 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:24 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:117 @@ -4588,7 +4596,7 @@ msgstr "Kliknij, aby otworzyć" msgid "None" msgstr "Brak" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:404 msgid "Double-click to open Book Details window" msgstr "" @@ -4801,6 +4809,19 @@ msgstr "" msgid "Tab template for catalog.ui" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:25 +msgid "Bold" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:26 +msgid "Italic" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:28 +msgid "Underline" +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 " @@ -4808,11 +4829,11 @@ msgid "" "specified in the Preferences" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:70 msgid "Bulk Convert" msgstr "Masowa konwersja" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 msgid "Options specific to the output format." msgstr "Opcje specyficzne dla formatu wyjściowego." @@ -5299,6 +5320,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:185 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:353 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 msgid "&Series:" msgstr "&Cykl:" @@ -5485,7 +5507,7 @@ msgid "Options specific to the input format." msgstr "Opcje dotyczące formatu źródłowego." #: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:117 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:53 msgid "Dialog" @@ -5676,8 +5698,8 @@ msgid "Force maximum line length" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:72 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:62 @@ -5983,10 +6005,10 @@ msgstr "Wysyłanie wiadomości do" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:982 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:990 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1083 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1168 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1287 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1295 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1089 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1174 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1293 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1301 msgid "No suitable formats" msgstr "Brak odpowiednich formatów" @@ -6015,49 +6037,49 @@ msgstr "Przesłanie następujących książek poprzez email nie powiodło się:" msgid "Sent by email:" msgstr "Preślij poprzez email:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1042 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1048 msgid "News:" msgstr "Aktualności:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1049 msgid "Attached is the" msgstr "Załączony jest" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1054 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1060 msgid "Sent news to" msgstr "Wysyłaj aktualności do" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1084 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1169 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1288 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1090 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1175 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1294 msgid "Auto convert the following books before uploading to the device?" msgstr "" "Dokonać automatycznej konwersji następujących książek przed przesłaniem ich " "na urządzenie?" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1114 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1120 msgid "Sending catalogs to device." msgstr "Trwa wysyłanie katalogów do urządzenia" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1201 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1207 msgid "Sending news to device." msgstr "Przesyłanie aktualności na urządzenie." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1254 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1260 msgid "Sending books to device." msgstr "Wysyłanie książek do urządzenia." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1296 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1302 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:1360 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1366 msgid "No space on device" msgstr "Brak miejsca na urządzeniu" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1367 msgid "" "

Cannot upload books to device there is no more free space available " msgstr "" @@ -6109,15 +6131,15 @@ msgstr "" msgid "&Paste from clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:80 msgid "Fit &cover within view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:81 msgid "&Previous" msgstr "&Poprzednia" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:82 msgid "&Next" msgstr "&Następna" @@ -6281,6 +6303,7 @@ msgid "Set options for converting %s" msgstr "Ustaw opcje dla konwersji %s" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:211 msgid "&Title:" msgstr "&Tytuł:" @@ -6542,13 +6565,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:274 msgid "" "You can destroy your library using this feature. Changes are " -"permanent. There is no undo function. This feature is experimental, and " -"there may be bugs. You are strongly encouraged to back up your library " -"before proceeding.

Search and replace in text fields using character " -"matching or regular expressions. " +"permanent. There is no undo function. You are strongly encouraged to back up " +"your library before proceeding.

Search and replace in text fields using " +"character matching or regular expressions. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:282 msgid "" "In character mode, the field is searched for the entered search text. The " "text is replaced by the specified replacement text everywhere it is found in " @@ -6558,7 +6580,7 @@ msgid "" "text will match both upper- and lower-case letters" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:293 msgid "" "In regular expression mode, the search text is an arbitrary python-" "compatible regular expression. The replacement text can contain " @@ -6573,30 +6595,30 @@ msgid "" "function." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:436 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:438 msgid "You must specify a destination when source is a composite field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:528 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:536 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:631 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:633 msgid "Search/replace invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:531 msgid "" "Authors cannot be set to the empty string. Book title %s not processed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:537 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:539 msgid "Title cannot be set to the empty string. Book title %s not processed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:632 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:634 msgid "Search pattern is invalid: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:669 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:671 msgid "" "Applying changes to %d books.\n" "Phase {0} {1}%%." @@ -6837,7 +6859,7 @@ msgid "Your test:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:401 -msgid "&Search and replace (experimental)" +msgid "&Search and replace" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:91 @@ -7365,58 +7387,52 @@ msgstr "" msgid "Negate" msgstr "Zaneguj" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 msgid "Advanced Search" msgstr "Wyszukiwanie zaawansowane" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:119 -msgid "Find entries that have..." -msgstr "Znajdź wpisy zawierające..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:120 -msgid "&All these words:" -msgstr "&Wszystkie te słowa:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:121 -msgid "This exact &phrase:" -msgstr "Dokładnie tę &frazę:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:122 -msgid "&One or more of these words:" -msgstr "&Jedno lub więcej z tych słów:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:123 -msgid "But dont show entries that have..." -msgstr "Ale nie pokazuj wpisów zawierających..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:124 -msgid "Any of these &unwanted words:" -msgstr "Którekolwiek z &niechcianych słów:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 msgid "What kind of match to use:" msgstr "Jaki rodzaj porównywania ma być używany:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:126 -msgid "Contains: the word or phrase matches anywhere in the metadata" -msgstr "Zawieranie: słowo lub fraza występuje gdziekolwiek w metadanych" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:127 -msgid "Equals: the word or phrase must match an entire metadata field" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "" -"Równość: słowo lub fraza musi w całości pasować do wpisu w metadanych" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +msgid "Equals: the word or phrase must match the entire metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 msgid "" -"Regular expression: the expression must match anywhere in the metadata" +"Regular expression: the expression must match anywhere in the metadata field" msgstr "" -"Wyrażenie regularne: wyrażenie musi pasować gdziekolwiek w metadanych" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:129 -msgid " " -msgstr " " +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +msgid "Find entries that have..." +msgstr "Znajdź wpisy zawierające..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +msgid "&All these words:" +msgstr "&Wszystkie te słowa:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +msgid "This exact &phrase:" +msgstr "Dokładnie tę &frazę:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +msgid "&One or more of these words:" +msgstr "&Jedno lub więcej z tych słów:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 +msgid "But dont show entries that have..." +msgstr "Ale nie pokazuj wpisów zawierających..." + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 +msgid "Any of these &unwanted words:" +msgstr "Którekolwiek z &niechcianych słów:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 msgid "" "See the User Manual for more help" @@ -7424,6 +7440,47 @@ msgstr "" "Zerknij do Podręcznika Użytkownika, aby uzyskać więcej informacji" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:210 +msgid "A&dvanced Search" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:212 +msgid "Enter the title." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:213 +msgid "&Author:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 +msgid "Ta&gs:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:216 +msgid "Enter an author's name. Only one author can be used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:217 +msgid "" +"Enter a series name, without an index. Only one series name can be used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:218 +msgid "Enter tags separated by spaces" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:219 +msgid "&Clear" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:220 +msgid "Search only in specific fields:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:221 +msgid "Titl&e/Author/Series ..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/select_formats.py:45 msgid "Choose formats" msgstr "Wybierz formaty" @@ -8080,37 +8137,41 @@ msgstr "" "Wyświetlane książki będą zawężone do pozycji z wybranego zapisanego " "wyszukania" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:170 +msgid "Shift+Ctrl+F" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:173 msgid "Advanced search" msgstr "Wyszukiwanie zaawansowane" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:178 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/layout.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:181 msgid "&Go!" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:187 msgid "Do Quick Search (you can also press the Enter key)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:193 msgid "Reset Quick Search" msgstr "Wyczyść pasek wyszukiwania" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:205 msgid "Copy current search text (instead of search name)" msgstr "Skopiuj aktualny tekst wyszukiwania (zamiast nazwy wyszukiwania)" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:211 msgid "Save current search under the name shown in the box" msgstr "Zapisz aktualne wyszukanie pod nazwą pokazaną w polu" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:217 msgid "Delete current saved search" msgstr "Usuń aktualne zapisane wyszukanie" @@ -8167,47 +8228,47 @@ msgstr "Oznaczone do usunięcia" msgid "Double click to edit me

" msgstr "Kliknij dwa razy, aby rozpocząć edycję

" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:147 msgid "Hide column %s" msgstr "Ukryj kolumnę %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 msgid "Sort on %s" msgstr "Posortuj po kolumnie %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 msgid "Ascending" msgstr "Rosnąco" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:156 msgid "Descending" msgstr "Malejąco" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 msgid "Change text alignment for %s" msgstr "Zmień wyrównanie tekstu dla %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Left" msgstr "Do lewej" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Right" msgstr "Do prawej" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:171 msgid "Center" msgstr "Wyśrodkuj" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:190 msgid "Show column" msgstr "Pokaż kolumnę" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202 msgid "Restore default layout" msgstr "Przywróć domyślny układ" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:740 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:743 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -10012,7 +10073,7 @@ msgid "Options to customize the ebook viewer" msgstr "Opcje odpowiedzialne za personalizacje przeglądarki książek" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:704 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:708 msgid "Remember last used window size" msgstr "Zapamiętaj ostatnio użyty rozmiar okienka" @@ -10188,65 +10249,65 @@ msgstr "E-booki" msgid "No matches found for: %s" msgstr "Nie znalezniono wyników dla: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:481 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:485 msgid "Loading flow..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:517 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:521 msgid "Laying out %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:552 msgid "Bookmark #%d" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:556 msgid "Add bookmark" msgstr "Dodaj zakładkę" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:557 msgid "Enter title for bookmark:" msgstr "Dodaj tytuł zakładki" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:563 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:567 msgid "Manage Bookmarks" msgstr "Zarządzaj zakładkami" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:600 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:604 msgid "Loading ebook..." msgstr "Ładowanie książki..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:612 msgid "DRM Error" msgstr "Błąd DRM" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:609 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:613 msgid "

This book is protected by DRM" msgstr "

Ta książka jest chroniona przez DRM" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:613 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:617 msgid "Could not open ebook" msgstr "Nie można otworzyć książki" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:691 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:695 msgid "Options to control the ebook viewer" msgstr "Opcje odpowiadające za kontolę nad przeglądarką książek" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:698 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:702 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:701 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:705 msgid "" "If specified, viewer window will try to open full screen when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:710 msgid "Print javascript alert and console messages to the console" msgstr "Wyświetlaj uwagi javascript'u i widomości konsolowe w konsoli" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:716 msgid "" "%prog [options] file\n" "\n" @@ -13382,6 +13443,9 @@ msgstr "Nie pobieraj arkuszy styli CSS." #~ msgid "calibre can send your books to you (or your reader) by email" #~ msgstr "calibre może wysłać książki do Ciebie (lub czytelnika) przez e-mail" +#~ msgid " " +#~ msgstr " " + #~ msgid "

For help see the: User Manual
" #~ msgstr "" #~ "

Aby uzyskać pomoc otwórz: Podręcznik Uzytkownika
" @@ -13423,6 +13487,18 @@ msgstr "Nie pobieraj arkuszy styli CSS." #~ msgid "Sending to &device" #~ msgstr "Przesyłanie na &urządzenie" +#~ msgid "Contains: the word or phrase matches anywhere in the metadata" +#~ msgstr "Zawieranie: słowo lub fraza występuje gdziekolwiek w metadanych" + +#~ msgid "Equals: the word or phrase must match an entire metadata field" +#~ msgstr "" +#~ "Równość: słowo lub fraza musi w całości pasować do wpisu w metadanych" + +#~ msgid "" +#~ "Regular expression: the expression must match anywhere in the metadata" +#~ msgstr "" +#~ "Wyrażenie regularne: wyrażenie musi pasować gdziekolwiek w metadanych" + #~ msgid "Configure calibre" #~ msgstr "Konfiguruj calibre" diff --git a/src/calibre/translations/ru.po b/src/calibre/translations/ru.po index 05bb3c5307..39b69ad874 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-11-06 15:45+0000\n" -"PO-Revision-Date: 2010-11-08 14:28+0000\n" -"Last-Translator: RedFox \n" +"POT-Creation-Date: 2010-11-12 23:11+0000\n" +"PO-Revision-Date: 2010-11-12 22:07+0000\n" +"Last-Translator: Kovid Goyal \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-11-09 04:47+0000\n" +"X-Launchpad-Export-Date: 2010-11-13 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" "X-Poedit-Country: RUSSIAN FEDERATION\n" "X-Poedit-Language: Russian\n" @@ -35,7 +35,7 @@ msgstr "Ничего не делает" #: /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/sony_cache.py:643 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:650 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 @@ -78,14 +78,14 @@ msgstr "Ничего не делает" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:78 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:119 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:153 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:611 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:817 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:819 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:620 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:826 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:828 #: /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:911 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:916 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:982 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:913 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:918 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:984 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:143 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:150 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:64 @@ -127,8 +127,8 @@ msgstr "Ничего не делает" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:141 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:927 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:936 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1243 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1249 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1252 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 @@ -196,7 +196,7 @@ msgstr "Действие Пользовательского Интерфейса msgid "Preferences" msgstr "Параметры" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:17 +#: /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 " @@ -206,7 +206,7 @@ msgstr "" "содержащий все связанные файлы. Этот модуль запускается каждый раз, когда вы " "добавляете HTML файл в библиотеку." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:53 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:51 msgid "" "Character encoding for the input HTML files. Common choices include: cp1252, " "latin1, iso-8859-1 and utf-8." @@ -214,7 +214,7 @@ msgstr "" "Кодировка для входящих HTML файлов. Наиболее популярные: cp1251, latin1, iso-" "8859-1 и utf-8." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:60 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:58 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 " @@ -224,7 +224,7 @@ msgstr "" "pmlname_img либо images. Этот плагин запускается каждый раз когда в " "библиотеку добавляется PML-файл." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:94 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:92 msgid "Extract cover from comic files" msgstr "Извлечь обложку из файлов комикса" @@ -271,43 +271,43 @@ msgstr "Внести метаданные в файлы %s" msgid "Set metadata from %s files" msgstr "Внести метаданные из файлов %s" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:711 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:712 msgid "Look and Feel" msgstr "Оформление" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:713 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:725 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:736 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:747 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:714 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:726 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:737 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:748 msgid "Interface" msgstr "Интерфейс" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:717 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:718 msgid "Adjust the look and feel of the calibre interface to suit your tastes" msgstr "Настройте внешний вид calibre по-своему вкусу" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:723 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:724 msgid "Behavior" msgstr "Поведение" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:729 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:730 msgid "Change the way calibre behaves" msgstr "Настройка поведения calibre" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:734 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:206 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:209 msgid "Add your own columns" msgstr "Добавьте свои столбцы" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:740 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:741 msgid "Add/remove your own columns to the calibre book list" msgstr "Добавьте/удалите ваши собственные столбцы в список книг Calibre" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:745 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746 msgid "Customize the toolbar" msgstr "Настройка панели инструментов" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:751 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:752 msgid "" "Customize the toolbars and context menus, changing which actions are " "available in each" @@ -315,59 +315,59 @@ msgstr "" "Настройте панель инструментов и контекстное меню, выбрав то, какие действия " "будут доступны для того и другого." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:757 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:758 msgid "Input Options" msgstr "Настройки ввода" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:759 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:770 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:781 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:760 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:771 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:782 msgid "Conversion" msgstr "Конвертация" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:763 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:764 msgid "Set conversion options specific to each input format" msgstr "Задайте параметры конвертации, характерные для каждого формата ввода" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:768 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769 msgid "Common Options" msgstr "Общие настройки" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:774 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:775 msgid "Set conversion options common to all formats" msgstr "Установка общих для всех форматов параметров конвертации" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:779 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780 msgid "Output Options" msgstr "Настройки вывода" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:785 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:786 msgid "Set conversion options specific to each output format" msgstr "" "Задайте параметры конвертации, характерные для каждого формата вывода" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:790 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791 msgid "Adding books" msgstr "Добавление книг" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:792 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:804 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:816 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:828 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:793 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:805 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:817 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:829 msgid "Import/Export" msgstr "Импорт/Экспорт" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:796 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:797 msgid "Control how calibre reads metadata from files when adding books" msgstr "" "Управление тем, как Calibre считывает метаданные из файлов при добавлении " "книг" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:802 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:803 msgid "Saving books to disk" msgstr "Запись книг на диск" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:808 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:809 msgid "" "Control how calibre exports files from its database to disk when using Save " "to disk" @@ -375,32 +375,32 @@ msgstr "" "Управление тем, как Calibre экспортирует файлы из своей базы данных на диск " "при использовании записи на диск" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:814 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:815 msgid "Sending books to devices" msgstr "Передача книг на устройства" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:820 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:821 msgid "Control how calibre transfers files to your ebook reader" msgstr "Контроль передачи книжек на устройство" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:826 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:827 msgid "Metadata plugboards" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:832 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:833 msgid "Change metadata fields before saving/sending" msgstr "Изменять поля метаданных до сохранения/отправки" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:837 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838 msgid "Sharing books by email" msgstr "Отправить книжку по e-mail" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:839 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:851 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:840 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:852 msgid "Sharing" msgstr "Общий доступ к файлам" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:843 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:844 msgid "" "Setup sharing of books via email. Can be used for automatic sending of " "downloaded news to your devices" @@ -408,11 +408,11 @@ msgstr "" "Настройка рассылки книг по e-mail. Может быть использована для " "автоматической доставки загруженных новостных лент на устройство" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:849 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:850 msgid "Sharing over the net" msgstr "Сетевой доступ" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:855 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:856 msgid "" "Setup the calibre Content Server which will give you access to your calibre " "library from anywhere, on any device, over the internet" @@ -420,33 +420,33 @@ msgstr "" "Настройка http-сервера calibre, предоставляющего доступ к библиотеке с " "любого устройства, подключенного к сети интернет" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:862 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863 msgid "Plugins" msgstr "Модули" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:864 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:876 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:887 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:865 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:877 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:888 msgid "Advanced" msgstr "Расширенный" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:868 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:869 msgid "Add/remove/customize various bits of calibre functionality" msgstr "Добавить/удалить/изменить различные части функциональности calibre" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:874 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:875 msgid "Tweaks" msgstr "Расширенные настройки" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:880 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:881 msgid "Fine tune how calibre behaves in various contexts" msgstr "Тонкая настройка поведения calibre при различных контекстах" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:885 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886 msgid "Miscellaneous" msgstr "Разное" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:891 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:892 msgid "Miscellaneous advanced configuration" msgstr "Различная продвинутая конфигурация" @@ -491,7 +491,7 @@ msgstr "" "полезен, если вы ничего не знаете о входном документе." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:59 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:436 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:444 msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "Профиль для для линейки моделей SONY PRS. 500/505/600/700 и других" @@ -501,62 +501,62 @@ msgid "This profile is intended for the SONY PRS 300." msgstr "Профиль для SONY PRS 300." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:80 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:476 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:484 msgid "This profile is intended for the SONY PRS-900." msgstr "Профиль для SONY PRS 900." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:88 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:506 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:513 msgid "This profile is intended for the Microsoft Reader." msgstr "Профиль для Microsoft Reader." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:99 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:517 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:524 msgid "This profile is intended for the Mobipocket books." msgstr "Профиль для книг Mobipocket" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:112 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:530 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:537 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "Профиль для Hanlin V3 и её клонов." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:124 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:542 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:549 msgid "This profile is intended for the Hanlin V5 and its clones." msgstr "Профиль для Hanlin V5 и её клонов." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:134 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:550 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:557 msgid "This profile is intended for the Cybook G3." msgstr "Профиль для Cybook G3." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:147 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:563 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:570 msgid "This profile is intended for the Cybook Opus." msgstr "Профиль для Cybook Opus." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:159 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:576 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:583 msgid "This profile is intended for the Amazon Kindle." msgstr "Профиль для Amazon Kindle." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:171 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:617 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:631 msgid "This profile is intended for the Irex Illiad." msgstr "Профиль для iRex Illiad." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:183 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:630 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "Профиль для iRex Digital Reader 1000." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:196 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 msgid "This profile is intended for the IRex Digital Reader 800." msgstr "Профиль для iRex Digital Reader 800." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:208 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 msgid "This profile is intended for the B&N Nook." msgstr "Профиль для B&N Nook." @@ -574,29 +574,29 @@ msgstr "" "полезным, если вы хотите подготовить документ, предназначенный для чтения на " "компьютере или на нескольких различных устройствах." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:273 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:276 msgid "" "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "" "Предназначено для iPad и аналогичных устройств с разрешением 768x1024" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:427 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:435 msgid "Intended for generic tablet devices, does no resizing of images" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:454 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:462 msgid "This profile is intended for the Kobo Reader." msgstr "Профиль для Kobo Reader." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:467 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:475 msgid "This profile is intended for the SONY PRS-300." msgstr "Профиль для SONY PRS-300" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:485 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:493 msgid "This profile is intended for the 5-inch JetBook." msgstr "Профиль для 5-дюймовой JetBook." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:494 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:502 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." @@ -604,11 +604,11 @@ msgstr "" "Профиль для линейки SONY PRS: 500/505/700 - в ландшафтном режиме. Полезен " "для комиксов." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:597 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:609 msgid "This profile is intended for the Amazon Kindle DX." msgstr "Профиль для Amazon Kindle DX." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:686 msgid "This profile is intended for the Sanda Bambook." msgstr "Этот профиль предназначен для Sanda Bambook." @@ -683,7 +683,7 @@ msgstr "Отключить указанный плагин" msgid "Communicate with Android phones." msgstr "Соединиться с Android." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:53 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:56 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" @@ -691,7 +691,7 @@ msgstr "" "Разделённый запятаями список директории для отправки e-books на это " "устройство. Будет использовано первое в списке устройство" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:95 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:98 msgid "Communicate with S60 phones." msgstr "Соединиться с телефоном S60" @@ -1044,6 +1044,14 @@ msgstr "The Nook" msgid "Communicate with the Nook eBook reader." msgstr "Соединиться с Nook" +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 +msgid "Nook Color" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 +msgid "Communicate with the Nook Color eBook reader." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." msgstr "Соединиться с Nuut2." @@ -2425,8 +2433,8 @@ msgstr "Да" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:605 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:45 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:102 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:65 @@ -2460,8 +2468,8 @@ msgstr "Спонсор" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:39 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:206 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:189 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:104 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:79 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:325 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1131 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:178 @@ -2780,7 +2788,7 @@ msgstr "" "LibraryThing.com\n" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1399 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 msgid "Cover" msgstr "Обложка" @@ -2817,74 +2825,74 @@ msgstr "Тег маркировки книги с личными докумен msgid "All articles" msgstr "Все статьи" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:259 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:262 msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "Это книга Amazon Topaz. Она не может быть прочитана." -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1400 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 msgid "Title Page" msgstr "Титульная страница" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 #: /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:199 msgid "Table of Contents" msgstr "Содержание" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 msgid "Index" msgstr "Индекс" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 msgid "Glossary" msgstr "Глоссарий" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 msgid "Acknowledgements" msgstr "Подтверждения" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 msgid "Bibliography" msgstr "Библиография" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 msgid "Colophon" msgstr "эмблема издательства" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 msgid "Copyright" msgstr "Копирайт" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 msgid "Dedication" msgstr "Посвящение" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 msgid "Epigraph" msgstr "Эпиграф" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 msgid "Foreword" msgstr "Предисловие" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 msgid "List of Illustrations" msgstr "Список иллюстраций" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 msgid "List of Tables" msgstr "Оглавление" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 msgid "Notes" msgstr "Заметки" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1416 msgid "Preface" msgstr "Введение" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1417 msgid "Main Text" msgstr "Основной текст" @@ -3920,7 +3928,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:391 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:739 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 msgid "Not allowed" msgstr "Запрещено" @@ -3987,7 +3995,7 @@ msgstr "Невозможно скопировать книги: " #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:720 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:683 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:685 #: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:189 msgid "Failed" msgstr "Неудалось" @@ -4719,11 +4727,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:25 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:49 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:403 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:119 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:120 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:121 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:137 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:320 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1117 @@ -4732,10 +4740,10 @@ msgstr "Путь" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:26 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:123 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:124 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:319 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:24 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:117 @@ -4766,7 +4774,7 @@ msgstr "Щелкните, чтобы открыть" msgid "None" msgstr "Ничего" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:404 msgid "Double-click to open Book Details window" msgstr "" @@ -4988,6 +4996,19 @@ msgstr "Включая секцию 'Серии'" msgid "Tab template for catalog.ui" msgstr "Шаблон вкладки для catalog.ui" +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:25 +msgid "Bold" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:26 +msgid "Italic" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:28 +msgid "Underline" +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 " @@ -4998,11 +5019,11 @@ msgstr "" "сохраненные во время предыдущей конвертиции (если таковые есть) вместо " "значений по умолчанию указанных в основном окне настроек." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:70 msgid "Bulk Convert" msgstr "Массовое конвертирование" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 msgid "Options specific to the output format." msgstr "Параметры для определенного формата вывода." @@ -5503,6 +5524,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:185 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:353 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 msgid "&Series:" msgstr "Серия:" @@ -5690,7 +5712,7 @@ msgid "Options specific to the input format." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:117 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:53 msgid "Dialog" @@ -5879,8 +5901,8 @@ msgid "Force maximum line length" msgstr "Ограничить максимальную длину строки" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:72 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:62 @@ -6193,10 +6215,10 @@ msgstr "Отправка электронной почты" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:982 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:990 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1083 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1168 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1287 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1295 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1089 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1174 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1293 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1301 msgid "No suitable formats" msgstr "Нет подходящего формата" @@ -6221,37 +6243,37 @@ msgstr "Не отправлена электронная почта со сле msgid "Sent by email:" msgstr "Отправлена электронная почта:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1042 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1048 msgid "News:" msgstr "Новости:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1049 msgid "Attached is the" msgstr "Прикреплено" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1054 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1060 msgid "Sent news to" msgstr "Отослать новости" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1084 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1169 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1288 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1090 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1175 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1294 msgid "Auto convert the following books before uploading to the device?" msgstr "Автоматически конвертировать книги до загрузки в устройство?" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1114 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1120 msgid "Sending catalogs to device." msgstr "Отправляем каталоги в устройство." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1201 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1207 msgid "Sending news to device." msgstr "Отправляются новости на устройство." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1254 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1260 msgid "Sending books to device." msgstr "Отправка книги в устройство" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1296 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1302 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." @@ -6260,11 +6282,11 @@ msgstr "" "формата. Переконвертируйте книгу(и) в формат поддерживаемый вашим " "устройством." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1360 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1366 msgid "No space on device" msgstr "Нет места на устройстве" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1367 msgid "" "

Cannot upload books to device there is no more free space available " msgstr "" @@ -6316,15 +6338,15 @@ msgstr "" msgid "&Paste from clipboard" msgstr "Вставить из буфера обмена" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:80 msgid "Fit &cover within view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:81 msgid "&Previous" msgstr "&Предыдущий" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:82 msgid "&Next" msgstr "&Следующий" @@ -6489,6 +6511,7 @@ msgid "Set options for converting %s" msgstr "Установить опции конвертации %s" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:211 msgid "&Title:" msgstr "&Название:" @@ -6743,13 +6766,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:274 msgid "" "You can destroy your library using this feature. Changes are " -"permanent. There is no undo function. This feature is experimental, and " -"there may be bugs. You are strongly encouraged to back up your library " -"before proceeding.

Search and replace in text fields using character " -"matching or regular expressions. " +"permanent. There is no undo function. You are strongly encouraged to back up " +"your library before proceeding.

Search and replace in text fields using " +"character matching or regular expressions. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:282 msgid "" "In character mode, the field is searched for the entered search text. The " "text is replaced by the specified replacement text everywhere it is found in " @@ -6759,7 +6781,7 @@ msgid "" "text will match both upper- and lower-case letters" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:293 msgid "" "In regular expression mode, the search text is an arbitrary python-" "compatible regular expression. The replacement text can contain " @@ -6774,30 +6796,30 @@ msgid "" "function." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:436 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:438 msgid "You must specify a destination when source is a composite field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:528 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:536 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:631 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:633 msgid "Search/replace invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:531 msgid "" "Authors cannot be set to the empty string. Book title %s not processed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:537 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:539 msgid "Title cannot be set to the empty string. Book title %s not processed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:632 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:634 msgid "Search pattern is invalid: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:669 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:671 msgid "" "Applying changes to %d books.\n" "Phase {0} {1}%%." @@ -7040,7 +7062,7 @@ msgid "Your test:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:401 -msgid "&Search and replace (experimental)" +msgid "&Search and replace" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:91 @@ -7558,56 +7580,52 @@ msgstr "" msgid "Negate" msgstr "Исключить" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 msgid "Advanced Search" msgstr "Расширенный поиск" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:119 -msgid "Find entries that have..." -msgstr "Ищется введеное значение..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:120 -msgid "&All these words:" -msgstr "Все эти слова:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:121 -msgid "This exact &phrase:" -msgstr "Требуется фраза:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:122 -msgid "&One or more of these words:" -msgstr "Одно или более из слов:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:123 -msgid "But dont show entries that have..." -msgstr "Но не показывать введеные данные..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:124 -msgid "Any of these &unwanted words:" -msgstr "Любые из этих найденных слов:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 msgid "What kind of match to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:126 -msgid "Contains: the word or phrase matches anywhere in the metadata" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:127 -msgid "Equals: the word or phrase must match an entire metadata field" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +msgid "Equals: the word or phrase must match the entire metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 msgid "" -"Regular expression: the expression must match anywhere in the metadata" +"Regular expression: the expression must match anywhere in the metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:129 -msgid " " -msgstr " " +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +msgid "Find entries that have..." +msgstr "Ищется введеное значение..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +msgid "&All these words:" +msgstr "Все эти слова:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +msgid "This exact &phrase:" +msgstr "Требуется фраза:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +msgid "&One or more of these words:" +msgstr "Одно или более из слов:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 +msgid "But dont show entries that have..." +msgstr "Но не показывать введеные данные..." + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 +msgid "Any of these &unwanted words:" +msgstr "Любые из этих найденных слов:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 msgid "" "See the User Manual for more help" @@ -7615,6 +7633,47 @@ msgstr "" "Смотри Пользовательский мануал для помощи" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:210 +msgid "A&dvanced Search" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:212 +msgid "Enter the title." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:213 +msgid "&Author:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 +msgid "Ta&gs:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:216 +msgid "Enter an author's name. Only one author can be used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:217 +msgid "" +"Enter a series name, without an index. Only one series name can be used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:218 +msgid "Enter tags separated by spaces" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:219 +msgid "&Clear" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:220 +msgid "Search only in specific fields:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:221 +msgid "Titl&e/Author/Series ..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/select_formats.py:45 msgid "Choose formats" msgstr "Выберите форматы" @@ -8275,37 +8334,41 @@ msgid "" "Books display will be restricted to those matching the selected saved search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:170 +msgid "Shift+Ctrl+F" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:173 msgid "Advanced search" msgstr "Расширенный поиск" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:178 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/layout.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:181 msgid "&Go!" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:187 msgid "Do Quick Search (you can also press the Enter key)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:193 msgid "Reset Quick Search" msgstr "Сброс быстрого поиска" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:205 msgid "Copy current search text (instead of search name)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:211 msgid "Save current search under the name shown in the box" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:217 msgid "Delete current saved search" msgstr "" @@ -8362,47 +8425,47 @@ msgstr "" msgid "Double click to edit me

" msgstr "Дважды кликните по редактировать

" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:147 msgid "Hide column %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 msgid "Sort on %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 msgid "Ascending" msgstr "Возрастание" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:156 msgid "Descending" msgstr "Убывание" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 msgid "Change text alignment for %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:171 msgid "Center" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:190 msgid "Show column" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202 msgid "Restore default layout" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:740 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:743 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -10209,7 +10272,7 @@ msgid "Options to customize the ebook viewer" msgstr "Опции настроек ebook вьювера" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:704 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:708 msgid "Remember last used window size" msgstr "" @@ -10383,66 +10446,66 @@ msgstr "Электронная книга" msgid "No matches found for: %s" msgstr "Нет соответствий для: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:481 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:485 msgid "Loading flow..." msgstr "Загрузить поток..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:517 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:521 msgid "Laying out %s" msgstr "Разметка %s" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:552 msgid "Bookmark #%d" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:556 msgid "Add bookmark" msgstr "Добавить закладку" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:557 msgid "Enter title for bookmark:" msgstr "Введите название закладки" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:563 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:567 msgid "Manage Bookmarks" msgstr "Управление закладками" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:600 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:604 msgid "Loading ebook..." msgstr "Загружается электронная книга..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:612 msgid "DRM Error" msgstr "Ошибка DRM" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:609 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:613 msgid "

This book is protected by DRM" msgstr "

Книга защищена DRM" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:613 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:617 msgid "Could not open ebook" msgstr "Не могу открыть электронную книгу" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:691 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:695 msgid "Options to control the ebook viewer" msgstr "Опции управления ebook вьювером" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:698 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:702 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:701 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:705 msgid "" "If specified, viewer window will try to open full screen when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:710 msgid "Print javascript alert and console messages to the console" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:716 msgid "" "%prog [options] file\n" "\n" @@ -14749,6 +14812,9 @@ msgstr "Не скачивать файлы стилей CSS." #~ msgid "Communicate with the Sony PRS-600/700/900 eBook reader." #~ msgstr "Соединяться с Sony PRS-600/700/900" +#~ msgid " " +#~ msgstr " " + #~ msgid "" #~ "\n" #~ "

The database of books on the reader is corrupted. Try the " diff --git a/src/calibre/translations/sl.po b/src/calibre/translations/sl.po index 5d2ef297d6..0100b5da54 100644 --- a/src/calibre/translations/sl.po +++ b/src/calibre/translations/sl.po @@ -6,14 +6,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre 0.4.17\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-11-06 15:45+0000\n" -"PO-Revision-Date: 2010-11-06 13:35+0000\n" +"POT-Creation-Date: 2010-11-12 23:11+0000\n" +"PO-Revision-Date: 2010-11-12 22:19+0000\n" "Last-Translator: Martin Srebotnjak \n" "Language-Team: sl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-07 04:46+0000\n" +"X-Launchpad-Export-Date: 2010-11-13 04:54+0000\n" "X-Generator: Launchpad (build Unknown)\n" "Generated-By: pygettext.py 1.5\n" @@ -31,7 +31,7 @@ msgstr "Ne stori ničesar" #: /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/sony_cache.py:643 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:650 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 @@ -74,14 +74,14 @@ msgstr "Ne stori ničesar" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:78 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:119 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:153 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:611 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:817 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:819 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:620 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:826 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:828 #: /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:911 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:916 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:982 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:913 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:918 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:984 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:143 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:150 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:64 @@ -123,8 +123,8 @@ msgstr "Ne stori ničesar" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:141 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:927 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:936 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1243 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1249 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1252 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 @@ -192,14 +192,14 @@ msgstr "Dejanje uporabniškega vmesnika" msgid "Preferences" msgstr "Nastavitve" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:17 +#: /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 " "library." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:53 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:51 msgid "" "Character encoding for the input HTML files. Common choices include: cp1252, " "latin1, iso-8859-1 and utf-8." @@ -207,14 +207,14 @@ msgstr "" "Kodiranje znakov za vhodne datoteke HTML. Najpogostejše izbire: cp1250, " "latin2, iso-8859-2 in utf-8." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:60 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:58 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:94 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:92 msgid "Extract cover from comic files" msgstr "Pridobi naslovno stran iz stripa" @@ -261,171 +261,171 @@ msgstr "" msgid "Set metadata from %s files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:711 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:712 msgid "Look and Feel" msgstr "Videz in občutek" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:713 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:725 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:736 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:747 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:714 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:726 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:737 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:748 msgid "Interface" msgstr "Vmesnik" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:717 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:718 msgid "Adjust the look and feel of the calibre interface to suit your tastes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:723 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:724 msgid "Behavior" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:729 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:730 msgid "Change the way calibre behaves" msgstr "Spremenite odzivanje programa calibre" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:734 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:206 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:209 msgid "Add your own columns" msgstr "Dodajte lastne stolpce" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:740 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:741 msgid "Add/remove your own columns to the calibre book list" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:745 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746 msgid "Customize the toolbar" msgstr "Prikroji orodno vrstico" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:751 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:752 msgid "" "Customize the toolbars and context menus, changing which actions are " "available in each" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:757 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:758 msgid "Input Options" msgstr "Možnosti vnosa" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:759 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:770 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:781 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:760 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:771 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:782 msgid "Conversion" msgstr "Pretvorba" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:763 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:764 msgid "Set conversion options specific to each input format" msgstr "Določite možnosti pretvorbe za posamezne zapise" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:768 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769 msgid "Common Options" msgstr "Splošne možnosti" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:774 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:775 msgid "Set conversion options common to all formats" msgstr "Določite možnosti pretvorbe, skupne vsem zapisom" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:779 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780 msgid "Output Options" msgstr "Izhodne možnosti" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:785 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:786 msgid "Set conversion options specific to each output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:790 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791 msgid "Adding books" msgstr "Dodajanje knjig" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:792 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:804 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:816 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:828 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:793 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:805 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:817 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:829 msgid "Import/Export" msgstr "Uvozi/izvozi" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:796 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:797 msgid "Control how calibre reads metadata from files when adding books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:802 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:803 msgid "Saving books to disk" msgstr "Shranjevanje knjig na disk" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:808 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:809 msgid "" "Control how calibre exports files from its database to disk when using Save " "to disk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:814 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:815 msgid "Sending books to devices" msgstr "Pošiljanje knjig na naprave" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:820 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:821 msgid "Control how calibre transfers files to your ebook reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:826 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:827 msgid "Metadata plugboards" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:832 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:833 msgid "Change metadata fields before saving/sending" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:837 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838 msgid "Sharing books by email" msgstr "Skupna raba knjig prek e-pošte" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:839 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:851 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:840 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:852 msgid "Sharing" msgstr "Skupna raba" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:843 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:844 msgid "" "Setup sharing of books via email. Can be used for automatic sending of " "downloaded news to your devices" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:849 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:850 msgid "Sharing over the net" msgstr "Skupna raba prek spleta" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:855 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:856 msgid "" "Setup the calibre Content Server which will give you access to your calibre " "library from anywhere, on any device, over the internet" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:862 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863 msgid "Plugins" msgstr "Vstavki" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:864 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:876 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:887 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:865 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:877 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:888 msgid "Advanced" msgstr "Napredno" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:868 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:869 msgid "Add/remove/customize various bits of calibre functionality" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:874 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:875 msgid "Tweaks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:880 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:881 msgid "Fine tune how calibre behaves in various contexts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:885 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886 msgid "Miscellaneous" msgstr "Razno" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:891 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:892 msgid "Miscellaneous advanced configuration" msgstr "Razne naprednejše nastavitve" @@ -462,7 +462,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:59 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:436 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:444 msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "Ta profil je namenjen izdelkom SONY PRS (500/505/600/700 itn.)." @@ -472,62 +472,62 @@ msgid "This profile is intended for the SONY PRS 300." msgstr "Ta profil je namenjen izdelku SONY PRS 300." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:80 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:476 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:484 msgid "This profile is intended for the SONY PRS-900." msgstr "Ta profil je namenjen izdelku SONY PRS-900." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:88 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:506 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:513 msgid "This profile is intended for the Microsoft Reader." msgstr "Ta profil je namenjen programu Microsoft Reader." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:99 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:517 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:524 msgid "This profile is intended for the Mobipocket books." msgstr "Ta profil je namenjen knjigam Mobipocket." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:112 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:530 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:537 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:124 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:542 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:549 msgid "This profile is intended for the Hanlin V5 and its clones." msgstr "Ta profil je namenjen izdelku Hanlin V5 in njegovim klonom." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:134 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:550 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:557 msgid "This profile is intended for the Cybook G3." msgstr "Ta profil je namenjen izdelku Cybook G3." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:147 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:563 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:570 msgid "This profile is intended for the Cybook Opus." msgstr "Ta profil je namenjen izdelku Cybook Opus." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:159 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:576 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:583 msgid "This profile is intended for the Amazon Kindle." msgstr "Ta profil je namenjen izdelku Amazon Kindle." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:171 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:617 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:631 msgid "This profile is intended for the Irex Illiad." msgstr "Ta profil je namenjen izdelku Irex Illiad." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:183 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:630 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "Ta profil je namenjen izdelku Irex Digital Reader 1000." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:196 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 msgid "This profile is intended for the IRex Digital Reader 800." msgstr "Ta profil je namenjen izdelku Irex Digital Reader 800." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:208 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 msgid "This profile is intended for the B&N Nook." msgstr "Ta profil je namenjen izdelku Barnes&Noble Nook." @@ -542,38 +542,38 @@ msgid "" "devices." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:273 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:276 msgid "" "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:427 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:435 msgid "Intended for generic tablet devices, does no resizing of images" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:454 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:462 msgid "This profile is intended for the Kobo Reader." msgstr "Ta profil je namenjen izdelku Kobo Reader." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:467 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:475 msgid "This profile is intended for the SONY PRS-300." msgstr "Ta profil je namenjen izdelku Sony PRS-300." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:485 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:493 msgid "This profile is intended for the 5-inch JetBook." msgstr "Ta profil je namenjen 5-palčnemu bralniku JetBook." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:494 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:502 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:597 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:609 msgid "This profile is intended for the Amazon Kindle DX." msgstr "Ta profil je namenjen izdelku Amazon Kindle DX." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:686 msgid "This profile is intended for the Sanda Bambook." msgstr "Ta profil je namenjen izdelku Sanda Bambook." @@ -643,13 +643,13 @@ msgstr "" msgid "Communicate with Android phones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:53 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:56 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:95 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:98 msgid "Communicate with S60 phones." msgstr "" @@ -992,6 +992,14 @@ msgstr "Nook" msgid "Communicate with the Nook eBook reader." msgstr "" +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 +msgid "Nook Color" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 +msgid "Communicate with the Nook Color eBook reader." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." msgstr "" @@ -2171,8 +2179,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:605 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:45 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:102 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:65 @@ -2206,8 +2214,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:39 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:206 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:189 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:104 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:79 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:325 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1131 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:178 @@ -2489,7 +2497,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1399 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 msgid "Cover" msgstr "" @@ -2524,74 +2532,74 @@ msgstr "" msgid "All articles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:259 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:262 msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1400 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 msgid "Title Page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 #: /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:199 msgid "Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 msgid "Index" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 msgid "Glossary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 msgid "Acknowledgements" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 msgid "Bibliography" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 msgid "Colophon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 msgid "Copyright" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 msgid "Dedication" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 msgid "Epigraph" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 msgid "Foreword" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 msgid "List of Illustrations" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 msgid "List of Tables" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 msgid "Notes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1416 msgid "Preface" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1417 msgid "Main Text" msgstr "" @@ -3523,7 +3531,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:391 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:739 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 msgid "Not allowed" msgstr "" @@ -3590,7 +3598,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:720 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:683 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:685 #: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:189 msgid "Failed" msgstr "" @@ -4299,11 +4307,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:25 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:49 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:403 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:119 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:120 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:121 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:137 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:320 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1117 @@ -4312,10 +4320,10 @@ msgstr "Pot" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:26 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:123 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:124 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:319 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:24 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:117 @@ -4346,7 +4354,7 @@ msgstr "" msgid "None" msgstr "Nič" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:404 msgid "Double-click to open Book Details window" msgstr "" @@ -4559,6 +4567,19 @@ msgstr "" msgid "Tab template for catalog.ui" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:25 +msgid "Bold" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:26 +msgid "Italic" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:28 +msgid "Underline" +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 " @@ -4566,11 +4587,11 @@ msgid "" "specified in the Preferences" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:70 msgid "Bulk Convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 msgid "Options specific to the output format." msgstr "" @@ -5057,6 +5078,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:185 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:353 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 msgid "&Series:" msgstr "&Serije:" @@ -5242,7 +5264,7 @@ msgid "Options specific to the input format." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:117 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:53 msgid "Dialog" @@ -5429,8 +5451,8 @@ msgid "Force maximum line length" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:72 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:62 @@ -5736,10 +5758,10 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:982 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:990 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1083 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1168 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1287 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1295 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1089 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1174 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1293 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1301 msgid "No suitable formats" msgstr "Ni ustreznih formatov" @@ -5764,47 +5786,47 @@ msgstr "" msgid "Sent by email:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1042 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1048 msgid "News:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1049 msgid "Attached is the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1054 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1060 msgid "Sent news to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1084 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1169 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1288 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1090 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1175 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1294 msgid "Auto convert the following books before uploading to the device?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1114 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1120 msgid "Sending catalogs to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1201 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1207 msgid "Sending news to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1254 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1260 msgid "Sending books to device." msgstr "Pošlji knjige v napravo." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1296 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1302 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:1360 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1366 msgid "No space on device" msgstr "Na napravi ni več prostora" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1367 msgid "" "

Cannot upload books to device there is no more free space available " msgstr "" @@ -5856,15 +5878,15 @@ msgstr "" msgid "&Paste from clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:80 msgid "Fit &cover within view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:81 msgid "&Previous" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:82 msgid "&Next" msgstr "" @@ -6027,6 +6049,7 @@ msgid "Set options for converting %s" msgstr "Nastavi nastavitve za pretvorbo %s" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:211 msgid "&Title:" msgstr "&Naslov:" @@ -6278,13 +6301,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:274 msgid "" "You can destroy your library using this feature. Changes are " -"permanent. There is no undo function. This feature is experimental, and " -"there may be bugs. You are strongly encouraged to back up your library " -"before proceeding.

Search and replace in text fields using character " -"matching or regular expressions. " +"permanent. There is no undo function. You are strongly encouraged to back up " +"your library before proceeding.

Search and replace in text fields using " +"character matching or regular expressions. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:282 msgid "" "In character mode, the field is searched for the entered search text. The " "text is replaced by the specified replacement text everywhere it is found in " @@ -6294,7 +6316,7 @@ msgid "" "text will match both upper- and lower-case letters" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:293 msgid "" "In regular expression mode, the search text is an arbitrary python-" "compatible regular expression. The replacement text can contain " @@ -6309,30 +6331,30 @@ msgid "" "function." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:436 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:438 msgid "You must specify a destination when source is a composite field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:528 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:536 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:631 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:633 msgid "Search/replace invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:531 msgid "" "Authors cannot be set to the empty string. Book title %s not processed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:537 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:539 msgid "Title cannot be set to the empty string. Book title %s not processed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:632 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:634 msgid "Search pattern is invalid: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:669 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:671 msgid "" "Applying changes to %d books.\n" "Phase {0} {1}%%." @@ -6575,7 +6597,7 @@ msgid "Your test:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:401 -msgid "&Search and replace (experimental)" +msgid "&Search and replace" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:91 @@ -7087,61 +7109,98 @@ msgstr "" msgid "Negate" msgstr "Negiraj" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 msgid "Advanced Search" msgstr "Napredno iskanje" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:119 -msgid "Find entries that have..." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:120 -msgid "&All these words:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:121 -msgid "This exact &phrase:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:122 -msgid "&One or more of these words:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:123 -msgid "But dont show entries that have..." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:124 -msgid "Any of these &unwanted words:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 msgid "What kind of match to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:126 -msgid "Contains: the word or phrase matches anywhere in the metadata" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:127 -msgid "Equals: the word or phrase must match an entire metadata field" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +msgid "Equals: the word or phrase must match the entire metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 msgid "" -"Regular expression: the expression must match anywhere in the metadata" +"Regular expression: the expression must match anywhere in the metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:129 -msgid " " -msgstr " " +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +msgid "Find entries that have..." +msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +msgid "&All these words:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +msgid "This exact &phrase:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +msgid "&One or more of these words:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 +msgid "But dont show entries that have..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 +msgid "Any of these &unwanted words:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 msgid "" "See the User Manual for more help" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:210 +msgid "A&dvanced Search" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:212 +msgid "Enter the title." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:213 +msgid "&Author:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 +msgid "Ta&gs:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:216 +msgid "Enter an author's name. Only one author can be used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:217 +msgid "" +"Enter a series name, without an index. Only one series name can be used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:218 +msgid "Enter tags separated by spaces" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:219 +msgid "&Clear" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:220 +msgid "Search only in specific fields:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:221 +msgid "Titl&e/Author/Series ..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/select_formats.py:45 msgid "Choose formats" msgstr "" @@ -7791,37 +7850,41 @@ msgid "" "Books display will be restricted to those matching the selected saved search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:170 +msgid "Shift+Ctrl+F" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:173 msgid "Advanced search" msgstr "Napredno iskanje" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:178 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/layout.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:181 msgid "&Go!" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:187 msgid "Do Quick Search (you can also press the Enter key)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:193 msgid "Reset Quick Search" msgstr "Resetiraj Hitro Iskanje" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:205 msgid "Copy current search text (instead of search name)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:211 msgid "Save current search under the name shown in the box" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:217 msgid "Delete current saved search" msgstr "" @@ -7878,47 +7941,47 @@ msgstr "" msgid "Double click to edit me

" msgstr "Dvoklikni me da me urediš

" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:147 msgid "Hide column %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 msgid "Sort on %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 msgid "Ascending" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:156 msgid "Descending" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 msgid "Change text alignment for %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:171 msgid "Center" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:190 msgid "Show column" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202 msgid "Restore default layout" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:740 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:743 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -9668,7 +9731,7 @@ msgid "Options to customize the ebook viewer" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:704 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:708 msgid "Remember last used window size" msgstr "" @@ -9840,65 +9903,65 @@ msgstr "" msgid "No matches found for: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:481 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:485 msgid "Loading flow..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:517 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:521 msgid "Laying out %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:552 msgid "Bookmark #%d" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:556 msgid "Add bookmark" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:557 msgid "Enter title for bookmark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:563 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:567 msgid "Manage Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:600 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:604 msgid "Loading ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:612 msgid "DRM Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:609 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:613 msgid "

This book is protected by DRM" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:613 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:617 msgid "Could not open ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:691 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:695 msgid "Options to control the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:698 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:702 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:701 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:705 msgid "" "If specified, viewer window will try to open full screen when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:710 msgid "Print javascript alert and console messages to the console" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:716 msgid "" "%prog [options] file\n" "\n" @@ -12984,3 +13047,6 @@ msgstr "Ne prenesi CSS oblikovnih informacij." #~ msgid "Print generated NCX file to stdout" #~ msgstr "Izpiši ustvarjeno NCX datoteko na standardni izhod" + +#~ msgid " " +#~ msgstr " " diff --git a/src/calibre/translations/sr.po b/src/calibre/translations/sr.po index ba212a3a1b..fb0128dd16 100644 --- a/src/calibre/translations/sr.po +++ b/src/calibre/translations/sr.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2010-11-10 14:27+0000\n" -"PO-Revision-Date: 2010-11-10 17:40+0000\n" -"Last-Translator: Vladimir Oka \n" +"POT-Creation-Date: 2010-11-12 23:11+0000\n" +"PO-Revision-Date: 2010-11-12 23:08+0000\n" +"Last-Translator: Kovid Goyal \n" "Language-Team: Serbian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-11 04:41+0000\n" +"X-Launchpad-Export-Date: 2010-11-13 04:54+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -31,7 +31,7 @@ msgstr "Ne radi baš ništa" #: /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/sony_cache.py:643 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:650 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 @@ -74,14 +74,14 @@ msgstr "Ne radi baš ništa" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:78 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:119 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:153 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:616 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:822 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:824 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:620 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:826 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:828 #: /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:911 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:916 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:982 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:913 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:918 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:984 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:143 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:150 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:64 @@ -123,8 +123,8 @@ msgstr "Ne radi baš ništa" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:141 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:927 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:936 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1243 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1249 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1252 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 @@ -192,7 +192,7 @@ msgstr "Akcije korisničkog interfejsa" msgid "Preferences" msgstr "Podešavanja" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:17 +#: /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 " @@ -202,7 +202,7 @@ msgstr "" "fajlove. Ovaj dodatak se pokreće svaki put kada dodate HTML fajl u " "biblioteku." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:53 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:51 msgid "" "Character encoding for the input HTML files. Common choices include: cp1252, " "latin1, iso-8859-1 and utf-8." @@ -210,7 +210,7 @@ msgstr "" "Kodni raspored za ulazne HTML fajlove. Najčešće korišćeni kodni rasporedi " "su: Windows-1252 (CP1252), Latin-1, ISO-8859 i UTF-8." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:60 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:58 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 " @@ -220,7 +220,7 @@ msgstr "" "plmname_img i images. Ovaj dodatak se pokreće svaki put kada dodate PML fajl " "u biblioteku." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:94 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:92 msgid "Extract cover from comic files" msgstr "Uzmi omot iz fajla sa stripom" @@ -267,43 +267,43 @@ msgstr "Upiši metapodatke u %s fajlova" msgid "Set metadata from %s files" msgstr "Učitaj metapodatke iz %s fajlova" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:711 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:712 msgid "Look and Feel" msgstr "Izgled i ponašanje" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:713 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:725 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:736 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:747 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:714 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:726 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:737 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:748 msgid "Interface" msgstr "Interfejs" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:717 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:718 msgid "Adjust the look and feel of the calibre interface to suit your tastes" msgstr "Prilagodite izgled i ponašanje calibrea da odgovara vašem ukusu" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:723 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:724 msgid "Behavior" msgstr "Ponašanje" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:729 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:730 msgid "Change the way calibre behaves" msgstr "Promenite način ponašanja calibrea" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:734 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:208 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:209 msgid "Add your own columns" msgstr "Dodajte sopstvene kolone" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:740 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:741 msgid "Add/remove your own columns to the calibre book list" msgstr "Dodajte/uklonite sopstvene kolone za calibre spisak knjiga" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:745 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746 msgid "Customize the toolbar" msgstr "Prilagodite traku sa alatima" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:751 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:752 msgid "" "Customize the toolbars and context menus, changing which actions are " "available in each" @@ -311,57 +311,57 @@ msgstr "" "Prilagodite traku sa alatima i kontekstno osetljive menije menjajući akcije " "koje su na raspolaganju u svakom od njih" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:757 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:758 msgid "Input Options" msgstr "Ulazna podešavanja" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:759 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:770 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:781 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:760 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:771 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:782 msgid "Conversion" msgstr "Konverzija" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:763 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:764 msgid "Set conversion options specific to each input format" msgstr "Postavite opcije za konverziju za svaki od ulaznih formata" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:768 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769 msgid "Common Options" msgstr "Uobičajene opcije" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:774 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:775 msgid "Set conversion options common to all formats" msgstr "Postavite opcije za konverziju za sve formate" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:779 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780 msgid "Output Options" msgstr "Izlazne opcije" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:785 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:786 msgid "Set conversion options specific to each output format" msgstr "Postavite opcije za konverziju specifične za svaki izlazni format" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:790 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791 msgid "Adding books" msgstr "Dodajem knjige" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:792 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:804 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:816 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:828 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:793 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:805 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:817 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:829 msgid "Import/Export" msgstr "Uvoz/izvoz" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:796 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:797 msgid "Control how calibre reads metadata from files when adding books" msgstr "" "Kontrolišite kako calibre čita metapodatke iz fajlova kada dodaje knjige" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:802 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:803 msgid "Saving books to disk" msgstr "Snimam kjige na disk" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:808 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:809 msgid "" "Control how calibre exports files from its database to disk when using Save " "to disk" @@ -369,32 +369,32 @@ msgstr "" "Kontrolišite kako calibre izvozi fajlove iz baze podataka na disk kada se " "koristi opcija Snimi na disk" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:814 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:815 msgid "Sending books to devices" msgstr "Šaljem knjige na uređaj" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:820 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:821 msgid "Control how calibre transfers files to your ebook reader" msgstr "Kontrolišite kako calibre šalje fajlove na vaš čitač" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:826 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:827 msgid "Metadata plugboards" msgstr "Priključci za metapodatke" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:832 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:833 msgid "Change metadata fields before saving/sending" msgstr "Izmeni metapodatke pre snimanja/slanja" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:837 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838 msgid "Sharing books by email" msgstr "Šaljem knjige elektronskom poštom" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:839 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:851 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:840 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:852 msgid "Sharing" msgstr "Razmena" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:843 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:844 msgid "" "Setup sharing of books via email. Can be used for automatic sending of " "downloaded news to your devices" @@ -402,11 +402,11 @@ msgstr "" "Podesite razmenu knjiga elektronskom poštom. Ovo se može koristiti i za " "automatsko slanje preuzetih vesti na vaš uređaj" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:849 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:850 msgid "Sharing over the net" msgstr "Razmena preko Interneta" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:855 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:856 msgid "" "Setup the calibre Content Server which will give you access to your calibre " "library from anywhere, on any device, over the internet" @@ -414,33 +414,33 @@ msgstr "" "Podesite calibre server sadržaja koji će omogućiti pristup vašoj calibre " "biblioteci s bilo koje lokacije, bilo kog uređaja, a preko Interneta" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:862 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863 msgid "Plugins" msgstr "Dodaci" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:864 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:876 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:887 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:865 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:877 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:888 msgid "Advanced" msgstr "Napredno" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:868 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:869 msgid "Add/remove/customize various bits of calibre functionality" msgstr "Dodaj/ukloni/podesi različite elemente ponašanja calibrea" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:874 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:875 msgid "Tweaks" msgstr "Fina podešavanja" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:880 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:881 msgid "Fine tune how calibre behaves in various contexts" msgstr "Fino podesite kako se calibre ponaša u različitim situacijama" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:885 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886 msgid "Miscellaneous" msgstr "Razno" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:891 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:892 msgid "Miscellaneous advanced configuration" msgstr "Razna napredna podešavanja" @@ -485,7 +485,7 @@ msgstr "" "je ako ne znate ništa o ulaznom dokumentu." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:59 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:436 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:444 msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "" @@ -496,62 +496,62 @@ msgid "This profile is intended for the SONY PRS 300." msgstr "Ovaj profil je namenjen za SONY PRS 300 čitače." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:80 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:476 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:484 msgid "This profile is intended for the SONY PRS-900." msgstr "Ovaj profil je namenjen za SONY PRS-900 čitače." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:88 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:506 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:513 msgid "This profile is intended for the Microsoft Reader." msgstr "Ovaj profil je namenjen za Microsoft Reader." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:99 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:517 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:524 msgid "This profile is intended for the Mobipocket books." msgstr "Ovaj profil je namenjen za Mobipocket knjige." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:112 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:530 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:537 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "Ovaj profil je namenjen za Hanlin V3 čitače i klonove." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:124 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:542 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:549 msgid "This profile is intended for the Hanlin V5 and its clones." msgstr "Ovaj profil je namenjen za Hanlin V5 čitače i klonove." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:134 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:550 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:557 msgid "This profile is intended for the Cybook G3." msgstr "Ovaj profil je namenjen za Cybook G3 čitače." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:147 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:563 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:570 msgid "This profile is intended for the Cybook Opus." msgstr "Ovaj profil je namenjen za Cybook Opus čitače." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:159 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:576 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:583 msgid "This profile is intended for the Amazon Kindle." msgstr "Ovaj profil je namenjen za Amazon Kindle čitače." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:171 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:617 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:631 msgid "This profile is intended for the Irex Illiad." msgstr "Ovaj profil je namenjen za Irex Illiad čitače." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:183 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:630 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "Ovaj profil je namenjen za IRex Digital Reader 1000 čitače." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:196 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 msgid "This profile is intended for the IRex Digital Reader 800." msgstr "Ovaj profil je namenjen za IRex Digital Reader 800 čitače." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:208 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 msgid "This profile is intended for the B&N Nook." msgstr "Ovaj profil je namenjen za B&N Nook čitače." @@ -569,28 +569,28 @@ msgstr "" "je ako želite da proizvedete dokument koji može da se čita kako na računaru, " "tako i na raznim drugim uređajima." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:273 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:276 msgid "" "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "Namenjeno za iPad i slične uređaje s rezolucijom 768x1024" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:427 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:435 msgid "Intended for generic tablet devices, does no resizing of images" msgstr "Namenjeno generičkim tablet uređajima, ne menja veličinu slika" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:454 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:462 msgid "This profile is intended for the Kobo Reader." msgstr "Ovaj profil je namenjen za Kobo čitače" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:467 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:475 msgid "This profile is intended for the SONY PRS-300." msgstr "Ovaj profil je namenjen za SONY PRS-300 čitače." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:485 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:493 msgid "This profile is intended for the 5-inch JetBook." msgstr "Ovaj profil je namenjen za 5-inčne JetBook čitače." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:494 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:502 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." @@ -598,11 +598,11 @@ msgstr "" "Ovaj profil je namenjen SONY PRS liniji čitača, za modele 500/505/700 itd, u " "horizontalnom položaju. Uglavnom je koristan za stripove." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:597 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:609 msgid "This profile is intended for the Amazon Kindle DX." msgstr "Ovaj profil je namenjen za Amazon Kindle DX čitače." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:686 msgid "This profile is intended for the Sanda Bambook." msgstr "Ovaj profil je namenjen Sanda Bambook čitaču." @@ -678,7 +678,7 @@ msgstr "Isključi navedeni dodatak" msgid "Communicate with Android phones." msgstr "Uspastavi vezu sa Android telefonima." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:53 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:56 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" @@ -686,7 +686,7 @@ msgstr "" "Zarezima razdvojen spisak direktorijuma na uređaju u koje će se slati " "knjige. Koristiće se prvi postojeći." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:95 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:98 msgid "Communicate with S60 phones." msgstr "Uspostavi vezu sa S60 telefonima." @@ -1042,6 +1042,14 @@ msgstr "Nook" msgid "Communicate with the Nook eBook reader." msgstr "Uspostavi vezu s Nook čitačem." +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 +msgid "Nook Color" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 +msgid "Communicate with the Nook Color eBook reader." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." msgstr "Uspostavi vezu s Nuut2 čitačem." @@ -2792,7 +2800,7 @@ msgstr "" "LibraryThing.com\n" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1399 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 msgid "Cover" msgstr "Naslovna strana" @@ -2835,70 +2843,70 @@ msgstr "Svi članci" msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "Ovo je Amazon Topaz knjiga. Nju nije moguće obraditi." -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1400 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 msgid "Title Page" msgstr "Naslovna strana" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 #: /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:199 msgid "Table of Contents" msgstr "Sadržaj" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 msgid "Index" msgstr "Indeks" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 msgid "Glossary" msgstr "Pojmovnik" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 msgid "Acknowledgements" msgstr "Zahvalnosti" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 msgid "Bibliography" msgstr "Bibliografija" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 msgid "Colophon" msgstr "Impresum" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 msgid "Copyright" msgstr "Autorska prava" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 msgid "Dedication" msgstr "Posveta" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 msgid "Epigraph" msgstr "Epigraf" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 msgid "Foreword" msgstr "Predgovor" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 msgid "List of Illustrations" msgstr "Spisak ilustracija" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 msgid "List of Tables" msgstr "Spisak tabela" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 msgid "Notes" msgstr "Beleške" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1416 msgid "Preface" msgstr "Predgovor" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1417 msgid "Main Text" msgstr "Glavni tekst" @@ -3954,7 +3962,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:391 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:741 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 msgid "Not allowed" msgstr "Nije dozvoljeno" @@ -5068,11 +5076,11 @@ msgstr "" "sačuvane od prethodne konverzije (ako postoje), umesto korišćenja " "podrazumevanih vrednosti u Podešavanjima" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:70 msgid "Bulk Convert" msgstr "Masovna konverzija" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 msgid "Options specific to the output format." msgstr "Opcije koje zavise od izlaznog formata." @@ -6281,10 +6289,10 @@ msgstr "Šaljem poruku za" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:982 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:990 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1083 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1168 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1287 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1295 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1089 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1174 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1293 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1301 msgid "No suitable formats" msgstr "Nema odgovarajućih formata" @@ -6310,37 +6318,37 @@ msgstr "Nisam uspeo da pošaljem sledeće knjige:" msgid "Sent by email:" msgstr "Poslato elektronskom poštom:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1042 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1048 msgid "News:" msgstr "Vesti:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1049 msgid "Attached is the" msgstr "Priključeno je" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1054 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1060 msgid "Sent news to" msgstr "Poslao vesti za" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1084 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1169 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1288 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1090 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1175 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1294 msgid "Auto convert the following books before uploading to the device?" msgstr "Automatski konvertuj sledeće knjige pre slanja na uređaj?" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1114 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1120 msgid "Sending catalogs to device." msgstr "Šaljem katalog na uređaj." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1201 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1207 msgid "Sending news to device." msgstr "Šaljem vesti na uređaj." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1254 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1260 msgid "Sending books to device." msgstr "Šaljem knjige na uređaj." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1296 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1302 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." @@ -6349,11 +6357,11 @@ msgstr "" "odgovarajući formati. Morate prvo konvertovati knjige u format koji vaš " "uređaj podržava." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1360 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1366 msgid "No space on device" msgstr "Na uređaju nema dovoljno mesta" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1367 msgid "" "

Cannot upload books to device there is no more free space available " msgstr "" @@ -7745,45 +7753,45 @@ msgid "Advanced Search" msgstr "Napredna pretraga" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 -msgid "Find entries that have..." -msgstr "Pronađi stavke koje sadrže..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 -msgid "&All these words:" -msgstr "&Sve ove reči:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 -msgid "This exact &phrase:" -msgstr "Ovu &frazu:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 -msgid "&One or more of these words:" -msgstr "&Jednu ili više ovih reči:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 -msgid "But dont show entries that have..." -msgstr "Ali ne prikazuj stavke koje sadrže..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 -msgid "Any of these &unwanted words:" -msgstr "Bilo koje od ovih &neželjenih reči:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 msgid "What kind of match to use:" msgstr "Koju vrstu pogodaka da koristim:" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +msgid "Contains: the word or phrase matches anywhere in the metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +msgid "Equals: the word or phrase must match the entire metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 +msgid "" +"Regular expression: the expression must match anywhere in the metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +msgid "Find entries that have..." +msgstr "Pronađi stavke koje sadrže..." + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +msgid "&All these words:" +msgstr "&Sve ove reči:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +msgid "This exact &phrase:" +msgstr "Ovu &frazu:" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 -msgid "Contains: the word or phrase matches anywhere in the metadata" -msgstr "Sadrži: reči ili fraze bilo gde među metapodacima" +msgid "&One or more of these words:" +msgstr "&Jednu ili više ovih reči:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 -msgid "Equals: the word or phrase must match an entire metadata field" -msgstr "Jednaki: rečima ili frazama koje odgovaraju celom polju metapodataka" +msgid "But dont show entries that have..." +msgstr "Ali ne prikazuj stavke koje sadrže..." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 -msgid "" -"Regular expression: the expression must match anywhere in the metadata" -msgstr "Regularni izraz: izraz mora biti pronađen bilo gde među metapodacima" +msgid "Any of these &unwanted words:" +msgstr "Bilo koje od ovih &neželjenih reči:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 msgid "" @@ -8627,47 +8635,47 @@ msgstr "Izabrano za brisanje" msgid "Double click to edit me

" msgstr "Kliknite dva puta da me promenite

" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:147 msgid "Hide column %s" msgstr "Sakrij kolonu %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 msgid "Sort on %s" msgstr "Sortiraj po koloni %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 msgid "Ascending" msgstr "Rastući redosled" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:156 msgid "Descending" msgstr "Opadajući redosled" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 msgid "Change text alignment for %s" msgstr "Promeni poravnanje za %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Left" msgstr "Levo" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Right" msgstr "Desno" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:171 msgid "Center" msgstr "Centrirano" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:190 msgid "Show column" msgstr "Prikaži kolonu" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202 msgid "Restore default layout" msgstr "Vrati podrazumevani izgled" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:743 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -13368,6 +13376,13 @@ msgstr "Ne preuzimaj CSS stilove." #~ msgid "Download &cover" #~ msgstr "Preuzmi &naslovnu stranu" +#~ msgid "Contains: the word or phrase matches anywhere in the metadata" +#~ msgstr "Sadrži: reči ili fraze bilo gde među metapodacima" + +#~ msgid "" +#~ "Regular expression: the expression must match anywhere in the metadata" +#~ msgstr "Regularni izraz: izraz mora biti pronađen bilo gde među metapodacima" + #~ msgid "" #~ "For help with writing advanced news recipes, please visit User Recipes" @@ -13572,6 +13587,9 @@ msgstr "Ne preuzimaj CSS stilove." #~ msgid "Masthead font:" #~ msgstr "Vrsta slova za Impresum:" +#~ msgid "Equals: the word or phrase must match an entire metadata field" +#~ msgstr "Jednaki: rečima ili frazama koje odgovaraju celom polju metapodataka" + #~ msgid "Click to turn off Cover Browsing" #~ msgstr "Kliknite da isključite traženje u Izlogu naslovnih strana" diff --git a/src/calibre/translations/sv.po b/src/calibre/translations/sv.po index fa497a7a43..3c3466805e 100644 --- a/src/calibre/translations/sv.po +++ b/src/calibre/translations/sv.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2010-11-10 14:27+0000\n" -"PO-Revision-Date: 2010-11-10 21:45+0000\n" -"Last-Translator: Merarom \n" +"POT-Creation-Date: 2010-11-12 23:11+0000\n" +"PO-Revision-Date: 2010-11-12 23:04+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-11-11 04:42+0000\n" +"X-Launchpad-Export-Date: 2010-11-13 04:54+0000\n" "X-Generator: Launchpad (build Unknown)\n" "X-Poedit-Country: SWEDEN\n" "X-Poedit-Language: Swedish\n" @@ -33,7 +33,7 @@ msgstr "Gör absolut ingenting" #: /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/sony_cache.py:643 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:650 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 @@ -76,14 +76,14 @@ msgstr "Gör absolut ingenting" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:78 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:119 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:153 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:616 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:822 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:824 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:620 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:826 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:828 #: /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:911 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:916 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:982 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:913 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:918 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:984 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:143 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:150 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:64 @@ -125,8 +125,8 @@ msgstr "Gör absolut ingenting" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:141 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:927 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:936 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1243 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1249 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1252 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 @@ -194,7 +194,7 @@ msgstr "Användargränssnittsåtgärd" msgid "Preferences" msgstr "Inställningar" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:17 +#: /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 " @@ -204,7 +204,7 @@ msgstr "" "alla länkade filer. Detta tillägg körs varje gång du lägger till en HTML-fil " "till biblioteket." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:53 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:51 msgid "" "Character encoding for the input HTML files. Common choices include: cp1252, " "latin1, iso-8859-1 and utf-8." @@ -212,7 +212,7 @@ msgstr "" "Teckenkodning för indata i HTML. Vanliga alternativ är: cp1252, latin1, iso-" "8859-1 och utf-8." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:60 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:58 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 " @@ -222,7 +222,7 @@ msgstr "" "pmlname_img eller bilder. Detta tillägg körs varje gång du lägger till en " "PML-fil till biblioteket." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:94 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:92 msgid "Extract cover from comic files" msgstr "Extrahera omslag från serietidningsfiler" @@ -269,45 +269,45 @@ msgstr "Ställ in metadata i %s-filer" msgid "Set metadata from %s files" msgstr "Ställ in metadata utifrån %s-filer" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:711 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:712 msgid "Look and Feel" msgstr "Utseende och beteende" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:713 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:725 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:736 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:747 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:714 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:726 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:737 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:748 msgid "Interface" msgstr "Gränssnitt" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:717 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:718 msgid "Adjust the look and feel of the calibre interface to suit your tastes" msgstr "" "Justera utseendet och beteendet av Calibre-gränssnittet så det passar din " "smak" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:723 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:724 msgid "Behavior" msgstr "Beteende" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:729 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:730 msgid "Change the way calibre behaves" msgstr "Ändra Calibres beteende" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:734 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:208 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:209 msgid "Add your own columns" msgstr "Lägg till dina egna kolumner" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:740 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:741 msgid "Add/remove your own columns to the calibre book list" msgstr "Lägga till / ta bort dina egna kolumner till Calibres boklista" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:745 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746 msgid "Customize the toolbar" msgstr "Anpassa verktygsfältet" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:751 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:752 msgid "" "Customize the toolbars and context menus, changing which actions are " "available in each" @@ -315,57 +315,57 @@ msgstr "" "Anpassa verktygsfält och menyer, genom att ändra vilka åtgärder som finns i " "varje" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:757 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:758 msgid "Input Options" msgstr "Inmatningsalternativ" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:759 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:770 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:781 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:760 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:771 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:782 msgid "Conversion" msgstr "Konvertera" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:763 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:764 msgid "Set conversion options specific to each input format" msgstr "Ange konverteringsalternativ specifika för varje indataformat" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:768 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769 msgid "Common Options" msgstr "Vanliga alternativ" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:774 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:775 msgid "Set conversion options common to all formats" msgstr "Ange konverteringsalternativ gemensamma för alla format" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:779 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780 msgid "Output Options" msgstr "Alternativ för utdata" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:785 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:786 msgid "Set conversion options specific to each output format" msgstr "Ange konvertering specifika för varje utdataformat" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:790 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791 msgid "Adding books" msgstr "Lägga till böcker" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:792 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:804 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:816 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:828 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:793 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:805 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:817 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:829 msgid "Import/Export" msgstr "Import / Export" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:796 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:797 msgid "Control how calibre reads metadata from files when adding books" msgstr "" "Kontrollera hur Calibre läser metadata från filer när du lägger till böcker" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:802 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:803 msgid "Saving books to disk" msgstr "Spara böcker till disk" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:808 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:809 msgid "" "Control how calibre exports files from its database to disk when using Save " "to disk" @@ -373,32 +373,32 @@ msgstr "" "Kontrollera hur Calibre exporterar filer från databasen till hårddisken när " "du använder Spara till disk" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:814 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:815 msgid "Sending books to devices" msgstr "Skickar böcker till enheter" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:820 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:821 msgid "Control how calibre transfers files to your ebook reader" msgstr "Kontrollera hur Calibre överför filer till din läsplatta" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:826 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:827 msgid "Metadata plugboards" msgstr "Kontrollpanel för metadata" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:832 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:833 msgid "Change metadata fields before saving/sending" msgstr "Ändra metadatafält innan du sparar / skickar" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:837 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838 msgid "Sharing books by email" msgstr "Dela böcker via e-post" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:839 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:851 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:840 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:852 msgid "Sharing" msgstr "Delar" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:843 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:844 msgid "" "Setup sharing of books via email. Can be used for automatic sending of " "downloaded news to your devices" @@ -406,11 +406,11 @@ msgstr "" "Ställ in delning av böcker via e-post. Kan användas för automatisk sändning " "av nedladdade nyheter till dina enheter" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:849 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:850 msgid "Sharing over the net" msgstr "Dela på nätet" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:855 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:856 msgid "" "Setup the calibre Content Server which will give you access to your calibre " "library from anywhere, on any device, over the internet" @@ -418,33 +418,33 @@ msgstr "" "Ställ in Calibre innehållsserver som ger dig tillgång till din Calibre-" "bibliotek från någonstans, på någon enhet på Internet" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:862 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863 msgid "Plugins" msgstr "Tillägg" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:864 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:876 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:887 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:865 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:877 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:888 msgid "Advanced" msgstr "Avancerat" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:868 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:869 msgid "Add/remove/customize various bits of calibre functionality" msgstr "Lägg till / ta bort / anpassa olika bitar av Calibre-funktionalitet" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:874 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:875 msgid "Tweaks" msgstr "Justeringar" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:880 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:881 msgid "Fine tune how calibre behaves in various contexts" msgstr "Finjustera hur Calibre beter sig i olika sammanhang" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:885 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886 msgid "Miscellaneous" msgstr "Diverse" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:891 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:892 msgid "Miscellaneous advanced configuration" msgstr "Diverse avancerad konfiguration" @@ -489,7 +489,7 @@ msgstr "" "du inte vet något om ingångsdokumentet." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:59 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:436 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:444 msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "Denna profil är avsedd för Sonys PRS-linje: 500/505/600/700 m.fl." @@ -499,62 +499,62 @@ msgid "This profile is intended for the SONY PRS 300." msgstr "Denna profil är avsedd för Sony PRS-300." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:80 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:476 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:484 msgid "This profile is intended for the SONY PRS-900." msgstr "Denna profil är avsedd för Sony PRS-900." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:88 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:506 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:513 msgid "This profile is intended for the Microsoft Reader." msgstr "Denna profil är avsedd för Microsoft Reader." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:99 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:517 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:524 msgid "This profile is intended for the Mobipocket books." msgstr "Denna profil är avsedd för Mobipocket-böcker." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:112 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:530 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:537 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "Denna profil är avsedd för Hanlin V3 och dess varianter." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:124 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:542 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:549 msgid "This profile is intended for the Hanlin V5 and its clones." msgstr "Denna profil är avsedd för Hanlin V5 och dess varianter." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:134 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:550 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:557 msgid "This profile is intended for the Cybook G3." msgstr "Denna profil är avsedd för Cybook G3." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:147 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:563 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:570 msgid "This profile is intended for the Cybook Opus." msgstr "Denna profil är avsedd för Cybook Opus." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:159 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:576 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:583 msgid "This profile is intended for the Amazon Kindle." msgstr "Denna profil är avsedd för Amazon Kindle." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:171 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:617 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:631 msgid "This profile is intended for the Irex Illiad." msgstr "Denna profil är avsedd för Irex Illiad." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:183 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:630 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "Denna profil är avsedd för IRex Digital Reader 1000." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:196 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 msgid "This profile is intended for the IRex Digital Reader 800." msgstr "Denna profil är avsedd för Irex Digital Reader 800." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:208 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 msgid "This profile is intended for the B&N Nook." msgstr "Denna profil är avsedd för B&N Nook." @@ -572,28 +572,28 @@ msgstr "" "om du vill skapa en handling som skall läsas på en dator eller på en rad " "olika enheter." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:273 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:276 msgid "" "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "Avsedd för iPad och liknande enheter med en upplösningen 768x1024" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:427 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:435 msgid "Intended for generic tablet devices, does no resizing of images" msgstr "Avsedd för allmänna surfplattor - bilder skalas ej om." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:454 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:462 msgid "This profile is intended for the Kobo Reader." msgstr "Denna profil är avsedd för Kobo Reader." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:467 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:475 msgid "This profile is intended for the SONY PRS-300." msgstr "Denna profil är avsedd för SONY PRS-300." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:485 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:493 msgid "This profile is intended for the 5-inch JetBook." msgstr "Denna profil är avsedd för JetBook (5 tum)." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:494 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:502 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." @@ -601,11 +601,11 @@ msgstr "" "Denna profil är avsedd för Sonys PRS-linje, 500/505/700 m.fl, i liggande " "format. Används främst för serietidningar." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:597 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:609 msgid "This profile is intended for the Amazon Kindle DX." msgstr "Denna profil är avsedd för Amazon Kindle DX." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:686 msgid "This profile is intended for the Sanda Bambook." msgstr "Denna profil är avsedd för Sanda Bambook." @@ -684,7 +684,7 @@ msgstr "Inaktivera namngivet tillägg" msgid "Communicate with Android phones." msgstr "Kommunicera med Android-telefoner." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:53 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:56 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" @@ -692,7 +692,7 @@ msgstr "" "Kommaseparerad lista av kataloger på enheten dit e-böckerna skall skickas. " "Den första katalog som finns kommer att användas" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:95 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:98 msgid "Communicate with S60 phones." msgstr "Kommunicera med S60-telefoner" @@ -1048,6 +1048,14 @@ msgstr "Nook" msgid "Communicate with the Nook eBook reader." msgstr "Kommunicera med läsplattan Nook." +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 +msgid "Nook Color" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 +msgid "Communicate with the Nook Color eBook reader." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." msgstr "Kommunicera med läsplattan Nuut2." @@ -2798,7 +2806,7 @@ msgstr "" "LibraryThing.com\n" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1399 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 msgid "Cover" msgstr "Omslag" @@ -2840,70 +2848,70 @@ msgstr "Alla artiklar" msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "Det här är en Amazon Topaz-bok. Den kan inte hanteras." -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1400 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 msgid "Title Page" msgstr "Titelsida" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 #: /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:199 msgid "Table of Contents" msgstr "Innehållsförteckning" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 msgid "Index" msgstr "Översikt" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 msgid "Glossary" msgstr "Ordförklaringar" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 msgid "Acknowledgements" msgstr "Tack till" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 msgid "Bibliography" msgstr "Litteraturförteckning" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 msgid "Colophon" msgstr "Kolofon" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 msgid "Copyright" msgstr "Upphovsrätt" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 msgid "Dedication" msgstr "Tillägnan" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 msgid "Epigraph" msgstr "Epigraf" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 msgid "Foreword" msgstr "Förord" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 msgid "List of Illustrations" msgstr "Illustrationslista" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 msgid "List of Tables" msgstr "Tabellista" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 msgid "Notes" msgstr "Anteckningar" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1416 msgid "Preface" msgstr "Förord" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1417 msgid "Main Text" msgstr "Huvudtext" @@ -3961,7 +3969,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:391 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:741 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 msgid "Not allowed" msgstr "Tillåẗs ej" @@ -5074,11 +5082,11 @@ msgstr "" "som sparats i en tidigare konvertering (om den finns) i stället för att " "använda de standardvärden som anges i Inställningar" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:70 msgid "Bulk Convert" msgstr "Masskonvertering" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 msgid "Options specific to the output format." msgstr "Alternativ specifika för utdataformatet." @@ -6284,10 +6292,10 @@ msgstr "Skickar e-post till" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:982 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:990 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1083 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1168 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1287 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1295 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1089 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1174 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1293 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1301 msgid "No suitable formats" msgstr "Inga lämpliga format" @@ -6313,38 +6321,38 @@ msgstr "Kunde inte skicka följande böcker:" msgid "Sent by email:" msgstr "Skickat via e-post:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1042 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1048 msgid "News:" msgstr "Nyheter:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1049 msgid "Attached is the" msgstr "Bifogat är" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1054 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1060 msgid "Sent news to" msgstr "Skickat nyheter till" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1084 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1169 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1288 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1090 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1175 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1294 msgid "Auto convert the following books before uploading to the device?" msgstr "" "Skall följande böcker konverteras automatiskt innan de skickas till enheten?" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1114 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1120 msgid "Sending catalogs to device." msgstr "Skickar kataloger till enhet." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1201 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1207 msgid "Sending news to device." msgstr "Skickar nyheter till enheten." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1254 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1260 msgid "Sending books to device." msgstr "Skickar böcker till enheten." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1296 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1302 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." @@ -6353,11 +6361,11 @@ msgstr "" "format hittades. Konvertera boken/böckerna till ett format som stöds av " "enheten först." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1360 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1366 msgid "No space on device" msgstr "Inget ledigt utrymme på enheten" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1367 msgid "" "

Cannot upload books to device there is no more free space available " msgstr "" @@ -7744,45 +7752,45 @@ msgid "Advanced Search" msgstr "Avancerad sökning" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 -msgid "Find entries that have..." -msgstr "Hitta poster som ..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 -msgid "&All these words:" -msgstr "&Alla dessa ord:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 -msgid "This exact &phrase:" -msgstr "Exakt denna fras:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 -msgid "&One or more of these words:" -msgstr "Ett eller flera av dessa &ord:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 -msgid "But dont show entries that have..." -msgstr "Men visa inte poster som har ..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 -msgid "Any of these &unwanted words:" -msgstr "Något av dessa oönskade ord:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 msgid "What kind of match to use:" msgstr "Vilket slags matchning skall användas:" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +msgid "Contains: the word or phrase matches anywhere in the metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +msgid "Equals: the word or phrase must match the entire metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 +msgid "" +"Regular expression: the expression must match anywhere in the metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +msgid "Find entries that have..." +msgstr "Hitta poster som ..." + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +msgid "&All these words:" +msgstr "&Alla dessa ord:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +msgid "This exact &phrase:" +msgstr "Exakt denna fras:" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 -msgid "Contains: the word or phrase matches anywhere in the metadata" -msgstr "Innehåller: ordet eller frasen matcher någonstans i metadata" +msgid "&One or more of these words:" +msgstr "Ett eller flera av dessa &ord:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 -msgid "Equals: the word or phrase must match an entire metadata field" -msgstr "Betydelse: ordet eller frasen som måste matcha ett helt metadatafält" +msgid "But dont show entries that have..." +msgstr "Men visa inte poster som har ..." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 -msgid "" -"Regular expression: the expression must match anywhere in the metadata" -msgstr "Reguljärt uttryck: uttrycket måste passa in någonstans i metadata" +msgid "Any of these &unwanted words:" +msgstr "Något av dessa oönskade ord:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 msgid "" @@ -7824,7 +7832,7 @@ msgstr "Ange etikett separerade med mellanslag" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:219 msgid "&Clear" -msgstr "%Rensa" +msgstr "&Rensa" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:220 msgid "Search only in specific fields:" @@ -8622,47 +8630,47 @@ msgstr "Markerat för borttagning" msgid "Double click to edit me

" msgstr "Dubbelklicka för att redigera mig

" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:147 msgid "Hide column %s" msgstr "Dölj kolumn %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 msgid "Sort on %s" msgstr "Sortera på %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 msgid "Ascending" msgstr "Stigande" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:156 msgid "Descending" msgstr "Fallande" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 msgid "Change text alignment for %s" msgstr "Ändra textjustering för %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Left" msgstr "Vänster" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Right" msgstr "till höger" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:171 msgid "Center" msgstr "Centrera" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:190 msgid "Show column" msgstr "Visa kolumn" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202 msgid "Restore default layout" msgstr "Återställ standardutformning" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:743 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -13625,6 +13633,16 @@ msgstr "Hämta inte CSS-stilmallar." #~ "Automatically create the author sort entry based on the current author entry" #~ msgstr "Gissa hur författaren skall sorteras utifrån dess namn" +#~ msgid "Contains: the word or phrase matches anywhere in the metadata" +#~ msgstr "Innehåller: ordet eller frasen matcher någonstans i metadata" + +#~ msgid "Equals: the word or phrase must match an entire metadata field" +#~ msgstr "Betydelse: ordet eller frasen som måste matcha ett helt metadatafält" + +#~ msgid "" +#~ "Regular expression: the expression must match anywhere in the metadata" +#~ msgstr "Reguljärt uttryck: uttrycket måste passa in någonstans i metadata" + #~ msgid "" #~ "For help with writing advanced news recipes, please visit User Recipes" diff --git a/src/calibre/translations/th.po b/src/calibre/translations/th.po index 817a2a8e08..ddfe6247b1 100644 --- a/src/calibre/translations/th.po +++ b/src/calibre/translations/th.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2010-11-06 15:45+0000\n" -"PO-Revision-Date: 2010-11-06 00:56+0000\n" +"POT-Creation-Date: 2010-11-12 23:11+0000\n" +"PO-Revision-Date: 2010-11-13 04:51+0000\n" "Last-Translator: sksy \n" "Language-Team: Thai \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-07 04:47+0000\n" +"X-Launchpad-Export-Date: 2010-11-13 04:54+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:345 @@ -40,7 +40,7 @@ msgstr "ไม่มีอะไรเลย" #: /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/sony_cache.py:643 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:650 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 @@ -83,14 +83,14 @@ msgstr "ไม่มีอะไรเลย" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:78 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:119 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:153 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:611 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:817 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:819 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:620 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:826 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:828 #: /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:911 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:916 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:982 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:913 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:918 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:984 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:143 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:150 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:64 @@ -132,8 +132,8 @@ msgstr "ไม่มีอะไรเลย" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:141 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:927 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:936 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1243 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1249 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1252 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 @@ -201,7 +201,7 @@ msgstr "การทำงานของส่วนติดต่อผู้ msgid "Preferences" msgstr "ปรับแต่ง" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:17 +#: /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 " @@ -211,14 +211,14 @@ msgstr "" "และสำเนาไฟล์เหล่านั้นไว้เพื่อนำมาสร้างเป็นไฟล์ ZIP " "ปลั้กอินนี้จะทำงานทุกครั้งที่คุณเพิ่มไฟล์ HTML เข้าไปในไลเบอรลี่" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:53 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:51 msgid "" "Character encoding for the input HTML files. Common choices include: cp1252, " "latin1, iso-8859-1 and utf-8." msgstr "" "รหัสตัวอักษรที่ใช้โดยทั่วไป ได้แก่ cp1252, latin1, iso-8859-1 และ utf-8" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:60 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:58 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 " @@ -227,7 +227,7 @@ msgstr "" "สร้างชุดเอกสาร PMLZ ซึ่งประกอบด้วยไฟล์ PML และรูปทั้งหมดที่อยู่ในไดเรคตอรี่ " "pmlname_img หรือ images" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:94 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:92 msgid "Extract cover from comic files" msgstr "แยกปกออกจากหนังสือ" @@ -265,43 +265,43 @@ msgstr "อ่านข้อมูลจากหนังสือในไฟ msgid "Set metadata from %s files" msgstr "ตั้งค่าข้อมูลจาก %s ไฟล์" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:711 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:712 msgid "Look and Feel" msgstr "รูปลักษณ์" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:713 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:725 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:736 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:747 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:714 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:726 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:737 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:748 msgid "Interface" msgstr "ส่วนติดต่อ" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:717 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:718 msgid "Adjust the look and feel of the calibre interface to suit your tastes" msgstr "ปรับเปลี่ยนรูปลักษณ์ให้เหมาะกับรสนิยมในการใช้งานของคุณเอง" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:723 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:724 msgid "Behavior" msgstr "พฤติกรรม" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:729 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:730 msgid "Change the way calibre behaves" msgstr "เปลี่ยนแปลงพฤติกรรมในการทำงานของ calibre" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:734 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:206 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:209 msgid "Add your own columns" msgstr "เพิ่มคอลัมน์ของคุณเอง" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:740 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:741 msgid "Add/remove your own columns to the calibre book list" msgstr "เพิ่ม/ลดคอลัมน์ของคุณเองในรายการหนังสือของ calibre" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:745 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746 msgid "Customize the toolbar" msgstr "ปรับเปลี่ยนทูลบาร์" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:751 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:752 msgid "" "Customize the toolbars and context menus, changing which actions are " "available in each" @@ -309,87 +309,87 @@ msgstr "" "ปรับเปลี่ยนทูลบาร์และเมนูเนื้อหา " "โดยกำหนดการเรียกใช้โปรแกรมในแต่ละเมนูและทูลบาร์" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:757 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:758 msgid "Input Options" msgstr "ตัวเลือกอินพุท" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:759 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:770 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:781 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:760 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:771 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:782 msgid "Conversion" msgstr "แปลงไฟล์" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:763 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:764 msgid "Set conversion options specific to each input format" msgstr "กำหนดตัวเลือกในการแปลงไฟล์ให้เฉพาะเจาะจงกับรูปแบบอินพุท" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:768 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769 msgid "Common Options" msgstr "ตัวเลือกทั่วไป" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:774 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:775 msgid "Set conversion options common to all formats" msgstr "กำหนดตัวเลือกในการแปลงไฟล์ให้ใช้กับทุกรูปแบบ" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:779 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780 msgid "Output Options" msgstr "ตัวเลือกเอาท์พุท" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:785 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:786 msgid "Set conversion options specific to each output format" msgstr "กำหนดตัวเลือกในการแปลงไฟล์ให้เฉพาะเจาะจงกับรูปแบบเอาท์พุท" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:790 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791 msgid "Adding books" msgstr "เพิ่มหนังสือ" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:792 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:804 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:816 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:828 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:793 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:805 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:817 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:829 msgid "Import/Export" msgstr "นำเข้า/ส่งออก" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:796 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:797 msgid "Control how calibre reads metadata from files when adding books" msgstr "ควบคุมให้ calibre อ่านชุดข้อมูลจากไฟล์ในเวลาที่เพิ่มหนังสือ" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:802 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:803 msgid "Saving books to disk" msgstr "บันทึกหนังสือลงดิสก์" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:808 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:809 msgid "" "Control how calibre exports files from its database to disk when using Save " "to disk" msgstr "ควบคุมให้ calibre ส่งออกไฟล์จากฐานข้อมูลลงดิสก์เวลาสั่งบันทึก" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:814 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:815 msgid "Sending books to devices" msgstr "ส่งหนังสือไปยังอุปกรณ์ปลายทาง" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:820 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:821 msgid "Control how calibre transfers files to your ebook reader" msgstr "ควบคุมให้ calibre ส่งถ่ายไฟล์ลงในอีบุคส์รีดเดอร์" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:826 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:827 msgid "Metadata plugboards" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:832 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:833 msgid "Change metadata fields before saving/sending" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:837 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838 msgid "Sharing books by email" msgstr "แบ่งปันทางอีเมลล์" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:839 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:851 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:840 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:852 msgid "Sharing" msgstr "แบ่งปัน" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:843 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:844 msgid "" "Setup sharing of books via email. Can be used for automatic sending of " "downloaded news to your devices" @@ -397,11 +397,11 @@ msgstr "" "การตั้งค่าแบ่งปันทางอีเมลล์สามารถใช้เป็นช่องทางในการส่งข้่าวสารการเดาน์โหลดโด" "ยอัตโนมัติไปยังอุปกรณ์ปลายทางของท่านได้" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:849 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:850 msgid "Sharing over the net" msgstr "แบ่งปันผ่านเน็ท" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:855 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:856 msgid "" "Setup the calibre Content Server which will give you access to your calibre " "library from anywhere, on any device, over the internet" @@ -409,33 +409,33 @@ msgstr "" "ตั้งค่าให้ calibre เป็นเซิฟเวอร์จะทำให้คุณสามารถเข้ามายังห้องสมุด calibre " "ของคุณจาก ณ ที่แห่งใดก็ได้ จากอุปกรณ์สื่อสารใดก็ได้ผ่านอินเตอร์เน็ท" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:862 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863 msgid "Plugins" msgstr "ปลั๊กอิน" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:864 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:876 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:887 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:865 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:877 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:888 msgid "Advanced" msgstr "เชี่ยวชาญ" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:868 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:869 msgid "Add/remove/customize various bits of calibre functionality" msgstr "เพิ่ม/ลด/ปรับแต่ง ฟังก์ชั่นต่างๆของ calibre" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:874 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:875 msgid "Tweaks" msgstr "ปรับแต่ง" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:880 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:881 msgid "Fine tune how calibre behaves in various contexts" msgstr "ปรับพฤติกรรมของ calibre ที่จะตอบสนองกับส่วนต่างๆอย่างละเอียด" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:885 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886 msgid "Miscellaneous" msgstr "อื่นๆ" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:891 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:892 msgid "Miscellaneous advanced configuration" msgstr "การปรับแต่งค่าตั้งต้นอื่นๆ" @@ -480,7 +480,7 @@ msgstr "" "งมากหากคุณไม่รู้อะไรเลยเกี่ยวกับเอกสารที่จะนำเข้า" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:59 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:436 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:444 msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "" @@ -492,62 +492,62 @@ msgid "This profile is intended for the SONY PRS 300." msgstr "ชุดข้อมูลนี้ทำมาสำหรับ SONY PRS 300 โดยเฉพาะ" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:80 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:476 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:484 msgid "This profile is intended for the SONY PRS-900." msgstr "ชุดข้อมูลนี้ทำมาสำหรับ SONY PRS-900 โดยเฉพาะ" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:88 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:506 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:513 msgid "This profile is intended for the Microsoft Reader." msgstr "ชุดข้อมูลนี้ทำมาสำหรับ Microsoft Reader โดยเฉพาะ" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:99 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:517 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:524 msgid "This profile is intended for the Mobipocket books." msgstr "ชุดข้อมูลนี้ทำมาสำหรับ Mobipocket books โดยเฉพาะ" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:112 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:530 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:537 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "ชุดข้อมูลนี้ทำมาสำหรับ Hanlin V3 และรุ่นที่ลอกแบบ โดยเฉพาะ" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:124 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:542 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:549 msgid "This profile is intended for the Hanlin V5 and its clones." msgstr "ชุดข้อมูลนี้ทำมาสำหรับ Hanlin V5 และรุ่นลอกแบบ โดยเฉพาะ" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:134 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:550 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:557 msgid "This profile is intended for the Cybook G3." msgstr "ชุดข้อมูลนี้ทำมาสำหรับ Cybook G3 โดยเฉพาะ" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:147 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:563 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:570 msgid "This profile is intended for the Cybook Opus." msgstr "ชุดข้อมูลนี้ทำมาสำหรับ Cybook Opus โดยเฉพาะ" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:159 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:576 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:583 msgid "This profile is intended for the Amazon Kindle." msgstr "ชุดข้อมูลนี้ทำมาสำหรับ Amazon Kindle โดยเฉพาะ" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:171 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:617 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:631 msgid "This profile is intended for the Irex Illiad." msgstr "ชุดข้อมูลนี้ทำมาสำหรับ Irex Illiad โดยเฉพาะ" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:183 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:630 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "ชุดข้อมูลนี้ทำมาสำหรับ IRex Digital Reader 1000 โดยเฉพาะ" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:196 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 msgid "This profile is intended for the IRex Digital Reader 800." msgstr "ชุดข้อมูลนี้ทำมาสำหรับ IRex Digital Reader 800 โดยเฉพาะ" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:208 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 msgid "This profile is intended for the B&N Nook." msgstr "ชุดข้อมูลนี้ทำมาสำหรับ B&N Nook โดยเฉพาะ" @@ -565,30 +565,30 @@ msgstr "" "ซึ่งจะเหมาะกับเอกสารที่คุณผลิตแล้วต้องการให้อ่านบนคอมพิวเตอร์ " "หรืออุปกรณ์มาตรฐานกลุ่มหนึ่ง" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:273 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:276 msgid "" "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "" "เจาะจงสำหรับ iPad และอุปกรณ์ที่มีลักษณะเดียวกันซึ่งมีค่ารีโซลูชั่นเท่ากับ " "768x1024" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:427 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:435 msgid "Intended for generic tablet devices, does no resizing of images" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:454 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:462 msgid "This profile is intended for the Kobo Reader." msgstr "ชุดข้อมูลนี้ทำมาสำหรับ Kobo Reader โดยเฉพาะ" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:467 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:475 msgid "This profile is intended for the SONY PRS-300." msgstr "ชุดข้อมูลนี้ทำมาสำหรับ SONY PRS-300 โดยเฉพาะ" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:485 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:493 msgid "This profile is intended for the 5-inch JetBook." msgstr "ชุดข้อมูลนี้ทำมาสำหรับ JetBook ขนาด 5 นิ้ว โดยเฉพาะ" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:494 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:502 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." @@ -596,13 +596,13 @@ msgstr "" "ชุดข้อมูลนี้ทำมาสำหรับบรรทัดใน SONY PRS โดยเฉพาะรุ่น 500/505/700 " "เป็นต้นในโหมดของแนวขวาง ซึ่งเหมาะกับพวกหนังสือการ์ตูน" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:597 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:609 msgid "This profile is intended for the Amazon Kindle DX." msgstr "ชุดข้อมูลนี้ทำมาสำหรับ Amazon Kindle DX โดยเฉพาะ" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:686 msgid "This profile is intended for the Sanda Bambook." -msgstr "" +msgstr "ชุดข้อมูลนี้ใช้สำหรับ แซนด้า แบมบุค" #: /home/kovid/work/calibre/src/calibre/customize/ui.py:34 msgid "Installed plugins" @@ -670,7 +670,7 @@ msgstr "พักใช้งานเนมปลั้กอิน" msgid "Communicate with Android phones." msgstr "ติดต่อกับโทรศัพท์แอนดรอยด์" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:53 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:56 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" @@ -678,7 +678,7 @@ msgstr "" "รายการไดเรคตอรี่ที่คั่นด้วยคอมม่าเพื่อส่งอีบุคส์ไปยังอุปกรณ์ปลายทางซึ่งจะใช้ช" "ื่อที่พบครั้งแรกก่อน" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:95 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:98 msgid "Communicate with S60 phones." msgstr "ติดต่อกับโทรศัพท์ S60" @@ -999,7 +999,7 @@ msgstr "ติดต่อกับ Sweex MM300" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:79 msgid "Communicate with the Digma Q600" -msgstr "" +msgstr "ติดต่อกับ ดิ๊กม่า คิว 600" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:88 msgid "Communicate with the Kogan" @@ -1038,6 +1038,14 @@ msgstr "The Nook" msgid "Communicate with the Nook eBook reader." msgstr "ติดต่อกับ The Nook eBook reader" +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 +msgid "Nook Color" +msgstr "นุ๊กคัลเลอร์" + +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 +msgid "Communicate with the Nook Color eBook reader." +msgstr "ติดต่อกับเครื่องอ่านอีบุ๊คนุ๊กคัลเลอร์" + #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." msgstr "ติดต่อกับ Nuut2 eBook reader" @@ -1077,7 +1085,7 @@ msgstr "ติดต่อกับ Newsmy reader" #: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:47 msgid "Communicate with the Pico reader." -msgstr "" +msgstr "ติดต่อกับเครื่องอ่านพิคโก" #: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:57 msgid "Communicate with the iPapyrus reader." @@ -1119,6 +1127,7 @@ msgid "" "The main memory of %s is read only. This usually happens because of file " "system errors." msgstr "" +"หน่วยความจำหลักของ %s อยู่ในสถานะอ่านอย่างเดียวส่วนใหญ่เกิดจากระบบไฟล์มีปัญหา" #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:815 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:817 @@ -1127,7 +1136,7 @@ msgstr "ตัวเครื่องไม่มี สดอเรจ กา #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:819 msgid "Selected slot: %s is not supported." -msgstr "" +msgstr "สลอทที่เลือก :%s ยังไม่มีโปรแกรมสนับสนุน" #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:848 msgid "There is insufficient free space in main memory" @@ -1210,6 +1219,9 @@ msgid "" "of less than 256 may result in blurred text on your device if you are " "creating your comics in EPUB format." msgstr "" +"จำนวนสีของการแปลงภาพให้เป็นขาวดำ ค่าเริ่มต้น:%default ตั้งค่าต่ำกว่า 256 " +"สีจะทำให้ตัวอักษรบนเครื่องของท่านไม่ชัดในกรณีที่แปลงไฟล์หนังสือการ์ตูนเป็นแบบ" +" EPUB" #: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:262 msgid "" @@ -2280,8 +2292,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:605 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:45 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:102 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:65 @@ -2315,8 +2327,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:39 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:206 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:189 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:104 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:79 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:325 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1131 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:178 @@ -2596,7 +2608,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1399 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 msgid "Cover" msgstr "" @@ -2631,74 +2643,74 @@ msgstr "" msgid "All articles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:259 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:262 msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1400 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 msgid "Title Page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 #: /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:199 msgid "Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 msgid "Index" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 msgid "Glossary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 msgid "Acknowledgements" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 msgid "Bibliography" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 msgid "Colophon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 msgid "Copyright" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 msgid "Dedication" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 msgid "Epigraph" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 msgid "Foreword" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 msgid "List of Illustrations" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 msgid "List of Tables" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 msgid "Notes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1416 msgid "Preface" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1417 msgid "Main Text" msgstr "" @@ -3630,7 +3642,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:391 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:739 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 msgid "Not allowed" msgstr "" @@ -3697,7 +3709,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:720 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:683 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:685 #: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:189 msgid "Failed" msgstr "" @@ -4406,11 +4418,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:25 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:49 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:403 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:119 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:120 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:121 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:137 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:320 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1117 @@ -4419,10 +4431,10 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:26 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:123 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:124 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:319 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:24 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:117 @@ -4453,7 +4465,7 @@ msgstr "" msgid "None" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:404 msgid "Double-click to open Book Details window" msgstr "" @@ -4666,6 +4678,19 @@ msgstr "" msgid "Tab template for catalog.ui" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:25 +msgid "Bold" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:26 +msgid "Italic" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:28 +msgid "Underline" +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 " @@ -4673,11 +4698,11 @@ msgid "" "specified in the Preferences" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:70 msgid "Bulk Convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 msgid "Options specific to the output format." msgstr "" @@ -5161,6 +5186,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:185 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:353 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 msgid "&Series:" msgstr "" @@ -5346,7 +5372,7 @@ msgid "Options specific to the input format." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:117 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:53 msgid "Dialog" @@ -5533,8 +5559,8 @@ msgid "Force maximum line length" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:72 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:62 @@ -5838,10 +5864,10 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:982 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:990 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1083 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1168 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1287 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1295 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1089 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1174 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1293 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1301 msgid "No suitable formats" msgstr "" @@ -5866,47 +5892,47 @@ msgstr "" msgid "Sent by email:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1042 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1048 msgid "News:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1049 msgid "Attached is the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1054 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1060 msgid "Sent news to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1084 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1169 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1288 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1090 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1175 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1294 msgid "Auto convert the following books before uploading to the device?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1114 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1120 msgid "Sending catalogs to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1201 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1207 msgid "Sending news to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1254 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1260 msgid "Sending books to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1296 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1302 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:1360 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1366 msgid "No space on device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1367 msgid "" "

Cannot upload books to device there is no more free space available " msgstr "" @@ -5957,15 +5983,15 @@ msgstr "" msgid "&Paste from clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:80 msgid "Fit &cover within view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:81 msgid "&Previous" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:82 msgid "&Next" msgstr "" @@ -6128,6 +6154,7 @@ msgid "Set options for converting %s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:211 msgid "&Title:" msgstr "" @@ -6378,13 +6405,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:274 msgid "" "You can destroy your library using this feature. Changes are " -"permanent. There is no undo function. This feature is experimental, and " -"there may be bugs. You are strongly encouraged to back up your library " -"before proceeding.

Search and replace in text fields using character " -"matching or regular expressions. " +"permanent. There is no undo function. You are strongly encouraged to back up " +"your library before proceeding.

Search and replace in text fields using " +"character matching or regular expressions. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:282 msgid "" "In character mode, the field is searched for the entered search text. The " "text is replaced by the specified replacement text everywhere it is found in " @@ -6394,7 +6420,7 @@ msgid "" "text will match both upper- and lower-case letters" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:293 msgid "" "In regular expression mode, the search text is an arbitrary python-" "compatible regular expression. The replacement text can contain " @@ -6409,30 +6435,30 @@ msgid "" "function." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:436 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:438 msgid "You must specify a destination when source is a composite field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:528 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:536 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:631 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:633 msgid "Search/replace invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:531 msgid "" "Authors cannot be set to the empty string. Book title %s not processed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:537 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:539 msgid "Title cannot be set to the empty string. Book title %s not processed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:632 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:634 msgid "Search pattern is invalid: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:669 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:671 msgid "" "Applying changes to %d books.\n" "Phase {0} {1}%%." @@ -6673,7 +6699,7 @@ msgid "Your test:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:401 -msgid "&Search and replace (experimental)" +msgid "&Search and replace" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:91 @@ -7183,61 +7209,98 @@ msgstr "" msgid "Negate" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 msgid "Advanced Search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:119 -msgid "Find entries that have..." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:120 -msgid "&All these words:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:121 -msgid "This exact &phrase:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:122 -msgid "&One or more of these words:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:123 -msgid "But dont show entries that have..." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:124 -msgid "Any of these &unwanted words:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 msgid "What kind of match to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:126 -msgid "Contains: the word or phrase matches anywhere in the metadata" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:127 -msgid "Equals: the word or phrase must match an entire metadata field" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +msgid "Equals: the word or phrase must match the entire metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 msgid "" -"Regular expression: the expression must match anywhere in the metadata" +"Regular expression: the expression must match anywhere in the metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:129 -msgid " " -msgstr " " +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +msgid "Find entries that have..." +msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +msgid "&All these words:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +msgid "This exact &phrase:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +msgid "&One or more of these words:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 +msgid "But dont show entries that have..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 +msgid "Any of these &unwanted words:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 msgid "" "See the User Manual for more help" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:210 +msgid "A&dvanced Search" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:212 +msgid "Enter the title." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:213 +msgid "&Author:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 +msgid "Ta&gs:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:216 +msgid "Enter an author's name. Only one author can be used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:217 +msgid "" +"Enter a series name, without an index. Only one series name can be used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:218 +msgid "Enter tags separated by spaces" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:219 +msgid "&Clear" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:220 +msgid "Search only in specific fields:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:221 +msgid "Titl&e/Author/Series ..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/select_formats.py:45 msgid "Choose formats" msgstr "" @@ -7883,37 +7946,41 @@ msgid "" "Books display will be restricted to those matching the selected saved search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:170 +msgid "Shift+Ctrl+F" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:173 msgid "Advanced search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:178 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/layout.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:181 msgid "&Go!" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:187 msgid "Do Quick Search (you can also press the Enter key)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:193 msgid "Reset Quick Search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:205 msgid "Copy current search text (instead of search name)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:211 msgid "Save current search under the name shown in the box" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:217 msgid "Delete current saved search" msgstr "" @@ -7970,47 +8037,47 @@ msgstr "" msgid "Double click to edit me

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:147 msgid "Hide column %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 msgid "Sort on %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 msgid "Ascending" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:156 msgid "Descending" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 msgid "Change text alignment for %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:171 msgid "Center" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:190 msgid "Show column" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202 msgid "Restore default layout" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:740 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:743 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -9758,7 +9825,7 @@ msgid "Options to customize the ebook viewer" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:704 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:708 msgid "Remember last used window size" msgstr "" @@ -9930,65 +9997,65 @@ msgstr "" msgid "No matches found for: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:481 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:485 msgid "Loading flow..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:517 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:521 msgid "Laying out %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:552 msgid "Bookmark #%d" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:556 msgid "Add bookmark" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:557 msgid "Enter title for bookmark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:563 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:567 msgid "Manage Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:600 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:604 msgid "Loading ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:612 msgid "DRM Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:609 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:613 msgid "

This book is protected by DRM" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:613 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:617 msgid "Could not open ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:691 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:695 msgid "Options to control the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:698 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:702 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:701 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:705 msgid "" "If specified, viewer window will try to open full screen when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:710 msgid "Print javascript alert and console messages to the console" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:716 msgid "" "%prog [options] file\n" "\n" @@ -11989,6 +12056,9 @@ msgstr "" msgid "Do not download CSS stylesheets." msgstr "" +#~ msgid " " +#~ msgstr " " + #~ msgid "Communicate with the Nokia 810 internet tablet." #~ msgstr "ติดต่อกับ Nokia 810 internet tablet" From ab527157db84cfcd2d58973bcc110cb4d61653e1 Mon Sep 17 00:00:00 2001 From: Translators <> Date: Sun, 14 Nov 2010 05:05:50 +0000 Subject: [PATCH 011/377] Launchpad automatic translations update. --- src/calibre/translations/ca.po | 15 ++++++++----- src/calibre/translations/cs.po | 31 ++++++++++++++------------- src/calibre/translations/da.po | 16 +++++++------- src/calibre/translations/en_GB.po | 2 +- src/calibre/translations/eu.po | 15 +++++++------ src/calibre/translations/fr.po | 31 ++++++++++++++------------- src/calibre/translations/it.po | 2 +- src/calibre/translations/sr.po | 2 +- src/calibre/translations/sv.po | 2 +- src/calibre/translations/th.po | 35 ++++++++++++++++++++++++------- 10 files changed, 91 insertions(+), 60 deletions(-) diff --git a/src/calibre/translations/ca.po b/src/calibre/translations/ca.po index 7dc7075706..150b871a0d 100644 --- a/src/calibre/translations/ca.po +++ b/src/calibre/translations/ca.po @@ -11,13 +11,13 @@ msgstr "" "Project-Id-Version: ca\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-11-12 23:11+0000\n" -"PO-Revision-Date: 2010-11-12 20:28+0000\n" +"PO-Revision-Date: 2010-11-13 12:22+0000\n" "Last-Translator: FerranRius \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-13 04:52+0000\n" +"X-Launchpad-Export-Date: 2010-11-14 05:03+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -1063,11 +1063,11 @@ msgstr "Comunica't amb un lector Nook." #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 msgid "Nook Color" -msgstr "" +msgstr "Nook Color" #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 msgid "Communicate with the Nook Color eBook reader." -msgstr "" +msgstr "Comunica't amb un lector Nook Color." #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." @@ -6782,7 +6782,7 @@ msgstr "ISBN" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:162 msgid "Finding metadata..." -msgstr "S'esta cercant les metadades..." +msgstr "S'està cercant les metadades..." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:176 msgid "Could not find metadata" @@ -7852,15 +7852,20 @@ msgstr "Tipus de coincidència que s'ha de fer servir:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "" +"Conté: la paraula o frase coincideix amb qualsevol lloc del camp de les " +"metadades" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 msgid "Equals: the word or phrase must match the entire metadata field" msgstr "" +"Equival: la paraula o frase ha de coincidir amb tot el camp de les metadades" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 msgid "" "Regular expression: the expression must match anywhere in the metadata field" msgstr "" +"Expressió regular: l'expressió ha de coincidir amb qualsevol lloc del camp " +"de les metadades" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 msgid "Find entries that have..." diff --git a/src/calibre/translations/cs.po b/src/calibre/translations/cs.po index 88f90c8704..972625bad5 100644 --- a/src/calibre/translations/cs.po +++ b/src/calibre/translations/cs.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-11-12 23:11+0000\n" -"PO-Revision-Date: 2010-11-12 22:54+0000\n" -"Last-Translator: Kovid Goyal \n" +"PO-Revision-Date: 2010-11-13 20:32+0000\n" +"Last-Translator: Aleš Bajtalon \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-13 04:52+0000\n" +"X-Launchpad-Export-Date: 2010-11-14 05:04+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -990,7 +990,7 @@ msgstr "Spojit se s Sweex MM300" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:79 msgid "Communicate with the Digma Q600" -msgstr "" +msgstr "Komunikovat se čtečkou Digma Q600" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:88 msgid "Communicate with the Kogan" @@ -1031,11 +1031,11 @@ msgstr "Komunikuje se čtečkou Nook." #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 msgid "Nook Color" -msgstr "" +msgstr "Nook Color" #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 msgid "Communicate with the Nook Color eBook reader." -msgstr "" +msgstr "Komunikovat se čtečkou knih Nook Color" #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." @@ -5661,7 +5661,7 @@ msgstr "TXT Výstup" #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:51 msgid "&Line ending style:" -msgstr "" +msgstr "Styl konce řádku" #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:53 msgid "&Maximum line length:" @@ -5793,7 +5793,7 @@ msgstr "Nehodnoceno" #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:156 msgid "Set '%s' to today" -msgstr "" +msgstr "Nastavit '%s' na dnes" #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:266 msgid " index:" @@ -5892,7 +5892,7 @@ msgstr "Hlavní paměť" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:492 msgid "Send specific format to" -msgstr "" +msgstr "Poslat specifický formát" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:493 msgid "Send and delete from library" @@ -5908,7 +5908,7 @@ msgstr "Cyba komunikace se zařízením" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:679 msgid "Select folder to open as device" -msgstr "" +msgstr "Označit složku a otevřít jako zařízení" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:726 msgid "Error talking to device" @@ -5971,7 +5971,7 @@ msgstr "od" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:939 msgid "in the %s format." -msgstr "" +msgstr "v %s formátu" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:952 msgid "Sending email to" @@ -5994,6 +5994,7 @@ msgstr "Automaticky konvertovat knihy před emailovým odesláním?" msgid "" "Could not email the following books as no suitable formats were found:" msgstr "" +"Nemohu emailovat následující knihy, nebyl nalezen žádný vhodný formát:" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1009 msgid "Failed to email books" @@ -11772,7 +11773,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:152 msgid "TAGS: %s
" -msgstr "" +msgstr "TAGY: %s
" #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:157 msgid "SERIES: %s [%s]
" @@ -12068,10 +12069,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:40 msgid "Username for sites that require a login to access content." msgstr "" +"Uživatelské jméno pro stránky, které vyžadují přihlášení pro přístup k " +"obsahu." #: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:43 msgid "Password for sites that require a login to access content." -msgstr "" +msgstr "Heslo pro stránky, které vyžadují přihlášení pro přístup k obsahu." #: /home/kovid/work/calibre/src/calibre/web/feeds/input.py:47 msgid "" @@ -12124,7 +12127,7 @@ msgstr "Pokouším se stáhnout obálku..." #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:871 msgid "Generating masthead..." -msgstr "" +msgstr "Generování tiráže..." #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:952 msgid "Starting download [%d thread(s)]..." diff --git a/src/calibre/translations/da.po b/src/calibre/translations/da.po index dd93151e79..03f7ea5495 100644 --- a/src/calibre/translations/da.po +++ b/src/calibre/translations/da.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-11-12 23:11+0000\n" -"PO-Revision-Date: 2010-11-12 22:04+0000\n" -"Last-Translator: Kovid Goyal \n" +"PO-Revision-Date: 2010-11-13 06:55+0000\n" +"Last-Translator: Glenn \n" "Language-Team: Danish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-13 04:52+0000\n" +"X-Launchpad-Export-Date: 2010-11-14 05:04+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -1050,11 +1050,11 @@ msgstr "Kommunikér med Nook e-bogslæser." #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 msgid "Nook Color" -msgstr "" +msgstr "Nook Color" #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 msgid "Communicate with the Nook Color eBook reader." -msgstr "" +msgstr "Kommunikér med Nook Color eBook reader." #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." @@ -7752,16 +7752,16 @@ msgstr "Hvilken slags match skal anvendes:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 msgid "Contains: the word or phrase matches anywhere in the metadata field" -msgstr "" +msgstr "Indeholder: Ordet eller frasen matcher overalt i metadatafeltet" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 msgid "Equals: the word or phrase must match the entire metadata field" -msgstr "" +msgstr "Lig med: Ordet eller frasen skal matchr med hele metadatafeltet" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 msgid "" "Regular expression: the expression must match anywhere in the metadata field" -msgstr "" +msgstr "Regulært udtryk: Udtrykket skal matche overalt i metadatafeltet" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 msgid "Find entries that have..." diff --git a/src/calibre/translations/en_GB.po b/src/calibre/translations/en_GB.po index de8c211c01..fcf30b4401 100644 --- a/src/calibre/translations/en_GB.po +++ b/src/calibre/translations/en_GB.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-11-13 04:55+0000\n" +"X-Launchpad-Export-Date: 2010-11-14 05:05+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 diff --git a/src/calibre/translations/eu.po b/src/calibre/translations/eu.po index 39c6d3ad4c..ff9ee685d6 100644 --- a/src/calibre/translations/eu.po +++ b/src/calibre/translations/eu.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-11-12 23:11+0000\n" -"PO-Revision-Date: 2010-11-12 22:57+0000\n" -"Last-Translator: Kovid Goyal \n" +"PO-Revision-Date: 2010-11-14 04:08+0000\n" +"Last-Translator: gorkaazk \n" "Language-Team: Basque \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-13 04:51+0000\n" +"X-Launchpad-Export-Date: 2010-11-14 05:03+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -1069,11 +1069,11 @@ msgstr "Komunikatu Nook eBook irakurgailuarekin." #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 msgid "Nook Color" -msgstr "" +msgstr "Nook Color" #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 msgid "Communicate with the Nook Color eBook reader." -msgstr "" +msgstr "Jar zaitez Nook Color eBook reader horrekin harremanetan." #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." @@ -7981,15 +7981,18 @@ msgstr "Zein motatako bat etortze erabili:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "" +"Badauka: hitza edo esaldia metadatu eremuko edozein tokitan bat dator" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 msgid "Equals: the word or phrase must match the entire metadata field" -msgstr "" +msgstr "Berdinak: hitza edo esaldia metadatu eremu osoan bat etorri behar du" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 msgid "" "Regular expression: the expression must match anywhere in the metadata field" msgstr "" +"Adierazpen erregularra: adierazpenak metadatu eremuko edozein tokitan bat " +"etorri behar" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 msgid "Find entries that have..." diff --git a/src/calibre/translations/fr.po b/src/calibre/translations/fr.po index a93dc4d4b4..cc1274a4c5 100644 --- a/src/calibre/translations/fr.po +++ b/src/calibre/translations/fr.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre 0.4.22\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-11-12 23:11+0000\n" -"PO-Revision-Date: 2010-11-12 22:36+0000\n" -"Last-Translator: Kovid Goyal \n" +"PO-Revision-Date: 2010-11-13 11:33+0000\n" +"Last-Translator: Vincent C. \n" "Language-Team: Français \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-13 04:52+0000\n" +"X-Launchpad-Export-Date: 2010-11-14 05:04+0000\n" "X-Generator: Launchpad (build Unknown)\n" "X-Poedit-Bookmarks: 1177,1104,-1,-1,-1,-1,-1,-1,-1,-1\n" "Generated-By: pygettext.py 1.5\n" @@ -1060,7 +1060,7 @@ msgstr "Communiquer avec le lecteur d'ebook Nook." #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 msgid "Nook Color" -msgstr "" +msgstr "Nook Couleur" #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 msgid "Communicate with the Nook Color eBook reader." @@ -5175,11 +5175,11 @@ msgstr "Gabarit d'étiquette pour catalog.ui" #: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:25 msgid "Bold" -msgstr "" +msgstr "Gras" #: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:26 msgid "Italic" -msgstr "" +msgstr "Italique" #: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:27 #: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:28 @@ -7367,7 +7367,7 @@ msgstr "Votre test :" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:401 msgid "&Search and replace" -msgstr "" +msgstr "Rechercher et remplacer" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:91 msgid "Last modified: %s" @@ -7970,40 +7970,41 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:210 msgid "A&dvanced Search" -msgstr "" +msgstr "Recherche avancée" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:212 msgid "Enter the title." -msgstr "" +msgstr "Entrer le titre." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:213 msgid "&Author:" -msgstr "" +msgstr "&Auteur:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 msgid "Ta&gs:" -msgstr "" +msgstr "Étiquettes:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:216 msgid "Enter an author's name. Only one author can be used." -msgstr "" +msgstr "Entrer un nom d'auteur. Un seul auteur peut être utilisé." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:217 msgid "" "Enter a series name, without an index. Only one series name can be used." msgstr "" +"Entrer un nom de séries, sans index. Un seul nom de séries peut être utilisé." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:218 msgid "Enter tags separated by spaces" -msgstr "" +msgstr "Entrer des étiquettes séparées par des espaces" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:219 msgid "&Clear" -msgstr "" +msgstr "Effacer" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:220 msgid "Search only in specific fields:" -msgstr "" +msgstr "Chercher seulement dans les champs spécifiques:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:221 msgid "Titl&e/Author/Series ..." diff --git a/src/calibre/translations/it.po b/src/calibre/translations/it.po index ed6e43bc88..428371e543 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: 2010-11-13 04:53+0000\n" +"X-Launchpad-Export-Date: 2010-11-14 05:04+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" diff --git a/src/calibre/translations/sr.po b/src/calibre/translations/sr.po index fb0128dd16..41c0c58861 100644 --- a/src/calibre/translations/sr.po +++ b/src/calibre/translations/sr.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-11-13 04:54+0000\n" +"X-Launchpad-Export-Date: 2010-11-14 05:05+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 3c3466805e..656b1906ea 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: 2010-11-13 04:54+0000\n" +"X-Launchpad-Export-Date: 2010-11-14 05:05+0000\n" "X-Generator: Launchpad (build Unknown)\n" "X-Poedit-Country: SWEDEN\n" "X-Poedit-Language: Swedish\n" diff --git a/src/calibre/translations/th.po b/src/calibre/translations/th.po index ddfe6247b1..0c7940a1a7 100644 --- a/src/calibre/translations/th.po +++ b/src/calibre/translations/th.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-11-12 23:11+0000\n" -"PO-Revision-Date: 2010-11-13 04:51+0000\n" +"PO-Revision-Date: 2010-11-13 05:27+0000\n" "Last-Translator: sksy \n" "Language-Team: Thai \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-13 04:54+0000\n" +"X-Launchpad-Export-Date: 2010-11-14 05:05+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:345 @@ -1576,21 +1576,29 @@ msgstr "" msgid "" "Set the top margin in pts. Default is %default. Note: 72 pts equals 1 inch" msgstr "" +"ตั้งค่ากั้นหน้าด้านบนเป็นหน่วยพอยท์ ค่าเริ่มต้นคือ %default หมายเหตุ 72 " +"พอยท์เท่ากับ 1 นิ้ว" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:294 msgid "" "Set the bottom margin in pts. Default is %default. Note: 72 pts equals 1 inch" msgstr "" +"ตั้งค่ากั้นหน้าด้านล่างเป็นหน่วยพอยท์ ค่าเริ่มต้นคือ %default หมายเหตุ 72 " +"พอยท์เท่ากับ 1 นิ้ว" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:299 msgid "" "Set the left margin in pts. Default is %default. Note: 72 pts equals 1 inch" msgstr "" +"ตั้งค่ากั้นหน้าด้านซ้ายเป็นหน่วยพอยท์ ค่าเริ่มต้นคือ %default หมายเหตุ 72 " +"พอยท์เท่ากับ 1 นิ้ว" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:304 msgid "" "Set the right margin in pts. Default is %default. Note: 72 pts equals 1 inch" msgstr "" +"ตั้งค่ากั้นหน้าด้านขวาเป็นหน่วยพอยท์ ค่าเริ่มต้นคือ %default หมายเหตุ 72 " +"พอยท์เท่ากับ 1 นิ้ว" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:310 msgid "" @@ -1607,6 +1615,9 @@ msgid "" "1.5em. Spacing removal will not work if the source file does not use " "paragraphs (

or

tags)." msgstr "" +"ขจัดช่องว่างระหว่างพารากราฟออกจะทำให้ระยะห่างอยู่ที่ 1.5em " +"แต่ฟังก์ชั่นนี้จะใช้ไม่ได้กับไฟล์ต้นฉบับที่ไม่มีการใช้แทรคพารากราฟ (แทรค

" +"หรือ

)" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:327 msgid "" @@ -1614,6 +1625,9 @@ msgid "" "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:334 msgid "" @@ -1626,6 +1640,8 @@ 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:347 msgid "" @@ -1726,7 +1742,7 @@ msgstr "กำหนดชื่อผู้แต่ง ถ้ามีหล #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:458 msgid "The version of the title to be used for sorting. " -msgstr "" +msgstr "ใช้เลขจำนวนครั้งในการพิมพ์เป็นดัชนีในการเรียงลำดับ " #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:462 msgid "String to be used when sorting by author. " @@ -1754,7 +1770,7 @@ msgstr "ตั้งค่าชุดหนังสือของอีบุ #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:482 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:62 msgid "Set the index of the book in this series." -msgstr "" +msgstr "ตั้งค่าดัชนีหนังสือในชุด" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:486 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:64 @@ -1787,11 +1803,11 @@ msgstr "กำหนดวันที่พิมพ์" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:510 msgid "Set the book timestamp (used by the date column in calibre)." -msgstr "" +msgstr "ตั้งค่าเวลาของหนังสือ (จะถูกใช้ในคอลัมวันที่ในโปรแกรมคาริเบอร์)" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:610 msgid "Could not find an ebook inside the archive" -msgstr "" +msgstr "ไม่พบอีบุคส์ในที่เก็บไฟล์" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:668 msgid "Values of series index and rating must be numbers. Ignoring" @@ -1799,7 +1815,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:675 msgid "Failed to parse date/time" -msgstr "" +msgstr "ไม่สามารถใส่วันเวลาลงไปได้" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:830 msgid "Converting input to HTML..." @@ -1807,7 +1823,7 @@ msgstr "แปลงอินพุทเป็น HTML" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:858 msgid "Running transforms on ebook..." -msgstr "" +msgstr "กำลังทำการแปลงอีบุ๊ค" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:945 msgid "Creating" @@ -1912,6 +1928,9 @@ msgid "" "JetBook Lite. Without this option, such devices will display the cover as a " "blank page." msgstr "" +"ห้ามใช้ภาพในรูปแบบ SVG เป็นปกหนังสือ ใช้อ๊อฟชั่นนี้ถ้าต้องการให้ ไฟล์ EPUB " +"ของท่านสามารถใช้กับ ไอโฟน หรือ เจ็ทบุคได้ " +"เพราะถ้าไม่ใช้อ๊อฟชั่นนี้จะทำให้รูปหน้าปกแสดงเป็นหน้าว่างๆ" #: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:94 msgid "" From 686b1e80b1096bdf97f27a56386652ff911f7912 Mon Sep 17 00:00:00 2001 From: GRiker Date: Sun, 14 Nov 2010 03:16:12 -0700 Subject: [PATCH 012/377] GwR wip catalog revisions --- resources/catalog/stylesheet.css | 30 +++++++++++++++++++++--------- src/calibre/library/catalog.py | 16 ++++++++++++++-- 2 files changed, 35 insertions(+), 11 deletions(-) diff --git a/resources/catalog/stylesheet.css b/resources/catalog/stylesheet.css index f57aafdd44..d3d093743a 100644 --- a/resources/catalog/stylesheet.css +++ b/resources/catalog/stylesheet.css @@ -12,8 +12,8 @@ p.title { p.author { margin-top:0em; margin-bottom:0em; - text-align: left; - text-indent: 1em; + text-align: center; + text-indent: 0em; font-size:large; } @@ -27,17 +27,29 @@ p.author_index { } p.tags { - margin-top:0em; + margin-top:0.5em; margin-bottom:0em; text-align: left; - text-indent: 1em; - font-size:small; + text-indent: 0.0in; } -p.description { - text-align:left; - font-style:normal; - margin-top: 0em; +p.formats { + font-size:90%; + margin-top:0em; + margin-bottom:0.5em; + text-align: left; + text-indent: 0.0in; + } + +/* +div.description > p:first-child { + margin: 0 0 0 0; + text-indent: 0em; + } +*/ +div.description { + margin: 0 0 0 0; + text-indent: 1em; } p.date_index { diff --git a/src/calibre/library/catalog.py b/src/calibre/library/catalog.py index 270311b7a8..ad9aebac1b 100644 --- a/src/calibre/library/catalog.py +++ b/src/calibre/library/catalog.py @@ -1666,7 +1666,8 @@ class EPUB_MOBI(CatalogPlugin): elif self.opts.connected_kindle and title['id'] in self.bookmarked_books: authorTag.insert(0, NavigableString(self.READING_SYMBOL + " by ")) else: - authorTag.insert(0, NavigableString(self.NOT_READ_SYMBOL + " by ")) + #authorTag.insert(0, NavigableString(self.NOT_READ_SYMBOL + " by ")) + authorTag.insert(0, NavigableString("by ")) authorTag.insert(1, aTag) ''' @@ -1695,6 +1696,7 @@ class EPUB_MOBI(CatalogPlugin): tagsTag = body.find(attrs={'class':'tags'}) ttc = 0 + ''' # Insert a spacer to match the author indent fontTag = Tag(soup,"font") fontTag['style'] = 'color:white;font-size:large' @@ -1703,6 +1705,7 @@ class EPUB_MOBI(CatalogPlugin): fontTag.insert(0, NavigableString(" by ")) tagsTag.insert(ttc, fontTag) ttc += 1 + ''' for tag in title['tags']: aTag = Tag(soup,'a') @@ -1711,11 +1714,19 @@ class EPUB_MOBI(CatalogPlugin): aTag.insert(0,escape(NavigableString(tag))) emTag = Tag(soup, "em") emTag.insert(0, aTag) - if ttc < len(title['tags']): + if ttc < len(title['tags'])-1: emTag.insert(1, NavigableString(' · ')) tagsTag.insert(ttc, emTag) ttc += 1 + # Insert formats + if 'formats' in title: + formatsTag = body.find(attrs={'class':'formats'}) + formats = [] + for format in sorted(title['formats']): + formats.append(format.rpartition('.')[2].upper()) + formatsTag.insert(0, NavigableString(' · '.join(formats))) + # Insert the cover if available imgTag = Tag(soup,"img") if 'cover' in title: @@ -4238,6 +4249,7 @@ class EPUB_MOBI(CatalogPlugin):

 

+

 

From 12c0f70d2e221fc609ffa92bb9737f801b8936e6 Mon Sep 17 00:00:00 2001 From: Translators <> Date: Mon, 15 Nov 2010 04:59:27 +0000 Subject: [PATCH 013/377] Launchpad automatic translations update. --- src/calibre/translations/ca.po | 324 +++++++++++++++--------------- src/calibre/translations/en_GB.po | 15 +- src/calibre/translations/es.po | 16 +- src/calibre/translations/eu.po | 2 +- src/calibre/translations/nl.po | 151 +++++++------- src/calibre/translations/sr.po | 15 +- 6 files changed, 266 insertions(+), 257 deletions(-) diff --git a/src/calibre/translations/ca.po b/src/calibre/translations/ca.po index 150b871a0d..156c341567 100644 --- a/src/calibre/translations/ca.po +++ b/src/calibre/translations/ca.po @@ -11,18 +11,18 @@ msgstr "" "Project-Id-Version: ca\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-11-12 23:11+0000\n" -"PO-Revision-Date: 2010-11-13 12:22+0000\n" +"PO-Revision-Date: 2010-11-14 13:15+0000\n" "Last-Translator: FerranRius \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-14 05:03+0000\n" +"X-Launchpad-Export-Date: 2010-11-15 04:58+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 msgid "Does absolutely nothing" -msgstr "No fa absolutament res" +msgstr "No fa res" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:46 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:87 @@ -175,7 +175,7 @@ msgstr "Lector de metadades" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:238 msgid "Metadata writer" -msgstr "Escriptor de metadades" +msgstr "Editor de metadades" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:268 msgid "Catalog generator" @@ -201,9 +201,9 @@ msgid "" "linked files. This plugin is run every time you add an HTML file to the " "library." msgstr "" -"Segueix tots els enllaços locals en un fitxer HTML i crea un arxiu ZIP que " -"contingui els fitxers enllaçats. Aquest connector s'executa cada vegada que " -"s'afegeix un fitxer HTML a la biblioteca." +"Segueix tots els enllaços locals d'un fitxer HTML i crea un arxiu ZIP amb " +"tots els fitxers enllaçats. S'executa cada cop que s'afegeix un fitxer HTML " +"a la biblioteca." #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:51 msgid "" @@ -220,8 +220,8 @@ msgid "" "file to the library." msgstr "" "Crea un arxiu PMLZ que conté el fitxer PML i totes les imatges de les " -"carpetes pmlname_ing o images. Aquest connector s'executa cada vegada que " -"afegiu un fitxer PML a la biblioteca." +"carpetes pmlname_img o imatges. S'executa cada cop que s'afegeix un fitxer " +"PML a la biblioteca." #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:92 msgid "Extract cover from comic files" @@ -298,12 +298,11 @@ msgstr "Canvia el comportament del calibre" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735 #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:209 msgid "Add your own columns" -msgstr "Afegeix les teves columnes" +msgstr "Columnes" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:741 msgid "Add/remove your own columns to the calibre book list" -msgstr "" -"Afegeix/elimina les teves columnes a la llista de llibres del calibre" +msgstr "Configura les columnes de la llista de llibres del calibre" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746 msgid "Customize the toolbar" @@ -314,8 +313,8 @@ msgid "" "Customize the toolbars and context menus, changing which actions are " "available in each" msgstr "" -"Personalitza les barres d'eines i els menús de context, canviant quines " -"accions estan disponibles" +"Personalitza les barres d'eines i els menús de context, canviant les accions " +"que estaran disponibles" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:758 msgid "Input Options" @@ -380,7 +379,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:815 msgid "Sending books to devices" -msgstr "S'està enviant llibres als dispositius" +msgstr "Enviant llibres als dispositius" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:821 msgid "Control how calibre transfers files to your ebook reader" @@ -420,12 +419,12 @@ msgid "" "Setup the calibre Content Server which will give you access to your calibre " "library from anywhere, on any device, over the internet" msgstr "" -"Configura el Servidor de Continguts donarà accés a la biblioteca des de " -"qualsevol lloc i dispositiu, a través d'internet" +"Configura el Servidor de Continguts que dona accés a la biblioteca a través " +"d'internet des de qualsevol lloc i dispositiu" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863 msgid "Plugins" -msgstr "Plugins" +msgstr "Connectors" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:865 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:877 @@ -436,7 +435,7 @@ msgstr "Avançat" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:869 msgid "Add/remove/customize various bits of calibre functionality" msgstr "" -"Afegeix/suprimeix/personalitza diversos bits de la funcionalitat del calibre" +"Afegeix/suprimeix/personalitza diverses parts de les funcions del calibre" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:875 msgid "Tweaks" @@ -457,7 +456,7 @@ msgstr "Configuració avançada" #: /home/kovid/work/calibre/src/calibre/customize/conversion.py:102 msgid "Conversion Input" -msgstr "Entrada per a la conversió" +msgstr "Entrada de la conversió" #: /home/kovid/work/calibre/src/calibre/customize/conversion.py:134 msgid "" @@ -481,7 +480,7 @@ msgid "" "readable as possible. May not have any effect for some output plugins." msgstr "" "Si ho indiqueu, el connector de sortida intentarà generar una sortida que " -"sigui el més llegible possible. Potser no tingui cap efecte en alguns " +"sigui el més llegible possible. Pot ser que no tingui cap efecte en alguns " "connectors de sortida." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:47 @@ -966,7 +965,7 @@ msgid "" "Create a tag called \"Im_Reading\" " msgstr "" "El Kobo de moment només dóna suport a una col·lecció: la llista " -"\"Im_Reading\". Creeu una etiqueta amb el nom \"Im_Reading\" " +"«Im_Reading». Creeu una etiqueta amb el nom «Im_Reading» " #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:65 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:68 @@ -1373,7 +1372,7 @@ msgstr "" "EXT es l'extensió del fitxer de sortida. En aquest cas, el nom del fitxer de " "sortida es deriva del nom del fitxer d'entrada. Els noms dels fitxers no " "poden començar amb un guionet. Per acabar, si al fitxer_final no consigna " -"cap extensió, aleshores es tracta com una carpeta i com un \"llibre obert\" " +"cap extensió, aleshores es tracta com una carpeta i com un «llibre obert» " "(OEB), que consisteix en fitxer HTML que es desen a la carpeta. Aquests " "fitxers són els que normalment haurien passat al connector de sortida.\n" "\n" @@ -1533,9 +1532,9 @@ msgid "" "of Contents at level one. If this is specified, it takes precedence over " "other forms of auto-detection." msgstr "" -"L'expressió XPath que defineix totes les etiquetes que s'haurien d'afegir al " -"nivell 1 de l'Índex de Continguts. Si es configura així, s'hi aplica abans " -"que altres formes d'autodetecció." +"Expressió XPath amb totes les etiquetes que s'han d'afegir al nivell 1 de " +"l'índex. Si es configura així, s'aplica abans que altres formes de detecció " +"automàtica." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:193 msgid "" @@ -1543,9 +1542,8 @@ msgid "" "of Contents at level two. Each entry is added under the previous level one " "entry." msgstr "" -"L'expressió XPath que defineix totes les etiquetes que s'haurien d'afegir al " -"nivell 2 de l'Índex de Continguts. Cada entrada s'hi afegeix sota l'entrada " -"prèvia de nivell 1." +"Expressió XPath amb totes les etiquetes que s'han d'afegir al nivell 2 de " +"l'índex. Cada entrada s'afegeix a sota de l'entrada de nivell 1 prèvia." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:201 msgid "" @@ -1553,9 +1551,8 @@ msgid "" "of Contents at level three. Each entry is added under the previous level two " "entry." msgstr "" -"L'expressió XPath que defineix totes les etiquetes que s'haurien d'afegir al " -"nivell 3 de l'Índex de Continguts. Cada entrada s'hi afegeix sota l'entrada " -"prèvia de nivell 2." +"Expressió XPath amb totes les etiquetes que s'han d'afegir al nivell 3 de " +"l'índex. Cada entrada s'afegeix a sota de l'entrada de nivell 2 prèvia." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:209 msgid "" @@ -1563,14 +1560,13 @@ msgid "" "preference to the auto-generated one. With this option, the auto-generated " "one is always used." msgstr "" -"Normalment, si el fitxer d'origen ja disposa d'un índex, aquest és utilitzat " -"amb preferència a l'autogenerat. Amb aquesta opció sempre s'utilitza l'auto-" -"generat." +"Normalment s'utilitza preferentment l'índex del fitxer d'origen, si " +"existeix, al generat automàticament. Amb aquesta opció sempre s'utilitza el " +"generat automàticament." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:217 msgid "Don't add auto-detected chapters to the Table of Contents." -msgstr "" -"No afegeixis els capítols detectats automàticament a l'índex de continguts" +msgstr "No afegeixis els capítols detectats automàticament a l'índex." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:224 msgid "" @@ -1595,9 +1591,9 @@ msgid "" "Remove entries from the Table of Contents whose titles match the specified " "regular expression. Matching entries and all their children are removed." msgstr "" -"Elimina les entrades de l'Índex de Continguts quan els seus títols " -"coincideixin amb l'expressió indicada. Les entrades coincidents i els seus " -"subapartats seran eliminades." +"Suprimeix les entrades de l'índex quan els seus títols coincideixin amb " +"l'expressió indicada. Se suprimiran les entrades coincidents i els seus " +"subapartats." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:250 msgid "" @@ -1609,12 +1605,12 @@ msgid "" "User Manual for further help on using this feature." msgstr "" "Una expressió XPath per a detectar els títol dels capítols. Per defecte es " -"consideren les etiquetes

o

que contenen les paraules \"capítol\", " -"\"llibre\", \"secció\" o \"part\" com a títols de capítol a l'igual que les " -"etiquetes que indiquen class=\"capítol\". L'expressió emprada ha d'avaluar " -"un llistat d'elements. Per a inhabilitar aquesta opció, empreu l'opció " -"\"/\". Vegeu el tutorial de XPath al Manual de l'usuari del calibre per a " -"més informació quant a aquesta característica." +"consideren les etiquetes

o

que contenen les paraules «capítol», " +"«llibre», «secció» o «part» com a títols de capítol a l'igual que les " +"etiquetes que indiquen class=«capítol». L'expressió emprada ha d'avaluar un " +"llistat d'elements. Per a inhabilitar aquesta opció, empreu l'opció «/». " +"Vegeu el tutorial de XPath al Manual de l'usuari del calibre per a més " +"informació quant a aquesta característica." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:264 msgid "" @@ -1623,11 +1619,11 @@ msgid "" "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 "" -"Especifica com marcar els capítols detectats. Un valor de \"salt de pàgina\" " -"inserirà salts de pàgina abans dels capítols. Un valor de \"pauta\" inserirà " -" una línia abans dels capítols. Un valor de \"cap\" inhabilitarà les marques " -"dels capítols i un valor de \"ambdós\" inserirà un salt de pàgina i una " -"línia per a marcar els capítols." +"Especifica com s'ha de marcar els capítols detectats. El valor «pagebreak» " +"insereix un salt de pàgina abans dels capítols. El valor «rule» insereix " +"una línia abans dels capítols. El valor «none» inhabilita les marques dels " +"capítols i el valor «both» insereix un salt de pàgina i una línia per marcar " +"els capítols." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:274 msgid "" @@ -1649,29 +1645,29 @@ msgstr "" msgid "" "Set the top margin in pts. Default is %default. Note: 72 pts equals 1 inch" msgstr "" -"Defineix el marge superior en punts (pts). El valor predeterminat és " -"%default. Nota: 72 pts equival a 1 polzada (2,54 cm)" +"Estableix el marge superior en punts (pts). Per defecte és %default. Nota: " +"72 pts són 1 polzada (2,54 cm)" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:294 msgid "" "Set the bottom margin in pts. Default is %default. Note: 72 pts equals 1 inch" msgstr "" -"Defineix el marge inferior en punts (pts). El valor prederminat són " -"%default. Nota: 72 pts equivalen a 1 polzada (2,54 cm)" +"Estableix el marge inferior en punts (pts). Per defecte és %default. Nota: " +"72 pts són 1 polzada (2,54 cm)" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:299 msgid "" "Set the left margin in pts. Default is %default. Note: 72 pts equals 1 inch" msgstr "" -"Estableix el marge esquerre en punts (pts). El valor predeterminat són " -"%default. Nota: 72 pt equivalent a 1 polzada (2,54 cm)" +"Estableix el marge esquerre en punts (pts). Per defecte és %default. Nota: " +"72 pt són 1 polzada (2,54 cm)" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:304 msgid "" "Set the right margin in pts. Default is %default. Note: 72 pts equals 1 inch" msgstr "" -"Estableix el marge dret en punts (pts). El valor predeterminat són %default. " -"Nota: 72 pt equivalen a 1 polzada (2,54 cm)" +"Estableix el marge dret en punts (pts). Per defecte és %default. Nota: 72 pt " +"són 1 polzada (2,54 cm)" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:310 msgid "" @@ -1805,13 +1801,12 @@ msgid "" "by Chinese and Japanese for instance) the representation used by the largest " "number of people will be used (Chinese in the previous example)." msgstr "" -"Converteix els caràcters unicode a una representació ASCII. Aneu en compte " -"amb aquesta opció, perquè això substituirà els caràcters unicode amb ASCII. " -"Per exemple, reemplaçarà \"%s\" per \"Mikhail Gorbachiov\". Tingueu també en " -"compte que en el cas que hi hagi moltes representacions per a un caràcter " -"(per exemple, caràcters compartits pel Xinès i el Japonès) la representació " -"emprada per la població més nombrosa serà seleccionada (el Xinès a l'exemple " -"anterior)." +"Converteix els caràcters unicode a una representació ASCII. Compte amb " +"aquesta opció, perquè substituirà els caràcters unicode per ASCII. Per " +"exemple, reemplaçarà «%s» per «Mikhail Gorbachiov». Tingueu també en compte " +"que si hi ha moltes representacions per a un caràcter (per exemple, " +"caràcters compartits pel xinès i el japonès) es selecciona la representació " +"que utilitza la població més nombrosa (el xinès a l'exemple anterior)." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:437 msgid "" @@ -1832,13 +1827,13 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:449 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:38 msgid "Set the title." -msgstr "Establiu el títol" +msgstr "Estableix el títol" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:453 msgid "Set the authors. Multiple authors should be separated by ampersands." msgstr "" -"Establiu els autors. Si hi ha diversos autors, haurieu de separar-los amb el " -"caràcter \"&\"." +"Estableix els autors. Si hi ha diversos autors, s'han de separar amb una " +"\"&\"." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:458 msgid "The version of the title to be used for sorting. " @@ -1855,52 +1850,53 @@ msgstr "Estableix la portada des del fitxer o URL indicats" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:470 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:54 msgid "Set the ebook description." -msgstr "Establiu la descripció del llibre electrònic." +msgstr "Estableix la descripció del llibre." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:474 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:56 msgid "Set the ebook publisher." -msgstr "Establiu l'editorial del llibre electrònic." +msgstr "Estableix l'editorial del llibre." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:478 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:60 msgid "Set the series this ebook belongs to." -msgstr "Establiu la sèria a la que pertany el llibre electrònic." +msgstr "Estableix la sèrie que pertany el llibre." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:482 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:62 msgid "Set the index of the book in this series." -msgstr "Col·locar l'index del llibre a aquesta serie." +msgstr "Estableix l'index del llibre a la sèrie." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:486 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:64 msgid "Set the rating. Should be a number between 1 and 5." -msgstr "Establiu la valoració. Ha de ser un nombre entre 1 i 5." +msgstr "Estableix la valoració. Ha de ser un nombre entre 1 i 5." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:490 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:66 msgid "Set the ISBN of the book." -msgstr "Establiu el codi ISBN del llibre." +msgstr "Estableix l'ISBN del llibre." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:494 #: /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 "" -"Col·locar les etiquetes al llibre. Ha de ser una llista separada per comes." +"Estableix les etiquetes per al llibre. Ha de ser una llista separada per " +"comes." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:498 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:70 msgid "Set the book producer." -msgstr "Establiu el productor del llibre." +msgstr "Estableix el productor del llibre." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:502 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:72 msgid "Set the language." -msgstr "Establiu la llengua." +msgstr "Estableix la llengua." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:506 msgid "Set the publication date." -msgstr "Col·locar la data de publicació." +msgstr "Estableix la data de publicació." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:510 msgid "Set the book timestamp (used by the date column in calibre)." @@ -1984,7 +1980,7 @@ msgstr "Heu d'especificar un fitxer epub." #: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/unmanifested.py:17 msgid "Fix unmanifested files" -msgstr "Repara fitxers no manifestats" +msgstr "Corregeix fitxers sense declarar" #: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/unmanifested.py:21 msgid "" @@ -1992,11 +1988,11 @@ msgid "" "delete them as specified by the delete unmanifested option." msgstr "" "Corregeix fitxers sense declarar. epub-fix pot afegir-los al manifest o " -"esborrar-los tal com s'indiqui a l'opció \"esborra fitxers sense declarar\"" +"suprimir-los tal com s'indiqui a l'opció «suprimeix fitxers sense declarar»" #: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/unmanifested.py:32 msgid "Delete unmanifested files instead of adding them to the manifest" -msgstr "Suprimeix fitxers no manifestats en lloc d'afegir-los al manifest" +msgstr "Suprimeix fitxers sense declarar en lloc d'afegir-los al manifest" #: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:56 msgid "" @@ -2077,11 +2073,11 @@ msgstr "Inici" #: /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 "Índex general:" +msgstr "Índex:" #: /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 "No insereixis un índex general al començament del llibre." +msgstr "No insereixis un índex al començament del llibre." #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/output.py:21 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/output.py:32 @@ -2089,7 +2085,7 @@ msgstr "No insereixis un índex general al començament del llibre." #: /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 "Afegeix l'índex general al començament del llibre." +msgstr "Afegeix un índex al començament del llibre." #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/output.py:24 msgid "" @@ -2335,7 +2331,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:589 msgid "Set the book title" -msgstr "Indiqueu el nom del llibre" +msgstr "Estableix el nom del llibre" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:591 msgid "Set sort key for the title" @@ -2343,7 +2339,7 @@ msgstr "Indiqueu la clau d'ordenació per tí­tol" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:593 msgid "Set the author" -msgstr "Indiqueu l'autor" +msgstr "Estableix l'autor" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:595 msgid "Set sort key for the author" @@ -2368,19 +2364,19 @@ msgstr "Extreu la miniatura del fitxer LRF" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:608 msgid "Set the publisher" -msgstr "Establiu l'editorial" +msgstr "Estableix l'editorial" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:609 msgid "Set the book classification" -msgstr "Establiu la classificació del llibre" +msgstr "Estableix la classificació del llibre" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:610 msgid "Set the book creator" -msgstr "Establiu el creador del llibre" +msgstr "Estableix el creador del llibre" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:611 msgid "Set the book producer" -msgstr "Establiu el productor del llibre" +msgstr "Estableix el productor del llibre" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:613 msgid "" @@ -2402,7 +2398,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:94 msgid "Set the space between words in pts. Default is %default" -msgstr "Fixa l'espai entre paraules en punts. Per defecte: %default" +msgstr "Estableix l'espai entre paraules en punts. Per defecte: %default" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:97 msgid "Add a header to all the pages with title and author." @@ -2607,8 +2603,8 @@ msgid "" "Set the authors. Multiple authors should be separated by the & character. " "Author names should be in the order Firstname Lastname." msgstr "" -"Establir els autors. Si hi ha diversos autors s'han de separar per «&». Els " -"noms dels autors han d'estar en el format Nom Cognom." +"Estableix els autors. Si hi ha diversos autors, s'han de separar amb una " +"\"&\". Els noms dels autors han d'estar en el format Nom Cognom." #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:44 msgid "" @@ -2632,11 +2628,11 @@ msgstr "Estableix el fitxer indicat com a portada" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:58 msgid "Set the book category." -msgstr "Establiu la categoria del llibre." +msgstr "Estableix la categoria del llibre." #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:74 msgid "Set the published date." -msgstr "Establir la data de publicació." +msgstr "Estableix la data de publicació." #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:77 msgid "Get the cover from the ebook and save it at as the specified file." @@ -2865,13 +2861,12 @@ msgid "" "Don't add Table of Contents to end of book. Useful if the book has its own " "table of contents." msgstr "" -"No afegeixis índex al final del llibre. Útil si el llibre té el seu propi " -"índex." +"No afegeixis un índex al final del llibre. Útil si el llibre ja té un índex." #: /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 "Títol per qualsevol índex generat en línia." +msgstr "Títol per a tots els índexs generats automàticament." #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:37 msgid "Disable compression of the file contents." @@ -2994,8 +2989,8 @@ msgstr "Versió OPF per generar. Per defecte és %default." msgid "" "Generate an Adobe \"page-map\" file if pagination information is available." msgstr "" -"Genera un fitxer Adobe \"page-map\" si la informació de paginació és " -"disponible." +"Genera un fitxer Adobe «page-map» si es disposa de la informació de " +"paginació." #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/reader132.py:128 msgid "Footnotes" @@ -3427,12 +3422,12 @@ msgid "" "Run the text input through the markdown pre-processor. To learn more about " "markdown see" msgstr "" -"Executar la funció de text a través del pre-processador markdown. Per a més " -"informació quant al markdown vegeu" +"Executa la funció de text a través del pre-processador Markdown. Per a més " +"informació quant al Markdown vegeu" #: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:40 msgid "Do not insert a Table of Contents into the output text." -msgstr "No insereixis una taula de contingut al text de sortida." +msgstr "No insereixis un índex al text de sortida." #: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:24 msgid "" @@ -3440,10 +3435,10 @@ 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 "" -"Tipus de salt de línia a utilitzar. Les opcions són %s. Per defecte és " -"'system'. Utilitza 'old_mac' per compatibilitat amb Mac OS 9 i anteriors. " -"Per Mac OS X utilitza 'unix'. 'system' és el tipus per defecte utilitza per " -"aquest SO." +"Tipus de salt de línia que es farà servir. Les opcions són %s. Per defecte " +"és «system». Utilitzeu «old_mac» si voleu compatibilitat amb el Mac OS 9 i " +"anteriors. Per al Mac OS X utilitzeu «unix». «system» prendrà el salt de " +"línia per defecte del vostre sistema operatiu." #: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:30 msgid "" @@ -4009,11 +4004,10 @@ msgid "" "GUI. You can recover your database using the 'calibredb restore_database' " "command line function." msgstr "" -"Aquesta ordre reconstrueix la vostra base de dades del calibre amb la " -"informació que ha desat el calibre als fitxers OPF.

Aquesta funció no està " -"disponible actualment a la interfície gràfica. Podeu recuperar la vostra " -"base de dades amb la funció de la línia de comandaments 'calibredb " -"restore_database'" +"Aquesta ordre reconstrueix la base de dades del calibre amb la informació " +"que ha desat el calibre als fitxers OPF.

Aquesta funció no està disponible " +"actualment a la interfície gràfica. Podeu recuperar la base de dades amb la " +"funció de la línia de comandaments «calibredb restore_database»" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:358 msgid "No library found" @@ -5056,9 +5050,9 @@ msgid "" " -For time field, only the date will be used. " msgstr "" "Algunes explicacions sobre aquesta plantilla:\n" -" -Els camps disponibles són 'author_sort', 'authors', 'id',\n" -" 'isbn', 'pubdate', 'publisher', 'series_index', 'series',\n" -" 'tags', 'timestamp', 'title', 'uuid'\n" +" -Els camps disponibles són «author_sort», «authors», «id»,\n" +" «isbn», «pubdate», «publisher», «series_index», «series»,\n" +" «tags», «timestamp», «title», «uuid»\n" " -Per a tipus de llista, com autors i etiquetes, només es\n" " seleccionarà el primer element.\n" " -Per als camps de temps només es farà servir la data. " @@ -5073,11 +5067,11 @@ msgstr "Opcions dels llibres" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:77 msgid "'Don't include this book' tag:" -msgstr "Etiqueta 'no incloguis aquest llibre':" +msgstr "Etiqueta «no incloguis aquest llibre»:" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:78 msgid "'Mark this book as read' tag:" -msgstr "Etiqueta 'marca aquest llibre com a llegit':" +msgstr "Etiqueta «marca aquest llibre com a llegit»:" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:79 msgid "Additional note tag prefix:" @@ -5105,11 +5099,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:84 msgid "Include 'Titles' Section" -msgstr "Inclou la secció 'Títols'" +msgstr "Inclou la secció «Títols»" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:85 msgid "Include 'Recently Added' Section" -msgstr "Inclou la secció 'Afegits recentment'" +msgstr "Inclou la secció «Afegits recentment»" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:86 msgid "Sort numbers as text" @@ -5117,7 +5111,7 @@ msgstr "Ordena els números com a text" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:87 msgid "Include 'Series' Section" -msgstr "Inclou la secció 'Sèries'" +msgstr "Inclou la secció «Sèrie»" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:33 msgid "Tab template for catalog.ui" @@ -5308,7 +5302,7 @@ msgstr "Entrada FB2" #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:34 msgid "Do not insert a &Table of Contents at the beginning of the book." -msgstr "No &insereixis un Índex al començament del llibre" +msgstr "No &insereixis un índex al començament del llibre" #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:14 msgid "FB2 Output" @@ -5606,7 +5600,7 @@ msgstr "Fes servir la portada del fitxer &original" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:174 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:415 msgid "Change &cover image:" -msgstr "¬Canvia la imatge de la &portada:" +msgstr "Canvia la imatge de la &portada:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:175 msgid "Browse for an image to use as the cover of this book." @@ -5939,7 +5933,7 @@ msgstr "&Marca de capítol:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:82 msgid "Remove first &image" -msgstr "Suprimeix la primera &imatges" +msgstr "Suprimeix la primera &imatge" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:83 msgid "Insert &metadata as page at start of book" @@ -6011,7 +6005,7 @@ msgstr "Entrada TXT" #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:54 msgid "Process using markdown" -msgstr "Processar com a markdown" +msgstr "Processa com a Markdown" #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:55 msgid "" @@ -6020,14 +6014,12 @@ msgid "" "href=\"http://daringfireball.net/projects/markdown\">markdown." msgstr "" "

Markdown és un llenguatge de marcació senzill per a fitxers de text que " -"permet un format avançat. Per saber-ne més visiti markdown." +"permet un format avançat. Per saber-ne més vegeu Markdown." #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:56 msgid "Do not insert Table of Contents into output text when using markdown" -msgstr "" -"No insertar la Taula de Continguts en text de sortida quan s'utilitzi " -"Markdown" +msgstr "No insereixis l'índex al text de sortida si es fa servir Markdown" #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:57 msgid "Preserve &spaces" @@ -6138,8 +6130,8 @@ msgid "" "href=\"http://calibre-ebook.com/user_manual/xpath.html\">XPath Tutorial." msgstr "" "

Per exemple, per fer coincidir totes les etiquetes h2 que tinguin " -"class=\"chapter\", poseu h2 a l'etiqueta, class a l'atribut i " -"chapter a valor.

Un atribut en blanc correspon a qualsevol " +"class=«capítol», poseu h2 a l'etiqueta, class a l'atribut i " +"capítol a valor.

Un atribut en blanc correspon a qualsevol " "atribut i un valor en blanc a qualsevol valor. L'etiqueta * correspon a " "qualsevol etiqueta.

Si voleu saber més usos avançats d'XPath vegeu XPath " @@ -6178,7 +6170,7 @@ msgstr "Sense qualificació" #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:156 msgid "Set '%s' to today" -msgstr "Establir data d'avui per '%s'" +msgstr "Estableix la data d'avui per a «%s»" #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:266 msgid " index:" @@ -6935,7 +6927,7 @@ msgstr "Afegeix-ho al camp" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:206 msgid "Editing meta information for %d books" -msgstr "S'està editant la metainformació de %d llibres" +msgstr "S'està editant les metadades de %d llibres" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:259 msgid "Book %d:" @@ -6994,7 +6986,7 @@ msgstr "" "ho al començament o al final del text que es trobi. Vegeu aquesta referència si " "voleu més informació quant a les expressions regulars en python, " -"especialment quant a la funció 'sub'." +"especialment quant a la funció «sub»." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:438 msgid "You must specify a destination when source is a composite field" @@ -7031,7 +7023,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:334 msgid "Edit Meta information" -msgstr "Editar Meta-informació" +msgstr "Edita les metadades" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:336 msgid "A&utomatically set author sort" @@ -7046,8 +7038,8 @@ msgid "" "Specify how the author(s) of this book should be sorted. For example Charles " "Dickens should be sorted as Dickens, Charles." msgstr "" -"Especifiqueu com s'ha d'ordenar l'autor(s) d'aquest llibre. Per " -"exemple,ordena Vicent A. Estellés com a Estellés, Vicent A." +"Especifiqueu com s'ha d'ordenar l'autor(s) d'aquest llibre. Per exemple, " +"ordena «Vicent A. Estellés» com a «Estellés, Vicent A»." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:339 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:384 @@ -7068,7 +7060,7 @@ msgstr "Sense canvis" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:343 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:387 msgid " stars" -msgstr " estreles" +msgstr " estrelles" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:345 msgid "Add ta&gs: " @@ -7468,11 +7460,11 @@ msgstr "No s'ha pogut obrir %s. L'està fent servir un altre programa?" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371 msgid "Edit Meta Information" -msgstr "Edita la meta-informació" +msgstr "Edita les metadades" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:372 msgid "Meta information" -msgstr "Meta-informació" +msgstr "Metadades" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375 msgid "Swap the author and title" @@ -7489,8 +7481,8 @@ msgid "" "If the box is colored green, then text matches the individual author's sort " "strings. If it is colored red, then the authors and this text do not match." msgstr "" -"Especifiqueu com s'ha d'ordenar l'autor(s) d'aquest llibre. Per exemple, si " -"'Charles Dickens' s'ha d'ordenar com a 'Dickens, Charles'.\n" +"Especifiqueu com s'ha d'ordenar l'autor(s) d'aquest llibre. Per exemple, " +"ordena «Vicent A. Estellés» com a «Estellés, Vicent A».\n" "Si el quadre està en verd, el text coincideix amb l'ordre per autors " "individuals. Si està en vermell, els autors i el text no coincideixen." @@ -8180,7 +8172,7 @@ msgid "" msgstr "" "

Descomprimeix l'ePub per tal de visualitzar-los en una finestra del " "gestor de fitxers. Per ajustar els fitxers individuals, feu clic dret i " -"aleshores 'Obre amb...' i trieu l'editor. Quan acabeu amb els ajustos, " +"aleshores «Obre amb...» i trieu l'editor. Quan acabeu amb els ajustos, " "tanqueu la finestra del gestor de fitxers i les finestres de l'editor que " "hagueu fet servir per modificar-ne les dades.

Reconstrueix l'ePub " "i actualitza la vostra biblioteca del calibre.

" @@ -8314,8 +8306,8 @@ msgstr "" "

Crea una recepta de " "notícies bàsica, afegint canals RSS.
Per a la majoria dels canals, " -"necessitareu fer servir el \"Mode avançat\" per personalitzar millor el " -"procés de descàrrega de dades.

" +"necessitareu el «Mode avançat» per personalitzar millor el procés de " +"descàrrega de dades.

" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265 msgid "Recipe &title:" @@ -8708,12 +8700,12 @@ msgstr "Llibre %s de %s." #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1236 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:407 msgid "The lookup/search name is \"{0}\"" -msgstr "El nom de la cerca és \"{0}\"" +msgstr "El nom de la cerca és «{0}»" #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:699 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1238 msgid "This book's UUID is \"{0}\"" -msgstr "La UUID del llibre és \"{0}\"" +msgstr "L'UUID del llibre és «{0}»" #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:922 msgid "In Library" @@ -8805,7 +8797,7 @@ msgstr " - Visor de LRF" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 msgid "No matches for the search phrase %s were found." -msgstr "No s'han trobat coincidències per al text \"%s\"." +msgstr "No s'ha trobat coincidències per al text «%s»." #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:443 @@ -9171,7 +9163,7 @@ msgid "" "Set the default timeout for network fetches (i.e. anytime we go out to the " "internet to get information)" msgstr "" -"Configura el temps d'espera per defecte per a les sol·licituds de xarxa (per " +"Estableix el temps d'espera per defecte per a les sol·licituds de xarxa (per " "exemple cada cop que s'hagi d'anar a internet per aconseguir informació)" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:144 @@ -9409,8 +9401,8 @@ msgid "" "
  • dd MMMM yy gives 05 January 10
  • \n" " " msgstr "" -"

    Format de data. Fes servir 1-4 lletres 'd' per al dia, 1-4 lletres 'M' " -"per al mes, i 2 or 4 lletres 'y' per a l'any.

    \n" +"

    Format de data. Feu servir 1-4 lletres «d» per al dia, 1-4 lletres «M» " +"per al mes, i 2 o 4 lletres «y» per a l'any.

    \n" "

    Per exemple:\n" "

    + * @param {Object} obj
    * * + * * * * * * * + * + * * * * + * + * + * + * *
    keyvaluesdefault
    classnamestring'hyphenate'
    donthyphenateclassnamestring''
    minwordlengthinteger6
    hyphencharstring'&shy;'
    urlhyphencharstring'zero with space'
    toggleboxfunctionsee code
    displaytoggleboxbooleanfalse
    remoteloadingbooleantrue
    enablecachebooleantrue
    enablereducedpatternsetbooleanfalse
    onhyphenationdonecallbackfunctionempty function
    onerrorhandlerfunctionalert(onError)
    intermediatestatestring'hidden'
    selectorfunctionfunction[…]
    safecopybooleantrue
    doframesbooleanfalse
    storagetypestring'none'
    * @public * @example <script src = "Hyphenator.js" type = "text/javascript"></script> @@ -1379,22 +1764,37 @@ var Hyphenator = (function () { } }, key; + + if (obj.hasOwnProperty('storagetype')) { + if (assert('storagetype', 'string')) { + storageType = obj.storagetype; + } + if (!storage) { + createStorage(); + } + } + if (!obj.hasOwnProperty('STORED') && storage && obj.hasOwnProperty('persistentconfig') && obj.persistentconfig === true) { + restoreConfiguration(); + } + for (key in obj) { if (obj.hasOwnProperty(key)) { switch (key) { + case 'STORED': + break; case 'classname': if (assert('classname', 'string')) { - hyphenateClass = obj.classname; + hyphenateClass = obj[key]; } break; case 'donthyphenateclassname': if (assert('donthyphenateclassname', 'string')) { - dontHyphenateClass = obj.donthyphenateclassname; + dontHyphenateClass = obj[key]; } break; case 'minwordlength': if (assert('minwordlength', 'number')) { - min = obj.minwordlength; + min = obj[key]; } break; case 'hyphenchar': @@ -1402,54 +1802,94 @@ var Hyphenator = (function () { if (obj.hyphenchar === '­') { obj.hyphenchar = String.fromCharCode(173); } - hyphen = obj.hyphenchar; + hyphen = obj[key]; } break; case 'urlhyphenchar': if (obj.hasOwnProperty('urlhyphenchar')) { if (assert('urlhyphenchar', 'string')) { - urlhyphen = obj.urlhyphenchar; + urlhyphen = obj[key]; } } break; case 'togglebox': if (assert('togglebox', 'function')) { - toggleBox = obj.togglebox; + toggleBox = obj[key]; } break; case 'displaytogglebox': if (assert('displaytogglebox', 'boolean')) { - displayToggleBox = obj.displaytogglebox; + displayToggleBox = obj[key]; } break; case 'remoteloading': if (assert('remoteloading', 'boolean')) { - enableRemoteLoading = obj.remoteloading; + enableRemoteLoading = obj[key]; } break; case 'enablecache': if (assert('enablecache', 'boolean')) { - enableCache = obj.enablecache; + enableCache = obj[key]; + } + break; + case 'enablereducedpatternset': + if (assert('enablereducedpatternset', 'boolean')) { + enableReducedPatternSet = obj[key]; } break; case 'onhyphenationdonecallback': if (assert('onhyphenationdonecallback', 'function')) { - onHyphenationDone = obj.onhyphenationdonecallback; + onHyphenationDone = obj[key]; } break; case 'onerrorhandler': if (assert('onerrorhandler', 'function')) { - onError = obj.onerrorhandler; + onError = obj[key]; } break; case 'intermediatestate': if (assert('intermediatestate', 'string')) { - intermediateState = obj.intermediatestate; + intermediateState = obj[key]; } break; case 'selectorfunction': if (assert('selectorfunction', 'function')) { - selectorFunction = obj.selectorfunction; + selectorFunction = obj[key]; + } + break; + case 'safecopy': + if (assert('safecopy', 'boolean')) { + safeCopy = obj[key]; + } + break; + case 'doframes': + if (assert('doframes', 'boolean')) { + doFrames = obj[key]; + } + break; + case 'storagetype': + if (assert('storagetype', 'string')) { + storageType = obj[key]; + } + break; + case 'orphancontrol': + if (assert('orphancontrol', 'number')) { + orphanControl = obj[key]; + } + break; + case 'dohyphenation': + if (assert('dohyphenation', 'boolean')) { + Hyphenator.doHyphenation = obj[key]; + } + break; + case 'persistentconfig': + if (assert('persistentconfig', 'boolean')) { + persistentConfig = obj[key]; + } + break; + case 'defaultlanguage': + if (assert('defaultlanguage', 'string')) { + defaultLanguage = obj[key]; } break; default: @@ -1457,12 +1897,14 @@ var Hyphenator = (function () { } } } + if (storage && persistentConfig) { + storeConfiguration(); + } }, /** * @name Hyphenator.run - * @methodOf Hyphenator - * @description + * @description * Bootstrap function that starts all hyphenation processes when called. * @public * @example <script src = "Hyphenator.js" type = "text/javascript"></script> @@ -1471,35 +1913,60 @@ var Hyphenator = (function () {  * </script> */ run: function () { + documentCount = 0; var process = function () { try { - autoSetMainLanguage(); + if (contextWindow.document.getElementsByTagName('frameset').length > 0) { + return; //we are in a frameset + } + documentCount++; + autoSetMainLanguage(undefined); gatherDocumentInfos(); + //console.log('preparing for ' + contextWindow.location.href); prepare(hyphenateDocument); if (displayToggleBox) { - toggleBox(true); + toggleBox(); } - //registerOnCopy(); } catch (e) { onError(e); } - }; - if (!documentLoaded) { + }, i, haveAccess, fl = window.frames.length; + + if (!storage) { + createStorage(); + } + if (!documentLoaded && !isBookmarklet) { runOnContentLoaded(window, process); } - if (Hyphenator.isBookmarklet() || documentLoaded) { + if (isBookmarklet || documentLoaded) { + if (doFrames && fl > 0) { + for (i = 0; i < fl; i++) { + haveAccess = undefined; + //try catch isn't enough for webkit + try { + //opera throws only on document.toString-access + haveAccess = window.frames[i].document.toString(); + } catch (e) { + haveAccess = undefined; + } + if (!!haveAccess) { + contextWindow = window.frames[i]; + process(); + } + } + } + contextWindow = window; process(); } }, /** * @name Hyphenator.addExceptions - * @methodOf Hyphenator - * @description + * @description * Adds the exceptions from the string to the appropriate language in the * {@link Hyphenator-languages}-object - * @param string The language - * @param string A comma separated string of hyphenated words WITH spaces. + * @param {string} lang The language + * @param {string} words A comma separated string of hyphenated words WITH spaces. * @public * @example <script src = "Hyphenator.js" type = "text/javascript"></script>  * <script type = "text/javascript"> @@ -1511,7 +1978,7 @@ var Hyphenator = (function () { if (lang === '') { lang = 'global'; } - if (exceptions.hasOwnProperty[lang]) { + if (exceptions.hasOwnProperty(lang)) { exceptions[lang] += ", " + words; } else { exceptions[lang] = words; @@ -1520,14 +1987,13 @@ var Hyphenator = (function () { /** * @name Hyphenator.hyphenate - * @methodOf Hyphenator - * @public + * @public * @description * Hyphenates the target. The language patterns must be loaded. * If the target is a string, the hyphenated string is returned, * if it's an object, the values are hyphenated directly. - * @param mixed the target to be hyphenated - * @param string the language of the target + * @param {string|Object} target the target to be hyphenated + * @param {string} lang the language of the target * @returns string * @example <script src = "Hyphenator.js" type = "text/javascript"></script> * <script src = "patterns/en.js" type = "text/javascript"></script> @@ -1556,7 +2022,11 @@ var Hyphenator = (function () { if (n.nodeType === 3 && n.data.length >= min) { //type 3 = #text -> hyphenate! n.data = n.data.replace(Hyphenator.languages[lang].genRegExp, hyphenate); } else if (n.nodeType === 1) { - Hyphenator.hyphenate(n, lang); + if (n.lang !== '') { + Hyphenator.hyphenate(n, n.lang); + } else { + Hyphenator.hyphenate(n, lang); + } } } } @@ -1565,10 +2035,21 @@ var Hyphenator = (function () { } }, + /** + * @name Hyphenator.getRedPatternSet + * @description + * Returns {@link Hyphenator-isBookmarklet}. + * @param {string} lang the language patterns are stored for + * @returns object {'patk': pat} + * @public + */ + getRedPatternSet: function (lang) { + return Hyphenator.languages[lang].redPatSet; + }, + /** * @name Hyphenator.isBookmarklet - * @methodOf Hyphenator - * @description + * @description * Returns {@link Hyphenator-isBookmarklet}. * @returns boolean * @public @@ -1577,29 +2058,85 @@ var Hyphenator = (function () { return isBookmarklet; }, + getConfigFromURI: function () { + var loc = null, re = {}, jsArray = document.getElementsByTagName('script'), i, j, l, s, gp, option; + for (i = 0, l = jsArray.length; i < l; i++) { + if (!!jsArray[i].getAttribute('src')) { + loc = jsArray[i].getAttribute('src'); + } + if (!loc) { + continue; + } else { + s = loc.indexOf('Hyphenator.js?'); + if (s === -1) { + continue; + } + gp = loc.substring(s + 14).split('&'); + for (j = 0; j < gp.length; j++) { + option = gp[j].split('='); + if (option[0] === 'bm') { + continue; + } + if (option[1] === 'true') { + re[option[0]] = true; + continue; + } + if (option[1] === 'false') { + re[option[0]] = false; + continue; + } + if (isFinite(option[1])) { + re[option[0]] = parseInt(option[1], 10); + continue; + } + if (option[0] === 'onhyphenationdonecallback') { + re[option[0]] = new Function('', option[1]); + continue; + } + re[option[0]] = option[1]; + } + break; + } + } + return re; + }, /** * @name Hyphenator.toggleHyphenation - * @methodOf Hyphenator - * @description + * @description * Checks the current state of the ToggleBox and removes or does hyphenation. * @public */ toggleHyphenation: function () { - switch (state) { - case 3: + if (Hyphenator.doHyphenation) { removeHyphenationFromDocument(); - toggleBox(false); - break; - case 4: + Hyphenator.doHyphenation = false; + storeConfiguration(); + toggleBox(); + } else { hyphenateDocument(); - toggleBox(true); - break; + Hyphenator.doHyphenation = true; + storeConfiguration(); + toggleBox(); } } }; -}()); +}(window)); + +//Export properties/methods (for google closure compiler) +Hyphenator['languages'] = Hyphenator.languages; +Hyphenator['config'] = Hyphenator.config; +Hyphenator['run'] = Hyphenator.run; +Hyphenator['addExceptions'] = Hyphenator.addExceptions; +Hyphenator['hyphenate'] = Hyphenator.hyphenate; +Hyphenator['getRedPatternSet'] = Hyphenator.getRedPatternSet; +Hyphenator['isBookmarklet'] = Hyphenator.isBookmarklet; +Hyphenator['getConfigFromURI'] = Hyphenator.getConfigFromURI; +Hyphenator['toggleHyphenation'] = Hyphenator.toggleHyphenation; +window['Hyphenator'] = Hyphenator; + if (Hyphenator.isBookmarklet()) { - Hyphenator.config({displaytogglebox: true, intermediatestate: 'visible'}); + Hyphenator.config({displaytogglebox: true, intermediatestate: 'visible', doframes: true}); + Hyphenator.config(Hyphenator.getConfigFromURI()); Hyphenator.run(); } \ No newline at end of file diff --git a/resources/viewer/hyphenate/patterns/be.js b/resources/viewer/hyphenate/patterns/be.js new file mode 100644 index 0000000000..e942cec390 --- /dev/null +++ b/resources/viewer/hyphenate/patterns/be.js @@ -0,0 +1,24 @@ +// Created by Olexandr Zhydenko ((olexandr.zhydenko (at) gmail.com) +// +// Based on the file: hyph_be_BY.dic +// Created by: Alex Buloichik +// Corrected by: Liasovich Sviatlana +// License: LGPL +Hyphenator.languages['be'] = { + leftmin : 2, + rightmin : 2, + shortestPattern : 2, + longestPattern : 10, + specialChars : "'’абвгґдежзиійклмнопрстуўфхцчшьыэюя", + patterns : { + 3:"а1аа1еа1ёа1іа1оа1уа1ыа1эа1юа1яе1ае1ее1ёе1іе1ое1уе1ые1эе1юе1яё1аё1её1ёё1іё1оё1уё1ыё1эё1юё1яі1аі1еі1ёі1іі1оі1уі1ыі1эі1юі1яо1ао1ео1ёо1іо1оо1уо1ыо1эо1юо1яу1ау1еу1ёу1іу1оу1уу1ыу1эу1юу1яы1аы1еы1ёы1іы1оы1уы1ыы1эы1юы1яэ1аэ1еэ1ёэ1іэ1оэ1уэ1ыэ1ээ1юэ1яю1аю1ею1ёю1ію1ою1ую1ыю1эю1юю1яя1ая1ея1ёя1ія1оя1уя1ыя1эя1юя1я_б88б__в88в__г88г__ґ88ґ__д88д__ж88ж__з88з__й88й__к88к__л88л__м88м__н88н__п88п__р88р__с88с__т88т__ў88ў__ф88ф__х88х__ц88ц__ч88ч__ш88ш__ь88ь__а88а__е88е__ё88ё__і88і__о88о__у88у__ы88ы__э88э__ю88ю__я88я_б1бв1вг1гґ1ґд1дж1жз1зй1йк1кл1лм1мн1нп1пр1рс1ст1тў1ўф1фх1хц1цч1чш1шь1ьб8ьв8ьг8ьґ8ьд8ьж8ьз8ьй8ьк8ьл8ьм8ьн8ьп8ьр8ьс8ьт8ьў8ьф8ьх8ьц8ьч8ьш8ьь8ьд8зд8ж", + 4:"1б8а1б8е1б8ё1б8і1б8о1б8у1б8ы1б8э1б8ю1б8я1в8а1в8е1в8ё1в8і1в8о1в8у1в8ы1в8э1в8ю1в8я1г8а1г8е1г8ё1г8і1г8о1г8у1г8ы1г8э1г8ю1г8я1ґ8а1ґ8е1ґ8ё1ґ8і1ґ8о1ґ8у1ґ8ы1ґ8э1ґ8ю1ґ8я1д8а1д8е1д8ё1д8і1д8о1д8у1д8ы1д8э1д8ю1д8я1ж8а1ж8е1ж8ё1ж8і1ж8о1ж8у1ж8ы1ж8э1ж8ю1ж8я1з8а1з8е1з8ё1з8і1з8о1з8у1з8ы1з8э1з8ю1з8я1й8а1й8е1й8ё1й8і1й8о1й8у1й8ы1й8э1й8ю1й8я1к8а1к8е1к8ё1к8і1к8о1к8у1к8ы1к8э1к8ю1к8я1л8а1л8е1л8ё1л8і1л8о1л8у1л8ы1л8э1л8ю1л8я1м8а1м8е1м8ё1м8і1м8о1м8у1м8ы1м8э1м8ю1м8я1н8а1н8е1н8ё1н8і1н8о1н8у1н8ы1н8э1н8ю1н8я1п8а1п8е1п8ё1п8і1п8о1п8у1п8ы1п8э1п8ю1п8я1р8а1р8е1р8ё1р8і1р8о1р8у1р8ы1р8э1р8ю1р8я1с8а1с8е1с8ё1с8і1с8о1с8у1с8ы1с8э1с8ю1с8я1т8а1т8е1т8ё1т8і1т8о1т8у1т8ы1т8э1т8ю1т8я1ў8а1ў8е1ў8ё1ў8і1ў8о1ў8у1ў8ы1ў8э1ў8ю1ў8я1ф8а1ф8е1ф8ё1ф8і1ф8о1ф8у1ф8ы1ф8э1ф8ю1ф8я1х8а1х8е1х8ё1х8і1х8о1х8у1х8ы1х8э1х8ю1х8я1ц8а1ц8е1ц8ё1ц8і1ц8о1ц8у1ц8ы1ц8э1ц8ю1ц8я1ч8а1ч8е1ч8ё1ч8і1ч8о1ч8у1ч8ы1ч8э1ч8ю1ч8я1ш8а1ш8е1ш8ё1ш8і1ш8о1ш8у1ш8ы1ш8э1ш8ю1ш8я1ь8а1ь8е1ь8ё1ь8і1ь8о1ь8у1ь8ы1ь8э1ь8ю1ь8я_бб88бб__бв88бв__бг88бг__бґ88бґ__бд88бд__бж88бж__бз88бз__бй88бй__бк88бк__бл88бл__бм88бм__бн88бн__бп88бп__бр88бр__бс88бс__бт88бт__бў88бў__бф88бф__бх88бх__бц88бц__бч88бч__бш88бш__бь88бь__б'8_б’8_вб88вб__вв88вв__вг88вг__вґ88вґ__вд88вд__вж88вж__вз88вз__вй88вй__вк88вк__вл88вл__вм88вм__вн88вн__вп88вп__вр88вр__вс88вс__вт88вт__вў88вў__вф88вф__вх88вх__вц88вц__вч88вч__вш88вш__вь88вь__в'8_в’8_гб88гб__гв88гв__гг88гг__гґ88гґ__гд88гд__гж88гж__гз88гз__гй88гй__гк88гк__гл88гл__гм88гм__гн88гн__гп88гп__гр88гр__гс88гс__гт88гт__гў88гў__гф88гф__гх88гх__гц88гц__гч88гч__гш88гш__гь88гь__г'8_г’8_ґб88ґб__ґв88ґв__ґг88ґг__ґґ88ґґ__ґд88ґд__ґж88ґж__ґз88ґз__ґй88ґй__ґк88ґк__ґл88ґл__ґм88ґм__ґн88ґн__ґп88ґп__ґр88ґр__ґс88ґс__ґт88ґт__ґў88ґў__ґф88ґф__ґх88ґх__ґц88ґц__ґч88ґч__ґш88ґш__ґь88ґь__ґ'8_ґ’8_дб88дб__дв88дв__дг88дг__дґ88дґ__дд88дд__дж88дж__дз88дз__дй88дй__дк88дк__дл88дл__дм88дм__дн88дн__дп88дп__др88др__дс88дс__дт88дт__дў88дў__дф88дф__дх88дх__дц88дц__дч88дч__дш88дш__дь88дь__д'8_д’8_жб88жб__жв88жв__жг88жг__жґ88жґ__жд88жд__жж88жж__жз88жз__жй88жй__жк88жк__жл88жл__жм88жм__жн88жн__жп88жп__жр88жр__жс88жс__жт88жт__жў88жў__жф88жф__жх88жх__жц88жц__жч88жч__жш88жш__жь88жь__ж'8_ж’8_зб88зб__зв88зв__зг88зг__зґ88зґ__зд88зд__зж88зж__зз88зз__зй88зй__зк88зк__зл88зл__зм88зм__зн88зн__зп88зп__зр88зр__зс88зс__зт88зт__зў88зў__зф88зф__зх88зх__зц88зц__зч88зч__зш88зш__зь88зь__з'8_з’8_йб88йб__йв88йв__йг88йг__йґ88йґ__йд88йд__йж88йж__йз88йз__йй88йй__йк88йк__йл88йл__йм88йм__йн88йн__йп88йп__йр88йр__йс88йс__йт88йт__йў88йў__йф88йф__йх88йх__йц88йц__йч88йч__йш88йш__йь88йь__й'8_й’8_кб88кб__кв88кв__кг88кг__кґ88кґ__кд88кд__кж88кж__кз88кз__кй88кй__кк88кк__кл88кл__км88км__кн88кн__кп88кп__кр88кр__кс88кс__кт88кт__кў88кў__кф88кф__кх88кх__кц88кц__кч88кч__кш88кш__кь88кь__к'8_к’8_лб88лб__лв88лв__лг88лг__лґ88лґ__лд88лд__лж88лж__лз88лз__лй88лй__лк88лк__лл88лл__лм88лм__лн88лн__лп88лп__лр88лр__лс88лс__лт88лт__лў88лў__лф88лф__лх88лх__лц88лц__лч88лч__лш88лш__ль88ль__л'8_л’8_мб88мб__мв88мв__мг88мг__мґ88мґ__мд88мд__мж88мж__мз88мз__мй88мй__мк88мк__мл88мл__мм88мм__мн88мн__мп88мп__мр88мр__мс88мс__мт88мт__мў88мў__мф88мф__мх88мх__мц88мц__мч88мч__мш88мш__мь88мь__м'8_м’8_нб88нб__нв88нв__нг88нг__нґ88нґ__нд88нд__нж88нж__нз88нз__нй88нй__нк88нк__нл88нл__нм88нм__нн88нн__нп88нп__нр88нр__нс88нс__нт88нт__нў88нў__нф88нф__нх88нх__нц88нц__нч88нч__нш88нш__нь88нь__н'8_н’8_пб88пб__пв88пв__пг88пг__пґ88пґ__пд88пд__пж88пж__пз88пз__пй88пй__пк88пк__пл88пл__пм88пм__пн88пн__пп88пп__пр88пр__пс88пс__пт88пт__пў88пў__пф88пф__пх88пх__пц88пц__пч88пч__пш88пш__пь88пь__п'8_п’8_рб88рб__рв88рв__рг88рг__рґ88рґ__рд88рд__рж88рж__рз88рз__рй88рй__рк88рк__рл88рл__рм88рм__рн88рн__рп88рп__рр88рр__рс88рс__рт88рт__рў88рў__рф88рф__рх88рх__рц88рц__рч88рч__рш88рш__рь88рь__р'8_р’8_сб88сб__св88св__сг88сг__сґ88сґ__сд88сд__сж88сж__сз88сз__сй88сй__ск88ск__сл88сл__см88см__сн88сн__сп88сп__ср88ср__сс88сс__ст88ст__сў88сў__сф88сф__сх88сх__сц88сц__сч88сч__сш88сш__сь88сь__с'8_с’8_тб88тб__тв88тв__тг88тг__тґ88тґ__тд88тд__тж88тж__тз88тз__тй88тй__тк88тк__тл88тл__тм88тм__тн88тн__тп88тп__тр88тр__тс88тс__тт88тт__тў88тў__тф88тф__тх88тх__тц88тц__тч88тч__тш88тш__ть88ть__т'8_т’8_ўб88ўб__ўв88ўв__ўг88ўг__ўґ88ўґ__ўд88ўд__ўж88ўж__ўз88ўз__ўй88ўй__ўк88ўк__ўл88ўл__ўм88ўм__ўн88ўн__ўп88ўп__ўр88ўр__ўс88ўс__ўт88ўт__ўў88ўў__ўф88ўф__ўх88ўх__ўц88ўц__ўч88ўч__ўш88ўш__ўь88ўь__ў'8_ў’8_фб88фб__фв88фв__фг88фг__фґ88фґ__фд88фд__фж88фж__фз88фз__фй88фй__фк88фк__фл88фл__фм88фм__фн88фн__фп88фп__фр88фр__фс88фс__фт88фт__фў88фў__фф88фф__фх88фх__фц88фц__фч88фч__фш88фш__фь88фь__ф'8_ф’8_хб88хб__хв88хв__хг88хг__хґ88хґ__хд88хд__хж88хж__хз88хз__хй88хй__хк88хк__хл88хл__хм88хм__хн88хн__хп88хп__хр88хр__хс88хс__хт88хт__хў88хў__хф88хф__хх88хх__хц88хц__хч88хч__хш88хш__хь88хь__х'8_х’8_цб88цб__цв88цв__цг88цг__цґ88цґ__цд88цд__цж88цж__цз88цз__цй88цй__цк88цк__цл88цл__цм88цм__цн88цн__цп88цп__цр88цр__цс88цс__цт88цт__цў88цў__цф88цф__цх88цх__цц88цц__цч88цч__цш88цш__ць88ць__ц'8_ц’8_чб88чб__чв88чв__чг88чг__чґ88чґ__чд88чд__чж88чж__чз88чз__чй88чй__чк88чк__чл88чл__чм88чм__чн88чн__чп88чп__чр88чр__чс88чс__чт88чт__чў88чў__чф88чф__чх88чх__чц88чц__чч88чч__чш88чш__чь88чь__ч'8_ч’8_шб88шб__шв88шв__шг88шг__шґ88шґ__шд88шд__шж88шж__шз88шз__шй88шй__шк88шк__шл88шл__шм88шм__шн88шн__шп88шп__шр88шр__шс88шс__шт88шт__шў88шў__шф88шф__шх88шх__шц88шц__шч88шч__шш88шш__шь88шь__ш'8_ш’8_ьб88ьб__ьв88ьв__ьг88ьг__ьґ88ьґ__ьд88ьд__ьж88ьж__ьз88ьз__ьй88ьй__ьк88ьк__ьл88ьл__ьм88ьм__ьн88ьн__ьп88ьп__ьр88ьр__ьс88ьс__ьт88ьт__ьў88ьў__ьф88ьф__ьх88ьх__ьц88ьц__ьч88ьч__ьш88ьш__ьь88ьь__ь'8_ь’8б8'1б8’1в8'1в8’1г8'1г8’1ґ8'1ґ8’1д8'1д8’1ж8'1ж8’1з8'1з8’1й8'1й8’1к8'1к8’1л8'1л8’1м8'1м8’1н8'1н8’1п8'1п8’1р8'1р8’1с8'1с8’1т8'1т8’1ў8'1ў8’1ф8'1ф8’1х8'1х8’1ц8'1ц8’1ч8'1ч8’1ш8'1ш8’1ь8'1ь8’1б8а3б8у3б8о3б8е3б8ё3б8ы3б8э3б8і3в8а3в8у3в8о3в8е3в8ё3в8ы3в8э3в8і3г8а3г8у3г8о3г8е3г8ё3г8ы3г8э3г8і3ґ8а3ґ8у3ґ8о3ґ8е3ґ8ё3ґ8ы3ґ8э3ґ8і3д8а3д8у3д8о3д8е3д8ё3д8ы3д8э3д8і3ж8а3ж8у3ж8о3ж8е3ж8ё3ж8ы3ж8э3ж8і3з8а3з8у3з8о3з8е3з8ё3з8ы3з8э3з8і3к8а3к8у3к8о3к8е3к8ё3к8ы3к8э3к8і3л8а3л8у3л8о3л8е3л8ё3л8ы3л8э3л8і3м8а3м8у3м8о3м8е3м8ё3м8ы3м8э3м8і3н8а3н8у3н8о3н8е3н8ё3н8ы3н8э3н8і3п8а3п8у3п8о3п8е3п8ё3п8ы3п8э3п8і3р8а3р8у3р8о3р8е3р8ё3р8ы3р8э3р8і3с8а3с8у3с8о3с8е3с8ё3с8ы3с8э3с8і3т8а3т8у3т8о3т8е3т8ё3т8ы3т8э3т8і3ф8а3ф8у3ф8о3ф8е3ф8ё3ф8ы3ф8э3ф8і3х8а3х8у3х8о3х8е3х8ё3х8ы3х8э3х8і3ц8а3ц8у3ц8о3ц8е3ц8ё3ц8ы3ц8э3ц8і3ч8а3ч8у3ч8о3ч8е3ч8ё3ч8ы3ч8э3ч8і3ш8а3ш8у3ш8о3ш8е3ш8ё3ш8ы3ш8э3ш8і3а8й1о8й1е8й1і8й1э8й1ю8й1я8й1ё8й1ы8й1а8ў1о8ў1е8ў1і8ў1э8ў1ю8ў1я8ў1ё8ў1ы8ў1б8'1б8’1в8'1в8’1г8'1г8’1ґ8'1ґ8’1д8'1д8’1ж8'1ж8’1з8'1з8’1к8'1к8’1л8'1л8’1м8'1м8’1н8'1н8’1п8'1п8’1р8'1р8’1с8'1с8’1т8'1т8’1ф8'1ф8’1х8'1х8’1ц8'1ц8’1ч8'1ч8’1ш8'1ш8’1б8ь1в8ь1г8ь1ґ8ь1д8ь1ж8ь1з8ь1к8ь1л8ь1м8ь1н8ь1п8ь1р8ь1с8ь1т8ь1ф8ь1х8ь1ц8ь1ч8ь1ш8ь1", + 5:"_ад1б_ад1в_ад1г_ад1ґ_ад1д_ад1ж_ад1з_ад1к_ад1л_ад1м_ад1н_ад1п_ад1р_ад1с_ад1т_ад1ф_ад1х_ад1ц_ад1ч_ад1ш_аб1б_аб1в_аб1г_аб1ґ_аб1д_аб1ж_аб1з_аб1к_аб1л_аб1м_аб1н_аб1п_аб1р_аб1с_аб1т_аб1ф_аб1х_аб1ц_аб1ч_аб1ш_уз1б_уз1в_уз1г_уз1ґ_уз1д_уз1ж_уз1з_уз1к_уз1л_уз1м_уз1н_уз1п_уз1р_уз1с_уз1т_уз1ф_уз1х_уз1ц_уз1ч_уз1ш_ус1б_ус1в_ус1г_ус1ґ_ус1д_ус1ж_ус1з_ус1к_ус1л_ус1м_ус1н_ус1п_ус1р_ус1с_ус1т_ус1ф_ус1х_ус1ц_ус1ч_ус1ш8льш_8сць_8дзь_", + 6:"_над1б_над1в_над1г_над1ґ_над1д_над1ж_над1з_над1к_над1л_над1м_над1н_над1п_над1р_над1с_над1т_над1ф_над1х_над1ц_над1ч_над1ш_пад1б_пад1в_пад1г_пад1ґ_пад1д_пад1ж_пад1з_пад1к_пад1л_пад1м_пад1н_пад1п_пад1р_пад1с_пад1т_пад1ф_пад1х_пад1ц_пад1ч_пад1ш_раз1б_раз1в_раз1г_раз1ґ_раз1д_раз1ж_раз1з_раз1к_раз1л_раз1м_раз1н_раз1п_раз1р_раз1с_раз1т_раз1ф_раз1х_раз1ц_раз1ч_раз1ш_рас1б_рас1в_рас1г_рас1ґ_рас1д_рас1ж_рас1з_рас1к_рас1л_рас1м_рас1н_рас1п_рас1р_рас1с_рас1т_рас1ф_рас1х_рас1ц_рас1ч_рас1ш_роз1б_роз1в_роз1г_роз1ґ_роз1д_роз1ж_роз1з_роз1к_роз1л_роз1м_роз1н_роз1п_роз1р_роз1с_роз1т_роз1ф_роз1х_роз1ц_роз1ч_роз1ш_бяз1б_бяз1в_бяз1г_бяз1ґ_бяз1д_бяз1ж_бяз1з_бяз1к_бяз1л_бяз1м_бяз1н_бяз1п_бяз1р_бяз1с_бяз1т_бяз1ф_бяз1х_бяз1ц_бяз1ч_бяз1ш_без1б_без1в_без1г_без1ґ_без1д_без1ж_без1з_без1к_без1л_без1м_без1н_без1п_без1р_без1с_без1т_без1ф_без1х_без1ц_без1ч_без1ш_бяс1б_бяс1в_бяс1г_бяс1ґ_бяс1д_бяс1ж_бяс1з_бяс1к_бяс1л_бяс1м_бяс1н_бяс1п_бяс1р_бяс1с_бяс1т_бяс1ф_бяс1х_бяс1ц_бяс1ч_бяс1ш_бес1б_бес1в_бес1г_бес1ґ_бес1д_бес1ж_бес1з_бес1к_бес1л_бес1м_бес1н_бес1п_бес1р_бес1с_бес1т_бес1ф_бес1х_бес1ц_бес1ч_бес1ш_рос1б_рос1в_рос1г_рос1ґ_рос1д_рос1ж_рос1з_рос1к_рос1л_рос1м_рос1н_рос1п_рос1р_рос1с_рос1т_рос1ф_рос1х_рос1ц_рос1ч_рос1швё8рст", + 7:"_праз1б_праз1в_праз1г_праз1ґ_праз1д_праз1ж_праз1з_праз1к_праз1л_праз1м_праз1н_праз1п_праз1р_праз1с_праз1т_праз1ф_праз1х_праз1ц_праз1ч_праз1ш_ад8зінтэ8мбр__дву8х3_шма8т1", + 8:"_перад1б_перад1в_перад1г_перад1ґ_перад1д_перад1ж_перад1з_перад1к_перад1л_перад1м_перад1н_перад1п_перад1р_перад1с_перад1т_перад1ф_перад1х_перад1ц_перад1ч_перад1ш_цераз1б_цераз1в_цераз1г_цераз1ґ_цераз1д_цераз1ж_цераз1з_цераз1к_цераз1л_цераз1м_цераз1н_цераз1п_цераз1р_цераз1с_цераз1т_цераз1ф_цераз1х_цераз1ц_цераз1ч_цераз1ш_церас1б_церас1в_церас1г_церас1ґ_церас1д_церас1ж_церас1з_церас1к_церас1л_церас1м_церас1н_церас1п_церас1р_церас1с_церас1т_церас1ф_церас1х_церас1ц_церас1ч_церас1шна1д8вор", + 9:"за1п8люшч_па1д8зял_па1д8зелраз1г8лядраз1г8ледзло1ў8жыв_па1д8зяк_вы1к8люч", + 10:"віда1з8мянвіда1з8менза3ц8вярдз_па3г8лядз", + 12:"слова1ў8тваркрова3ў8твар" + } +}; \ No newline at end of file diff --git a/resources/viewer/hyphenate/patterns/bn.js b/resources/viewer/hyphenate/patterns/bn.js index 46497757f6..0b1b366659 100644 --- a/resources/viewer/hyphenate/patterns/bn.js +++ b/resources/viewer/hyphenate/patterns/bn.js @@ -1,13 +1,13 @@ -// For questions about the Bengali hyphenation patterns +// For questions about the Bengali hyphenation patterns // ask Santhosh Thottingal (santhosh dot thottingal at gmail dot com) -Hyphenator.languages.bn = { +Hyphenator.languages['bn'] = { leftmin : 2, rightmin : 2, shortestPattern : 1, longestPattern : 1, - specialChars : unescape('আঅইঈউঊঋএঐঔকগখঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহিীাুূৃোোৈৌৗ্ঃং%u200D'), + specialChars : unescape("আঅইঈউঊঋএঐঔকগখঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহিীাুূৃোোৈৌৗ্ঃং%u200D"), patterns : { - 2 : 'অ1আ1ই1ঈ1উ1ঊ1ঋ1এ1ঐ1ঔ1ি1া1ী1ু1ৃ1ে1ো1ৌ1ৗ1্2ঃ1ং11ক1গ1খ1ঘ1ঙ1চ1ছ1জ1ঝ1ঞ1ট1ঠ1ড1ঢ1ণ1ত1থ1দ1ধ1ন1প1ফ1ব1ভ1ম1য1র1ল1শ1ষ1স1হ', - 3 : '2ঃ12ং1' + 2 : "অ1আ1ই1ঈ1উ1ঊ1ঋ1এ1ঐ1ঔ1ি1া1ী1ু1ৃ1ে1ো1ৌ1ৗ1্2ঃ1ং11ক1গ1খ1ঘ1ঙ1চ1ছ1জ1ঝ1ঞ1ট1ঠ1ড1ঢ1ণ1ত1থ1দ1ধ1ন1প1ফ1ব1ভ1ম1য1র1ল1শ1ষ1স1হ", + 3 : "2ঃ12ং1" } }; diff --git a/resources/viewer/hyphenate/patterns/cs.js b/resources/viewer/hyphenate/patterns/cs.js index 9b934ac4cf..6c55af5a91 100644 --- a/resources/viewer/hyphenate/patterns/cs.js +++ b/resources/viewer/hyphenate/patterns/cs.js @@ -1,11 +1,11 @@ -// For questions about the Czech hyphenation patterns +// For questions about the Czech hyphenation patterns // ask Martin Hasoň (martin dot hason at gmail dot com) -Hyphenator.languages.cs = { +Hyphenator.languages['cs'] = { leftmin : 2, rightmin : 2, shortestPattern : 1, longestPattern : 6, - specialChars : 'ěščřžýáíéúůťď', + specialChars : "ěščřžýáíéúůťď", patterns : { 2 : "a11f1g1k1n1pu11vy11zé11ňó11š1ť1ú1ž", 3 : "_a2_b2_c2_d2_e2_g2_h2_i2_j2_k2_l2_m2_o2_p2_r2_s2_t2_u2_v2_z2_č2_é2_í2_ó2_š2_ú2_ž22a_a2da2ga2ia2ka2ra2sa2ta2u2av2aya2ča2ňa2ť2b_b1db1h1bib1j2bkb1m2bn1bob2z1bá1bí2bň2c_1ca2cc1ce1ci2cl2cn1coc2p2ctcy21cá1cí2cň1ců2d_1dad1bd1d1de1did1j2dkd1m2dn1dod1t1dud2v1dy1dá1dé1dě1dí2dň1dů1dý2e_e1ae1be1ee1ie2ke1o2ere1se1te1ue1áe2ňe1ře2šeú12f_f2l2fn2fr2fs2ft2féf2ú2g_2gngo12h_h2bh2c2hd2hkh2mh2rh1č2hňhř2h2ž2i_i1ai1bi1di1hi1ji1li1mi2ni1oi1ri1ti1xi1ái2ďi1éi1ói1ři2ši2ž2j_j2d1jij1j2jkj2m2jn2jp2jz2jď1jí2jž2k_k2dk2e2kf2kkk2l2kn2ks2kčk2ň2l_2lf2lg2lh1li2lj2lk2ll2ln2lp2lv2lz2lň1lů1lý2m_1ma1me2mf1mim2l2mn1mo2mp1mu2mv2mz2mčm2ž2n_2nb2nf2ngn1j2nk2nn2nz2nď2nónů22nž2o_o1ao1cog2o1ho1io1jo1lo1mo2no1oo1to2uo1xo2zo1čo2ňo1ř2p_2pkp2l2pn2pp2ptpá12pč2pš2pťqu22r_r1br1cr1d2rkr1l2rn2rrr1x2rzr1č2ró2rš2s_s2cs2d1se2sf1sis2js2k2sn1sos2p1sr2ss1sus2v1sé1sí2sň2sť1sůs2ž2t_1te2tf2tg1ti2tl2tm2tn1to2tpt2vt2č1té1tě2tř2tš1tů2u_u2b2ufu2ku2mu2nu2pu2ru2su2vu2zu2ču2ďu2ňu2šu2ž2v_2vkv2l2vm2vnv2p2vňwe22x_2xf2xnx1ty2ay2ey2sy2ňy2šyž22z_2zbz2ez2j2zl2ztz2v2zzzá12zč2zňz2řá1bá1dá1já1sá2ňá1řá2š2č_1ča2čb1če1či2čk2čn1čoč2p2čs1ču1čá1čí1čů2ď_1ďa1ďoé2dé2fé2lé2mé2sé2té2šé2žě1cě1lě2vě2zě1řě2šě2ťě2ží1bí1hí1jí1lí1rí1tí2ňí1ří2š2ň_2ňa2ňk2ňmň1só2z2ř_2řc2řdři12řk2řn1řoř2v2řz2řš2š_2šl2šnš2p2štš2vš2ň2ť_2ťk2ťm2ťtú2dú2kú2lú2nú2pú2tú2vú2zú2čú2žů1bů1cůt2ů2vů2zů2žý1bý1dý1hý1jý1lý2ný1rý1tý1uý1ř2ž_2žk2žl2žnž2v2žď2žň2žš", diff --git a/resources/viewer/hyphenate/patterns/da.js b/resources/viewer/hyphenate/patterns/da.js index f25076e53a..2046e5aa04 100644 --- a/resources/viewer/hyphenate/patterns/da.js +++ b/resources/viewer/hyphenate/patterns/da.js @@ -1,10 +1,10 @@ -Hyphenator.languages.da = { - 'leftmin' : 2, - 'rightmin' : 2, - 'shortestPattern' : 2, - 'longestPattern' : 8, - 'specialChars' : 'æøå', - 'patterns' : { +Hyphenator.languages['da'] = { + leftmin : 2, + rightmin : 2, + shortestPattern : 2, + longestPattern : 8, + specialChars : "æøå", + patterns : { 3 : "a3ca1ea3ha3ja5oa5z1ba4bd1be1bib1j1bo4bsb5t3bub5w1by1ce3chck35cy3dad1b1ded1fd1gd3h1did3jd1kd1ld1m3dod1p1dud1v3dye3ee1he5x1faf1bf1d1fef1ff1gf1h1fif1k3fl1fof1p4ft1fuf1v3fy1gag1bg1d1geg3fg1gg1h1gi5gjg3kg1lg1m3gog3p1grg3v1gyi1ai3bi1ci3hi5ii5ji1uj5kj3rk5bk3hk1kk1tl1bl1fl3hl3jl1ll3r4ls1mam1bm3d1mem3fm1gm3h1mim3km1lm1mm1n3mom1r3my3nan1bn1c4nd1nen1f1nin1mn1n1non5pn3r4ns3nyn3zo3ao1co1eo5ho1jo3t3pap3dp3fp3mp3np1t1pup5vqu4r1br1fr1hr1lr1nr3pr1rs1d1ses1fs1msp44tbt1ht1mt1n4tsu1au1eu3iu5qv5hv5jv5kvl41vov5pv5t3vuy3ay3ey5o5bæ3dæ3døe3æe5å3fæ3fø3gæ3gåi3ø3kø3kå1mæ3mø3må3næ5nøo5åpå31sæ1sø5våæ3cæ3eæ5iæ5oø3eå1då1eå5hå3lå3t", 4 : "_ae3_om1_po15adg5afgaf3r5afsa4gia4gya5kaa3kea5kraku5a3laa1lea1lial3ka1loa3lua1lya3nu3anva5pea3pia5poa1ra1arba1re5arga1ria3roa3saa3sca1sia3ska3soa1tea1tia1toa5tra1tua5vaa1vebe1k4b1n1br4bs5kb3sob1stby5s4c1c4ch_ci4oda4sd1d4de5ddi1edi5l4d1n4dopd5ovd5rud4smd4sud3tad1tedt5od5trdt5udub5e5ade3afe5age3ake1ale3ane5ape3ate3blebs3e1cie4do3effe3fr3efte3gue3inei5se3jee1kae3kee3kle5kre3kue1kve5kye3lee1lie3loe5lue3lyem1s4enne4noe5nue5ole3ope1ore3ovepi3e1pre3rae1ree1rier1ker3se5rye1tae1tee1tie3tje1toe3tre3tue1tye3ume3un3eure1vae3vee1vifej4f1s4f3taf1tef1tif5toge3sgi4bg5ovgs1ag4segs1pgs1vg3tag1teg1tig5tog3trgt4sg3udgun5g5yd4ha_he5s4hethi4ehi3s4h3thun4hvo4i3dri1eli1eni3erif3ri3gui1kai1keik1li5koi3kuik3vi3liil3ki1loil5ui3mu5infin3si3nui3odi3ogi5oki3olion4i3oti5pii5pri3rei3riir5ti3sci3sii4smis3pi1tai1tei1tii3toi3tri1tui3tyi1vai1vei1vij3agjds1j3lej3lijre5ju3s5kapk5au5kavki3ek1le3kluk4ny5kod1konko3v1kra5kryk1siks3kks1pks5vkt5s3kur1kus3kutk4vok4vu5lab5lam1latl3dr1le_5led3len1ler1les4leuli5ol1kel1kol3kyl5mul3op3lov4l3pl4psl5sjl1tal1tel3tilt3ol3trl3tulu5ll3vel3vimi3kmi4o4mopm1pem3pim3plm1pom3prm5skms3pms5vm3tam3tem3tim3trm1ud1mul4nak1naln3drne5aneo4n4go4n1h4nimni5on1ken1kon3krn3kun5kv4n1ln3sin1tan1ten1tin3ton1trn3tun3ty4n1vo4asod5sof5ro5ino3kao1keo3kuo3lao3leo1lio1loo3luo5ly1omron3kook5o3oro5ovo3piop3lop3rop3s4or_o3rior3kor5oo3sio3soo1teo5unov4s4pec3pen1perpe5spe3u4p5h1pla5pok3potp4rop3skp5sops4pp3stpu5b5py34rafr3dr1relr1guri1er3kar1ker1kir3kurmo4r5muro1bro3pr3orr1sar1sirs4nr3spr5sur3svr1ter1tir3tort3sr5tyr3ud5rutr3var1ver3viry4ss3af1sams3aps1ar1sat4s1bsdy4s4ed4s3h1sig5sis5sit5sius5ju4sk_1skes3kl5skys1les1lislo35slus5lys4myso5k5sol3sons1pls5r4s1s44st_5stj3sto1strs1ud3suls3un3surs3ve3s4y5ta_1tag3tegteo14t1f6t3g3tid4t3k4t1l4t3pt4ra1tryt3sit3st4t1t5turt5ve1typ5udlud5rud3s3udvugs3u5guu5klu1lau1leu5lyu5peup5lu3rau3reu3rous5au3siu5sous5vu1teu1tiu1tout5r5u5vva5d1vedve3s5vet1visv3lev5livls1v5rev3stv5suy5dry3key5kiy3koy3kvy5liy5loy5muyns5y1pey3piy3rey3riy3siy3tiy5vezi5o_så3a3tøa5væe3læe3løe3røe5tæe5tøe1vægiø4g4søg5så3gø1i5tæl3væ5løsm5tån3kæn5tæo5læor3ø5præ5pædr5kær5tær5tør3vær5æl4røn5rør3rådr5års4kå3slås4næ5stø1stås5økti4øt4søt5såt3væu3læy5vææb3læg5aægs5æ5kvæ1reæ3riær5sæ5siæ3soæ3veøde5ø1jeø3keø3leøms5ø1reø3riør5oø1veå3reå5sk", 5 : "_an3k_an1s_be1t_her3_ove4_til3_yd5rab5le3abstaf4ria4gefag5inag5si3agtiais5t4alkval5siam4paar5af3a3spa3stea3stia1ta1ato5vba4tibe3robe5rube1s4be1trbi5skbo4grbo3rabo5rece5ro4d3afde5sk3drif3drivd5rosds5ands5ind1skidsu5lds5viea4laed5aredde4ed5raed3re4e1koek5sa3ekspe3ladel3akel3are1lase4lek3elem5elimel5sae4maden5ake4nanen3soer3afe4rage4rake4ref5erhve4ribero5der5over5tre3rumer5unfa4cefags3fejl1fo4rif5tvig3artgi3st4g5omgsha4g5slags3org4strheds3hi4n5ho5koho5vehund3i4bleids5ki3et_ik3reik5riiks5tik4tui3lagil3egil5ejil5elind3tings1in4svions1i5o5ri3plii3stii5suakel5ske3skke5stki3stk5lakko3ra3kortks3ank3stek5stuk4tarkti4ekt5relad3r5lagdld3st4lelele4molfin4l1go1li4galo4du4l5orlses1ls5inl4taf4m5ejm5ingmmen5mo4da4m5ovmse5sms5inm3stemu1lind5sind5sknd5spne4dan3erkn5erlne5slne5stni3stn3ordn1skuns3pon1stan5stint4suob3lio4dinod5riod5uno4geko4gelo4g5oog5reog5sk3optaor1an3ordnord5so3re_o3rego3reko3rero3retor5imor3slor3stpa5ghp5anlpe1rap4lan4ple_4pler4ples4p5p41procp5ulera5is4rarbrd4s34reksre5la5rese4ressre3st5rettri5la4rimor4ing4rinp4rintrk3sorre5sr5skrr5stur5talrt3rer5trir5trosa4ma5s4erse4se4s1g4si4bls5int1skabsk5s44snins4nit5som_3somms5oms5somt4s1op3spec4sper3s4pi1stanst5as3stat1stav1ste_1sted3stel1sten5step3stes5stetst5om1sy1s4tanvteds55tekn5termte5roti4enti3stto5rato1reto1ritor4m4trestro5vts4pats5prts5ult5udsue4t5uk4tauk4tru1reru5skaut5s43varm4v5omyk3liyk4s5yr3eky5t3r_ær5i_øv3rbrød35drøvdstå4er5øn4n5æb4s5ænså4r53værd1værkæ4gekæ4g5rælle4æn1drær4maær4moæ3steøn3støn4t3ørne3års5t", diff --git a/resources/viewer/hyphenate/patterns/de.js b/resources/viewer/hyphenate/patterns/de.js index 05cdfb4353..859efb988b 100644 --- a/resources/viewer/hyphenate/patterns/de.js +++ b/resources/viewer/hyphenate/patterns/de.js @@ -1,20 +1,20 @@ -Hyphenator.languages.de = { +Hyphenator.languages['de'] = { leftmin : 2, rightmin : 2, shortestPattern : 2, longestPattern : 12, - specialChars : 'äöüß', + specialChars : "äüöéß", patterns : { - 3 : "2aaa1äa1ba1da1g2aia1j2aoa1öa1p2aqa1ßa2ua1xä1aä1bä1dä1gä1jä1k1äqä1ßä1v1äxä1z1bibl21cac4h1cic4k3co2cs3cu1cy1de1did1ö1due1be1d2eee1fe1ge1ke1me1pe1ße1te1üe1wey1e1z1fa1fä1fe1fi1fo1fö1fu1fü1fy2gd1geg1lh1j4hl2hnh1q2hr4hsh2ü2hwh1zi1a2iä2ici1d2ifi1ji1si1ßi1üi1x1ka1käkl21ko1kök1q1ku1kü1le1li4ln1lo1lö1ly1ma3mä1me1mi1mo1mö1mu1mü1my1na1nä1ne1nin1j1noo1b2oco1d2oi2ol2omo1qo1vo1xö1cö1dö1e1öfö1k2önöo1ö1ßö1tö1vö1wö1z1pä1php1j1po1puqu42rc1re1ri4rnr1q1ru1rür1x1ry1sa1sä1sc1se1si1so1sös1t1su1sü1ße1ßiß1j1ta1tä1tet1h1ti1to2tö2ts1tu2tü2ua4ucu1h2uiu1ju1lun1u1q2usu1wu1x1üb2üc2üdü1gü1ß2ütü1zve2v2r2vsw2a2wnw2rw2ux1a1xe1xix1jx1q2xyx1zy1by1dy1ey1gy1hy1jy1ly1py1ry1vy1wy1yza2zä2zu1zw2", - 4 : "_ax2_äm3_en1_eu1_gd2_he2_in3_oa3_öd2_pf4_ph4_ps2_st4_th4_ts4_um3_ur1_xe1a1aba3au2abaab1ä1abd1abf3abg1abh2abi1abkab1l1abnab3r1abs2abü1abw2aby1abz2ac_2aca2acca1cr2acu4ad_1add5adjae2ca2eka2etae2xaf1a2afe2afia2föaf1u2ag_2agaagd12agmag2n2agt2ah_2ahsa1huah1wa1hyaib3ai1eaif2a2ilai3o2ak_2akb2akc2akd2ako2aks2aku1akza1laa1lä2ale2ali2aloa1lu4aly2am_2amäam4ea2mö2amu1anb2ane1anf1anh2anj1anl2ann2anoa1nö1anra1nü1anwa1nyao1ia1opa1or2apea2pfap3lap2n2apra3pu2ar_a1raa1rä1arb2are2arf2arh2ari2arr2arua2rü2arv2ary2asc4asea2söaße22a1tata1at2cat2h3atmat1ö4atra3tü4atz2au_2aub4auc2aue2aug2auj4aum2aunau1oaup22aux2a1ü2a1vav4a4avia2vr2a1wax2e2a1zaz2oäb2sä1ckä2daä2dräd2s2ä1eäf3läf3räf2säg2näh1aä3hi2ähm2ähsä1huäh1wä1imä1la2äleä1lu2ämläm2s2än_2äne2änsä1onä1paär1aär1äär1c2äreä1rö2ärtä2saä3suät2häu1cä2uf1äug4äulä2un2äur1äuß3bah3bal3basb2ärb2äs4b1bb3bebb2sbbu12b1cbch21be_3bebbe1c3bek3bel1bem3bet3bew1bezbge3bib2biz24b1j2bl_b2leb2lo3blü2b3mbni2bo4abo2cboe1b1op2böf2b1qb2r43brä3brü4b1sb3säb5scb4slb2söbss2bs2t4b3tb5teb4thbt4rbtü1bu2fbü1c2b1v2b1w3by1by3pca1h3camc4an2c1c2cec2cefce1i2cek1cen1cerce1s1cetce1u4ch_2chb2chc2chd2chf2chg2chh2chj2chk2chp4chs2cht4chü2chv4chw2chzci2s4ck_ck1ack1ä2ckb2ckc2ckd1cke2ckf2ckg2ckh1cki4ckk2ckm2ckp2cks4ckt1cku2ckw1cky2ckzco2cco2dco4rcos4co2u2c1qc2r2cre2cst24c1tcti43da_da1ad1afd1ag2d1cd3dhd5dodeb4de1cd1ei3demdes1det2dga2d3gld3hedi2e2d1j2d1ld3ladni23do_d1obdo2o2d1qd2r4d3rid3rö2d1s4dsb4dsld2södss4dst42d1td2thd3tidto2d3tödt3rd3tüdu2fdu1idu1odur2dus33düf3dün3dür2d1wdwa22e1aea2ce2ade2ape1ä22eba2ebl2ebre3bue3cae1ce2eclec1s2ected2eed2öe3dyee1ce2edee1eeeg2e1eie1ene2ete2ew2ef_2efa2efe2efi2eflefs22efue3gee2gn2egue1hee1hi2ehme1hoehs2e1hue1hüeh1we1hy4eibe4idei1ee2ilei1p2eire2it2e1jek4a1ekdek4nek2oek4r2ektek2ue1lae1lä2eloe1lü2elz2ema2eme2emm2emüen1aen3f2enie4nre4nten1ue1nüe1ny2e1oe2odeo2ve1ö22epee3pu2e1qer1ae1räer1c2ereer3h2eri2eru2esbes2c2esfes3l2esmes2ö2esp2esres3ze3teet2he3ti2etoe3tö2etre3tü2etz1euke1um2euneu1p2eut2eux2e1ve3vo2ewae3wä2eweew2s2ex_3exp2exu1exzey4neys4ez2wfab43facf4ahf2alf2arf3atfä1cf1äu2f1cfe2c3fet3fewf1ex3fez2f1fff2efff4ff3lff2sfid2fi2r3fis2f1jf2l22fl_1fläf3löf4lü2föf2f1qf2r2f3ruf3rü4f1sf3scf3sifs2tf2süf3sy4f1tf2thf3tö3fugf1umf2ur3fut2fübfü2r2f1v2f1w2f1zfz2afz2öfzu33ga_ga1cga1kgäs5gä4ugbi22g1cg1dag1dog1dögd3rgdt4gd1uge1cged4gef4g2el3gen4g1ggg3lgg4r2g1hgh2egh1lg2hugh1wgi2m2g1j2gl_g2lag2lä2gls2glug2lyg1n22gn_g2nag2no2gns2gnug2nüg2nygo4a2goggo1igo1y2g1qg2r4gse2g4slgso2gsp4g4swg3syg3tegt3hg3tigt4rgt3tg3tügu1cgu2egu2sgu2t2gübgür1güs32g1v2g3w3haah1ahh1aph2as2h1c2heahe3x2hi_h1ia2hikhi2n2hio2hiph2ishlb4hld4hlg4h2lohlt22h1mh2moh3möhm2sh2muh2nähn2eh1nu2ho_2hodhoe22hoih2on2hoo3hov1h2öhö2ch4örhr1chr3dhrg2h2rih3rührz2hss24h1tht1ah2thhto2htt2h3tühu1chu2n2hurhüs32h1vhvi23hyg3hyphz2ahz2o2ia_i2ab2iaci2afi2ahi2aj2ial2iani2apia1qi3aui1ämiär2i1ät2i1bib2oib1ridt4id2ui2dyie1ci1eiieo2i1exif3lif3rif2s2i1gi2gl4i1hi3heih3nih3rih1wi3i2ii4gii4s2i1ki2kni1la6ilbilf22ilo2im_2imo2imt2imu2inein3fi1nö2inpin1ui1ny2i1oio1cio2dion2i2ori2oui2ovio2x2ip_i1pai1pei1pr2ips2ipu2i1qi1räir1cir2e2irki1ro2is_2isei2sü4itäi3töi3tüi3u2ium12i1v2i1wi2xaix2eix3t2i1zi2zöja1c2jatje2aje1cje2gjit3joa3jo2iju2kjus33ka_ka1ck2adka2o3kaskär2kby42k3c2keoki1ckik4ki3o3kir2kiz2k1jk2lek1lu2k1mk2n4k3nek3nu3knü3komk2onk2osko2wkö2fk1ölk2r42k1skst42k1tk2thktt2k3tüku1ckuh12kübkü1c2k1v2k1w3la_laa21lad2laf2lawlä1c3läd2läf1läs4lät1läu2l1blb2slb2u2l1c4l1dld3rl4dsldt4l2dü3le_2lec3ledle2e3leh2leple2u3lev2l1f2l1gl3goli1clid2l2ie3lig2limli2o2lir3liu4l3j2l1klk2llk2s2l1lllb4llg4llk4ll3t2l1mlm3plm3tlnd2l1nul1nü3loe3lok2löd4lög4löß2l1plp2fl3pu2l1q4l1sl2st4l1tl2thl3til4tsltt2l3tü1luf4luo2lur3lux2lüb5lüd2l1v2l3wly3cly1u2l1zl2zöm1abma1f3mas3maßm4aym3br2m3c2m1dmd1ameb43mehme3o3mesmeu12m1h3migmi2o3mit2m1jmk4n2m1lm3lam3li4m1mmmd2mmm2mm3pmm2sm3ni3mohmom2m2on3mos3motmo2umo1ymö2c4mökm1öl2m1pm2pf2m1q2m1sm3säm3scm3semss2m2süm3sy2m1tm2thm3tömts1mtt2m3tümt3zmu1a3mun2müb3mün3müt2m1v2m1wmwa2my1amy4s2m1z3na_n2acn2ag3nas3näs2näu4n1cn2ck2n1dn2dön2dü3ne_2necn1efne2l3nenne2one2un2ew3nez2n1fnf2änff4n3finf4lnf4rnf3s4n1gngg4ng3mn2gnn3hän3hen3hu3nian4ie3niknin1n2ip2nitni3v3nix2n1k4n1nnn3fn3ni3no_no1cn1of3nov3noz2nödn2öt2n1q4n1snsp4n3sy2n1tn3tin3ton3tön4tsn3tü1nud3nuenuf21nug1nuinu2n2nup2nur1nut1nuu1nuz3nü_3nüs1nüt4n1w1nyh1nyr1nys1nyw2n1znz3so4aco4adoa4go4aho2aro2aso4ato5au2obbob2e1objob1l2obüo1ceo1ck2odrodt42o1eoe2bo2ecoe2doe2hoe2lo2eso2etoe2x2ofa2ofiof3l2ofo2oft2o1go3ghog4nogs2o1häo1heo3hio1hooh1soh3to1huoh1wo3ieo1imo1inoi4roi1t2o1j2o1kokt2o1lao1läol2io3loo1luoms22ona2onä2onc2oneong2o1nuon3v1onyon3zoof2o1opo1or2opho1pi2oplo1pr2or_or1aor1c2ore2orf2orh2orm2orq2orr2orso3ruo2rü2orw2osios1po3sy2o1t4oteot2hot2i4otoo3tüo1uh2oulo1um2our2ouv2o1ü2o1wo3wiox2aox2eo2xuo1yoo3ziö1b2öbs3ödi3öf3lög3lög3rö1heö1huök2s3öl_öl3söm2sön2eö3niön2sö1nuö1peör1cör1oöru4ö2sa2öseö2spö3suöt2höze31paa1pacpag41pak1papp2ar2paß1pat1pau3päd3pär3päs2p1b2p3cpda41pe_pe2a1pedpei11pel1pem1pen3pet4pf_pff4pf3r2p1g4ph_ph2a2phä2phb2phf2phgph2iph2l2phmph2n2phöph4r2phs2phzpid23pik1pilpi2o3pip3pispku22pl_3pläp4lo2p1npo1c3podpo2i3pok3polp2oppo2wpo3xpö2c2p1ppp3lppt2p2r2p4rä2p1s4ps_p3sep2söps2pp2st2p1tpt1ap3tep2thp3tiptt2ptü4pt3zpu1apub42puc2pur3put1püf2pülpün22p1v2p1w3py1pys4py3t2p1zr1abr2afr2alr2apr1arr2as2raß1rat1raür2ax4räf4räg2räh2rämrä2u2r1brbb2rb2orb2srb2urby4r1cer2ckr1cr2r1dr2dördt43re_2reäre1e3regre2u2reür1ew3rez2r1frf2är3ferf2u2r1grgt4r1h22rh_2rha2rhä2rhö2rhsr2ie3rigr2isr2it2r1j2r1krk4n4r1lr3lar3lerl2or3lörl3t4r1mrm2urnd4r3nern3frng2r3nirn1ör1nur1nür1nyro1c3roir2on4roßr1ök1röl4röpr1örrp4arp4erpf4r3por3pu2r1rrrb2rr1cr3ru4r1sr3sorss24r1tr3tir3tör4tsr3türt3zru1a3ruf2rumru2n3rut4ruz2rüb2r1v2r1wry2c2r1zrz2ö3sa_s1an3sats1aus3av3säls2ci4scl2sco3see3seq3set2s1hsh2as3häsh3ns3hösh4rsib43sig3sio2s3j4sk_sk4a4skbs3kesk4lsk4n4skö4skss3läsl3bs3les3li4sna4snö3so_so1c3sogso2h3somso3o3sos3sov3sowsö2csö2fs1öks1ös1sp2s2pä2spl2spt4spy2s1q6s1ss3sessp46st_s2ta2stb2stdst2e2stf2stg2stj2stk2stl2stm2stns2to3stö2stp2stqs2tr3stü2stv2stwsu2nsu2s3süc3sün4s3v2s3w1s4ysyl12s1zs3zü2ß1c2ß1d2ß1f2ß1h2ß1l2ß1mß1o2ßst22ß1tß3ti2ß1ü2ß1v2ß1w2ß1z3ta_4taatah22tam3tav3tax4täbtä1c4täd3täe3täg2täh4tämt1äptä2st2ät2täx4t1ct3cr3te_t2ef2teh3ten3testet22th_2thcth2eth2i2thk4thö2thp2ths2thü2thvt2hy3tig3tik2tim3tio3tip3tis3tiv2t1jtl4e4t3m3to_to1c3tod3ton3too4toß3tow4töftö4l3tön4tößtpf42t1q2tr_try1ts1ot2söt3sy4t1tt3tit3tot3töt3tut3tü2tub3tuc2tud3tue4tuf2tuh2tuk3tus4tüb3tüf3tüm4t3v4t3wtwa21ty13typtys44t1ztz1äu1amu1auu1ayu1ämu1äu2u1bub2lub1r2u1dud2s2u1eue2cu2eguen1u2ep2uffuf3luf3r2u1gu2glugo3u2göu2güu3heuh1wu1ieu3iguk4au1keu1kiuk4nuk2öu1krulg4u2lü1umf1umg1umk1uml4ummum3n1umr1umz2un_u3ne2ung2unku3no1unruns21unt1unw2unzu3ofu1pau1piu1pr2ur_u1raurd2u1rou1röur3purt2u3ruurü2u2sü2u1ß2u1tu3teuto1u3töu3tüu1ü2u3v4ux2eux3tu1ya2u1zuz2e2übc2übdübe2üb3lüb3rüd3rüf3lü2gnüg3süh1aü1heüh1iüh1sü1huüh1wü1k2ül1aül2cül4eü1luün2sünt2ü1nuü1peü1piür1aürr2ür2süs2ava1cvas2v4at2v1b2v1dve3bve3cve3dve3hve4ive3over1ves3ve3v2v1g2v1hvi2cvig22v1k2v1l2v1m3vol2v1pvs2e2v3t2v1v2v1w2v1z1waa1wag1wah1walwa2p3was1wäh1wäl3wäswbu22w1c2w1d1weg1wehwe2i1wet2w1g2w3h1widwi2ewik21wil2w1k2w1l2w1mwn3s1wohwot21wöc2w1pw3ro2w1sws2t2w3twti21wucwul4wus21wühwül4wün32w1w1xa_1xaexa2m2x1b2x1cx1emxen33xes2x1f2x1g2x1hxib4xi1cxi3gxil12x1l2x1m2x1nx1or4x1p2x1r4x1txt1äxts21xu12x1v2x1w3xy_3xys1yacy1ary1äty1c2yd4ry2efye2ty1f2ygi2yg2ly1i4y1k2yl3cynt2y1nuy1ofy1ouypa2ype2y2pfy3phypo3y3riy3royrr2ys2cyse1ys2py1t2yu2ry1z2za3cz1ad3zahz1anz1arz1asz1är2z3czdä13ze_zem22z1hzi2o2z1jz3la3zolzo2oz1orz1öl2z1qz3saz3shz3skz3sz2z1tz3tiz3töz3tüzu3azub4zud4zu3kzuz22züb2z1v4z1zz3zizz2ö", - 5 : "_ab1a_ab3l_abo2_ack2_ag4n_ag4r_ag2u_ai2s_al2e_ang2_an3s_aps2_as3t_au3d_ät2s_bik2_by4t_dab4_de1i_de1s_eke2_enn2_epi1_er1e_erf4_er1i_ers2_es1p_et2s_eu3t_exa4_ext4_fe2i_fi2s_ga4t_ge3u_im3s_inn2_jor3_ka2i_ki2e_kus2_mäu2_ne2s_ni4e_nob4_nus4_ob1a_obe2_om2a_or2a_ort2_ozo2_pro1_ro4a_ro3m_rü1b_sch4_sha2_te2e_te2f_te2s_ti2a_ti2s_tit2_to2w_umo2_un3d_un3e_un3g_un3s_ur2i_ut2a_ut3r_übe4_vol2_vo4r_wa2s_wi4e_zi2e_zwe23aa1caa2gr4a1an4a2araa3reaart4ab2äuab1ebabe1eabei32abel2abew3abfiab1irab1it2ableab3liab4loa2bo_ab2ofa2bona4bräa2bre2abs_abs2aabst4ab3sz2a3buab1uraby4ta1cem2ach_ach1a2achba1che4achfa1chiach3lach3ma1choach3öach3ra4chtach3ü2achv2ada_ad2agad1an3adap4adav1a2dä2ade_2aden4a3diad2obad3ru2ads2ad3stad3szad2t1ad4tead4tiad4tr2a1e1a3e2da3e2ia3el_a2eliae2o3a2faka2fana3faraf4ata2faua2fexaf2fl2af3la3f2oafo1saf3raaf3räaf3reaf3röaf2spag1araga3sag1auag2daag2diag2duage1i2ages1aggr2a2glag4laa4glöag3naago2b2agorag4roag3säags3p2a1ha2a1heahe1sa1h2iahin3ah2löa1hom1ahorah1osa2h3öahr1aah3riaht3said2sa3ik_a1indain4ea1ingai2saais2iais2pais3saive3a3ivla3ivs2akalak4at4a1kea2kes2a1ki2ak3lak4li2a1kr3akroak3sh2akta2aktba2kun4a3kü2ala_al1abal1afal1ama2larala4s2alatal1aual1ämalb3sal2däal2drald3sal3dualen1ale2pale4t3algialk3s3almba2l1öal3öfal2ös1alphal2ufa2lumal1ur2am2aamab4ama3gama1s2ame_a2meba3meta2mew2amir4amml2am2sam3saam3sp3amt_am4tö2anaba3nad2anam2anana3natan1äs4and_2andua3nee2anfian3fu4ang_2angf2angoang1r2ank_an3klank1ran2ky2anmu3annäan1oda3nolan1ora3nos2anshant2i2anto1antr3antw2a3nu2anzb2anzg2anzs1anzü2anzwa1os32a3paa3pela3phäapo1sa2pot3appla3ra_ar2abarad22arb_2arbiar2bl2arbr2arbt2arbu1ar1card2ia2reaa4rega2reha3renare3uar2ewarf1rar2glar2gnarks4arm2äarms4arn2e2a1roar1oba3rolar1opar2rh2arsa2arsi2artoart3r2artsar1uhar1umarwa2ar2zä4arzeas3aua2s1äa2scaa2sebas2era3ses2asisa2s1pas2phas2pia3spuas2stas3teas3tias3to2astraßen3at1adat4agata3la3tamat1aua2t1ä4ate_a2tebate1cat2ei4atena2tep4atesat3haathe13athl4a3tiat3räat3reat2saat2siat2soat3taat2tha3tubat2zoatz3tau1a2au2draue2bau2faauff41aufnau3ha4au1iau2isau3lüaums2aun2eau1nu2ausc1ausd1ausg1auslau2so1ausü1ausz2aut_2aute1autoauz2wawi3eax2am2a1yaa1yeuaz2a3ä2b3lä1cheä1chiäch3lä2chrä1chuäck2eäf2fläge1iäge3sä2g3lä2g3räg4ra1ä2gy2ä3heähl1aähl2eäh3neäh3riä3is_ä1iskä2k3lä2k3rälbe2äl2bläl2p3ämt2eän2dräne1sän2f5än2glän2gr2ä3niänk2eän2kränk2säp2pläp2präp4stäre2när2grärk2sär3meärm2sär4spär2stär2thä5s4eäse3tä2s1päs4tr2ä3teätma3ät1obä2t3rät2saät2säät2siät2trät2zwäu2bräude1äuf2eäug3läu2maäun2eäu1nuä3us_äu3seä3usnäu2trba2bl2babsba2da2b1afba2kabak1r2b1amb1ang2banlban3tb1anzbar3bbard2bar3nbarz2ba2scbau3gbau1sba1yobben3bbe4pbb2läbb2lö2b3d4bde1sbe3arb2ebebedi4be1eh3bef4be3g2beib4beil2be3libel3t1ben_ben2iben3nbe1ra3be1sbes2pbe1ur2b1ex2b5f4bfal22b1g22b5h2bhut2bibe2bie2sbik2abil2abi2lubi3nabin2ebi2o1bio3dbi3onbiri1bi3seb1isob2it_bi2tu2b1k4b3lad3blatb3leb3blem3blenb3leub2lie2bligb2linb3lisb2litb4locb3los2blun3blut2b3n2bnis1bo5asb1ob3bo2blbo2brbo3d2bo2ei2b1ofbo3febo1isbond1bo2nebor2sb1ortbo2scbo3thbo2xibö2b32b1p2bpa2gb4ra_b4rahb4ralbrä4u2bre_3brea2bregb3rekb4rer2brigb4rilb4riob3rohb4ronbru4sbs3arbsat2b4särbs2äubs2cabs4cub3se_bse2bbsi4tbs2kubso2rbs2plb3stobtal3b4ts2bu2e3bu3libung4b2urgbu2sabwel32b3z22c1abca3g2ca2pece1nuce3sh2ceta2chac3chaoch1äs1chef4chei2chic2chil2chl2ch2lech2lu2ch2m2chn22chobcho2fch1ohch2r22chra2chrech3rh2chuf2chuh2chum1cka_2ckac2ckal2ckehck1im4ck3l2ck3nck1o22ck3r3c4l2clet4co3dictur6cu2p32d1ab2d1acdagi4da1inda1isda3löd1altd2an_dan2cd1ang2danh2danwd1anz2d1apd2aph2darbda2rod3arrda2rud2arwda1s2da3shdas4t4datmdat2s2dauk2d1äh2d1äpdä3us2d1b4dbe2edbu2c2d1d2ddar2de3brde4cade1e2de3g2deh2ad2eic2deinde2löd2en_de2nadend2de2nide1nu2deolde3osd4er_de1rode3rude2spdes3sde2sude1unde3usd1exi2dexp2d1f42d1g2d2ge_d3gem2d1h2d2hisdi2amdi1cedik2adi2obdi2spdist2di2tadit3sdi2tu3di5v2d1k4d3l2edli2f2d3m22d3n2dob4ld2obrdo3na2dope2dopfd2opp2dorc2dord2dorgd2orp2dortdot4hdö2l13d2ördös1c2d3p2d3rai2drädd4räh4dre_2dreg4drem2d3rhd4ri_d4ried4rifd4rikd4rild3robd3rocd4roidrom2d3roud5rubdrü1bd2sandsch4d3seids2had4shed4shidso2rd2späds2peds2pods2puds3std3stad3stod3strd2sundta2dd5teadt3hodt5s2du1ar2d1uhd1um1d2um_2dumb2dumd2dumf2dumg2dumld2ump2dumr2dumvdung42dunr2duntdus4c2dü4b2d1v22d1z2e3a2beab3lea2g4ea3gaea4geea3gleakt2ea2lae2ameeam1oea2nae3ar_ea2rae3arre3arveas3se3atheau2fe3augebe2i2ebeleb2en2ebeteb2läeb3loeb2lö2eb2oebot2ebö2seb4rueb2s1ebse2ech1äech3lech3mech3ne1chuech1weci2ae3d2aed2dre3deiede2red2gee3d2oeds3tedu2see3a2eeb2lee2ceeede3e1effeef4leef3seeh2aee1imeel2ee1empeena2e2enäe2enbe2ence2enoeen3se2enwee1rae1erde1erke1erlee1roeert2e1erzee3taee2the1e2xe2fate2fäuef1emef2er2eff_1effief2flefi2s1efkuef4rüef3soe3funeg1d4ege1ue2gloeg3nieg2thegus32e1hae3hal2e1häeh2eceh2ele3hereh1läeh3loeh3mueh3naeh3rieh3sheh3übei2blei3de2eidn1eifrei3gl2eigt2eiguei2kl2eil_eil3de1impei4näeink4ei3o2eip2fei3ree1irr2eitäei3teei2theitt4e3ke_e3kene3kese3keye3k2le3k2wela2cel1afela2sel2da2ele_elea2ele2c2eleh2elei1eleke3lepe3let2elev1elf_el3feelf4l1elfm1elftel3leel3naelö2selto22e1luel1urelu2se2lyaema2kem2daeme2ieme2se3mone2mop3empfem2saem2stem3t21emul4ena_2enac4enahe4nake2nap2ene_ene2c2enem2enen2enesenf2aenf2uen2gl1engpe3nice3niee3nioe3nite2nofen1ohe3noteno2w2e1nö4enpuen3sp1entb1entd1entnen3tu2entü1entw1entz2enut4enwüeo2b1eo2fee3on_e3onfe3onle3onre3onse3opfeop4te3orbe2o1se3os_eo1ulepa2gep3leep2paep4plep2prept2aepu2se1ra_era2ge1raie2rake1rale1rape2rare1rasera2ße1rawe1razer1äher1ämerb2eer3brer3da1erdber3de4ere_ere2le3rem4ereserf4rerg2lerg3s2erhüe3ribe3rio2erk_erk3t2ernie1ro_er3oae1roge1roke1role1rome3rone1rose1rouer1oxe1rozerö2de1röh4eröker1öser3p4er3rä2erru2errüer3sker3sner3sz2ertier3uzerü4bes3abe3safes3akesa2vesch2e3se_es2eles2hue2siles3kae4skees3kles3kue3spiess2aess2e2essoes2spe1stre1stues1umetab4et4ag3etapet4atet2auet1ähet2ene3thaet3hüeti2met2inet4riet4shet2stet2thetwa4et2zäet2zweu1a2eu2gaeugs4euil4eu1ine3um_e3umle3umseun2eeu1o23euroeu3speust4eut2heu3toeu2zw4everewä2se2we_e3wirewi2se3witex3atex1er2exie1exis2e3xye3z2aezi2sfab5sfa2dafa2drfaib4fa2ke2fanb2fanf2fanlf1anp2fanrfan3s2fanw2f1apfa3shfa2tof3aug3f4avfa2xa2f1b22f3d4f2echfe2drfe2eife1emfef4lf4eiefel3tf2em_fem4m2fempfe2nafe2näfen3gfe2nof1entf2er_fe1raf2ernfe1rof2ertf1erwfe2st2fexpff3arff1auffe2eff3eiffe2mff4enf2fexff4laff4lof3fluf3flüff3roffs3t4f3g2fge3s2f1h2fi4dsfien3fi2krfil3dfilg4fi3lif2inafi3nifin2sfi3olfi3rafis2afi3sofis2pfi3tu4f1k4f3ladf3lapf4läcf3länf4leef3lerf4limf3lonflo2wf4luc2f3m22f3n2fni2s2f1ob2f1offo2nafo2nu2f1op3form2f1ölför2s4f1p2f4racf5radf5rap2fre_f3rec2fregf4reufri2e2frig1frisf3rocfro2sf3rotf2sanfs3arfse2tfs3olfs1prfs3s4fst2af3tabft1afft1anft1arf3tatft3hoft1opft2s1ft3scftse4ft3stf2tumf3tü1ftü2bftwa4ft3z23f2uhfung42funm2funt2gabfgab4r2gabz2gadlga1flga3gega2kagal2a2ganbgan3d2ganh2ganlgans2g2ant2garb2garcga3ruga2sag3ascga2siga3spgas3sgat3h2gatmgau1cg2aukg1aus2g1äp2g3b2gber2gby4tgd2eng2dergd2esgd3s2ge3a2geb2age1e2ge1imge1irge3lege3lüge3migem2uge3nagen3ggenk4gen3ngeo2rge3p4ge1ragerm4ge1roge3siget2aget3sge1ul2g1f4gga4tgg4log2g3n3gh2rgie3bgie3ggi2elgi2gugi3negi3tigi3tugi4us4g3k2g3lacg2l4e2gle_3gleag3lecg3leg2glehg3len2glesg2lia2glibg2lik4gling2lio2glisg2lizglo3gg2lomglu2t3g2lü2g1m2g4na_2gnacg4nat3g2näg3nehg3ner2gneug2nieg2nifgno1r2gn3t2g1ob2g1ofgol2ago1rago2s1go3th2g1p2g3räng4rebg4remg4rerg3revg3ridgri2e2grig2grohgron2g4rosgro2ug4ruf2grut4g2s1gsa4gg3salgs3angs3arg3säug3s2cg4scagsch4g4scogsen1gs3ergse4tgsi2dg3silg3solgs3plgsrü2gs5s2gs3thg3stogs3trg3stugs3tügs3un2g1t2gti2mguet42g1uhgu1isgus3agu3segu4stgut1a2g3z2hab2ahab2eh2absh1akahaki3ha1kl2haleh1alph1amth2an_ha3nah1ansha2prh2ardhasi1h1äffh1ärz2h3b22h3d4he3behe2blhe3brhe1chhe3fehe3guhe3heh1eieh1eifh1eighe2im2heiohe3lihe3lohe2lö3hemdhe3mi3hemmh2en_he4nahe2nähen3z4he2ohe3onhe3ph2hera2hermhe3roh1eröhert2he3thh2e2uheu3g2h1f4hfi2s2h3g22h1h2hi2achi2anhi1ce2hi3dh2i2ehi2krhimä3h1infh1inhhi3nihi4onhi3oshi2phh2i2rhi3rehi3rihirn1hi3rohir2shis2ahi2sehis2ihis2phi4sthi1th2h1k4h2lach1lash3lawhl1ärh3lebhle3eh3lerh3lesh3lexh2lieh2lifh2liph2lish2lith3lochl1ofhl1oph4lorh3löch3lufh1lüfh3magh3manh4mäch4mähh4mälh4mäuhme1ehm3sahms1ph2n2ahn3adh3namhn3anhn1ärhn3d4h2nelh3nerhn3exh2nich2niehn1imh2niphn3k4h2norhnts2h2nuch2nulho2blho2efho4fahok4l3hole4holo3holzhom2eho2piho1ra2horeh1orgho4saho3slho2spho4st2hot_ho1y2hö3ckhö2s12h3p2hr1achr3adh1raih3rath3räuh2rech3redh3refh3rephre4th3revh3richri4eh3rinh2robh2rofh3rohh3rolh4ronh3rouhr3r4hrs3khr2suhr4swhrs3zhr2thhr2toh3ruhh4rübh2sanh2sauh1stah1stoh1strh1stüh2s1uh2tabh2takht2alh2tarht2ash2tauht1ehh3teth2toph3töpht4riht2soht2sphtti2ht1unht3z2hu2bahu2buhuko5hu2lähu2lohu3mah1umsh1unah1up_h1upshurg2hu3sahut2th4übsh3übuhvil4h2wälhwe1c2hy2thzug4iab4liaf4li3ak_ia2läial3bial3dialk2i5allia2luia2nai3anni3anziap2fi3ar_ia2rai3as_i2asiias3siast4i3at_i4atei3ath1iatri3atsi1är_i1ärsibe2nibi2ki3blai3blei2b1öib3rai4bräich1aich1äi1chei1chiich3lich3mi1choi1chuich1wi3dami2deei2deii2dioidni3i2d3rie3a4ie2bäie2ckie2drie1e2ie2fuie2gaie3heiel3di2elii1elli2elsielt42i1eni3en_ie2näi3endi2enei3enfi3enhi3enji3enki3enpi3enrien2sie1nui3enwi3enzi4eriier3ki1ernie2röies2pi1ettieu2eie1unif1arif4atif1auife2iif2enif2flif4läi1flui1flüif4rai1freif4rüif3seif3spif2taiga3iig3läig4noi3g2oig4raig3säig4seig3soihe4ni4is_i4i3tik1arik1ini3klaik3leiko5si2kölik3räik3reik3soiks2tikum4i2kunil1aui1lä1il2dail2drile2hill2ei1lu2i2lumi3lusil3v4im4ati2meji3men1immo1impoimp4s1impuim2sti4nabin2afina4sin1äs2indri2nedin3eiine2x2ingain2gl2ings2inig2inis2inn_2innlin1odin1orin3suint2hi2odaio3e4iof4li2o3hio3k4i3ol_i3om_i3omsi3on_io3nai2onyi2o1pio2pfi3opsi3or_i3orci3orpi3orsi3orti3os_i3ot_i3oz_i1ö2ki1ös_ipen3i3per2i1piipi2si3p4lip2plip3pui1r2ai3radirat2ir2bli5reeir2glirg4sir2heir4mäir2no1ironiro2sir3seir3shir2stiru3si3saci2scaise3eise2nisi2ais1inis1opis1pais1peis3sais2sti2s3tis4töis4tüi3takit1ani3tatität22itelite2ni2tex1itiii2tobit3rei3truit2sait2säit2soit1uhit2zäitz2iiu3seive4niwur2iz1apiz1auize2niz2eri2z1wja3nejani1ja1stjet3tjo2b1joni1jord2jo2scjou4lju2blju3nijur2ojute1k3a2aka3ar2kabh2kabska1frka1inka3kak1allk3ama3kampka3nakand4kan2e2kanlk1anskanu32kanw2karbk2ardk2argk2ark2karnk2arskar3tkaru2k2arwka3sekasi1kas3t2katt2k1ähkäse3kä1th2k3b2kbo4n2k1d2kdrü3k1effkege2ke2glk1einkei3skeit2ke2läk4eltke2nake2noke2plk2er_ke1rak2erck2erlk1erokerz2k6es_ket3sketz22k1ex2k3f42k1g22k1h4kho3mki3a4ki2elki3liki3lok2imik2in_2kinhk2inik2innkin3skio4skis2pkist2ki3zi2k1k44kla_4kle_4klehkle2ik3les2klic2kligk2link3lip4klizk4lopklö2sk2lötk4neiko2al2kobjkoff4ko1i4ko3leko4muko3nu2kop_ko1pe2kops2kopzko3riko2spko4stko3tako3ti2k1ouk1o2x2k1p2k4raz2kre_2kreg2k3rh2krib3krit2krufkrü1bk2sank2sauk3senk3shok3sofks2puks3s2ks2tik2s1uks3unkt1amktä3skte3ek2texkt3hok3topkt4rokt3s2kts4tkt3z2kul2a4kulpkung42kuntku2roku2spkus3tku2sukür4s2k1z2la3ba2labb2labf2labg2labh3labu2labwla1celad2i2ladm3ladula2falaf3sla2gala2gn2laho1lai12l1al3lalil2amil2ampla2na2lanb2lanf2lanll1anp2lans2larclar3sla2rula2sala3se2lash2lasila2so2laspla4stlat2ala3telat2ilat2s1laug3ländl1ärzlä2sc2läuc2läue3läufl3baclben1l3blälb3lel3blolb4rülb3salb3selb4sklb3splbs4tlch2ald3ablda4gld1all3daml3datld1auld1ärl2deil2dexld2ö2l2dreld4rüld3sald4shld3thl2dumle2asle2bl4leddle3dele3eilef2ale2gäle2gl4lehs4lehtl2eicl2eidl2eitlel3s4lemplem3sl2en_le2nale2näl2enfl2enk3lepa3lepf3leprl2er_lerb4lerk2le1rol1errler3tl1erzle3shlesi1le3sk4lesw2lesyle3th2leto4leudleu2k3leut2lexe2lexzlfe1elf3lolf2trlfur1lga3tlg1d4lg3rel3grolgs3t2l3h2li3acli3arlia1slibi34lickli3da3lie_lig4nli3keli2krli3l2l1imb3limol2in_4lishli2spli3teli3tulk3lolk4nelk4ralk3salk3sälk3sclk3shl3k2ül3lapll3d4ll2esl2lexll3l2l2lopl5lowll3shllt4rllts2llu2fll1urll3z2l2möllmpf4lms2tlm3szl3n4e3lobb2lobjlob2slo1f4lo2fe3lophlo1ralo4räl1ord3lorq3los_lo4sa3loselo2talö2b3l2ö2fl1öhrl1ö4l2lösslp3t42l3r2lre1slrom2lrut4lrü1bl3sexl4shals2pels2pols3s2l3stil3stol3strls1uml2sunlsu3sl2tabltag4lta1ilt1aklt1amlt1ehlt2enlt3hol2toblt1oplto2wlt1öll3törlt1öslt1ötl3trält3sclt2solt1uhlu2drlu2es2lufflu2golu2gu2l1uhlume22lumf2lumll2umpl1umw1lu2n2lunt2lunwl1urnl1urt2luselu2splu2tälüh1l2lymp3ly3nlzo2flz3t2l2z1wm2abe2mabk2mabs2mabtma2drm1agoma2kumali12mall2manbm2anfm2anh2manlm4annm1ansmanu12manzm2app3markmar2om3arzmata2ma3unm1ähnmä1i2m1ärg2m1b4mbe2em2d1äm2deimds2em2dumm2e1c2mecom2eil3meldmell2m2ens2meou3mer_me1ra3mersme4sä4mesumete22m1ex2m1f4mfi4l2m1g2mi2admibi1mi3dami2ermie1smi2ki3milcmi3nami3nimi1nu3mir_3miri3mirs3mirwmise1mi2tami3timi2tu4mitz2m1k2m3k4am3ma_m2mabmm1eimm3simm3spm2mummmül22m1n22mobj3m2odmo2dr4mog_mo3ne3mo2o2moptm1o2xmp2flmp3ta2m3r2m4sapms1asm2saumso2rm2späms2poms2pum3stoms4tümt1abmt1akm3tammt1armt3homt1immti2smt1ösmt2samt2semt1um2m3uhmu3la2mulsmu3namu3nim4unk4munzmu3ramu2spmu2sumwa4rmwel42n1abna2bän3abf4nabgna3bina2bln2abo2naddn2adena2dr2n1af3n2ahn3ahnnai2en3air2n1akna2ka3nakon3aktn2al_n4alena2lu4naly3name3namonam4s2nanbn1and2nanh2nani4nank2nanln1anp2nanr2n1ar3nar_n2ard4narg3nari4narmn2arpn3arzn2as_4naspn4ata3nate2natt2n1au4naufn3aug5naui3n2äcn1ähn2n1ännär4sn1ärznä2scn2ässn1äus2n3b4nbes2nbu2sn3cenn3cernch3mnd2agnd1aun2dein2dobnd1opnd1orn2drönd3shnd2stnd3thndt4r2neaune2bl3necane1ckne2de2nee3ne3g43nehm2n1ein2eidne2kenel3bne3lin2em_n4en_n2enbn2encn2enhne2nine2non2envn2enwne3osne1ranere2n1erfn1erh3nerin1erkn2erpn2erv3n2esne2sänes4cnesi1ne4thneu1cneu3g2n1exnexa4nf1aknfe2in4fo_nft2onft4sn2f1ung1adng1d4n3ge_n3gefng2enn3glän2glon2glöng3neng3tsn2gum2n1h2n3hann3harn3haunhe2rni3atnib4l2n1idni2deni1elnig2anig3rnik3t3n2ilnim2oni2obni3olni3os3n2is3nita3nitäni2tinit4sni3tun3kalnk2amnke2cnk2lonk2lunk4nank2öfn2kölnk3ti4n3l22n1m4nna2bn3narnn2exnn3g4n2nofnn3senn2thnn1ur2nobm2no2dno3drnol2eno3na3nor_nor2a2norc3norh3norm3norsn1ortno3shno2spno2täno2tr2nö2f2n3p4npa2gnpro1npsy32n3r2nre1sns1ebn3sexn3siln4sphn2sponsrü2ns3s2ns2tunst2ün2styns2umnt2alnt1ämn3tärnte1ent1ehnt2enn3ternteu3nti3cnti1tntmo2nto1snt3sants2onts2pnts2tntum4nt3z21nu3anu4alnubi11nu1cnu2esnu2fe2n1uhnu3k4n2um_2numf2numg1numm2numr2numz2nuna4nuntnurs41nu2snu3scnu3senu3slnus1pnu2ta2nü4bnür1cnürs22n1v2n3ver2nymu2n1yon2zadn2zann2zarn2zärnz1ecn2zornz2öln2zwön2zwu2o3a2oa3deo4a3ioa3keoa4kloa3seob2alo3bar2o3biobi4t2o3boob3roob3skobs2pobu2s2oby4och1ao1cheoch1ioch3loch3moch1ooch3roch1socht2o1chuoch1wo3ckeo3ckio2ckoock3to3d2aod2dro3debode2so3diro2donodo4so2dre2o3duoe2n1o3etsof1amof1auof2eno3ferof2fuof1laof4läof3raof3räof4rüof3thoga3dog2glog2loog3spo1h4aohl1aoh3looh2lu1ohngoh2ni1ohnmoh2noo2h3öohr1aoh1ro2o1hyo1i2do2isco1ismoki4ool2arol4droler2ol2flol2glol2grol2klolk3rol2lu3olymo2mabo2mebome3co2melo2mepom2esom3maomtu3o2naeon1apo3natone2ionen3on3f2ong4rong3son3gu4o3nion3k2onli4on3ne2ono1ons1pon3taont2hont3s2onukoo2k3oo2tr2o1ö22o1paopab4opa5so1peiope2no1pes2opf_o2pfeopf1lop3li2o3poop4plop2pr1opsiop3sz1opt2op3tho1ra_2orakor2amo1raso3r2äor3ätorb2lor2ce4orda1ordnor2do2ordr2ords2ordwore2aore2hor1eror2glor2gn2orgr2oritork2aork2s2o1roor1opor1or2o1röor3rhor3saors2cor2ufo3s2aos3ados4anosa1sos4co2o3seose2no3s2kos2loosmo3os2saos4säost3hot1äro2tebote2so3theotli4ot2oroto1sot3reot3scots1pot2thotz2eou2ceou2geouri22o3vi2o3voo3weco2xidoy1s42o1z2ozon1ö2bleö2b3röch1lö2chröch2söcht4öd2stöf2flöh3leöh3riö2ko5ö2k3röl1a2öl1eiöl1emöl1imöl1inöl3laöl1o2öls2zönn2eön3scön3spöpf3lör3a2ör2drör2glör2klör2trös2stös3teös3tröt2trpa2drpa2elpa3ghpa1ho1pala1paläpa3li2palt2panlpapi23para1parc2parg2parppa4stpat4cpat4epat4rp1auf3pä2cpät3hpä2to2p1d2pea4rpech1pe2en2pef42peicpe1im1peitpena4pen3zpe1ra1perl3perope3sapes3sp2fadpf3aip3fe_p2feipf3lopf3lup2forpf1ra2pfs2pf3slpf3sz2pf3tpgra2p1hopphu4s2p1hüpi2a3pias4pi2elpi4em3pierpi3lepin2epi3oipi2pe4pisopi1thpit2s2pitz2p1k2pkur11p2l23p4lap5la_p5lad2ple_p4legp4lemple3x2pligp4likp4liz2p3lu2p1m22p1ohpo3id2poilpo3li2pondpont2po2plpo3pt2pornpor3spos2epo3ta3potepö2blpöl4sp2p1hp3phopp1läp2plep2pripp3sa1prak1prax1präd1präg3präm3präs4pre_2prec1pred1preipri4e2prig1p4ro2proc3prod3prog3proj1prüfps4anp3s2hps1idp3stapst3rps2tu3p2syps2zept2abpt3atpte4lp2tospto2wp2t3rpt3s2pt1um3p2typu2dr2p1uh4pundpun2s2puntput2spwa4rra2ab2raacr3aalra3ar2rabd2rabfra2br2rabs2rabt2rabw1rabyra1cer2ack1r2ad3radf3radl1ra2era3erra3gera2gn4raht2raicra3ke3raküra3le2ralgr4aliralk2r4alsr3altra2lu3ralyra3mar2amer2amir2amm2ramt4ranc2ranf2ranl2ranr2rans2rapfr2arar2arkr2arpras2ar4at_r3atlrat4r4rau_4raud2rauf2raug3raum3r2äd3rän_3räni3räns2r1ärrä1raräu2s4räutr2bakr3blärb2lörb4rirb3serbs1orb3sprch3lrch3mrch3rrch1wr2dafr4dapr2deir3donrd1osrd4rird3tard3thrdwa4re3adre2amreb1rre2bür2ech4redd3refe4reff3refl3refo5reg_rehl4r1ehrr2ei_2reigr1einre2kere3larel2ere3lorelu2r4em_r2emi4remur4en_re2nir2enz3repe3repo4reppr1erfr1ergr1erkr1erlrer2nr1erör1ertr1erwre2sa2ress3rest3resu2reta2reulre2wi4rezirf4lör3flürf4rurf4rürf2sarf2targ2abr3ge_r3gerr3gesrg3lurg3nar2ha_r3her2rholrhu2sri2amria1sri3at4rickri1elri1euri2frrif3s5rig_5rige5rigjrig3l4rigrrik1l2rimpr2ina2rink3rinn2rins2rintr1inw2rion4r1irris2ari3so3rissrit4r5riturk4amrk4lork2lurk2sprk2umrku2nrle2arle2ir3l2irli2srm3d2rmo1srmt2arna2brna4nr3natrn3drrn2ehrn2eirne2nr5nesr4nexr3nodr1nötrn1ur2robj1robo2robsro3e4roh1lroh3nro1irro3lerol3s2roly4rom_4romm4romt3ronnrons2ro1nyro3phr2oraro2ro1rosero3shros2pro3tu3rout3römir2ös_2r1p2r2plirpro1rps3trr2abrr2arrr1ämr3r2er4rewrr2herrik2rrn3arr2str3r2ürrü1brs2anrs2aursen1r3s2irs2klr4skor4skrrs4nor3stor3strrs2turs4türtal2rt1amrt1ärr2thirto1prt1orrt2sart2sorube2ru2drru2fa3ruinru1isru2mi4rumz2rund4runn2runwru3prrur1eru2strut3hru2toru2zwrü1ch4rümmrves4ry2l3rz2anr2zarr2zasrz1idrz1oprz3terz2thr3zwä3s4aa2s1abs3abbsa2besa2blsa2br4sabss1adm3safasa2fe3sagasa2gr3s4ai2s1aksa2ka3sal_s1all3s2am5samms2an_s2and2s1apsa2po3sapr2s1ar3sar_3saris3arrsat2as4atesat2i4satmsa2trsa3ts3sau_3saue3saum3saurs3auss3ähns1ält2s1äm2s1är3s2ät2säuß4s3b4sba4nsber22scams2cans2cap4s3ce6sch_s4chä4schb4schc2schd2schf2schg2schh2schks4chl2schp2schq6schss2chu3schü2schvsch2w2schz3scor4s3d4sde1sse3adse3ap4sedese2els1effse2glseg4r3s2ehse3heseh1lseh1sseh3ts1ein3s2eks2el_s2elns2elsse3mase2näse2noseo2r3ser_3seraser3gs1erh3seriseru25ses_2s1ex3sex_se2xe4sexpsex3t4s3f4sflo44s3g2sha2k4shals3h2e3shidshi4r3showsi2adsi2am2siat5si1c3s2iesien3si1f4sig4nsi2grsi2klsik3tsi2ku3silos2in_sion43s2issi2sasis3s3s2itsit3rsi3tusive32s1k24skam4skass4keps2kifs2kig4skirski3s3skiz4skom4skor2s1l23slal4slan2s3m21smog2s3n4snab4so3et3softs1oheso3la3s2onsone23sor_s1orc3sorsso4rus4os_3s4oz2spaa4spaks2pan4spap3spaß2spat4spaus2paz3spähs2pee2spel4spet4s3pf2sphas3phe2sphispi2k4spil3spio4spip4spis4spla4splä4sple2spod2spog2spok4spol4spr_3spru2s3ps2spun2spup3spur4sput4s3r4srom2ss1acs5safs3sagss1ajs3sals3s2äss1ecss2erss4ess4s3ls3spiss3s2sst2ass2tis3sto6sta_3staast2ac4stag3stah2stakst1as2stax3s2tä4stäg2st3c4ste_2steas2ted4stees2tegs2tel2stem6stens2tep2ster4stes2stetst3ev2stex4s2ths4thist3ho2stia2stibs2ticsti2e2stig2stiks2til2stio2stip4stiss2tit2stiv2sto_s3tobsto3d1stof4ston4stoo1stop3stoß4stou2stow4stoz4stöns4tör1stub4stuc2stue3stuf3stuhstu2n2stus1stüc1stütsu1ansubs23su1c2s1uhsu1issult2s2ume3summsu4nes1unf4sunt3s2upsup3psu2rasu3sasus1esu3sh2sü2bsü2d1süd3usweh24swie4swilsy4n34s3zas2zes4szets2zis4s3zu2ß1a22ß1b22ß1ec2ß1eiße2naße2niße2noßer3t2ß3g2ßig4s2ß1in2ß1k4ßler32ß1n22ß1p22ß3r22ß1s22ß1um5taan4tab_t1abb4tabf2tabg2tabh2tabkt3abnta2br4tabsta2bü2tabw2tabz2t1ac3tacutadi33taf_t1afgt1afr3t2agta2gat3agotai4r2takzta2latal3d3talo2talt3tameta2mot1amt3tan_4tanb4tandta3ne4tanf2tang3tanit2ank4tanlt1ans2tanwta3or2tapfta2pl4tarb2tarkta2ruta3sa3tasct1aspta2tht3atlt4atm2tattt1auft1auk3taum4tägyt1ämtt2är_2tärm2tärz4tätt4t3b2t3chat3chetch2itch3lt2chutch1w4t3d4tdun2te2a22teakte3alte3an3tebat2ech2teckte1em3teha3tehä3tei_teik43teiltekt23tel_3telg3telk3teln3telp3tels3tem_3tema2temmtem3st6en_te2nät4enbten3gt4enhte2nit4enjtenk2t4enmten3nterd2t4erit4erot3erötert2teru2t2est4tetl3teuf3teumte1unte2vite1xa4texp3text2texz4t1f44t1g2tger22th2at2hag2t3hät4he_2thebt2hec2theit2hen3theot2hest2heut3him4th3l4th3m2th3n1t2hot3hoft3horthou22thub2thylti2adtia2m3tib4ti1ce2tieb2tiehti1elti2er2tießti1etti1euti1fr4tiftti2kl3tilgti2luti3nat1inf2tinkt1insti1nuti1rhti2spti3tutium2tive3ti2za4t3k44t3l26t5litmal22t5n4to4asto5at4tobjtob2l3tok43tole2tomg3topo3tor_to1ra4torct1ord3tore3torsto2ruto3scto3shto4sktos2p4tossto1ßu3totrtots23t4ou3töch4t1ökt1öst4t3p21t2r43trag3trak3tral4traß3träc3träg4träs4träß4trec3tref4tregt4remt4rert4reut3rev2trez2t3rh3trie3triot4rip3triu3tro_3troe3tront4rop3troyt3röc3trös3trua4truktrum2t4rübt4rügt4sabt3sacts1adts1alt2sants1ast2sauts1änts3ehts1emtsen1ts3krt3soltso2rt3sout2spät2spht2spots3s4t1st4ts3thts2tut2s1uts3untt1abtt2actt1akt3tantta1st3telttes1tt3rütt2sotu1antuf2etuff3tul2at2um_2tumf2tumg2tumk2tumr2tumz3tun_2tund3tungtun2i2tuntt1up_tu2rätur1c3turntu2rotu4rutu2satu2sotu3ta3tüch3tür_tür1c3türe3türg4tütztwi4ety2pat2za4tz1agtz1altz1aut3zestz1int2zortz2thtzug4tz1wätz1witz1wuu1a2bu1a2cuad4ru1al_u1alfu1alsual3tua2luu3ar_u1arsua3sauat2iu3b4iu2bopub3räu2bübu1ce2uch1auch1äu1cheu1chiuch3luch3much3nu1chuuch3üuch1wu3d2au2donud3rau3druud3scue2enu2elaue2leueli4ue2miue2naue2näue2nouer3ou3erru2escue2tau3fahuf1akuf3aru3fasuf1auuff4luffs4ufo2ruf3säu2fumug1afug1akuga4sug1auug3d2ug2glug3huug3laug3läug3lou4gluu2g3nug1orug3roug3seug3siuh2auuhe3suh1lauhr1auh3riuhrt4uh2ruuh4rüui2chui1emu4igeu1in_u1insu1k2luku2sul1abul1amula2sul1ämul2drule2nule2tu2lexul5f4uli2kul2knull3sulo2iul1or2ultaul3thult3sum2anum2enum1irumm2aum2suum3t2um2un2una_1unabun3acun2alun3anun3at1unda1undd1undf1undn1undv1undzune2bung5hun2grungs3u2ni_un2idu2nifun2imuni2r2unis3unkuunna2uno4run2osun3se1unsiun3skun3spun3taun3trunt3su1o2bu3or_u3orsu1os_uote2u1pe2uper1up2faup2plup2prupt1oup4tru2rab2u1räur1änurch1ur3diure2turf3tur1imurk2sur3oau3rolur1oruro1sur3teur2zaur2zäur2ziur2zous4eluske2u3sohus1opus1ouu2spou2spuus3tru1stuut1egut2eiut2esut2etu4tevutfi4u2thiu2thuuto3cu3tomuto3nut2orut3rüuts2put3teutts2ut2zo2u3u2uz1weuz3z4über3ü1cheüch3lüd3a4üd1o4üd3s2üdsa1üd3t4ü2f1aüfer2üf2flü2f1iüf2toü2g3lüg4stühl2eüh3moüh3neühn2süh1roühs2püh3teül2laül2loü2n1aün2daün2dründ3sünen3ün2faün2frünn2sün3scün3seün3spüp2plür2flür2frü1ro1ür3scür3seürt2hüse3hüse3lüse1süs2stüt2s1üt2trütz2e2v1abval2s2varbvat3t2v1auve3arveau1ve3lave3leve3love3maven2cve3neve3nive3növer3averd2vere2verf4verg4ve3river3kvers2vert2ver3uve3tavete1ve3trve3x22v1f2vi3arvi2elvima2vi3v22v1obvo3gavo2gu2v1opvo2r1vor3avor3dvo3rivor3kvor3ovors22v3ra2v3re2v3rov1stav3s2zvu2et2vumfwa5gewa2gnwa3gowai2bwa3nawa3sawa3sewa3sh2wängwäs2c2w1b2we2baweb3swe2e4weed3we2flwe3niwerd22wergwe2röwer2swe2spwe4stwet2s3wettwie3l4wing1wi4r3wirtwi2sp1wisswi3th1wo1c3wolfw3s2kwun2s4wur_wur2s2xa2b1x2adxa1fl1x2ag1x2as4x1d2x1e4gx2em_xens4x2er_2x3euxich2xide2xil2axi2loxiso2xis3s2x1k22x3s2x2t1ax2tänxtfi4x2t1ux1u2ny1al_y1a2myan2gy1anky2chiych3ny2es_yes2pygie5yk3s2y4le_yli4nyl3s2y2l1uyma4tym3p4ympi1y2n1oyno4dy1ontyp1any4p3sy3r2eys3t4y3s2zy3to12z3abzab3l2z1afza3geza3gr2z3akzale3za3li2z1amza3noza3ra2zarbza3reza3ri3zaubz3aug3zaun2z1äc3z2äh2z1äm4z3b4zbü1b2z3d2zeik4ze3me5zen_zen3nze2no3zentz1ergzers2ze3sczes3tze2tr2z1ex2z1f42z1g2zger2z2henzhir3zi3arzig4szil2ez2in_zin2ez2ing2zinhz2innzi3opzirk22z3k42z1l22z1m2zme2e2z3n4znei32z1ofzo2gl2z1oh2zopezo2ri2z3ot2zö2f2z3p42z3r24z1s2zt3hozt3s2zu4chzudi4zu2elzu3f4zu3gl2zumf2zumg2zumlzun2ezung42zuntzu3s4zu3t2zür1cz1wac2zwag2zwahz1war4zwäl2zweg2zwet4zwir2z1woz1wörz1wur2z1wüz3z4azze3s", - 6 : "_ab3ol_ab1or_al3br_alt3s_ampe4_an3d2_angs4_ans2p_ans2t_ari1e_ark2a_ar2sc_au2f3_au4s3_be3ra_ber2e_boge2_da4r1_de2al_de3sk_ehe1i_ei3e2_ei2sp_ei4st_ei2tr_el2bi_elb3s_em3m2_en4gl_en2t3_en4tr_er2da_ere3c_es3ta_es3to_es3tr_eu3g4_eve4r_flug1_for2t_fu2sc_ge3ne_ger2e_ges4a_guss3_he3ri_kamp2_kopf1_le3ni_li4tu_lut2h_mi4t1_näs1c_no4th_ohr5s_oper4_oste2_ost3r_poka2_ram3s_reli1_rom2a_rö2s1_sali1_se3ck_sen3s_se2t1_ski1e_ta2to_tehe3_te3no_te4st_ti2d1_ti5ta_tite4_to2ni_to4pl_tu3ra_tu3ri_uf2e2_ufer1_un3a2_uni4t_uns4t_ur3s2_ver3s_vie2r_voll1_wah4laa2r1aaar3f4aat4s3ab1eilabe2laabe2na2a3berab1erkab1errab1erzab1ins1a2blaab5lag1a2bläab4le_3a2blö2absarab3s2iab3s2p2abst_ab3ste1abteia1chalach1eia3cho_ach1ora1chu2ach1uf4ach1wa1ckarack2enack2seack3sla3d2aba2da2mad3amaade2ra4ade1sades4sadi3enad4resa2f1eca2fentaf1erlaf4fluaf3s2aaf2t1aaf2teiaf2t3raf2tura2f3urag1a2bag1a2dage4naage2saage2seage4siag4ne_a2g3rea2g3riag4setag4spoag3staag3stea2gundahl3a2ahl3szah4n3aah3r2eahrta4ain3spai3s2eais4se2a3kam1a2kazaken2nak1ernak3rauak5tan2aktikak2t3rak3tri2aktstal1a2ga3lalaalami5al3ampal1anaal1ansal1anzal2armal3arral1asial1assal2b1lal2bohal2b3ralds2ta4l1eha2l1eia4leina2l1ela2lengal1epoal1etaal1etha2l1eua4leur3a2lexal2glial2imbali4naal1insalk1ar1alkohal2laball1anal3les1allgäal1opeal3sunal2takal3tamal2tatal2trialt2seal1umbama3d2ama3stame2n1a2meriame3rua4mesea4mesh2ammalam2meiam2minam3stram2t1aam2t1äam4telam2t3ram4tream2t1ua3na3canadi3an1algan2dexand2suand1uran1e2can2ei_an1e4kan1erban1ethanft5san2gan1angeb2angie4angs_2a3n2i3a4niman2keian4klö3an3naan3n2ean2seuans1paan3s2z1anteian3t2h2anwet1anzeian2zwiar3abta2r3alar1ans2a2rara2r1auar2bauar2bec2arbenar2brearbrü32arbs2ar2danar2droar1effa2reinar2erfa2reriar2erwa2r1imar1insar1intar2kalar2korar2kriark3saark3shar2nanar1o2da2r1orarre4narr3he2ar2star3t2ear2thear2trear2z1was1alaa3schea3schiasch1la2schma3schua3s2hiaska1sas3panas3s2aass4auas3s2ias2s1pass3tias4stoas3stras3stu2as3taas4tauas4tofast3räas3triaswa2s3a2syla2t1abat1apfa2tausat3eiga2teliater3nati4st4atmusatra4tat3romat2s1pat4takat4tauat2teiatt3s4at2zinat2z1wau2bliau2bloau2briau3en_auer4nauf1an2aufehauf1er3aufga4augehau2m1oaum3p2au3n4a2au3r2au2sanau2sauau2spr2auts4ava3t4äch2späch4stäch3teä2d1iaäft4s32äh3t4äl2l1aämi3enäne2n1äng3seän2k3län2s1cänse3häp2s1cä2r1eiä3ren_är1eneär4s3iär3t4eärt2s3äse3g2äser2iäskop2ä3s2kräs6s1cäs2s3tä4s3t2äß1erkä2t1a2ät2e1iätein2ät2s1pät2s3täum4s1äu2s1pbacks4b1a2drbah2nuba2kerba2k1iba2kraba3l2abal3thba3n2aban2drba3n2eban4klban2kr2b1ansba2reibar2enbar3zwba3s2abaum3sbau3sp3b2ä1cbbens2bb3lerbbru2cbe3a2nbe2delbe1erbbe3etabei1f4bei3labe1indbei3scbeis2ebeit2sbe3lasbe3lecbe3leibe4letbel3label3szbe2nalben3arbe3nei3ben3g2bentbbent4r2bentwben3unben3z2ber3ambe2ranbe3renbere4sber3nab1erntbe3rumbe3s4abe3s4lbe3s4zbe2tapbien3sbi2kesbi2lau2b1inb2b1inf2b1intbi2solbi4s5tb2it2abi4turb2itusbla3b4b2latt2b3lawbläs1c3ble2a2b3legb3leinb3leseble3sz2blich3blickbo3ch2bo2lanbon2debo1r2abo4rigbo4s3p2b3radb4ra3k2b3ref3b4rem2b3repbri2er2b3rolbrust3bru2thb2s1adb3sandbsatz1b3sel_bse2n1b3s2esb2s1ofb3s2pubst3acbs3tätbst3erb4stodb4stübb2s1unbu2chibul2la2b3umkbu3r4ibu2sinbu2s1pbu2s3ucha2ck2ch1ak3chanc4chanz4char_3characha2sc3chatoch1ärmche1er3chef_3chefich1eimch1ess2cheta2chinf2chinhch1insch1int1chiruch1offch1orcchre3s1chron2chunt2ck3ancka4r14ckeffck1ehe4ck1eick1entck1erhck2ern2ckeseck1ind2ck1upcussi4da2b1a3d2abäda2ben3d2abldal3b2d1amma2d1amt2dange3d2ankdan4kl2d1ansd2anze4danzida2r1a3d2arld2ar3s4d3atld3a2to4daush2d1ämt2d1änd2d1äng2d1ärz2d1effdehas5de3he22d1ehrdein2ddein2sdel1ändel1ec2delek2delem2delfmdel2sodel3t4de2mag4d1emp3d2enhden3th2dentwde3onod1epi2de2rapder2bl2derdbde3recderer3de4ruhde4rumde2s3ade3sacdesa4gde4samdes2äcde4sehde2seide2sende4setde2sinde2sorde3spede2sto2d1etwde1urlde2xisdgas3tdge4tedha1s4di2ch1di3enidie2t5dil4s32d1imbdi3n2a2d1ind2d1inf2d1inh2d1ins2d1intdion3sdi4re_di2rendi2ris2d1irl2d1isrdi2t3rdkuri2dle2radmess62d1o2fdo2mard2o3rado2rie3d4ra_2d3rad2drahm3d4ramd3rand2d3räud4rea_d4reas3d4rehdrei3td4reiv4d3ren2d3rep4d3rer4dres_d4resc3d4ria2d5ricd5riegd4rin_2drindd4risc3d4rit4dritu2d3rod2d3rotdrö2s13d4ruc2d3ruh2d5rutd2sau2d2s1änds2eigd2serhds1errd2s1imds2infd3skulds1orids1pasd2sprods3tabd3steid3steld4stemd3s4tid4stodd3s2tuds1umsds2zend4theidtran22d1ufe2du2me2d3umk2d1unfdun3kedun2klduns3t2d1url2dursadwest3eadli4e3aleieat4e2eater3eat3s2eb4leue3blieeb4reaebs3paeb3staebs3thebs3tieb3str2e3cheech1eie2ch3rech3taech1uheck2areck3seede2aledens1ed2s1ped4streed3s2ee3lenee2nagee3n2ie1e2piee3resee1r2öe1ertree3r2ue2e3s2ee4tate2e3u2eewa4re2f1ade2fente3f4lu2e3f2oef3romef2tanege2raeg4saleg4stoegung4eh1anteh1auf1e2hepehe1raeh1inteh1lamehl2e2eh5lerehl2seeh2reieh1ro2ehr1obehr1ofeh1stee2hunt2ei3a2ei2barei2choei2d1aei3dra4eien3ei3g2aeig2er2eigew2eigrueik2arei3kauei2larei2laueil3f41eilzuei2moreim2plei2n1aei4nasein5deein3dr2einfoein3g2e1initei2sa4eis2ineis2peeis4thei3stoei2sumei2tabei2tanei2tarei2troeit3ume2l1akel1ansel1anze2l1apel3ariel1asiel1aspel2ast3elbiseld3s2el1eine2l1el1e2leme3lem_el1empel1erfel1erkel1erle2lerr2eles2el1esse2l1ideli4neel1itael5le_ell3spe4l1ofe2l1orelo2riel2sanel2sumel6tarel4tinel2t3re2l1umel3usee2m1ade2mans3emanze2metie2m1imem1intemma3uem2meiem3pflem2spr4e2namen4ameen3aree3natien3atte3nauee2n1ären4ce_en2dalend3siend3szend2umen1eche2neffe4neine2n1el4ener_e2nerfe4nerhe4nerk1engad3engagen3g2ien3gloeng3rieng3seen1i4me2n1inen2ingen3k2üen1o2be2n1one2n1open3sacen2sebens2el1ensemen2simen3skaens2po2enstoent4agen2thien4tid3entlaen2zwa2e3p2ae3p2f42epist1e2pocep4taler3admeraf4aera1frer3aicer3alle2rampe3ranee2ranher3anoer3apfe3rarie3ratie2ratme1rauber3aueerau2fer3augerb4sper3chlere2cker1effer1eiger1elee3renz4erer_e2rerke4rerl4ererne3reroer1errer1erse2rerter1esser1eul1ergol1erhabe2riat4e5ric4e3riee3rik4er1inber1inker1inser1inter1ita1erklä2erkreer1o2be2r1ofe1r1ohe2r1opers4auer5sener3smoert2akert2auer2thoert4raerts2eeruf4ser1u4mer1underung42erweges4aches3anze3s4ase4satoes3cape3schae2se2bes3ehres3eines3erfes3erzes3evaes2hares3intes2ortes2pekes2sau2es3sces3s2ies2sofess1paess2poes3stu1estase1state1stele1stiles2ture1s4tüet1a2metari1e4teineten3det3halet3heieti2tae2t1ofetons4et3rece2treset2seiet3stuet2t1aett3auet2teiet2t3ret4troett3szetze4seu4neie3un2geu2nioeu1staeu1stoeu1stre2vent1e2xeme2x1inex2tinfa2chof1aderfa3l2afal2klfal3tefalt2sfan2grf1an3zfar2brfarr3s3f4artfa3s4a2f1auff1ausb2f1ärmfä2ßerfeatu42f1eckfe1inifek2tafe2l1afel2drfe2lesfe2l1ofer2anfe2rauferde3fer2erf1erfaf2erl_f2ers_f2f3efffe1inff1rakf3f4räff3shoff3strfid3scfi2kinfik1o2fi2kobfi2lesfi4linfil2ip2f1intfi4s5tfit1o2fi2tor2f5läd2f3läufli4ne1f4lop1f4lot1f4lug2f1orgfo3rinfor4stfor2thfor3tu2f1o2xfra1st1f4ränfreik22f3ricf4risc1f4ronfro4nafs4ammf2s1asfs1e2bf2s1erf2si2df2s1o2f3spanf3s2plfs2porf2sprefs2prifs2pruf2stasf3steifs4tref2s3unft1a4lft1eigft1eisf4theif2t3rof3t4rufts3a4ft4samft4sehfts2tift1url2f1unffun2klfun2kofus2safzu4gaga2b5l2ga2drgal3lo2g1amtgan2gr2g1armga3r2og1arti2g1arzga4spega4sprga3t2a2g1auf2g1aut2g1ärzg3d2adge3g2lge2in_gein2sge2intgein2vgei3shgelb1rge5lehgels2tgel3szge3lumgel3z2ge4narge4natgen1ebge3necgens2egen3th4gentwger2erger3noge1r2öge3r2ug2e1s2ges4amge2serge3sesges4pige3ste2getapge3t2ugge2ne3g2het3g2hiegi3alogi2e1igie1stgi4mes2g1indgin2ga2g1ins2g3lag3glanzgläs1c4gläuf2g3leb4g5lerg3lese3g2lid3g2lie2g3lif4glisc3g2lit3g2loag3loch3g4lok3g4lop3g2lotgoa3ligo3n2a2gonis2g1ope2g1ordgra2bigra2bl2gradl2g3rah2g3rak2g3räu2g5re_2g3rec2g3redg4re2eg3reitg3rese2g3ret2g3ric3g4rif2gring2g3röh2g3rui2g3rumg3run_3gruns3g4rup2g3rücg3s2ahgs3a2kg4saltgs3ambgs3augg4s3crgs5erkgs4piegst2akg3starg4s3täg5stämg3stelg1steugs4thag3stirg4stolgst4ragst4rig4sturgs4tücgu1ant2g1u2f2g1unfg4ung_gunge2g4un4s2gunt2gurt3sgus4stha2choha2delha4dinh1adle2h2al_ha2lauhal2bahal2lahalt3rh4a3rah1arm_har2thh1arti2ha3sa2haufmh1aukthau2schau2trh1echthe3ckehe2e3lheere2heim3phei4muh1einkhe1ismhe1isthe2l3ahel1eche3len4h1emphend2she2nethe2nobhenst2hen3szh1entshe3rasherb4she2relh1erfüh1erkeher3thher2zwhe1stahe2strhe2tapheter2he3t4she1x2ahfell1h1i4dihi3enshier1ihil2frh1induhi3nelhin2enhin3n2hin3s2hl1anzh1lauth5len_hlen3ghle2rahl1erghl1erwh4lerzh4lesihl1indh3listhlo2reh3losihl2sanhl2serhl3skuhl3slohme1inhmen2shme2rahme1sth3nachh3natihn3eighn3einhne4n1hn1unfho2ch3ho2ckaho2f3r4holdyho2leihol3g4ho4lor3hol3sh3o2lyho2medho4sei2ho2w1h1raneh3rechh4rei_h3reich3r2enhr1etah4rinehr1insh4risth4romeh2r1orhr2sanhr2tabhr2tanhrt3rihr2trohrt2sehr1umsh2s1ech3s2exhs2penhs2porh2spräh2sprohst2anh1stech1stelhs3theh1s2tih2storhst3rih1stunht3alth4ta2mh2ta4nht3aneh3tankh2tasyh2t1ärht1e2chte2heh2teifh2temph7ter_h2t1euh2t1exht3henhthe3uh2tolyh2trith2t3ruh2t3rüht2senhts2tihu2b3lhu4b3rhu2h1ahu2h1ihuk3t4hu2l3ahu2lerhu2lethung4shu3ni1hus4sahus2sphu2tabhu3t2hhühne4h3weibi4a3g2i3aleiial3laia2lorial3t4ial3z2i3a4taibela2iben3ai2blisib4stei2bunki2buntibu2s1ich1eii2chini3chloi2ch3ri3ck2eid2ab4i2d1auidel2äiden3gide3soi3d2scid2s1pie2b3lie2b3rieb6scie2choie2fauief3f4ie2f3lie2froie4g5lie2g3riegs3cie3lasiel3auiel3sziel3tai3emeti3e2naiena2bien1ebie3neri3en3gie2nimi3e2noien3scien3siier3a2ie2radie2rapier1ecie3resi3ereuierin3i3ern_ier5niiers2eifens2if1ergif1erhi1f4lai1frauif4reiif2topift3szig1artiga1s4ige4naig1erzi2g1imig3reiig4salig3sprig3staig4stöig3strigung4i2h1umi4i3a4i2k1akik1amtik1anzik3atti2k1aui2k1äri2k1eiike2l1ike2rei2kindikot3ti2k3raik2t3ri2l3abil1a2di2l1akil1ansil1aspil3ausi2lautild2eril2d1oil1e2cil1eheileid4il1einilen1ei2lerrilfe3sil2f3lilf4s3i2l1ipi3lip_i3lipsil3l2ail3lenil3leril3l2iil2makil2mini2l1oril2seril3t2hilung4il2zarim1alli2manwi2melei2melfi4meshi2metiim2meiim1orgim3pseim3staimt3s2imul3tin3a2ci2n1adin2arain2arsin2dalin2dan1indexind4riin3drü1indusi2nehein2erhi2n1euine3un1info_in3gla1inhab2inhar2inhaui3nitzin2nor1inntaino1s2in1ö2dins4aminsch22insenins2id1insta1insuf1integin3t4ri3n2umin3unzinvil4inz2e2io2i3dio4naui3ons3ion4stiore2ni2o3s2ipi3elipi3en1i2rakiral2sir2k3lirli4nir2makir2mumir4narir2nerirpla4irt2stis3arei2sau2i2s1äni3schei2schmis1chyi2s1crise3haise3hiisen3si2serhis2hasi2s1idis3indis3infis2ingi2s1ofis1org3i2soti2sparis1picis2piti2sprois4sacis4sauiss2pois3staiss3tris3stuis2sumis4tabis4tamist2aniste4nistes3is4teuis4tocis5törist4raist3rei3struit1ab_ital1ait1altit1a2mi2t1aui3tauci4taufi4t1axi2t1äsi2t1eii4teigit2eili4teinite2lai4tepoi2t1init2innitmen2i2t1ofit3rafit3rasit3rauit3räuit3ricit3romit4ronit3runit2speit2stoit2tarit2tebit2triitt2spi2t1umi2tunsit1urgit2z1wi2v1aki2v1ani2v1eiiv1elti2v1urizei3ci2z1irjahr4sja3l2ajean2sjek2trje4s3tje2t1aje2t3hje2t3rjet3s2jugen2kab2blka2ben2kabla2kabläka3b4r2k3adaka1f4lkaf3t2kaken42kala_kal2abka3leikal2kakal2krkal4trkan2al2kanda2k1angka2norkan4thk2anz_2k1apf3k2araka3r2i2k1armk2arp3kar2pfka3tanka3t4hka2t3r4kaufr2k1auskau3t22kautok1ä2mikä2s1ckdamp22k1e1cke2he_2k1eic2k1eig2keinhke2lan4keletkell4e2k1empken3au2kenläkens2kken3szk2enteken3thk2entrk2entu2kentwke2radke2ranke2rauker2nak1e2seke4t3ake4t3hki3d4rki1f4lki1f4r2kil2a2k1intkis4tok3leitk3lem_2k3ler2k3leukle3usklit2s2k3locklo2i3klost4klung42k1lüc2k5nerkno4bl2k5norkol2k5ko3n2ekon3s2ko3r2a2k1orckot3s22k3radk3rats2kraum2k3rät2k3rec2k3refk3reick3reihk3ries3k4ronks2allks1e2bks2eink2s1emk4sentks1erlk3s2hik2s1idk2s1ink2s1o2k2s1pak3s2pek2spenks2pork2stork2sträk2stumks2zenk2t1adkt1aktkt1anzkta4rek2t1auk2tempkte3ruk4theik2t1idkt1innk2t1ofkt1opekt4rankt3rask4trefktro1skt3run2k1uhrku3l2eku3l2i2k3umlkum2s1kun4s4kunst3kur2blku2reikur4spkur2stlab4ri2l3absla2ce_2l1advla2giola2k1ila1k4l1lammf2l1amtlamt4sla4nau3l2andlangs42lanhä2l3annl2ant_2lantrlan2zwl3artilast1olau2fol2aufz2lausl2lauss2lauto2l1ähnl4betal2b1idl2b3lil4bre_lbst3elb4stol2b3uflch3lel3d2acl2d1akld1ammld3aril2delel3der_ld1erpl2d1idl2d1imldo2r2l2dranl3d4rule3arilech1ale2gaule3g4r4l1eigl2eindl2eine2leinkl2eint3l2ela3lemeslem2ma2lengll2e2nolen3szl1ents4lentzlen2zil2e1rale2raul1erfol2erfrl2erfül2erkal2erkol4ers_lers2klers2tl2erzales4amle2saule1stolet4tu2leurole2xisl2f1ecl3f4läl3f4lulgen2alge3ral2getili3chili2ckalien3sli2grelik2spli3m2ali3n1a2lindu2l1inflings52l1inhlin2kal2ins_l2insal2insc2linsp2linst2l1int2l1invli3s2a2l1islli3t2ali4talli1t2hlit1s2lit3szlk1alpl3k2anl3kar_lken3tl2k3rol2k3rulk4stüll1abbll1affll1aktl3l2alll3amall2anwll1anzll1armll1arzll3augl2l1ämll1echlle3enl2l1efll1eiml3l2eml3len_llen3al3ler_lle2rall2errl2lerzll1impll1insl2l1ofll1opfl3lor_l3lorel2l1oul2l3öfll3s2kll2sprll3szellti2ml2marclm1indlm1inslm3steln3a4r3l2ob_lo2ckulo2gaulo3h2e2l1ohrlo2n1o2l1orclo3ren2l1orglo4skelo4stelo4thr2l1o2v2l3öfelpe2n3l2p1holrat4sls3ampl3sarel2sau2l2s1emls3erels1ergl2serhls1erlls1erwls2logl3s2pil2sprol3s2pul3st2alstab6ls4tafl3steil3stells2tiel4stitlstro2l3s2tuls2zenlta4lal4tamelt1andlt1angl5tarblt1artlt3atol2t1aul5ten_lter3alt4erölte2thl2t1eul4theiltimo4l2t1ofltra3llt3räul2t3rel2t3rol2t3röl2t1umltur1altu2ri4lu4b32l1ufeluf2trlu2g1alu4g3llu2g3rlug3salug3splu1id_2l1una2l1unf2l1unilu2s1ulu2t1alu4teglu2toplu2t3rlü3ckel2z3acl3z2anlz2erklz1indm2ab4rma2ge_2m1aggma3g4n2m1aktma2lanma2lau2m1aldman3d2ma2netman4nam2ans_2mansc2mantwmanu3s2m3arbmaro3dma3r2uma1strma2tanma2telma2tromat3sp2mausg4m1ändmä2renmee2n12m1eif2m1eigme2lekme2lermelet42melf_mel2semel3t43m2en_mena2bme2nanmen3armen3glme2nimmen4skmen2so2mentnmer2er3merin2me3shmes2stmeste2mien3smi2kar2m1impmin2gaming3smis2sami2t3rmit5s4m2m1akm2m1almm1angm2mansmm1anzmma1stm2m1aumme2namme2samm1inbmm1infmm1inhmm1insmm1intmmi3scmm3stamm3strmmüll1m4nesimo2desmo2g1amo2k1lmon2s32m1opemo1r2a2m1orcmor2drmo2rermos4tampf3limpf1orm2s3anmsch2lm4s1efms1erwms1inims1orim2spedm2spotm2sprom3stelm3s2tim3s2tum3s2zemt3aremt1eltm2t1eum2tinsmtmen2mt2sprmu3cke4m3unfmu4s3amu2s1omut2s3mvoll1mwelt34n3abh4n3abs4n3abtna2ch13nachmnach3s3nachwna1f4rna2gemna2h1ana2letnalmo2na2lopnal2phn2als_nal3t4n2amenna3m4n2n3amtnamt4s2n1an_4n1ang2n1ans4n3anwnap2sina2r1an2arle4n3artna3r2unasyl2na3t4hnat2s1nat4sanat4sc3n2auln2auso4nauss4nauswnau5te2n1ä2m3nä1umnbe2ernbe2innber2en2d1akn2danlnd1annn2danzn5der_nde2sendo1stn2d3ren2drobnd3rolnd3rosn2druind2sornd2spr2n1ebnne2ei4n1e2henehe2r4n1ehr3neigtn3einknek3t42n1ele4nelek4nelemne3lennel4la3ne3lo3ne3lu2n1embn1e2mi2n1emp2n1emsnen1ecnen3einenen14nengb4nengs4nengtnens4enen3sk4nentn5nentrn1ents4nentz2n1epone2pos3n2er_ne2rapne2rau2nerfü3nergrn2erlin1ermän2ern_ne1rös2n1errn2ert_n1ertrne2rup2n1erzne2s1one2s1pne1stanes3tine2tap2n1eupnfalt4nf5linng2absn2g1acn2g1akng1andng1anzn2g1älngen2an3glasn2glicng4setng4stünich1sni3de_nie3b4nie4n3ni3eneni1eroni2grenig4spni2kalni2karni2kleni2k3r4n1imp3n2in_n2in4a4n3ind2n1inf3ning42n1inh2n1ins4n1int2n1invni2s1eni2s1pni3spinis3s4ni2s1uni3tscn2k1aknk4amtnk1anzn2k1ärnk1inhnk3lenn2klienk2lisn2k3ronk3s2znk2taknk2tannkt1itnk4topnk2trunkuri2nmen2sn2nadann1alln2n1annn2ensnn2erhnne2rönner2znne2s1nne4stnn1o2rnn3s2pno2bla2no2feno1rakno3ral3n2os_n2ostenost3rno3tabno2telnot3ha2n1o2x4n1ö4lnräu3snre3szn2salln2sangn2santn2saufn2sausn2s1änns1e2dn2s1epns1ergn2serhns1ersn2sethnsfi4lnsho2fns1i2dnsi4tensi2trns2kaln2s1opn4spatns2peins2penn3s2pins4piens3ponn4sprän4spron3starn3statns2tiens2tinnstü1bn2s1unnt1angn5tarbnt1arkn3tarznt2aufn2t1äunte3aun3t4ebnte3g6n2teignt4enent4entnt4ernnt4ersnt4ertn2t3hon3t4huntini1nt2insntmen2nt3recnt4rign5tropn2t3rünt4saunt2sto3n4tu_2n3umb2n1ums1nung43nung_n3ungl2n1uninu2t3rn2z1aun2z1ännze3rinzi2ganz1inin2z1wäoa3cheo4a3lao4a3mioanne42o3be_ob3einob1iteo2b3li2o3bloob3s2hob2staoche4boch1eioch3ö2och3teoch3toochu2fo2ckarock4shock3szode2n1odene22o3diaof1a2co2f1eiof2f1a1offizof2f5lof2f3r2o1f1rof2s3aof4samof2speof2sprof2s1uof2teio2g1eiohen3soh3lecohl1eioh3lemoh3lenoh3lepohls2eoho2lao2h1opoh4rinoimmu4okale4ok2s1po2l1akol1antolars2ol4damol1ei_ol1eieol1einol1eisol2lakol3lerol3lesol3lusolo3p2ol1ortol4strol2z1aol2zinom2anwom1arto2m1auo2m1eio2meruom1erzomiet1o4munton3arbon3auson3d2aon2e3honens2on1ergon1eröon3g4lo4nikro4n1imon1ingonlo2con1orconsa4gon2sebonse2lon4stüo2p1adop1aktopa3u2op2f3aop3fahopf3laop1flüopi5a4op5lago2p3le2o1ralor4altor3attor3ändor2baror2damor2dauorde2lor2deuor2dumor1eigo2reino2rerfor1ethor3g2a2orget2orgiaorgi1eor3gle2o3rico3rier4o5ril2orin1or1insor5ne_oro5naor2stuor3s2zor2tauor2tefor3teror2theor4tinor2torort3reo4r3uno3scheo2s1eio3s2hio4s3kao3s2pooss3anos4seios2s3oos4sonos2s1pos4s3tost1anosta4sost1auos4teioster1os3tilo2s3toost3räost3reost1ufo3s2zeo2ß1elota2goo3tarko2t1auot3augotei4not4em3otemp2ot3helo2t3hio2t3hoot3i2mot1opfot3rinot4spaot2tauot2t3rou4le_o1undsove1raoviso3owe2r1öl3z2wöp4s3tö2r3ecö2r1eiör2ergö2rerlör2erwör2f3lö2r1imörner2ör3s2kör3t2eö2schlö2s1eiös2s1cöte4n1pa1f4rpa1k4lpala3tpa3neipa2neupan3k43pa2nopan3sl3panz4pa5reg1park_par2klpar2kr1pa2ro1partn1partypar3z2pa3s2ppä3ckepät3s4pekt4spe2l1ape3l2ipeli4npen2alpen3dape4nenpe2n1o3pensiper2an1pere2per4na3pers2perwa4pf1ansp2fa4rpf3arep2f1aupf1eimpf1einp2fentp3fer_pf2erwp3f2esp2f3läpf3leipf3lie2p1heiphen3dphi2ka2ph3t2pi3chlping3s3pinse3pirinpi3t2apla3napo1o2bpo2pakpo1raupor4thpo4stapo4stäpos4trp2p1abppe2n1p2p1f4p2p3rap2p3repre2e13preis2p3rer3p4res1prinz4prosspro1stp3steap3stelp3s2tipt3albp4t3ecp4t1eip4telept1urspu2s3tra2barrab2blra2chura2dan2radapraf3arra2ferra3gle3r2ahmrail4l2r3airr3a2kr2raktira2la2ral3abrala4gr3alar3r4aldral3larall2e2rallgr3alp_ra2merram4muramt4sr4aner1rangirani1eran2kr2r1anmra2nor2r1anpr2ans_r2ansp2rantr2r3anwrar3f4r3asphra2stara2t1arat2serat2st3raub_rau2mi2rausgrau2sprau2taraut5srä2s1c3rätser2b1abrba3rerb1artrb1aufrb1echr4belärber2er3b2larbla2dr2ble_rb3lerrb4seirb3skarb4stärb3strr1che_r1chenrch1s2rch3sprch3tar3d2acr2d1akr2d1alrd1amerdani1rd1antrden3drde3rerde3sprdi3a2rdia4lrd1irir2d1itr2do2brd3ratre2altre3at_re3atsre2b1are2b1lreb3ra2reditrei4blreim2p2reina2reinb2reinf4reing2reinh2reink4reinn4reinr2reins2reint2reinw2reinz2r1elbre3lei2relek2r1elf2r1elt4rempfrena2bre2nanren3drren4glren3sar1ense2rentw3r4er_2r1erbr2erbr2r1erdr4eremr4erenr4erer2rerfo2r1ermr2e1rore2robr2erse2rersp2r1erzrer5zer2erzy3r4es_3resolre1stare2stureu3g2re3uni2r1eurrewa4rrf3licrf3linrf2s1ärf2s3tr2g1ahr2g1akrge4anrge2blr2getor2glanr2gleur2g3nor2gregr2gresrg3rinrg3s2prgs4tr3r4he_3r4henrho2i3ri3am_rib2bl4ri1ceri1chari2danri3elsriene4ri3enirien3srie2nuri1er_ri4ereri2f1ari2ferri2f1ori4kla2r1ind2r1infring3lrin2gr2r1inh2rinitrin5ner1innurin2sp3risikrismu2ri4s1pris4sari3t2ir3klaur2k5nurk3räurk3rinrk2s1erks3tirk2takrk2tinrk2t3rrk3trar2k1uhrk1unirl2s1prl3ster2mansrm1anzrm1a2pr2maphr2m1efrm3starm3umsrn2andrn3anirn3arern3arir4nerkr4n1inrn2ingr2n1opr2n1orrn3s2ärn3s2prn3s2zrn3t2ero2bei3rock_r2o3de3r2ohrro2madro2merro2munro3n2aro2ratro2reiro3s2iro3smoro5starost3rro4tagrote3iro2trirots2orö2b3lrpe2rerr1amtrrer4srre2strro3m2rr3sturs3antr3schersch2lrs2endrse4ners1erörs1ersr3s2hors3insrs2kalrs2kanrs2kiers2kisr4sordr3s2p4r4s3phr2stinrs4tobrs4todr3s2wirs2zenr2t1adrtals1rt1angrt1annrt1antr2t1arrt3attrte1e2rt4eifr2temorte2n1rt1erlrt3holrt2humr4tinsrto2rirt3recr2tresrt1rosrt4samrt2sparts2pert2sprrude2aruf2s32r1uhr4r3uml2r1unar2unde2r1unf2r1unirun2kr2r1unl2r1unm4r3unt4r3u2rrus4stru2t3rrü1benrwun3srz1a4cr5zenerz1engr2zergr3z2ofrzug4usa3blesa2chu2s1ada2s1affsa1f4rsa3i2k4s3aktsal2se2s1alt3s4alz4s3amn2s3anbs2an2c3sang_2s3anh3s4ani2s3anl2s3anp2s3anssan4sk2s3anw3s2ara4s3arb3s2ard3s2ars4sarti4s3ath4s3atlsau2grsauri1s4ause2s1änds2chad2schaksch2al2schaos2chau3sche_sch2en3sches4schexschi4es2chim3schis2schmö2schn_4s4chtscht4rsch2upsda3mese3at_see3igseein2se1er_se2galse2ha4seh1abseh1agse4helse2hinseh3rese2hüb2s1ei_2s1eig2seinb2seing4seinh2seink4seinl2seinn2seinw4s3eis3s2eitsek3tose2l1ase3ladsela4gse3lamsel1ec2self_sel1inse2l3ösel3szsel3tr4s1emp3s2en_se3nacse2nansen3gl3s4eni3s2ens2sentw2sentzse2n3use5refser2ers1erfos3erfüs2ergr2serhös1erklse1rot4seröfs2ers_2sersas1erse3s4ervse2selse2tapse1u2nse2van4sexa4sges4a3s2ha_4s3hoc4s3hof3s2hopsho4resi2achs2ide_2sideosi3dersi3enesi1errsi3gnusig4st2s1imm2s1ind2s1infsin3ghsin2gr4s3inhsin1i13sinn_3sinnl2s1inq2s1ins2s1int2s1invsi2s1esi2s1osi2s1psi2tra3skala4skanz3s2ki_3s2kiks2krip3skulpsler3ssli4tu4s5not2s1o2b4sohng2s1ohrso2leiso2ner2s3ordso2rei4s1ost2s1ö2l2spara4sparo3sparu2sperl4spers3s2pez3s2pli4s3poss2potts2pran2sprax2spräm4spräs2spred2spres2sprob4sprüfsrat2ssre4t3ssa2cks4samts4sangs4sansss3attss3aufsse1e2sse3has5sen_ss3erös4setass1offs2s1opss1oris2spros5stads3steis3stelss2turss1ums2stabb4stabl3s4tad2stafe1staffst1akt2stales3tali2stalkst1almst1alp2stan_sta4na1stand2stani2stans2stanws4tar_4staris4tarss3tat_3statis4tau_2staufs3taug2staum2stauss4tänd5stätts3täus3steckste2gr3s4tehs2te2i4steil4stel_2steln4stels4stem_st4ens6ster_ste2ras3tere4stermste4st3s2teu1steue4steuf2stie_2stien3s2tif3s4tims4tinfst1iso1stitus4toffs4t3om4stopo4stor_4store2storg2storis3tort4stote4stöch4s3töts3trac2strad2strai4strak2stral5straß2sträg4strefstri2k2strua3struk2strup2st3t43s4tudstum2s2stun_4stunn2stuntstu3rest1url4stüch4stür_4stüre4stürg4stürs2st3z23su2b3su4ba2su2cha2s1u2fsu1it_su3l2asu2marsu2mausu2mels3umsa2s1uni2s1urlsüden24s3zeis2zena4szent2ß1e2gßge2bl3tabel2taben3table2t3abt2t1adat1a2drta3d2s3taf2e4ta3gltag4sttah3leta3i2kt1a2kata3kesta2krotak6ta3taktb3t2al_ta3lagta3lakta3lart1alb_t1albk3talbu3t4aletal2enta2mert1a2nat3ankl2t1anm3tans_4tansit2ant_t2anz_t1anzat1anzuta2pes2t1armtar2tat1artitar2to2t1arz3t2as_3t2asttata2bta2tanta2tautat3eita2temtat3heta2tom4tatue2taufwt1ausb3tausct2auset1ausft1auskt1ausrtaxi3s2t1ältte3cha3technteck2ete2ckite2en3te1erwteg3ret3eifr2t1ein4teinzt3eis_t3eisbte2kel3te3le4telemtel1ente4leute2littell2e4tellute2l1ö3telt4tel3tate2marte2min2tempfte4m1ute2n3atena2bte3nactena2dtena4gte4naste4naut6endotend2sten1ecte2neftens2et3entb4tentdt3entzten3zwt3e2pi3t4er_tera2bte2radte1rafter3am4terbs4terbtte2relt4erfrte3riat4erli4terlö2ternct2errat2ers_terst4tesa2ctesä2cte2sprte2s1u3t2et_te2tatte4tik3teur_3t4ha_3thal_4t3hau3t4heat2hein3t2hek3t2hem4themd4themmt4henet4heni3these2t3hoc2t3hoh4tholz2t3hot3th2r2tiden23tief_2tieg43tierati2kamti2karti2kinti2kräti2larti2lauti2leiti2lel4t1imp3t2in_2t1inb4t1indti3n2e2t1injt2ins_4tinse2t1int4t1invti2seiti2solti3stati2velti2v1oti2v3rtnes2s3tochtto4d3ut1o2fetom1e2to2mento2pakto2patto2ranto2rauto4ränto3ren2t1org3tost43to3tetouil44tractt3rad_2trahm3t4rai2trandt3rann3transt3rase3träne4t5re_tre2brt3recht4reck2t3red5t4ree4trefe4trefo4treic2treift3reigt3reint3reist3reiz2t3rek4t3relt4ren_3trendt3rent2trepe2trepot4res_t3rese3t4ret3treuh4trieg4triemtri2ertri1es5trigg2tring3trink3trip_trizi13t4roitro2ke4trom_tro2mi4tromltro1pe3tropf2t3röttrums12trund3t4ruptru2thtrü1betrü1bu2t3rüct2s1aht4s3art3schats2chots4corts1engt2s1erts1init2s1irt3spalts1parts2pedt2spert3s2pits3takts4talts3tept2stitts3tocts3tort2stritta2bet3t2altt2anttt1arttt1ebett1eiftt1eistte2satte2sät2tetit2t3hott3rast3tro1tt2sentt2spett2sprtu1almtu2chitu3fent1u2kr3t2umetum2situm2so2t1umt2t1una3t2une2t1unft3ungatung4s2tuniftu2rantu2re_tu2reitu2resture4tturin1tü3cketück2s3tür3s3tütentze2n1tz2enetz1erltzgel2tz4tinua2lauu3a2louara2bua2t3hu2be2cub3licu2b3luub3ritub2sanub2s1oub2spau1cha_uch1eiu3chesuch1iluch1inu2ch3ruch2souchst4u2ckemuck2eru2ck1iuder2eudi3enuditi4uenge4u3e2niuen2zuue2r3aue2r1äu3erehu3ereru3erexuer3g2uer2neuer3scuer3t2u3erumue4teku2f1äsu2f1eiu2f1emu3fen_u2fentuf2frouf1oriuf4sinuf2spouft3s2u2g1apu2g1eiu3g2löug3rüsug4serug3spaug3spiug4sprug4spuug3staug5stäug3struh2reruh4rinui4s5tukle3iuk2t1auk2tinuk2t3ruld2seu2l1elul1erful1erhul1erwul1etaul1insul2lesul2p1hul4samul5s2eul2tarul2triul3z2wu2m3akum1allum3anzu2mausu2maut1um3d2umer2aum1insum4serum2simu2m1uru3n2am2un2asun4dabun4deiun2dorun2d3r2unds_und3spund3stun2ei_un3einunen2tun4es43unget3ungewung3raung3riung4saun3ideun3islu3n2it1u2nivun2ka2unk1apun2keiun2kneun3n2eunst1runvol2u1or3cu2pf2eu2pf1iupt3a2ura2beur1anaur2anbur1angur2anhu2r1auur3b2aur1effu2releu4r1epur1erhur1etaur2griurg3s4ur1iniur3insur1int1urlauur3sacur2sanur2seiur2serur4sinurst4rur3szeur2z1wu4s1afus4annu2s1ecu2s1efu2s1eiu3seiduse1rau2serpu3spekus1picus2porus4secusse2nus4sezus2sofu1stalus3tauu1stelust2inu2stunu2sturut1altut3a2mu2t1apu2t1aru2t1ärute4geu4tentu4t1exut3heiu2t3hout1opfu2topsuto3s4ut3reaut3s2aut2s1äut5t4lutu4reutu5ruutz2erut2zinut2z1wuve3räüb2s3tücht4eü3ckenück4shü3den_üdwes2ü2f1eiü2h1eiüh3r2eühr3taü2mentün2fliün2g3lün3strü2r1eiü2schlüs2s1cva2teiva2t3hva2t3rvat3s4va2t1uve3li5ve3nalve3radver3b2ve4rinver3teveter2vie3levie2w1vi2l1avi4leh2v1i2m2v1intvi3s2ov1steuwab2blwa3chewaffe2wah2liwal4dawal2tawal2towang4s3war2eware1iwart4ewe2b3lwe2g3lwe2g3rweg3s4wei4blwei2flwei3tawei4trwel2t1wel4trwe2r3awer2bl3werbuwerer2wer2fl3werk_wer2ka3werkewer2klwer2kuwer2tawer2to3wertswest1awest3rwes4tuwett3swi1ckawien2ewim2mawim4muwin2drwi3s2e3witzlwoche4woh2lewo2r1iwo4r1uwört2hwur2fa3wurstwus3te1wu4t1x1i2doxi2l3ux2i2s1xi3s2cxis4täx1i4tux3t2asxtblo4x2t1eix4tentx2t3evx3t2ury3chisy2la2myloni1y2p1iny1s4ty2z1all2z3anf2z3anlzar2trza1st42z3at3z1au2fzbübe32zecho2z1eck2z1effzei3lazeile42z1einzei3s4zeist4zeit1azei2trzel1erzel1inzel3szzel3th2z1empze2nanzent3sze2r3az1erfo2zergäzer3k2z2erl_2zerlözerne22z1erq2z1erz3zerzaz3erziz2e2s1ze3skuzes2stze3sta2zettszi3alozi1erhziers1zi1es_2z1impzin4er2z1infzin1itzin2sa2z1invzi3s2zzi1t2hzor4ne2z1oszz2t1auz4tehez3therzt3reczu3ckezug3un2z1uhr2z1um_zumen22z1umszup2fizu3r2a2z1urk2z1url2z1urs2z1urtzü3ckez1weis2z1wel2z1wen2z1wer2z1weszzi3s4", - 7 : "_al4tei_amt4s3_and4ri_an3gli_angst3_an4tag_ausch3_bo4s3k_ebe2r1_en2d3r_en4tei_er4dan_er4dar_er4dei_er4der_es5t4e_es3t2h_fi3est_fi4len_ge5nar_ge3r2a_haft5s_hau2t1_ho4met_ka2b5l_orts3e_pa4r1e_reb3s2_re3cha_rein4t_reli3e_res4tr_sim3p4_sto4re_to4nin_ul4mei_urin4s_ur3o2m_ur3o2p_wei4ta_wor4tu_zin4stab3essea4chenta4cherka4cheröach1o2bach2t1oa3d2ar3ade3s2p2ad3recaf4t5reage4nebage4ralage2s3pa2h1erhah4l1eiahner4eahre4s3ahr4tria3isch_1a2k4adala5ch2a2l1angalb3einalb3eisal4berha2l1e2b3a2l1efal3endsa2l1erba2l1erfa2l1erhaler3ina2l1erla2l1ert3a2lerza2l1eskal2l1aual3lenda2l1o2balt3eigalt3ricalt4stüalzer4zamer2a1amp2fa2am4schlana4lin2ana1s4an2d3rüan2g1eiang3erfan2g3laan2g3raa4n3insan2k1anan2k3noan2k3raan2k3räan3s2krant3rina3ra3lia2r1anga2r1anza2r3appar2b3unaren4seare3r2aa2r1erhar2f3raari3erdari3ergarin3itar2k5amar2k1arark3aueark3lagark4trear3m2orar2r3adart3erlar4trama4scheca2s1e2ma2s1o2fa2s1o2ras4t3rea2t1aktater3s2ato4mana2t1ortat4schnatt3angat2t3räat4zerkauch3taau4e3reaum3angaup4terau2s1ahau4schmau4schoaus3erp1aus3s4aus4se_au4terkaut2o3fäg3s4trä3isch_äl4schläser4eiäse4renäskopf3ät4schlät4schräu4schmäus2s1cban3g4lban2k1abau3s2k2b1eier2b1eimebe1in2hbei3s4tbe2l1enben3dorbens4eiben4sprber4ei_be4rengber4in_ber3issb3esst_2b1illubis2s1cbjek4to2b3leid3b4litzbor2d1ibor2t3rbra1st42b3riembrü3ckeb6schanb6schefb4s1erfb4s1ersbst1a2bb2s3träbs3treubtast3rbunde4sbu4schlbu4schmbu4schwbu2s1erbügel3ebzei2t1ch3a2bi3charta4chelemche4ler4chents4chentwche4recche3rei2ch1e4x2ch1invch3lein2ch1unf4ckense4ckentw2ck1errck4stro2ck1um32d1al2a2d1ammä2d1a2na3d2anz_2d1au2f2d1aus33d2e1imdelei4gde2l1obdel2s1edel2s1pden4sender3edider4erf4derklä4derneude3stande3stardie4nebdie2s3c2d1i2radi3s4trdi4tengdo1st1r2d3rast2d3rauc3d4reck2d3reicdrü3cked4s3amtd4schefd4seinsd2s1engd2s1entd2s1erfd2s1erkd3s2kan2d1un3de3ak3toe4aler_e3at5t4eb4stätebs3temech1o2bede3n2eeden4seeden4sped2s1eseein4see2f1e2bege4l1äege4streher4anehe3strehl3eineh2r1a2ehr1e2cehr4erleienge44eigeno1ei2g3nei4leineil3ins2e1induei4neng3eingabein4habei2n1o23einsate4inverekt3erfela4bene2l1a2me2l1a2re4leinge4leinh2e3len_e4lensee2l1ente2l1ergel1e4tael3l2an3elternelt3s2kelt3s2pe2m3anfe3m2e2nemen4the2m1erwem2p3leena3l2ien3d2acend4ortend3romend3s2pene4bene4n1enten4entre2n1erd1e2nerge2n1erle2n1erse2n1erte2n3erue2n1erwe4n3esseni3er_enob4lee2n1o2ren4terb3entspr4entweten4zergenz3erherd3erwere4dite2r1e2h4e3rei_4e3ren_e4rensee4rentner4ergee2r1erhe4rerscere4vid3ergebn4ergehäe2r1i2d4e3rin_e2r1ini3erlebnermen4serm3erser2n1ose4r1o2rer4res_erri3erers4tecer4terl3erweckese4lere3s2pore3s4prae4starbe1s2teces3trope2s3umseße3r2eeter4tre4traumet4tangette4n1et4t1umeu3ereieu4genteu3g2ere2u3r2eeve5r2ifa4chebfa2ch1ifan4gerfäh2r3ufeh4lei4f1einhfe2l1erfel4sohfer3erzfest1a2fest3eifet4t3afeuer3ef2f3emifi1er2ffi2l1anfil4auf2f3leinflu4gerfor4teifor2t3r2f3ra2mfrei3n4f4scheff4s1ehrf2s1entf4s1etaf2s1pasf4stechf3s4telf3sternf4t1entf2t1erlf2t1etift4scheft4s3täft4streft4stri2f1u2nifun2k3rfus4serfus2s1pfus2s3tfu2ß1ergan2g1a4gangeb2g1ankugebe4amge4lessgel3stegel3t2agen4auggen2d1rgen3eidgen3ern2g1entfge4renggerin4fger4inngerin4tger4stoges3s2tge4t1ergien2e12g3isel3g4laub2g3lauf4g3lein2gni2s12g3reic2g3rein2g3renng3rieseg4schefg3s2eilg3s2pekg3s2porgs4tellgst3entgst3errg4s3tor4gungew2g3unglgus4serhaf3f4lhalan4chal4beihas4serhau4spahäu2s1chba2r3ahe4b1eihe5ch2eheit4s3h3e2lekhel3ershel4meihen3endhen3erg2h3entwher3a2bher3eck4hereighe4rerwherin4shie4reihie4rinhi2l3a4hin4t1ahir4nerhle3runhner3eih3nunge2hot3s2hrei4bah4r3eigh3re2s1h3rieslhr2s1achr2s3auhr4s1ofhr4stechrü3ckeh2s1achh4schanhse4lerh2s1erlh2s1parhst3alth2s3tauh3steinhst3ranh3taktsh2t3assh2t3a2th4teilzh2t1eimh2t1eisht3erfoh2t1erhh4terklh2t1errht3erscht3ersth2t1erzh4t1essht3ort_ht3randh2t3rath2t5rinh2t3rosh4t3rösht3spriht4stabh2t1urshu2b1eihu2b1enhu2l3eihul3enghu4lenthu2l1inhut4zenia2l1a4i3alenti3alerfi3alerhi3a2leti3a2liai2b1aufi2b1eigi2b1eisich2t3rieb4strie2f1akie2f1anie3g4raie4l1ecien4erfienge4fien3s2eie4rerfier3staies2s3tie4tertie2t3hoie4t3ö4i2f3armift3erkif2t3riift3s2pi2g1angi4gefari3g4neuig3steiig4s3toig4strei2k3anoi4kanzei2k1etaik2o3p4i2l3a2mil4aufbi4lentsi2l1erfi2l1ergil2f3reili3e4ni2l1indil4mangil2m3atil2m1auilz3erki2m1armimat5scima4turi2m1erfi2m1erzi2m1infi2m1insi4n3au2in4deneind4stai2n1engin3erbeiner4lö1in4fosing4sami3n2i3d3inkarninn4stains3ertin3s2kain3stel1in3s2zional3aion4spiir2m1auir2m1eii4s3amtisch3ari4schefi2sch1lisch3leisch3obisch3otisch3reisch3rui4schwai4schwoisch3wuise3infi4seinti2s1ermi2s1essi3s4tati3s4teli3s4tilit3a4reiten3s2iti4kani2t3ranits1a4git2s1e4its3er1it4zergi2v1enei2v1enti2z1enejek4terjekt1o2jektor4je2t1u2jugend3jung3s42k1a2bo2k3a2drka3len_kal3eri2k1annakari3es2k1artikau2f1okauf4spke1in2d2k1eise2ke2lekkel3s2kk3enten2k1entsker4kenker4neu2k1i2deki3n2o32k1inse4k1last2k1o2fekop4fenkord3erkot4tak2k3räum2k3redek6s3ammk4s3amtk2s1ersk2s1erwk3stat4k2t3a2rk2t1ergk2t1erkk2t1ingkti4terkuri4erku4schl4l3aben4l1a2bl2l1a2drland4spla2r1eila4rene3l2ar3glar3ini2l1ar3t3lasserla2t3ralat4t1alat2t3rlaub4s3lau4fer2l1ausrlär2m1al2b1edel2b1insld3a2ckl2d1a2dl2d3a2nl2d1a2rleben4slecht4e4leier_lein4duleins4e2le2lekle2m1o24lendet4lenerglen4sem2l3entwlent4wäle2ra4gle4rers3lergehl3ergen2l1ergilerin4s2l1er2ö3l2erral4f1eislgeräu33lichem3licher2l1i2doli3e2neli4schu2l1i2soll1a2bel2l1abtl2l1a2ml2l1ausl4lentsl4lergoll3erntll3ertrl2l1indl2l1o2bl2l1o2rllus5t6l2m3a2blm3einsl2m1e2pl2m1erz2l1o2bllos3t4rl2s1a2dl4s3ambl4schinl4schmül2s1e2bl2s1ersl2s1impls3ohnel2t1eislte4leml3t2erglt4stablt4stoclug3stelung4sclus4s3alus2s1clus2s1olus2s3plus4s3tlust3rema4gentma2l1ak2m1analman4ce_man3ers2m1angrma3s2pa4m1aspemas4tel2m1au2fmäu2s1cmein4dame1i2some2r3apmer3eckme4rensmerin4dmerin4tmerz4en4m1essamierer4minde4smis2s1cmme4linm4mentwmme2ra2mme4recmmi3s4tmo4n1ermor2d3amp4ferfmpf3erpmpf3errmpf3erzm2t1erfm2t1ergm2t1erlm2t1ersm2t1ertm2t1etamt3s2kana3chenna2l1a23n2al3dna4lentnal3l2a4n1a2nana4schw4n1a2synauf4frn4austende4al_nde4lännde4robn2d3ratn4d3runnd4sparnd4stabnds3tau4n3eingne2n3a24n1endb4n1endd4n1endf4n1endh4n1endk4n1endp4n1endt4n1endwne4nenenen4ge_nen4gen5n2enta4n1entl4n3entw2ne4p3fne2ra2bne3r4alne2r3am4nerbe_4nerben2n1erbine2r1eb4n5erfonerfor42n1erlöner4mit4n1ernt3n2ers_4n3ersa4n3essi2n1etatnett4sc2n1e2tun2g1a2mn2g1einnge4zänn2g1i2dn3g2locng3sendnie3l2ani4kingni4schwn4k1algnke4leinke2r3un2k1insn2k1ortn4nentsn2n1unfn2o3ble2n1ob2sno2m1annor2d5rno4t3eino2t3inno2t1opn2s1äusn6schefnsen4spns3erfan4serfon2s1erkn2s1erwn2s1erznsi3de_n2s1inin4stat_n3stemmnst4erön4stracn4strien3t2a3cn4tanzan4t1essnti3k4ln4t1inhnton2s1nt3reifn5t4repntu4re_ntu4resn2z1a4gn4zensen4zentwnz3erwe2o3b4enoben3d4obe4riso2ch1ecocher4kof2f1ino2h1eiso2h1erto2h1erzoh4lergoh4lerwo3isch_ol2l1auoll1e2col2l1eiol4lerkoma4nero3m2eiso2m1indo2m1into2n1erbo2n1erdon3n2anont3erwon2t3riop4ferdopi3er_o4r3almo4r3alpor2d1iror2d3reord3s2to2r1e2cor2k3arormen4sor4mentor3n2o1ors4tinor2t1akor4t1anort3eigort3erfor2t3evor4trauort3ricor2t1umo2s3perost1a2bos4ta2gost3ageos4t1amos3tarrost3einost3rano2ß1enzo2ß3ereo2ß1erfo3t2e1iote2l1aote4leio2t1erwot3s2peot4terkozen4taöchs4tuögen4s3öl2f1eiöl2k3leö2r1e2lö3r2erzö2r1unepa2r3afpar3akt2par2erpar4kaupe4leinper2r1ap2f1a2b2ph1erspie4leipie4reipil4zerpingen4pi2z1in3ple5n4po2p3arpor4tripo2s3tepost3rap4t1entpt3ereip4t1erwp4t1erzp4t1in12r1acetra4chinracht3r3ra1k4l2r3alm_r4al3thram4manram2p3lran4dep4r3aneiran4spara2r1inra4schlrau3e2nrau4manra3umsa2raus5sr2d1elbrder4errderin4r2d1innre3alerrech3arreier4trei3l2arei3necre1in2v2r1entl2r1ents3r2erki2r1ernä2r1erns2r1ernt3r2ers_2r1ersa3r2ertu2r3evid2r1e2x1rfi4le_rfolg4srf4s1idrf2s3prr2g1a2drge4ralrge4taprgi4selr2g3ralrg5s2turi2f1eirif4terri4generin4dexrin4diz4rinnta3r4ins_rin4tegrin4t5r2r1inveri4schori4schwr3i2talr2k3reark4stecrk2t1anrk2t1o2rl4s3tor2m1ider2n1anzr3n2a2rrn3ebenr4n3eisr4n1ener4n1ergrn4erhir4n1ertrol4lanron4tanro2r3alros2s1crre4aler2s1a2dr4s3amtr2s3angr2s1e2br4stantrs4temprs4terbr3s2tierst3ingrst3ranr2t1almrt3a4rertei3lartei3s4r4t3elfrten3s2rt3ereir4terfar4terfor4t3erhr4t1erkr2t1ersrte3s4kr4t1i2dr4t1imar4t1rakr4treisrt4s1ehr2t1urtru3a2r3ruch3strun2d1arund3er4r3uniorus2s1pr2z1erfr2z1erkr2z1erwrz2t3ror3z2wecsa2cho22s1a2drsa2l1id6s3amma2s3a2nasan4dri4s5a2sy2s5aufb2s5ausb4schanc4schangsch3ei_4schemp4schess3sching4schiru4schle_4schre_4schrinsch3romsch3s2ksch3t2a4schunt4schwetsdien4e2s1echo2s1echt4s1e2ckse2e1i4se4h1eise4herk5s4ein_sein4dusei3n2esein4fo4s3einr4seinstsel3erdse4lerlsel3ers4s1endlsen3eck2s1entg2s1entsse2r3als3ereigser3eimse4reinser3eis2s1ernt4sersehse4r1ufse3r2umse3rung4s1e2thsi3ach_siege4ssi2k1absin3g4lsing3sasi4schuska4te_4skategska4tes4s3klassni3er_sni3erssol4ler4s3o2ly2s1orga5s4orgeso2r1o24spensi4s1peri3s2pi4e4spier44s3p4lu5s2prac3s4prec3sprosssrat4scs4s1alas4s1albs3sa1s2s4s1egasse3infs4sentsss3erhöss3erses3s4tipst1a2mi4s3tann3staus_4stechn3steilh3sternc3s4tett3s2tiel1s2ti2r2s3tosesto3s2t3s4trah4strans3s4tras4straum4stränest4reifst3renn2s4trig2s3trisst3roll4st3run2s4t3s4stum4sc3s4tunds2t1uni2s3tuns2st1urtsu2m1o23s4zene2ß1erseta2b1antab4bauta4bendta2g1eitage4s3tahl3sk4taktiv3t2aktutaler4ita2l1op2t1anna4t3ansp4tanzeita4rens3t4a3rita2t1erta2t1um2t3ausg4t3auss2t1ausw4teilhet3eingete2l1aute4l1ecte4l1ehte4leinte2l1inte2m1ei4t3endf4t1endl4t3endpten3d4rten3eid4tenerg4t1eng_ten4ge_ten4gla4tensem4t3entwten4zerter3endte4rengterer4z4terfol4terkläter4mert3erneuter4re_3t2erroter4sert4erst_t4erstit4erstute4r1ufter4wähter3z2a2t3erzbtes4sertes3tantest3eiteu3ereteu3eriteu2r3a2t3e2xe2t1e2xi4thrin_4thrinsti3e4n3tie4recti4gerzti2ma2gtim2m1at1in1ittin2k1lti4que_ti4schatisch3w3ti3t2etle2r3ato2d1ertor3inttra3chatra4demtra4far3t4ran_3t4reib2t3reihtre2t3rt4riche4t3rose3t4runkt4schart3sch2et4schefts4chemtsch4lit4schrot2s1e2bt4seindt2s1entt2s1i2dts4paret3s2pont3s2port4spreits3tätits3tradts3traut2s3trät4stropt2s3trütte4lent1u2fert3umsattu2r1ertur3eretu4schlt2z1e2ct2z1eiet2z1eistz3entsuben4seuch4spruch4toruch2t3ruden3s2u4erinnu3erunfu3eruntu2f1ä2ßu2f1erhu4ferleufs3temu4gabteu2g1erfu2g1erlugge4stu3isch_u3ischsulm3einu2m1artument4su2m1ergu2m1erlu2m1erwum2p3leum2s1peun2d1idun2d3umunk4titunk2t3run2n3adunte4riunvoll3upt3ergu2r3a2mur1an5su2r3a4rurgros4ur2s3auu2s1eseusi3er_us3partu2s1pasu5s4pizuss3erkust3abeu5strasu4t1erhuto4berut4schlut2s3pautz3engüch2s1cück3eriü4ckersück4speü3d2ensü2f1ergü2h1engü2h1erkü2h1erzühr3ei_ül2l1eiün2f1eiüste3neva2t3a4va4t1inve4l1auviel4ervi2l1invollen4waffel3wah4lerwalt4stwar3stewa4schawass4e2we3cke_we3ckeswei3strwen2k3rwer4gelwe4r3iowest3eiwest1o2wolf2s3wol4lerwor2t3rwuch4scxi4d1emx2t1e2dxtra3b4x2t3ranyl4anteyri3ersze2l1a2ze2n3aczen4sem4zergeb2z1erhözerin4tzer4neb2z1ersazert1a4zert4anzessen4zie4leizin4ser4zinsufzon4terzu2g1arzu4gentzwan2d1", - 8 : "_alb6rec_al5l4en_anden6k_ar4m3ac_ar4t3ei_bei6ge__ber4g3r_de3r4en_einen6g_en4d3er_er4zen4_ka4t3io_ost5end_par3t4h_richt6e_rücker6_sucher6_tan4k3la4ch3erwach6stuback5sta43a2er2o1al4b3erwal2l3a4rall5erfaalli5er_al4t3erfam4t3ernan4g3erlan4g3erzang4s3poani5ers_an2t3a4ran2z1i4nari5ers_at4z3erwau5ereinau4s3erwauster6mau4ten4gäs4s3erkbach7t4ebal4l3ehbe4r3eiwber3st4abe6steinbe4s3tolbote3n4ebse4r3inbu4s3chach3e4ben6chergebcher6zie4d3achse2d1an3d22d1e2bendel5sterde4n3end4den4semde4r3eckde3r4erbde4r3ero4d3erhöh4d3ersat2d1in1itdi4t3erldi4t3ermdi4t3ersd4s3chind4s3tätid3s4terne3a4reneech3t4eiege4n3a4eg4se4r1eh4l3entei2b3u4tei4d3errei2m1a4gein6stalei6schinei6schwuei4s3erweister6reld5erstel4d3erwel5eier_e4ler4fae4ler4laelgi5er_elgi5ersel4l3eine6mentspen4d3esseni5ers_en5sch4een4t3rolen4z3erfen4z3erke4r3entfer4g3an_eri3e4n3eri5ers_ess4e3reess5erwees4t3enges4t3erhes4t3essestmo6deest3o4riet4sch3wet4z3enteue6reifeut6schnfal6schafal6schmfrach6trf4s3tüteft4s3tangas4t3el2g1eise2gel4b3ragel6ders4g3ereigge4ren4sge4r3entge4s3terglei4t5rgrammen6gros6selhaft4s3phal6lerfhau3f4lihau5steihel4l3auhe2n1e2bhe4r3eishe4r3o4bhfel6lerh6l3ernäho6ckerlhol6zeneh6rerlebh3s4terbh3t4akt_h4t3entfh4t3entsh4t3erfüh4t3erkeh6terstaht6ersteht6raumeht4s3turht4s3türhut4z3eri2e2l1a2ie2l3o4bie4n3ergier4s3ehiesen3s4im4m3enti2n1e2bei4ner4trin2g1a4gin4n3ermir4m3untir4sch3wi4sch3eii6schwiriso6nendis4s3chejah4r3eikehr4s3o4ken4gagken5steik3er4lauk3er4lebkeu6schlkor6dergkre1i2e4k4s3tanzk4t3erfolat4t3inl2d1e2selei6nerble4n3end5lentwet4l3ereig4l3ergeb3l4ergewli2g1a2b2l1in1itl6lergenl4s3ort_l4s3tätils6ternels6ternsl4t1e4skl2t1o2rilu2g1e2blus4s3erlu4t3erglu4t3ersl2z1u4fema4t3erd4m3entwi4m3ergänmp4f3erg4m3ungebnacht6ra4n1a2mernavi5er_navi5ersn4d3entsnder5stene2n1e2bn4g3erseng4s3e4hnich6ter2n3i2geln4k3erfanseh5erens6eins_n4s3prien4s3tatenst5opfenten6te_nt4s3parober3in4oh4l3erhol4z3ernon4t3endopf5erdeopi5ers_or4d3engor2m1a4gorni5er_orsch5lior4t3entor4t3ereor4t3offor4t3räuos4s3enzos4s3erfoste4r3eo2ß1en2kpargel6dpä4t1e2hpä4t3entp2f1in3srach6trä2r3a2d3rrali5er_rali5ersran4d3errau4m3agräu5scher2b1a2der4b3lastrch6terwr4d3erntre4n3end4r3erlaures6serwrge4l3err4g1en4g4r3innerrkstati6r2m1o2rirpe4r3inr4s3ort_r6steingrst3er4wr6strangr4ter4laru6ckerlrun6derlrun6dersrun6derwr4z3entssat4z3en2s1e2bense2r3a2d6sereignse4r3enk4s1e2tatson5ende2s1o2riesrücker6sse3in4ts4t3endss4t3englstes6se_sun6derhta4r3eretau3f4litau6schrtau6schwtblock5e4t1e2bentein3e4ctel4l3änte4l3ostte2m1o2rte2n1e2bte3n4ei_ten4t3ri4t3erde_te2r1e2b4t3ereigter4n3art6erscha6terwerbtes6terkti4v3erlto6ckenttrücker6t4s3amt4t4s3esset3s4tero2t1u2niou2ch1e4cu3erin4tuern3s4tu4g3reisun4d3erfund5erhaunge3n4eu6schentusch5werusi5ers_ü2ck1e2rüge6leisve4n1en2wach4t4rwahl5entwandels6we5cken_weis4s3pwel6schlwel6schrwel4t3a4xpor6terx2t1er2fx2t1il2l2z1e2benzei4t3erze2r1e2bzer4n3ei4z3erstezer4t3ag", - 9 : "_ber6g5ab_er8stein_he6r5inn_men8schl_wort5en6_wor8tendach8traumalli7ers_al5s6terbäh4l3e4be6b5rechtechner8ei_den6s5taue6ch5erzierg3el4s3got6t5erggren6z5eihä6s5chenhe6rin6nuherin8terh6t5erspaieler8gebil4d3en4tke6rin6nulepositi86mel6ternn4n3er4waos4s3en4kpapieren8ram6m5ersr8blasserris6t5erssfal6l5erspani7er_su6m5ents4t3a4genttan6z5erhtblocken8tes6ter6gvati8ons_wer6t5ermwin4d3e4czer6t5rauzes6s5end", - 10 : "_er8brecht_os8ten8deder6t5en6deren8z7endgram8m7endin6n5er6scos6t5er6wewel6t5en6d", + 3 : "2aaa1äa1ba1da1g2aia1j2aoa1öa1p2aqa1ßa2ua1xä1aä1bä1dä1gä1jä1k1äqä1ß1äxä1z1bibl21cacä32cc1céc4hc1jc4k3co2cp2cs3cu1cy2dc1de1did1ö1due1be1d4eee1fe1ge1ke1m2eoe1pe1qe1ße1te3üe1wey1e1zé1bé1cé1gé1hé1lé1oé1pé1ré1sé1v1fa1fä1fe1fé1fi1fo1fö1fu1fü1fy2gd1geg1n1guh1j2hl2hnh1q2hr4hsh2ü2hwh1zi1a2iä2ici1d2ifii2i1ji1ßi1üj2u1ka1käkl21ko1kök1q2ks1kü1le1li4ln1lo1lö2lx1ly1ma3mä2mc1me1mé1mi1mo1mö1mu1mü1my1na1nä1ne1né1nin1j1noo1b2oco1d2oi2ol2omo1qo1ßo2uo1vo1xö1bö1dö1e1öf2önöo1ö1ßö1vö1wö1zp2a1päp2e1pé1php1j1puqu42rc1re1ré1ri4rnr1q1ru1rü1ry1sa1sä1sc1se1sé1si1so1sös1t1su1sü1ta1tä1tet1h1ti1to2tö2ts1tu2tü2ua2ucu1h2uiu1ju1lun12uou1q2usu1w1üb2üc2üdü1gü1k2ünü1ß2ütü1vü1zv2r2vsw2aw2ä2wnw2rw2ux1a2xc1xex1jx1q1xu2xv2xyx1zy1by1ey1gy1hy1jy1ly1py1ry1vy1wy1yzä2zu1zw2", + 4 : "_ax4_äm3_ch2_en1_eu1_fs4_gd2_gs4_he2_ia4_in1_ks2_md2_mm2_oa3_öd2_pf4_ph4_ps2_st4_th4_ts2_um3_ur1_xe3a1abaa1ca3au2abaab1ä1abd1abf1abg1abh2abi1abkab1l1abnab3r1abs2abu2abü1abw2aby1abz2ac_2acaa1cia1cl2acuad1c1add2adf2adh5adj2ado2adp2adq2adu2a1eae2bae2cae2da2ekae2pa2eta2ewae2xaf1a2afe2afia2fö2agaag2n2agt2ah_2ahsa1huah1wa1hyaif2a2ilaje22ak_2akb2akc2akd4ako2aks1akza1laa1lä2ale2ali2aloa1lu4aly2am_2amä2amf2amk2amla2mö2amu1anb2ane1anf1anh2anj1anl2anna1nö1anra1nü1anwao1ia1opa1or2ap_2apa2apea2péa2pfap2n2apr2ar_a1raa1rä1arb2are2arf2arh2ari2arr2arua2rü2arv2ary4asha2söa2süaße22a1tata1at2cat2eat2h3atmat1ö4atra3tü2au_2aub4auc2aue2aug2auj4aum4aunau1o2auu2auw2aux2auz2a1ü2a1v4avia2vr2a1wax2eays4ay3t2a1zaz2aaz2oaz2uäb2sä1ckä2daä2dräd2s2ä1eäf3läf3räf2säg2näh1aä3hi2ähm2ähsä1huäh1wä1imä1la2äleä1lu2ämläm2s2än_2äne2änsä1onä1paär1äär1c4äreär1oä1röä2rü1ärzä3suä3teät2häu1cä2uf1äug4äul2äumä2un2äur1äuß4ä1v3bah3basb2ärb2äs4b1bb3bebb2sbbu12b1c3be_3bea3beb3bek3bel1bembe1o3bet1bezbge3bib23bilbiz24b1j2bl_b2leb2lo3blü2b1mbni2bo4abo2cboe1b1op2böf2b1qb2r42br_3brä3brü4b1sb3säb3scb4slb2söbss2bs2t4b3tb5teb4thbt4rbtü1bu2fbü1c2b1v2b1w3by1by3pbys2ca1h3camc4an3carcäs2c1cec2d2c3do2cec2cefce1i2cek1cen1cer1cetce1u2c1f4ch_2chb2chc2chd1ché2chf2chg2chh2chj2chk2chp4chs2cht4chü2chv4chw2chzci1cci2s4ck_ck1ack1ä2ckb2ckc2ckd1cke2ckf2ckg2ckh1cki2ckk2ckm2ckp4cks2ckt1cku2ckv2ckw1cky2ckzc4l2clo11cluc2m2co2ccoi2cos42c1qcre2cry2cs2ac2si4c1tcti22c1z3da_da1ad1afd1agda1sdä2ud1chd3dhd5dodeg2d1eides1det2d3gl3dicdi2edi1pdi5v2d1jd3lad3ledl3mdl3sdni2d1obdo2o2d1qd2r4d3rid3rö2d1s4dsb4dsld2södss4dst42d1td2thdto2d3tödt3rd3tüdu2fdu1idu1odur22düb3düf3dün2d1wdwa2dy2s2d1z2e1aea2ceak1eam3e2ase1ä22eba2ebl2ebre3bue1cee1ci2ecoe3cr2ected2eed2öee1eeeg2e1eie1en2ef_2efa2efe2efi2eflefs22efu2efüegd4e3gee2gn2egue1hee1hi2ehme1hoehs22ehte1hue1hüeh1we1hy4eibe2idei1ee4ilei1p2eire2it2eiu2e1jek2a1ekdek4nek2oek4r2ektek2ue1la2eli2eln2eloe1lü2elz2ema2emm2emüen3fe4nre4nten1ue1nüe1nye1ofe1ohe4ole1ore1ove1ö2e3pae3puer1ae1räer1cer3h2erie1roer1ö2eru2esbes2c2esf4eshes3l2esmes2ö2esp2esres3we3syes3ze3teet2he3tie3tö2etre3tü2etz2euf1euke1um2euneu1p2eut2eux2e1ve3vo2ewae3wä2eweew2s2ex_e1xiex3l3exp2exu1exzey4neys4e3ziez2wégi2élu2é1t2é1u2é1z2fab43facf4ahf2alf2arf3atfä1cf1äu2f1cfe2c3fewf1ex3fez2f1fff2efff4ff3lff2s3fi_fid2fi2ofi2r3fis3fiz2f1jf2l22fl_1fläf4léf3löf4lü2föf2f1qf2r2f3ruf3rü4f1sf3scf3sifs2tf2süf3sy4f1tf2thf3töf3tü3fugf1umf2ur3fut2fübfü2r2f1v2f1w2f1zfz2afz2öfzu33ga_ga1c5gaiga1kgäs5gä4ugbi22g1cg1dag1dog1dögdt4gd1uge1cged4gef4g2el4g1gg3gegg4r2g1h4gh_gh2egh1lg2hugh1w2g1j4gl_2gls3glüg2ly2gn_gn2e2gng2gnp2gns2gnt2gnug2nüg2ny2gnzgo4a2goggo1igo1y2g1qg2r4gse2g4slgso2gsp4g4swg3sy2g1tg3tegt2sg3tügu1cgu2egu2t2gübgür1güs32g1v2g1w3haah1ahh1aph2as2h1c2heahe3x2hi_2hiahi2ehi2n2hio2hiuhlb4hld4hlg4hll2hlm2h2lohl2ö2h1mh2moh3möhm2sh2muh2nah2nähn2eh1nu2hodhoe42hoih2on2hoo2hop3hov1h2öhö2ch4örhr1chr3dhrf2hrg2h2rihrr4h3rüh2ryhrz2hss24h1th2thhto2h4tshtt4h3tühu1chu2n2hurhüs32h1vhvi23hyg3hyphz2o2ia_i4aai2ab2iaci2afi2ahi2aji2ak2iali2am2iani2apia1q2iasi3au2iavi1ämiär22i1bib2oic1cice1i1cii1clidt4i2dyie1ci1eii1exif3lif3rif2s2i1gi2gli3go2i1hi3heih3mih3nih3rihs2ih1wi1iei3igi1imi1inii3t2i1k4ikei2kni1la6ilbil2cilf22iloilv42im_2ime2imo2imt2imu2inein3f2inoi1nö2inp2inrin1ui1ny2i1oio1cio2dion2i2ori2oui2ovio2xi3ön2ip_i1pai1peiph2ip4li1pr2ips2ipu2i1qi1räir1cir2eir2i2irki1roi1rö2isb2iseis3ti2sü4itäi3töi3tü2itzium12i1v2i1w2i1xi2xai3xi2i1zi2zöja1c2jatje2aje1cje2gje2pje3wji2ajit3ji2vjoa3jo2iju2kjus32j1v3ka_ka1ck2adk2agka2o3kask1ähk1änkär2kby42k3cki1c3kir2kiz2k3j4kl_k2lek1lu2kly2k1mk2n2k3nek3nu3knü3komk2onk2os3kowkö2fk1ölk2r4kst44k1tk2thktt2k3tükt3zku1ckuh12kübkü1c2k1v2k1w3la_1lad2laf1lai3lao1lawlay1lä1c1läd2läf4lät2l1blb2slb2u2l1cl3cl4l1dld3rldt43le_2lec3ledle2e3leh2leple2u3lev2l1flf4ul3fü2l1glgd4l3go3liali1cl2ie3ligli3l2limli2o3liu4l1j2l1klk2l4l1lllb4llg4llk4ll5mlln22l1mlm1clm3plm3tlnd2l3nil1nul1nü3loklo2o2lox2lödlö2f4lög4löß2l1pl3palp2fl3pu2l1q4l1s4l1tl2thl6tsltt2l3tü1luf4luo2lur3lux2lüb5lüd2l1v2l3wly3c3lynly1oly3u2l1zl2zölz1wm1abmae2ma1f3mas3maßm4aymb4lmby4m3ch2m1dmd1ameb43mehme1o2meö3mesmeu1mi1c3mig3mil3mit2m1jm3kaml3cml3lml3s2m1mmmd2mmm2mm3pmm2smoa33moh3mom3mos3motmo1ymö2c4mökm1öl2m1pm2pfm3pu2m1q2m1sm3säm3scm3sem2süm3sy4m1tm2thm3tömtt2m3tümt3zmu1a3munm4us2müb3mün3müt2m1vmwa4my4s2m1z3na_n1af3nain1ar3nas3natn1au3näe3näs2näunby42n1cn2ck2n1dnd1cn2döndy33ne_2nec3nedn1efneg4ne2l3nenne2un2ew3nez2n1fnf2änff4n3finf4lnf2onf4rnf3s4n1gng3mn2gnn3hän3hen3hu3nian1idn4ie3niknin1n2ip2nitni3v3nix2n1k4n1nnn3fnng4n3ni3no_no1cn1of3nov3now3noz2nödn2ör2n1q6n1snsp4n3sy2n1tn3ton3tön4tsn3tun3tü1nu_1nud3nuenuf21nug1nuinu2n1nuo2nup2nur1nut1nuu1nux1nuz3nü_3nüs1nüt4n1w1ny_1nyhn1yo1nyr1nys1nyw2n1znz3so4aco4ado4aho2aro2aso4ato5au2obbob2e1objob1lo3caoc1co1ceo1cio1cko1cl2odrodt4o2ecoen12ofa2ofiof3l2ofo2oft2o1go3ghogs2o1hao1häo1heo1hio1hooh1soh3to1huoh1wo3ieo1imo1inoi2r2o1j2o1kok4n4okrokt4o1lao1läo1léol2io3loo1lu3olyoms2omy12ona2onä2onc2oneono1o1nuon3v1onyon3zoof2o1opo1oro1pao1pi2or_or1ao3räor1c4ore2orf2orh2orm2orq2orro3ru2osh2osio3sk2oso2o1to3tüoub4oug2o3uho3um2our2ouv2o1ü2ovi2ovo2o1wo3wiox2aox2eox3lo2xu1oxyo1yo2o1zoz2eo3ziöb2l2ö1cödi3öf3lög3lög3rö1heö1huö1keök3r3öl_öls2öm2sön2eö3niön2sö1nuö1peör1cör1oöru4ö2saö2spö2stö3su2ö1töt2höts2öze31pa_1paa1pacpag41pak1pap1pat1pau3päd3pär3päs2p1b2p3cpda41pe_pe2a1pedpef4pei11pel1pem1pen1pep3pet4pf_1pfäpff4pf3r2p1g4ph_ph2a2phä2phb4phd2phf4phg4phkph2l2phm2phn2phöph4r2phs2phz3pik1pilpi2o3pip3pispku22pl_3pläp4lo2p1n1p2opo1c3podpo2i3pokpo2wpo3xpö2c2p1ppp3lppt2p2r2p4rä2p1s4ps_p3sep2söp2st2p1tpt1ap3tep2thptt2ptü4pt3zpu1apub42puc2pur3put1püf2pülpün22p1v2p1w3py1pys4py3t2p1z1ra_r1abr2ad1raer2afr2alr2apr1arr2as2raß1rat1raür2ax4räf4räg2räh2rämrä2u2r1brbb2rb2orb2srb2ur1cer1cir1cl2r1dr2dördt43re_2reä3reg3rekre2u2reür1ew3rez2r1frf2u4r1gr1h42rh_2rha2rhä2rhö2rhsrid2r2ie3rigr2isr2itrix12r1j2r1krk4n4r1lr3larl2erl2örl3t4r1mrm2urnd4r3nern3frng2r3nirn1ör1nur1nür1nyro1c2rof3roir2onr1or4roß2rox2röf4rögr1ök4röpr1örrp4arp4erpf4r3porp3tr3pu2r1rrrb2rr1crr2or3ru4r1sr3sirs3lr3sor3sy4r1tr3tör4tsrtt4r3türt3zru1a3ruf4rug2rum3rut4ruz2rüb2r1v2r1w4r1xry2c2r1zrz2ö3sa_3saa3sai3sams1an3sat3säl2sc_2scj2scos2cr2scs2scusd4r3see3seh3seq3set2s1hsh2as3häsh3ns3hösh4rsib43sio2s1j4sk_4skbsk4lsk4n4skö4skss3läsl3bs3les3li4sna4snö3so_so4aso1c3sog3sol3somso3o3sos3sov3sow3sozsö2csö2fs1ös1sp22sp_s2pä2spls3pn2spt4spy2s1q6s1sss3l6st_s2ta2stb2stdst2e2stf2stg4sth2stj2stk4stl4stm2stns2to1stö2stp2stqs2trst2u1stü2stv2stwsu2nsu2s3suv3süc3sün4s3v2s1ws3was3we1s4ysyl12s1zsz2os3zü2ß1b2ß1f2ß1n2ß1w3ta_4taatah22tam3tas3tav3tax4täbtä1c4täd3täe3täg2täh4tämt1äptä2st2ät2täx4t1ct4ckt3clt3cr3te_2teh3ten3tes4th_th2e1thi2thk2thp2ths2thü2thvt2hy3tig3tik3tio3tip3tis3tiv2t1j4t3ltl4e3to_to1c3tod3tok3ton3too4toß3tow4töftö4l3tön4töß3töttpf42t1q2tr_3tritry14ts_ts1ot2söt3sy4t1tt3tit3tot3töttt4t3tut3tü2tub3tuc2tud3tue4tuf2tuh2tuk4tüb3tüf3tüm4t3v4t3wtwa21ty13typtys44t1ztz1ätz2öu1amu3auu1ayu1ämu1äu2u1bub2lub1ruc1cu1ceu1ciu1cl2u1d2u1eu2edu2eguen1u2ep2uffuf3luf3r2u1gugo3u2göu2gü2uh_uh1wu1ieu3iguk2au1keu1kiuk4nuk2öu1kuulb4ulg4u2lü1umf1umg1umk4umm1umr1umz4un_u3ne2unk1unruns21unt1unw2unzu3ofuos2u1pau3piu1pr2ur_u1raurd22ure2urfu1röur3purt2u3ruurü2u2sü2u1ß2u1tu3teuto1u3töu3tüu1ü22u1xux2eux2oux3tu1ya2u1z2übc2übdübe2üb3lüb3rüd3rüf3lü2gnüg3süh1aü1heüh1iüh1süh3tü1huüh1wül1aül2cül4eü1luün2sünt2ü1nuü1peü1piür1aürr2ür2süs2aü2stva1cva1sv4at2v1b2v1d1ve2ve3bve3cve3dve3gve3hve4ive3over1ves12veüve3v2v1g2v1hvi2cvig22vii2v1k2v1m2v1n3vol3voyvö2c2v1pv3revs2e2v3t2v1v2v1w2v1z1waa1wag1wah1walwa2p1was1wäh1wäl1wäswbu22w1c2w1dwe2a1weg1wehwe2i1wet2w1g2w3h1widwi2ewik21wil2w1k2w1l2w1mwn3s1wohwot21wöc2w1pw3ro2w1sws2t2w1twti21wucwul2wus21wühwül2wün32w1w1xa_1xae2x1bx1cex1chx1cl4x1d2xekxe2lx1emx2en3xes2x1f2x1g2x1hxib4xi1cxi3gxil1x3läx3le2x1m2x1nx1or4x1p2x1r4x1txt1äxt1uxu1axu2s2x1w3xy_3xys1yacy1äty1c2y1d4y2efy1f2ygi2yg2lyhr2y1i4y1k2yl3cynt2y1nuy1ofyom2y1ouypa2ype2y2pfy3phypo3y3riyrr2yse1y1t2yu2ry1z2za1c3zahz1anz1as2z3czdä1ze1e2z1h2z1j3zolzo2oz1orz1öl2z1qz3saz3shz3skz3sz2z1tz3töz3tüzu3azub4zud4zu3kzuz22züb2z1v4z1zzz2ö", + 5 : "_ab1a_abi4_ab3l_abo2_ack2_ag4n_ag4r_ag2u_ai2s_al2e_ang2_an3s_apo1_aps2_as3t_at4h_au3d_ät2s_by4t_dab4_de1i_de1s_dü1b_dys1_ei3k_eke2_enn2_er1e_erf4_er1i_es1p_et2s_eu3t_ext4_fe2i_fi2s_ga4t_ge3u_im2a_im5m_in3e_ink4_int6_inu1_ire3_is2a_jor3_ka2i_ki4e_kus2_li2f_ma3d_ma2i_me2e_ne4s_ni4e_nob4_nus2_ob1a_obe2_or2a_ort2_ozo4_pro1_ro4a_rü1b_sch4_sha2_te2e_te2f_te2s_ti2a_tid1_ti2s_to2w_umo2_un3d_un3e_un3g_un3s_ur2i_ut2a_ut3r_übe4_vo4r_wa2s_wi4e_wor2_ya4l_za2s_zi2e_zwe2aa2beaa2gr4a2araart4aas5tab2äuab1ebabe1eabei12abela3ber2abet2abew3abfiab1irab1it2ableab3liab4loa2blua2bo_ab2ofa2bon2abora3braa4brä2abrü2abs_abs2aab5scabst4ab3szab1uraby4t2ac1ca1cem2ach_ach1a2achba1che4achfa1chiach3lach3mach3na1choach3öach3ra4chta1chuach3ü2achvac1in2ada_ad2ag4adav1a2dä2ade_2aden4a3diad2obad3ru2ads2ad3stad3szad4tead4tra2elaa2eleae2o3aes5ta2faka2fana3faraf4ata2faua2fexaf2fl2af3lafo1saf3raaf3räaf3reaf3röaf2spag1abag1arag1auag2diag2drag2duage1i2agesag3gl1aggr2a2glag4laa4glöag4nuag4roagsa2ags3pag2th2a1haah4at2a1heahe1sa1h2iahin3ah2löahnt21ahorah1osa2h3öahr1aah3riaht3saian3aid2sai1e2aien3ai3g4a3ik_ai3keai3kuai2loa1indain4ea1ingai2saaiso2a3iv_aive3a3ivla3ivs2akal2akarak4at4a1kea2kefa2keu2a1ki2ak3lak4li2a1kr4akra3akroak3sh2akta2aktb2a1kua2kun4a3kü2ala_al1abal1afala2ga3lalal1ama2larala4s2alatal1aual1ämal2bralb3sal2däal2dral3dualen1ale2pale4talf4r3algi3almba2l1öal2ös1alphal2ufa2lumal1ural2zw2am2aamab4amad2ama3g2am4e4ame_a2meba3meta2mewa3mi_a3miea3mis2ammlammu2am3pr2am2sam3sa1amt_am4töam2tu2ana_2anabana3ca3nak2anam2ananan1äs2anbuan3ch2and_2andua3nee2anfi4ang_2angf2anghang1l2angoang1r2a3nian2id2ank_an3klank1rankt4an2ky2anmu3annäan1oda3nola3nos2anpr1ansä1ansc2ansk2ant_2anto1antr1antw2a1nuanu3s2anzb2anzg2anzs1anzü2anzwa1os3ao3t2a3ot_a2pefa3pelap2faa3pfla3phäa2pht2ap3la2pot3applap3pu2a3pua3ra_ar2ab2arb_4arba2arbiar2bl2arbr2arbt2arbu1ar1ca2reaa4rega2reha4reka3renare3uar2ewarf1rar2glar2gnar2iaar1ima3riuarm2äarn2e2a1roar1oba2rorar2rh2arsaarse32arsiar2st2artoart3r2artsar1ufar1uhar1umarwa2ar2zä2arze1arztas3aua2s1äa2sca4as2ea2seb2asisas1ora2s1pas2phas2pias2poa3spuas2stas3teas3tias3to2astraßen3at1abat2afat4agata3la3tama2tatat1aua2t1ä4ate_a2teb4atena2tep4atesat3ha3athl4a3ti4atorat3räat3reat2saat2seat2siat2soat3taatt3sa3tubatu2nat2zoau2draue2baue2sau2faauff43aufn4au1iau2isau3lüaun2eau1nua4unz2aup22ausc1ausd3ausf1ausg1auslau2so1ausr1ausü1ausz2aut_2aute1autoauz2wa3v4aawi3eax4am2a1yaa1yeuaysi1ä2b3lä1cheä1chiäch3lä2chrä1chuäck2eäf2fläge1iäge3sä2g3lä2g3räg4ra1ä2gy2ä3heähl1aähl2eäh3neäh3riä1is_ä1iskä2k3lä2k3rälbe2äl2bläl2p3ämt2eän5deän2dräne1sän2f52ängeän2glän2gr2ä3niänk2eän2kränk2säp2pläp2präp4stär4afäre2när2grärk2särm2särse2är4siär2stärt4eär2thär2zwä5s4eäse3tä2s1päss2eäs2stäs4träte2nät1obä2t3rät2saät2sääts3lät4trät2zwäu2bräude3äu3eläuf2eäug3läu2maäun2eäu1nuäu3seä3usgä3uskä3usnäu2trba2bl2babs2b1afbais2ba2kabak1lbak1rbal2a2b1amban2ab1ang2banlban3tb1anzbar3bbar3nba2scba2stbau3gbau1sba1yobben3bbe4pbb2lö2b3d4bde1sbe3anbe3arbe3asb2ebe1be1cbedi4be1eh3bef4be3g2beil2b2einbe3li1ben_ben3nbe1ra3be1sbes2abe1ur3b2ew2b1ex2b5f4bfal22b1g2bges42b5h2bhut2bi3akbibe2bie2sbik2abil2abi2lubin2ebi2o1bio3dbi3onbiri1bi3seb1isobi2spb2it_b2itebi2tu2b1k4b3lad3blatb3leb3blem3blenb4letb3leub2lie2bligb3lisb2litb4locb3los2blun3blut4b3n2bnis1bo5asb1ob3bo2blbo2brbo3d22b1ofbo3febo1is3bon_bond1bo2ne3bonsbo4räbor2sb1ortbo2scbo3thbo2xibö2b32b1p2bpa2gb4ra_b4rahbrä4u2bre_3brea2breg3bremb4rer2brigb4riob3rohb4ronb4rucbru4sbs3arbsat2b4särbs2äubs2cabs4cub3se_bse2bbsi4tbs2kubso2rbs2plb3stob3stöb3stübtal3btil4b4ts2bu2e3bu3libung4b2urgbu2sa2b3z22c1abca1chca2e3ca3g4cal3tca2pecar3ncas3tca1y2c1ch2ce2drcen3gcere3ce3sh2ceta2chab2chaf1chaoch1äs1chef4chei2chic2chl2ch2lech2lu4ch2m2chn42chobcho2fch1ohch2r44chrech3rh2chuf2chuh2chum1cka_2ckac1ckag2ckalcka4r2ckau2ckeh2ckexck1imck1in3ckis2ck3l2ck3nck1o22ck3rckt2eclet4co3chco2d2co3dicoff4co1itco2keco2lecol2oco2peco1racor3dco3reco4te1c4r2cte3ecti4octur6cu2p32d1ab2d1acdagi2dah3lda1ho3d4aida1inda1isdal2ada3löd1altdamo3d4ampd2an_d1ang2danw2d1apd2aph4dapp3darlda2rod3arrdar3sd1artda2rudas4tdat2a4datmdau3e2dauk2d1äh2d1äp2därzdä3us2d1b4dbu2cdco4r2d1d2ddar2de2adde3asde3b43de1cdeco3de1e4de3gldehe2de3hod2eicde2löd2en_dend2den3gd2enhde2nide1nude1ondepi2d4er_de3rude2sade2spde2sude1unde3us2dexpd2exz2d1f42d1g2d2ge_2d1h2d2hisdi4abdi2addi4amdi1cediet3dik2adin2adi2obdi2spdist2di2tadi2thdit3sdi2tudi3z22d1k44d1l2dli2f2d3m24d5n2dnis1d2obadob4ld2obrdole4doll22doped2opp2dorc2dordd2orp2dortd2os_dos3sdot6hdo3undö2l13d2ör2d3p2drag4d3rai2drädd4räh4dre_2dreg4drem2d3rhd4ri_d4ridd4ried4rifd4rikd4rild3robd3rocd4roid3roud5rubdrü1bd2sands1änd3seidse4td3shodso2rd2späds2peds2pods2pud2steds2tids2tud2sundta2dd5teadt3hodt5s2du1ardub3l2d1uh2dumd2dumf2dumg2dumld2ump2dumrd1umsdung42dunrdun2s2duntdus3t2d1v2e3a2beab3lea2drea2g4ea3gaea3gleakt2ea2laeam1oea2nae2anoe3ar_ea2rae3arre3arveas3se3athea5tre3aug2ebedebe2i2ebeleb2en2ebeteb3loeb2lö2eb2oebot2ebö2seb4rueb2s1ebse22e3caech1äe1chiech3lech3mech3ne1chuech1weci6a2eckt2e1clec1s4e3d2aed2dre3deiede2re3d2oeds2äed2suedu2se3dy3ee3a2eeb2lee2ceee1chee2ckeede3e1effeef4leef3see1imeel2ee1empeena2e2enäe2encee3nie2enoeen3see1rae1erde1erkee1röeert2e1erzee3s2ees3kee3taee2thee1u2e1e2xef1are2fate2fäue3fe_ef1emef2er2eff_1effief2flefi2s1efkue3fraef4rüef3soef3spe2fumege1ue2gloeg3nieg2thegus32e1ha2e1häeh2eceh2ele3hereh1läehle2eh3loeh3mue3holehr1äeh3rieh3sheh3übei2blei3de2eidn1eifrei3gl2eigt2eigu2eil_2eilbeil3d2eilne1impei4näein3kei3o2eip2fei3ree1irre2is_2eitäei3teei2theitt4e3ke_e3kene3kese3keye3k2lekt2oe3k2wela2cel1afela2h2elaoela4s2e1läel2da2ele_elea2ele2c2eleh2elei1eleke3lepe3leu2elevele2x1elf_el3feelf4l1elfm1elfte3lieel3klel3leelm2ael5nae2lofe2lolelon2el2öfelö2selto22e1luel1ure2lyaelz2eema2keme2se2mop3empfem2saem2stem3t21emule2n1a4ena_2enace3nade4naf4enahe4nak4enam4enaten1äu2ene_2enem2enen2enesenf2aenf2uen3geen2gl1engpe3ni_e3nice4nide3niee3nio2enise3nit2enive2nofen1ohe3nolen1one3noteno2w2e1nö1entd1entn2entü1entw1entz2enut4enwüeo2fee1on_e1onde1onfe1onle1onre1onse1opee1opfeop4te3or_e3orbe3orse3orweo1s2e3os_eo3ulepa2gep3leep2paep4plep2prept2aepu2se3ra_era2ge1raie2rake1rale1rape2rare1rasera2ße1rawe1razer1äher1ämerb2eer3brer3da1erdber3de4ere_er1ebere2l2eren2erer2ereserf2eerf4rerg3s2erhüe3ribe3rio2erk_erk3te3ro_er3oaer1ofer1ohe3rone3rose3rowerö2d2eröker3p4er3rä2errüers2aer3seers2ier3sker3sner3sper3sz4ertier3uzerü4bes3abes3ake3sceesch2es2eles2hues2ide2siles2ire4skees3kles3kue4skye3sote3spies3sces3se2essoe1stre1stues4tüetab4et1am3etapet4atet1ähet2enete2oet3hüeti2m2e3toeto2bets2pet3suett1aet2thet2zäet2zweu1a2eu2gaeugs4euil4eu1ineu2käe3um_e3umbe3umleun2eeu1o2eur2eeu3speust4eut2heu2zw4everewä2se2we_e3wirewi2se3witex3atex1er1exis2ext_ex2tu2e3xye3z2aezi2sf1abefab5sfa2drfaib4fa2ke2fanb2fanf2fanlf1anp2fanrfan3s2fanw2f1ap3farifa3shf3aug3f4avfa2xa2f1b22f3d4fdie2f2echfe2drfe2eife1emfef4lf4eief1eisfel3tf2em_fem4m2fempfe2näfen3gfe2nof1entf2er_fe1raf2eref2ertf1erwfe2st3fete2fexpff3arff1auffe2eff3eiffe2mff4enf2fexff4laff4läff4lof3fluf3flüff3roff3röffs3t4f3g2fge3s2f1h2fi3atfi4dsfien3fi3klfi2krfil3dfilg4fi3lif2inafi3nifin2sfi3olfi3rafis2afis2pfi3tu4f1k4f3ladf3lapf3länf4leef3lerf3li_flo2wf4luc2f3m22f3n2fni2sfob2l2f1offoli3fo2nafo2nu2f1opfo1ra3form2f1ök2f1ölför2s4f1p2f4racf5radfra4mf5rap2fre_f3recf3red2fregf3repf4reufri3dfri2e2frig1frisf3rocfro2sf3rotf2sanfs3arf4scefs4cofse4tf2sphfs1prfs3s4fs3thf4ta_f2tabft1afft1anft1arf3tatft3hoft1opft2s1ftsa2ftse4ft3stf2tumftwa4ft3z23f2uhfung42funt2gabfgab4r2gabz2gadlga1flga2kagal2ag4amo2ganbgan3d2ganh2ganlgans22ganwga1ny2garb2garc3gardg2arsga3ruga2saga2siga3spgas3sgat2a2gatmgat4rgau1cg2aukg1aus2g1äp2gärz2g1b2gber2gby4tgd1ing1d3rgd3s2ge3a2geb2ageb4rge1e2ge3ecge2esge1imge1irge2isge3lege3lügelz2ge3migem2uge3nagen3ggen3ngeo2rge1ouge3p4ge1ragerm4ge3sigest2ge5trge1ulge1ur2g1ex2g1f4gga4tg2g3lgg4log2g3n3gh2rgie3ggi2elgi2gugi3negi3tugi4us4g3k2g1labg1lac3glad3glätg2l4e2gle_3gleag3lecg3leg2glehg3len2glesg4lia2glib2glifg2lik4gling2lio2glisg2lizglo3gg2lom2g1luglu2t2g1m2g2n2ag4na_2gnacg4nat3g2näg3neh2gneug2nieg2nifg4nin3g2nogno1r2g1of2g1ohgol2a2gord2gorggo2s1go3stgo3th2g1p2g4rebg4remg4rerg3retg3revgri2e3grif2grig2groc2grohgron4g4rosgro4ug4ruf2grut4g2s1gsa2gg3salgs3angs3arg3s2cg4scagsch4g4scogs2ehgsen1gs3ergse4tgsi2dg3silg3spigs3plgsrü2gs5s4gs3tag3stog3stögs3trg3stugs3tügti2mg5t4rgu3am2guedguet42g1uhgu1is3gummgu4stgut1agut3h2g3z2hab2ahab2eh2absha1kl2haleh1alph1amth2an_h2andh4ann2hanr2hantha2plha2pr2harbh2ardhasi1h1äff2h3b22h3d4hdan2he2adhe3behe2blhe3brhed2ghe3dihee4she2fä2heffhe2frhe2fuhe3guh1eieh1eifh1eighe2im4heioh1eiwhe3lihe3lohe2lö3hemdhe3mi3hemmh2en_he2näheng22henihe2nohen3z4he2ohe3onhe3ophe3phherg22hermhe3roh1eröhert2he3thhet2ih2e2uheu3ghe1y22h3f4hfi2s2h3g2hget42h1h2hi2achi1ce2hi3dh2idehi2krh1infh1inhhi3nohi4onhi3or2hip1hi2phhi2pih2i2rhi3rahi3rihirn1hi3rohir2shis2ahi2sehis2phi2sthi1thhi3ti2h1k4h4lachla2nh1lash1lath3lädh1läsh1läuh3lebhle3eh3lerh3lesh3lexh2lieh2lifh2liph2lish2lith3lochl1ofhl1oph4lorh3löch2löshl3t2h3lufh3lukh1lüfh2mabh3magh3manh3marh4mäch4mähh4mälh4mäuh3me_hme1eh3menh4monhm3p4hm3sahms1phn1adh3namhn1anhn3d4h2nelhn3exh2nich2nidh2niehn1imhn1inh2niphn3k4h2norhnts2h2nuch2nulho2blho2efho4fa3hole4holo3holzhom2ehono3ho1rahor3dh1orgho3slho2spho4st2hot_ho3thh1o2xho1y2hö3ckhö2s1h3öst2h3p2hr1achr3adh1raih3räuh2rech3redh3refh3relh3rephre2th3revh3richri4eh3rinh2robh3rohh3rolh4ronh2rorh3rouhrs3khr2suhr4swhr2thh3ruhh4rübh2sanh2sauh2späh2sphh1stah1stoh2s1uh2t1ahta4nht2ash2tärht1ehhte2sh4thohtod1h3töpht4riht3röht2soht2sphtti2ht3z2hu2buhuko3hu2lähu2loh1umsh1unah1up_h1upshurg2hu3sahu2sohu2tihut2th4übsh3übuhvil4hwe1c2hy2thzug4iab4liaf4li3ak_i3akti5al_ia2läial3bial3dialk2i3allia2lui4amoian2ei3anni2anoi3anti3anzi3ar_ia2rai2ascia3shi2asiias3siast4i3at_i4ate1iatri3atsia3uni1är_i1ärsi1ät_i1ätaib1eiibe4nibi2ki3blai3blei2b1öi4bräich1aich1äi1chei1chiich3lich3mi1choi1chuich1wi3damid2ani2deiidni3i2dol2i2drie3a2ie2bäie2blie2ckie2drie1e2iel3di1ell2i1eni3en_i3enai3endi2enei3enfi3enhi3enji3enki3enmi3enni3enöi3enpi3enrien2sie1nui3envi3enwi3enzie1o2i2erei4erii1ernie2röies2pie3sui1ettieu2eie1unif1arif4atif1aui2fecife2iif2enif2flif4läi1flüif4rai1freif3seif3spif2taiga3iig1läig4nai4gnäig4noig4raig3säig4seig3soi2harihe1eihe4nii3a4i1i4si2is_i2käri3ki_ik1ini2k3lik3noiko3si2kölik3räik3reik1s2ik3soik3szikt2eikt3ri2kuni3kusi1lä1il2daild1oil2drile2hil1el2ill_2illsi1lu2i2lumi3lusim4ati2megi2meji2meki2mew1immo1impoimp4s1impuim2stin2afin3ami3napina4sin1äsin3do2indrin3eii3nelin1euine2x2ingain2gl4inhei3nie2inigin2ir2inis2inn_2innlin1odin1orino3tin3suint2hin3zwi2odaio3e4iof4li2o3hio3k4i3ol_i3om_i3omsi3on_ion3di2onyi2o1pio4pfi3opsi3opti3or_i3orci3orpi3orsi3ortio3s2i2osti3ot_i3otsi3oz_i1ö2ki1ös_ipen3i3perip3fa2i1piipi2sip2plip3pui1r2ai3radirat2ir2bli3ree2irek2i3réir2glirg4sir2he2irigir4mäir2no1ironiro2sirr2hir3seir3shir2sti3sacis2api2saui2scaise3eisi2ais1opis1pais1peis3sais2stis4töis4tüit1amit1ani3tatit1auit2ärität22itelite4ni2texi5thr1itiii5tocit3rei3truit2sait2soit1uhitut4it2zä2i3u2i2vebive4niwur2ix2emiz1apiz1auize2niz4erizo2bi2z1wja3nejani1ja1stje3najet3tjo2b1job3rjoni1jo1rajord2jo2scjou4lju2blju3nijur2ok3a2aka3ar2kabh2kabska1frka1inka3kak1allkalo5k3amakand4kan2ekank42kanlk1anska3nu2kanw3kara2karbk2ardk2argk2arkk2arskar3tkaru2k2arwka3sekasi1kas3s2kattk1auskäse32k3b4kbo4nkbu2s2k3d2k1effkefi4kege2ke2glk1einkei1skeit2ke2lake2läk4eltk2en_ke2no2keo2ke2plk2er_k2erck2erlkerz2k6es_ket3ske1up2k3f42k1g22k1h4kho3mki3a4ki3drki2elki3k4ki3liki3lok2imik2in_k2ing2kinhk2inik2innkin3ski3orkio4skis2pkist2ki3zi2k1k44kla_k4lar4kle_4kleh2klic2kligk2link3lipk2lir4klizk4lopklö2sk2lötkluf23knabk4neiko2al2kobjkoff4ko1i2kol4ako3leko4muko3nu2kop_ko1pe2kops2kopzko3riko2spko2stko3ta2k1ouko2wek1o2x2k1p2k4rawk4raz2kre_2kreg2k3rh2krib2krip3kris2krufkrü1bk2sanks3ark2sauks2änksch4ks3hak3sofks1paks2puks3s2k1stak1stek1stok1strk1stuk2s1uk3talkt1amkt1anktä3skte3ekt1eik2texkt3hokt1imk3topkt4rokt3s4kul2a4kulpkung42kuntku2roku2spkus3tku2sukür4s2k3z2kze3lla3ba2labb2labf2labg2labhlab2ol2abr3labu2labwla1celad2il1adl2ladm3ladul1advla2falaf3slaf3tla2gala2gnlago2l2akk2l1al4lall4lalpl2amil2amp2lanb2lanf2lanll1anp2lanslar3sla2ru4lasdla3se2lash2lasila2so2laspla2stlat2ala3telat2s1lauglawa41länd2läub2läuc2läue1läufl3bacl3blälb3lel2blil3blolb3salb3selb4sklb3splbs6tl3chel3chilch3llch3rlch3ülch1wlda2gld1all3daml3dasl3datld1auld1ärl2deil2dexldo2rld2osld2ö2l2dreld4rüld3sald3stld3thle2adle2bl4leddle3dele3eilef2ale2gäle2glleg4r4lehs4leht3lei_l2eicl2eidl2eitlel3s4lemplem3sl2en_le2näl2enfle3nil2enkle1os3lepa3lepf3leprl2er_lerb4lerk2ler3tl1erzles2ele3shlesi1le3skles2t4lesw2lesy2leto4leud3leut2lexe2lexzl3fahlfe1elf3lolf2trlfur1lga3tlg3rel3gro2l1h23lhi_li3acli3akli3arlia1slibi34lickli4ds3lie_lig4nli3keli2krlil2a3limolin2al1inv2linzli4om3lis_4lishli2spliss2lit2ali3telit2hli3tu2lixili2zalk3lolk4nelk4ralk2s1lk3sälks3tl3k2ülla2nl3lapll1aullch4ll3d4ll2emll2esl2lexll3l2ll1obl3lowl2löfll5t4llu2fll1urll3z2lme2el2möllmpf4lms2tlna4rl3n4e2lobjl2obrlo1fllof4rloi4rlol2a2lopf2loptlo1ralo4rä2lorcl1ordlo3ro3lorq3los_lo4sa3loselo2ta2l1ovlo2velö2b3l1öhrlp3t42l3r2lre1slrut4lrü1bl3sacl2saul3sexlsho2ls2pels2pols3s2lst2al2stels4trls2tuls1uml2sunlsu3sl2tabltag4lt1aklt1ehlt2enlt3hol3thul2toblt1oplto2wlt1öll3törlt1ösl3trält3relt3sclt2solt1uhlu1anluba2lubs2lu2drlu2es2lufflu2golu2gu2l1uhlume22lumf2lumll2umpl1umsl1umw1lu2n2lunt2lunwl1urnl1urt2luselu2splu4stlu2tälüh1lly1ar2lymply3nolzo2flz3t2m2abe2mabk2mabs2mabtma2cima3damal3dmalu4mam3m2manbm2anfm2anh2manlm4ann2manzma2orm2app2marb4marrm1arzmat4cma3unma1yom1ähnmä1i2m1ärg2m1b2mbe2em3b4rm2d1äm2deimds2em2e1cmedi32medyme1efmega1m2eil3meldmell2m2en_m2ens2meou3mer_me1rame2ro3mersmes1ame4sä4mesume3th2m1ex2m1f4mfi4l4m1g22m1h4mi2admi3akmibi1mi3damie3lmi2ermi4etmi2kimi2ku4milzmi3nimi1nu3mir_mi3ra3miri3mirs3mirwmi2samise1mi2tami2th4mitz4m1k44m1l2m2mabmm1eimm3simm3spm2mummm2unmmül22m3n22mobj3m2odmo2dr4mog_mo2i32mol_mom2e3m2onmo3ne3mo2o2moptmo1ramork4m1o2xmp2flm3ponmp3ta2m3r2m2sanm4sapms1asm2saumsch2m4scom4sexmso2rm2späms2poms2pums3s2m3stoms4trms4tüms1ummt1abmt1akm3tammt1armt3homti2smt1ösm4ts1mt2samt2semt1um2m3uhmu3la2mulsmu3nim4unkmunt24munzmu3ra3musimu2spmus3tmu2sumuts32m1w2mwel42n1abna2bä4nabg4nabhna2bln2abona2br4nabt3n2ac4naddn2ade3n2ag3n2ahn3ahnnai2en3aign3air2n1akna2ka3nakon2al_na2län4alena2lu2nalyn4am_3name3namon1an_4nanb2nanh2nani4nank2nanl3nannna3non1anp2nanr2nanw5nar_2narcn2ard4narg3narin2ark2narmn2arpn2as_4naspn4ata4natmnats14natt4naufn3aug5naui3n2äcn1ähn2n1ännä2scn2äss2n3b4nbe3nnbes4nbu2snch3mnd2agndat2nd1aun2dein2dobndo1cnd1opnd1orn2drönd3thndt4rn2dü4ne2apne3asne3atne2bl3necane1ckne2de2nee32neff3nehm2n1ein2eid4neifne2ke3nelanel3bne3lin2em_n4en_n2enbn2encn2enhne2nin2enjnen3kne2non2ensn2envn2enwne2obne1os2nepfn2er_ne1ranere2n1erfn1erh3nerin1erkne2ron2erpn2erv3n2esn4es_nes4cnes1one2thneu1cneu3g2n1exnf1aknfo1snft2on2f1ung1adng3d4n3gefn3gerng3g4ng3hun2glon2glöng3neng1orngs3cng3tsn2gum2n1h4n3hann3harn3haunhe2rnib4lni2deni3drnie3bni1elnig2anig3rni3klni2kr3n2ilnim2o2ninfni2obni3okni3olni3ra3n2isni2tinit4sni3tunk2amn2kähnke2cnk2lonk2lunk4nan2knenk2öfn2köl2n3l22n1m4n2naunne2snn2exn2nofnn3scnn3senn2thnn1ur3nobl2no2dno3drn3olen2on_3nor_nor2a2norc3norh3norm3norsn1ortno3shno2spno2täno2tr2nö2f2n3p4npa2gnpro1npsy32n3r2n3savns2cans1ebnse2tn3sexn3siln2sphn2sponsrü2ns3s2ns2tins2tunst2ün2styns2umnta3mnt4atnt1ämnte2bnte1ent1ehnt2enn3ternteu3nte3vn3thrnti3cntmo2nt3sants2onts2pnts2tntum4nt3z21nu1anu3arnubi11nu1cnu2esnu2fe2n1uhnu3k4n2um_2numf2numg3numm2numr2nuna2nunt3nu2snu3scnu3senu3slnus1pnu2ta2nü4bnür1c2n1v2n3ver2nymun2zadn2zann2zärnz1ecn2zornz2öln2zwö2o3a2o4abioa3deo4a3ioa3ke2obano3bar2obe_2obea2obewobi4t2o3boo3briob3skobs2p2o3buobu2s2o3bü2oby4och1ao1cheoch3loch3moch1ooch3roch1socht2o1chuoch1wo3ckeo3ckio2ckoo3d2aod2dro3debo3dexo3diro3divo2donodo4so2dre2o3du2o1e2o4e3so2e3to3et_o3etsof1amof1auof2eno3feroffs2of2fuof1laof4läof4löof3raof3räof4rüofs1aof3thoga3dog2loo3g4nog3spohl1aoh3looh2lu3ohngoh2ni1ohnmo2h3öohr1aoh1ro2o1hyo1i2do2isco1ismoiss2oi1thoki2ook1läo2labol2arol4drole3eoler2ole3sol2faol2flolf1rol2glol2grol2klolk3rol2of1olymol2zwo2mabo2mebome3co2melo2mepom2esom3maom3pfomtu3ona2bo2naeo3nalon1apon2auonbe3one2ion3f2ong4rong3s4o3nion3k2onli4o3nodono3sons1aonsi2ons3lons1pont2hont3s2onukoor3foo4skoo2tr2o1ö2opab4opa5so1peco1peiope4no1pes2opf_op2fäo2pfeopf1l4oph2o3pheopin2op3li2o3poop4plop2pr2o1pr1opsiop3szo1rad2orak2oral3oramo1rasor1ätorb2l2orcaor2ce4orda1ordnor2do2ordr2ords2ordwore2hor1eror3gaor2glor2gn4oril2oritork2aork2s2o1ro2o1röorr4aor3rh2ors2or3shor3szor4töor2ufo2r3üo2ryaos3ados4anosa1sos4co2o3seose3eose2no3shoo4skaos3keo4skios2lo2os1pos2saos4säost1aos3to2osu42o3syo2tebote2s4ot2hot4heo2throt2inotli2ot4olot2oroto1so3traot2saot3scots1pot2thou2ceou2geou3glouri4outu4ove3so3wecoy1s4ozon1ö2bleö2b3röb2s3öch1lö2chröch2söcht4öd2stöf2flöh3riö3ig_ö2ko3öl1a2öl1eiöl1emöl4enöl1imöl1inöl3laöl1o2öl3saöl3szö2l1uölz2wönn2eön3scön3spöpf3lör3a2ör2drör2glör2klörs2eört2eör2trös2stös3teös2thös3trö2t3aöt2scöt2trözes4pa3dapa2drpa2elpa3ghpa1ho1pala1paläpa3li2paltpank42panlpant2papi23para1parc2parg1paro2parppa4stpat4cp3auf3pä2cpä2to2p1d2pea4rpech1pe2en2peicpe1im1peitpel3dpena4pe1ra1perl3pero5perspe3sape2stp2fabp2fadp2fafpf3aip2feipf3lopf3lup2forpf1ra2pfs2pf3slpf3sz2pf3tpgra2p3hopph3t2phu4s2p1hüpi2a3pias4p4id2pi2el3pierpi3lepin2epi3oipi2pepi3ri4pisopi1thpit2s2p1k2pkur11p2l43p4lap5la_p5lad2ple_ple1cp4legp4lem2pligp4likp4liz2p3lu2p1m2po3b42p3ohpo3id3poin3p4olpo3li2pondpo2plpo3pt2pornpor3spos2epo3ta3potepö2blp2p1hpp1läp2plep2pripp3sa1prak1prax1präd1präg3präm3präs2pre_2prec1pred1preipri4e2prig1p4ro3prob2proc3prod3prog3proj3prot1prüf2prünps4anp3s2hps1idps2pop3staps2tup3stü3p2syps2zept2abpt3atpte4lp4tospto2wp2t3rpt3s2pt1um3p2typu2dr2p1uh2pundpun2s2puntput2spwa4r1queura2abr3aalra3ar2rabd2rabf2rabgra2br2rabs2rabt1rabyra1cer2ackr4ad_rada23radf3radlrad5tra2gn4raht2raic1rake3rakür4al_ral3bra3le2ralgr4aliralk2r4alsra2lu3ralyr2ammr2an_4ranc2ranf2ranl2ranr2rapfr2ara2rarbr2arkr2arpr4as_ras2ar4at_r3atlrat4r4rau_4raud2rauf2raug3raum3r2äd3rän_3räni3räns2r1ärr2är_rä3raräu2s4räutr2bakr3blärb2lörb4rirb3serbs1orb3sprby4tr1chirch3lrch3mrch3rrch1wr2ck1r2dafrd2amr4dapr2deir3denrd1itr2dobr3donrd1osrd4rird3tard3thrdwa4re2amre3asreb1rre2bür2ech4reddre1elre1er3refe4reff3refl3refo5reg_rehl4r2ei_r2eie2reigr1einre3larel2ere3lorelu2r4em_r2emi4remur4en_r2enare2näre2nir2enzre3or3repe3repo4reppr1erfr1ergr1erkr1erlrer2nr2eror1erör1ertre2sa3rese3reso2ress3rest3resu2reulre2wi4rezirf2äurf2esrf4lör3flür3forrf4rurf4rürf2sarf2targ2abrg2anr2gnor2ha_r3herr2hoe2rholrhu2sri3amria1sri3atri1ceri1elri1euri2frrif3s5rig_5rige5rigjrig1l4rigrrik1lr2imb2rimprim2s2rink3rinn2rintr1inv4r1irris2ari3so3rissri2strit4r5riturk2amr2kährk4lork2lur3krirk2sprk1strk2tark1uhrk2umrku2nrle2ar3lecrle2ir3letr3l2irli2sr3l2orm2ärrm3d2r3me_r2meorm2esrmo1srm3sarmt2arna2brna4nr2naurn3drr4nefrn2eirne2nr5nesrn2etr4nexr3nodr1nötrn1ur2robj2robsro3e4roh1lro1irro3lerol3s2roly4rom_4romm4romt3ronnrons2ro1nyro3phr2oraro3shros2p3routrö2du1r2öh1r2öl3römir2ös_r2öse2r1p2r2plirpro1rps3trr2abrr2arrr1ämr3r2er4rewrr2herrik2rro3mrr2strr2thr3r2ürrü1brs3abrs2anrs3arr3shors2klr4skor4skrr4skurs4nor4sobrs2p4rs3s2rs2thrs2tir3stor3störs2tur3swirtal2rt1amrt1ärrten1r2thirto1prt1orr5trirt2sorube2ru2drru2fa3ruinru1is4rumfru2mi4ruml4rumz2rund4runn4runt2runwru3pr4r3urru2ra5ruroru2siru2strut3hru2zwrü1ch4rümmrz2anr2zarr2zasrz1idrz1oprz3terz2thr3zwä2s1absa2besa2blsa2br4sabss1adm3safasa2fe3safi3sagasag4nsa2grsail42s1aksa2ka3saki3sakr4sakt3salo5samms1amps2an_s3anbs2and3sani2s1apsa2po3sapr2s1ar3saris3arrs1aspsat2a4satmsa2trsa3tss1a4u3sau_3sauc3saue3saum3saur2s3avsa2vos3ähns1ält2s1äm2s1är3s2ät3säul2säuß4s3b4sba4n2scams2cans2cap2scar2s1ce4sch_s4chä4schb4schc2schd2schf2schg2schh2schks4chls4chö2schp2schq4schss4chu3schü2schv2schz4s3cl4s3d2sde1sseb4rse1ecse2glseg4rse3heseh1lseh1sseh3ts1ein3s2eks2el_s2elsse2nä3senkse2noseo2rs4er_3seraser3gs1erh3seriseru25ses_se3su2s1exse2xe4sexpsex3t4s3f4sflo44s3g2sha2k1shass3h2e3shi_3shidshi4rs3hoc4shof3shop3showsi2ad2siat5si1cs2ido3s4iesien3sie2ssi1f43s4igsig4nsi2kisik1lsi2krsik3ssi2ku3silosin1ision43s2issi2sasis3s3s2itsit3rsi3tusiv1asive3si2vr2s1k24skams3kar4skass4keps2kifs2kig4skirski1s3skiz4skom4skor4skow4sk3t2s1l23slal4slans2laws3lo_s3loe2s3m22s3n4snab4so3baso3et3softso3la3s2onsone2so2ny2sopf3sor_s1orc3sorsso4rus4os_2s1ox2s1ök2spaa2spaks2pan2spap2spaus2paz3späh2spärs2pee2spel2spet4s3pf2sphas3phe2sphispi2k4spil3spio4spip4spis4spla4splä2spod2spogs2poi2spok4spol4spr_3spru2s3ps2spun2spup3spur4sput4s3r4sret3srü2ds5safs3sagss1ajs3sals3s2äs4sces4scoss1ecssoi4ss2poss3s4sst2ass2thss2tis3stü4sta_3staast2ac2stag3stah2stak2stax3s2tä4stäg2st3c2steas2ted4stee2stem4stens2tep2ster4stes2stetst3ev4stexs4thäs4this2thu2stia2stibs2ticsti2e2stig2stiks2til2stio2stis2stiv2sto_s3tob1stof4ston4stoo1stoß4stou2stow2stoz2stöt1stru1stub4stuc2stue3stuf3stuhstu2n3stüt4st3zsu1ansuba24subi3su1c2s1uhsu1issul2asul2isult23summ3sun_su4nes1unf4sunt3s2upsup3psu2ras1urtsu3sasus1esu3shsu3sisus3s2sü4bsü2d1sweh24swie4swilsy4n34s3zas2zess2zis4s3zu4s3zwßen3gße2niße2noße2roßer3tßig4s2ß1s25taan4tab_2tabf2tabg2tabh2tabkta2br4tabsta2bü2tabw2tabz2t1ac3tacut1adatadi33taf_4tafft1afg3t2agt3agotai2ltai4r2takzta2latal3d3talo2talt3tameta2mit1amt3tan_2tanbta3ne4tanf2tang3tanit2ank4tanlt2anot1ansta2nuta3or2tapfta2pl2tarb4tark2taro2tartta2ruta3sata2tht3atlt4atmt1auk3taum4tägyt1ämt3tänzt2är_tä2ru4tätt2täuß4t3b2t3chat3chetch2itch3lt2chutch1w4t3d4tdun2te2a22teakte3alte3an3tebat2ech2teckte1emte2es2teff3teha3tehät2eieteik43teil5tel_3telatelb43telg3telk5teln3telp5tels3tem_tem3st6en_ten3ate2nät4enbten3gt4enhte2nit4enjt4enmten3n3terct4erit4erot3erötert2teru2t2estte2su3tet2t2et_4teth4tetl3teuf3teumte1unte2vite1xa4texp3text2texz4t1f4tfi2l4t1g2tger22th4at2hagt3hait2hak2t3hä3thea2thebt2hect2hekt2hem1then3theot2hest2heut2hik4th3l4th3m2th3n1t2hot3hoft3horthou24t3hö2thub4thunti2ad3tib4ti1cetieg42tiehti1elti1etti1eu3tif_ti1fr4tift3tilgti2lötil3stilt4ti2lut2imiti3nat1inbt1infti1nuti3orti3plti1rhti2sptium2tive3ti2za4t3k46t5li4t3m2tmal24t5n4tnes2to4asto5at4tobjtob2ltode2toi4rto3la3tole4tolz2tomg3topo2topt3tor_to1ra4torct1ord3toret1orgto2rö3torsto2rut2orwto3sc3toseto4sktos2p4toss3totrtots23t4outo3un3töch4t1ökt1öst4t3p21t2r45tra_3trac3trag3trak3tral4traß5träc3träg4träs4träß4treb4trec3tref4treg2trekt4remt4rert4rett4reut3rev2trez5t4ré2t3rh4tric2tridt4riptri2x3tro_3troe3tront4rop3troyt3röc2tröh3trös3trua4truktrum2t4rübt4rügts1adts1alt2sants1ast2sauts1emts3krtso2rt3sout2spät2spht2spots3s4t1st4ts2tut2s1u1tsubtt1abtt2actt1aktt2altta1st3telttes1tto1stt3rutt3rütts1ptt2untu3antuf2etuff3tul2at2um_3tun_3tune3tungt1up_tu2rätur1c3turntu2rotu4rutu2satu2sotu3ta3tüch3tür_tür1c3türe3türg4tütztwi4ety2pat2za2tz1agtz1altz1artz1aut3ze_t2zortz2thtz1wätz1witz1wuu1a2bu1a2cuad4ru1al_u1albu1alfu1alru1alsu1altua2luu1ansu3ar_u1arsua3saua2thuat2iubau1u3b4iu2bopub3räu2bübuch1auch1äu1cheu1chiuch3luch3much3nu1chuuch3üuch1wu2ckiu3d2au2donud3rau3druue2ckue2enu2elaue2leueli4ue2miue2näue2niue2nou2ereu3errue2tau3fahuf1akuf3aru3fasuf1au2ufe_uff4luffs4u2fobufo2ruf3säuf4sou2fumug1afug1akuga4sug1auug3d2ug3huu2g1lug3lou4gluu2g3nug1orug3roug3seug3siuh1lauh1läuh2liuhme4uhr1auh3riuhrt4uh2ruuh4rüui2chui1emu4igeu1in_u3käuu1k2lu1k4ruk2tauku2sul1abul1amula2sul1ämul2drule4nule2tu2lexul3f4uli2kul3kaul2knull2aull3sulo2iul1orul2sauls3z2ultaul3thult3sul2vrulz2wuma4rum2enum1ir1um3lumm2aum2suum3t2um2un2una_1unabun3acun4alun3at1unda1undd1undf2undg1undn1undv1undzune2bune2hung5hun2idunik4un2imuni2r2unisunks23unkuunna2uno4run2os2uns_un3se1unsiun3skun3spun3taun3trunt3s2untuu1o2bu3or_u3orsu1os_uote2u1pe2uper1up2faup2plup2prupt1oup4tru2rabu2rar2u1räur1änurch1ur3diure4nurf3turi2cur1imurk2s4u1rou3roluro1sur4swur2zaur2zäur2ziur2zou3sepus3klu4skous3ocu3sohus1ouu2spou2spuus2thus3tru1stuus2uru2tärut1egute2lut2esut2etu4tevutfi4ut2heu2thiu2thuuto3cut4orutos4ut3rüuts2put3teutts2ut2zo2u1u2uufe22u1v4u2ve_uz1weuz3z4übe3cüber3ü1cheüch3lüd3a4üd1o4üd3s2üdsa1üd3t4ü2f1aüfer2üf2flü2f1iüf2toü2g3lüg4stühla2ühl2eüh3moüh3neühn2süh1roühs2püh4thül2laül2loül2löü2n1aün2daün2dründ3sünen3ün2faün2frünn2sün3scün3seün3spün2zaüp2plür2flür2frür3scür3seür3spürt2hüse3hüse3lüse1süss2eüs2stü2t3rüt2s1üt2tr2v1abval2s2vang2varb2v1auve3arveit4ve3lave3leve3live3love3mave3muven2cve3neve3nive3növer3averd2vere2verf4verg4ve3river3kvert2ver3uve3tavete1ve3trve3x22v1f4vi3arvi2elvi2ervima2vi4navin2svi3savise4vi2spvis2u2v1l22v1obvo3gavo2gu2v1opvo2r1vor3avor3dvor3evor3gvo3ri2v3rav4ree2v3rov1stav3s2zvu2et2vumfwa5gewa3gowai2b2walb2walmwa3nawa3sawa3sewa3sh2wängwäs2c2w1b2we2bawe2blweb3swe2e4weed3we2fl2weiewe3niwerd2we2röwer2s1wesewe2spwe4stwet2s2w1eywie3lwin2e2wing1wi4rwi2sp1wisswi3th1wo1c1wolfwor3aw3s2kwun2s4wur_wur2s2xa2b1x2adxa1fl1x2agx3a2mx2anz1x2asx1e4gx2er_x2erexers22x3euxich2xide2xie3lxil2axi2loxi2lux2is1xis2cxi2sexis3sxi2su2x1k22x2l22x3s2x2t1axt2asx2tänxtfi4xt3s2x3turx1u2n2y1aby1al_y1a2myan2gy1anky2chiych3nyen4ny2erey2es_yes2pye2thygie5yke3nyk3s2y4le_yli4nyl3s2y2l1uyma4tym3p4ympi1y2n1oyno4dyon4iy1ontyp3any4p3sy3r2eyri2ayri1ey3r4oys2any3s2cy3s2hy4s3lysme3ys2poys1prys3t4y3s2zy2te_y2tesy3to1yure3zab3lz1a2dza3de2z1afza3grzale32z1amza2na3zani2zarb2zarcz1arm3zaubz3aug3zaun2z1äc3z2äh2z1ämz1ärgz1ärm4z3b4zbü1b2z3d2zdan2zeik4zelu25zen_zen3nze2no3zentz2er_zerk2z2ernzers2ze2säze3sczes1ezes1ize2spze2tr2z1ex2z1f42z1g2z2henzhir3zi3arzid3rzil2ezin2ezi2o3zi3opzirk22z3k42z1l22z1m2zme2e2z3n42z1ob2z1ofzo2gl2z1oh2zopezo2ri2z3ot2zö2f2z3p42z3r24z1s2zt3hozt3s2zu4chzudi4zu2elzu3f4zu3gl2zumf2zumg2zumlzun2ezung42zuntz1urkzu3s4zu5t2zür1cz1wac4zwahz1war2zwas4zwäl2zweg2zwet4zwirz2wit2z1woz1wörz1wur2z1wüz3z4az3z2o", + 6 : "_ab3ol_ab1or_akt2a_al3br_alt3s_ampe4_an3d2_angs4_ans2p_ans2t_an3th_ari1e_ark2a_ar2sc_as4ta_au2f3_au4s3_be3ra_boge2_da2r1_darm1_de2al_de1o2_des2e_de3sk_des2t_do2mo_do1pe_dorf1_ehe1i_ei3e2_ei4na_ei2sp_ei4st_ei4tr_el2bi_elb3s_em3m2_end3s_enns3_en2t3_en4tr_er2da_ere3c_es3ta_est2h_es3to_es5tr_eu3g4_eve4r_flug1_for2t_fu2sc_ge3ne_guss1_he3fe_he3ri_inn2e_kamp2_kle2i_kopf1_le4ar_li4tu_ma3la_ma2st_mel2a_mi4t1_näs1c_no4th_oper4_oste2_ost3r_poka2_ram3s_reli1_ri2as_rö2s1_se3ck_sen3s_ser2u_se2t1_si4te_ski1e_tal2e_ta2to_te3no_te4st_ti5ta_tite4_to4pl_tro2s_tu3ri_uf2e2_ufer1_un3a2_uni4t_uns4t_uro2p_ur3s2_wah4l4a1a2naa2r1aaar3f4aat4s3ab1aufab1eilabe2laab1erkab1erzab1ins1a2blaab5lag1a2bläab4le_3a2blö2absarab3s2iab3s2p2abst_ab3ste1abteia1chalach3auach1eia3cho_ach1orach3su4ach1wa1ckarack2ena2ckinack2seack3slacon4na3d2abad3amaa2d1an3a4dapade2aladefi4a2deina2deri4ade1sades4sadi3enad4res2ad2t1a2f1eca2fentaf1erlaf4fluaf3s2aaf3s2haf2t1aaf2teiaf2t3raf2tura2f3urag1a2da3gen_age4naage2saage4si3a2gitag4ne_a2g3rea2g3riag4samag4setag4spoag3staag3stea2gundahl3a2ahl3szah4n1aah3r2eahrta2ain3spai3s2e2a3kam1a2kazaken2nak3rauak5tan2aktikak2t3r2aktstal1ageal3amealami5al3ampal1anaal1ansal1anza3lar_a3lareal2armal3arral1asial1assal3augal2b1lalb3lial2bohalb3rualds2ta4l1eha2l1eia2l1ela2lengal1epoal1erl3alermal1etaal1etha2l1eua4leur3a2lexal2glial1insa2linvalk1ar1alkohalk3s2alks4tal2labal2laual3lesal2lobalo2gaal1opeal1orc3alpe_al3sklal3sunal4takal3tamal2treal2trial2troalt2seal1umb2ambiqame2n1amer2aa2meriame3rua4mesh2a3mirami3taami3ti2ammalam2meiam2minam3stram2t1aam2t1äam4tel2amtemam2t3ram4treanadi3an1algan3dacande2san2dexand2suand1uran3e2can2ei_an3eifan1e4kan1ethanft5san3f2uang1ar3angeb2angiean2gla4angs_3a4nima4ninsan2keian4klöank3ra3an3naann2aban3n2ea2n1orans2enan2seuan3skrans1pa1anspran3s2z1antei1anthran2tro2anwet1anzeian2zwiar3abtara3d2a2r3al2a2rara2r1auar2bauar2bec2arbenar2bre2arbs2ar2droar1effar1ehra2reinar2erfa2reria2rerlar1intar2kalar2knear2korar4kriark1s4ark3saark3shar2lesar2nana2r1oparr3hear3s2har3staar3t2ear2thear3t2iartin2ar6triar2z1was1alaa3schea3schia2schma3schua3s2hiasin2gaska3sa3skopas3panas3s2aas3s2eas3s2ias2s1pass3tias3stras3stu2as3taas4tauas4tofast3räaswa2s3a2sylat1apfa2tausat3eiga2teliate2ru4athe1atil4sati2st4atmusatra4tat3romat4setat2s1pat4takat4tauat2teiatz1eratz3t2at2z1w2au1a2au2bliau2bloauf1an2aufe_2aufehauf1er2aufs_4augehaule2sau2malau2m1oaum3p2aum3s6au3n4aau2nio2au3r2au2sauau2spraus3s22auts4ava3t4äche1eäch2späch4stä2d1iaäft4s3äg3str2äh3t4äl2l1aämi3enäne2n1äng3seän2k3län2s1cänse3häp2s1cä2r3a2ä2r1eiär1intär2k3lärt2s3äse3g2äser2iäskop2ä3s2kräs6s1cä4s3t2ä4t1a2ät2e1iätein2ät2s1iät2s1pät2s3täum4s52ä3us_äu2s1pbacks4b1a2drbah2nuba2k1iba2krabal3th3b2andban2drba3n2eban4klban2kr2b1ansbar3deba2reibar2enbar3zwba3s2abau3sp3b2ä1cbbens2bb3lerbbru2cbe2delbe2erkbe1erlbe1etabei1f4bei3k4bei3labe1indbei3scbeis2ebei1stbeit2sbe3lasbe3lecbe3leibe2letbel3label3szbel3t4ben3arbe3nei3ben3gbe3n2iben2sebenst4ben2sub1ents2bentwben3unben3z2ber3ambe2ranbere4sber3nab1erntbe2robbe3ropbe3rumbe3slobes2pobess4ebes3szbe2tapbe3thabien3sbi2ke_bi2kes2b1inb2b1infbin3gl2b1intbi2solbi2s5tb2it2abla3b4b2lancb2latt2b3law3ble2a2b3legb3leinb3leseble3sz2blich3blickbling43blitzbo3ch2bo2e3ibon2debo1r2abo2reibo4rigbo4s3pbot2st2b3radb4ra3k2b3refb3reif2b3repbri2er2b3rolbrust3bru2thb2s1adb3sandb3sel_bse2n1b3s2esb2s1ofb3s2pubst3acbst1akbs3tätbst3erb2stipb4stodbs4trib4stübb2s1unbu2chibul2la2b3umkbu3r4ibus1erbu2sinbu2s1pbu2s1ubzeit1carri1ca3t4hcha2ck2ch1akch2anb3chancch1ang4chanz4char_1characha2sc3chato4chatuch1ärm3chef_3chefi3chefsch1eimcher3ach1ess2cheta1ch1iachi3na4chind2chinf2chinhch1insch1int1chiruch1offch1orcchre3s1chron2chunt2ck3an4ckeffck1ehe4ck1eick1entcke2rack2ereck1erhck2ern2ckero2ck1id2ckunt2ck1upcon2nec1s4trcussi43d2abäda2ben3d2ablda2bredab4rüdach3ada2chodach1sdal3b2d1amma2d1amt2d1ana2dangedan4kldan2kr2d1ans2dantwd2anz_4danzida2r3a2darb2dar2mada3s2hdat4e2da3teidate4n4d3atl4daush2d1ämt2d1änd2d1ängde3a2tde4ca_de2cka2d1eff2d1ehrdein2ddein2sdel1ändel1ec2delek2delem2delfmdelle2de2lopde3lordel5scdel2sodel3t4dem2ar2d1empden3th2dentwdera2bde1radde2rapder2bl2derdbderer33derieder3m2de4ruhde4rumde3sacdesa2gde4samdes2äcde2sebde4sehde2seide4setde2sinde2sordes3s2de2sto2d1etwde1urlde2xisdha1s4di3e2ddi3enidie2thdige4sdil2s52d1imb2d1ind2d1inf2d1inh2d1ins2d1intdion3sdi4re_di2rendi2ris2d1irl2d1isrdi4t3rdle2ra2d1o2fdo2mardo5n4adoni1e2d1opfdor2fädor2fldor2fr2d1orgdo2riedor2tadost1rdö2s1c3d4ra_2d3rad2drahm3d4ramd3rand2d3rät2d3räud4rea_d4reas3d4rehd4reiv4d3ren2d3rep4d3rer4dres_d4resc3d4ria2d5ricd5riegd4rin_3d4rit4dritu2d3rod2d3rot2d3rovdrö2s13d4ruc2d3ruh2d5rutd2sau2d2s1efds2eigd2serhds1errd3s2had2s1imds2infd3skuld2s1opds1orids1pasd2sprods3tabd4stagd4stead3steid4stemds4tilds4tipds1umsds2zend4theidtran2du1alvdu2bli2d1ufe2d1umb2d3umkd2ums_2d1umvdund2a2d1unfdun3kedun2kl2d1url2dursadwest3ea3dereadli4e3aleieat4e2eater1eat3s2e3au2feau1ste3b2akeb3lereb4leue3blieeb3reiebs3paeb3staeb3strebu2t12e3cheech1eie2cho_e2ch3rech3taech1uheck3seede2aledens1edi4aled2s1oed2s1pee2choeed3s2ee2lekee3lenee4nage1e2pie1erbtee3r2eeere2see4reteer2öse1ertree3r2uee4tateewa4re2f1adef1anae2fente3f4lu2e3f2oef3reaef3rolef3romef2tanege2raeg4saleg4stoegung4eh1ache3h2aleh2auseh1eff1e2hepehe1raeh1inteh1lameh2linehl2seehr1a2eh2reiehre3seh1ro2ehr1obehr1ofeh1stee2hunt2ei3a2ei2bareibu4tei2choei2d1aei3danei3dra4eien33eifrüeig2er2eigew2eigrueik2arei3kauei2lareilen1eil3f41eilzuei2moreim2plei2n1aei4nasein3dr2einduei4nelei2neu2einfoein3g2e1initein4szei2sa4eis2peeis4thei1stoei2sumei2tabei2tanei2tarei2troeit3umek1s4tek5trie2l1akel4amiel4ampel1ansel1anze2l1apel3ariel1asiel1aspel2ast3elbiseld3s22e3lebe2l1el1e2leme3lem_el1empel1erdel1erfel1erkel1erl2eles2el1esse2l1ideli2neel1itael3lanel5le_el3linell3spel1opee2l1orelo2riel2sumelte2kel2t3re2l1umel3useel2zwae2m1ad3emanze3m2ene2m1imem1intemi3tiemma3uem2meiem3pflem2spren4amee4nanden3angen3areen2ascen3atte3nauee2n1ären4ce_en2dalend3siend3szend2umen1e2ce4neine2n1elene4lee2nerfe4nerhe4nerk4enerne4nerz1engad3engagen3g2ien3gloeng3see2n1ineni3seen3k2üeno2mae2n1openost3en1ö2den3sacen2sauen2sebens2el1ensemensen1en3ska2enstoent4agen2teb1entfa3entgaen2thi3entlaenü1ste1o2b1e3p2f41episo1e2pocep2tale3rad_er3admeraf4aera1frer3aicer3alleran3de3raneer3anfe2ranher3anmer3apfe3rarie2rathe3ratie2ratme1rauber3aueerau2fer3augerb4sper3chl2erdece3recher1effer1eige2reiner1ele2e3reme3renae3renz4erer_e4rerl4ererne3reroer1errer1erse2rerter1erwer1esser1eul4erfür1ergolergs4t1erhabe2riat4e3ric4e3rieer1inber1inker1inter1ita1erklä2erkreern1oser1o2be2r1ope4ro2rer3smoert2aker2thoert4raerts2eeruf4ser1u4mer1underung4er1unser3untes2aches3anze3s2ases3cape3schaes3evaes2hares3intes2kates4loges2ortes2sau4essemessi2aes2sofes2spues3stres3stuest1ake1stare1state3stele1stile2stipes4trie2s1umes3umse4teinet3haleti2tae4t1ofetons4e2treset4riget2tabet2teiet2t3ret4troett3szetwa4retze4seu2esceu4glae3um2seum4sceums1peum3steu4neie3un2geu2nioeun3ka3eu3roeu1staeu1stoeu1stre2velae2vent1e2xeme2x1inex2tinfa2benfa2chof1aderfa3l2afal2klfal3tefalt2sfan2gr2f1ankf1an3zfar2br2f3arcfarr3s3f4art2f3arzfa3s4afa2to32f1auff1ausb2f1ärmfeatu42f1eckfe1inifek2tafe2l1afel2drfe2lesfe2l1ofen3safer2anfe2rauferde3fer2erf1erfaf2erl_f4erpaf2ers_fest1afest3rfeu4ruf2f3efffe1inf3f4räff3shoffs4trfid3scfi2kinfik1o2fi2kobfi2lesfi4linfil2ipfin3sp2f1intfi2s5tfit1o2fi2tor3f4läc2f5läd2f3läu2f3leb3f6limfli4ne2f5lon1f4lop1f4lot1f4lug4f3orgfo3rinfor4stfor2thfor3tu2f1o2xf3rand1f4ränfreik2frein42f3ricf4risc1f4ronfro2nafs1allfs4ammf2s1asf2sauff2sausf2sautfs1e2bf2s1emf2s1erf2si2df2s1o2f3spanf3s2plf2sprefs2prif2sprofs2pruf2stasf3steif2stipf3st4rf2s1unf2t1alft1e2hft1eigft1eisf4theif2t3rof2t3röf3t4ruft4samft3s2cft4sehfts3elfts2tift1url2f1unffun2klfun2ko2f1unmfu4re_fus2safus2stfzu4gaga2b5l2ga2dr2g1amtgan2gagan2grg3anla3g2ano2g1armga3r2og1arti2g1arzga2sorga4spega4sprgas4taga4ste2g1auf2g1autg2d1aug2d1erge3g2l2g1eifge2in_gein2sge2intgein2vgei3shgelb1rge5lehgell2age3lorgels2tgel3szge3lumge4namge4nargen1ebge3necgen3szgen3th2gentwge2rabger2erger3noge1r2öge3r2ug2e1s23ge3scges4pige3steges3thge3t2a2getapge3t4ugge2ne3g2het3g2hiegi3alogi2e1igie1stgi2me_gi4mesgi2met2g1indgin2ga2g1insgi3t2ag2lade2g1lag3glanz2gläuf2g3leb4g3lerg3lese3g2lid3g2lie3g2lit3g2loa3g2lobg3loch3g4lok3g2lop3g2lotgne2tr4g3notgoa3li2gonis2g1ope2g1opfg2o1ragra2bigra2bl2gradl2g3rah2g3rak2g3räu2g5re_2g3recg4re2eg3reit2g3ric2g3röh2g3rui2g3rum3g4rup2g3rüc3g4rüng3s2ahg4saltgs3amags3augg4s3cegs4chig4s3crg3sel_gs3elig3selngs5erkg4setags4pieg4spings2pitgsrat4g3stang3starg4s3täg5stämg3stelg1steugst2heg3stirgs3tocg4stolgs3topgst4rig4sturgs4tücgu1an_gu1ant2g1u2fgu1ins2g1unfg2ung_gunge2g2un4s2gunt22g1urlgurt3sgu2s3agus2spgus2stha2choha2delha4dinh1adle2h2al_ha2lauhal2bahalb3rhal2lahal2sthand3shan2krh4a3rah1arm_h2armehar2thh1arti2ha3sahat5t2h1aukthau2sahau2sc2hautohau2trhä3usphe1choh1echthe3ckehe2e3lhe2fanhe2f3lhe3friheim3phei4muheine2h1einkhe1ismhe1isthel1eche3lenhe4lof4h1emphend2she2nethenst2hen5trh1entshe2ral2heraphe3rasherb4she2relh1erfüh1erkeher3thher2zwhe1stahe2tapheter2he3t4she1x4ahfell1hi2angh1i4dihi3enshier1ihiers2hil2frh1induhin2enhi3n2ihin3n2hin3s22hi3rehl1anzh1lauth5len_hlen3ghl2ennhle2rahl1erghl1erwh4lerzh4lesihl1indh3listhlo2reh3losihl2sanhl2serhl3skuhl3slohme1inhmen2shme2rahn3eighn3einhne4n1hne4pfh3nerlh3nerzhn3s2khn1unfho2ch3ho2ckahock3tho2f3rhol1au4holdyhol3g4ho4lor3hol3sh1o2lyho2mecho2medho4seihotli42ho2w1h1raneh3rechh4rei_h3reich3r2enhr2erghr2erkhr2ermhr2erzh4rickh4rineh4rinhh4risth4romeh4romihr2sauhr2serhr4sethr2tabhr2tanhr2torhrt3rihr2trohrt2sahrt2sehr1umsh2s1ech3s2exh2s1ofhs2penhs2porh2spräh2sprohst2anh1stechst2heh1s2tih2storh1s4trhst3rih1stunhs2ungh3t2alht3aneh3tankh4tasyht3a2tht1e2ch2t1efhte2heh2teifh2temph2t1euh2t1exh4theihthe3uh2t1inh2tolyh2torgh4trefh2t3ruh2t3rühts2tihu2b1ahu2b3lhu4b3rhu2h1ahu2h1ihuk3t4hu2l3ahu2lerhu2lethu3m2ahung4shu3ni1hus4sahus2sphu2tabhu3t2hhutz1ihühne4h2wallh1weibhy2pe_i4a3g2ia2l1ai3aleiial3laia2lorial3t4ial3z2ia2nali3and2ia3p2fi2a3spi3a4tai3at4hib2blii2beigi2beisibela2iben3ai2blisib3renib4stei2bunki2buntibu2s1ich1eii2chini3chloi2ch3ri3ck2eid2ab4i2d1au1i2deeidel2äide3soide3sp1i2dio1idol_i3d2scid2s1pie2breie2choie2fauief3f4ie2f3lie2froie4g5lie3g4nie2g3riegs3cie3lasiel3auiel1ecielo4biel3sziel3taiena2bi3e2näien1ebie3neri3en3gi3e2noien3scien3siiens2kien3spien3szier3a2ie2rapie3resi3ereuierin3ier3k2i3ern_iers2tier3teies2spie1staie2t1aie4t1oie2triiet2seiet3zwifens2if1ergif1erhi1f4lai1frauif4reii1f4rüif2topift3szig2absig1artiga1s4ige4naig1erzi2g1imig3reiig4salig3sprig4stoig4stöig3strig3stüigung4i2h1ami2h1umik1amtik1anzik1artik3atti2k1aui2k1eiike2l1ik1erfi2kindi3k4läi2k3raik2trei2l3abi2l1acil1a2di2l1akil1ansil1aspi2l1auil3ausild2eril2doril1e2cil1eheil1einil2f3lilf4s3ilie4ni2l1ipi3lip_i3lipsil3l2ail3l2iil2makil2mauil2mini2l1oril3t2hilung4i2manwima2tri2melei2melfi4meshi2metiim2meiim1orgim3pseim3staimt3s2in3a2ci4nacki2n1adin2arain2arsi2n3auin2dalin2dan1indexind4riin3drü1indusin1ehein2erhi4neskine3un1info_1infosing1af1inhab2inhar2inhauin2i3dini3krini3sei3nitzin2nor1inntain3olsino1s2in1ö2dins2aminsch2in2seb2insenin3skr1insta1insufin3s2z1integin3t4rin5trii3n2umin3unzinvil4io2i3dio2naui3ons3ion4stiore4nipi3elipi3en1i2rakir2k3lirli4nir2makir2mauir2mumir2narirpla4irt2stiru2s1isage2is3arei2s1äni2schmis1chyi2s3crise3haise3hiise2n1is2endisen3si2serhiser2uis2hasi2s1idi2s1of3i2soti2sparis1picis2piti2sprois4sauis3stais3stoiss3tris3stuis2sumis4tabis4tamist2anis4teliste4nistes3is4tocis5törist4raist3reisum3pit1ab_ital1ait1altit2an_it1arti3tauci4t1axi2t1äsi2t1eii4teigit2eili4teinite2lai4tepoi2t1idit2innitmen2i2t1ofit3rafit3rasit3rauit3räuit3ricit3romit4ronit3runit2speit2stoit2tebit4triitt2spi2t1umi2tunsit1urgitzes4it2z1wi2v1akiv1angi2v1eiiv1elti2v1urizei3ci2z1irjahr4sja3l2ajean2sjekto2jek2trje4s3tje2t1aje2t3hje2t3rjet3s2jugen2jut2e1kab2blka2ben2kabla2kabläka3b4r2k1abt2k3adaka1f4lkaf3t2kaken42kala_ka2lanka3leikal2kakal2krkal4trkan2alka2nau2kanda2k1angk2ans_k2anz_2k1apfka3r2i2k1armk2arp3kar2pfk2artaka2s3tka3tanka3t4hka4t3r4kaufrkau3t22kautok1ä2mikä2s1ckdamp22k1e1cke2he_kehr2s2k1eic2k1eig2keinhkel1acke3lagkel1aukel3b4ke2lenkell4e2k1empken3au2kenläkens2kken3szk2enteken3thk2entrk2entu2kentwke1radk2erkok1e2rok2ers_ke2selke4t1ake2t3h2k1e2xki1f4lki1f4r2k1intkis4to4k1lack4leidk3lem_2k3lerkle2ra2k3leukle3usk2lisc2klistklit2s2k3locklo2i3klost4klung42k1lüc2k5nerkno4bl2k5norkoh3lukol2k5ko3n2ekon3s4ko1r2a2k1orckot3s22k3radk3rats2kraum2k3rät2k3rec2k3refk3reick3reih2k3rick3ries3k4ronks1e2bk2s1emk2sentks1erlk2s1idk2s1ink2s1o2k3s2peks2pork1s2tik2stork2sträk2stumks2zenk2t1adkt1aktkta4rek2t1auk2tempk2tentkte3ruk2t1idkt1insk2t1ofkt1opekt4rankt3rask4trefktro1skt3runk2tuns2k1uhrku3l2eku3l2i2k3umlkum2s1kun4s4kunst32k1up_kur2blku2reikuri2ekur2spkur2stlab4ralab4ri2l3absla2ce_la2gio2la1hola2k1ila1k4lla3min1lammf2l1amtlamt4sla4munl1analla2nau3l2andlan2gl2lanhäl2anhe4lanli2l3ann4lansä2lantrlan2zwlap4pll3artila2saulast1ola4tel2l3athl2auf_lau2fol2aufz2lausl2lausr2lauto2l1ähnlä2s1cl4betal2b1idlb2latl4bre_lb3ritlbst3elb4stol2b3uflbzei2l3d2acl2d1akld1amml2da2rld3arild1arml2delel3der_ld1erpl2d1idl2d1iml2dranl3d4rul2d1umle2chile2gaulei2br4l1eigl2ein_l2eindl2eine2leinkl2eintl4eistlei2talekt2a2lektr3l2ela3lemesle4nad2lendul2e2nolen3szl1ents4lentzlen2zil2e1rale2ragle2raul1erfol2erfrl2erfül2erkal2erkol2erlel4ers_lers2klers2tl2erzales2amle3serleste3le1stole2tat2le3thlet4tule3u2f2leurole2xislfang3l2f1ecl4feisl3f4läl3f4lulf3ramlgen2alge3ral2getilian2gli3chili2ckali3d2ali2deo2l1idolid3scli3enelien3slie2stli2grelik2spli3m2alin3alli3narli2nefli2nehli2nepli2nes2l1inflings52l1inh2l1injlink2sli2noll2ins_l2insal2insc2linsp2linst2l1intli3os_li2p3ali3s2a2l1islli2tallit1s2lit3szlizei3lk1alpl3k2anl3kar_lken3tl3k4lul2k3rol2k3rulk4ställ1abbll1affll1aktl3l2alll3amall2anwll1anzll1armll3augl2lausl2l1ämll1echlle3enl2l1efll1eiml3len_llen3gl3ler_lle2ral2lerzll1imbll1impll1insl2l1ofll1opfl3lor_l3lorel2l1oull3s2kll2sprllti2mllt5s2l2marclm1auslm1indlm1inslm3stelm3s2zln3are3l2ob_lob4ril1o2felo2gaulo3h2e2l1ohrlo2k3rl1o2lylo2minlo2n1olo3renlo4skelo2speloss2elo4stelo3thaloti4o2l3öfelpe2n3l2p1holrat4sl3s2all2sannl3sarel2s1ecl2s1emls1erels1ergl2serhls1erlls2logl3s2pil2sprol3s2pulstab6ls4tafl3stecl3steil3stell4stemls2tiel2stitls2zenlt1a2mlt3andlt1angl3tarblt1artl2t1aultbau1lt3elil5ten_lter3alt2erglt4erölte2thl2t1eul4theiltimo4l2t1ofl4t3ötltra3llt3räult4rielt3roclt3rosl2t3röl2t1umltu2ri4lu4b32l1ufelu2g1alu4g3llu2g3rlug3salug3splu1id_lu1is_2l1una2l1unf2l1unilu2s1ulu2t1alu4teglu2toplu4t3rl2z3acl3z2anlz2erklz1indlz2wecm2ab4rma2d4rma4d2sma2ge_ma2gebma2gefma2gegma2gekma2gepma2getma2gevma2gew2m1aggma3g4n2m1agomai4se2m1aktmal1akma2lanma2lauma3lermali1emal3lo2malltma2nauman3d2ma2net2mansa2mansä2mansc2mantwmar3g2maro3dma3r2uma2tanma2telma5trimat3semat3sp2mausg4m1ändmä3t4rm2d1ummedie4mee2n12m1eif2m1eig3meistme3lamme2lekme2lermelet42melf_mel2semel5t4mena2bme3nalmen3armen3aumen3glme3normen4skmen2somen3ta2mentnmer2er3merinme2sal4meser2me3shmes2stmeste2me1stome3t2amie3drmi2e1imien3smie2romie4timi2karmi3l2amilch1mild4s2m1impmin2enmin2eumin2ga3min2omi2t1rmit3s2mit5sami5tsumi2t1umk5re_m2m1akm2m1almm1angmm1anzm2m1aumme4namme2samm1inbmm1infmm1inhmm1insmm1intmmi3scmm3stamm3strmmüll1m4nesimode3smo2galmo2k1lmon2s3mon3su2m1opemo2rar2m1orcmor2drmo2rermos4tampf3limpf1ormp3strms3andm4s1efms1erwms1inims1orim2spedm2spotm2sprom4stagm3stelm3s2tims5träm3s2tumt3aremt1eltm2t1eum2t1immtmen2m2t3romt2sprmt1urtmu3cke4m3unfmu4s1amu2s1omut1aumut2stmvoll14n3absna2ch1nach3s4na2drna1f4rna2gemna2h1a3n2aldna2letnal3lanalmo2na2lopnal2phn2als_nal3t4n4amenna3m4n2n1amtnamt4sn1and24n1ang2n1ans2nantrnap2sina2r1an2arle4n3artna3r2unasyl2na3t4hnat4sanat4sc3n2aul4nausb4nausgn2auso4nauss4nausw2n1ä2mnär4s53nä1umnbe2inn2d1akn2danlnd1annnde2sendi2a3ndo2ben2d3ren2drobnd3rolnd3rosn2druind2sornd2spr2n1ebnne3ein4n1ehr3neigtnek3t42n1ele5neleb4nelek4nelemne3lennel4la3ne3lu2n1embn1e2mi2n3emp2n1emsnen3a2n1endgnen3einenen14nengb4nengs4nengtnens4enen3skn1entb4nentn5nentrn1ents4nentzne2n3u2n1epone2posne2ranne2rapne2raun1erbine2reb2nerfü3nergrn2erlin1ermän2ern_ne1rösn2ert_n1ertrne2rup2n1erzne3sannesi1ene3skane2s1pne1stanes3tine2tadne2tapn1etatne2taunet3han1e2tunet2zi2n1eupnfalt4nf5linnft4s3ng2absn2g1acn2g1akng2anfng1anzn2g1äln3g2enngen2an3gläsn2glicngrab6ng3ratng3rocngs3panich1sni3de_nie4n3ni3eneni1eronifes3ni2grenig4spni2kalni2karni3ker4n1imp3n2in_n2in4a4n3ind4n1inhni2nor2n1insn2ins_4ninse4n1int2n1invni2s1eni2s1pni3spinis3s4ni2s1uni3t4rni3tscnitts1n2k3adn2k1akn3k2aln2kansn2kausn2k1ärnk4ergnk1inhnk3lennk3lesn2klienk3lunn2k3ronks2eink3s2znk2taknk2tannkt1itnk4topnk2trunmen2snna2ben2nadan2n1annnen3gnn2erhnn2erknne2rönner2znnes1enne4stnn1o2rnn3s2pn2n1ufno2blano2leu3n2opano2radno1rakno3ral3n2os_n2ostenost1r2nostvno3tabno2telno3t3hno4tha2n1o2x4n1ö4lnräu3snre3sznrö2s1n2sangn2santn2sausn2s1änns1e2dns1entn2s1epns1erfns1ergn2serhns1ersnsfi4lnsho2fn2simpnsi4tensi2trns2kaln2s1opn2spatns2peins2penn3s2pins4piens3ponn2sprän4spronst1akn3starn3statns4tornstü1bn2s1unns2ungns4unrns4unsn4s3zint3absn3t2alnt1angnt2arbnt1arknt2armn2t1äunte3aunt1ebente3g6n2teignt4enent4ernnt4ersnt4ertnt2hern2t3hon3t4hunti3kln2tinfntini1nt2insn3ti1tntmen2nto3ment3recn5trepnt4rign5tropn2t3rünt4saunt2sto3n4tu_ntu2ra2n3umb2n1ums2n3umz3nung_n3ungl2n1uninu4t3rn2z1aun2z1ännzdi1snzi2ganzig4snz1inin2zurkn2z1wan2z1wän2z1wuoa3cheoa3chioa4k1lo4a3lao4a3mioanne43oa3seo3b2al2o3b2äob3ein2o3b2iob3iteo2b3li2o3bloo2b3reob3s2hob2staocha2boche4boch1eioch3ö2och3teochu2fo2ckarock2erock3szodein3ode2n1odene4ode3sp2o3diaof1a2co2f1eiof2f1a1offizof2f5lof2f3r2o1f1rof4samof2speof2sprof2s1uof2teio2g1abog1alaog1ango2g1eiogi2erog1steohen3sohl3auoh3lecohl1eioh3lemoh3lenoh3lepohls2eoh2n1ooho2laoh1o2poh4rinoimmu4oka2laokale43o2kelok2s1po2l1akolars2ol1aufol4damol1eieol1eisol2fraoli3k4ol2kreol2lakol2lelolo3p2ol1ortol2strol2z1aol2zinom2anwom1arto2m1auo2m1eio3men_o2meruom1erzomiet1om1ingom1orgo4munto2narbon3ausone2n3onens2on1ergon1eröo3netton3g2lon2i3do4nikro4n1imon3ingonlo2con3n2eo2nokeon1orconsa2gon4samon2sebonse2lonst2hon3t2aoo2k3lo2p3adop3aktopa2leop2f3aop3fahopf3laop1flüopi5a4op5lago2p3le1op3t4or3a2bor4altor2ando2ranhor3arbor3attor1ändor2baror2dauor2deuor2ditor2dumore4aso2r1efor1eigo2reino2rerfor1ethor2fleorf3s42orgetor3g2h2orgiaorgi1eor3gle2o3rico3rier4orin1or5ne_or3s4aor2täror2tefor2theor2torort3reo4r3un2o3s2ao3scheo2s1eio3s2hi2os2kl2os2koo3s2poos2seios2s3oos4sonos2s3pos2s3tosta2bos4teios2t3hos3tilost3räost3reost3ufo3s2zeota2goo5tarko3tarto2t1auot3augotei4not4em3otemp2ot5helo4t3hiot3hosot1opfoto2rao2t3reot3rinot4spaots2peot2sprot2t3rot4triou1f4lou4le_o3undsou3s2ioviso3owe2r11o2xido1y2enöbe2laöbe4liöh3l2eöl2k3löl2naröl2ungöp4s3tö2r3ecö2r1eiör2ergö2rerlör2f3lö2r1imörner2ör3s2kö2schaö2schlö2schwö2s1eiös2s1cöte4n3pa1f4rpa1k4lpak2topala3tpa2narpa3neipa2neu3pa2nopan3sl3panz4pa5regpa5rek1park_par2klpar2kr1partn1partypar3z2pa3s2ppat4e2pa5t4rpa3unipä3ckepä2t3hpät3s4pekt4spe2letpe2lexpell2apell4epen3dape4nenpe2n1o3pensipen3z2per2an1pere2per4nape2robperwa4pes3s2p2f1akpf1ansp2fa4rpf3arepf3armp2f1au4p3fe_pf1eimpf1einp3fen_p2fentp3fer_pf2erwp3f2esp2f3läpf3leipf3lie2p1heiphen3dphen3sphi2ka2phthepi3as_pi3chlpiela2ping3s3pinsepi3onu3pirinpi3t2aplan3gpo2laupo4lorpo1o2bpo1ralpo1raupo4stapo4stäpo2stopos6trpo2t1upp3anlppe2n1p2p1f4p3p2hopp5lanp2p3rap2p3repre2e13preis2p3rer3p4res1prinz2prosspro1stp3steap3stelp3s2tipt3albp4t3ecp4t1eip4telept1in1pto3mept1urspul2sppu2s3t2r3aacra2barrab2blr2aber1r4abi2r3abwra2chura2dam2radapraf3arra2ferra3gle3r2ahmrail4l2r3airra2krera2kro2raktira2la2ral3abr3alar3r4aldral3larall2e2rallgr3alp_2ralper3al3trama3srambi2ra2mer1r2ami2r1amtramt4sr4andar4anderand3sr4aner1rangirani1eran2kr2r1anm2r1anpr2ans_r2ansp2rantr2r3anw3rareirar3f42r3arz2rato_rat2st3raub_rau2mi3rausc2rausgrau2spraut5srä2s1c3rätser2b1abrbal3arba3rerb1artrb1aufrb1echr4belär3b2larbla2dr2ble_rb3lerrb2linrb4seirb3skarb4stärb3strr1che_r1chenrch1s2rch3sprch3tar3d2acr2d1akr2d1alrdani1rd1antrd1anzrd2ei_rden3drde3rerde3sprdi3a2rdia4lrdo2berd3ratre2altre3at_re3atsre2b1are2b1lreb3ra4rechs2reck_2recki2reditre2hacre2h1ire2h1orei4bl4reifrrei3gareim2p4reingr3eink4reinr4re2ke2r1elbre3lei2r1elf2r1elt4rempfrena2bre3nal3rendiren3drren4gl2rengpr1ense2rentw3r4er_2r1erbr2erbr2r1erdr2erki2rerlö2r1ermre2robr2erse2rerspr2erte2rertr2r1erzrer5zer2erzy3r4es_ress2ere1stare2thyreu3g2re3uni2r1eurrewa4rrf1ältr2fentrf3licrf3linrf2s1ärf2s3trf3t4rr2g1ahr2g1akrge4anrge2blr2getor2glanr2gleur2gligr2g1obr2gregr2gresr2gretrg3rinrg3s2prgs4tr3r4he_3r4henrho2i3rib2blri1cha2ridolrie2frriene4rien3srie2nuri1er_ri4ereri2f1ari2ferri2f1orim4scr2i3na2r1indri3n4erine1i2r1infrin2foring3lrin2gr2r1inh2rinitr1innu2r1insrin4sorin2spr2inva2rinve3risikri4s1pri3t2irit2trr3klaur2klisrk5nebr2k5nurk3räurk3rinrk2s1erk3shirk2tinrk2t3rrk3trark4trirk1unirlös3srl2s1prl3ster3m2agrma2larm1ansrm1anzrm1a2pr2maphr2m1efr2mider2m1imrm3starm3umsrn2andrn3anirn2a2rrn3arern3arirn3eifr4nerfr4nerkr4n1inr2n1opr2n1orrn3s2ärn3s2prn3s2zrn3t2ero2bei3rock_r2o3deroh3na3r2ohrro2madro2merror3alro2ratro2reiro2r1oror3thro3s2iro3smorost1rro4tagrote3iro2thoro4trirots2orot2taro3t2uro3untrö2b3lrpe2rerrer4srre2strr2n3ar2r3obrr3stur4samprs3anprs3antrsch2lr3schur3schwr2seinrse2n1rs2endrse4ners1erers1erörs1ersrs1erzrs1etars2kalrs2kanrs2kiers2kisr4s1opr4sordr2s3phrs2tecr3stier2stinr2stiprs4tobr4stotr3s4trr3s4türtals1rt1angrt1annrt1antrt1anzr2t1arrte1e2rt4eifr2telfr2temort1ersrt3holrt2humr2t1idr2tinfrto2rir4trakrt3recrt1rosrtrü2crt2sparts2pert2sprru2ckurude2aruf2s32r1uhrru1insru2m3ar2ums_2r1unar2unde2r1unf2runglrun2kr2r1unl2r1unmru2r1erus4stru3staru2t3rrü1benrwun3srz1a2cr5zenerz1engr3z2ofrzug2u3sabetsa3blesach3t2s1ada2s3affsa1f4r3s2al_sal2se2s1alt3s2alz4s1amnsam2tos2an2cs4and_3sang_2s3anh2s3anl2s3anssan4sk2s3anw3s4ar_3s2ara4s3arb3s2ard3s2ars4sartisa4ru24s3ath4s3atlsauri1s3ausw2s1änd3sänge2schak2schao3sche_2schefsch2en3sches4schexschi4es4chim3schis2schmö2schn_2schoxschs2e4sch3tscht2ascht4rsch2up3s4cop3sco4rsda3mese3at_s1echtsee3igseein2se1er_se1erö2s1effse2galse4helse2hinseh3rese2hüb2s1ei_2s1eig2seinb4seing2seinh4seink2seinl2seinn4seinr2seinw4s1eis3s2eitse2l1ase3ladsela2gse3lamsel1ec4selem2self_s3elixse2l3ösel3szsel3trs4e3ma2s1emp3s2en_se4nagsen3gl3s2enise4nob3s2enss2ent_s2enti2sentw2sentzse2n3use5refser2ers2erfrs3erfüs2ergr2serhöse2robs2ers_2sersas4ert_s2ertase3rum3s4ervse2selse1stase2tatse1u2n3s2ha_4s3hansho4resi2achsi3am_si3enesi1errsi3gnusi2g3rsig4stsi2k1äsik3t42s1immsi3n4a2s1ind2s1infsing1asin3ghsin2gr4s1inhsini1e2s1inq2s1ins2s1int4s1invsi2s1esi2s1osi2s1psi2tausi2tra3skala4skanz3s2ki_3s2kik3skulpsler3s3s4lipsli4tu4s5not2s1o2bs1o2he4sohng2s1ohr4so2lyson3auson3säso1ral2s3ordso2rei4s1ostso3unt2s1ö2l2spara2sparo3sparuspe3p42sperls2perr2spers3s2pez3s2plis3p4lu4s3poss2potts2pracs2pran2sprax2spräm4spräs2spred2spres2sprob2sprüfsrat2ssrö2s1ssa3bos2sanos4sansss2antss3attsse3hass1erös3s2essse3tass1offs2s1opss1oriss2pens2spros3stelss4tipss2turss1ums2stabb3s4tad3staff2stale2stalkst1alpst1ami4stan_sta4na3stand2stani2stans2stanws4tar_4staris3tat_2stauf2staum3staur2staus4stälts4tänd5stätts3täus4s5te_3s2tegste2gr3s4tehs2te2i3steig4steil1s2tel2stel_2steln2stels4stem_s5ten_st4ens4stermste4sts4teti3s2teu1steue4steufs2t3ho2stie_s2tiegs2tiel2stien3s2tif3s4tims4tinfs3tinnst1ins1stitu2sto3d4stod_s4toffs4t3om2stopo2stor_2store2storg2storis3tort2stose4stote2stöch2strad2strag4strai4strak2stral5straß2strua2strug3struk2strup2st3t43s4tud2stumt2stun_4stunn2stuntstu3rest3url2sturn2s3tus2stüch2stür_2stüre2stürg2stürs3s2tyl3su2b3su2cha2s1u2fsu1it_su2marsu2mau3s2umesu2mels3umfesum1o2su2mors3umsas3umst2s1uni2s1urlsüden24s3zeis2zena4szent4s3zetße2l1a2t1abb3tabel2taben3table2t3abn2t3abtta3d2s3taf2et1af4rta2ga24ta3gltag4sttah3leta3i2kta1insta1ir_t1a2kata2krotak6ta3taktb3t2al_ta3lagta3lak3t4aletal2löta2mert1amplt1a2na4t2andt3ankl2tanwa2tanwät2anz_t1anzat1anzuta2pe_ta2pes2t1armt1artitar2to2t1arz4t1aspta2tanta2tautat3eita2temtat3heta2tom4tatue2t1auf4taufg4taufnt1ausb3tausct2auset1ausk4tausltaxi1s2t1ältt1ängs3t4ebbte3cha3technteck2ete2ckite2en3te1erwteg3re3t2ei_t3eifr2t1ein4teinf4teinnt3eis_t3eisb3te3letel1eb2telemtel1ente4leute2littell2ete2l1ö3telt4tel3tatel3thte2min2temme2tempfte4m1utena2bte4naste4nauten3dat6endit6endote2nettens2et4entat3entb4tentdt4ente4tentnten3zwt3e2pi3t4er_tera2bte1rafter3am4terbs4terbtte2relt4erfrte3ria3termi2ternct4ers_terst4ter3zatesa2cte2santesä2cte2selte2sprtes3s2te2tat3teur_3t4ha_3thal_4t3hau1t2he_2t3heit4heint4henet4heni2therr3these2t3hil2t3himth4mag2t3hoc2t3hoht4hol_2t3hot1th2r2ti3a2mtiden2ti2deo3tief_3ti2erti2kamti2karti2kinti2kräti2larti2leiti2lel4t1imp3t2in_4t1indti3n2eting3lting3s2t1inj2t1int4t1invti2seiti1sta2ti3tuti2vanti2velti2v1oti2v3rtlung4tnes4s3tochtto4d1utom1e2to2mento2nauto2pakto2patto2rauto4ränto2relto3rent3orga3torint1ort_3tost4to1sta3to3teto2thotouil44tractt3rad_6trahm5t4rai2trand3trankt3rann3transt3raset3rasi3träne4t5re_tre2brt3recht4reck6t3red5t4ree4trefe4trefot4rei_4treic2treift3reigt3reint3reis6treitt3reiz6t3relt4ren_3trendt3rent2trepe2trepot4reprt4res_3treuh5trieb2triegtri4er5triggt3rind4tringtri3ni4trinn4tripttrizi13t4roitro2ke4trom_tro2mi4troml2t3rootro1pe3tropf2t3röttrums12trund5t4ruptru2thtrü1betrü1bu2t3rüct4sa4bt3s2act2s1aht4s3art2s1änts4cort3seiltse2n1t2s1erts1init2s1irt1slalt3spalts1parts2pedt3spekt3s2pit4stagts3takts4talt2stipt4stitts3tocts3tort2strits3türtta2bet2t1adtt2anttt1arttt1ebett1eiftt1eistte2lattel1otte2satte2sät4tetitt2häut2t3hot3tro1tt4roctt2sentt2sortt2spett2sprtt2stitu1almtu2chitu3fent3u2kr3t2ume2t3umf2t3umg2t3umk2t3umrtum2situm2so2t3umt2t3umz2t1una2t1und2t3unft3unga2tunif2t3unttu2re_tu2reitu2resturin1tück2s3tür3s3tütentze4n1tz2enetz1erltze2rotz2erst3ze2stzgel2tz1indtz1inttz2tinua2lauu3aletual2mau3a2louara2bu2be2cub3licu2b3luub2sanub2s1oub2spau1cha_uch1eiu3chesuch1iluch1inu2ch3ruch2souchst4u2ckemuder2eudi3enuditi4ue2neruenge4uen2zuue2r3aue2r1äu3erehu3ereru3erexuer3g2uer2neue2r3ouer3scuer3t2u3erumue4teku2f1äsu2f1eiu2f1emu3fen_u2fentuf2ernuf2frouf1oriuf4sinuf2spouft3s2u2g1apu2g1eiug3ladu3g2löug4serug3spaug4sprug4spuug5stäug3strug3stüuhe3s6uh2reruh4rinuisi4nui4s5tukle1iuk2t3ruld2seu2l1elul1erful1erhul1erwule2saul1etaul1insul2lesul2p1hul4samuls2thul4trium1allum1anzu2maut1um3d2umer2aum1ins3umsatum4serum2simu2m1uru3n2amu2n3an2un2asun4dabun4deiun2didun2dorun2d3r4unds_und3spund3stun2ei_un3einunen2tun4es41unget1ungew1unglüun2g1rung3raung3riung4saun3ide1u2nifun3islu3n2it3u2nivun2keiun3n2eunvol2u1or3cu2pf2eu2pf1iu3rabaura2beur2anbur2anhu2r1auur3b2aur1effu2releu4r1epur1erhur1erwur2griurg3s4ur1iniur3insur1intu2rinv1urlauur3sacur2sanur2sauur2serur4sinurst4rur2z1wu4s1afus4annu2s1ecu2s1eiu3seiduse1rau2serpu2s1opu2spatu3spekus1picus2porus4sezus2sofu1stalus3tauust2inu2stunu2sturut1altut3a2mu2t1apu2t1arute4geutel1eute2n1u2tentu4t1exu2t3hout1opfu2topsut3reaut3s2aut2s1äut5t4lutu4reutu5ruut2zinut2z1wuve3räüb2s3tücht4eü3ckenück1erü3den_üden4güdwes2ü2f1eiü2h1eiühl1acüh3r2eühr3taü2mentün2fliün2g3lün3strü2r1eiü3r2o1ü2schlüs2s1cü2t1alva2teiva2t3hvatik2va2t3rvat3s4va2t1uveits3ve3nalve3radve3rasver3b2ve4rekve4rinver3stver5te2ve3scves3tivi4a3tvie2w1vi2l1avi4leh2v1i2m2v1intvi3s2ovoll1avol2liv1steuwab2blwa3chewaffe2wa2g3nwah2liwal4dawal2tawal2towang4s1war2eware1iwart4ewass4e4webebwe2g1awe2g3lwe2g3rweg3s4wei4blwei2gawei3k4wei4trwel2t1wel4trwen3a4we2r3awer2bl1werbu1werduwerer2wer2fl1werk_wer2ka1werkewer2klwer2kuwer2tawer2to1wertswest1awes2thwest3rwes4tuwett3swi3ckawien2ewie2stwim2mawin2drwi3s2e1witzlwo2chawoche4woh2lewo2r3iwo4r3uwört2hwul3sewur2fa1wurstwus3te1wu4t1xe3lei3x2em_xen3s2x1i2doxin3s2xi2so2xis4täx1i2tuxtblo4x2t1eix4tentx2t3evy3chisyloni1y2p1iny1s4tyy2s1u22z3a2b2z3a2k2z1all2z3anf2z3anlz1artizar2tr2z1arzza1st42z3at3z1au2fzbübe32zecho2z1eck2z1effzei3lazeile42z1einzei3s4zeist4zei2trze2lenzell2azel3sz2z1empzens2ezent3sze2r3a2zerhöz2erl_2zerlö2z1erq2z1erzze3skuzes2spzes2stze2s3tze3sta2zettszger2azi3alozi1erhziers1zi1es_2z1impzin4er2z1inf2z1inhzin1itzin2sa2z1invzirk6szi3s2zzi1t2hzor4ne2z1oszz2t1auz4tehezt1inszt3reczu3ckezug1un2z1uhr2z1um_zumen22z1umszup2fizu3r2a2z1url2z1urs2z1urtz2wangz2weigz1weis2z1wel2z1wen2z1werz2werg2z1weszzi1s4", + 7 : "_al4tei_amt4s3_and4ri_an3gli_angst3_an4si__an4tag_ausch3_be3erb_be3r2e_berg3a_bo4s3k_bu4ser_da4rin_da4te__da4tes_de4in__dien4e_ebe2r1_en2d3r_en4tei_er4dan_er4dar_er4dei_er4der_es5t4e_fer4no_fi3est_fi4le__fi4len_ge5nar_ge3r2a_ge3r2e_ger4in_hau2t1_her3an_ho4met_ima4ge_ka2b5l_lo3ver_lus4tr_men3t4_orts3e_pa4r1e_reb3s2_re3cha_rein4t_reli3e_res6tr_ro3m2a_sali3e_sim3p4_sto4re_tage4s_to4nin_tri3es_ul4mei_urin4s_ur3o2m_ve5n2e_wei4ta_wor4tu_zin4stab1er2raber4ziaber4zoab3essea4cherfa4cherka4cheröach1o2bach2t1oach1u2fa3d2ar3ade1r2aade3s2pade5str2ad3recaf4t5reage4neba4gentuage4ralage4selage2s3pag3esseags4toca2h1erhah4l1eiahner4eahre4s3ahr6tria3isch_1a2k4adak5t4riala5ch2a2l1angalb3einalb3eisal4berh3a2l1efa4l3einal3endsa2l1erfa2l1erha2l1ert3a2lerza2l1eskali4eneali4nalal3lenda2l1o2bal4spalalt3eigalt3ricalt4stüalzer4zamen4seamp2fa2am4schlana4lin2ana1s4and4artandel4san2d3rüand4sasand3stean2f5laan2g1eian2g3raan2k1anan2k3noan2k3rä3antennan3t4heant3rina3ra3lia2r1anga2r1ansa2r1anza2r3appar2b3unaren4seare3r2aa2r1erhar2f3raari3e4nari3erdari3ergarin3itark3amtar2k1arark3aueark3lagark4trear4merkar3m2ora2r1o2dar2r3adarre4n3ar4schlar4trama4schecasch3laa2s3e2ma2s1o2fas4s3eia1s4tasas6t3rea2t1aktater3s2ato4mana2t1ortat4schnatt3angat3t4häat2t3räat4zerkat4zerwat2z1inau2b1alauch3taau4ferkaup4terau2s1ahau4schmau4schoaus3erp3aussagaus4se_aus5triau2t1äuä3isch_äl4schlän3n4e2ä2r1eneär4mentäser4eiäse4renäskopf3ät4schlät4schräu4schmäus2s1cba2k1erban2k1aba2r1ambau3s2k2b1eier2b1eimebe1in2hbe2l1enben3dorben4spaben4spr2b1entbben5t4rber4ei_be4rerkber4in_ber3issbe2s1erb3esst_be3s4ze4b1illubis2s1cb2i3tusbjek4to2b3leidbo2l1anbor2d1ibor2d3rbor2t3rbra1st42b3rat_2b3riemb4schanb6schefb4s1erfb4s1ersbst1a2bb2s3träbs3treubtast3rbu4schlbu4schmbu4schwbügel3eca3s2a3ch3a2bich3anst3chartache4fer4chelemche4ler4chents4chentwche3rei2ch1e4x3chines2ch1invch3lein2ch1unf4ckense4ckentw4ckerhö4ckerke2ck1err4ckerze2ck1eseck4stro2ck1um3co4der_com4te_comtes4cre4mes2d1alar2d1ammädan4ce_dan5kladan2k1odar2m1i2d1au2f2d1aus3delei4gde3leindel4lebdel4leide2l1obdel4sandel2s5edel2s1p4denergden4sende2re2bde4reckder3ediderer4tderin4f4derklä4derneuder3taudes3eltde2sen1de4stredes4tumdeten4tdge4t1edie4nebdi3ens_die2s3cdi2s5tedi4tengd2o3r4ador2f1a2d3rast2d3rauc3d4reck2d3reic3d4riscdrunge3drü5cked4s1amtds3assid4schind2s1e2bd4seinsd2s1engd2s1entd2s1erfd2s1erkd2s1erzd4s1etad3s2kand2s1pard3stell2d1un3ddu4schndu4schrdu4schwe4aler_e3at5t4ebens3eebet2s3eb4scheeb4stätebs3temebs3t2hech1o2bede3n2eeden4seeden4speder3t2ed2s1esed2s3treein4see2f1e2be2f1i2de2f1insege4strehen6t3ehe3strehl3eineh4lenteh5l2erehr1e2cehr3erleienge44eigeno1ei2g3nei3k4laei4leineil3inseim3allei4nengein4fo_ein4fosein4hab3einkomei2n1o23einsate4inverekt4antekt3erfekt3ergela4bene2l3a2me2l1a2re2l1eine3leinee4leing2e3len_e4lensee2l1ente2l1erge2l1errell3ebeell3eiseller4nelt3eng3elternelt3s2kelt3s2pe2m3anfe2m1ansem2d3a2e2m1erw1e2metiem2p3leena3l2ien3d2acend4ortend3romend3s2pene4bene4n1enten4entr4e3ner_e2n1erd1e2nerge2n1erle2n1erre2n1erse2n1erte2n3erue2n1erwe4n3esseni3er_e2n1i4me2n1o2benob4lee2n1o2ren3s2poen4terb3entspr4entwetenz3erte4ratemerd3erwer3echser1e2ckere4dite2r1e2h4e3rei_4e3ren_e4rensee4rentne2r3erfe2r1erher3e4tiere4vid3ergebn4ergehäe3ri3k44e3rin_e2r1ini3erlebnermen4serm3ersers4toder4tersert3ins3erweck6erweise4s3atoe2s3einese4lere3s2peke3s2pore3s4praess3erges2s1paestab4be4starb1e2stase1s2tecest3ories3tropeten3d2eter4höeter4tre4traume6t3recetsch3wet2t3auette4n1et4t1umeu3ereieu3g2ereve5r2iewinde3e2z1ennfa4chebfa2ch1ifäh2r1ufeh4lei2f1eing4f1einh2f1einw2fe2lekfe2l1erfel4sohfe4rangfer3erz4ferneufest3ei2f1e4tafet2t3afeuer3effel2d1f2f3emifi1er2ffi2l1anfisch3o2f3leinflu4gerfor4teifor2t3r2f5raucf4schanf4scheff4s1ehrf2s1entf4s1etaf3s2kief2s1pasf3s2porf4stechf3s4telf3sternft1a2bef4t1entft4scheft4s3täft4stri2f1u2nifun2k3rfus2s1p4gangeb2g3ankuga2s3eigas5tangebe4amge4lanzge4lessgel3stegel3t2agen4auggen2d1rgen3eidgen3erngen4samgen4ta_2g1entfge4renggerin4fgerin4tger4satger4stoges3aufges3eltge2s3erges3s2tgien2e12g3isel3g2laub2g1lauf4g3lein4g3lisc2gni2s13g2num_2g3rede2g3reic2g3rein2g3renng3riese2g3ring3g4runsg4s3a2kg4schefg3s2eilg3s2pekg3s2porgst3entgst3errg4s3torgs4trat4gungew2g1unglguschi5gus4serhaf3f4lhalan4chal4beihal4t3rhar4mes2h1aufmhau4spahäu2s1chba2r3ahe4b1eihe5ch2ehe2f1eihef3ermheiler4hei4nehheit4s3he2l3auh3e2lekhel3ershel4meihe4n3a2hen3endhen3erg2h3entwher3a2bhe4reck4hereighe4rerwh1er2foherin4fherin4sh3erlauhe2s5trhie4rinhif3f4rhi2l3a4hin4t1ahir4nerhlags4ohle3runhner3eih3nungeho2l1ei2hot3s2hrei4bah4r3eigh3re2s1h2r1etah3rieslhr2s1achr2s3anhr3schlhr2s1enhr4s1inhr4s1ofh2s1achh4schanhse4lerh2s1erlh2s1ingh2s1parhst3alth2s3tauh3steinh5stellhst3ranh3taktsh4t3alth4t3a2mh4t3assh2t1eimh2t1eish4tentfht3erfoht3erfüh2t1erhh4terklht3erscht3ersth2t1erzh4t1eseh4t1esshte3stah4t3rakht3randh2t3rath4t5rinh2t3rolh2t3rosh4t1rösht3spriht4stabhts4tieht4stürh2t1urshu2b3eihu2b1enhu2l3eihu4lenthu2l1inhut4zeni3alenti3alerfi3alerhi3a2leti3a4liai1ät3s4i2b1aufich2t3rieb4stoieb4strie2f1akie2f1anie3g4rai2e2l1aien4erfienge4fien3s2eie3r2erie4rerfi2er5niier4sehier3staier3steies2s3tie2t3hoie4t1ö4i2f3armift3erkif4t3riift3s2pi2g1angi4gefari3g4neuig3steiig4strei2k1a4ki2k1anoi4kanzei2ker2li2k1etaik4leriik2o3p4ikt3erki2l3a2mi4lentsi2l1erfi2l1ergi2l1erril2f3reilig1a2ili4gabi2l1indil3l2eril4mangil2m3atil2z1arilz3erki2m1armimat5scima4turi2m1erfi2m1erzi2m1infi2m1insindes4ii2n1engin3erbei4nerbiiner4löing4sam3inkarninma4leinn4stains3ertin3skanin3stelin4s3umional3aion4spiir2m1eii4s1amtisch3ari3s2chei4schefi4schini2sch1lisch3leisch3obisch3reisch3rui4schwai4schwoisch3wuise3infi4seinti2s1ermi2s1essis4s1aci1s4tati1s4teui1s4tilit3a4reiten3s2iti4kani2t1in1i2t3ranits1a2git2s1e4its3er1it4stafi2v1enei2v1enti2z1enejek4terjektor4je2t1u2jugend3jung3s42k1a2bo2k3a2drka3len_ka4lenskal3eri2k1annakari3es2k1artikau2f1okauf4spke1in2d2k1eise2ke2lek2ke3letkel3s2kk3enten2k1ents4kerfahk4erfamk3ergebk3er4hökerin4tker4kenker4neuker4zeu2k1i2dekie2l3o2ki3l2aki3n4o32k1inse4k1lastkle3ari4k3leit2k1o2fekop4fenkot4tak2k3räum2k3redekreier4k4s1amtk2s1ersk2s1erwk3stat4k2t3a2rk2t1erhk2t1ingkti4terk4torgakt3oriek2u3n2akuri4erku4schl4l3aben4l1a2bl2l1a2drla2g1oblan2d3rlang3s4l1a2po2la2r1anla2r1eila4rene3l4ar3glar3ini2l1ar3t3lasserla2t3ralat4tanlat2t3rlau2b3rlaub4se2l1ausslär2m1al2b1edel2b1insld3a2b1ld3a2ckl2d1a2dl2d3a2nld4arm_lecht4ele2g1asleh3r2elein4duleit3s22le2lekle2m1o24lendet4lenerg2l1ennilen4sem2l3entwlent4wäle2r3asl3ereigle4rers3lergehl3ergen2l1ergilerin4s2l1er2ö3l2erra2l1esellgeräu33lichem3licherliebe4slie2s3clik4ter2l1indulingst4lin2k1ali4schu2l1i4solkor2b1ll1a2bel2l1abtl2l1a2mlle4n3all3endul4lentsl4lerfol4lergoll3erntll3ertrl2l1indl2lo2bel2l1o2rll1ö4sellus5t6l2m3a2blm3einsl2m1e2pl2m1erz2l1o2bllos3t4r2l1ö4l3l2s1a2dl4s1ambl4schinl4schmül2s1e2bl2s1ersl2s1erwl2s1impls3ohnel4t3amel2t3atol2t1eislt4stablt4stocltu4ranluf2t1aluf2t1eluf2t5rlung4sclus4s3alus2s1cluss3erlus2s1olus2s3plus2s3tlus4stälus4t1alust3relut1o2fmach4trma4ges_ma4laktma4l3atma2l3ut2m1analman4ce_man3ers2m1angr4ma3r2oma3s2pa4m1aspemassen3mas4telma1s4trma2ta2b2m1au2fmäu2s1cmbast3emedien3mein4dame1i4so2m1e2miment4spme2r3apme4rensmerin4dmerin4tmerz4en4m1essames2s1omes2s1pme4t3römierer4mil4cheminde4sming3s4mi4schami4schnmi4schwmis2s1cmi2s5tem2m1ansmme4linm4mentwmme2ra2mme4recmmi1s4tmo4n1ermor2d3amoster4mpf3erpmpf3errms5trenm2t1erfm4t1ergm2t1erlm2t1ersm2t1ertm4t1etam2t1insmt3s2kamun2d1amül4lenmütter3na3chenna2l1a2na4lent4n1a2nana4schw4n1a2synauf4frn4austenbe3r2en3ce2n3n2d1anznde4al_nde4lännde4robn2d3ratn4d3runnd4stabnds3taune2e2i22ne2he_4n3eing4n3eink3ne3l2o4n1endb4n1endd4n1endf4n1endh4n1endk4n1endp4n1endt4n1endwne4nenenen4ge_nen4gen4n1entl4n3entwne2ra2bne3r4alne2r3am4nerbe_4nerben4n5erfonerfor42n3erhö2n1erlöner4mit4n1ernt3n2ers_2n3ersa4n3essine2t1akne2t1annett4scnfi4le_n2g3a2mn2g1andn2g1einnge4ramnge4zänn2g1i2dn3g2locngs5trinie3l2a3n2ing4ni4schwnitt4san4k3algn2k1insn2k1ortnk2s1aln4n1alln4nentsn2n1unfn2o3ble2n1ob2s2n3o2fenor2d5rno4t3eino2t3inno2t1opn2s1a2dn2s1alln2s1äusn6schefn4schronsen4spn2s1erkn2s1erön2s1erwn2s1erzn4s1etan2s1inin4stat_nst3eifn3stemmns4tentnst4erön4stracn4strien3t2a3cn4tanzan2t1eisn4t1essn2t1inhnton2s1nt3reifnt3riegntu4re_ntu4res1n2ung4n2z1a2gn4zensen4zentwn4zentznz3erwe2o3b4enoben3d4oben3seobe4riso2ch1ecocher4ko3d2e1iof2f1inoge2l1io2h1eiso2h1erto2h1erzoh4lergoh4lerwo3isch_ol2l3auoll1e2col2l1eiol4lerkoma4nero3m2eiso2m1indo2m1into2n1erbo2n1erdon3n2anont3antont3erwon4t3riop4ferdopi3er_o2r3almor2d3amor2d1irord3s2to4rientor2k3aror4mansor4mentor3n2o1oro3n2aor2t1akor4t1anor2t1auort3eigort3erfor2t3evort3insor4trauort3ricor2t1umo4sentso2s3peross3andos4t3amos3tarrost4artos4ta4soster3eos4t1obost3ranost3roto3t2e1iote2l1aote4leio2t1erwo2t1i2mot4terkoun4ge_our4ne_ozen4taöchs4tuögen2s1öl2f1eiö2r1e2lö3r2erzö2r1uneö2sch3mpa2r3afpar3akt2par2erpar4kampar4kaupe2l3a2pe3li4npe3n2alper2r1a2ph1erspil4zerpingen4pi2z1in3ple5n4po2p3akpo2p3arpor4tinpor4trepor6tripo2s3tepost3eipost3rap2p3a2bppe4lerp4t1entpt3ereip4t1erwp4t1erz2r1acetra4chebra4chinracht3rr3a2d3r3ra1k4l2r3alm_r4alt2hram4manram4m3uram2p3lran4dep4r3aneiran4spara2r1inra4schl2r3asph2r3attarau3e2nrau4man2raus5srbe3r2erchst4rr2d1elbrden4glrder4err2d1innre3alerrech3ar3reigewrei3l2arei3l2irei3necre1in2v2re2lek2r1entl2r1ents4r3entzr4ergen2r1ernä4r3erns4r3ernt3r2ers_2r1ersare2s2tu2r3evid2r3e2x1rfi4le_rfolg4srf4s1idrf2s3prr2g1a2drge4ralrge4taprgi4selr2g3ralrg5s2turi2d3anri3ers_ri3estiri2f1eirif4terri4generin4dexrin4diz4rinnta3r4ins_r4inspirin4tegrin4t5rri4schori4schwr3i2talr2k3reark4stecrkt3ersrk2t1o2rl2s3tor2m1aldr2n1anzr4n3eisr4n1enern3enser4n1ergrn4erhir4n1ertrol4lanron4tanros2s1cro3st2arre4aler2s1a2dr4s1amtr2s3angr3sch2er4stantrs4temprs4terbrst3ingrst3ranr2t1almrt3a4rer2t3attrtei3lartei1s4rten3s2rt3ereir4terfor4t3erhr2t1erkrter4rerte3s2kr2t1imar4treisrt4s1ehr2t1urtru3a2r3ruch3strun2d1arund3er2r1u2ni4r3uniorus2s1pru2t1o2rve4n1er2z1erfr2z1ergr2z1erkr2z1erwrz2t3ror3z2wecsa2cho22s1a2drsa4gentsa3i2k1sa2l1ids3ameri6s1amma2s3a2nasan4dri4s3antr4s3a2sy2s3aufb2s3ausb3s2ausesbe3r2es4ch2al4schanc4schangsch3ei_4schemp4schess4schiru4schle_sch6lit4schre_4schrinsch3rom4schrousch3s2k4schunt4schwetsch4wilsdien4e2s1echo2s1e2ckse2e1i4se2h1a2se4h1eise4herk5s4ein_sein4dusei3n2esein4fos4eins_4seinsp4seinstsel3ers2s1endl4s1entf2s3entg2s1entsser3a2dse2r3als3erbe_s3ereig2s1erfo4serfül4serken2s3ernt4s3eröf4sersehse4r1ufse3rund4se4tap4s1e2thsi3ach_siege4ssi2g1a2si2k1absik3erlsin3g4lsing3sasi4schuska4te_4skategska4tes4s3klassni3er_sni3ersso4l1eisol4ler2s1orga5s2orgeso2r1o24s1o2ve4spensi2s1peri3s2pi4e4spier43s4prec3sprosssrat4scss1a2cks4s1alas4s1albs4s3amts4s3angs4s3anzs3sa1s2s2s1egasse3infss3ersessquet4s3ta3li4s3tanns4t2ars3staus_st3a2ve4stechn3steilhstei4naste4mar6s5ter_3sterncs4t3ese3s4tett1s2ti2rst1i4sosto3s2t1s4trah4strans3s4tras4straum4s5träg4sträne4s5tref4streibst3renn2s4trig2s5trisst3rollstro4ma4st3run2s4t3s42stum2sstum4sc3s4tunds2t3uni2s3tuns2st3urtsuch4st3s4zeneße3r2eißi2g1a2ta2b1anta4bend2t1a2drta2g1eitahl3sk3t2aktuta4lensta2l1optan4gar2t1anme4t1anna3t2ans_4t3ansi4t3anspta4rens3t4a3rita2ta2bta2t3erta2t1um4t3ausg4t3auss4t1auswtbauer4tbe3r2e4teilhet3einget3einlate2l1abte2l1acte2l1autele4bete4l1ecte4l1ehte4leinte4lerd4t3elf_te2l1inte4losttel3s2kte2m1ei3temperte4na2dte4na2g4t3endf4t1endl4t3endpten3d4rten3eidten3ens4tenerg4t1eng_ten4glate4n3in4tensem4t3entw4t3entzte3ran_te2re2bter3endte4rengte4rerkterer4z4terfol4terfül3ter3g2t6ergru4terklä2t1erlöter4mert3erneuter4re_ter4sert4erst_t4erstit4erstute4r1ufter4wäh2t3erzbtes3tantest3eitestes4teu3ereteu3eriteu2r3a2t3e2xe2t1e2xi4thrin_4thrinsti4dendti3e4n3tie4recti4gerzti3k2erti2ma2gtim2m1atin2g1at1in1ittin2k1l3t2ins_4t1inseti4que_ti4schatisch3w3ti3t2etle2r3atmen6t3tmo4desto2d1ertor3inttra3chatra4demtra4far3t4ran_tre4ale3t4reib2t3reih4trenditre2t3r3t4runkt3s2chat4schart3sch2et4schefts4chemtsch4lit4schrot2s1e2bt4seindt2s1engt2s1entt2s1i2dts4paret3s2pont3s2port4spreits3tätit2s3tepts3tradt4strants3traut2s3trät4streut4stropt2s3trütte4lebtte4lent3u2fertums5trtung4s5tu2r1ertu4schlt2z1e2ct2z1eiet2z1eistz3entsubal3l2ubi3os_u2b3rituch4spruch4toruch2t3ru4ckentu3ck2eruden3s2ue3reigue4rergue4rerku4erinnuer4neru3erunfu3eruntu2f1ä2ßu2f1erhu4ferleufs3temuf2t1ebu4gabteu2g1erfu2g1erlugge4stu2g3rüsu3isch_u3ischsuk2t1inulm3einu2m3a2ku2m1artu2m1ausument4su2m1ergu2m1erlu2m1erwumpf4lium2p3leum2s1peun2d1umun2k1a2unk4titunk2t3run2n3aduns4t1runte4riunvoll3up4t3a2upt3ergu2r3a2mu2r1anau2r1angu2r3atturgros4ur3s2zeu2s1eseusi3er_us3partu2s1pasu5s4pizust3abeu5strasus6trisute4leiuter4eruto4berut4schlut4schmut4schöut2s3pautz3engüch2s1cück3eriü4ckersück4speü3d2ensü2f1ergü2h1engü2h1erkü2h1erzühr3ei_ül2l1eiün2f1eiü2r1entüste3neva2t3a4va4t1inve4l1auvenen4dve3rand2ve3s2evid3s2tvie2h3avie4recvi2l1invollen4vormen4waffel3wah4lerwalt4stwar3stewa4schawä3schewe3cke_we3ckeswei3strwer4gelwe4r3iowest3eiwest1o2wim4m3uwolf4s3wol4lerwor2t3rxi2d1emx2t1e2dxtra3b4x2t3rany2l3a2myl4ante3zambiqzei2t1aze2l1a2ze2l1erze2l1inzel3t2hze4n3aczen4semzen4zerze2re2b2z1ergäz3erhalzerin4tzer4neb2z1ersazert1a2zert4anzer4tin4zerwei3z2erzazessen4zger4s1zin4ser4zinsufzon4terz3t2herzu2g1arzu4gentzwan2d1", + 8 : "_al5l4en_anden6k_ar4m3ac_ar4t3ei_bei6ge__ber6gab_ber4g3r_de3r4en_einen6g_en4d3er_en5der__er4zen4_ka4t3io_lo4g3in_mode6ra_ost5end_oste6re_par3t4h_richt6e_sucher6_tan4k3la2ch1e2ca4ch3erwacht5ergach6tritack3sta43a2er2o1af4t3erlage4s3tiah4l3erhal4b3erw3a2l1e2bal2l3a4rall5erfaalli5er_al4t3erfam4t3ernand6spas3a4n1erban4g3erfan4g3erlan4g3erzang4s3poani5ers_an2t3a4ran2z1i4nau5ereinau4s3erwauster6mau4ten4gau4t3erhäs4s3erkbach7t4ebal4l3ehbe4r3eiwber6gan_ber3st4abe6steinbe4s3tolbote3n4ebst5einbbu4s3chach3e4ben6chergebcher6zie6ckergeb4d3achse2d1an3d23d4ärme_2d1e4ben3d2e1i2mde2l1a2gde4l3augdel5sterde4n3endden4k3li4den4semde3r4erbde3r4erfde4r3ero4d3erhöh4d3ersatdest5altdest5ratdienst5r2d1in1it4d3innerdi4t3erldi4t3ermdi4t3ersd4s3tätid3s4tern2d1u2m1edu4sch3le3a4reneech3t4eiege4n3a2eg4se4r1ehr6erleei4b3uteei4d3errei2m1a2gein6karnein6stalei6schwuei4s3erwek4t3erzeld5erstel4d3erwe4ler4fae4ler4lae4l3ernäe4l1e4taelgi5er_elgi5ersel4l3einemen4t3he6mentspen4d3esse4n3ermoeni5ers_en5sch4eenst5alten4s3täten4t3rolen4z3erfen4z3ergen4z3erke2r3a4sie4r3eis_e4r3entferi3e4n3er6tereiess4e3rees4t3enges4t3erhes4t3essestmo6deet4z3enteue6reifeut6schnfacher5ffal6schafal6schmfe4r3anzfrach6trf4s3tätif4s3tresf4s3tütef4t1e4tift4s3tanfzeiten6gas4t3el2g1eise2gel4b3ragel4b3rogel6dersge4l3ers4g3ereigge4ren4sge4r3entge4s3terglei4t5rgrammen6gros6selg3s4tatigs4t3rosgu4t3erhhaft4s3phal6lerfhau3f4lihau5steihau6terkhe4f3inghel4l3auhe2n1e2bhe4r3eishe4r3o4bhfel6lerhich6terho6ckerlhol6zeneh6rerlebh3s4terbh3t4akt_h4teil4zh4t3elith4t3entsht5erkenh6terneuh4t3erreh6terstaht6ersteht6raumeht4s3turhu4l3enghut4z3eria4l3ermie4n3a2gie4n3ergienst5räie4r3erziesen3s4ie4t3erhie4t3ertiker6fahi3l4aufbim4m3enti2n1e2bei4ner4trin2g1a2gin4n3ermin4s3tätir4m3untir4sch3wi4sch3eii5schingi6schwiri4s3etatiso6nendis4s3cheit4z3ergjah4r3eika4n1a4s6kantennkehr4s3oke4l3eim4ken4gagken5steiker6gebnkerin6stk3er4lauk3er4lebk6erlebe2k1er2zikeu6schlkor6dergkre1i2e4k4s3tanzk4t3erfolan2d3a22lat2t1alat4t3inl2d1e2seleben4s3lei6nerble4n3end5lentwetle4r3eim3l4ergew6lerwerbli4g3ers2l1in1itl6lereigl6lergebl6lergen2l1or3g2l4s3ort_l4s3tätils6ternels6ternsl4te4leml4t1e4skl2t1o2rilu2g1e2blus6serflus6serklus6serslu4t3ergl2z1u4femagi5er_magi5ersmar6schmmar6schrma4t3erdmen6tanz4m3entwi4m3ergänmes6sergmp4f3ergmp4f3erz4m3ungebmu4r1u2fnacht6ra4n3a2mernavi5er_navi5ersn4d3entsnder5stene2n1e2bn4g3erseng4s3e4h2n3i2gelni4k3ingn4k3erfanseh5eren4s3ort_n4s3prien4s3tatens6terbenst5opfenten6te_nt4s3parober3in4ode6rat_ode6rateoh4l3erholl5endsoll5erweol4z3ernonderer5on4t3endopf5erdeopi5ers_or4d3engo2r1e2ckorsch5lior4t3entor4t3ereor4t3offor4t3räuos4s3enzö4sch3eipargel6dpä4t1e2hpä4t3entpe4l3inkp2f1in3spos4t3agrach6trärali5er_rali5ersran4d3errau4m3agräu5scher2b1a2der4b3lastrch6terwrderin6sr4d3erntrege4l3äre4h3entreister6re4n3end4r3erken4r3erlaurge4l3errgen4z3w4r3innerrkstati6rk4t3engrk4t3erfrk6terscrk4t3erwr2m1o2rirn3e4benrol3l4enrpe4r3inr6scherlr4s3ort_r6strangr4t3erler4t3ernäru6ckerlrun6derlrun6dersrun6derwr4z3entssa4l3erbsat4z3en6schlein2s1e2bense4l3erl4s1e2pos6sereignse4r3eimse4r3enk2s1i2deoson5ende2s1o2riesrücker6sse3in4tstel4l3äs4t3endss4t3engls4t3entfste6rersstes6se_5st4reif1s4tri2ksun6derhtan6zerhta4r3eretau3f4litau6schrtau6schwtblock5e4t1e2bentein3e4cte2m1o2rte2n1e2bte3n4ei_ten4t3riten6zerh4t3erde_te4r3eif6tergreiter4n3art6erscha6terwerbtes6terkti4v3erlto6ckenttrücker6t4s1amt4t4s3esset3s4terotta6gess2t1u2niotu2r1a2gtu2r1e4tu2ch1e4cu3erin4tuern3s4tu4g3reisun4d3erfund5erhau2r1an5sur3a4renu6schentusch5werusi5ers_u4t3ersaüge6leiswach6stuwach4t4rwahl5entwandels6we5cken_wein4s3aweis4s3pwel6schlwel6schrwel4t3a2wen4k3ri5werdensxpor6terx2t1er2fx2t1il2l2z1e2benzeit5endzei4t3er4z3ergebzer4n3ei4z3erstezer4t3agzer6tere", + 9 : "_char8me__er8stein_he6r5inn_men8schl_men8schw_rü6cker6_wort5en6_wor8tendach8traumalli7ers_allkon8tral5s6terbausan8ne_äh4l3e4be6b5rechtebs3e4r3inchner8ei_dampf8erfden6s5taue6ch5erziee4r3en4ge6l5eier_erg3el4s3fal6l5erk6fel6ternfor4m3a4gforni7er_fzei8tendgot6t5erggrab8schegren6z5eihä6s5chenhe6rin6nuherin8terh6l3er4näh6t5erspaieler8gebi2k1e2r2eil4d3en4ti4sch3e4hkamp8ferfke6rin6nulan6d5erwlan6d5erzleis6s5erlepositi86mel6ternmorgen5s65n2en3t2aner8schlenich8tersn4n3er4wano6t5entrnsch7werdn5s6ternen5s6ternsos4s3en4kpapieren8ram6m5ersr8blasserres6s5erw6r5innenmris6t5ersr6st5eingrs4t3er4wr4t3er4lasfal6l5erspani7er_sse6r5atts4s3e4strsu6m5ents4t3a4genttblocken8tes6ter6gür4g3en4gvati8ons_vol6l5endwer6t5ermwin4d3e4czer6t5rauzes6s5end", + 10 : "_er8brecht_os8ten8deder6t5en6deren8z7endgram8m7endhrei6b5e6cos6t5er6werein8s7trewel6t5en6dwin8n7ersczge8rin8nu", 11 : "_er8stritt__spiege8leiach8träume_lei8t7er8scpapie8r7endpiegelei8en", - 12 : "ach8träumen_", + 12 : "ach8träumen_7sprechende_", 13 : "_er8stritten_" } }; \ No newline at end of file diff --git a/resources/viewer/hyphenate/patterns/el-monoton.js b/resources/viewer/hyphenate/patterns/el-monoton.js new file mode 100644 index 0000000000..79902a48c5 --- /dev/null +++ b/resources/viewer/hyphenate/patterns/el-monoton.js @@ -0,0 +1,20 @@ +// Hyphenation patterns for Modern Monotonic Greek. +// Created by Dimitrios Filippou with some ideas borrowed from +// Yannis Haralambous, Kostis Dryllerakis and Claudio Beccari. +// From http://tug.org/svn/texhyphen/branches/ptex/hyph-utf8/tex/generic/hyph-utf8/patterns/tex/hyph-el-monoton.tex +// Converted by Pablo Rodríguez (hyphenator at pragmata dot tk) +Hyphenator.languages['el-monoton'] = Hyphenator.languages['el'] = { + leftmin : 2, + rightmin : 2, + shortestPattern : 1, + longestPattern : 7, + specialChars : "αεηιουωϊϋάέήίόύώΐΰίάύέήόώβγκδζθλμπντξρσϲςφχψ'ʼ᾿’᾽", + patterns : { + 2 : "α1ε1η1ι1ο1υ1ω1ϊ1ϋ1ά1έ1ή1ί1ό1ύ1ώ1ΐ1ΰ14'4ʼ4᾿", + 3 : "α2ια2ία2ίά2ιά2ιά2ϊά2ϊα2υα2ύα2ύά3υά3υε2ιε2ίε2ίέ2ιέ2ιέ2ϊέ2ϊε2υε2ύε2ύέ3υέ3υη2υη2ύη2ύή3υή3υο2ιο2ίο2ίό2ιό2ιό2ϊό2ϊο2υο2ύο2ύό3υό3υυ2ιυ2ίυ2ίύ3ιύ3ια2ηα2ϊα2ϋε2ϊε2ϋο2ηο2ϊι2αι2άι2άι2ει2έι2έι2οι2όι2όι2ωι2ώι2ώ_ι3_ί3_ί3η2αη2άη2άη2εη2έη2έη2οη2όη2όη2ωη2ώη2ώ_η3_ή3_ή3υ2αυ2άυ2άυ2ου2όυ2όυ2ωυ2ώυ2ώ_υ3_ύ3_ύ34β_4γ_4δ_4ζ_4θ_4κ_4λ_4μ_4ν_4ξ_4π_4ρ_4σ_4ϲ_4ς_4τ_4φ_4χ_4ψ_4β'4βʼ4β᾿4γ'4γʼ4γ᾿4δ'4δʼ4δ᾿4ζ'4ζʼ4ζ᾿4θ'4θʼ4θ᾿4κ'4κʼ4κ᾿4λ'4λʼ4λ᾿4μ'4μʼ4μ᾿4ν'4νʼ4ν᾿4ξ'4ξʼ4ξ᾿4π'4πʼ4π᾿4ρ'4ρʼ4ρ᾿4σ'4σʼ4σ᾿4ϲ'4ϲʼ4ϲ᾿4τ'4τʼ4τ᾿4φ'4φʼ4φ᾿4χ'4χʼ4χ᾿4ψ'4ψʼ4ψ᾿_β4_γ4_δ4_ζ4_θ4_κ4_λ4_μ4_ν4_ξ4_π4_ρ4_σ4_ϲ4_τ4_φ4_χ4_ψ4", + 4 : "ά3η_ά3η_ά3ι_ά3ι_ο2ειό3η_ό3η_ό3ι_ό3ι_4γκ_4μπ_4ντ_4τζ_4τσ_4τϲ_4τς_4μπ'4μπʼ4μπ᾿4ντ'4ντ’4ντ᾿4τζ'4τζʼ4τζ᾿4τσ'4τσʼ4τσ᾽4τϲ'4τϲʼ4τϲ᾿4β1β4γ1γ4δ1δ4ζ1ζ4θ1θ4κ1κ4λ1λ4μ1μ4ν1ν4π1π4ρ1ρ4σ1σ4ϲ1ϲ4τ1τ4φ1φ4χ1χ4ψ1ψ4β1ζ4β1θ4β1κ4β1μ4β1ν4β1ξ4β1π4β1σ4β1ϲ4β1τ4β1φ4β1χ4β1ψ4γ1β4γ1ζ4γ1θ4γ1μ4γ1ξ4γ1π4γ1σ4γ1ϲ4γ1τ4γ1φ4γ1χ4γ1ψ4δ1β4δ1γ4δ1ζ4δ1θ4δ1κ4δ1λ4δ1ξ4δ1π4δ1σ4δ1ϲ4δ1τ4δ1φ4δ1χ4δ1ψ4ζ1β4ζ1γ4ζ1δ4ζ1θ4ζ1κ4ζ1λ4ζ1μτζ2μ4ζ1ν4ζ1ξ4ζ1π4ζ1ρ4ζ1σ4ζ1ϲ4ζ1τ4ζ1φ4ζ1χ4ζ1ψ4θ1β4θ1γ4θ1δ4θ1ζ4θ1κ4θ1μσθ2μϲθ2μ4θ1ξ4θ1π4θ1σ4θ1ϲ4θ1τ4θ1φ4θ1χ4θ1ψ4κ1β4κ1γ4κ1δ4κ1ζ4κ1θ4κ1μ4κ1ξ4κ1π4κ1σ4κ1ϲ4κ1φ4κ1χ4κ1ψ4λ1β4λ1γ4λ1δ4λ1ζ4λ1θ4λ1κ4λ1μ4λ1ν4λ1ξ4λ1π4λ1ρ4λ1σ4λ1ϲ4λ1τ4λ1φ4λ1χ4λ1ψ4μ1β4μ1γ4μ1δ4μ1ζ4μ1θ4μ1κ4μ1λ4μ1ξ4μ1ρ4μ1σ4μ1ϲ4μ1τ4μ1φ4μ1χ4μ1ψ4ν1β4ν1γ4ν1δ4ν1ζ4ν1θ4ν1κ4ν1λ4ν1μ4ν1ξ4ν1π4ν1ρ4ν1σ4ν1ϲ4ν1φ4ν1χ4ν1ψ4ξ1β4ξ1γ4ξ1δ4ξ1ζ4ξ1θ4ξ1κ4ξ1λ4ξ1μ4ξ1ν4ξ1π4ξ1ρ4ξ1σ4ξ1ϲ4ξ1τ4ξ1φ4ξ1χ4ξ1ψ4π1β4π1γ4π1δ4π1ζ4π1θ4π1κ4π1μ4π1ξ4π1σ4π1ϲ4π1φ4π1χ4π1ψ4ρ1β4ρ1γ4ρ1δ4ρ1ζ4ρ1θ4ρ1κ4ρ1λ4ρ1μ4ρ1ν4ρ1ξ4ρ1π4ρ1σ4ρ1ϲ4ρ1τ4ρ1φ4ρ1χ4ρ1ψ4σ1δ4ϲ1δ4σ1ζ4ϲ1ζ4σ1ν4ϲ1ν4σ1ξ4ϲ1ξ4σ1ρ4ϲ1ρ4σ1ψ4ϲ1ψ4τ1β4τ1γ4τ1δ4τ1θ4τ1κ4τ1ν4τ1ξ4τ1π4τ1φστ2φϲτ2φ4τ1χ4τ1ψ4φ1β4φ1γ4φ1δ4φ1ζ4φ1κ4φ1μ4φ1ν4φ1ξ4φ1π4φ1σ4φ1ϲ4φ1χ4φ1ψ4χ1β4χ1γ4χ1δ4χ1ζ4χ1κ4χ1μ4χ1ξ4χ1π4χ1σ4χ1ϲ4χ1φ4χ1ψ4ψ1β4ψ1γ4ψ1δ4ψ1ζ4ψ1θ4ψ1κ4ψ1λ4ψ1μ4ψ1ν4ψ1ξ4ψ1π4ψ1ρ4ψ1σ4ψ1ϲ4ψ1τ4ψ1φ4ψ1χ4βρ_4γλ_4κλ_4κτ_6κς_6κϲ_4κσ_4λς_4λϲ_4λσ_4μς_4μϲ_4μσ_4νς_4νϲ_4νσ_4ρς_4ρϲ_4ρσ_4σκ_4ϲκ_4στ_4ϲτ_4τλ_4τρ_4φτ_", + 5 : "ο3ϊ3όο3ϊ3ό4γ1κτ4μ1πτ4ν1τζ4ν1τσ4ν1τϲ4γκς_4γκϲ_4γκσ_4μπλ_4μπν_4μπρ_4ντς_4ντϲ_4ντσ_", + 6 : "4ρ5γ2μ4ρ5θ2μ4λ5κ2μ4ρ5κ2μ4ν5κ2φ4γ5ξ2τ4ρ5ξ2τ4ρ5φ2ν4ρ5χ2μ4μ5ψ2τ4γ5κ2φ4γκ1ντ4γκ1τζ4γκ1τσ4γκ1τϲ4μπ1ντ4μπ1τζ4μπ1τσ4μπ1τϲ4ντ1μπ4τσ1γκ4τϲ1γκ4τσ1μπ4τϲ1μπ4τσ1ντ4τϲ1ντ", + 10 : "4χτ_4γκ1μπ" + } +}; diff --git a/resources/viewer/hyphenate/patterns/el-polyton.js b/resources/viewer/hyphenate/patterns/el-polyton.js new file mode 100644 index 0000000000..e7a23199f5 --- /dev/null +++ b/resources/viewer/hyphenate/patterns/el-polyton.js @@ -0,0 +1,26 @@ +// Hyphenation patterns for Modern Polytonic Greek. +// Created by Dimitrios Filippou with some ideas borrowed from +// Yannis Haralambous, Kostis Dryllerakis and Claudio Beccari. +// From http://tug.org/svn/texhyphen/branches/ptex/hyph-utf8/tex/generic/hyph-utf8/patterns/tex/hyph-el-polyton.tex +// Converted by Pablo Rodríguez (hyphenator at pragmata dot tk) +Hyphenator.languages['el-polyton'] = { + leftmin : 2, + rightmin : 2, + shortestPattern : 1, + longestPattern : 11, + specialChars : "αεηιουωϊϋἀἁἂἃἄἅἆἇἐἑἒἓἔἕἠἡἢἣἤἥἦἧἰἱἲἳἴἵἶἷὀὁὂὃὄὅὐὑὒὓὔὕὖὗὠὡὢὣὤὥὦὧὰὲὴὶὸὺὼᾀᾁᾂᾃᾄᾅᾆᾇᾐᾑᾒᾓᾔᾕᾖᾗᾠᾡᾢᾣᾤᾥᾦᾧᾲᾳᾴᾶᾷῂῃῄῆῇῒῖῗῢῦῧῲῳῴῶῷάέήίόύώΐΰάέήίόύώΐΰβγκδζθλμπντξρσϲςφχψ'ʼ᾿’᾽ῤῥ", + patterns : { + 2 : "α1ε1η1ι1ο1υ1ω1ϊ1ϋ1ἀ1ἁ1ἂ1ἃ1ἄ1ἅ1ἆ1ἇ1ἐ1ἑ1ἒ1ἓ1ἔ1ἕ1ἠ1ἡ1ἢ1ἣ1ἤ1ἥ1ἦ1ἧ1ἰ1ἱ1ἲ1ἳ1ἴ1ἵ1ἶ1ἷ1ὀ1ὁ1ὂ1ὃ1ὄ1ὅ1ὐ1ὑ1ὒ1ὓ1ὔ1ὕ1ὖ1ὗ1ὠ1ὡ1ὢ1ὣ1ὤ1ὥ1ὦ1ὧ1ὰ1ὲ1ὴ1ὶ1ὸ1ὺ1ὼ1ᾀ1ᾁ1ᾂ1ᾃ1ᾄ1ᾅ1ᾆ1ᾇ1ᾐ1ᾑ1ᾒ1ᾓ1ᾔ1ᾕ1ᾖ1ᾗ1ᾠ1ᾡ1ᾢ1ᾣ1ᾤ1ᾥ1ᾦ1ᾧ1ᾲ1ᾳ1ᾴ1ᾶ1ᾷ1ῂ1ῃ1ῄ1ῆ1ῇ1ῒ1ῖ1ῗ1ῢ1ῦ1ῧ1ῲ1ῳ1ῴ1ῶ1ῷ1ά1έ1ή1ί1ό1ύ1ώ1ΐ1ΰ1ά1έ1ή1ί1ό1ύ1ώ1ΐ1ΰ16'6ʼ6᾿", + 3 : "α2ια2ία2ία2ὶα2ῖα2ἰα2ἴα2ἲα2ἶα2ἱα2ἵα2ἳα2ἷά2ιά2ιά2ϊά2ϊα2υα2ύα2ύα2ὺα2ῦα2ὐα2ὔα2ὒα2ὖα2ὑα2ὕα2ὓα2ὗά3υά3υε2ιε2ίε2ίε2ὶε2ῖε2ἰε2ἴε2ἲε2ἶε2ἱε2ἵε2ἳε2ἷέ2ιέ2ιέ2ϊέ2ϊε2υε2ύε2ύε2ὺε2ῦε2ὐε2ὔε2ὒε2ὖε2ὑε2ὕε2ὓε2ὗέ3υέ3υη2υη2ύη2ύη2ὺη2ῦη2ὐη2ὔη2ὒη2ὖη2ὑη2ὕη2ὓη2ὗο2ιο2ίο2ίο2ὶο2ῖο2ἰο2ἴο2ἲο2ἶο2ἱο2ἵο2ἳο2ἷό2ιό2ιό2ϊό2ϊο2υο2ύο2ύο2ὺο2ῦο2ὐο2ὔο2ὒο2ὖο2ὑο2ὕο2ὓο2ὗό3υό3υυ2ιυ2ίυ2ίυ2ὶυ2ῖυ2ἰυ2ἴυ2ἲυ2ἶυ2ἱυ2ἵυ2ἳυ2ἷα2ηα2ϊα2ϋά3ϋά3ϋε2ηέ2ηέ2ηε2ϊε2ϋό2ηό2ηο2ϊω2ιὠ2ιι2αι2άι2άι2ὰι2ᾶι2ει2έι2έι2ὲι2οι2όι2όι2ὸι2ωι2ώι2ώι2ὼι2ῶ_ί3_ί3_ῖ3_ἰ3_ἱ3η2αῃ2αη2άη2άη2ὰη2ᾶῃ2άῃ2άῃ2ὰῃ2ᾶη2εῃ2εη2έη2έη2ὲῃ2έῃ2έῃ2ὲη2οῃ2οη2όη2όη2ὸῃ2όῃ2όῃ2ὸη2ωῃ2ωη2ώη2ώη2ὼη2ῶῃ2ώῃ2ώῃ2ὼῃ2ῶ_ή3_ή3_ῆ3_ἠ3_ἡ3υ2αυ2άυ2άυ2ὰυ2ᾶυ2ευ2έυ2έυ2ὲυ2ου2όυ2όυ2ὸυ2ωυ2ώυ2ώυ2ὼυ2ῶ_ύ3_ύ3_ῦ3_ὑ36β_6γ_6δ_6ζ_6θ_6κ_6λ_6μ_6ν_6ξ_6π_6ρ_6σ_6ϲ_6ς_6τ_6φ_6χ_6ψ_6β'6βʼ6β᾿6γ'6γʼ6γ᾿6δ'6δʼ6δ᾿6ζ'6ζʼ6ζ᾿6θ'6θʼ6θ᾿6κ'6κʼ6κ᾿6λ'6λʼ6λ᾿6μ'6μʼ6μ᾿6ν'6νʼ6ν᾿6ξ'6ξʼ6ξ᾿6π'6πʼ6π᾿6ρ'6ρʼ6ρ᾿6σ'6σʼ6σ᾿6ϲ'6ϲʼ6ϲ᾿6τ'6τʼ6τ᾿6φ'6φʼ6φ᾿6χ'6χʼ6χ᾿6ψ'6ψʼ6ψ᾿_β6_γ6_δ6_ζ6_θ6_κ6_λ6_μ6_ν6_ξ6_π6_ρ6_σ6_ϲ6_τ6_φ6_χ6_ψ6", + 4 : "ά3η_ά3η_ά3ι_ά3ι_ά3ϊ_ά3ϊ_ό2ειό2ειό3η_ό3η_ό3ι_ό3ι_ό3ϊ_ό3ϊ_6γκ_6μπ_6ντ_6τζ_6τσ_6τϲ_6τς_6μπ'6μπʼ6μπ᾿6ντ'6ντ’6ντ᾿6τζ'6τζʼ6τζ᾿6τσ'6τσʼ6τσ᾽6τϲ'6τϲʼ6τϲ᾿4β1β4γ1γ4δ1δ4ζ1ζ4θ1θ4κ1κ4λ1λ4μ1μ4ν1ν4π1π4ρ1ρ4ῤ1ῥ4σ1σ4ϲ1ϲ4τ1τ4φ1φ4χ1χ4ψ1ψ4β1ζ4β1θ4β1κ4β1μ4β1ν4β1ξ4β1π4β1σ4β1ϲ4β1τ4β1φ4β1χ4β1ψ4γ1β4γ1ζ4γ1θ4γ1κ4γ1μ4γ1ξ4γ1π4γ1σ4γ1ϲ4γ1τ4γ1φ4γ1χ4γ1ψ4δ1β4δ1γ4δ1ζ4δ1θ4δ1κ4δ1λ4δ1ξ4δ1π4δ1σ4δ1ϲ4δ1τ4δ1φ4δ1χ4δ1ψ4ζ1β4ζ1γ4ζ1δ4ζ1θ4ζ1κ4ζ1λ4ζ1μτζ2μ4ζ1ν4ζ1ξ4ζ1π4ζ1ρ4ζ1σ4ζ1ϲ4ζ1τ4ζ1φ4ζ1χ4ζ1ψ4θ1β4θ1γ4θ1δ4θ1ζ4θ1κ4θ1μσθ2μϲθ2μ4θ1ξ4θ1π4θ1σ4θ1ϲ4θ1τ4θ1φ4θ1χ4θ1ψ4κ1β4κ1γ4κ1δ4κ1ζ4κ1θ4κ1ξ4κ1π4κ1σ4κ1ϲ4κ1φ4κ1χ4κ1ψ4λ1β4λ1γ4λ1δ4λ1ζ4λ1θ4λ1κ4λ1μ4λ1ν4λ1ξ4λ1π4λ1ρ4λ1σ4λ1ϲ4λ1τ4λ1φ4λ1χ4λ1ψ4μ1β4μ1γ4μ1δ4μ1ζ4μ1θ4μ1κ4μ1λ4μ1ξ4μ1π4μ1ρ4μ1σ4μ1ϲ4μ1τ4μ1φ4μ1χ4μ1ψ4ν1β4ν1γ4ν1δ4ν1ζ4ν1θ4ν1κ4ν1λ4ν1μ4ν1ξ4ν1π4ν1ρ4ν1σ4ν1ϲ4ν1τ4ν1φ4ν1χ4ν1ψ4ξ1β4ξ1γ4ξ1δ4ξ1ζ4ξ1θ4ξ1κ4ξ1λ4ξ1μ4ξ1ν4ξ1π4ξ1ρ4ξ1σ4ξ1ϲ4ξ1τ4ξ1φ4ξ1χ4ξ1ψ4π1β4π1γ4π1δ4π1ζ4π1θ4π1κ4π1μ4π1ξ4π1σ4π1ϲ4π1φ4π1χ4π1ψ4ρ1β4ρ1γ4ρ1δ4ρ1ζ4ρ1θ4ρ1κ4ρ1λ4ρ1μ4ρ1ν4ρ1ξ4ρ1π4ρ1σ4ρ1ϲ4ρ1τ4ρ1φ4ρ1χ4ρ1ψ4σ1δ4ϲ1δ4σ1ζ4ϲ1ζ4σ1ν4ϲ1ν4σ1ξ4ϲ1ξ4σ1ρ4ϲ1ρ4σ1ψ4ϲ1ψ4τ1β4τ1γ4τ1δ4τ1θ4τ1ν4τ1ξ4τ1π4τ1φστ2φϲτ2φ4τ1χ4τ1ψ4φ1β4φ1γ4φ1δ4φ1ζ4φ1κ4φ1ν4φ1ξ4φ1π4φ1σ4φ1ϲ4φ1χ4φ1ψ4χ1β4χ1γ4χ1δ4χ1ζ4χ1κ4χ1μ4χ1ξ4χ1π4χ1σ4χ1ϲ4χ1φ4χ1ψ4ψ1β4ψ1γ4ψ1δ4ψ1ζ4ψ1θ4ψ1κ4ψ1λ4ψ1μ4ψ1ν4ψ1ξ4ψ1π4ψ1ρ4ψ1σ4ψ1ϲ4ψ1τ4ψ1φ4ψ1χβγ2κσγ2κϲγ2κσμ2πϲμ2πμν2τσν2τϲν2τ6βρ_6γλ_6κλ_6κτ_6κς_6κϲ_6κσ_6λς_6λϲ_6λσ_6μς_6μϲ_6μσ_6νς_6νϲ_6νσ_6ρς_6ρϲ_6ρσ_6σκ_6ϲκ_6στ_6ϲτ_6τλ_6τρ_6φτ_6χτ_", + 5 : "ο3ϊ3όο3ϊ3όο3ϊ3ὸβ5ν2τζ5ν2τλ5ν2τρ5ν2τ", + 6 : "4ρ5γ2μ4ρ5θ2μ4λ5κ2μ4ρ5κ2μ4γ5κ2φ4ν5κ2φ4γ5ξ2τ4ρ5ξ2τ4ρ5φ2ν4ρ5χ2μ4μ5ψ2τ4λ5γ2κ4ν5γ2κ4ρ5γ2κ4τ5γ2κ4ζ5μ2π4λ5μ2π4ν5μ2π4ρ5μ2πἄ5μ2ακἀ5μ2πρὄ5μ2ποὀ5μ2ποὀ5ν2τάὀ5ν2τάὀ5ν2τὰὀ5ν2τᾶ6μ2πλ_6μ2πν_6μ2πρ_", + 7 : "ἰ5γ2κου_ξε5γ2κ_ξέ5γ2κ_ξέ5γ2κ_σι5γ2κ_ϲι5γ2κἀ5μ2πάκἀ5μ2πάκἀ5μ2πανἀ5μ2πάρἀ5μ2πάρἀ5μ2πᾶρἀ5μ2παρἀρα5μ2πἰ5μ2πρα_κε5μ2π_λό5μ2π_λό5μ2π5μ2πέη_5μ2πέη_5μ2πεη_5μ2πογι_ξε5μ2π_ξέ5μ2π_ξέ5μ2π_ρε5μ2π_ρέ5μ2π_ρέ5μ2π_ρο5μ2πρό5μ2παρό5μ2παρό5μ2περό5μ2περό5μ2πωρό5μ2πωρο5μ2πῶρο5μ2παρο5μ2περο5μ2πωσό5μ2πασό5μ2παϲό5μ2παϲό5μ2πασό5μ2πεσό5μ2πεϲό5μ2πεϲό5μ2πεσο5μ2πῶϲο5μ2πῶσό5μ2πωσό5μ2πωϲό5μ2πωϲό5μ2πωσο5μ2παϲο5μ2πασο5μ2πεϲο5μ2πεσο5μ2πωϲο5μ2πω_τα5μ2π_χα5μ2π_χό5μ2π_χό5μ2π_ξε5ν2τ_ξέ5ν2τ_ξέ5ν2τ6γ2κ1τζ6γ2κ1τσ6γ2κ1τϲ6μ2π1τζ6μ2π1τσ6μ2π1τϲ6τσ5γ2κ6τϲ5γ2κ6τσ5μ2π6τϲ5μ2π6τσ5ν2τ6τϲ5ν2τ", + 8 : "ἐμι5γ2κρ_μπα5γ2κ_μπι5γ2κ_σπά5γ2κ_σπά5γ2κ_ϲπά5γ2κ_ϲπά5γ2κ_σπα5γ2κ_ϲπα5γ2κ_φιό5γ2κ_φιό5γ2κ_φιο5γ2κἀ6μ3πάριἀ6μ3πάριἀ6μ3παρι_γά5μ2πι_γά5μ2πι_γα5μ2πι_ζεϊ5μ2π_κό5μ2πρ_κό5μ2πρ_κο5μ2πρ_λι5μ2πρ5μ2πέης_5μ2πέης_5μ2πέηϲ_5μ2πέηϲ_5μ2πεης_5μ2πεηϲ_5μ2πέησ_5μ2πέησ_5μ2πεησ__μπι5μ2π_τρο6μ3π_τρό6μ3π_τρό6μ3π_ρου5μ2π_σέ5μ2πρ_σέ5μ2πρ_ϲέ5μ2πρ_ϲέ5μ2πρ_σνο5μ2π_ϲνο5μ2π_σού5μ2π_σού5μ2π_ϲού5μ2π_ϲού5μ2π_σου5μ2π_ϲου5μ2π_τζά5μ2π_τζά5μ2π_τζα5μ2π_τζι5μ2π_τό5μ2πρ_τό5μ2πρ_το5μ2πρ_φρα5μ2πἀ5ν2τάτζἀ5ν2τάτζ_βί5ν2τε_βί5ν2τε_βι5ν2τε_κα5ν2τρ_μαϊ5ν2τ_μπε5ν2τ_μπι5ν2τ_ντα5ν2τ5ν2τίβαν5ν2τίβαν_ρε5ν2τί_ρε5ν2τί_ρε5ν2τι_ροῦ5ν2τ_ρού5ν2τ_ρού5ν2τ_χα5ν2το_χα5ν2τρ_χά5ν2τρ_χά5ν2τρ6γ2κ5μ2π6γ2κ5ν2τ6μ2π5ν2τ6ν2τ5μ2π", + 9 : "5γ2κραντ_ἴντρι5γ2κἰντρι5γ2κ_μα5γ2κιό_μα5γ2κιό_ντά5γ2κλ_ντά5γ2κλ_ντα5γ2κλἀλα5μ2πουἀρλού5μ2πἀρλού5μ2πἀρλοῦ5μ2πἀρλου5μ2π_βό5μ2πιρ_βό5μ2πιρ_βο5μ2πιρ_κα5μ2πάδ_κα5μ2πάδ_κα5μ2πίν_κα5μ2πίν_κα5μ2πῖν_κα5μ2πιν_κά5μ2ποτ_κά5μ2ποτ_κα5μ2πότ_κα5μ2πότ_κα5μ2ποτ_καου5μ2π_καρα5μ2π5μ2πα5μ2π5μ2πά5μ2π5μ2πά5μ2π5μ2πέ5μ2π5μ2πέ5μ2π5μ2πε5μ2π_νό5μ2πελ_νό5μ2πελ_νο5μ2πελ_ντό5μ2πρ_ντό5μ2πρ_ντο5μ2πρ_σα2μ5ποτ_ϲα2μ5ποτ_τε5μ2πεσ_τε5μ2πεϲ_τζου5μ2π_τσά5μ2πα_τσά5μ2πα_τϲά5μ2πα_τϲά5μ2πα_τσα5μ2πα_τϲα5μ2παἀτρα5ν2τέἀτρα5ν2τέἀτρα5ν2τὲ_γιβε5ν2τ_γκάι5ν2τ_γκάι5ν2τ_γκάϊ5ν2τ_γκάϊ5ν2τ_γκαϊ5ν2τ_κα5ν2ταΐ_κα5ν2ταΐ_κα5ν2ταϊ_μα5ν2τάμ_μα5ν2τάμ_μα5ν2τὰμ_μα5ν2ταμ_μα5ν2τέμ_μα5ν2τέμ_μα5ν2τεμ_μεϊ5ν2τά_μεϊ5ν2τά_μεϊ5ν2τα_μο5ν2τέλ_μο5ν2τέλ_μο5ν2τελμο5ν2τέρνμο5ν2τέρνμο5ν2τερν_νισα5ν2τ_νιϲα5ν2τ_ρεζε5ν2τ_σε5ν2τέφ_σε5ν2τέφ_ϲε5ν2τέφ_ϲε5ν2τέφ_σε5ν2τεφ_ϲε5ν2τεφ_σε5ν2τοῦ_ϲε5ν2τοῦ_σε5ν2τού_σε5ν2τού_ϲε5ν2τού_ϲε5ν2τού_σε5ν2του_ϲε5ν2του_τσα5ν2τί_τσα5ν2τί_τϲα5ν2τί_τϲα5ν2τί_τσα5ν2τι_τϲα5ν2τι", + 10 : "_γιου5γ2κο_καρα5γ2κι_χούλι5γ2κ_χούλι5γ2κ_χουλι5γ2κ_γιαρα5μ2π_καλα5μ2πα_καλί5μ2πρ_καλί5μ2πρ_καλι5μ2πρ_κα5μ2παρέ_κα5μ2παρέ_κα5μ2παρὲ_κα5μ2παρε_καρνα5μ2π_κολι5μ2πρ_κου5μ2πού_κου5μ2πού_κου5μ2ποῦ_κου5μ2που5μ2πέηδες_5μ2πέηδες_5μ2πέηδεϲ_5μ2πέηδεϲ_5μ2πέηδεσ_5μ2πέηδεσ_5μ2πέηδων_5μ2πέηδων__μπό5μ2πιρ_μπό5μ2πιρ_μπο5μ2πιρ_μπο5μ2πότ_μπο5μ2πότ_μπο5μ2ποτ_σκα5μ2παβ_ϲκα5μ2παβ_ταβλα5μ2π_τζανα5μ2π_τρα5μ2πάλ_τρα5μ2πάλ_τρα5μ2παλ_φά5μ2πρικ_φά5μ2πρικ_φα5μ2πρικ_μπαλά5ν2τ_μπαλά5ν2τ_μπαλα5ν2τ_μπα5ν2ταν_μπου5ν2τα_μπου5ν2τρ", + 11 : "_καρα6μ3πόλ_καρα6μ3πόλ_καρα6μ3πολ_κολού5μ2πρ_κολού5μ2πρ_κολοῦ5μ2πρ_κολου5μ2πρ_κο6μ3πρέσσ_κο6μ3πρέσσ_κο6μ3πρέϲϲ_κο6μ3πρέϲϲ_κο6μ3πρεσσ_κο6μ3πρεϲϲ_κοντρα5μ2π_κωλού5μ2πρ_κωλού5μ2πρ_κωλοῦ5μ2πρ_κωλου5μ2πρ_μανιτό5μ2π_μανιτό5μ2π_μπα6μ3πάκι_μπα6μ3πάκι_μπα6μ3πακι_ρεπού5μ2πλ_ρεπού5μ2πλ_ρεπου5μ2πλ_τα6μ3περαμ_τα6μ3ποῦρλ_τα6μ3πούρλ_τα6μ3πούρλ_τρα5μ2ποῦκ_τρα5μ2πούκ_τρα5μ2πούκ_τρα5μ2πουκ_τσι5μ2πούκ_τσι5μ2πούκ_τϲι5μ2πούκ_τϲι5μ2πούκ_τσι5μ2πουκ_τϲι5μ2πουκ_τσι5μ2πούσ_τσι5μ2πούσ_τϲι5μ2πούϲ_τϲι5μ2πούϲ_τσι5μ2πουσ_τϲι5μ2πουϲ_γιαχου5ν2τ", + 12 : "_σαλτιπά5γ2κ_σαλτιπά5γ2κ_ϲαλτιπά5γ2κ_ϲαλτιπά5γ2κ_κουλού5μ2πρ_κουλού5μ2πρ_κουλοῦ5μ2πρ_κουλου5μ2πρ_μπου5μ2πούν_μπου5μ2πούν_μπου5μ2ποῦν_μπου5μ2πουν_χοντρο5μ2πα_λικβι5ν2ταρ_ντερμπε5ν2τ_ντου5ν2τούκ_ντου5ν2τούκ_ντου5ν2τοῦκ_ντου5ν2τουκ_φαστφου5ν2τ_φαϲτφου5ν2τ", + 13 : "_μπασκε2τ5μ2π_μπαϲκε2τ5μ2π_μπασι5μ2πουζ_μπαϲι5μ2πουζ" + } +}; diff --git a/resources/viewer/hyphenate/patterns/en-gb.js b/resources/viewer/hyphenate/patterns/en-gb.js new file mode 100644 index 0000000000..6cc34e95a2 --- /dev/null +++ b/resources/viewer/hyphenate/patterns/en-gb.js @@ -0,0 +1,18 @@ +// The en-GB hyphenation patterns are retrieved from +// http://tug_org/svn/texhyphen/trunk/collaboration/repository/hyphenator/ +Hyphenator.languages['en-gb'] = { + leftmin : 2, + rightmin : 3, + shortestPattern : 2, + longestPattern : 8, + specialChars : "", + patterns : { + 3 : "sw2s2ym1p2chck1cl2cn2st24sss1rzz21moc1qcr2m5q2ct2byb1vcz2z5sd3bs1jbr4m3rs2hd2gbo2t3gd1jb1j1dosc2d1pdr2dt4m1v1dum3w2myd1vea2r2zr1we1bb2e2edn1az1irt2e1fe1j4aya4xr1q2av2tlzd4r2kr1jer1m1frh2r1fr2er1bqu44qft3ptr22ffy3wyv4y3ufl21fo1po2pn2ft3fut1wg1ba2ra4q2gh4ucm2ep5gp1fm5d2ap2aom1cg3p2gyuf2ha2h1bh1ch1d4nda2nhe22oz2oyo4xh1fh5h4hl2ot2hrun1h1wh2y2yp2aki2d2upie22ah2oo2igu4r2ii2omo1j2oiyn1lz42ip2iq2ir1aba4a2ocn3fuu4uv22ix1iz1jay1iy1h2lylx4l3wn5w2ji4jr4ng4jsy1gk1ck1fkk4y5fk1mkn21vok1pvr44vsk1t4vyk5vk1wl2aw5cn2ul3bw5fwh2wi2w1m1wowt4wy2wz4x1an1in1rn1ql3hxe4x1hx1ill24lsn3mlm2n1jx1ox3plr4x5wxx4", + 4 : "d3gr_fi2xy3ty1a2x5usy5acx1urxu4on2ielph2xti4ni2gx4thn2ilx1t2x1s25niql3rix4osxo4n1logn2ivx5om1locl3ro2lo_l3nel1n4_hi2l5rul1mexi4pl1max3io_ex1l1lu_ig3ll5tll3sll3p_in14n2kl1loll3mn3le_ew4n1n4nne4l1lixi4cll3fn3nil1lal5skls4p_eu14no_l4ivx3erx3enl1itx1eml1isx5eg3lirli1qxe2d3lik5lihx1ec1lig4y1bn1oun4ow4li_x3c4yb2il1g2l2fox2as1leyn3p42lev1letx2ag4ni_l1te_es1nhy2yc1l4n1sw3tow5tenho4ns2cwra42lerle5qn2si3womwol4l1try1d4lek42ledwl1in3suw3la4le_l3don1teldi2nth2lce4yda4l1c2l1tu4lu_l4by_od4lbe4lu1a4laz_oi4l4awnt2iwes4l4aul4asn2tjla4p_or1n1tr5wein1tun2tyn1h2w4ednu1awe4b5nuc_os13nudl4all4af_ov4w3drl4aey3eenu3iw1b45nukl4ac5laa4la_4lue3kyllu1in1gu4wabn1go_ph2v5vikur5_en12vv2ks4ty3enk3slv5rov5ri4k1sk3rung1n2vowy1erkol4ko5a4vonk2novo2l2vo_5lupn2gingh4k3lok3lik3lak2l2ng2aki4wvi2tkis4k1inki2l5kihk3holu1vke4g3kee4kedkdo4_sa2k5d2_eg4k1b4kav4kap4vim4ka3ovi4lk4ann3v2nve2vic2ka4lju1v4vi_ju5ljui4_sh2ygi2nfo4_st44jo_3jo2jil43jigl4vi2vel3veive3gjew3jeu42ve_4jesjeo2y3gljal43jac2ja__th44ly_2izz_ti22izo_do2i5yeix3oy3in2i1wn2x4i2vov4ad2ny25nyc5vacn1z24va_nzy4uy4aux2o2oa2o3ag2ivauve2u4vayle2i3um2ittly1c4obau3tu2itrob2i4obo_up12ithob5tuts2lym2ut2o_ve2oc2ait1a2isyo1clo1crut2ioct2is1pis1lo1cy4usto2doo2du4isblyp2n4ew2ab_2abai4saoe3a2abbus1pir2sir4qoe4do5eeir1ioep5o5eqo3er2usco1etir1a3lyr3lywipy43oeuo3evi3poab1ro3ex4ofo2o1gur1uo2ga2abyac2a3lyzi5oxo3gii3oti1orioe4ur2so2gui1od2io22acio1h2ur1o2inuo3hao3heohy44ma_oi4cins24inqoig4ac1r2ino2inn4inl4inkur1ioi4our2f4oisoi4t2iniynd4ok3lok5u2ind2inco1loyn2eo1mai2moom1iur2ca2doim1iil3v4iluon1co2nead1ril3f4onh2ik24iju4adyae5aija4i5in4aed2mahae5gihy4ae5pur1aae4s2i1h4igions2i1geyng42ont4af_4afe5maka4fui3fyu2pri3foon2zn1eru4po4agli2fe2i1foo1iu1ph4ieua2groo4moo2pyn4yi1er4iemie5ia1heah4n4iec2ai24ai_ai3aa1icne2p4idraig2oo2tu1peo1paop1iy1o2u1ouu3os4oplid1ayo3d2icuop1uor1a2ick4ich2a1ja4ju2mam4iceak5u4ibuunu44iboib1i2oreiav4i3aui3atun5ror1iun5o2alei5aii3ah2unniaf4i5ae2ormhy4thyr4hy3ohyn4hy2m2orthy2l1man2nedhuz4un2ihu4gh1th4alko1sch4skhsi42mapu1mu2h1shry4hri4hre41mar4h1pum2ph2ou4osp4osuy2ph4oth4ho_u1mi2h1mh1leh3la2ne_h4irhi2pu1mao4u2oub2h1in2a2mhi4l4oueu1lu2ulsoug4h1ic2hi_u1loul3mnde24ulln2daheu2ul2iou3mam1ihet12ounhep1ow1iows4ow5yyp1nox3ih4eiox5oypo1oy5aoys4u1la4ul_am2pu2izmav4h2ea4he_y2prhdu42m1ban2ao1zo_ch4mb4dy5pu4pa_ha4m1paru2ic5pau2ui2h4ac4ha_u4gon1cug5z2uft43gynu4fou3fl3ufa5gymmb2iue4tgy2b4anhnc1t2g1w5paw3gun2p1bu4edueb4p1c42guep5d2an1og5to2pe_gs4tgs4c2g1san2s2ped3grug4rou2dog4reud4g1gr2n1crgov12gou3gosud4e3goop4ee3goe5god3goc5goa2go_pe2fg2nog1niuc3lg1na2gn2an2y2pes3gluyr4r3pet5aowyr4s4ap_4apa3glo4pexyr5uu4ch2gl24y2s5gip2me_3gioap1i2ph_gi4g3gib4gi_uba41g2igh2tg3hoa2prphe44aps2medg2gegg4ame2g2g1gy3shu1alua5hu2ag2g1f3get2ua2ph2lge4o1pho2tz23gen4phs1gel1typ4gef2ge_g5d4me2m1phug1at4pi_p2iety4a4ty_p2ilt3wopim23gait2wi3gagn3b44ga_5piqar3har1i1tutfu4c4fu_1menp2l23tunna2vfs4p2f3s1pla1fr2tu1ifo3v4tufp4ly2p1myso53foo2arrme4par2stu1afo2n4tu_4po_t2tytt5s3pod2aru4poffo2e3foc4fo_ar5zas1ays1t3flu2asc3flo3flan2asas2et3ti2fin5poypph44f5hf3fr1pr2f1fif1fena5o3feufe4t4pry2ps22asotta4p3sh5fei3fecass2p1sits2its4ht2sc2fe_4t1s2f5d4f5b5faw5farp1st2pt2as1u2fa_1f2aeyl44ey_1expe1wre3whe1waevu4p4trp1tupub1puc4p4uneus44eumeuk5eue4p4uset5zyzy4z1a14p1wet2t2p4y4tovpy3e3pyg3pylpy5t2za__av44ra_r2adras2et2ae1su1namr2bat1orr2berb2ir1c2r2clrct4nak24re_rea4e2sc4es_2erza2to5tok2erurei4erk44erj1tog3toere1qre1vza2irf4lr1g2r2gez4as4ri_2ereto1b2erd2to_2erc4m3hri3ori5reph14mi_2au24au_m1ic4auc4t3me1paeo3mt1lieo2leof2eo3b4enur1lar1leaun2r1loen2sen1ot1laen3kzeb4r1mur2n24ene2end3tiurn5nrnt4ze4d4ro_r2od4roiroo4r2opelv4e1lur4owti4q1tip4roxrpe2r2ph1tior3puaw1i5nahaw5y4mijr3ri_as12eleay3mayn4ays2r5rurry5ek4l2az2m2ilaze4e2ize2iv4eis2ba_t1ineig24eifeid45bahba4ir2seehy21timeh5se5hoe1h2e2gr2efuef4lna2ceep1ee2mee1iee5gee2fr3su2na_rt3ced4g1basede23mytr1turu3ar2udr4ufe1clru2le1ceru2pb1c2ec2a2b1deb2te2bre4bl3myi4be_3beaeb2iebe4eb2b2bedzib5r1v2r2veeau3t1icmy3e5bee3bef2r2yry2tz2ie1bel2sa_2sabeap25saebe3meak1ea4gsa4g3sai4ti_5sak4beobe3q4eabmy4dd3zo3dyndyl25dyksa2l2d2y2d1wsa4mbe3w2b1fbfa44b1hb4ha2bi_1biazi5mdu3udu2ps3apb4ie3ducbif42ths2du_z4isb1ilmi3od4swds3m4bimd5sl1saumi3pz3li3dox4s3bd4osd2or3doosby3bip4bi5qbir44zo_s1cab2iss1cedo4jd4ob4do_5zoa2d1mmtu4d5lu2bl2d1losch2d1la2dl4tha42th_m5si4m1ss2co2t3f1diu2se_se2a4bly2b1m3texbmi44b1nm4ry4bo_3boa2sed5bobdil4bo5h3sei1didse2p1dia4di_d4hu3bon4d1hxys4dg4ami2t2d5f1boo3dexs2es1set3sev3sex3sey2s1fsfi4_an1d3eqde1ps4idsif4bow2si4g2sin5boyzo5p3sipde3gs1it3dec2de_d3di2tep3miute2od1d4d3c4zot23davs2k24sk_d1atske2d3ap4sksd1agb3sc2sl44da_5zumb5sicy4tbso2te2ltei4cys4cy4m2b1tcyl34bu_5bubte2g1cyc2cy_bun2cu5v5cuu1cuss2le1curt4edc4ufc1tyc1tu4te_c1trs1n2s2na2so_t1ca5mix4b3w4zy_4by_3byibys45byt2ca_2tc23soes2olc1te5cafsos45cai5cakc1al3sou4t3bt4axc2ta4m1lcry2sph2s1plc2res2pos4pym3pum3pocoz4cov14mo_sre22moc5cao1caps1sa3cooss3mcon11cars4sns1sos1su1takss3wmod13coe4st_1tai3tah3coc3coa4co_taf4c3nim2pist3cc1atste2mo1mc4kem4ons1th2cim3cau2tab2ta_3cayc1c44stl3cilc3ch3syn4cigci3f4ce_4ci_3chrs1tu1cho2ced4chm1sylch5k4stw4cefce5gs4tysy4d4su_sug3sy1c3sui4ch_m3pa2cem4sy_cew4ce2t1cepsu5zm4op2swo2s3vzzo3", + 5 : "n5tau2cenn3centsves45swee5cencsu5sus4urg1cen2sur3csu5pe3cerasun4a3cerdsum3i5cern5cesss4u2m1s2ulce4mo3cemi4celysy4bi4chab3chae3chaisui5ccelo45cellchec44ched3chee3chemsuf3fch1ersu3etsud4asuct44chessubt2ch5eusu4b13chewch5ex5chi_3chiasu5ansy4ce1styl3ceiv3chio5chip3cedi3cedestu4m5cedace4cicho3a5choc4chois4tud3chor3ceas2st3sstre43chots2tou3stonchow5cean3chur43chut5chyd3chyl3chym1c2i24ceab4ciaccia4mci3ca4cids4cie_ci3ers4toeci5etccle3cifi4ccip4ci3gast3lisyn5esyr5icat4ucim3aci3mes5tizs4thu4cinds4thac4atss4tec4cintci3olci5omci4pocisi4cit3rt2abockar5cka5tt5adeck5ifck4scc2atcs4teb3clasc2le22cle_c5lecc4at_clev3cli1mtad4icli2qclo4q4stakclue4clyp55clystad2rtae5n1c2o2case5car4vco5ba3tagrco3cico5custab23tail4cody2tairco5etco3grcar5mt4ais4col_col3atal2css5poco5lyta3lyco4met4anecomp4cap3uta4pass5liss1ins1sifs1siccon3scon3ts3siacapt4coop4co3orcop4eco3phco5plco3pocop4t2corassev3s5seus1sel1tard3corn4corotar3n5cort3cos_sre4ssreg5co5ta3tarr5cotytas3it3asmco3vacow5a5tassco5zic4anotas4t5craftat4rc4ran5spomcam4is4plysple2ca3maca3lys2pins2pids3phacal4m4speocri3lcron4so3vi4crousov5et5awacrym3cryo34c5s4csim5tawn43calcc3tacc4alaso5thct1an4soseca3gos3orycad4rc4teasor3os2o2ps4onect5esct5etct2ics2onaso3mo1so2mc3timsol3acaco3c4acesody4sod3oc5tio2s3odc3tittcas4tch5u4t1d4smo4dsmi3gc1tomc3tons3mensmas4b3utec2tres3man3bustc2tumte3cr2s1m4buss2s5lucslov5c2ulislo3cs3lits5leycu4mi5cunacun4e5cuni5cuolcu5pacu3pic3upl4tedds3lets5leabur3ebunt4cus5a3slauc3utr4tedobun4a4teeicy4bib4ulit3egoteg1rcy5noteg3us1latbsin41tellbsen4d4abr1d2acdach43tels3dact4b1s2sky3ld4aled4alg4bry_dam5a3damed3amida5mu3dangs5keybrum4d3ard5darms3ketbros4tem3as5kardat4ub4roa4teme4tenet5enm4tenob2ridteo5l4bre_5sivad3dlid3dyite3pe4s1ivde5awde4bisi4teb2ranbram44sismde1cr4dectded3i4sishs1is24bralde4gude3iosi4prtep5i4sio_1sio45sinkde5lo1d4emsin3is2ine4boxy1silibow3ssif5f4demybous4den4d4dened3enh4sidssi4de4sid_3bourde3oddeo3ldeon2si4cu5terd3sicc4s1ibde2pu5botishys44shu4d4eres3hon5shipsh3io1derider3k3dermsh5etsh1er4shab1teri2s1g4der3s5deru4des_de3sa5descbor4nter5k3terrdes4isexo23borides1psewo4de3sq2t2es5seum1de1t4tes_de5thde2tise5sh4ses_bor3d3septsep3atesi4t3esqdfol4tes4tteti4dgel4d4genbon4ebon4cdhot4bol4tbol3itet1rdi2ad3diarbol4e4d1ibd1ic_3sensdi4cedi3chd5iclsen5g1dictsem4osem2i5self4sele4boke5selasei3gd4ifo2boid3seedbod5i5dilldilo4di3luse4dabo5amdi1mi2d1indin4ese2cosec4a3di1odio4csea3wdip5t3diredi3riseas4di4s1d4iscs4eamb3lis3dissbli2q2s1d22s1cud3itos4coi2ditybli3oscof44blikscid5dix4i3bler4the_b3lan5dlefblag43dlewdlin45blac4b5k4bi5ve4d1n24bity4thea4thed4sceidog4abis4od4ol_s4ced5bismscav3sca2pd4ols5dom_1thei3theobi3ousbe4sdo5mos4bei4donybio5mbio3l4dor_dor4mdort41bi2ot4hersavi2dot1asaur52dousd4own4thi_th5lo2thm25binad3ral3dramdran4d4rassat1u3dreldres4sa2tedri4ed4rifs2a1td4romsas3s3sas_4d1s2th4mi3thotds4mi1th2rb2iledt5hobigu3bi5gadu1at5thurduch5sar5sdu4cosap3rbid5idu5en2santdu5indul3cd3uledul4lsan3adun4asamp43b2iddu3pl5durod5usesam5o5thymbi4b1dver2be3trsa3lube3sl3sale2bes_be1s2dy5ar5dy4e3thyrber5sdyll35dymi5berrdys3pberl4thys42beree1actbe5nuea5cue5addbe1neead1i1ti2ati3abben4deal3abel4tsad5osad5is3actean5i2t3ibsac4qe3appear3a5sacks3abl2belebe3labe3gube5grryp5arym4bry4goeas4t5rygmry5erbe3gobe4durvi4tr3veyr3vetr3vene4atube4doeav5ibed2it3ic_eaz5ibe3daebar43becube3caru3tirus4pe2beneb5et4bease5bile4bine4bisbdi4ve4bosrur4ibde4beb1rat2icie4bucru3putic1ut3id_run4trun4ge5camrun2eec3atr4umib3blir4umeech3ie4cibeci4ft4ida2b1b2ru3in3tidirue4lt5idsru4cerub3rr4ube1tif2ec1ror4tusti3fert5sirto5lr1t4oec1ulrt3li4tiffr2tize2dat3tigie4dede5dehrt3ivr2tinrth2ir5teue3deve5dew5barsr5tetr1ted4tigmr3tarrta4grt3abed1itedi2v5tigued3liedor4e4doxed1ror4suse2dulbar4nrs5liee4cers3ivee4doti4kabar4d5barbr4sitba4p1r3sioeem3ib4ansee4par4sileesi4ee3tot4illr5sieefal4rs3ibr3shir3sha5bangr3setb4anee4fugrsel4egel3egi5ae4gibe3glaeg3leeg4mir3secr3seat4ilte5gurban4abam4abal5utim1abal3abag4a5eidobaen43backr4sare4in_e3ince2inee1ingein5ir2sanei4p4eir3oazz4leis3ir2saleith4azyg4r4sagaz5eeaz3ar2r1s2ek3enek5isayth4e4lace5ladr3rymelam4r3ryi3tinnay5sirro4trrog5rrob3ay5larric4ax2idrrhe3rre2lele3orrap4el1ere1lesrra4h4r1r44tinst4intrpre4el5exrp5ise1lierph5ee3limav1isti3ocrp3atav3ige3livavas3r4oute3loae3locroul35rouero3tue2logro1te4rossr4osa4roreel3soror5dav5arelu4melus42t1ise5lyi3elytr4opr4rop_emar4tis4c5root1roomem5bie1me4e4meee4mele3mem3tissro1noro3murom4pe4miee2migro3lyro3laroid3e3mioro3ictis2te4miuro3gnro1fero3doava4ge2moge4moiro3cuem5om4emon5roccro5bre2morro4beav4abr5nute5mozrnuc4au3thr5nogr3noc3titlem3ume5muten3ace4nalrn3izrni5vr1nisrn3inr3nicrn5ibr5niaenct42t1ivr3neyr3netr3nelaus5pene5den3eern5are5nepe2nerr5nadr3nacrn3abt3iveen1et4aus_rmol4e3newen3gien3icr3mocrmil5en5inr5migaur4o5tleben3oieno2mrm4ieenov3aun3dr2micen3sprme2arm4asr2malr5madr3mac3tlefen2tor4litau3marlat33tlem5tlenen3uaen3ufen3uren5ut5enwa5tlewe4oche4odaaul4taul3ir3keyr3ketrk1ere5olutlin4eon4ae3onteop4te1or1r5kaseor3eeor5oeo1s2eo4toauc3oep4alaub5iepa4t4a2tyr2i4vr2ispris4cep5extmet2eph4ie2pige5pla2t3n2ri5orri4oprio4gatu4mrin4sr4inorin4e4rimse1p4u4rimmr4imbri2ma4rim_at1ulr4ileri2esera4gera4lri3erri5elrid4e2ricur4icl2riceri3boer3be2r2ib2a2tuer3cher3cltoas4ri5apri3am4toccat1ri4ered3r2hyrhos4tod4irgu5frg5lier3enr3gerr3geor5geee3reqer3erere4sa4trergal4r4gagat3rarfu4meret42a2tra5tozatos4ere4ver3exreur4er3glre3unre3tur3esq2res_er2ider3ierere4rer4aer3into5dore5phre1pe3reos3reogre3oce3river5iza3too4atoner3mer4enirene2rena4r3empr5em_re1le4ero_re1lam5ordreit3re3isre1inre3if2atolre2fe3reerree3mre1drre1de2r4ed4atogeru4beru5dre3cure3ce3reavr5eautol4ltolu5es5ames5an4atiure3agre3afr4ea_to5lye3seatom4be5seeat1itese4lr4dolrd3lie1shie5shurdi3ord2inr5digr4dier4desr2dares3imes3inr5dame4sitrc5titon4er5clor4clees4od3tonnrcis2rcil4eso3pe1sorr2cesrca4ston3ses4plr4bumr2bosrbit1r2binrbic4top4er4beses2sor3belrbe5ca4timrbar3e2stirb1anr4baga2tif4toreest4rrawn4tor5pra3sor4asktor4qr2aseras3cati2crare2eta3p4rarcran2tet4asra3mur5amnet5ayra3lyra3grra4de3tos_eter2r2acurac4aetex4e2th1r2abo2etia5rabera3bae5timet3inath5re3tir5quireti4u1quet2que_e2ton4quar5quaktos4ttot5uath3ipyr3etou4fet1ri5tourt3ousath3aet1ro4a2that5etetud4pu3tre4tumet4wetra5q3tray4ater4tre_4trede3urgeur5itren4pur3cpur5beut3ipu3pipun2tpun3i3puncev3atpun4aeve4n4trewpum4op4u4mpu5ere4vese1viapuch4e2vict2rieevid3ev5igpu5be2trilt2rit4trixe4viuevoc3p5tomp3tilata3st4rode4wage5wayew1erata3pew5ieew1inp5tiee3witatam4ex5icpt4ictro5ft2rotey4as2a2taey3s2p5tetp1tedez5ieas5uras4unfab4ip2tarfact2p4tan2f3agp4tad5falopt3abtro1v3psyc3troypso3mt4rucfar3itru3i2t4rytrys42asta3feast4silfeb5ras3ph2fed1as5orfe1lifem3i2t1t4p3sacf5enias4loas4la3feropro1l4pro_3ferrfer3v2fes_priv24priopren3aski43prempre1dfet4ot3tabpreb3as5iva3sit4pre_f5feta5siof5fiaf3ficf5fieffil3prar4ff4lepra5dffoc3prac1as3int5tanppi4ct5tast3tedfib5u4fic_ppet33fici4ficsppar34p1p2fiel4asep4p5oxi1fi2l4asedfin2apo1tefind3fin2ef1ing3p4os3portpor3pf3itapo4paas2crt3tlifle2s2ponyflin4t5toip4o2nasan2pom4eas4afa5ryta3ryot5torar3umt3tospo3caar2thar3soar2rhar4pupnos4tu5bufor5bar3oxtu5en5formplu2m2plesaro4ntu4is3plen3plegfrar44ple_fre4sar3odfruc42tum_3tumi4tumsf1tedtun4aft5es2p3k2p2itutu4netur4dtur4npis2sfug4ap4iscfun2gp4is_fur3npir4tfus5oar3guar5ghpi4pegadi4pip4at3wa4ar3en3gale3pi1op4innpin4e3galot3wit5pilo3piletwon4pig3n5tychpict4g5arcg4arepi4crpi3co4picagar5p5garr1ga4sgas5igas3o3piarar4bl3phyltyl5ig4at_2phy_phu5ity5mig4attgat5ugaud5ga5zaar3baara3va3rau5geal3gean2ge4d3gedi5gednar1at3type4gelege4li1tyr13phrage4lu2gelygem3i5gemoara3mph3ou3phorgen3oa3rajt5ziat5zie4gereph1is2ges_5gessphi4nua3ciget3aara2ga5quia5punua5lu1philg3ger4phic3phibg3gligglu3g5glyph3etg4grouan4og5haiuar3auar2dg4hosuar3iap5lia5pirph2angi4atu1b2igi5coap3in4phaeub5loub3ragi4orgi4otaph3igi5pag4i4s5gis_gi2t15gituu1c2aa5peug3laru5chrglec43glerap3alpe4wag4leypet3rpe2tia1pacaol3iglom34glopa5nyian5yap4ery3glyp2g1m4a5nuta3nurg4nabper3vp4eri4pere5percpe5ongn5eegn3eru4comg4niapen5upel5v4pelean3uluco5tgno4suc2trant4ruc3ubuc5ulu5cumgo4etgo4geu5dacg5oidgo3isgo2me5gonnpe2duud1algoph44gor_5gorg4gorsg4oryud5epgos4t1anth3pedsg1ousan2teu4derudev4grab43gram3pedigra2pudi3ogril43pedeu5doigro4gg5rongrop4ud5onan3scgru5ipe4coan5otan2osanor3g4stiu5doran2oeg4u2agu5ab5guan4annyg5uatan5no5gueu4aniuuen4ogu2magu4mi4anigpawk4uer3agur4ngur4u4gurypau3pani3fan3icues4san3euan4eagyn5ouga4cug2niug3uluhem3ui3alp5atohae3opas1t1p4ashag5uha5ichais4par3luid5ouil4apa3pypap3uhan2gpa3pepa4pahan4tpan3iha4pehap3lhar1ahar5bhar4dpan1ep4alspa3lohar3opain2paes4pad4rhat5ouil4to3zygozo5ihav5oana5kuin4san3aeuint4amyl5am3ului5pruis4t1head3hearui3vou4laba3mon4ulacu5lathe3doheek4ul4bohe3isul3caul4ch4uleaow5slow5shu5leehem1aow5in3amidow5hahem4pow1elhe3orulet4h1er_owd3lher2bowd4io5wayow3anow3ago1vish5erho5varouv5ah1erlouss42ouseh1ersoun2dul4evami2cul2fahet3ioul4tul4iaheum3ou5gihe4v4hev5ihex5oa3men3ambuu5lomhi4aram1atou5gaul4poh4iclh5ie_h1ierou3eth1iesama4gh3ifyhig4ohi5kaa5madoud5iou5coou5caa5lynhin4dou5brul1v45ou3aalv5uh2ins4o1trh4ioral1vahip3lum3amhir4ro4touhit4ahiv5aumar4u5masalu3bh3leth1l2ihli4aum2bio1t2oot4iv2h1n2o5tiaal3phho3anho4cou4micho5duho5epo4tedhold1o3taxo3tapot3ama5lowh2o4nos1uru4mos4ostaos4saos1pihon1o1hoodhoo5rh4opea4louo5sono5skeh4orno4sisos1inos5ifhosi4o3siaalos4os5eual1ora3looo2seta3lomoser4hr5erhres4um4paos5eohrim4h5rith3rodose5ga5loeo3secumpt4un5abun4aeht5aght5eeo4scio2schos4ceos4caht5eoht5esun2ce4aliuosar5un3doos3alosa5iory5phun4chunk4hun4thur3ior4unu1nicun4ie4or1uun3inal1in5aligal3ifal1iduni5por4schy1pehy3phuni1vor1ouun3iz2i1a2ia4blo5rooorm1ii2achiac3oa2letork5a5origa1leoun3kni2ag4ia3gnor3ifia3graleg4a3lec4ori_al3chor5gn4ialnor4fria5lyi5ambia3me5orexi3anti5apeia3phi2ardore4va5lavor3eiore3giat4uore3fal3atun3s4un5shun2tiibio4or4duib5lia1laei4bonibor4or4chi5bouib1riun3usoram4ic3acor5ali4calic1an2icariccu4akel4i5ceoa5ismich4io5raiora4g4icini5cioais1iic4lo2i2coico3cair3sair5pi5copop2ta2i1cri4crii4crui4cry1op1top5soopre4air5aop2plic3umopon4i5cut2i1cyuo3deain5oi5dayide4mo4poiain3iu1pato1phyid3ifi5digi5dili3dimo4pheo1phaidir4op1ero5peco4pabidi4vid3liid3olail3oai5guid3owu5peeid5riid3ulaid4aa5hoo2ieg2ie3gauper3i5ellahar22i1enien2da1h2aoo4sei2erio3opt4iernier2oi4erti3escagru5oon3iag3ri2i1eti4et_oo4leag5otook3iiev3au5pidiev3o4ag1nagli4if4fau5pola5giao5nuson5urifi4difi4n4i2fla5gheifoc5ont4rupre4af5tai3gadaev3a3igaraeth4i3geraet4aono3saes3ton5oionk4si3gonig1orig3oto1nioo5nigon3ifig1urae5siae3on4ura_aeco34uraead3umura2gik5anike4bi2l3aila4gon4id4a2duil4axil5dril4dui3lenon4guuras5on1eto3neoon1ee4oned4oneaad1owon5dyon3dril1ina3dos4onauon3aiil5iqona4do2mouil4moi5lonil3ouilth4il2trad3olil5uli5lumo4moi4adoi4ilymima4cim2agomni3im1alim5amom2naomme4om2itomil44adoeomi2co3mia3adjuome4gurc3ai5mogi3monim5ooome4dom4beo3mato2malo2macim5primpu4im1ulim5umin3abo4mabur4duadi4p4olytina4lol1ouin5amin3anin3apo3losol1or4olocur3eain3auin4aw4adilol3mia5difolle2ol2itolis4o5lifoli2eo1lia4inea4inedin5eeo3leuol1erine4so3lepo3leo4ineuinev5ol5chol4an4infu4ingaola4c4ingeur5ee4ingiad4haur1er4ingo4inguoith44adeeada3v4inico3isma5daiur3faac2too3inguril4ur1m4ac3ry4ino_in3oioil5i4inos4acou4oideo2i4d4acosurn5soi5chinse2o3ic_aco3din3si5insk4aco_ac3lio3ho4ack5aohab34acitacif4in5ulin5umin3unin3ura4cicuro4do5gyrur5oturph4iod5our3shio3gr4i1olio3maog4shio3moi5opeio3phi5opoiop4sa5cato4gro4ioreo2grio4got4iorlior4nio3sci3osei3osii4osoog2naur5taiot4aio5tho4gioio5tri4otyur1teo5geyac3alurth2ip3alipap4ogen1o3gasip1ato3gamurti4ur4vaofun4iphi4i4phuip3idi5pilip3ino4fulipir4ip5isab1uloflu42abs_ip3lou3sadi4pogus3agi4pomipon3i4powip2plab3omip4reoet4rip1uli5putus3alabli4i3quaab3laus4apoet3iira4co4et_ir4agus3atoes3t4abio2abiniray4ird3iire3air3ecir5eeirel4a3bieires4oelo4ab1icoe5icir4ima3bet5irizush5aoe5cuir5olir3omusil52abe4ir5taoe4biabay4us4pais5ado5dytis1alis3amis1anis3aris5av_za5ri2s3cod3ul_xy3lod5ruo3drouss4eod3liis2er5odizod5it4iseuod4ilodes4o5degode4co5cyt2isiais5icis3ie4isim_vo1c4isisis4keus1troc5uo2ismais1onocum4iso5pu5teooc1to5ispr2is1soc2te_vi2socre3u3tieiss4o4istao2cleu3tioo5chuoch4e4istho4cea4istloc5ago3cadis1tro4cab4istyi5sulis3urut3leutli4it5abita4c4itaiit3am_vec5it4asit3at_ur4oit3eeo3busob3ul_ura4_up3lo3braith5io5botith3rithy52itiao5bolob3ocit1ieit3ig4itim_un5uob1lio3blaob3iti5tiqut5smit3ivit4liit5lo4ito_it5ol2itonit1ou_un5sobe4lu4tul_un3goat5aoap5ioan4t4itueit1ulit1urit3us2i1u2_un3eiur5euven3oal4iiv1ati4vedu5vinoad5io3acto5ace_ul4luy5er2v3abives4iv3eti4vieiv3ifnyth4va1cavacu1iv1itva4geivoc3vag5rv1al_1vale_tor1vali25valu4izahiz3i2_til4iz5oivam4i_tho4va5mo5vannnwom4jac3ujag5u_te4mja5lonwin44vasev4at_jeop34vatuvect4_ta4m4velev1ellve1nejill55jis_4venu5ve3ojoc5ojoc5ujol4e_sis35verbju1di4ves__ses1ju3ninvi4tjut3a_se1qk4abinvel3kach4k3a4gkais5vi1b4vi4ca5vicuvign3vil3i5vimekar4i1kas_kaur42v1invin2evint4kcom43vi1oviol3kdol5vi5omke5dak5ede_rit2_rin4ken4dkeno4kep5tker5ak4erenu1trker4jker5okes4iket5anu4to5vi3pkfur4_re3w_re5uvire4kilo3vir3uk2in_3kind3nunc5numik3ingkin4ik2inskir3mkir4rv3ism3kis_k1ishkit5cvit2avit1rk5kervi3tu_re5ok5leak3lerk3let_re1mv3ity_re1ivi5zovolv41know3vorc4voreko5miko5pe3vorok5ro4_po2pv5ra4vrot4ks2miv3ure_pi2ev5verwag3owais4w3al_w3alswar4fwass4nu1men3ult5labrwas4tla2can4ulowa1tela4chla2conu4isw4bonla3cula4del5admw5die_out1nug4anu3enlag3r5lah4nud5i_oth54lale_osi4_or2o_or4ilam1ol5amu_ore4lan2d_or3dn5turntub5n3tua3weedweir4n5topwel3ilapi4n3tomn1t2o_op2i_on4ent3izla4tenti3pn3tign1tient4ibwent45laur_ome2_ol4d_of5twest3_oed5l4bit_ob3lw5hidl2catwid4elcen4n1thelch4el3darl3dedl3dehwi5ern4teol5dew_no4cl3dien3teln4tecwim2pld5li_ni4cwin2ecen3int1atnt1aln3swale3cawl1ernsta4_na5kle5drleg1an3s2t3leggn5sonleg3ons3ivwl4iensi2tlel5olelu5n3sion3sien3sid5lemml3emnle2mon4sicns3ibwon2tn3sh2n5seule1nen2seslen3on5seclen5ule3onleo4swoun4wp5inn4scun2sco_mis1_mi4enre3mnre4ix4ach4les_x4adenpri4x3aggnpos4npla4npil4leur5x3amil3eva5levexan5dle4wil5exaxano4lf5id_lyo3lf3on_lub3l4gall4gemlgi4al4gidl4goixas5pxcav3now3llias4lib1rl1ic_5lich_lo2pnove2nou5v2nousli4cul3ida3nounn4oug3lieul4ifel4ifoxcor5_li4p3notenot1a_li3oxec3r1l4illil4ilim2bno3splim4pnos4on4os_lin4dl4inenor4tn4oronop5i5nood4noneno2mo1nomi3linqnol4i3liogli4ollio3mliot4li3ou5liphlipt5x5edlx5edn_le2pl4iskno3la_le4ml2it_n5ol_no4fa3lithnoe4c3litrlit4uxer4gn4odyno4dinob4ln5obilk5atxer3on5nyi_ki4ex3ia_nnov3x4iasl5lasl4lawl5lebl1lecl1legl3leil1lellle5ml1lenl3lepl3leul3lev_is4o_is4c_ir3rx5ige_in3tllic4nlet4_in3ol5lie4n1l2l2linnk5ilnk5ifn3keyl5liolli5v_in2ixim3ank5ar_in3dllo2ql4lovnjam2_im5b_il4i_ig1n_idi2llun4l5lyal3lycl3lygl3lyhl3lyil5lymx4ime_hov3_ho2ll4mer_hi3bl5mipni3vox4it__he4ilneo4x4its5loadniv4ax4ode_hab2ni4ten5iss2locynis4onis4l_gos3n4isk4loi_lo5milom4mn4is_lon4expel43nipuni1ou5nioln4inu5ninnnin4jn4imelop4en3im1l3opm1lo1qnil4ax4tednik5e3nignn3igml4os_lo1soloss4_ga4mnift4nif4flo5tu5louplp1atlp3erxtre4l5phe_fo3cl2phol3piel3pitxur4b1y2ar_eye3_ex3a3yardl5samls5an4nicllsi4mls4isyas4i_eur4l1s2tni3ba3niac_es3tl5tar_es3pl4teiyca5mlth3inhyd5y3choltin4lti3tycom4lt4ory2cosnhab3_er2al4tusyder4_epi1luch4_eos5n2gumlu4cu_ent2lu1enlu5er_en3slu4ityel5olu4mo5lumpn4gry_en5c5lune_emp4n5gic_em3by5ettlusk5luss4_el2in5geen4gae_ei5rlut5r_ei3dygi5a_ec3t_eco3l4vorygo4i_dys3_du4c_do4eyl3osly4calyc4lyl5ouy1me4news3_de4wly4pay3meny5metnet1ry5miaym5inymot4yn4cim4acanet3an1est1nessn1escmact44mad_4mada4madsma4ge5magn2nes_yn3erma5ho3ma4i4mai_maid3_der2ner2vner5oyni4c_de1mneon4m3algneo3ln3end4n1enne2moyoun4n4ely2neleyp5alneis4man3a5negune3goneg3a3nedi_dav5m4ansne2coyper3m3aphy4petne4cl5neckn3earyph4en3dyind2wemar3vn4dunndu4bn2doundor4n5docnd1lin3diem4at_n1dicnd4hin5deznde4snde4ln1dedn3deayph3in3damm4atsn3daly4p1iy4poxyp5riyp4siypt3am5becn4cuny3ragm4besyr3atm2bicnct2oyr3icm4bisy5rigncoc4n1c2lm3blimbru4mbu3lmbur4yr3is_can1ys5agys5atmea5gn4cifme4bame4biy3s2c4med_n4cicn3chun3chon3chan5ceyme4dom5edy_bre2n5cetn3cer4melen1c2anbit4nbet4mel4tnbe4n_bov4ys1icys3in3men_2menaysi4o3nautnaus3me1nenat4rnati45meogys4sonas3s4merenas5p2me2snas5iys4tomes5qyz5er1me2tnam4nmet1e3nameza4bina3lyn5algmet3o_aus5_au3b_at3t_at3rza4tena5ivmi3co5nailm4ictzen4an5agom4idina4ginag4ami5fimig5an2ae_mi2gr_as4qmi5kaz5engm3ilanadi4nach4zer5a3millmi5lomil4t3m2immim5iz3et4_ari4_ar4e_ar5d5zic4_ap4i5my3c_any5z3ing3zlemz3ler_an3smu4sem5uncm2is_m4iscmi4semuff4zo3anmsol43zoo2_and2zo3olzo3onzo5op4mity_am2i_al1k_air3_ag5nmlun42m1m2_ag4amp5trmp3tompov5mpo2tmmig3_af3tmmis3mmob3m5mocmmor3mp3is4m1n2mnif4m4ninmni5omnis4mno5l_af3f_ae5d_ad3o_ad3em3pirmp1inmo4gom5pigm5oirmok4imol3amp5idz3zarm4phlmo3lyz5zasm4phe_ach4mona4z3ziemon1gmo4no_ace45most_ab4imo3spmop4t3morpz5zot", + 6 : "reit4i_ab3olmo5rel3moriam5orizmor5onm3orab3morse_acet3_aer3i_al5immo3sta2m1ous_al3le4monedm4pancm4pantmpath3_am5ar_am3pemper3izo5oti_am3phmo4mis_ana3b_ana3s_an5damog5rimp3ily_an4el_an4enmmut3ammin3u_an4glmmet4e_ant3am3medizing5imman4d_ar5abm5itanm3ists_ar5apmsel5fm3ist_5missimis3hamuck4e4misemmul1t2_ar4cimu5niomun3ismus5comirab4mus5kemu3til_at5ar1m4intmin3olm4initmin5ie_bas4i_be3di5myst4_be3lo_be5sm5min4d_bi4er_bo3lo_ca3de_cam5inac4te_cam3oyr5olona4d4amil4adnad4opyr3i4t_car4imid5onn4agen_ca4timid4inmi4cus_cer4imi3cul3micromi4cinmet3ri4naledyp5syfn4aliameti4cmeth4i4metedmeta3tna5nas_cit4anan4ta_co5itnan4to_co3pa4n4ard_co3ru_co3simes5enmer4iam5erannas5tenat5alna5tatn4ateena3thenath4l5mentsn4ati_nat5icn4ato_na3tomna4tosy4peroy4periy5peremend5oyoung5naut3imen4agna5vel4m5emeyo4gisnbeau4_de3linbene4mel3on_de3nomel5een4cal_yn4golncel4i_de3ra_de3rimega5tncer4en4ces_yn5ast3medityn5ap4nch4ie4medieynand5ynago43mediaym4phame5and_de3vem5blern4cles_dia3s_di4atmb5ist_din4anc4tin_dio5cm5bil5m4beryncu4lo_east5_ed5emncus4tmbat4t_elu5sn3da4c3m4attn4dalema3topnd3ancmat5omma3tognde3ciyes5tey3est__em5innd3enc_em5pyn3derlm4atit_en5tay4drouma3term4atenndic5undid5aydro5snd5ilynd4inend3ise_epi3d_er4i4nd5itynd3ler_er4o2_eros43mas1ty4collnd5ourndrag5ndram4n5dronmassi4y4colima3sonyclam4mar5rima3roone3aloma5ronne2b3umar5ol5maran_erot3_er4rima5nilych5isne4du4manic4man3dr_eth3e3m4an__eval3ne5lianeli4g_far4imal4limal3le_fen4dm3alismal3efmal5ed5male24nered_fin3gxtra3vner4r5mal3apxtra5d2mago4ma4cisne3sia5machy_fu5ganes3trmac3adnet3icne4toglys5erxtern3neut5rnev5erlypt5olymph5n4eys_lyc5osl5vet4xter3ixpoun4nfran3lv5atelu5tocxpo5n2_ge3ron3gerin5gerolut5an3lur3olu3oringio4gn5glemn3glien5gliol3unta_go3nolu2m5uxo4matluc5ralu2c5o_hama5l3t4ivltim4alti4ciltern3lt5antl4tangltan3en4icabni4cen_hem5anict5a_hy3loni4diol3phinni4ersximet4lot5atnif5ti_ico3s_in3e2loros4lo5rof_is4li_iso5ml4ored_ka5ro_kin3e5nimetn4inesl3onizl3onisloni4e3lonia_lab4olo5neyl5onellon4allo5gan3lo3drl3odis_la4me_lan5ixen4opnitch4loc5ulni3thon4itosni5tra_lep5rni3trinit4urloc3al5lob3al2m3odnivoc4niz5enlm3ing_lig3anjur5illoc5ulloc3an5kerol3linel3linal5lin__loc3anland5lli5col4liclllib4e_loph3_mac5ulli4anlli5amxa5met_math5llact4nni3killa4balk3erslk3er_lkal5ono5billiv5id_ment4_mi3gr_mirk4liv3erl5ivat5litia5liternois5il3it5a5lisselint5inom3al3lingu5lingtling3i3nonicw5sterws5ingnora4tnor5dinor4ianor4isnor3ma_mi5to_mo3bil4inasl4ina_wotch4word5ili5ger_mon3a5lidifl4idarlict4o_mu3ninova4l5licionov3el_mu3sili4cienow5erli4ani_myth3_nari4le5trenpoin4npo5lale5tra3les4sle3scon4quefler3otleros4ler3om_nast4le5rigl4eric3w4isens3cotle5recwin4tr_nec3tle5nielen4dolend4e_nom3ol5endalem5onn5sickl5emizlem3isns5ifins3ing_nos3tn3s2is4leledle3gransolu4le4ginn4soren4soryn3spirl3egan_obed5nstil4le5chansur4e_ob3elntab4unt3agew5est__oe5sont5and_om5el_on4cewel4liweliz4nt3ast_opt5ant5athnt3ati_or3eo3leaguld3ish_pal5in4tee_n4teesld4ine_pa5tald3estn4ter_n3terin5tern_pecu3war4tel5deral4cerenther5_ped3elav5atlat5usn4tic_ward5r_pend4n4tics_pep3tn3tid4_pi3la_plic4_plos4_po3lan5tillnt3ing_pop5lvo3tar_pur4rn4tis_nt3ismnt3istvo5raclat5al4laredlar5delar5anntoni4lan4tr_re3cantra3dnt3ralviv5orn3tratviv5alnt3rilv5itien5trymlan3etlan4er3landsvi5telland3i3land_lan3atlam4ievi3tal2v5istla4ic_la4gisla3gerlac5on5visiola5cerla5ceolabel4vi5ridlab5ar_re3ta5numerkin5et_rib5anu3tatn5utivkey4wok5erelkal4iska5limk2a5bunven4enven5o_ros3ajuscu4_sac5rjel5laja5panja2c5oi5vorevin5ta_sal4inym5itv5iniz5vinit3vinciiv3erii4ver_iv5elsoad5ervin4aciv5el_oak5ero3alesiv5ancoal5ino5alitit5uar_sanc5oar5eroar4se_sap5ait4titoat5eeoat5eri4tric_sa3vo4i5titob3ing2obi3o_sci3e4itio_it4insit4in_it5icuiti4coi5tholitha5lobrom4it3erait3entit3enci3tectit4ana3istry_sea3si4s1to5vider_sect4oc5ato4o3ce25vict2ocen5ovice3r_se3groch5ino3chon_sen3tvi4atroci3aboci4al5verseis4taliss4ivis5sanis4saliss5adi3s2phocu4luver4neislun4ocuss4ver3m4ocut5ris3incis5horocyt5ood3al_ish3op4ishioode4gao5dendo3dentish5eeod3icao4d1ieod3igais3harod1is2v5eriei2s3etis5ere4is3enis3ellod5olood5ousise5cr4i1secisci5cver3eiver5eaven4tris5chiis3agevent5oir5teeir5ochve5niair4is_ir2i4do3elecoelli4ir5essoe3o4pire5liven4doi5rasoven4alvel3liir4ae_ir4abiv4ellaip3plii4poliip3linip4itiip1i4tip4ine_su5daiphen3i1ph2ei3pendog5ar5v3eleripar3oi4oursi4our_iot5icio5staogoni45ioriz4ioritiora4mvel3atiod3i4ioact4_sul3tintu5m_tar5oin3til_tect45vateein4tee_tel5avast3av5a4sovar4isin3osiin5osei3nos_oi5ki5oil3eri5noleoin3de4vantlvanta4oin4tr_ter4pin3ionin4iciin5ia_oit4aling3um4ingliok4ine4ingleing5hain5galo4lacko5laliinfol4olan5dol5ast_thol45val4vole2c4ol5eciol5efiine5teole4onin3esi4in5eoo3lestin5egain5drool3icao3lice_ti5niol5ickol3icsol5id_va5lieo3lier_tri3dinde3tvager4oli5goo5linaol3ingoli5osol5ip4indes5inde5pin5darollim34vagedol4lyi3vag3ava5ceo4inataol3oido4lona_tro4vi3nas_in4ars_turb44ol1ubo3lumi_turi4ol3us_oly3phin3airin5aglin4ado4inaceimpot5im5pieo4maneomast4_tu5te_tu3toi3mos_im5mesomeg5aome3liom3enaomen4to3meriim5inoim4inei3m2ieomic5rom4ie_imat5uom4inyomiss4uv5eri_un5cei5m2asim3ageil5ureomoli3o2mo4nom5onyo4mos__un5chilit5uom5pil_un3d2il4iteil5ippo5nas__uni3c_uni3o4iliou_un3k4oncat3on4cho_un3t4u4t1raon3deru4to5sili4feili4eri5lienonec4ri3lici_ve5loon5ellil3iaron3essil3ia_ong3atilesi45u5tiz4o1niaon5iar2oni4conic5aut3istut5ismon3iesigu5iti4g5roi5gretigno5m4onneson5odiign5izono4miu5tiniut3ingo5nota_ver3nig3andu4tereon4ter_vis3ionton5if5teeon4treif5icsut5eniutch4eif3ic_u3taneoof3eriev3erook3eri5eutiiet3ieool5iei3est_i1es2ties3eloop4ieieri4ni3eresus5uri4idomioot3erooz5eridol3ausur4eo5paliopa5raopath5id4istopens4id1is43operaus4treidios4_vi5sooph4ieo5philop5holi3dicuus1to4iderm5op3iesop5ingo3p2itid3eraust3ilid3encopol3ii5cun4op5onyop5oriopoun4o2p5ovicu4luop5plioprac4op3ranict5icopro4lop5ropic4terust5igust4icicon3ous5tanic5olaor5adoich5olus3tacic5ado4oralsib3utaoran3eab5areorb3ini4boseorch3iibios4ib3eraor5eadore5arore5caab5beri5atomia5theoreo5lor3escore3shor3essusk5eru4s1inor5ett4iaritianch5i2a3loial5lii3alitab3erdor3ia_4orianori4cius5ianorien4ab3erria5demori5gaori4no4orio_or5ion4oriosia5crii2ac2rus4canor3n4a5ornisor3nitor3oneabi5onor5oseor5osohys3teorrel3orres3hyol5ior4seyor4stihyl5enort3anort3atort3erab3itaor3thior4thror4titort3izor4toror5traort3reh4warthu3siahu4minhu5merhu4matht4ineht4fooht3ensht3eniab4ituht3en_ab3otah3rym3osec3uhrom4ios5encosens43abouthre5maabu4loab3useho4tonosi4alosi4anos5ideo3sierhort5hho5roghorn5ihor5etab3usio3sophos3opoho2p5ro3specho5niohong3ioss5aros4sithon3eyur3theos4taros5teeos5tenac5ablur5tesos3tilac5ardost3orho5neuhon5emhom5inot3a4gurs3orho4magach5alho5lysurs5ero5ta5vurs5alhol3aroter4muroti4ho3donachro4ur5o4mach5urac5onro5thorurn3ero5tillurn3alh5micao3tivao5tiviur5lieo5toneo4tornhirr5ihio5looturi4oty3lehi5noph5inizhi5nieh2in2ehimos4hi5merhi5ma4h3ifi4url5erhi4cinur5ionur4iliur4ie_ac2t5roult5ih4et3ahes3trh5erwaound5aac5uatur3ettoun3troup5liour3erou5sanh4eron5ousiaher5omur1e2tur3ersova3lead5eni4ovatiad3icao4ver_over3bover3sov4eteadi4opadis4iovis5oo2v5oshere3ohere3aherb3iherb3aher4ashende5ur5diehe5mopa3ditihemis4he3menowi5neh3el3ohel4lihe5liuhe3lioh5elinhe5lat5admithe5delhec3t4adram4heast5ad3ulahdeac5ae4cithavel4ura4cipac4tepa5douhas4tehar4tipa3gan4pagataed5isu5quet4pairmpa5lanpal3inag4ariharge4pan5ac4agerihant3ah5anizh1ani4agi4asham5an4aginopara5sup3ingpa3rocpa3rolpar5onhagi3oag3onihaged5agor4apa3terpati4naha5raaid5erail3erhadi4epaul5egust5apa5vilg4uredg4uraspaw5kigui5ta5guit43guardaim5erai5neagrum4bpec4tugru3en5ped3agrim3a4grameped3isgour4igo5noma3ing_5gnorig4ni2ope5leogn4in_pen4at5p4encu5orospen5drpen4ic3p4ennal5ablg2n3ingn5edlalact4until4g5natial5ais5gnathala3map3eronalc3atald5riun4nagg5nateglu5tiglu5tepes4s3ale5ma4g5lodun5ketpet3eng5lis4gli5ong4letrg4letoal3ibrali4cigin5gigi5ganun3istph5al_gi4alluni3sogh5eniph5esiggrav3ggi4a5al5icsg5gedlun4ine3germ4phi5thgeo3logen5ti4phobla5linigen5italin5ophos3pgen4dugel5ligel4ing4atosg4ato_gat5ivgast3ral5ipegasol5ga5rotp5icalu3n2ergar3eeg5antsgan4trp4iestpi5etip5ifieg5ant_un4dus4ganed4alis_gan5atpi3lotgam4blun4diepin5et3pingegali4a5p4insga5lenga4dosga4ciefu5tilpir5acfu3sil4furedfu4minundi4cpiss5aunde4tpis4trft4inefti4etf4ter_un3dedpla5noun4dalalk5ieun4as_al4lab4pled_frant4frag5aunabu44plism4plistal4lagu4n3a4umu4lofore3tfor4difor5ayfo5ramfon4deallig4fo4liefo1l4ifoeti42p5oidpois5iump5tepo4ly1poly3spoman5flum4iump5lipon4acpon4ceump3er3ponifpon5taf3licaf5iteepo5pleal3ogrpor3ea4poredpori4ffir2m1fin4nial3ous5fininpos1s2fi3nalu4moraumi4fyu2m5iffight5fier4cfid3enfi5delal5penp4pene4ficalumen4tal3tiep4pledp5plerp5pletal5uedal3uesffor3effoni4ff3linf2f3isal5ver2a1ly4fet4inaman5dul3siffet4ala3mas_fest5ipres3aulph3op3reseulph3i5pricipri4es4pri4mam5atuam4binfest3ap5riolpri4osul4litfess3o4privafer5ompro3boul4lispro4chfe5rocpron4aul4latam5elopro3r2pros4iu5litypro3thfer3ee4feredu5litipsal5tfemin5fea3tup5sin_fant3iul5ishpsul3i4fan3aul3ingfa5lonu3linefa2c3ufa3cetpt5arcez5ersp5tenapt5enn5pteryez5er_ex4on_ew5ishamen4dp2t3inpt4inep3tisep5tisievol5eevis5oam3eraev5ishev4ileam5erle4viabpudi4ce4veriam5icapu4laramic5rpu5lisu5lentu1len4a3miliev5eliev3astpun5gieva2p3eval5eev4abieu3tereu5teneudio5am5ilypu3tat5ulcheet3udeet3tere4trima5mis_et4riaul5ardet4ranetra5mamor5aetra5getor3iet3onaamort3am5ose3quera4quere4ques_et5olo5quinauit5er3quito4quitueti4naeti4gie3ticuuisti4ethyl3ra3bolamp3liuis3erampo5luin4taet5enia5nadian3agerag5ouuinc5u3raillra5ist4raliaet3eeret3atiet3ater4andian3aliran4dura5neeui3libra3niara3noiet5aryan3arca5nastan4conrant5orapol5rap5toet3arieta5merar3efand5auug3uraan5delet3al_es4ur5e2s3ulrass5aan5difug5lifra5tapra5tatrat5eurath4erat3ifan5ditra5tocan5eeran3ellra4tosra5tuirat5umrat3urrav5aian3ganrav3itestud4ra3ziees5tooe3stocangov4rb3alian4gures5taue5starest3anesta4brbel5orb3entes4siless5eeessar5rbic5uan5ifor5binee5s2pres5potan5ionrbu5t4es5pitrcant54anityr4celean3omaan4scoans3ilrcha3irch3alan4suran2t2ar3cheor4cherud3iedr4chinrch3isr3chites3onaan3talan5tamrciz4ies3olae3s4mie3skinrcolo4rcrit5an4thies4itses4it_e5sion3anthrrd4an_es5iesr5de4lr3dens4anticrd5essrd5ianan4tiee5sickes5ic_rd3ingesi4anrd1is2rd5lere3sh4aes5encrd5ouse5seg5e3sectescut5esci5eant4ives5chees5canre5altre5ambre3anire5antre5ascreas3oeryth35erwauan4tusreb5ucre3calrec4ceer4vilan5tymre3chaan3um_an5umsap5aroerund5ert5izer4thire3disre4dolape5lireed5iu4cender4terer5tedre3finuccen5re5grare3grereg3rire3groreg3ulaph5emer4repaph5olaphyl3ero5stero5iser3oidern3it4reledre3liarel3icre5ligreli4qrel3liern3isrem5acap5icuub3linern3errem5ulu4bicuren5atr4endiap4ineren4eser4moirenic5ren4itub5blyre5num4eri2ta3planre5olare3olier4iscer3ioure4pereri4onrep5idre3pinre3plere4preeri4nauari4ner3iffre5reare3r2uapo3thre3scrre3selre3semre3serap5ronre5sitre3speapt5at4arabiara5bore5stu3retarre3tenar3agear5agire1t2ore5tonre3trare3trere5trier4ianer3ia_ergi3ver3ettrev3elrevi4ter3etser3et_ar3agoar3allaran4ger3esier5eseere5olr4geneeren4e5erende4remeer5elser5ellr5hel4rhe5oler5el_er3egrer3ealerdi4eerd5arerb5oser3batar5apaer5atuarb5etar4bidty4letri5cliri3colri5corri4craarb3lirid4aler3apyer3apier3aphera4doar4bularch5otwi5liri5gamaren5dri5l4aar5ettar3ev5ar5iff5tur5oequin4rima4gar4illrim3ate4putarimen4e3pur5ept3or5turitr4inetturf5iturb3aep5rimt4uranrins5itu5racep3rehtun5it5rioneepol3iepol3ari5p2ari5piear5iniep3licarm3erris4ise4peteris4paris4pear5mit4ristiri3tonr5it5rep5ertriv4alar3nalar3nisriv3enriv3il5ri5zoar5oidep5arceor4derk5atir5kellrk5enia5rotieol5ata5roucr3kiertud5ier5kin_r5kinsrks4meen4tusent5uptu5denr3l4icr3liner5linsen4tritu4binen5tiarma5cetuari4ent3arr4mancr4manor4marir4maryen4susars5alart5atarth4een4sumens5alrm4icar5m2iden3otyenit5ut4tupermin4erm3ingarth3rar5tizen5iere2n3euen4ettrmu3lie3nessen5esiener5var5un4as5conrn3ateas5cotrn5edlt3tlerr3nessrn5esttti3tuas3ectt5test3encept4tereen3as_rn4inee2n3arrn3isten4annash5ayem4preash5ilem5pesas5ilyempa5rask5erem3orras5ochrob3letstay4e3moniem3oloemod4uemo3birody4n4emnitem4maee4mitaem3ismem5ingem3inar4oledas4silassit5as4tatro5melro3mitas4tiaas3tisemet4eron4ac4ronalas4titron5chron4dorong5ir5onmeem5ero4asto2as3traas4trit5roto4atabiem3anaro3peltro3spem3agor5opteel5tieelp5inel5opsrosi4aro5solel5op_5troopros4tiatar3aro3tatata3t4ro4terelo4dieloc3uelo5caat3eautri3me4roussell5izel4labrow3erelit4ttri3lie4li4seli3onr3pentrp5er_el3ingat3echr3pholrp3ingat5eerrpol3ar2p5ouele3vi3tricuelev3at5ricla5tel_e5lesstres4sele5phel3enor4reo4el5eni4e4ledelea5grricu4tre5prate5lerri4oseld3ertre4moat3entat3eraelast3el5ancel5age4traddeiv3ereit5ertra4co4atesse4ins_to3warehyd5re5g4oneg5nabefut5arsell5rs3er_rs3ersa3thene4fiteath3odr4shier5si2ato3temto5stra5thonrs3ingeem5eree2l1ieed3ere4d5urrstor4to3s4ped3ulo4a3tiator5oitor5ered3imeed5igrrt3ageto5radr4tareed5icsto4posr4tedlr3tel4r5tendrt3enito5piaa2t3in4atinaat5ingede3teton5earth3rir1t4icr4ticlr5tietr5tilar5tilltom5osrt5ilyedes3tr3tinart3ingr3titirti5tue4delee5dansrt5lete5culito4mogec4titrt5ridecti4cec4teratit3urtwis4e4cremtoma4nec3ratec5oroec3oratom3acat4iviec3lipruis5iecip5i4toledec5ath5at5odrun4clruncu42t3oidrun2d4e4caporu5netecal5ea4topsec3adea4toryebus5iebot3oe4belstode5cat3ronat5rouat4tagru3tale4bel_eav5our4vanceavi4ervel4ie3atrirven4erv5er_t4nerer3vestat3uraeatit4e3atifeat5ieeat3ertmo4t5east5iat3urge1as1s3ryngoau5ceraud5ereas5erryth4iaudic4ear4tee5ar2rear4liear3ereap5eream3ersac4teeam4blea3logeal3eread3liead3ersain4teac4tedy4ad_sa5lacdwell3sa3lies4al4t5tletrdvert3sa5minault5id5un4cdum4be5tledrs4an4etlant4san5ifdu5ettau5reodu5elldu5eliau5rordrunk3tiv3isaus5erdri4g3aut3ars5ativti3tradrast4d5railsau5ciaut3erdossi4sa3voudo5simdon4atdom5itt3itisdomin5doman4tit5ildo4lonscar4cdol5ittith4edol3endo4c3u4s4ces5dlestt4istrdi4val1di1v2ditor3av3ageava5latish5idithe4av5alr3tisand4iterd4itas3disiadisen34d5irodi4oladi5nossec5andin5gisecon4dimet4di5mersed4itdi3gamdig3al3di3evdi4ersd5icurse3lecselen55dicul2s4emedic4tesemi5dav5antdic5oldic5amt3iristi5quaav3end5sentmti3pliav3ernti5omosep4side4voisep3tiser4antiol3aser4to4servode3vitde3visdev3ils5estade3tesdes3tid3est_sev3enaviol4aw5er_de3sidde3sectin3uetin4tedes4casfor5esfran5der5os3dero45dernesh4abiaw5ersder4miaw5nieay5sta3dererde5reg4deredde3raiderac4si4allsiast5tin3ets3icatdepen42s5icldeont5si5cul4tinedba5birdens5aside5lsid3enbalm5ideni4eba5lonsi4ersde1n2ade4mosde3morba5nan5tilindemo4nti4letsin5etbardi44demiedel5lisi5nolsi3nusba5romdeli4esi5o5sde3lat5de3isde4fy_bar3onde4cilsist3asist3otigi5odeb5itsit5omdeac3td3dlerd4derebas4tedaugh3dativ4dast5a3d4as2d1an4ts3kierba4th4sk5ily3baticba5tiod4a4gid5ache3ti2encys5toc3utivbat5on4cur4oti3diecur4er1c2ultb4batab4bonecul5abcu5itycub3atctro5tbcord4ti3colct5olo3smithbdeac5tic5asct5ivec4tityc4tituc3t2isbed5elc3tinict5ing4s3oid4te3loct4in_so5lansol4erso3lic3solvebe5dra5ti5bube3lit3some_bend5ac4ticsbe5nigson5atbicen5son5orc4tentbi4ers5soriosor4its5orizc2t5eec3tato5bilesct5antc5ta5gctac5u5c4ruscrost4spast45thoug3b2ill3sperms5pero4thoptcre4to5creti3spher4t5hoocre4p3sp5id_s5pierspil4lcre3atsp3ingspi5nith3oli4creancra4tecras3tbimet55crani5bin4d3spons3spoonspru5dbind3ecous5t3co3trth4is_srep5ucost3aco5rolco3rels5sam24coreds5sengs3sent5th4ioss3er_s5seriss3ers3thinkt5hillbin5etcon4iecon4eyth3eryss4in_s4siness4is_s3s2itss4ivicon4chth3ernco3mo4co5masssol3ut5herds4soreth5erc5colouco3logco3inc4c3oidco3difco3dicsta3bic4lotrs4talebin5i4s3tas_theo3lc3lingbi3re4ste5arste5atbi5rusbisul54s1teds4tedls4tedn4stereth5eas3bituas3terost5est5blastcine5a4cinabs3ti3a3sticks3ticuthal3ms4tilyst3ing5s4tir5cimenth5al_st3lercigar5ci3estch5ousstone3bla5tu5blespblim3as4tose4chotis4tray4chosostrep33strucstru5dbment4tew3arch5oid5chlorstur4echizz4ch3innch4in_ch3ily3chicoche5va3chetech4erltetr5och4eriche3olcha3pa4boledbon4iesu5ingces5trcest5oce3remcer4bites5tusu3pinsupra3sur4ascept3a5testesur3pltest3aboni4ft3ess_bon4spcent4ab3oratbor5eebor5etbor5icter5nobor5iocen5cice4metce5lomter3itt4erinsy4chrcel3aice3darcci3d4ter5ifsy5photer5idcav3ilter3iabot3an3tablica3t2rta3bolta4bout4a3cete3reota3chyta4cidc4atom3casu35t2adjta5dor5terel3cas3scashi4tage5ota5gogca3roucar5oocar5oncar3olcar3nicar3ifter5ecca3reeter3ebta5lept4aliat4alin2tere45tallut2alo43ter3bt4eragtera4c3brachtan5atbran4db4reas5taneltan5iet5aniz4b2rescap3tica5piltent4atark5ican4trte5nog5brief5tennaca3noec2an4eta3stabring5t4ateu3tatist4ato_tat4ouca5nartat3uttau3tobri4osca5lefcal5ar4tenarcab5inb5ut5obut4ivten4ag3butiob5utinbu5tarte5cha5technbus5sibusi4ete5d2abur4rite5monb4ulosb5rist5tegicb5tletbro4mab4stacbso3lubsol3e4teledtel5izbscon4ct4ina", + 7 : "mor4atobstupe5buf5ferb5u5nattch5ettm3orat4call5inmor5talcan5tarcan5tedcan4tictar5ia_brev5ettant5anca3ra5ctand5er_ad4din5ta3mettam5arit4eratocar5ameboun5tital4l3atal5entmonolo4cas5tigta5chom3teres4ta5blemcaulk4iccent5rcces4sacel5ib5mpel5licel5lincen5ded5ternit4sweredswell5icend5encend5ersvest5isvers5acen5tedt5esses_ama5tem5perercen5testest5ertest5intest5orcep5ticmpet5itchan5gi5cherin4choredchor5olmphal5os5toratblem5atston4iecil5lin4mologu4mologss4tern_ster4iaci5nesscla5rifclemat45static4molog_5therapmogast4ssolu4b4theredcon4aticond5erconta5dcor5dedcord5ermpol5itcost5ercraft5ispon5gicra5niuspital5spic5ulspers5a4thorescret5orspens5ac5tariabi4fid_4sor3iecter4iab5ertinberga5mc5ticiabend5erso5metesoma5toctifi4esolv5erc5tin5o_an4on_ct4ivittici5ar3ti3cint4icityc5torisc5toriz4ticulecull5ercull5inbattle5cur5ialmmel5lislang5idal5lersk5iness5kiest4tific_daun5tede5cantdefor5edel5ler_an3ti34dem4issim4plyb4aniti_ant4icde4mons_an4t5osid5eri5timet4dens5er5ti5nadden5titdeposi4zin4c3i_aph5orshil5lider5minsfact5otin5tedtint5erde5scalmis4tindes5ponse5renedevol5u4tionemdiat5omti5plexseo5logsent5eemi5racu_ar4isedic5tat4scuras4scura__ar4isi5scopic3s4cope5t4istedi5vineti5t4ando5linesca5lendom5inodot4tins5atorydress5oaus4tedtiv5allsassem4dropho4duci5ansant5risan5garaun4dresan4ded_ar5sendust5erault5erdvoc5ataul5tedearth5iea4soni4ryngoleassem4eat5enieat4iturv5ers_rus4t5urus5ticrust5eeatric5urust5at_as5sibrup5licminth5oecad5enruncul5ru4moreecent5oa5tivizecon4sc_ateli4_au3g4uec5rean_aur4e5ect5atiec4t5usrtil5le4at4is__av5erar4theneedeter5edi4alsr5terered5icala4t1i4lediges4at5icizediv5idtori4asrswear4ati5citat5icisedu5cerrstrat4eer4ineefact5oming5li_ba5sicef5ereemin4ersath5eteath5eromin4er__be5r4ae5ignitr5salizmind5err5salisejudic44traistmil5iestrarch4tra5ven_blaz5o4m5iliee4lates_bos5omat5enatelch5errrin5getrend5irri4fy_rran5gie4lesteel3et3o_boun4d_bra5chtri5fli_burn5ieli4ers_ca4ginrou5sel_can5tamigh5tiros5tita5talisro5stattro4pharop4ineemarc5aem5atizemat5ole4m3eraron4tonro5nateem4icisnaffil4romant4emig5rarol5iteass5iblassa5giemon5ola4sonedem5orise4moticempara54empli_en3am3o_cen5sot5tereren4cileen4d5alen4dedlttitud45n4a3grend5ritrn5atine5nellee5nereor4mite_r4ming_en3ig3rmet5icirma5tocr4m3atinannot4en4tersen4tifyarp5ersent5rinr5kiesteol5ar_eologi4aro4mas_clem5eriv5eliri5vallris5ternan5teda5rishi3mesti4epolit5tup5lettup5lic_cop5roepres5erink5erme5si4aring5ie_co5terrim5an4equi5noment5or4tut4ivna5turiera4cierig5ant5rifugaar4donear5dinarif5tiear5chetrift5er4erati_4eratimrick4enrich5omrica5tuaran5teer5esteer5estieres5trre5termar4aged_dea5coaract4irest5erre5stalapu5lareri4ciduant5isuant5itres5ist5er5ickapo5strer4imet_de5lecuar4t5iua5terneri5staren4ter5ernaclmend5errem5atoreman4d_del5egerre5laer5sinere5galiert5er_ert5ersrec4t3rr4e1c2rreci5simelt5er_deli5ran4tone_de5nitan4tinges5idenesi5diur4d1an4rcriti4es3ol3urci5nogant5abludi4cinrch4ieru5dinisrch5ateu5ditiorch5ardes3per3mel5lerrcen5eres5piraanis5teesplen5uen4teres4s3anest5ifi_de5resues5trin4cept_rav5elianel5li4r4atom5ra5tolan4donirat4in_r4as5teand5istrass5in5meg2a1et3al5oand5eerrar5ia_an3d4atrant5inuicent55rantelran5teduild5erran4gennch5oloetell5irad4inencid5enra5culorac5ulaet3er3aet5eria3ra3binet5itivui5val5amphi5gam5peri_de5sirqua5tio4e4trala4mium_et5ressetrib5aaminos4am5inizamini4fp5u5tis5ulchrepush4ieev5eratev5eren4ulenciever4erpu5lar_puff5erevictu4evis5in_de5sisfall5inncip5ie_di4al_fend5erpros5trpropyl5proph5eul4l5ibp3roc3apris5inpring5imbival5nco5pat5pressiyllab5iulp5ingpre5matylin5dem4b3ingnct4ivife5veriffec4te_du4al_pprob5am5bererum4bar__echin5fi5anceal5tatipparat5pout5ern4curviumi5liaumin4aru4minedu4m3ingpoult5epor5tieal4orim4poratopon4i4eflo5rical4lish_ed4it_foment4_ed4itialli5anplum4befor4m3a_el3ev3fratch4pla5t4oma5turem4atizafrost5ipis5tilmat4itifuel5ligal5lerpill5ingang5ergariz4aunho5lial5ipotgass5inph5oriz4phonedgest5atg5gererphant5ipha5gedgiv5en_5glass_unk5eripet5allal5endepes5tilpert5isper5tinper4os_al5ance5p4er3nperem5indeleg4gna5turndepre4aint5eruodent4pend5er4gogram_en4dedpearl5indes5crgth5enimas4tinpat4richad4inepas4tinnd5is4ihak4inehal5anthan4crohar5dieha5rismhar4tedaet4or_aerody5pag4atihaught5_er5em5hearch44urantiheav5enurb5ingoxic5olowhith4ur5den_ur5deniowel5lih5erettovid5ennd5ism_her5ialh5erineout5ishoun5ginound5elhet4tedact5oryu5ri5cuheumat5ur5ifieact5ileought5ihi3c4anuri4os_h4i4ersh4manicurl5ingact5atemast4ichnocen5_men5taaci4erso5thermmar4shimantel5ot5estaurpen5tach5isma5chinihol4is_ot4atioot4anico5talito5stome5acanthost5icaosten5tost5ageh4op4te3house3hras5eoy4chosen5ectom4abolicht5eneror5tes_man4icay5chedei5a4g5oori5cidialect4or5este_escal5iatur4aorator5_wine5s_vo5lutich5ingo5quial_etern5us5ticiic4tedloplast4ophy5laid4ines4operag2i4d1itoost5eriff5leronvo5lui4ficaconti5fiman5dar_vic5to_fal4lemament4mal4is__ver4ieila5telonical4i5later_feoff5ili4arl_va5ledil4ificond5ent_ur5eth5ond5arut4toneil5ine_on5ativonast5i_under5ompt5eromot5ivi4matedi4matin_fi5liaimpar5a_fil5tro5lunte4inalit_tular5olon5el5neringinator5_tro4ph_fis4c5inc4tua_trin4aol4lopeoli4f3eol5ies_mal5ari_tran4c_tit4isnerv5inval4iseol5icizinfilt5olat5erin4itud_gam5etxter4m3ink4inein4sch5_tell5evas5el5insect5insec5uinsolv5int5essvat4inaoher4erint5res_tamar5xtens5o_tact4iinvol5ui4omani_gen4et_gen5iave5linei5pheriip5torivel5lerir4alinvel5opiir4alliirassi4nfortu5irl5ingirwo4meo4ducts4lut5arv5en5ue_stat4o_si5gnoverde5v4v4ere4o4duct_odu5cerodis5iaocus5siis5onerist5encxotrop4_ser4ie5vialitist5entochro4n_gnost4_sec5tovi5cariocess4iis4t3iclum4brio5calli4is4tom4itioneit5ress3vili4av5ilisev5ilizevil5linoast5eritu4als_han4de_hast5ii4vers__sa5linlsi4fiai5vilit5ivist_5ivistsnvoc5at_ho5rol_rol4lakinema4ni4cul4nultim5_re5strloth4ie5la5collos5sienight5ilor4ife_re5spolor5iatntup5li5lo5pen_re5sen_res5ci_re5linnt5ressn4trant_re5garloom5erxhort4a_ran5gilong5invol4ubi_ra5cem_put4ten5tition4tiparlo4cus__pos5si_lash4e_len5tint5ing_nit5res_le5vanxecut5o_plica4n4tify__plast45latini_phon4illow5er_li4onslligat4_peri5nntic4u4_pen5dewall5ern5ticizwan5gliwank5erwar5dedward5ern5ticisnth5ine_lo4giawar5thinmater4_pec3t4_pa4tiowav4ine_lous5i_para5t_par5af_lov5ernmor5ti_orner4nt5ativ_or5che_ma5lin_mar5ti_or4at4le5ation5tasiswel4izint4ariun4t3antntan5eon4t3ancleav5erl3eb5rannel5li_nucle5_no5ticlem5enclen5darwill5in_ni5tronsec4tewing5er4lentio5l4eriannerv5a_nas5tinres5tr5le5tu5lev5itano5blemnovel5el3ic3onwol5ver_mor5tilift5erlight5ilimet4e_mo5lec5lin3ealin4er_lin4erslin4gern5ocula_min5uenobser4_met4er_me5rin_me5ridmas4ted", + 8 : "_musi5cobserv5anwith5erilect5icaweight5ica5laman_mal5ad5l5di5nestast5i4cntend5enntern5alnter5nat_perse5c_pe5titi_phe5nomxe5cutio5latiliz_librar5nt5ilati_les5son_po5lite_ac5tiva5latilisnis5tersnis5ter_tamorph5_pro5batvo5litiolan5tine_ref5eremophil5ila5melli_re5statca3r4i3c5lamandrcen5ter_5visecti5numentanvers5aniver5saliv5eling_salt5ercen5ters_ha5bilio4c5ativlunch5eois5terer_sev5era_glor5io_stra5tocham5perstor5ianstil5ler_ge5neti_sulph5a_tac5ticnform5eroin4t5erneuma5to_te5ra5tma5chinecine5mat_tri5bal_fran5ch_tri5sti_fi5n4it_troph5o_fin5essimparad5stant5iv_vent5il4o5nomicssor5ialight5ersight5er__evol5utm5ament_ont5ane_icotyle5orest5atiab5oliziab5olismod5ifiehrill5inothalam5oth5erinnduct5ivrth5ing_otherm5a5ot5inizov5elinghav5ersipass5ivessent5ermater5n4ain5dersuo5tatiopens5atipercent5slav5eriplant5er5sing5erfortu5naplumb5erpo5lemicpound5erffranch5ppress5oa5lumnia_domest5pref5ereprel5atea5marinepre5scina5m4aticpring5ertil4l5agmmand5er5sid5u4a_de5spoievol5utee5tometeetend5erting5ingmed5icatran5dishm5ed5ieset5allis_de5servsh5inessmlo5cutiuest5ratncent5rincarn5atdes5ignareact5ivr5ebratereced5ennbarric5sen5sorier5nalisuar5tersre4t4er3_custom5naugh5tirill5er_sen5sati5scripti_cotyle5e4p5rob5a5ri5netaun5chierin4t5errip5lica_art5icl5at5ressepend5entu4al5lir5ma5tolttitu5di_cent5ria5torianena5ture5na5geri_cas5ualromolec5elom5ateatitud5i_ca5pituround5ernac5tiva_at5omizrpass5intomat5oltrifu5gae4l3ica4rpret5erel5ativetrav5esttra5versat5ernisat5ernizefor5estath5erinef5initeto5talizto5talis_barri5c_authen5mass5ing", + 9 : "_bap5tismna5cious_econstit5na5ciousl_at5omisena5culari_cen5tena_clima5toepe5titionar5tisti_cri5ticirill5ingserpent5inrcen5tenaest5igati_de5scrib_de5signe_determ5ifals5ifiefan5tasizplas5ticiundeter5msmu5tatiopa5triciaosclero5s_fec5unda_ulti5matindeterm5ipart5ite_string5i5lutionizltramont5_re5storeter5iorit_invest5imonolog5introl5ler_lam5enta_po5sitio_para5dis_ora5tori_me5lodio" + } +}; \ No newline at end of file diff --git a/resources/viewer/hyphenate/patterns/en-us.js b/resources/viewer/hyphenate/patterns/en-us.js new file mode 100644 index 0000000000..45191af388 --- /dev/null +++ b/resources/viewer/hyphenate/patterns/en-us.js @@ -0,0 +1,21 @@ +// The en-US hyphenation patterns are retrieved from +// http://tug_org/svn/texhyphen/trunk/collaboration/repository/hyphenator/ +Hyphenator.languages['en-us'] = Hyphenator.languages['en'] = { + leftmin : 2, + rightmin : 3, + shortestPattern : 2, + longestPattern : 9, + specialChars : "", + patterns : { + 3 : "x1qei2e1je1f1to2tlou2w3c1tue1q4tvtw41tyo1q4tz4tcd2yd1wd1v1du1ta4eu1pas4y1droo2d1psw24sv1dod1m1fad1j1su4fdo2n4fh1fi4fm4fn1fopd42ft3fu1fy1ga2sss1ru5jd5cd1bg3bgd44uk2ok1cyo5jgl2g1m4pf4pg1gog3p1gr1soc1qgs2oi2g3w1gysk21coc5nh1bck1h1fh1h4hk1zo1ci4zms2hh1w2ch5zl2idc3c2us2igi3hi3j4ik1cab1vsa22btr1w4bp2io2ipu3u4irbk4b1j1va2ze2bf4oar1p4nz4zbi1u2iv4iy5ja1jeza1y1wk1bk3fkh4k1ikk4k1lk1mk5tk1w2ldr1mn1t2lfr1lr3j4ljl1l2lm2lp4ltn1rrh4v4yn1q1ly1maw1brg2r1fwi24ao2mhw4kr1cw5p4mkm1m1mo4wtwy4x1ar1ba2nn5mx1ex1h4mtx3i1muqu2p3wx3o4mwa1jx3p1naai2x1ua2fxx4y1ba2dn1jy1cn3fpr2y1dy1i", + 4 : "4dryn2itni4on1inn1im_up3nik4ni4dy5giye4tyes4_ye44ab_nhe4nha4abe2n2gyn1guy1ery5eep2pe4abry3lay3lone4wne4v1nesy3chn1erne2q3neo1nenp2seps4hy2cey5lu2nedne2cyme44nk2y5at2adine2b2ne_y5ac2p1tp2ten1den1cun1cryn5dp2th4adup4twpub3ae4rxu3ayn5gaff4pue4n2au4p1ppuf4n2atag1ipu4mag1na2gon4asx3tix1t2pu2na4gya3haa3heah4la3ho_ti2a5ian2an5puspu2tnak4_th2n1kl_te4_ta4mu4u4mupmun23mum2alex4ob_sy25ynxal1i_st4y1o4xi5cxi5a4alm_si2_sh2m5sixhu4m4sh4m3r4amam2py2rabm2pixhi2yo5dr2ai4m1pmo2vmos2x2edmo2r4n1la2mor2asx3c2xas5yom4x4apxam3nme44mokrbi2nne44andy4osp4ot3noemn4omn4a4m1n4nog4m1l2angws4l1posw3shwri4wra4yp3iwom11wo2m2izrb4ow4nopo4pr2cem2isrd2iano4mig4y3pomi3awiz55mi_no4n4m1fme4v2re_wir42mes1menme2mme2gre1o2med4me_4nop4m5c4m1bwil21noureu2whi4w3ev4maprev2w1era2plpo4crfu4r4fyy5pu2maha3pu2mab2a2rn1p4npi44lyb4lya2p3nwam42l1w1lut4luplu3or1glluf4lu5a2wacltu2y3rol1tr4vv4r3guyr4rl1te4rh_nru4ar1il2sel4sc4l1rl5prl4plys4c4lovri3ar4ib4lof3lo_ar2par3q_os3ll4oll2i4as_ri1o3vokl2levoi44p1mlka35vo_ns4cas4ll1izr4iqr2is3vivl1it3lika2tan2sen2slrle42l3hlgo3l5gal5frns3mvi4p3ley_od2r2meles24athr4myle2al3drv1inldi4l2de2vilnt2il3civik4lce42l1b4lavv3ifrno4r3nua1trr2ocnt4sy4sok4syks4la2tuk4sck3ouko5ryss4a2tyau4b4klyys1tnu1akis4au3rki4pro4ek4ima2va5ki_nu4dn4umn3uokes4k1erav1irok2ke4g1keek2ed_me2aw3ikal4aws4k5agk3ab3ka_aye4ays4veg3jo4p5ba_4vedjew3n1v24ve_ja4pzar23vatizi4n1w41batba4z2b1bb2beix4o4i5w4b1d4be_rox5nym4nyp4n3za4ittr3por1r4i1ti1bel2ith2itei2su4rs2r1sars4cr2seis1p3betvag4i2sor1shbe3wr1sioad34b3hbi2bbi4d3bie3isf4ise2is_1bilr1sp5va_r5sw_le2uz4eir1ibi2tuxu3r1tiu1v2i1raze4nze4pb2l2uu4mo1biip3iz1eripe4b4louts44b1m4b3no3br3bodi4osbo4eru3aio4mi1ol4io_3booo1ce4inyin1u2insru2n2inn4inl4inkrv4e2inioch42iner3vo4indpi2np4idbt4lb4tob3trry4cry3t2in_o4elbu4ni2muim1i5saiil3v4ilnil1iil5fs1apo3er4b5w5by_bys4_in1sau4i1lazet4u2suo3ev2z1ii2go4igius1p5saw4s5bo2fi4ifti3fl4if_i3etsch2usc22ie4i2dui4dri2diid5dpi3au3ruz4ils1cuz4is4s5d4se_se4a2ce_2ici4ich3ceii1bri5bo1ceni1blse2g5seiibe43cepi2aniam4ur2li2al2i1acet4hy2scew41phy4ch_5phuhu4thu4gche2h4tyh4shur1durc44hr44h5p5sev5sexu1ra4s3fup3p2s3gph3t2sh_ho4g2h1n_he23ciau3pl4h1mci5ch2lozo4m4ciihi2vhi4p2cim2cin4phsu1peu1ouo1geu5osheu4sho4he4th1es4shwun5zun5ysi1bunu45cizo4glck3ihep5he2nh4ed1sioph2l5hazsi2rcly4zte4_ge21siscoe22cog5siu1siv5siz_ga24skes1l2s2leha4m2s1ms3ma1ogyo1h2u1ni3gus3gun2guegu4acov1gth3_eu3g4ros1n4_es3u2nez4zyum2pu1mi3som_ev2oig4cri2gov15goos4opgon2ul5v5goeu3lugob53go_2c1t4ph_g1nog1nic2te4sov4ulsgn4ag4myc4twcud5c4ufc4uipe2t3glo1gleul2igla4_eg23giz3cun5givgi4u3gir5gio1cusul4e2spagil4g1ic5gi__eb4cze41d2a5da_u1laggo44daf2dagg2gege4v1geo1gen2ged3dato1la2ge_ol2dol2i5daypek4p4eed1d42de_4gazol2tuiv3ol2vo2lys1sa2gamgaf4o2meui4n2ui2pe2cd4em4fugi4jku3fl3ufaf2tyf4to1denu4du4pe_2f3sfri2de1ps1si4f5pfos5d3eqs4sls4snfo2rss2tdes25fon4p1b_ci23payss5w2st_de1tf4l2de1v2fin4dey4d1fd4gast2idg1id2gyd1h25di_ud5dfi3au4cy_ch4pav43didu3cud1iff2fyu3crd1inst4r4f1ffev4fer11dio2fedfe4bdir2s2ty4fe_dis1on1au3ca4f5bon1c2ondd5k25far4fagpa1peys45eyc1exps4ul2dlyp4ale3whon3s3do_e1wa5doee5vud4oge1visu2msu2nub4euav4su2rp4ai6rk_d4or3dosu1atdo4v3doxp4adoo4k4swoo2padre4eus4e3upe5un2ophet5z4syc3syl4y3hoy1ads4pd4swd4syd2tho4wo3ta_du2c4etn2tabta2luac4es4wdu4g2ess4uabdu4n4duptav4st5bow1io1pr5dyn2tawe1sp2t1bop1uead1tz4et4chopy5ea4l4t1d4te_2tyle1si4esh1tee4tyat1cr4twoteg4es2c4eru1teoer1s2eroea2tte4po1rat1wh3tusea2v3teu3texer1i2e1ber1h4tey2t1f4t1ge3br2th_th2e4thle1ce3tumec2i2ths2erb1tia4tueer1aou5vtud2tif22tige1potu1aou4lttu41timt5toos4le1cre2pat4swe5owe1cue4ottsh4eos4e1ort4sce3ol4edieo2ge5of1tio4eno4enn5tiq4edoti4u1tive3my1tiz4othee2ct5laee2ft5lo4t1mee2mtme4e1meem5bcoi4to3be5exo1ry2tof1effel2iel2ftos24t1pe1la1traos2ceig2ei5de5ico2soe1h45egyeg5n", + 5 : "_ach4e4go_e4goseg1ule5gurtre5feg4iceher4eg5ibeger44egaltre4mei5gle3imbe3infe1ingtra3beir4deit3eei3the5ity5triae4jud3efiteki4nek4la2trime4la_e4lactri4v4toute4law5toure3leaefil45elece4ledto2rae5len4tonye1lestro3ve4fic4tonoto3mytom4bto2mato5ice5limto2gre3lioe2listru5i4todo4ellaee4tyello4e5locel5ogeest4el2shel4tae5ludel5uge4mace4mage5man2t1n2ee2s4ee4p1e2mele4metee4naemi4eee4lyeel3i3tled3tle_e4mistlan4eed3iem3iztrus4emo4gti3zaem3pie4mule4dulemu3ne4dritiv4aedon2e4dolti3tle5neae5neeen3emtis4pti5sotis4m3tisee3newti3sae5niee5nile3nioedi5zen3ite5niu5enized1ited3imeno4ge4nosen3oven4swti5oc4t1s2en3uaen5ufe3ny_4en3zed3ibe3diae4oi4ede4s3tini4ed3deo3ret2ina2e2dae4culeo4toe5outec4te4t3t2t4tes2t1ine5pel4timpe2corephe4e4plie2col5tigutu3arti5fytu4bie3pro3tienep4sh5tidie4putt4icoeci4t4tick2ti2bec3imera4bti4aber3ar4tuf45tu3ier4bler3che4cib2ere_4thooecca54thil3thet4thea3turethan4e4cade4bitere4qe4ben5turieret4tur5oeav5oeav5itu5ry4tess4tes_ter5ve1rio4eriter4iueri4v1terier3m4ter3cte5pe4t1waer3noeast3er5obe5rocero4rer1oue3assea5sp1tent4ertler3twtwis4eru4t3tende1s4a3tenc5telsear2te2scateli4e3scres5cue1s2ee2sec3tel_te5giear5kear4cte5diear3ae3sha2t1ede5ande2sice2sid5tecttece44teattype3ty5phesi4uea4gees4mie2sole3acte2sone1a4bdys5pdy4sedu4petaun4d3uleta5sytas4e4tare4tarctar4ata5pl2estrta5mo4talke2surtal3idu5eleta4bta5lae3teoua5naet1ic4taf4etin4ta5doe5tir4taciuan4id1ucad1u1ae3trae3tre2d1s2syn5ouar2d4drowet3uaet5ymdro4pdril4dri4b5dreneu3rouar3ieute44draieu5truar3te2vasdop4pe5veadoo3ddoni4u4belsum3iev1erdoli4do4laev3idevi4le4vinevi4ve5voc2d5ofdo5dee4wage5wee4d1n4ewil54d5lue3wit2d3lou3ber5eye_u1b4i3dledfa3blfab3rfa4ce3dle_fain4suit3su5issu2g34d5lasu4b3fa3tasu1al4fato1di1vd2iti5disiuci4bfeas4di1redi4pl4feca5fectdio5gfe3life4mofen2d4st3wuc4it5ferr5diniucle3f4fesf4fie4stry1dinaf4flydi3ge3dictd4icedia5bs4tops1tle5stirs3tifs4ties1ticfic4is5tias4ti_4ficsfi3cuud3ers3thefil5iste2w4filyudev45finas4tedfi2nes2talfin4ns2tagde2tode4suflin4u1dicf2ly5ud5isu5ditde1scd2es_der5sfon4tu4don5dermss4lid4erhfor4is4siede2pudepi4fra4tf5reade3pade3nufril4frol5ud4side3nou4eneuens4ug5infu5el5dem_s5setfu5nefu3rifusi4fus4s4futade5lode5if4dee_5gal_3galiga3lo2d1eds3selg5amos2s5cssas3u1ing4ganouir4mgass4gath3uita4deaf5dav5e5dav44dato4darygeez44spotspor4s4pon4gelydark5s4ply4spio4geno4genydard5ge3omg4ery5gesigeth54getoge4tydan3g4g1g2da2m2g3gergglu5dach4gh3inspil4gh4to4cutr1gi4agia5rula5bspho5g4icogien5s2pheulch42sperspa4n5spai3c4utu1lenul4gigir4lg3islcu5pycu3picu4mic3umecu2maso5vi5glasu5liagli4bg3lig5culiglo3r4ul3mctu4ru1l4og4na_c3terul1tig2ning4nio4ultug4noncta4b4c3s2cru4dul5ulsor5dgo3isum5absor5ccris4go3nic4rinson4gsona45gos_cri5fcre4vum4bi5credg4raigran25solvsoft3so4ceunat44graygre4nco5zi4gritcoz5egruf4cow5ag5stecove4cos4es5menun4ersmel44corbco4pl4gu4tco3pacon5tsman3gy5racon3ghach4hae4mhae4th5aguha3lac4onecon4aun4ims3latu2ninhan4gs3ket5colocol5ihan4kuni3vhap3lhap5ttras4co4grhar2dco5agsir5aclim45sionhas5shaun44clichaz3acle4m1head3hearun3s4s3ingun4sws2ina2s1in4silysil4eh5elohem4p4clarhena45sidiheo5r1c4l4h4eras5icc2c1itu4orsh3ernshor4h3eryci3phshon34cipecion45cinoc1ingc4inahi5anhi4cohigh5h4il2shiv5h4ina3ship3cilihir4lhi3rohir4phir4rsh3iohis4ssh1inci4lau5pia4h1l4hlan44cier5shevcia5rhmet4ch4tish1erh5ods3cho2hoge4chi2z3chitho4mahome3hon4aho5ny3hoodhoon45chiouptu44ura_ho5ruhos4esew4ihos1p1housu4ragses5tu4rasur4behree5se5shs1e4s4h1s24chedh4tarht1enht5esur4fru3rifser4os4erlhun4tsen5gur1inu3riosen4dhy3pehy3phu1ritces5tur3iz4cesa4sencur4no4iancian3i4semeia5peiass45selv5selfi4atu3centse1le4ceniib5iaib3inseg3ruros43cencib3li3cell5cel_s5edli5bun4icam5icap4icar4s4ed3secticas5i4cayiccu44iceour4pe4ced_i5cidsea5wi2cipseas4i4clyur4pi4i1cr5icrai4cryic4teictu2ccon4urti4ic4umic5uoi3curcci4ai4daiccha5ca4thscof4ide4s4casys4cliscle5i5dieid3ios4choid1itid5iui3dlei4domid3owu5sadu5sanid5uous4apied4ecany4ield3s4cesien4ei5enn4sceii1er_i3esci1estus3ciuse5as4cedscav5if4frsca4pi3fieu5siau3siccan4eiga5bcan5d4calous5sli3gibig3ilig3inig3iti4g4lus1trig3orig5oti5greigu5iig1ur2c5ah4i5i44cag4cach4ca1blusur4sat3usa5tab5utoi3legil1erilev4uta4b4butail3iail2ibil3io3sanc2ilitil2izsal4t5bustil3oqil4tyil5uru3tati4magsa5losal4m4ute_4imetbu3res3act5sack2s1ab4imitim4nii3mon4utelbumi4bu3libu4ga4inav4utenbsor42b5s2u4tis4briti3neervi4vr3vic4inga4inger3vey4ingir3ven4ingo4inguu4t1li5ni_i4niain3ioin1isbo4tor5uscrunk5both5b5ota5bos42i1no5boriino4si4not5borein3seru3in2int_ru4glbor5di5nusut5of5bor_uto5gioge4io2grbon4au5tonru3enu4touion3iio5phior3ibod3iio5thi5otiio4toi4ourbne5gb3lisrt4shblen4ip4icr3triip3uli3quar4tivr3tigrti4db4le_b5itzira4bi4racird5ert5ibi4refbi3tri4resir5gibi5ourte5oir4isr3tebr4tagbin4diro4gvac3uir5ul2b3ifis5agis3arisas52is1cis3chbi4eris3erbi5enrson3be5yor5shais3ibisi4di5sisbe3tw4is4krs3es4ismsbe5trr3secva4geis2piis4py4is1sbe3sp4bes4be5nuval5ois1teis1tirrys4rros44be5mis5us4ita_rron4i4tagrri4vi3tani3tatbe3lorri4or4reoit4esbe1libe5gu4itiarre4frre4cbe3giit3igbe3dii2tim2itio4itisrp4h4r3pet4itonr4peait5rybe3debe3dai5tudit3ul4itz_4be2dbeat3beak4ro4varo4tyros4sro5roiv5ioiv1itror3i5root1roomval1ub3berva5mo4izarva5piron4eban3ijac4qban4ebal1ajer5srom4prom4iba4geazz5i5judgay5alax4idax4ickais4aw4ly3awaya1vorav5ocav3igke5liv3el_ve4lov4elyro1feke4tyv4erdv4e2sa5vanav3ag5k2ick4illkilo5au1thk4in_4ves_ro3crkin4gve4teaun5dk5ishau4l2au3gu4kleyaugh3ve4tyk5nes1k2noat3ulkosh4at5uekro5n4k1s2at5uaat4that5te5vianat4sk5vidil4abolaci4l4adela3dylag4nlam3o3landrob3la4tosr4noular4glar3ilas4ea4topr3nivr3nita2tomr5nica4toglbin44l1c2vi5gnat3ifat1ica5tiar3neyr5net4ati_ld5isat4hol4driv2incle4bileft55leg_5leggr4nerr3nel4len_3lencr4nar1lentle3phle4prvin5dler4e3lergr3mitl4eroat5evr4mio5lesq3lessr3menl3eva4vingrma5cvio3lvi1ou4leyevi5rovi3so4l1g4vi3sulgar3l4gesate5cat5apli4agli2amr3lo4li4asr4lisli5bir4ligr2led4lics4vitil4icul3icyl3idaat5ac3lidirk4lel4iffli4flr3ket3lighvit3r4vityriv3iri2tulim3ili4moris4pl4inar3ishris4clin3ir4is_li5og4l4iqlis4pas1trl2it_as4shas5phri2pla4socask3ia3sicl3kallka4ta3sibl4lawashi4l5leal3lecl3legl3lel5riphas4abar2shrin4grin4ear4sarin4dr2inal5lowarre4l5met3rimol4modlmon42l1n2a3roorim5ilo4civo4la5rigil5ogo3loguri5et5longlon4iri1erlood5r4icolop3il3opmlora44ricir4icerib3a5los_v5oleri4agria4blos4tlo4taar2mi2loutar2izar3iolpa5bl3phal5phi4rhall3pit5voltar4im3volv2l1s2vom5ivori4l4siear4fllt5agar4fivo4rylten4vo4talth3ia3reeltis4ar4drw5ablrgo4naraw4lu3brluch4lu3cilu3enwag5olu5idlu4ma5lumia5raur5gitwait5luo3rw5al_luss4r5gisar4atl5venrgi4nara3pwar4tar3alwas4tly5mely3no2lys4l5ysewa1teaque5ma2car3gicma4clr3get5magnwed4nmaid54maldrg3erweet3wee5vwel4lapoc5re4whwest3ap3in4aphires2tr4es_mar3vre5rumas4emas1t5matemath3rero4r4eriap5atr1er4m5bilre1pumbi4vapar4a5nuran3ul4med_an3uare5lure1lian4twre5itmel4tan2trre4fy4antomen4are3fire2fe4menemen4imens4re1de3ment2r2edme5onre4awwin4g5reavme4tare3anme1tere1alm4etr3wiserdin4rdi4aan4stwith3an2span4snan2samid4amid4gan5otwl4esr4dalm4illmin4a3mindrcum3rc4itr3charcen4min4tm4inumiot4wl3ina3niumis5lan3ita3nip4mithan3ioan1gla3neuws4per2bina3nena5neem4ninw5s4tan1dl4mocrrbi4fmo2d1mo4gomois2xac5ex4agor4bagmo3mer4baba3narrau4ta5monrare4rar5cra5nor4aniam1inr2amiam5ifra4lomo3spmoth3m5ouf3mousam3icxer4ixe5roraf4tr5aclm3petra3bixhil5mpi4aam3ag3quetm5pirmp5is3quer2que_qua5vmpov5mp4tram5ab3alyz4m1s25alyt4alysa4ly_ali4exi5di5multx4ime4aldia4laral3adal5abak1enain5opu3trn4abu4nac_na4can5act5putexpe3dna4lia4i4n4naltai5lya3ic_pur4rag5ulnank4nar3c4narenar3inar4ln5arm3agognas4c4ag4l4ageupul3cage4oaga4na4gab3nautnav4e4n1b4ncar5ad5umn3chaa3ducptu4rpti3mnc1innc4itad4suad3owad4len4dain5dana5diua3ditndi4ba3dion1ditn3dizn5ducndu4rnd2we3yar4n3eara3dianeb3uac4um5neckac3ulp4siba3cio5negene4laac1inne5mine4moa3cie4nene4a2cine4poyc5erac1er2p1s2pro1tn2erepro3lner4rych4e2nes_4nesp2nest4neswpri4sycom4n5evea4carab3uln4gabn3gelpre3vpre3rycot4ng5han3gibng1inn5gitn4glangov4ng5shabi5an4gumy4erf4n1h4a5bannhab3a5bal3n4iani3anni4apni3bani4bl_us5ani5dini4erni2fip3petn5igr_ure3_un3up3per_un5op3pennin4g_un5k5nis_p5pel_un1en4ithp4ped_un1ani3tr_to4pympa3_til4n3ketnk3inyn5ic_se2ny4o5gy4onsnmet44n1n2_ru4d5pounnni4vnob4lpo4tan5ocly4ped_ro4qyper5noge4pos1s_ri4gpo4ry1p4or_res2no4mono3my_ree2po4ninon5ipoin2y4poc5po4gpo5em5pod_4noscnos4enos5tno5tayp2ta3noun_ra4cnowl3_pi2tyra5m_pi4eyr5ia_out3_oth32n1s2ns5ab_or3t_or1d_or3cplu4mnsid1nsig4y3s2eys3ion4socns4pen5spiploi4_odd5nta4bpli4n_ni4cn5tib4plignti2fpli3a3plannti4p1p2l23ysis2p3k2ys3ta_mis1nu5enpi2tun3uinp3ithysur4nu1men5umi3nu4nyt3icnu3trz5a2b_li4t_li3o_li2n_li4g_lev1_lep5_len4pion4oard3oas4e3pi1ooat5ip4inoo5barobe4l_la4mo2binpind4_ju3rob3ul_is4i_ir5rp4in_ocif3o4cil_in3so4codpi3lopi3enocre33piec5pidipi3dep5ida_in2kod3icodi3oo2do4odor3pi4cypian4_ine2o5engze3rooe4ta_im3m_id4l_hov5_hi3b_het3_hes3_go4r_gi4bpho4ro5geoo4gero3gie3phobog3it_gi5azo5ol3phizo4groogu5i4z1z22ogyn_fes3ohab5_eye55phieph1icoiff4_en3sph4ero3ing_en3go5ism_to2qans3v_el5d_eer4bbi4to3kenok5iebio5mo4lanper1v4chs_old1eol3erpe5ruo3letol4fi_du4co3liaper3op4ernp4erio5lilpe5ono5liop4encpe4la_do4tpee4do5livcin2q3pediolo4rol5pld3tabol3ub3pedeol3uno5lusedg1le1loaom5ahoma5l2p2edom2beom4bl_de3o3fich3pe4ao4met_co4ro3mia_co3ek3shao5midom1inll1fll3teapa2teo4monom3pi3pare_ca4tlue1pon4aco3nanm2an_pa4pum2en_on5doo3nenng1hoon4guon1ico3nioon1iso5niupa3nypan4ao3nou_bri2pain4ra1oronsu4rk1hopac4tpa4ceon5umonva5_ber4ood5eood5i6rks_oop3io3ordoost5rz1scope5dop1erpa4ca_ba4g_awn4_av4i_au1down5io3pito5pon1sync_as1s_as1p_as3ctch1c_ar5so5ra_ow3elo3visov4enore5auea1mor3eioun2d_ant4orew4or4guou5etou3blo5rilor1ino1rio_ang4o3riuor2miorn2eo5rofoto5sor5pe3orrhor4seo3tisorst4o3tif_an5cor4tyo5rum_al3tos3al_af1tos4ceo4teso4tano5scros2taos4poos4paz2z3wosi4ue3pai", + 6 : "os3ityos3itoz3ian_os4i4ey1stroos5tilos5titxquis3_am5atot3er_ot5erso3scopor3thyweek1noth3i4ot3ic_ot5icao3ticeor3thiors5enor3ougor3ityor3icaouch5i4o5ria_ani5mv1ativore5sho5realus2er__an3teover3sov4erttot3icoviti4o5v4olow3dero4r3agow5esto4posiop3ingo5phero5phanthy3sc3operaontif5on3t4ionten45paganp3agattele2gonspi4on3omyon4odipan3elpan4tyon3keyon5est3oncil_ar4tyswimm6par5diompro5par5elp4a4ripar4isomo4gepa5terst5scrpa5thy_atom5sta1tio5miniom3icaom3ic_ss3hatsky1scpear4lom3ena_ba5naol3umer1veilpedia4ped4icolli4er1treuo5liteol3ishpeli4epe4nano5lis_pen4thol3ingp4era_r1thoup4erago3li4f_bas4er1krauperme5ol5id_o3liceper3tio3lescolass4oi3terpe5tenpe5tiz_be5raoi5son_be3smphar5iphe3nooi5letph4es_oi3deroic3esph5ingr3ial_3ognizo5g2ly1o1gis3phone5phonio5geneo4gatora3mour2amenofit4tof5itera3chupi4ciepoly1eod5dedo5cureoc3ula1pole_5ocritpee2v1param4oc3raco4clamo3chetob5ingob3a3boast5eoke1st3nu3itpi5thanuf4fentu3meoerst2o3chasplas5tn3tinepli5ernti4ernter3sntre1pn4s3esplum4bnsati4npre4cns4moonon1eqnor5abpo3et5n5lessn5oniz5pointpoly5tnon4agnk3rup3nomicng1sprno5l4inois5i4n3o2dno3blenni3aln5keroppa5ran3itor3nitionis4ta5nine_ni3miznd3thrmu2dron3geripray4e5precipre5copre3emm3ma1bpre4lan5gerep3rese3press_can5cmedi2c5pri4e_ce4la3neticpris3op3rocal3chain4er5ipros3en4erarnera5bnel5iz_cit5rne4gatn5d2ifpt5a4bjanu3aign4itn3chisn5chiln5cheon4ces_nau3seid4iosna3talnas5tinan4itnanci4na5mitna5liahnau3zput3er2n1a2bhex2a3hatch1multi3hair1sm4pousg1utanmpo3rim4p1inmp5iesmphas4rach4empar5iraf5figriev1mpara5mo5seyram3et4mora_rane5oran4gemo3ny_monol4rap3er3raphymo3nizgno5morar5ef4raril1g2nacg1leadmoni3ara5vairav3elra5ziemon5gemon5etght1wemoi5sege3o1dmma5ryr5bine3fluoren1dixmis4ti_de3ra_de3rie3chasrch4err4ci4bm4inglm5ineedu2al_3miliame3tryrdi4er_des4crd3ingdi2rerme5thimet3alre5arr3mestim5ersadi2rende2ticdes3icre4cremen4temensu5re3disred5itre4facmen4dede2mosmen5acmem1o3reg3ismel5onm5e5dyme3died2d5ibren4te5mediare5pindd5a5bdata1bmba4t5cle4arma3tisma5scemar4lyre4spichs3huma5riz_dumb5re3strre4terbrus4qre3tribio1rhre5utiman3izre4valrev3elbi1orbbe2vie_eas3ire5vilba1thyman5is5maniamal4tymal4lima5linma3ligmag5inav3ioul5vet4rg3inglus3teanti1dl5umn_ltur3a_el3emltera4ltane5lp5ingloun5dans5gra2cabllos5etlor5ouric5aslo5rie_enam35ricidri4cie5lope_rid5erri3encri3ent_semi5lom3errig5an3logicril3iz5rimanlob5allm3ingrim4pell5out5rina__er4ril5linal2lin4l3le4tl3le4nriph5eliv3er_ge5og_han5k_hi3er_hon3olin3ea1l4inel4im4p_idol3_in3ci_la4cy_lath5rit3iclim4blrit5urriv5elriv3et4l4i4lli4gra_leg5elif3errk4linlid5er4lict_li4cor5licioli4atorl5ish_lig5a_mal5o_man5a_mer3c5less_rm5ersrm3ingy3thinle5sco3l4erilera5b5lene__mon3ele4matld4erild4erela4v4ar1nis44lativ_mo3rola5tanlan4telan5etlan4dllab3ic_mu5takin4dek3est_ro5filk3en4dro5ker5role__of5te4jestyys3icaron4al5izont_os4tlron4tai4v3ot_pe5tero3pelrop3ici5voreiv5il__pio5n_pre3mro4the_ran4tiv3en_rov5eliv3ellit3uati4tramr5pentrp5er__rit5ui4tismrp3ingit5ill_ros5tit3ica4i2tici5terirre4stit3era4ita5mita4bi_row5dist4lyis4ta_is4sesrsa5tiissen4is4sal_sci3erse4crrs5er_islan4rse5v2yo5netish5opis3honr4si4bis5han5iron_ir4minrtach4_self5iri3turten4diri5dei4rel4ire4de_sell5r4tieriq3uidrtil3irtil4lr4tilyr4tistiq5uefip4re4_sing4_ting4yn3chrru3e4lion3at2in4th_tin5krum3pli4no4cin3ityrun4ty_ton4aruti5nymbol5rvel4i_top5irv5er_r5vestin5geni5ness_tou5s_un3cein3cerincel45ryngei4n3auim3ulai5miniimi5lesac3riim5ida_ve5rasalar4ima5ryim3ageill5abil4istsan4deila5rai2l5am_wil5ii4ladeil3a4bsa5voright3iig3eraab5erd4ific_iff5enif5eroi3entiien5a45ie5gaidi5ou3s4cieab5latidi4arid5ianide3al4scopyab5rogid5ancic3ulaac5ardi2c5ocic3ipaic5inase2c3oi4carai4car_se4d4ei2b5riib5iteib5it_ib5ertib3eraac5aroi4ativ4ian4tse4molsen5ata5ceouh4warts5enedhus3t4s5enin4sentd4sentlsep3a34s1er_hun5kehu4min4servohro3poa5chethov5el5se5umhouse3sev3enho5senhort3eho5rishor5at3hol4ehol5arh5odizhlo3riac5robhis3elhion4ehimer4het4edsh5oldhe2s5ph5eroushort5here5aher4bahera3p3side_5sideshen5atsi5diz4signahel4lyact5ifhe3l4ihe5do55sine_h5ecathe4canad4dinsion5aad5er_har4lehard3e3sitioha5rasha3ranhan4tead3icahang5oadi4ersk5inesk5ing5hand_han4cyhan4cislith5hala3mh3ab4lsmall32g5y3n5gui5t3guard5smithad5ranaeri4eag5ellag3onia5guerso4labsol3d2so3licain5in4grada3s4on_gor5ougo5rizgondo5xpan4dait5ens5ophyal3end3g4o4ggnet4tglad5i5g4insgin5ge3g4in_spen4d2s5peog3imen5gies_3spher5giciagh5outsp5ingge5nizge4natge5lizge5lisgel4inxi5miz4gativgar5n4a5le5oga3nizgan5isga5mets5sengs4ses_fu4minfres5cfort5assi4erss5ilyfore5tfor5ayfo5ratal4ia_fon4dessur5aflo3ref5lessfis4tif1in3gstam4i5stands4ta4p5stat_fin2d5al5levs5tero4allicstew5afight5fi5del5ficie5ficiafi3cer5stickf3icena5log_st3ingf3icanama5ra5stockstom3a5stone2f3ic_3storef2f5iss4tradam5ascs4trays4tridf5fin_fend5efeath3fault5fa3thefar5thfam5is4fa4mafall5eew3inge5verbeven4ie5vengevel3oev3ellev5asteva2p5euti5let5roset3roget5rifsy5rinet3ricet5onaam5eraam5ilyami4noamor5ieti4noe5tidetai5loethod3eten4dtal5enes5urramp5enan3ageta5loge5strotan4detanta3ta5pere3ston4es2toes5times3tigta3rizestan43analy4taticta4tures4prean3arces3pertax4ises5onaes3olue5skintch5etanar4ies4i4ntead4ie2s5ima3natiande4sesh5enan3disan4dowang5iete5geres5ences5ecres5cana4n1icte2ma2tem3at3tenanwrita45erwau4tenesert3era3nieser3set5erniz4erniter4nis5ter3de4rivaan3i3fter3isan4imewo5vener3ineeri4ere3rient3ess_teth5e5ericke1ria4er3ester5esser3ent4erenea5nimier5enaer3emoth3easthe5atthe3iser5el_th5ic_th5icaere3in5thinkere5coth5odea5ninee3realan3ishan4klier4che5anniz4erandti4atoanoth5equi3lep5utat4ic1uan4scoe4probep3rehe4predans3poe4precan4surantal4e3penttim5ulep5anceo5rol3tine_eop3aran4tiewin4deap5eroen3ishen5icsen3etren5esten5esien5eroa3pheren3dicap3itae4nanten5amoem5ulaa3pituti3zen5emnize5missem5ishap5olaem5ine3tles_t5let_em1in2apor5iem3icaem5anael3op_el4labapos3te3liv3el5ishaps5esweath3e3lierel3icaar3actwa5verto3nate3libee4l1erel3egato3rietor5iza5radeelaxa4aran4gto3warelan4dej5udie5insttra5chtraci4ar5av4wa5gere5git5arbal4ar5easeg5ing4voteetrem5iar3enta5ressar5ial4tricsvor5abe3finetro5mitron5i4tronyar3iantro3sp5eficia3rieted5uloed3icae4d1erec3ulaec4tane4cremeco5roec3orae4concar5o5de4comme4cluse4clame5citeec5ifya5ronias3anta5sia_tu4nis2t3up_ecan5ce4belstur3ise4bel_eav3ene4a3tue5atifeath3ieat5eneart3eear4ilear4icear5eseam3ereal3oueal5erea5geread5iedum4be4ducts4duct_duc5eras3tenasur5adrea5rat3abl4d5outdo3natdom5izdo5lor4dlessu4bero3dles_at3alou3ble_d4is3tdirt5idi5niz3dine_at5ech5di3endi4cam1d4i3ad3ge4tud5estdev3ilde3strud3iedud3iesdes3tide2s5oat3egovis3itde4nardemor5at3en_uen4teuer4ilde5milat3eraugh3en3demicater5nuil5izdeli4ede5comde4cildecan4de4bonv3io4rdeb5it4dativ2d3a4bat3estu5laticu4tie5ulcheul3dercuss4icu5riaath5em3cultua5thenul3ingul5ishul4lar4vi4naul4liscu5ityctim3ic4ticuuls5esc5tantultra3ct5angcros4ecrop5ocro4pl5critiath5omum4blycre3at5vilitumor5oat5i5b5crat_cras5tcoro3ncop3iccom5ercol3orun5ishco3inc5clareat3ituunt3abat5ropun4tescit3iz4cisti4cista4cipicc5ing_cin3em3cinatuper5s5videsup3ingci2a5b5chini5videdupt5ib5vide_at4tag4ch1inch3ersch3er_ch5ene3chemiche5loure5atur4fercheap3vi5aliat3uravet3er4ch3abc5e4taau5sib3cessives4tece5ram2cen4e4cedenccou3turs5erur5tesur3theaut5enur4tiecav5al4cativave4nover3thcar5omca5percan4tycan3izcan5iscan4icus4lin3versecal4laver3ieca3latca5dencab3in3butiobuss4ebus5iebunt4iv4eresuten4i4u1t2iv3erenu3tineut3ingv4erelbroth35u5tizbound34b1orabon5at5vere_bom4bibol3icblun4t5blespblath5av3erav5enuebi3ogrbi5netven3om2v1a4bvac5ilbi3lizbet5izbe5strva5liebe5nigbbi4nabas4siva5nizbari4aav5ernbarbi5av5eryvel3liazi4eravi4er", + 7 : "_dri5v4ban5dagvar5iedbina5r43bi3tio3bit5ua_ad4derution5auti5lizver5encbuf4ferus5terevermi4ncall5incast5ercas5tigccompa5z3o1phros5itiv5chanicuri4fico5stati5chine_y5che3dupport54v3iden5cific_un4ter_at5omiz4oscopiotele4g5craticu4m3ingv3i3liz4c3retaul4li4bcul4tiscur5a4b4c5utiva5ternauiv4er_del5i5qdem5ic_de4monsdenti5fdern5izdi4latou4b5ingdrag5on5drupliuar5ant5a5si4tec5essawo4k1enec5ifiee4compear5inate4f3eretro5phewide5sp5triciatri5cesefor5ese4fuse_oth5esiar5dinear4chantra5ventrac4tetrac4itar5ativa5ratioel5ativor5est_ar5adisel5ebraton4alie4l5ic_wea5rieel5igibe4l3ingto5cratem5igraem3i3niemoni5oench4erwave1g4a4pillavoice1ption5eewill5inent5age4enthesvaude3vtill5inep5recaep5ti5bva6guer4erati_tho5rizthor5it5thodicer5ence5ternitteri5zater5iesten4tage4sage_e4sagese4sert_an5est_e4sertse4servaes5idenes5ignaesis4tees5piraes4si4btal4lisestruc5e5titioounc5erxe4cutota5bleset5itiva4m5atoa4matis5stratu4f3ical5a5lyst4ficatefill5instern5isspend4gani5zasqual4la4lenti4g3o3nas5ophiz5sophicxpecto55graph_or5angeuri4al_4graphy4gress_smol5d4hang5erh5a5nizharp5enhar5terhel4lishith5erhro5niziam5eteia4tricic4t3uascour5au2r1al_5scin4dover4nescan4t55sa3tiou5do3ny_ven4de_under5ty2p5al_anti5sylla5bliner4arturn3ari5nite_5initioinsur5aion4eryiphras4_tim5o5_ten5an_sta5blrtroph4_se5rieiq3ui3t5i5r2izis5itiviso5mer4istral5i5ticki2t5o5mtsch3ie_re5mittro3fiti4v3er_i4vers_ros5per_pe5titiv3o3ro_ped5alro5n4is_or5ato4jestierom5ete_muta5bk5iness4latelitr4ial__mist5i_me5terr4ming_lev4er__mar5tilev4eralev4ers_mag5a5liar5iz5ligaterit5ers_lat5errit5er_r5ited__im5pinri3ta3blink5er_hon5ey5litica_hero5ior5aliz_hand5irip5lic_gen3t4tolo2gylloqui5_con5grt1li2erbad5ger4operag_eu4lertho3donter2ic__ar4tie_ge4ome_ge5ot1_he3mo1_he3p6a_he3roe_in5u2tpara5bl5tar2rht1a1mintalk1a5ta3gon_par5age_aster5_ne6o3f_noe1thstyl1is_poly1s5pathic_pre1ampa4tricl3o3niz_sem4ic_semid6_semip4_semir45ommend_semiv4lea4s1a_spin1oom5etryspher1o_to6poglo4ratospe3cio3s2paceso2lute_we2b1l_re1e4ca5bolicom5erseaf6fishside5swanal6ysano5a2cside5stl5ties_5lumniasid2ed_anti1reshoe1stscy4th1s4chitzsales5wsales3cat6tes_augh4tlau5li5fom5atizol5ogizo5litiorev5olure5vertre5versbi5d2ifbil2lab_earth5pera5blro1tronro3meshblan2d1blin2d1blon2d2bor1no5ro1bot1re4ti4zr5le5quperi5stper4malbut2ed_but4tedcad5e1moist5enre5stalress5ibchie5vocig3a3roint5er4matizariv1o1lcous2ticri3tie5phisti_be5stoog5ativo2g5a5rr3a3digm4b3ingre4posir4en4tade4als_od5uctsquasis6quasir6re5fer_p5trol3rec5olldic1aiddif5fra3pseu2dr5ebrat5metric2d1lead2d1li2epro2g1epre1neuod5uct_octor5apoin3came5triem5i5liepli5narpara3memin5glim5inglypi4grappal6matmis4er_m5istryeo3graporth1riop1ism__but4tio3normaonom1icfeb1ruafermi1o_de4moio5a5lesodit1icodel3lirb5ing_gen2cy_n4t3ingmo5lestration4get2ic_4g1lishobli2g1mon4ismnsta5blmon4istg2n1or_nov3el3ns5ceivno1vembmpa5rabno4rarymula5r4nom1a6lput4tinput4tedn5o5miz_cam4penag5er_nge5nesh2t1eoun1dieck2ne1skiifac1etncour5ane3backmono1s6mono3chmol1e5cpref5ac3militapre5tenith5i2lnge4n4end5est__capa5bje1re1mma1la1ply5styr1kovian_car5olprin4t3lo2ges_l2l3ishprof5it1s2tamp", + 8 : "lead6er_url5ing_ces5si5bch5a5nis1le1noidlith1o5g_chill5ilar5ce1nym5e5trych5inessation5arload4ed_load6er_la4c3i5elth5i2lyneg5ativ1lunk3erwrit6er_wrap3arotrav5es51ke6linga5rameteman3u1scmar1gin1ap5illar5tisticamedio6c1me3gran3i1tesima3mi3da5bves1titemil2l1agv1er1eigmi6n3is_1verely_e4q3ui3s5tabolizg5rapher5graphicmo5e2lasinfra1s2mon4ey1lim3ped3amo4no1enab5o5liz_cor5nermoth4et2m1ou3sinm5shack2ppo5sitemul2ti5uab5it5abimenta5rignit1ernato5mizhypo1thani5ficatuad1ratu4n5i4an_ho6r1ic_ua3drati5nologishite3sidin5dling_trib5utin5glingnom5e1non1o1mistmpos5itenon1i4so_re5stattro1p2istrof4ic_g2norespgnet1ism5glo5binlem5aticflow2er_fla1g6elntrol5lifit5ted_treach1etra1versl5i5ticso3mecha6_for5mer_de5rivati2n3o1me3spac6i2t3i4an_thy4l1antho1k2er_eq5ui5to4s3phertha4l1amt3ess2es3ter1geiou3ba3dotele1r6ooxi6d1iceli2t1isonspir5apar4a1leed1ulingea4n3iesoc5ratiztch3i1er_kil2n3ipi2c1a3dpli2c1abt6ap6athdrom3e5d_le6icesdrif2t1a_me4ga1l1prema3cdren1a5lpres2plipro2cess_met4ala3do5word1syth3i2_non1e2m_post1ampto3mat4rec5ompepu5bes5cstrib5utqu6a3si31stor1ab_sem6is4star3tliqui3v4arr1abolic_sph6in1de5clar12d3aloneradi1o6gs3qui3tosports3wsports3cra5n2hascro5e2cor3bin1gespokes5wspi2c1il_te3legrcroc1o1d_un3at5t_dictio5cat1a1s2buss4ingbus6i2esbus6i2erbo2t1u1lro5e2las1s2pacinb1i3tivema5rine_r3pau5li_un5err5r5ev5er__vi2c3arback2er_ma5chinesi5resid5losophyan3ti1n2sca6p1ersca2t1olar2rangesep3temb1sci2uttse3mes1tar3che5tsem1a1ph", + 9 : "re4t1ribuuto5maticl3chil6d1a4pe5able1lec3ta6bas5ymptotyes5ter1yl5mo3nell5losophizlo1bot1o1c5laratioba6r1onierse1rad1iro5epide1co6ph1o3nscrap4er_rec5t6angre2c3i1prlai6n3ess1lum5bia_3lyg1a1miec5ificatef5i5nites2s3i4an_1ki5neticjapan1e2smed3i3cinirre6v3ocde2c5linao3les3termil5li5listrat1a1gquain2t1eep5etitiostu1pi4d1v1oir5du1su2per1e6_mi1s4ers3di1methy_mim5i2c1i5nitely_5maph1ro15moc1ra1tmoro6n5isdu1op1o1l_ko6r1te1n3ar4chs_phi2l3ant_ga4s1om1teach4er_parag6ra4o6v3i4an_oth3e1o1sn3ch2es1to5tes3toro5test1eror5tively5nop5o5liha2p3ar5rttrib1ut1_eth1y6l1e2r3i4an_5nop1oly_graph5er_5eu2clid1o1lo3n4omtrai3tor1_ratio5na5mocratiz_rav5en1o", + 10 : "se1mi6t5ic3tro1le1um5sa3par5iloli3gop1o1am1en3ta5bath3er1o1s3slova1kia3s2og1a1myo3no2t1o3nc2tro3me6c1cu2r1ance5noc3er1osth1o5gen1ih3i5pel1a4nfi6n3ites_ever5si5bs2s1a3chu1d1ri3pleg5_ta5pes1trproc3i3ty_s5sign5a3b3rab1o1loiitin5er5arwaste3w6a2mi1n2ut1erde3fin3itiquin5tes5svi1vip3a3r", + 11 : "pseu3d6o3f2s2t1ant5shimi1n2ut1estpseu3d6o3d25tab1o1lismpo3lyph1onophi5lat1e3ltravers3a3bschro1ding12g1o4n3i1zat1ro1pol3it3trop1o5lis3trop1o5lesle3g6en2dreeth1y6l1eneor4tho3ni4t", + 12 : "3ra4m5e1triz1e6p3i3neph1" + } +}; \ No newline at end of file diff --git a/resources/viewer/hyphenate/patterns/en.js b/resources/viewer/hyphenate/patterns/en.js deleted file mode 100644 index 0ec36bcc65..0000000000 --- a/resources/viewer/hyphenate/patterns/en.js +++ /dev/null @@ -1,16 +0,0 @@ -Hyphenator.languages.en = { - leftmin : 2, - rightmin : 2, - shortestPattern : 2, - longestPattern : 8, - specialChars : '', - patterns : { - 3 : 'a2da2fai2a1ja2n4ao2bfb1jbk44bp2btb1v1cac3c2ch1cick1c5n1coc1q1cyd1bd5cd1jd1m1dod1p1dr1dud1vd1wd2ye1fei2e1je1q4eu1fa4fd4fh1fi4fm4fn1fo2ft3fu1fy1gag3bgd4gl2g1m1gog3p1grgs2g3w1gyh1bh1fh1h4hkh1w2id2igi3hi3j4ik2io2ip4iri1u2iv4iy5ja1jek1bk3fkh4k1ikk4k1lk1mk5tk1w2ld2lf4ljl1l2lm2lp4lt1ly1ma2mh4mkm1m1mo4mt1mu4mw1nan3fn1jn5mn1qn1rn1t4nz4oaoi2o5j2oko2noo2o1qou21papd44pf4pgpr2p3wqu2r1br1cr1frg2rh4r3jr1lr1mr1pr1wsa2s2hsk21sos1r2ss1su4svsw2s4y1ta4tc2tl1to1tu4tvtw41ty4tzu5j4uk2usu3u1vav4yw1bwi2w4kw5p4wtwy4x1ax1ex1hx3ix3ox3px1uxx4y1by1cy1dy1iy1wza14zb2ze5zl4zm1zo', - 4 : '_ch4_ci2_eb4_eg2_es3_eu3_ga2_ge2_he2_in1_le2_me2_od2_os3_sh2_si2_st4_sy2_ta4_te4_th2_ti2_up3_ye44ab_abe24abr2adi4aduae4raff4ag1iag1na2goa4gya3haa3heah4la3hoa5ia2aleal1i4alm4amaa2mo4and2angano4a2pla3pu2a2rar1iar2par3q4as_as4la2ta4atha1tra2tua2tyau4bau3ra2vaav1iaw3iaws4aye4ays45ba_1batba4z2b1bb2be4b1d4be_1bel3betbe3w4b3hbi2bbi4d3bie1bilbi2tb2l2b4lo4b1m4b3n3bodbo4e3boobt4lb4tob3trbu4n4b5w5by_bys42ce_3cei1cen3cepcet4cew44ch_che23ciaci5c4cii2cim2cin5cizck3icly4coe22cogcoi4cov1cri22c1tc2tec4twcud5c4ufc4ui3cun1cuscze41d2a5da_4daf2dag3dat5dayd1d42de_d4em1dende1pd3eqdes2de1tde1v4dey4d1fd4gadg1id2gyd1h25di_3didd1ifd1in1diodir2dis1d5k22dly3do_5doed4ogd4or3dosdo4v3doxdre44dryds4pd4swd4syd2thdu2cdu4gdu4n4dup5dynead1ea4lea2tea2v2e1be3bre1ceec2ie1cre1cu4edi4edoee2cee2fee2me5ex1effeg5n5egye1h4e5icei5deig2e1lael2fel2iem5be1mee3my4enn4enoe5ofeo2ge3ole1oreos4e4ote5owe2pae1poer1a2erber1her1i2eroer1s4erues2c4eshe1sie1sp2esses4w4etnet5ze5une3upeus4e1vie5vue1wae3wh1exp5eyceys44fag5far4f5b4fe_fe4b2fedfer1fev44f1ff2fyfi3a2finf4l25fonfo2rfos54f5pfri22f3sf4tof2ty4fuggaf42gam4gaz2ge_2ged1gen1geoge4vg2geggo45gi_g1icgil45gio3girgi4u5giv3gizgla41gle3glog4mygn4ag1nig1no3go_gob55goegon25googov1g4rogth3gu4a2gue3gun3gusha4m5hazh4edhe2nhep5h1eshe4theu4hi4phi2vh2lo4h1m2h1nho4g4h5p4hr4h4shh4tyhu4ghu4thy2s2i1ai2aliam4i2anibe4i1bli5boi1br4ich2iciid5di2dii4dri2du2ie4i3et4if_i3fl4ift4igii2goi1lail5fil1i4ilnil3vim1ii2mu2in_4ind2ine2ini4ink4inl2inn2insin1u4iny4io_i1olio4mi4osipe4ip3ii1rair1i2is_4ise3isfi2sois1pi2su2ite2ithi1ti4itt4i5wix4oizi4ja4pjew3jo4p3ka_k3abk5agkal4k2ed1keeke4gk1erkes45ki_k4imki4pkis44klyko5rk3ouk4scks4lk4sy4lav2l1blce4l3cil2deldi4l3drle2ales23leyl5frl5galgo32l3h3likl1itl1izlka3l2lell2ill4o3lo_4lof4lovl4pll5pr4l1rl4scl2sel1tel1trltu2lu5aluf4lu3o4lup1lut2l1w4lya4lyb2mab2mah4map4m1b4m5c4me_2medme2gme2m1men2mesme4v4m1f5mi_mi3amig4m2ism2iz4m1l4m1nmn4amn4o4mokmo2rmos2mo2v4m1pm2pim2py4m3rm4shm5si3mummun24mupmu4unak4n2ann4asn2atn2aun1crn1cun1de2ne_ne2bne2c2ned1nen3neone2qn1er1nesne4vne4wn1gun2gynha4nhe4ni4dnik4n1imn1inni4on2it4nk2n1kl4n1lnme4nne43noe4nogno4n4nop1noun1p4npi4nru4ns4cn2sen2slns3mnt2int4snu1anu4dn4umn3uon1v2n1w4nym4nyp4n3zaoad3o1bio3bro1ceoch4o4elo3ero3evo2fio1geo4gl1ogyo1h2oig4o1laol2dol2iol2tol2vo2lyo2meon1aon1c2ondon3soo4ko2pa2opho1prop1uopy5o1rao1ryos2cos4lo2so4othou4lou5vow1io4wooy1ap4adp4aip4alpa1ppav43pay4p1b4pe_pe2cp4eepek4pe2t4ph_ph2l4phsph3t5phu1phypi3ap4idpi2n4p1m2p3npo4cpo4p1posp4ot4p1pp2pep2seps4h2p1tp2tep2thp4twpub3pue4puf4pu4mpu2n5puspu2t2rabr2air2asrbi2rb4or2cerd2i2re_re1oreu2rev2rfu4r4fyr1glr3gu4rh_ri3ar4ibri1or4iqr2isrle4r2mer4myrno4r3nur2ocro4erok2rox5r3por1r44rs2r1sars4cr2ser1shr1sir1spr5swr1tiru3aru2nrv4er3vory4cry3t5sais1apsau45saw4s5bsch2s1cu4s5d4se_se4ase2g5sei5sev5sex4s3f2s3g2sh_sho44shwsi1b1siosi2r1sis5siu1siv5siz4skes1l2s2le2s1ms3mas1n43soms4op4sov2spas1sas1sis4sls4snss2tss5w2st_st2ist4rs2tys4ulsu2msu2nsu2r4swo4syc3syl3ta_2tabta2ltav42taw2t1bt4ch4t1d4te_1teeteg41teote4p3teu3tex4tey2t1f4t1g2th_th2e4thl2ths1tiatif22tig1tim1tio5tiqti4u1tiv1tizt5lat5lo4t1mtme4to3b2toftos24t1p1trat4sctsh4t4swt5tottu4tu1atud24tue3tum3tus4two4tya2tyltz4e4uabuac4u1atuav4ub4eu3cau3cru3cuu4cyud5du4du3ufau3fl2ui2ui4nuiv3u1laul4eul2i4ulsu3luul5vu1mium2pu2neu1niunu4un5yun5zu5osu1ouu1peu3plup3pu1raurc4ur1dur2lu3ruusc2us1pu2suuts4uu4mu1v2uxu3uz4e5va_vag43vat4ve_4vedveg3v3ifvik42vilv1invi4p3viv5vo_voi43vok4vv42wacwam4w1erw3evwhi4wil2wir4wiz5w4no1wo2wom1wra4wri4w3shws4lxam3x4apxas5x3c2x2edxhi2xhu4xi5axi5cx4obx1t2x3tixu3ay5acy5aty2cey3chy5eey1eryes4ye4ty5gi4y3hy3lay3loy5luyme4yn5dyn5g5ynxy1o4yo5dyom4y4osyp3iy3poy5puy3royr4rys4cy4soyss4ys1tzar2ze4nze4pz1erzet42z1iz4ilz4iszo4mzte4z4zy', - 5 : '_ach4_af1t_al3t_an5c_ang4_ant4_ar5s_as3c_as1p_as1s_au1d_av4i_awn4_ba4g_ber4_bri2_ca4t_co3e_co4r_de3o_do4t_du4c_eer4_el5d_en3g_en3s_eye5_fes3_gi5a_gi4b_go4r_hes3_het3_hi3b_hov5_id4l_im3m_ine2_in2k_in3s_ir5r_is4i_ju3r_la4m_len4_lep5_lev1_li4g_li2n_li3o_li4t_mis1_ni4c_odd5_or3c_or1d_or3t_oth3_out3_pi4e_pi2t_ra4c_ree2_res2_ri4g_ro4q_ru4d_se2n_til4_to4p_un1a_un1e_un5k_un5o_un3u_ure3_us5aa5bala5banabi5aab3ula4carac1er4a2cia3cieac1ina3cioac3ulac4uma3diaa3dioa3dita5diuad4lead3owad4sua3ducad5uma4gabaga4nage4o4ageu4ag4l3agogag5ula3ic_ai5lya4i4nain5oak1enal5abal3ada4lar4aldiali4ea4ly_4alys5alyt3alyzam5abam3agam3icam5ifam1ina5mona3naran1dla5neea3nena3neuan1glan3ioa3nipan3ita3niuan5otan2saan4snan2span4st4antoan2tran4twan3uaan3ula5nurapar4ap5at4aphiap3inapoc5aque5ar3alara3par4ata5rauaraw4ar4dra3reear4fiar4flar4imar3ioar2izar2mia3rooarre4ar4saar2shas4abashi4a3siba3sicask3ia4socas5phas4shas1trat5acat5apate5cat5evat4ho4ati_a5tiaat1icat3ifa4toga2toma4topa4tosat4skat5teat4that5uaat5ueat3ulaugh3au3guau4l2aun5dau1thav3aga5vanav3igav5oca1vor3awayaw4lyax4icax4iday5alazz5iba4gebal1aban4eban3ib3berbeak4beat34be2dbe3dabe3debe3dibe3gibe5gube1libe3lo4be5mbe5nu4bes4be3spbe5trbe3twbe5yobi5enbi4er2b3ifbin4dbi5oubi3trb5itzb4le_blen4b3lisbne5gbod3ibon4a5bor_bor5d5bore5bori5bos4b5otaboth5bo4to4brit2b5s2bsor4bu4gabu3libumi4bu3re5bust4butab5utoca1blcach44cag42c5ah4calocan5dcan4ecany44casyca4thccha5cci4accon44ced_5cel_3cell3cenc4ceni3cent4cesaces5t4ched5chio3chitchi2z3cho2ch4ticia5r4cierci4la3cilic4inac1ing5cinocion44cipeci3ph2c1it1c4l44clarcle4m4clicclim4co5agco4grcol5i5colocon4ac4onecon3gcon5tco3paco4pl4corbcos4ecove4cow5acoz5eco5zi5credcre4vcri5fc4rincris4cru4d4c3s2cta4bc3terctu4r5culicu2mac3umecu4micu3picu5py3c4ut4cutrdach4da2m2dan3gdard5dark54dary4dato5dav4dav5edeaf52d1ed4dee_de5ifde5lo5dem_de3node3nude3padepi4de2pud4erh5dermder5sd2es_de1scde4sude2todia5bd4ice3dictdi3ge1dina5dinidio5gdi4pldi1re5disid2iti1di1v4d5la3dle_3dled2d3lo4d5lu4d1n4do5de2d5ofdo4ladoli4doni4doo3ddop4p4drai5drendri4bdril4dro4p4drow2d1s2d1u1ad1ucadu5eld3uledu4pedy4sedys5pe1a4be3actea4gee5andear3aear4cear5kear2tea5spe3asseast3eav5ieav5oe4bene4bite4cadecca5e4cibec3imeci4te2cole2corec4tee4cul2e2da4ed3dede4se3diaed3ibed3imed1itedi5ze4doledon2e4drie4duleed3ieel3iee4lyee4naee4p1ee2s4eest4ee4tye4ficefil43efit4egaleger4eg5ibeg4ice4go_e4goseg1ule5gureher4ei5gle3imbe3infe1ingeir4deit3eei3the5itye4judeki4nek4lae4la_e4lace4lawe3lea5elece4lede5lene1lese5lime3lioe2lis4ellaello4e5locel5ogel2shel4tae5ludel5uge4mace4mage5mane2mele4metemi4ee4misem3izemo4gem3pie4mulemu3ne5neae5neeen3eme3newe5niee5nile3nioen3ite5niu5enizeno4ge4nosen3oven4swen3uaen5ufe3ny_4en3ze4oi4eo3reeo4toe5oute3paie5pelephe4e4plie3proep4she4putera4ber3arer4bler3ch2ere_ere4qeret4e1rio4eriter4iueri4ver3m4er3noer5obe5rocero4rer1ou4ertler3tweru4te1s4ae2scae3scres5cue1s2ee2sece3shae2sice2sidesi4ues4mie2sole2son2estre2sureta4be3teoet1icetin4e5tire3trae3treet3uaet5ymeu3roeute4eu5tre2vase5veaev1erev3idevi4le4vinevi4ve5voce4wage5weeewil5e3wit5eye_fa3blfab3rfa4cefain4fa3ta4fatofeas44feca5fectfe3life4mofen2d5ferrf4fesf4fief4flyfic4i4ficsfi3cufil5i4fily5finafi2nefin4nflin4f2ly5fon4tfor4ifra4tf5reafril4frol5fu5elfu5nefu3rifusi4fus4s4futa5gal_3galiga3log5amo4ganogass4gath3geez44gely4geno4genyge3omg4ery5gesigeth54getoge4ty4g1g2g3gergglu5gh3ingh4to1gi4agia5rg4icogien5gir4lg3isl5glasgli4bg3ligglo3rg4na_g2ning4niog4nongo3isgo3ni5gos_g4raigran24graygre4n4gritgruf4g5ste4gu4tgy5rahach4hae4mhae4th5aguha3lahan4ghan4khap3lhap5thar2dhas5shaun4haz3a1head3hearh5elohem4phena4heo5rh4erah3ernh3eryhi5anhi4cohigh5h4il2h4inahir4lhi3rohir4phir4rhis4s4h1l4hlan4hmet4h5odshoge4ho4mahome3hon4aho5ny3hoodhoon4ho5ruhos4ehos1p1houshree54h1s2h4tarht1enht5eshun4thy3pehy3ph4iancian3iia5peiass4i4atuib5iaib3inib3lii5bun4icam5icap4icaricas5i4cayiccu44iceoi5cidi2cipi4cly4i1cr5icrai4cryic4teictu2ic4umic5uoi3curi4daiide4si5dieid3ioid1itid5iui3dlei4domid3owid5uoied4eield3ien4ei5enni1er_i3esci1estif4fri3fieiga5bi3gibig3ilig3inig3iti4g4lig3orig5oti5greigu5iig1ur4i5i4i3legil1erilev4il3iail2ibil3io2ilitil2izil3oqil4tyil5uri4mag4imet4imitim4nii3mon4inavi3nee4inga4inge4ingi4ingo4ingui5ni_i4niain3ioin1is2i1noino4si4notin3se2int_i5nusioge4io2grion3iio5phior3iio5thi5otiio4toi4ourip4icip3uli3quaira4bi4racird5ei4refi4resir5giir4isiro4gir5ulis5agis3arisas52is1cis3chis3eris3ibisi4di5sis4is4k4ismsis2piis4py4is1sis1teis1tiis5us4ita_i4tagi3tani3tatit4es4itiait3igi2tim2itio4itis4itonit5ryi5tudit3ul4itz_iv5ioiv1it4izarjac4qjer5s5judgkais4ke5like4ty5k2ick4illkilo5k4in_kin4gk5ish4kleyk5nes1k2nokosh4kro5n4k1s2l4abolaci4l4adela3dylag4nlam3o3landlar4glar3ilas4elbin44l1c2ld5isl4drile4bileft55leg_5legg4len_3lenc1lentle3phle4prler4e3lergl4ero5lesq3lessl3eva4leye4l1g4lgar3l4gesli4agli2amli4asli5bi4licsl4icul3icyl3ida3lidil4iffli4fl3lighlim3ili4mol4inalin3ili5og4l4iqlis4pl2it_l3kallka4tl4lawl5leal3lecl3legl3lell5lowl5metl4modlmon42l1n2lo4cil5ogo3logu5longlon4ilood5lop3il3opmlora45los_los4tlo4ta2loutlpa5bl3phal5phil3pit2l1s2l4sielt5aglten4lth3iltis4lu3brluch4lu3cilu3enlu5idlu4ma5lumiluo3rluss4l5venly5mely3no2lys4l5ysema2cama4cl5magnmaid54maldmar3vmas4emas1t5matemath3m5bilmbi4v4med_mel4tmen4a4menemen4imens43mentme5onme4tame1tem4etrmid4amid4gm4illmin4a3mindmin4tm4inumiot4mis5l4mithm4nin4mocrmo2d1mo4gomois2mo3memo3spmoth3m5ouf3mousm3petmpi4am5pirmp5ismpov5mp4tr4m1s25multn4abu4nac_na4can5actna4li4naltnank4nar3c4narenar3inar4ln5armnas4c3nautnav4e4n1b4ncar5n3chanc1innc4itn4dain5danndi4bn1ditn3dizn5ducndu4rnd2wen3earneb3u5neck5negene4lane5mine4mo4nenene4pon2erener4r2nes_4nesp2nest4neswn5even4gabn3gelng5han3gibng1inn5gitn4glangov4ng5shn4gum4n1h4nhab33n4iani3anni4apni3bani4blni5dini4erni2fin5igrnin4g5nis_n4ithni3trn3ketnk3innmet44n1n2nni4vnob4ln5oclnoge4no4mono3mynon5i4noscnos4enos5tno5ta3nounnowl32n1s2ns5abnsid1nsig4n4socns4pen5spinta4bn5tibnti2fnti4pnu5enn3uinnu1men5umi3nu4nnu3troard3oas4eoat5io5barobe4lo2binob3ulocif3o4cilo4codocre3od3icodi3oo2do4odor3o5engoe4tao5geoo4gero3gieog3ito4groogu5i2ogynohab5oiff4o3ingo5ismo3kenok5ieo4lanold1eol3ero3letol4fio3liao5lilo5lioo5livolo4rol5plol3ubol3uno5lusom5ahoma5lom2beom4blo4meto3miao5midom1ino4monom3pion4aco3nanon5doo3nenon4guon1ico3nioon1iso5niuonsu4on5umonva5ood5eood5ioop3io3ordoost5ope5dop1ero3pito5pono5ra_ore5aor3eiorew4or4guo5rilor1ino1rioo3riuor2miorn2eo5rofor5pe3orrhor4seorst4or4tyo5rumos3alos4ceo5scrosi4uos4paos4poos2tao4tano4teso3tifo3tisoto5sou3blou5etoun2dov4eno3visow3elown5ipa4capa4cepac4tpain4pan4apa3nypa4pu3parepa2te3pe4a2p2ed3pede3pedipee4dpe4lap4encpe5onp4erip4ernper3ope5ruper1vph4erph1ic5phie3phiz3phobpho4rpian4pi4cyp5idapi3de5pidi3piecpi3enpi3lop4in_pind4p4ino3pi1opion4p3ithpi2tu2p3k21p2l23planpli3a4pligpli4nploi4plu4m5pod_po5em5po4gpoin2po4ni1p4orpo4rypos1spo4ta5pounp4pedp5pelp3penp3perp3petpre3rpre3vpri4spro3lpro1t2p1s2p4sibpti3mptu4rpul3cpur4r5putepu3trqua5v2que_3quer3quetra3bir5aclraf4tra4lor2amir4anira5norar5crare4rau4tr4babr4bagrbi4fr2binrcen4r3charc4itrcum3r4dalrdi4ardin4re1alre3an5reavre4aw2r2edre1dere2fere3fire4fyre5itre1lire5lure1pur1er4r4erirero4re5rur4es_res2tre4whrg3err3getr3gicrgi4nr5gisr5gitrgo4n4rhalria4bri4agrib3ar4ice4ricir4icori1erri5et5rigirim5i3rimor2inarin4drin4erin4g5riphri2plr4is_ris4cr3ishris4pri2turiv3ir3ketrk4ler2ledr4ligr4lisr3lo4rma5cr3menr4mior3mitr4narr3nelr4nerr5netr3neyr5nicr3nitr3nivr4nourob3lro3crro1ferom4irom4pron4e1room5rootror3iro5roros4sro4tyro4var4pear3petrp4h4rre4crre4fr4reorri4orri4vrron4rros4rrys4r3secrs3esr5sharson3r4tagr3tebrte5ort5ibrti4dr3tigr4tivr3trirt4shru3enru4glru3inrunk5r5uscr3venr3veyr3vicrvi4v2s1ab5sacks3actsal4msa5losal4t3sancsa5tasat3usca4pscav5s4ced4sceis4cess4choscle5s4cliscof4seas4sea5w3sect4s4eds5edlseg3rse1le5self5selv4seme4sencsen4dsen5gs4erlser4os1e4sse5shses5tsew4ish1er5shevsh1insh3io3shipshiv5shon3shor4s5icc5sidisil4e4sily2s1ins2inas3ing5sionsir5as3kets3latsman3smel4s5menso4cesoft35solvsona4son4gsor5csor5dso5vi5spaispa4n2spers2phespho5spil44spios4plys4ponspor44spotssas3s2s5cs3sels5sets4siess4lis2tags2tals4tedste2ws3thes4ti_s5tias1tics4ties3tif5stirs1tles4top4stry4st3wsu1alsu4b3su2g3su5issuit3sum3isyn5o4tacita5do4taf4ta5latal3i4talkta5mota5pltar4a4tarc4taretas4eta5sytaun44teattece45tect2t1edte5dite5gi3tel_teli45tels3tenc3tend1tentte5peter3c1teriter5v4tes_4tessthan44thea3thet4thil4thooti4ab2ti2b4tickt4ico5tidi3tienti5fy5tigu4timp2t1int2ina3tiniti5octi3sa3tisetis4mti5sotis4pti3tltiv4ati3zatlan43tle_3tled2t1n24todoto2grto5icto2matom4bto3my4tono4tonyto2ra5tour4touttra3btras4tre5ftre4m5tria2trimtri4vtro3vtru5itrus44t1s24t3t2t4testu3artu4bi4tuf45tu3i3ture5turitur5otu5ry4t1watwis4type3ty5phua5nauan4iuar2duar3iuar3tu4belu3beru1b4iuci4buc4itucle3ud3erudev4u1dicud5isu5ditu4donud4siu4eneuens4ug5inu1inguir4muita4ula5bulch4u1lenul4giu5lia4ul3mu1l4oul1ti4ultuul5ulum5abum4biunat4un4erun4imu2ninuni3vun3s4un4swu4orsu5piauptu44ura_u4ragu4rasur4beur4fru3rifur1inu3riou1ritur3izur4nouros4ur4peur4piurti4u5sadu5sanus4apus3ciuse5au5siau3sicus5slus1trusur4uta4bu3tat4ute_4utel4utenu4tisu4t1lut5ofuto5gu5tonu4touvac3uva4geval5oval1uva5mova5piv3el_ve4lov4elyv4erdv4e2s4ves_ve4teve4ty5vian5vidivi5gnv2incvin5d4vingvio3lvi1ouvi5rovi3sovi3su4vitivit3r4vityvo4lav5ole5volt3volvvom5ivori4vo4ryvo4taw5ablwag5owait5w5al_war4twas4twa1tewed4nweet3wee5vwel4lwest3win4g3wisewith3wl4eswl3inws4pew5s4txac5ex4agoxer4ixe5roxhil5xi5dix4imexpe3d3yar4yc5erych4eycom4ycot4y4erfympa3yn5icy4o5gy4onsy4pedyper5y4pocyp2tayra5myr5iay3s2eys3io3ysisys3taysur4yt3icz5a2bze3rozo5ol4z1z2', - 6 : '_am5at_ani5m_an3te_ar4ty_atom5_ba5na_bas4e_be5ra_be3sm_can5c_ce4la_cit5r_de3ra_de3ri_des4c_dumb5_eas3i_el3em_enam3_er4ri_ge5og_han5k_hi3er_hon3o_idol3_in3ci_la4cy_lath5_leg5e_lig5a_mal5o_man5a_mer3c_mon3e_mo3ro_mu5ta_of5te_os4tl_pe5te_pio5n_pre3m_ran4t_rit5u_ros5t_row5d_sci3e_self5_sell5_sing4_ting4_tin5k_ton4a_top5i_tou5s_un3ce_ve5ra_wil5iab5erdab5latab5rogac5ardac5aroa5ceoua5chetac5robact5ifad4dinad5er_ad3icaadi4erad5ranaeri4eag5ellag3onia5guerain5inait5enal3enda5le5oal4ia_al5lev4allica5log_ama5raam5ascam5eraam5ilyami4noamor5iamp5enan3age3analyan3arcanar4ia3natiande4san3disan4dowang5iea4n1ica3niesan3i3fan4imea5nimia5ninean3ishan4kli5annizanoth5an4scoans3poan4surantal4an4tieap5eroa3pherap3itaa3pituap5olaapor5iapos3taps5esar3acta5radearan4gar5av4arbal4ar5easar3enta5ressar5ialar3iana3rietar5o5da5ronias3anta5sia_as3tenasur5aat3ablat3aloat5echat3egoat3en_at3eraater5nat3estath5ema5thenath5omat5i5bat3ituat5ropat4tagat3uraau5sibaut5enave4noav3eraav5ernav5eryavi4erazi4erbarbi5bari4abas4sibbi4nabe5nigbe5strbet5izbi3lizbi5netbi3ogrblath55blespblun4tbol3icbom4bibon5at4b1orabound3broth3bunt4ibus5iebuss4e3butiocab3inca5denca3latcal4lacan4iccan5iscan3izcan4tyca5percar5om4cativcav5alccou3t4ceden2cen4ece5ram3cessic5e4ta4ch3abcheap3che5lo3chemich5enech3er_ch3ers4ch1in5chinici2a5b3cinatcin3emc5ing_4cipic4cista4cisticit3iz5clareco3inccol3orcom5ercop3iccoro3ncras5t5crat_cre3at5criticro4plcrop5ocros4ect5angc5tantc4ticuctim3icu5ity3cultucu5riacuss4icu4tie2d3a4b4dativdeb5itde4bondecan4de4cilde5comdeli4e3demicde5mildemor5de4narde2s5odes3tide3strdev3ild3ge4t1d4i3adi4cam5di3en3dine_di5nizdirt5id4is3t3dles_4dlessdo5lordom5izdo3nat4d5outdrea5rduc5er4duct_4ductsdum4beead5ieea5gereal5ereal3oueam3erear5esear4icear4ileart3eeat5eneath3ie5atife4a3tueav3ene4bel_e4belsecan5cec5ifye5citee4clame4cluse4comme4concec3oraeco5roe4cremec4tanec3ulae4d1ered3icaed5ulo5eficie3fineeg5inge5git5e5instej5udielan4delaxa4el3egae4l1ere3libeel3icae3lierel5ishe3liv3el4label3op_em5anaem3icaem1in2em5ineem5ishe5miss5emnizem5ulaen5amoe4nanten3dicen5eroen5esien5esten3etren5icsen3isheop3areo5rolep5ance3pente4prece4predep3rehe4probep5utaequi3l4erander4chee3realere5coere3iner5el_er3emoer5ena4ereneer3enter5esser3este1ria45ericke3rieneri4erer3inee4rivaer4nis4ernit5ernizer3setert3er5erwaues5canes5ecres5encesh5ene2s5imes4i4ne5skines3olues5onaes3peres4preestan4es3tiges5tim4es2toe3stone5stroes5urreten4dethod3e5tideeti4noet5onaet3ricet5rifet3roget5roseuti5leva2p5ev5astev3ellevel3oe5vengeven4ie5verbew3ingfall5e4fa4mafam5isfar5thfa3thefault5feath3fend5ef5fin_f2f5is2f3ic_f3icanf3icenfi3cer5ficia5ficiefi5delfight5fin2d5f1in3gfis4tif5lessflo3refon4defo5ratfor5ayfore5tfort5afres5cfu4minga5metgan5isga3nizgar5n44gativgel4inge5lisge5lizge4natge5nizgh5out5gicia5gies_g3imen3g4in_gin5ge5g4insglad5ignet4t3g4o4ggondo5go5rizgor5ou4grada3guard5gui5t2g5y3nh3ab4lhala3mhan4cihan4cy5hand_hang5ohan4teha3ranha5rashard3ehar4lehe4canh5ecathe5do5he3l4ihel4lyhen5athera3pher4bahere5ah5erouhe2s5phet4edhimer4hion4ehis3elhlo3rih5odizhol5ar3hol4ehor5atho5rishort3eho5senhouse3hov5elhro3pohu4minhun5kehus3t4h4wart4ian4ti4ativib3eraib5ertib5it_ib5itei2b5rii4car_i4caraic5inaic3ipai2c5ocic3ulaid5ancide3alid5ianidi4aridi5ou5ie5gaien5a4i3entiif5eroiff5en4ific_ig3eraight3iil3a4bi4ladei2l5amila5rail4istill5abim3ageima5ryim5idaimi5lei5miniim3ulai4n3auincel4in3ceri5nessin5genin3ityi4no4c2in4thion3atip4re4iq5uefiq3uidire4dei4rel4iri5deiri3tuir4min5iron_is5hanis3honish5opislan4is4salissen4is4sesis4ta_ist4lyita4bi4ita5mit3erai5teri4i2ticit3icait5illi4tismi4tramit3uativ3elliv3en_iv5il_i5vorei4v3ot5izont4jestyk3en4dk3est_kin4delab3iclan4dllan5etlan4tela5tan4lativla4v4ald4ereld4erile4mat5lene_lera5b3l4erile5sco5less_li4ato5licioli4cor4lict_lid5erlif3erli4gra4l4i4llim4bll4im4p1l4inelin3ealiv3erl3le4nl3le4tl2lin4l5linall5outlm3inglob5al3logiclom3er5lope_lo5rielor5oulos5etloun5dlp5ingltane5ltera4ltur3al5umn_lus3tel5vet4mag5inma3ligma5linmal4limal4ty5maniaman5isman3izma5rizmar4lyma5scema3tismba4t55mediame3diem5e5dymel5onmem1o3men5acmen4demensu5men4tem5ersa3mestimet3alme5thime3try3miliam5ineem4inglmis4timma5rymoi5semon5etmon5gemoni3amo3nizmonol4mo3ny_4mora_mo5seympara5mpar5imphas4mp5iesm4p1inmpo3rim4pousmulti32n1a2bna5liana5mitnanci4nan4itnas5tina3talnau3sen4ces_n5cheon5chiln3chisn5d2ifne4gatnel5iznera5bn4erarn4er5i3neticn5geren3gerini3miz5nine_nis4ta3nition3itorn5keronni3alno3ble4n3o2dnois5ino5l4i3nomicnon4agn5oniznor5abnpre4cnsati4n4s3esnter3snti4ern3tinentu3menuf4fe3nu3itoast5eob3a3bob5ingo3cheto4clamoc3rac5ocritoc3ulao5cureod5dedof5iteofit4to4gatoo5gene1o1giso5g2ly3ognizoic3esoi3deroi5letoi5sonoi3terolass4o3lesco3liceol5id_o3li4fol3ingo5lis_ol3isho5liteolli4eol3umeom3enaom3ic_om3icao5miniomo4geompro53oncilon5eston3keyon4odion3omyonspi4onten4on3t4iontif53operao5phano5pherop3ingo4posio4r3ago5realore5sh4o5riaor3icaor3ityor3ougors5enor3thior3thyo3scopos4i4eos3itoos3ityos5tilos5titot3er_ot5ersoth3i4ot3ic_ot5icao3ticeouch5iover3sov4ertoviti4o5v4olow3derow5est5paganp3agatpan3elpan4typar5dipar5elp4a4ripar4ispa5terpa5thypear4lpedia4ped4icpeli4epe4nanpen4thp4era_p4eragperme5per3tipe5tenpe5tizphar5iphe3noph4es_ph5ing3phone5phonipi4ciepi5thaplas5tpli5erplum4bpo3et55pointpoly5tppa5rapray4e5precipre5copre3empre4lap3rese3press5pri4epris3op3rocapros3ept5a4bput3errach4eraf5firam3etrane5oran4gerap3er3raphyrar5ef4rarilra5vairav3elra5zier5binerch4err4ci4brdi4errd3ingre5arrre4crere3disred5itre4facreg3isren4tere5pinre4spire3strre4terre3trire5utire4valrev3elre5vilrg3ingric5as5ricidri4cierid5erri3encri3entrig5anril3iz5rimanrim4pe5rina_riph5erit3icrit5urriv5elriv3etrk4linrl5ishrm5ersrm3ingr1nis4ro5filro5ker5role_ron4alron4taro3pelrop3icro4therov5elr5pentrp5er_rp3ingrre4strsa5tirse4crrs5er_rse5v2r4si4brtach4rten4dr4tierrtil3irtil4lr4tilyr4tistru3e4lrum3plrun4tyruti5nrvel4irv5er_r5vest5ryngesac3risalar4san4desa5vor3s4cie4scopyse2c3ose4d4ese4molsen5ats5eneds5enin4sentd4sentlsep3a34s1er_4servo5se5umsev3ensh5oldshort53side_5sidessi5diz4signa5sine_sion5a3sitiosk5inesk5ingslith5small35smithso4labsol3d2so3lic3s4on_s5ophyspen4d2s5peo3sphersp5ings5sengs4ses_ssi4erss5ilyssur5astam4i5stands4ta4p5stat_s5terostew5a5stickst3ing5stockstom3a5stone3stores4trads4trays4tridsy5rintai5lotal5enta5logtan4detanta3ta5perta3riz4taticta4turtax4istch5ettead4ite5gerte2ma2tem3at3tenan4tenes5ter3dter3ist3ess_teth5eth3easthe5atthe3isth5ic_th5ica5thinkth5odeti4atot4ic1utim5ul3tine_ti3zen3tles_t5let_to3natto3rietor5izto3wartra5chtraci4trem5i4tricstro5mitron5i4tronytro3sptu4nis2t3up_tur3isu4berou3ble_ud5estud3iedud3iesuen4teuer4ilugh3enuil5izu5lati5ulcheul3derul3ingul5ishul4larul4lisuls5esultra3um4blyumor5oun5ishunt3abun4tesuper5sup3ingupt5ibure5atur4ferurs5erur5tesur3theur4tieus4linuten4i4u1t2iu3tineut3ing5u5tiz2v1a4bvac5ilva5lieva5nizvel3liven3omv5enue5vere_v4erelv3erenv4eresver3ie3versever3thves4tevet3ervi5ali5vide_5vided5vides5vilit4vi4nav3io4rvis3itvor5ab4voteewa5gerwa5verweath3win4dewo5venwrita4xi5mizxpan4dymbol5yn3chryo5netys3icay3thin', - 7 : '_ad4der_anti5s_ar4tie_aster5_be5sto_but4ti_cam4pe_capa5b_car5ol_de4moi_earth5_gen3t4_hand5i_hero5i_hon5ey_im5pin_lat5er_mag5a5_mar5ti_me5ter_mist5i_muta5b_or5ato_ped5al_pe5tit_re5mit_se5rie_sta5bl_ten5an_tim5o5_under5_ven4dea4lenti5a5lysta4matisa4m5atoan5est_a4pillaar5adisa5ratioar5ativar4chanar5dinear5inat5a5si4ta5ternaat5omizbad5gerban5dagbina5r43bi3tio3bit5uabuf4fercall5incast5ercas5tigccompa55chanic5chine_5cific_5cratic4c3retacul4tiscur5a4b4c5utivdel5i5qdem5ic_de4monsdenti5fdern5izdi4latodrag5on5drupliec5essaec5ifiee4compee4f3ereefor5ese4fuse_el5ativel5ebrae4l5ic_el5igibe4l3ingem5igraem3i3niemoni5oench4erent5age4enthesep5recaep5ti5b4erati_er5encee4sage_e4sagese4sert_e4sertse4servaes5idenes5ignaesis4tees5piraes4si4bestruc5e5titioet5itiv4f3ical4ficatefill5ingani5za4g3o3na5graph_4graphy4gress_hang5erh5a5nizharp5enhar5terhel4lishith5erhro5niziam5eteia4tricic4t3uainer4ari5nite_5initioinsur5aion4eryiphras4iq3ui3t5i5r2izis5itiviso5mer4istral5i5ticki2t5o5mi4v3er_i4vers_iv3o3ro4jestiek5iness4latelilev4er_lev4eralev4ersliar5iz5ligatelink5er5liticalloqui5l3o3nizlo4ratol5ties_5lumnia4matizam4b3ing5metricme5triem5i5liemin5glim5inglymis4er_m5istrymo5lestmon4ismmon4istmpa5rabmula5r4nag5er_ncour5and5est_nge4n4en5o5mizno4rarynov3el3nsta5bln4t3ingo5a5lesoctor5aod5uct_od5uctso2g5a5rog5ativoint5eroist5eno5litiool5ogizom5atizom5erseom5etry5ommend4operagor5alizor5angeor5est_4oscopios5itivo5statiotele4goth5esiounc5erover4nepara5blpar5age5pathicpa4tricpera5blperi5stper4mal5phistipi4grappref5acpre5tenprin4t3prof5itput4tedput4tinration4rb5ing_r5ebratrec5ollre5fer_r4en4tare4posiress5ibre5stalre4ti4zre5versre5vertrev5olurip5licri3ta3br5ited_rit5er_rit5ersr4ming_rom5etero5n4isros5perrtroph45sa3tioscan4t55scin4dscour5asmol5d45sophics5ophizsqual4lsspend4stern5i5stratuta5blestal4listen4tagter5iesteri5za5ternit5thodicthor5ittho5riztill5intion5eeto5cratton4alitrac4ittrac4tetra5ventri5ces5triciatro5pheuar5antu4b5inguiv4er_ul4li4bu4m3ingun4ter_upport5uri4ficus5tereuti5lizution5avar5iedver5encvermi4n4v3idenv3i3lizwea5riewill5inxe4cutoxpecto5ylla5bl', - 8 : '_chill5i_cor5ner_dictio5_eq5ui5t_for5mer_re5stat_trib5utab5it5abab5o5lizap5illara5rameteation5arces5si5bch5a5nisch5inesse4q3ui3sg5rapher5graphicimenta5rin5dlingin5glinglem5aticl5i5tics5losophyma5chinema5rine_mpos5itenato5mizneg5ativni5ficat5nologisntrol5lioc5ratizonspir5appo5siterec5omper5ev5er_5taboliz5tisticatrav5es5url5ing_', - 9 : '_ratio5nac5laratioec5ificatef5i5niteep5etitio5losophiz5mocratiz5nop5o5liuto5matic' - } -}; \ No newline at end of file diff --git a/resources/viewer/hyphenate/patterns/es.js b/resources/viewer/hyphenate/patterns/es.js index bf1d3450ff..d4da9206f7 100644 --- a/resources/viewer/hyphenate/patterns/es.js +++ b/resources/viewer/hyphenate/patterns/es.js @@ -1,27 +1,27 @@ // For questions about the spanish hyphenation patterns // ask Luis Pabon (lpabon at metagrama dot es) -Hyphenator.languages.es = { +Hyphenator.languages['es'] = { leftmin : 2, rightmin : 2, shortestPattern : 1, longestPattern : 13, - specialChars : 'áéíóúñ', + specialChars : "áéíóúñ", patterns : { - 2 : '1b1c1d1f1g1j1k1l1m1n1ñ1p1q1r1s1t1v1w1x1y1z', - 3 : '_a22bb2bc2bd2bf2bg2bj2bkb2l2bm2bn2bp2bqb2r2bs2bt2bv2bw2bx2by2bz2cb2cc2cd2cf2cgc4h2cjc2kc2l2cm2cn2cp2cqc2r2cs2ct2cv2cw2cx2cy2cz2db2dc2dd2df2dg2dj2dk2dl2dm2dn2dp2dqd2r2ds2dt2dv2dw2dx2dy2dz4e_4é_4és2fb2fc2fd2ff2fg2fj2fkf2l2fm2fn2fp2fqf2r2fs2ft2fv2fw2fx2fy2fz2gb2gc2gd2gf2gg2gj2gkg2l2gm2gn2gp2gqg2r2gs2gt2gv2gw2gx2gy2gz2hb2hc2hd2hf2hg2hj2hk2hl2hm2hn2hp2hq2hr2hs2ht2hv2hw2hx2hy2hz4í_2jb2jc2jd2jf2jg2jj2jk2jl2jm2jn2jp2jq2jr2js2jt2jv2jw2jx2jy2jz2kb2kc2kd2kf2kg2kj2kkk2l2km2kn2kp2kqk2r2ks2kt2kv2kw2kx2ky2kz2lb2lc2ld2lf2lg2lj2lkl4l2lm2ln2lp2lq2lr2ls2lt2lv2lw2lx2ly2lz2mb2mc2md2mf2mg2mj2mk2ml2mm2mn2mp2mq2mr2ms2mt2mv2mw2mx2my2mz2nb2nc2nd2nf2ng2nj2nk2nl2nm2nn2np2nq2nr2ns2nt2nv2nw2nx2ny2nz2o_2pb2pc2pd2pf2pg2pj2pkp2l2pm2pn2pp2pqp2r2ps2pt2pv2pw2px2py2pz2qb2qc2qd2qf2qg2qj2qk2ql2qm2qn2qp2qq2qr2qs2qt2qv2qw2qx2qy2qz2rb2rc2rd2rf2rg2rj2rk2rl2rm2rn2rp2rqr2r2rs2rt2rv2rw2rx2ry2rz2sb2sc2sd2sf2sg2sj2sk2sl2sm2sn2sp2sq2sr2ss2st2sv2sw2sx2sy2sz2tb2tc2td2tf2tg2tj2tk2tm2tn2tp2tqt2r2ts2tt2tv2twt2x2ty2tz2vb2vc2vd2vf2vg2vj2vkv2l2vm2vn2vp2vqv2r2vs2vt2vv2vw2vx2vy2vz2wb2wc2wd2wf2wg2wj2wkw2l2wm2wn2wp2wqw2r2ws2wt2wv2ww2wx2wy2wz2xb2xc2xd2xf2xg2xj2xk2xl2xm2xn2xp2xq2xr2xs2xt2xv2xw2xx2xy2xz2yb2yc2yd2yf2yg2yj2yk2yl2ym2yn2yp2yq2yr2ys2yt2yv2yw2yx2yy2yz2zb2zc2zd2zf2zg2zj2zk2zl2zm2zn2zp2zq2zr2zs2zt2zv2zw2zx2zy2zz', - 4 : '4ad_2al_4an_4ar_4as_4ás_2b1h2bl_2br_2ch_2cl_4cn_2cr_4ct_4cz_2d1h2dr_4ed_4en_4er_4es_2f1h2fl_2fr_4ft_2g2h2gl_4gn_2gr_2h1hi2a_4ía_i2o_2j1h2k2h2kl_2kr_2l1h2ll_mal22m1h4mn_2n1h2no_4ón_2os_4pc_2p1h2pl_4pn_2pr_4pt_2q1h2r1h2rr_3sa_2s1h2t1h2t2l2tr_4ts_4tz_2v1h2vl_2vr_2w1h2wl_2wr_2x1h2y1h2z1h', - 5 : '_an3h4áis_4ando4aos_bien2bio1heco1h4éis_4eos_geo1h4ían_i2as_4ías_i2os_iso1hmal3bmal3cmal3dmal3fmal3gmal3mmal3pmal3qmal3smal3tmal3v4meo_neo1ho2os_2ótic3sas_s3te_', - 6 : '_an2a2_an2á2_an2e2_an2é2_an2i2_an2í2_ani3m_aniña_ani3q_an2o2_an2ó2_an2u2_anu3l_bi1ox_bi1un_co2a2_co2á2_co2e2_co2é2_co2i2_co2í2_co3o4_co2ó2_co2u2_co2ú2_en2a2_en2á2_en2e2_en2é2_en1ej_en2i2_en2í2_en2o2_en2ó2_en2u2_en2ú2_in2a2_in2á2_in2e2_in2é2_in2i2_in2í2_in2o2_in2ó2_in2u2_in2ú2_re2a2_re2á2_re3e4_re2é2_re2i2_re2í2_re2o2_re2ó2_re1oc_re1oj_re2u2_re2ú24a3ba_acto1h4a3da_4adle_4adlo_4adme_4a3do_4adte_aero1hafro1haí5so_2ales_ana3líanfi1hante1h4a3ra_4a3rá_4a3re_4a3ré_a3rio_4a3se_4aste_asu3b24ates_auto1h2b3c2n2b3c2t2b3c2z2b3f2t2b3g2nbien3hbien3mbien3qbien3tbien3vbio1a2bio1á2bio1e2bio1é2bio1i2bio1í2bio1o2bio1ó2bio1u2bio1ú22b3m2n2b3p2n2b3p2s2b3p2t2b3t2s2b3t2z4caca44caga44cago42c3c2n2c3c2t2c3c2z2c3f2t2c3g2ncito1h2c3m2nco4artco4ártco4ercco4erzco4optco4ord2c3p2n2c3p2s2c3p2t2c3t2s2c3t2z4culo42d3c2n2d3c2t2d3c2zdeca1hde3seo2d3f2t2d3g2n2d3m2n2d3p2n2d3p2s2d3p2t2d3t2s2d3t2zeco1a2eco1á2eco1e2eco1é2eco1i2eco1í2eco1o2eco1ó2eco1u2eco1ú24edle_4edlo_4edme_4edte_emi2o2endo1hento1h4e3rá_4e3ré_4erla_4erle_4erlo_4erme_4erse_4erte_euco1heuro1hfono1hfoto1hgeo1a2geo1á2geo1e2geo1é2geo1i2geo1í2geo1o2geo1ó2geo1u2geo1ú2hemi1hhemo1hhexa1hhomo1h4íais_2i3ca_2i3co_4í3da_4í3do_4i4er_4i3ga_4i3go_4ísmo_iso1a2iso1á2iso1e2iso1é2iso1i2iso1í2iso1o2iso1ó2iso1u2iso1ú24ísta_kilo1h2l3c2n2l3c2t2l3c2z2l3f2t2l3g2n2l3m2n2l3p2n2l3p2s2l3p2t2l3t2s2l3t2zma4l3hmaxi1h2m3c2n2m3c2t2m3c2zmega1h2m3f2t2m3g2nmili1hmini1h2m3m2nmono1h2m3p2n2m3p2s2m3p2t2m3t2s2m3t2znamo1h2n3c2n2n3c2t2n3c2zneo1a2neo1á2neo1e2neo1é2neo1i2neo1í2neo1o2neo1ó2neo1u2neo1ú2neto1h2n3f2t2n3g2n2n3m2n2n3p2n2n3p2s2n3p2t2n3t2s2n3t2zocta1hocto1homni1h4ones_2o3sa_2o3so_para1h4pedo4poli1h3p2sic3p2siq4puta44puto42r3c2n2r3c2t2r3c2z2r3f2t2r3g2n2r3m2nromo1h2r3p2n2r3p2s2r3p2t2r3t2s2r3t2z2s3c2n2s3c2t2s3c2zsemi1h2s3f2t2s3g2n2s3m2n2s3p2n2s3p2s2s3p2ts3tal_s3tes_s3tor_2s3t2s2s3t2zsup6ra2t3c2n2t3c2t2t3c2ztele1h4teta_2t3f2t2t3g2n2t3m2ntopo1h2t3p2n2t3p2s2t3p2t2t3t2s2t3t2zu4teriwa3s4h2x3c2n2x3c2t2x3c2zxeno1h2x3f2t2x3g2n2x3m2n2x3p2n2x3p2s2x3p2t2x3t2s2x3t2z2y3c2n2y3c2t2y3c2z2y3f2t2y3g2n2y3m2n2y3p2n2y3p2s2y3p2t2y3t2s2y3t2z', - 7 : '_ana3li_aná3li_ane3xa_ane3xá_ane3xe_ane3xé_ani3ll_ano5ta_ano3tá_anti1h_an2ú2__anua3l_anu3bl_anu3da_bi1aur_bi1ó2x_en1apa_en1arb_en1art_he4mee_hu4mea_hu4meo_mala1e_pre2a2_pre2á2_pre2e2_pre2é2_pre2h2_pre2i2_pre2í2_pre2o2_pre2ó2_pre2u2_pre2ú2_pro2a2_pro2á2_pro2e2_pro2é2_pro2h2_pro2i2_pro2í2_pro2o2_pro2ó2_pro2u2_pro2ú2_re3abr_re3ábr_re3a2q_re3a2z_re3i2m_re3inc_re3ing_re3ins_re3int_re3o2b_re1unt_so3a4s4a3ban_4a3bas_acante2acto1a2acto1á2acto1e2acto1é2acto1i2acto1í2acto1o2acto1ó2acto1u2acto1ú24a3das_4adlas_4adles_4adlos_4adnos_4a3dor_4a3dos_aero1a2aero1á2aero1e2aero1é2aero1i2aero1í2aero1o2aero1ó2aero1u2aero1ú2afro1a2afro1á2afro1e2afro1é2afro1i2afro1í2afro1o2afro1ó2afro1u2afro1ú2aí5sos_4a3mos_anfi1a2anfi1á2anfi1e2anfi1é2anfi1i2anfi1í2anfi1o2anfi1ó2anfi1u2anfi1ú2anglo1hante1a2ante1á2ante1e2ante1é2ante1i2ante1í2ante1o2ante1ó2ante1u2ante1ú24áosla_4áosle_4áoslo_4a3ran_4a3rán_4a3ras_4a3rás_archi1h4a3ren_4a3res_4a3rés_4a3ría_a3rios_4a3rís_4a4rme_4a3ron_4a3ros_4a3sen_4a3ses_4astes_auto1a2auto1á2auto1e2auto1é2auto1i2auto1í2auto1o2auto1ó2auto1u2auto1ú2bi1u2ní4cagas_centi1hciclo1hcito1a2cito1á2cito1e2cito1é2cito1i2cito1í2cito1o2cito1ó2cito1u2cito1ú23c2neorcnico1hco4accico4actico4adjuco4adyuco3agenco4e3táco3exisco4imbrco4incico4i3tocon1urbcrono1hdeca1a2deca1á2deca1e2deca1é2deca1i2deca1í2deca1o2deca1ó2deca1u2deca1ú2decimo1desa3fidesa3fídesa3güde4s3eqde3signde3sollea3cia_ea3cio_4eadla_ecano1hectro1h4edlas_4edles_4edlos_4ednos_4e3dro_4eedla_4emboca4e3mos_endo1a2endo1á2endo1e2endo1é2endo1i2endo1í2endo1o2endo1ó2endo1u2endo1ú2ento1a2ento1á2ento1e2ento1é2ento1i2ento1í2ento1o2ento1ó2ento1u2ento1ú2entre1h4éosla_4éosle_4éoslo_e5r4ad_e5r4an_4e3rán_e5r4as_4e3rás_4e3rés_4e3ría_4e3rís_4erlas_4erles_4erlos_4ernos_4e3ros_euco1a2euco1á2euco1e2euco1é2euco1i2euco1í2euco1o2euco1ó2euco1u2euco1ú2euro1a2euro1á2euro1e2euro1é2euro1i2euro1í2euro1o2euro1ó2euro1u2euro1ú2expoli4extra1hfono1a2fono1á2fono1e2fono1é2fono1i2fono1í2fono1o2fono1ó2fono1u2fono1ú2foto1a2foto1á2foto1e2foto1é2foto1i2foto1í2foto1o2foto1ó2foto1u2foto1ú2gluco1hhecto1hhelio1hhemi1a2hemi1á2hemi1e2hemi1é2hemi1i2hemi1í2hemi1o2hemi1ó2hemi1u2hemi1ú2hemo1a2hemo1á2hemo1e2hemo1é2hemo1i2hemo1í2hemo1o2hemo1ó2hemo1u2hemo1ú2hexa1a2hexa1á2hexa1e2hexa1é2hexa1i2hexa1í2hexa1o2hexa1ó2hexa1u2hexa1ú2hidro1hhisto1hhomo1a2homo1á2homo1e2homo1é2homo1i2homo1í2homo1o2homo1ó2homo1u2homo1ú2ia5res_2i3cas_icono1h2i3cos_4i2dal_4í3das_4i3deo_4í3dos_4i3gas_4i3gás_4í3mos_infra1hintra1h4ísmos_4ístas_4í3tes_kilo1a2kilo1á2kilo1e2kilo1é2kilo1i2kilo1í2kilo1o2kilo1ó2kilo1u2kilo1ú2li5áreamacro1hmante4amaxi1a2maxi1á2maxi1e2maxi1é2maxi1i2maxi1í2maxi1o2maxi1ó2maxi1u2maxi1ú2mega1a2mega1á2mega1e2mega1é2mega1i2mega1í2mega1o2mega1ó2mega1u2mega1ú23mente_micro1hmili1a2mili1á2mili4armili1e2mili1é2mili1i2mili1í2mili1o2mili1ó2mili1u2mili1ú2mini1a2mini1á2mini1e2mini1é2mini1i2mini1í2mini1o2mini1ó2mini1u2mini1ú2miria1hmono1a2mono1á2mono1e2mono1é2mono1i2mono1í2mono1o2mono1ó2mono1u2mono1ú2multi1hnamo1a2namo1á2namo1e2namo1é2namo1i2namo1í2namo1o2namo1ó2namo1u2namo1ú2necro1hneto1a2neto1á2neto1e2neto1é2neto1i2neto1í2neto1o2neto1ó2neto1u2neto1ú2norte1hocta1a2octa1á2octa1e2octa1é2octa1i2octa1í2octa1o2octa1ó2octa1u2octa1ú2octo1a2octo1á2octo1e2octo1é2octo1i2octo1í2octo1o2octo1ó2octo1u2octo1ú24o2ica_4o2ico_oligo1homni1a2omni1á2omni1e2omni1é2omni1i2omni1í2omni1o2omni1ó2omni1u2omni1ú22o3sas_2o3sos_4ósteo_paleo1hpara1a2para1á2para1e2para1é2para1i2para1í2para1o2para1ó2para1u2para1ú2penta1hpiezo1hpluri1hpoi3de_poli1a2poli1á2poli1e2poli1é2poli1i2poli1í2poli1o2poli1ó2poli1u2poli1ú2pos3ta_pre3olíproto1hradio1hranco1hretro1hrmano1hromo1a2romo1á2romo1e2romo1é2romo1i2romo1í2romo1o2romo1ó2romo1u2romo1ú2san4c5tsemi1a2semi1á2semi1e2semi1é2semi1i2semi1í2semi1o2semi1ó2semi1u2semi1ú2seudo1hsobre1hsocio1hs3tora_supra1htalmo1htele1a2tele1á2tele1e2tele1é2tele1i2tele1í2tele1o2tele1ó2tele1u2tele1ú2termo1h4tetas_tetra1hti2o3coti2o3qutopo1a2topo1á2topo1e2topo1é2topo1i2topo1í2topo1o2topo1ó2topo1u2topo1ú2tropo1hultra1hxeno1a2xeno1á2xeno1e2xeno1é2xeno1i2xeno1í2xeno1o2xeno1ó2xeno1u2xeno1ú2', - 8 : '_an3aero_ane3xio_ane3xió_ani3dar_ani3mad_ani3mád_an3i2so_an3i2só_ani3vel_ano5che_ano5din_ano5mal_anó5mal_ano5nad_ano5nim_anó3nim_anti1a2_anti1á2_anti1e2_anti1é2_anti1i2_anti1í2_anti1o2_anti1ó2_anti1u2_anti1ú2_anua4lm_de2s2a2_de2s2á2_de2s2e2_de2s2é2_de2s2i2_de2s2í2_de2s2o2_de2s2ó2_de2s2u2_de2s2ú2_en1aciy_en1anch_en2artr_eno3jar_hepta1e_ina3nic_in3anim_iná3nim_in3apel_iné3dit_in3efic_ini3cia_ini3ciá_ini3cie_ino3cua_ino3cuo_intra1o_intra1u_inú3til_mal1est_mal1int_pos3tin_pos3tín_re3a2eg_re3alim_re3anim_re3aním_re3orga_retro1a_re3unir_re3unír_re3usar_re3usár_su2b2a2_su2b2á2_sub3arr_su2b2e2_su2b2é2_su2b2i2_su2b2í2_sub3ími_sub3índ_su2b2o2_su2b2ó2_su2b2u2_su2b2ú2_sur1est_sur1oes_tra2s1a_tra2s1o_tri1ó2x4a3bais_4a3ción_4ádmele_4ádmelo_4a3dora_4ádsela_4ádsele_4ádselo_4ádtele_4ádtelo_4ándola_4ándole_4ándolo_4ándome_4ándoos_4ándose_4ándote_anglo1a2anglo1á2anglo1e2anglo1é2anglo1i2anglo1í2anglo1o2anglo1ó2anglo1u2anglo1ú24áoslas_4áosles_4áoslos_4a3rais_archi1a2archi1á2archi1e2archi1é2archi1i2archi1í2archi1o2archi1ó2archi1u2archi1ú24a3reis_4a3réis_4a3ríais4a3rían_4a3rías_4a4r3la_4a4r3le_4a4r3lo_4árosla_4árosle_4ároslo_4a4r3se_4a4r3te_4a3seis_4asteis_biblio1hcardio1hcefalo1hcenti1a2centi1á2centi1e2centi1é2centi1i2centi1í2centi1o2centi1ó2centi1u2centi1ú2ciclo1a2ciclo1á2ciclo1e2ciclo1é2ciclo1i2ciclo1í2ciclo1o2ciclo1ó2ciclo1u2ciclo1ú2cnico1a2cnico1á2cnico1e2cnico1é2cnico1i2cnico1í2cnico1o2cnico1ó2cnico1u2cnico1ú2co4a3dunco4a3gulco4á3gulco4a3licco4aptacco4e3ficcon1imbrcontra1hco4o3perco4o3pércripto1hcrono1a2crono1á2crono1e2crono1é2crono1i2crono1í2crono1o2crono1ó2crono1u2crono1ú2de4s3abrde4s3agudesa3lindesa3livde4s3almdesa3lojde4s3anddesa3pañdesa3pegde4s3armdes4armede4s3asndesa3tindesa3yundesa3zondesa3zónde3semejde4s3endde4s3enjde4s3enmde4s3enrde4s3ensde3s4ertde3s4értde3siderde3sidiade3sidiode3siertde3socupde3solacde3soladde3soncede4s3ovade4s3ovide4s3oxide4s3oyede4s3oyéde3suelldodeca1hea3cias_ea3cios_ecano1a2ecano1á2ecano1e2ecano1é2ecano1i2ecano1í2ecano1o2ecano1ó2ecano1u2ecano1ú2ectro1a2ectro1á2ectro1e2ectro1é2ectro1i2ectro1í2ectro1o2ectro1ó2ectro1u2ectro1ú24édmele_4édmelo_4e3dros_4édsela_4édsele_4édselo_4édtele_4édtelo_entre1a2entre1á2entre1e2entre1é2entre1i2entre1í2entre1o2entre1ó2entre1u2entre1ú24éoslas_4éosles_4éoslos_e5r4áis_4e3réis_4e3rían_4e3rías_4e3rior_4érmele_4érmelo_4érsela_4érsele_4érselo_4értele_4értelo_extra1a2extra1á2extra1e2extra1é2extra1i2extra1í2extra1o2extra1ó2extra1u2extra1ú2gastro1hgluco1a2gluco1á2gluco1e2gluco1é2gluco1i2gluco1í2gluco1o2gluco1ó2gluco1u2gluco1ú2hecto1a2hecto1á2hecto1e2hecto1é2hecto1i2hecto1í2hecto1o2hecto1ó2hecto1u2hecto1ú2helio1a2helio1á2helio1e2helio1é2helio1i2helio1í2helio1o2helio1ó2helio1u2helio1ú2hemato1hhidro1a2hidro1á2hidro1e2hidro1é2hidro1i2hidro1í2hidro1o2hidro1ó2hidro1u2hidro1ú2hipe2r3rhisto1a2histo1á2histo1e2histo1é2histo1i2histo1í2histo1o2histo1ó2histo1u2histo1ú24ía3mos_icono1a2icono1á2icono1e2icono1é2icono1i2icono1í2icono1o2icono1ó2icono1u2icono1ú24i3deos_4i3gáis_infra1a2infra1á2infra1e2infra1é2infra1i2infra1í2infra1o2infra1ó2infra1u2infra1ú2inter4ésinter4inintra1a2intra1á2intra1e2intra1é2intra1i2intra1í2intra1o2intra1ó2intra1u2intra1ú24í4s3te_4ística_4ístico_macro1a2macro1á2macro1e2macro1é2macro1i2macro1í2macro1o2macro1ó2macro1u2macro1ú24meable_megalo1hmelano1hmicro1a2micro1á2micro1e2micro1é2micro1i2micro1í2micro1o2micro1ó2micro1u2micro1ú2miria1a2miria1á2miria1e2miria1é2miria1i2miria1í2miria1o2miria1ó2miria1u2miria1ú2multi1a2multi1á2multi1e2multi1é2multi1i2multi1í2multi1o2multi1ó2multi1u2multi1ú2necro1a2necro1á2necro1e2necro1é2necro1i2necro1í2necro1o2necro1ó2necro1u2necro1ú2norte1a2norte1á2norte1e2norte1é2norte1i2norte1í2norte1o2norte1ó2norte1u2norte1ú24o2icas_4o2icos_o4i3dal_4o2i3de_o4i3dea_oligo1a2oligo1á2oligo1e2oligo1é2oligo1i2oligo1í2oligo1o2oligo1ó2oligo1u2oligo1ú24ó3loga_4ó3logo_4ósteos_paleo1a2paleo1á2paleo1e2paleo1é2paleo1i2paleo1í2paleo1o2paleo1ó2paleo1u2paleo1ú2para2is_para4ísopenta1a2penta1á2penta1e2penta1é2penta1i2penta1í2penta1o2penta1ó2penta1u2penta1ú2piezo1a2piezo1á2piezo1e2piezo1é2piezo1i2piezo1í2piezo1o2piezo1ó2piezo1u2piezo1ú2plan4c5tpluri1a2pluri1á2pluri1e2pluri1é2pluri1i2pluri1í2pluri1o2pluri1ó2pluri1u2pluri1ú2poi3des_poli4arqpoli4árqpoli4u3rpos3tas_pre3eligpre3elijpre3eminpre3exispreo3cuppreo2cúppre3opinproto1a2proto1á2proto1e2proto1é2proto1i2proto1í2proto1o2proto1ó2proto1u2proto1ú2radio1a2radio1á2radio1e2radio1é2radio1i2radio1í2radio1o2radio1ó2radio1u2radio1ú2ranco1a2ranco1á2ranco1e2ranco1é2ranco1i2ranco1í2ranco1o2ranco1ó2ranco1u2ranco1ú2retro1a2retro1á2retro1e2retro1é2retro1i2retro1í2retro1o2retro1ó2retro1u2retro1ú2rmano1a2rmano1á2rmano1e2rmano1é2rmano1i2rmano1í2rmano1o2rmano1ó2rmano1u2rmano1ú2seudo1a2seudo1á2seudo1e2seudo1é2seudo1i2seudo1í2seudo1o2seudo1ó2seudo1u2seudo1ú2sobre1a2sobre1á2sobre1e2sobre1é2sobre1i2sobre1í2sobre1o2sobre1ó2sobre1u2sobre1ú2socio1a2socio1á2socio1e2socio1é2socio1i2socio1í2socio1o2socio1ó2socio1u2socio1ú2s3toras_s3tores_su4d3oessupe2r3rsupra1a2supra1á2supra1e2supra1é2supra1i2supra1í2supra1o2supra1ó2supra1u2supra1ú2talmo1a2talmo1á2talmo1e2talmo1é2talmo1i2talmo1í2talmo1o2talmo1ó2talmo1u2talmo1ú23te3ri3ntermo1a2termo1á2termo1e2termo1é2termo1i2termo1í2termo1o2termo1ó2termo1u2termo1ú2tetra1a2tetra1á2tetra1e2tetra1é2tetra1i2tetra1í2tetra1o2tetra1ó2tetra1u2tetra1ú2trans4artrans4ittropo1a2tropo1á2tropo1e2tropo1é2tropo1i2tropo1í2tropo1o2tropo1ó2tropo1u2tropo1ú2ultra1a2ultra1á2ultra1e2ultra1é2ultra1i2ultra1í2ultra1o2ultra1ó2ultra1u2ultra1ú2', - 9 : '_bi1anual_bien1and_bien1apa_bien1ave_bien1est_bien1int_dieci1o2_en1aceit_en1aguaz_enu3mera_enu3merá_enu3mere_in3abarc_in3abord_in3acent_in3adapt_in3aplic_in3arrug_in3asist_in3efici_in3eludi_ine3narr_ino3cula_ino3culá_ino3cule_inte2r3r_mal1acon_mal1acos_pos2t2a2_pos2t2á2_pos2t2e2_pos2t2é2_pos3terg_pos2t2i2_pos2t2í2_post3ind_pos2t2o2_pos2t2ó2_post3ope_post3rev_pos2t2u2_pos2t2ú2_re3afirm_re3afírm_re3ajust_rea3júst_rea3lism_rea3list_rea3liza_rea3lizá_rea3líza_re3ubica_re3ubíca_reu3mati_reu3máti_su3b4ien_sub2i3ll_su4b3ray_sub3urba_su2d1est_sur1a2me_tele1imp_tele1obj_tra2s2oñ4á3bamos_4ád3mela_4ádmeles_4ádmelos_4ádnosla_4ádnosle_4ádnoslo_4a3doras_4a3dores_4ádselas_4ádseles_4ádselos_4ád3tela_4ádteles_4ádtelos_4a4i3gan_4ándolas_4ándoles_4ándolos_4ándonos_4á3ramos_4a3remos_4á3remos_4a4r3las_4a4r3les_4a4r3los_4á4rmele_4á4rmelo_4a4r3nos_4ároslas_4árosles_4ároslos_4á3semos_biblio1a2biblio1á2biblio1e2biblio1é2biblio1i2biblio1í2biblio1o2biblio1ó2biblio1u2biblio1ú2b4ien3do_cardio1a2cardio1á2cardio1e2cardio1é2cardio1i2cardio1í2cardio1o2cardio1ó2cardio1u2cardio1ú2cefalo1a2cefalo1á2cefalo1e2cefalo1é2cefalo1i2cefalo1í2cefalo1o2cefalo1ó2cefalo1u2cefalo1ú2contra1a2contra1á2contra1e2contra1é2contra1i2contra1í2contra1o2contra1ó2contra1u2contra1ú2cripto1a2cripto1á2cripto1e2cripto1é2cripto1i2cripto1í2cripto1o2cripto1ó2cripto1u2cripto1ú2desa3briddesa3certde4s3acotde4s3aficde4s3afilde4s3afinde4s3afordesa3garrde4s3ahijde4s3aliñdesa3marrdesa3moblde4s3anidde4s3animde4s3anímde4s3anudde4s3apoyde4s3arende4s3avisde4s3empéde4s3enamde4s3enchde4s3enclde4s3encode4s3encrde4s3encude3senfadde3senfádde4s3enfide4s3enfode4s3enfóde3sengañde3sengáñde4s3enlode4s3entade4s3entode4s3entrde4s3entude3s4ercide4s3espade3sesperde3sigualde3siluside4s3imande3sinencde3sinfecde4s3inflde3sistende4s3odorde4s3ordede4s3órdede4s3orejde3s4osegde3su3dande3su3darde3su3dasde4s3unimde4s3unirdodeca1a2dodeca1á2dodeca1e2dodeca1é2dodeca1i2dodeca1í2dodeca1o2dodeca1ó2dodeca1u2dodeca1ú24éd3mela_4édmeles_4édmelos_4édnosla_4édnosle_4édnoslo_4é3drica_4é3drico_4édselas_4édseles_4édselos_4éd3tela_4édteles_4édtelos_e5r4a3ba_e5r4a3da_e5r4a3do_e5r4a3ra_e5r4a3rá_e5r4a3re_e5r4a3ré_e5r4a3se_e5r4aste_e5r4ates_4e3ríais_4e3riora_4ér3mela_4érmeles_4érmelos_4érnosla_4érnosle_4érnoslo_4é3rosla_4é3rosle_4é3roslo_4érselas_4érseles_4érselos_4ér3tela_4érteles_4értelos_gastro1a2gastro1á2gastro1e2gastro1é2gastro1i2gastro1í2gastro1o2gastro1ó2gastro1u2gastro1ú2hemato1a2hemato1á2hemato1e2hemato1é2hemato1i2hemato1í2hemato1o2hemato1ó2hemato1u2hemato1ú2hipe2r1a2hipe2r1á2hipe2r1e2hipe2r1é2hipe2r1i2hipe2r1í2hipe2r1o2hipe2r1ó2hipe2r1u2hipe2r1ú24i2dales_4i3gamos_inter4inointer4ior4ís3teis_4í4s3tes_4ísticas_4ísticos_4meables_megalo1a2megalo1á2megalo1e2megalo1é2megalo1i2megalo1í2megalo1o2megalo1ó2megalo1u2megalo1ú2melano1a2melano1á2melano1e2melano1é2melano1i2melano1í2melano1o2melano1ó2melano1u2melano1ú2mili4arioo4i3deas_4o2i3des_4ó3logas_4o3logía_4ó3logos_pe5r4antepoli4andrpoli4éstes3ta3les_s3ti3lla_supe2r1a2supe2r1á2supe2r1e2supe2r1é2supe2r1i2supe2r1í2super4iorsupe2r1o2supe2r1ó2supe2r1u2supe2r1ú2t4eo3nes_tran4sacctrans4ido', - 10 : '_an3e2pigr_ante2o3je_en1aguach_in3aguant_ina3movib_in3analiz_in3apreci_in3aprens_inte2r1a2_inte2r1á2_inte2r1e2_inte2r1é2_inte2r1i2_inte2r1í2_inte2r1o2_inte2r1ó2_inte2r1u2_inte2r1ú2_inu3tiliz_ma4l3e4du_pa4n1afri_pa4n1ópti_post3elec_pos3te3ri_pos3ti3go_pos3ti3la_post3impr_pos3ti3ne_pos3ti3za_pos3ti3zo_pos3tó3ni_pos3tu3la_pos3tu3lá_pos3tu3le_pos3tu3lé_pos3tu3ra_re3a2grup_re3aparec_re3utiliz_re3utilíz_sub3aflue_sub3enten_sub3estim_sub3estím_sub3ofici_su2d1a2fr_su2d1a2me_tran2s1ur4a3ciones_4ád3melas_4ádnoslas_4ádnosles_4ádnoslos_4ád3telas_4ándomela_4ándomele_4ándomelo_4ándosela_4ándosele_4ándoselo_4ándoseme_4ándotela_4ándotele_4ándotelo_4ándoteme_4a3ríamos_4á4r3mela_4á4r3sela_4á4r3sele_4á4r3selo_4á4r3tela_4á4r3tele_4á4r3telo_b4ien3das_centi5áreaco3n4imbride4s3abastde4s3abollde4s3abotode4s3aceitdesa3ciertde4s3acompde4s3aconsde4s3acoplde4s3acorrde4s3activde4s3adeudde4s3adornde4s3aferrde4s3agradde4s3agregde4s3agrupde4s3aherrde4s3ajustde4s3alentde4s3alfomde4s3alforde4s3aliende4s3alinede4s3almidde4s3alterde4s3amoldde4s3amortde4s3angeldesa3pacibde4s3apadrde4s3aparedesa3parecdesa3paricde4s3aplicde4s3apretde4s3aprobde4s3arbolde4s3arrimdesa3rrollde4s3arropde4s3arrugde4s3asentde4s3asistdesa3sosegde4s3atencde4s3atendde4s3atentde4s3atornde4s3autorde4s3embalde4s3embálde4s3embarde4s3embárde4s3embotde4s3empacde4s3empañde4s3empáñde4s3empatde4s3empegde4s3emplede4s3empozde4s3encabde4s3encadde4s3encajde4s3encájde4s3encamde3sencantde4s3encapde4s3encarde4s3encárde3senfrende4s3enfurde4s3engarde4s3engasde4s3engomde4s3engozde4s3engrade4s3enladde4s3enlazde3sentendde4s3enterde3sentiende3sentiénde4s3estimde4s3imponde4s3inhibde3s4interde4s3intoxde4s3inverde4s3obligde4s3obstrde4s3ub4icde4s3unierde3s4ustane4a3miento4éd3melas_4édnoslas_4édnosles_4édnoslos_4é3dricas_4é3dricos_4éd3telas_e5r4a3ban_e5r4a3bas_4e3ra3ble_e5r4a3das_e5r4a3dor_e5r4a3dos_e5r4a3mos_e5r4a3ran_e5r4a3rán_e5r4a3ras_e5r4a3rás_e5r4a3ren_e5r4a3res_e5r4a3rés_e5r4a3ría_e5r4a3rís_e5r4a3ron_e5r4a3sen_e5r4a3ses_e5r4astes_4e3re3mos_4e3ríamos_4e3rioras_4e3riores_4ér3melas_4érnoslas_4érnosles_4érnoslos_4é3roslas_4é3rosles_4é3roslos_4ér3telas_familia3riinter4esarmini4a5turo4i3dales_4o3logías_4o3lógica_4o3lógico_para4ulatape3r4e3miaperpon5d6rpoli4anteapoli4o5mies3ti3llas_s3ti3llón_super4ablesupe4r4a3rsupe4r4á3rtrans4ibertrans4igentrans4igirtrans4itabultra4ísmo', - 11 : '_mal1andant_mal1andanz_pa4n1europ_sub2i3mien_tran2s1alp_tran2s1and_tran2s1atl_tran2s1oce4ándomelas_4ándomeles_4ándomelos_4ándoselas_4ándoseles_4ándoselos_4ándosenos_4ándotelas_4ándoteles_4ándotelos_4ándotenos_4á4r3melas_4á4r3meles_4á4r3melos_4á4r3nosla_4á4r3nosle_4á4r3noslo_4á4r3selas_4á4r3seles_4á4r3selos_4á4r3telas_4á4r3teles_4á4r3telos_de4s3abrochde4s3acelerde4s3acobarde4s3acomoddesa3cralizde4s3acuartde4s3aderezde4s3adorarde4s3advertde4s3agracide4s3agravide4s3alagarde4s3alquilde4s3alumbrde4s3amuebldesa3percibde4s3aprenddesa3prenside4s3aprietde4s3apropide4s3arraigde4s3arreglde4s3arrenddesa3sosiegde4s3atiendde4s3atrancde4s3embargde4s3embolsde4s3emborrde4s3emboscde4s3embragde4s3embrágde4s3embrujde4s3embrújde4s3empedrde4s3empeorde4s3empernde4s3empolvde4s3empotrde4s3encallde4s3encállde4s3enfundde4s3enhebrde4s3entierde4s3entiérde4s3envainde3sesperacde4s3imaginde4s3impresde4s3incentde4s3inclinde4s3incorpde4s3inflamde4s3informde4s3insectde4s3instalde3s4integrde4s3obedecde3s4ubstane5r4a3bais_4e3ra3bles_e5r4a3dora_e5r4a3rais_e5r4a3reis_e5r4a3réis_e5r4a3ríaise5r4a3rían_e5r4a3rías_e5r4a3seis_e5r4asteis_4i3gá3moos_4o3lógicas_4o3lógicos_2o3samente_super4ación4te4r5i4nsutrans4eúntetrans4icióntrans4istortrans4ubsta', - 12 : '_in3ter2e3sa_in3ter2e3sá_in3ter2e3se_in3ter2e3sé_in3ter2e3so_in3ter2e3só_in3te3r4rog_pa4n1a4meri4á4r3noslas_4á4r3nosles_4á4r3noslos_deca2i3mientde4s3acostumde4s3acreditde4s3adormecdesa3guisadode4s3apolillde4s3articulde4s3embravede4s3embrávede4s3embrollde4s3embróllde4s3emparejde4s3emparéjde4s3emperezde4s3enganchde3senvolvimde4s3estabilde4s3impresXde4s3incruste5r4á3bamos_e5r4a3doras_e5r4a3dores_e5r4á3ramos_e5r4a3remos_e5r4á3remos_e5r4á3semos_4e3rioridad_4i3gá3monos_4i3gá3mosla_4i3gá3mosle_4i3gá3moslo_4i3gá3mosme_4i3gá3moste_s3ti3llones_trans4itorio', - 13 : '_in3te3r4rump_in3te3r4rupc_in3te3r4ruptde4s3aprovechde4s3empaquetde4s3empaquétde4s3emparentde4s3esperanze5r4a3ríamos_4e3riormente_4i3gá3moosla_4i3gá3moosle_4i3gá3mooslo_4i3gá3mosela_4i3gá3mosele_4i3gá3moselo_4i3gá3moslas_4i3gá3mosles_4i3gá3moslos_supe3r4á3vit_', - 14 : '4e3rioridades_4i3gá3monosla_4i3gá3monosle_4i3gá3monoslo_4i3gá3mooslas_4i3gá3moosles_4i3gá3mooslos_4i3gá3moselas_4i3gá3moseles_4i3gá3moselos_4i3gá3mosmele_4i3gá3mosmelo_4i3gá3mostele_4i3gá3mostelo_supe3r4á3vits_', - 15 : '4e3ra3blemente_4i3gá3monoslas_4i3gá3monosles_4i3gá3monoslos_4i3gá3mos3mela_4i3gá3mosmeles_4i3gá3mosmelos_4i3gá3mos3tela_4i3gá3mosteles_4i3gá3mostelos_4o3lógicamente_', - 16 : '4i3gá3mos3melas_4i3gá3mos3telas_', - 17 : '_de3s4in3ter2e3sa_de3s4in3ter2e3sá_de3s4in3ter2e3se_de3s4in3ter2e3sé_de3s4in3ter2e3so_de3s4in3ter2e3só' + 2 : "1b1c1d1f1g1j1k1l1m1n1ñ1p1q1r1s1t1v1w1x1y1z", + 3 : "_a22bb2bc2bd2bf2bg2bj2bkb2l2bm2bn2bp2bqb2r2bs2bt2bv2bw2bx2by2bz2cb2cc2cd2cf2cgc4h2cjc2kc2l2cm2cn2cp2cqc2r2cs2ct2cv2cw2cx2cy2cz2db2dc2dd2df2dg2dj2dk2dl2dm2dn2dp2dqd2r2ds2dt2dv2dw2dx2dy2dz4e_4é_4és2fb2fc2fd2ff2fg2fj2fkf2l2fm2fn2fp2fqf2r2fs2ft2fv2fw2fx2fy2fz2gb2gc2gd2gf2gg2gj2gkg2l2gm2gn2gp2gqg2r2gs2gt2gv2gw2gx2gy2gz2hb2hc2hd2hf2hg2hj2hk2hl2hm2hn2hp2hq2hr2hs2ht2hv2hw2hx2hy2hz4í_2jb2jc2jd2jf2jg2jj2jk2jl2jm2jn2jp2jq2jr2js2jt2jv2jw2jx2jy2jz2kb2kc2kd2kf2kg2kj2kkk2l2km2kn2kp2kqk2r2ks2kt2kv2kw2kx2ky2kz2lb2lc2ld2lf2lg2lj2lkl4l2lm2ln2lp2lq2lr2ls2lt2lv2lw2lx2ly2lz2mb2mc2md2mf2mg2mj2mk2ml2mm2mn2mp2mq2mr2ms2mt2mv2mw2mx2my2mz2nb2nc2nd2nf2ng2nj2nk2nl2nm2nn2np2nq2nr2ns2nt2nv2nw2nx2ny2nz2o_2pb2pc2pd2pf2pg2pj2pkp2l2pm2pn2pp2pqp2r2ps2pt2pv2pw2px2py2pz2qb2qc2qd2qf2qg2qj2qk2ql2qm2qn2qp2qq2qr2qs2qt2qv2qw2qx2qy2qz2rb2rc2rd2rf2rg2rj2rk2rl2rm2rn2rp2rqr2r2rs2rt2rv2rw2rx2ry2rz2sb2sc2sd2sf2sg2sj2sk2sl2sm2sn2sp2sq2sr2ss2st2sv2sw2sx2sy2sz2tb2tc2td2tf2tg2tj2tk2tm2tn2tp2tqt2r2ts2tt2tv2twt2x2ty2tz2vb2vc2vd2vf2vg2vj2vkv2l2vm2vn2vp2vqv2r2vs2vt2vv2vw2vx2vy2vz2wb2wc2wd2wf2wg2wj2wkw2l2wm2wn2wp2wqw2r2ws2wt2wv2ww2wx2wy2wz2xb2xc2xd2xf2xg2xj2xk2xl2xm2xn2xp2xq2xr2xs2xt2xv2xw2xx2xy2xz2yb2yc2yd2yf2yg2yj2yk2yl2ym2yn2yp2yq2yr2ys2yt2yv2yw2yx2yy2yz2zb2zc2zd2zf2zg2zj2zk2zl2zm2zn2zp2zq2zr2zs2zt2zv2zw2zx2zy2zz", + 4 : "4ad_2al_4an_4ar_4as_4ás_2b1h2bl_2br_2ch_2cl_4cn_2cr_4ct_4cz_2d1h2dr_4ed_4en_4er_4es_2f1h2fl_2fr_4ft_2g2h2gl_4gn_2gr_2h1hi2a_4ía_i2o_2j1h2k2h2kl_2kr_2l1h2ll_mal22m1h4mn_2n1h2no_4ón_2os_4pc_2p1h2pl_4pn_2pr_4pt_2q1h2r1h2rr_3sa_2s1h2t1h2t2l2tr_4ts_4tz_2v1h2vl_2vr_2w1h2wl_2wr_2x1h2y1h2z1h", + 5 : "_an3h4áis_4ando4aos_bien2bio1heco1h4éis_4eos_geo1h4ían_i2as_4ías_i2os_iso1hmal3bmal3cmal3dmal3fmal3gmal3mmal3pmal3qmal3smal3tmal3v4meo_neo1ho2os_2ótic3sas_s3te_", + 6 : "_an2a2_an2á2_an2e2_an2é2_an2i2_an2í2_ani3m_aniña_ani3q_an2o2_an2ó2_an2u2_anu3l_bi1ox_bi1un_co2a2_co2á2_co2e2_co2é2_co2i2_co2í2_co3o4_co2ó2_co2u2_co2ú2_en2a2_en2á2_en2e2_en2é2_en1ej_en2i2_en2í2_en2o2_en2ó2_en2u2_en2ú2_in2a2_in2á2_in2e2_in2é2_in2i2_in2í2_in2o2_in2ó2_in2u2_in2ú2_re2a2_re2á2_re3e4_re2é2_re2i2_re2í2_re2o2_re2ó2_re1oc_re1oj_re2u2_re2ú24a3ba_acto1h4a3da_4adle_4adlo_4adme_4a3do_4adte_aero1hafro1haí5so_2ales_ana3líanfi1hante1h4a3ra_4a3rá_4a3re_4a3ré_a3rio_4a3se_4aste_asu3b24ates_auto1h2b3c2n2b3c2t2b3c2z2b3f2t2b3g2nbien3hbien3mbien3qbien3tbien3vbio1a2bio1á2bio1e2bio1é2bio1i2bio1í2bio1o2bio1ó2bio1u2bio1ú22b3m2n2b3p2n2b3p2s2b3p2t2b3t2s2b3t2z4caca44caga44cago42c3c2n2c3c2t2c3c2z2c3f2t2c3g2ncito1h2c3m2nco4artco4ártco4ercco4erzco4optco4ord2c3p2n2c3p2s2c3p2t2c3t2s2c3t2z4culo42d3c2n2d3c2t2d3c2zdeca1hde3seo2d3f2t2d3g2n2d3m2n2d3p2n2d3p2s2d3p2t2d3t2s2d3t2zeco1a2eco1á2eco1e2eco1é2eco1i2eco1í2eco1o2eco1ó2eco1u2eco1ú24edle_4edlo_4edme_4edte_emi2o2endo1hento1h4e3rá_4e3ré_4erla_4erle_4erlo_4erme_4erse_4erte_euco1heuro1hfono1hfoto1hgeo1a2geo1á2geo1e2geo1é2geo1i2geo1í2geo1o2geo1ó2geo1u2geo1ú2hemi1hhemo1hhexa1hhomo1h4íais_2i3ca_2i3co_4í3da_4í3do_4i4er_4i3ga_4i3go_4ísmo_iso1a2iso1á2iso1e2iso1é2iso1i2iso1í2iso1o2iso1ó2iso1u2iso1ú24ísta_kilo1h2l3c2n2l3c2t2l3c2z2l3f2t2l3g2n2l3m2n2l3p2n2l3p2s2l3p2t2l3t2s2l3t2zma4l3hmaxi1h2m3c2n2m3c2t2m3c2zmega1h2m3f2t2m3g2nmili1hmini1h2m3m2nmono1h2m3p2n2m3p2s2m3p2t2m3t2s2m3t2znamo1h2n3c2n2n3c2t2n3c2zneo1a2neo1á2neo1e2neo1é2neo1i2neo1í2neo1o2neo1ó2neo1u2neo1ú2neto1h2n3f2t2n3g2n2n3m2n2n3p2n2n3p2s2n3p2t2n3t2s2n3t2zocta1hocto1homni1h4ones_2o3sa_2o3so_para1h4pedo4poli1h3p2sic3p2siq4puta44puto42r3c2n2r3c2t2r3c2z2r3f2t2r3g2n2r3m2nromo1h2r3p2n2r3p2s2r3p2t2r3t2s2r3t2z2s3c2n2s3c2t2s3c2zsemi1h2s3f2t2s3g2n2s3m2n2s3p2n2s3p2s2s3p2ts3tal_s3tes_s3tor_2s3t2s2s3t2zsup6ra2t3c2n2t3c2t2t3c2ztele1h4teta_2t3f2t2t3g2n2t3m2ntopo1h2t3p2n2t3p2s2t3p2t2t3t2s2t3t2zu4teriwa3s4h2x3c2n2x3c2t2x3c2zxeno1h2x3f2t2x3g2n2x3m2n2x3p2n2x3p2s2x3p2t2x3t2s2x3t2z2y3c2n2y3c2t2y3c2z2y3f2t2y3g2n2y3m2n2y3p2n2y3p2s2y3p2t2y3t2s2y3t2z", + 7 : "_ana3li_aná3li_ane3xa_ane3xá_ane3xe_ane3xé_ani3ll_ano5ta_ano3tá_anti1h_an2ú2__anua3l_anu3bl_anu3da_bi1aur_bi1ó2x_en1apa_en1arb_en1art_he4mee_hu4mea_hu4meo_mala1e_pre2a2_pre2á2_pre2e2_pre2é2_pre2h2_pre2i2_pre2í2_pre2o2_pre2ó2_pre2u2_pre2ú2_pro2a2_pro2á2_pro2e2_pro2é2_pro2h2_pro2i2_pro2í2_pro2o2_pro2ó2_pro2u2_pro2ú2_re3abr_re3ábr_re3a2q_re3a2z_re3i2m_re3inc_re3ing_re3ins_re3int_re3o2b_re1unt_so3a4s4a3ban_4a3bas_acante2acto1a2acto1á2acto1e2acto1é2acto1i2acto1í2acto1o2acto1ó2acto1u2acto1ú24a3das_4adlas_4adles_4adlos_4adnos_4a3dor_4a3dos_aero1a2aero1á2aero1e2aero1é2aero1i2aero1í2aero1o2aero1ó2aero1u2aero1ú2afro1a2afro1á2afro1e2afro1é2afro1i2afro1í2afro1o2afro1ó2afro1u2afro1ú2aí5sos_4a3mos_anfi1a2anfi1á2anfi1e2anfi1é2anfi1i2anfi1í2anfi1o2anfi1ó2anfi1u2anfi1ú2anglo1hante1a2ante1á2ante1e2ante1é2ante1i2ante1í2ante1o2ante1ó2ante1u2ante1ú24áosla_4áosle_4áoslo_4a3ran_4a3rán_4a3ras_4a3rás_archi1h4a3ren_4a3res_4a3rés_4a3ría_a3rios_4a3rís_4a4rme_4a3ron_4a3ros_4a3sen_4a3ses_4astes_auto1a2auto1á2auto1e2auto1é2auto1i2auto1í2auto1o2auto1ó2auto1u2auto1ú2bi1u2ní4cagas_centi1hciclo1hcito1a2cito1á2cito1e2cito1é2cito1i2cito1í2cito1o2cito1ó2cito1u2cito1ú23c2neorcnico1hco4accico4actico4adjuco4adyuco3agenco4e3táco3exisco4imbrco4incico4i3tocon1urbcrono1hdeca1a2deca1á2deca1e2deca1é2deca1i2deca1í2deca1o2deca1ó2deca1u2deca1ú2decimo1desa3fidesa3fídesa3güde4s3eqde3signde3sollea3cia_ea3cio_4eadla_ecano1hectro1h4edlas_4edles_4edlos_4ednos_4e3dro_4eedla_4emboca4e3mos_endo1a2endo1á2endo1e2endo1é2endo1i2endo1í2endo1o2endo1ó2endo1u2endo1ú2ento1a2ento1á2ento1e2ento1é2ento1i2ento1í2ento1o2ento1ó2ento1u2ento1ú2entre1h4éosla_4éosle_4éoslo_e5r4ad_e5r4an_4e3rán_e5r4as_4e3rás_4e3rés_4e3ría_4e3rís_4erlas_4erles_4erlos_4ernos_4e3ros_euco1a2euco1á2euco1e2euco1é2euco1i2euco1í2euco1o2euco1ó2euco1u2euco1ú2euro1a2euro1á2euro1e2euro1é2euro1i2euro1í2euro1o2euro1ó2euro1u2euro1ú2expoli4extra1hfono1a2fono1á2fono1e2fono1é2fono1i2fono1í2fono1o2fono1ó2fono1u2fono1ú2foto1a2foto1á2foto1e2foto1é2foto1i2foto1í2foto1o2foto1ó2foto1u2foto1ú2gluco1hhecto1hhelio1hhemi1a2hemi1á2hemi1e2hemi1é2hemi1i2hemi1í2hemi1o2hemi1ó2hemi1u2hemi1ú2hemo1a2hemo1á2hemo1e2hemo1é2hemo1i2hemo1í2hemo1o2hemo1ó2hemo1u2hemo1ú2hexa1a2hexa1á2hexa1e2hexa1é2hexa1i2hexa1í2hexa1o2hexa1ó2hexa1u2hexa1ú2hidro1hhisto1hhomo1a2homo1á2homo1e2homo1é2homo1i2homo1í2homo1o2homo1ó2homo1u2homo1ú2ia5res_2i3cas_icono1h2i3cos_4i2dal_4í3das_4i3deo_4í3dos_4i3gas_4i3gás_4í3mos_infra1hintra1h4ísmos_4ístas_4í3tes_kilo1a2kilo1á2kilo1e2kilo1é2kilo1i2kilo1í2kilo1o2kilo1ó2kilo1u2kilo1ú2li5áreamacro1hmante4amaxi1a2maxi1á2maxi1e2maxi1é2maxi1i2maxi1í2maxi1o2maxi1ó2maxi1u2maxi1ú2mega1a2mega1á2mega1e2mega1é2mega1i2mega1í2mega1o2mega1ó2mega1u2mega1ú23mente_micro1hmili1a2mili1á2mili4armili1e2mili1é2mili1i2mili1í2mili1o2mili1ó2mili1u2mili1ú2mini1a2mini1á2mini1e2mini1é2mini1i2mini1í2mini1o2mini1ó2mini1u2mini1ú2miria1hmono1a2mono1á2mono1e2mono1é2mono1i2mono1í2mono1o2mono1ó2mono1u2mono1ú2multi1hnamo1a2namo1á2namo1e2namo1é2namo1i2namo1í2namo1o2namo1ó2namo1u2namo1ú2necro1hneto1a2neto1á2neto1e2neto1é2neto1i2neto1í2neto1o2neto1ó2neto1u2neto1ú2norte1hocta1a2octa1á2octa1e2octa1é2octa1i2octa1í2octa1o2octa1ó2octa1u2octa1ú2octo1a2octo1á2octo1e2octo1é2octo1i2octo1í2octo1o2octo1ó2octo1u2octo1ú24o2ica_4o2ico_oligo1homni1a2omni1á2omni1e2omni1é2omni1i2omni1í2omni1o2omni1ó2omni1u2omni1ú22o3sas_2o3sos_4ósteo_paleo1hpara1a2para1á2para1e2para1é2para1i2para1í2para1o2para1ó2para1u2para1ú2penta1hpiezo1hpluri1hpoi3de_poli1a2poli1á2poli1e2poli1é2poli1i2poli1í2poli1o2poli1ó2poli1u2poli1ú2pos3ta_pre3olíproto1hradio1hranco1hretro1hrmano1hromo1a2romo1á2romo1e2romo1é2romo1i2romo1í2romo1o2romo1ó2romo1u2romo1ú2san4c5tsemi1a2semi1á2semi1e2semi1é2semi1i2semi1í2semi1o2semi1ó2semi1u2semi1ú2seudo1hsobre1hsocio1hs3tora_supra1htalmo1htele1a2tele1á2tele1e2tele1é2tele1i2tele1í2tele1o2tele1ó2tele1u2tele1ú2termo1h4tetas_tetra1hti2o3coti2o3qutopo1a2topo1á2topo1e2topo1é2topo1i2topo1í2topo1o2topo1ó2topo1u2topo1ú2tropo1hultra1hxeno1a2xeno1á2xeno1e2xeno1é2xeno1i2xeno1í2xeno1o2xeno1ó2xeno1u2xeno1ú2", + 8 : "_an3aero_ane3xio_ane3xió_ani3dar_ani3mad_ani3mád_an3i2so_an3i2só_ani3vel_ano5che_ano5din_ano5mal_anó5mal_ano5nad_ano5nim_anó3nim_anti1a2_anti1á2_anti1e2_anti1é2_anti1i2_anti1í2_anti1o2_anti1ó2_anti1u2_anti1ú2_anua4lm_de2s2a2_de2s2á2_de2s2e2_de2s2é2_de2s2i2_de2s2í2_de2s2o2_de2s2ó2_de2s2u2_de2s2ú2_en1aciy_en1anch_en2artr_eno3jar_hepta1e_ina3nic_in3anim_iná3nim_in3apel_iné3dit_in3efic_ini3cia_ini3ciá_ini3cie_ino3cua_ino3cuo_intra1o_intra1u_inú3til_mal1est_mal1int_pos3tin_pos3tín_re3a2eg_re3alim_re3anim_re3aním_re3orga_retro1a_re3unir_re3unír_re3usar_re3usár_su2b2a2_su2b2á2_sub3arr_su2b2e2_su2b2é2_su2b2i2_su2b2í2_sub3ími_sub3índ_su2b2o2_su2b2ó2_su2b2u2_su2b2ú2_sur1est_sur1oes_tra2s1a_tra2s1o_tri1ó2x4a3bais_4a3ción_4ádmele_4ádmelo_4a3dora_4ádsela_4ádsele_4ádselo_4ádtele_4ádtelo_4ándola_4ándole_4ándolo_4ándome_4ándoos_4ándose_4ándote_anglo1a2anglo1á2anglo1e2anglo1é2anglo1i2anglo1í2anglo1o2anglo1ó2anglo1u2anglo1ú24áoslas_4áosles_4áoslos_4a3rais_archi1a2archi1á2archi1e2archi1é2archi1i2archi1í2archi1o2archi1ó2archi1u2archi1ú24a3reis_4a3réis_4a3ríais4a3rían_4a3rías_4a4r3la_4a4r3le_4a4r3lo_4árosla_4árosle_4ároslo_4a4r3se_4a4r3te_4a3seis_4asteis_biblio1hcardio1hcefalo1hcenti1a2centi1á2centi1e2centi1é2centi1i2centi1í2centi1o2centi1ó2centi1u2centi1ú2ciclo1a2ciclo1á2ciclo1e2ciclo1é2ciclo1i2ciclo1í2ciclo1o2ciclo1ó2ciclo1u2ciclo1ú2cnico1a2cnico1á2cnico1e2cnico1é2cnico1i2cnico1í2cnico1o2cnico1ó2cnico1u2cnico1ú2co4a3dunco4a3gulco4á3gulco4a3licco4aptacco4e3ficcon1imbrcontra1hco4o3perco4o3pércripto1hcrono1a2crono1á2crono1e2crono1é2crono1i2crono1í2crono1o2crono1ó2crono1u2crono1ú2de4s3abrde4s3agudesa3lindesa3livde4s3almdesa3lojde4s3anddesa3pañdesa3pegde4s3armdes4armede4s3asndesa3tindesa3yundesa3zondesa3zónde3semejde4s3endde4s3enjde4s3enmde4s3enrde4s3ensde3s4ertde3s4értde3siderde3sidiade3sidiode3siertde3socupde3solacde3soladde3soncede4s3ovade4s3ovide4s3oxide4s3oyede4s3oyéde3suelldodeca1hea3cias_ea3cios_ecano1a2ecano1á2ecano1e2ecano1é2ecano1i2ecano1í2ecano1o2ecano1ó2ecano1u2ecano1ú2ectro1a2ectro1á2ectro1e2ectro1é2ectro1i2ectro1í2ectro1o2ectro1ó2ectro1u2ectro1ú24édmele_4édmelo_4e3dros_4édsela_4édsele_4édselo_4édtele_4édtelo_entre1a2entre1á2entre1e2entre1é2entre1i2entre1í2entre1o2entre1ó2entre1u2entre1ú24éoslas_4éosles_4éoslos_e5r4áis_4e3réis_4e3rían_4e3rías_4e3rior_4érmele_4érmelo_4érsela_4érsele_4érselo_4értele_4értelo_extra1a2extra1á2extra1e2extra1é2extra1i2extra1í2extra1o2extra1ó2extra1u2extra1ú2gastro1hgluco1a2gluco1á2gluco1e2gluco1é2gluco1i2gluco1í2gluco1o2gluco1ó2gluco1u2gluco1ú2hecto1a2hecto1á2hecto1e2hecto1é2hecto1i2hecto1í2hecto1o2hecto1ó2hecto1u2hecto1ú2helio1a2helio1á2helio1e2helio1é2helio1i2helio1í2helio1o2helio1ó2helio1u2helio1ú2hemato1hhidro1a2hidro1á2hidro1e2hidro1é2hidro1i2hidro1í2hidro1o2hidro1ó2hidro1u2hidro1ú2hipe2r3rhisto1a2histo1á2histo1e2histo1é2histo1i2histo1í2histo1o2histo1ó2histo1u2histo1ú24ía3mos_icono1a2icono1á2icono1e2icono1é2icono1i2icono1í2icono1o2icono1ó2icono1u2icono1ú24i3deos_4i3gáis_infra1a2infra1á2infra1e2infra1é2infra1i2infra1í2infra1o2infra1ó2infra1u2infra1ú2inter4ésinter4inintra1a2intra1á2intra1e2intra1é2intra1i2intra1í2intra1o2intra1ó2intra1u2intra1ú24í4s3te_4ística_4ístico_macro1a2macro1á2macro1e2macro1é2macro1i2macro1í2macro1o2macro1ó2macro1u2macro1ú24meable_megalo1hmelano1hmicro1a2micro1á2micro1e2micro1é2micro1i2micro1í2micro1o2micro1ó2micro1u2micro1ú2miria1a2miria1á2miria1e2miria1é2miria1i2miria1í2miria1o2miria1ó2miria1u2miria1ú2multi1a2multi1á2multi1e2multi1é2multi1i2multi1í2multi1o2multi1ó2multi1u2multi1ú2necro1a2necro1á2necro1e2necro1é2necro1i2necro1í2necro1o2necro1ó2necro1u2necro1ú2norte1a2norte1á2norte1e2norte1é2norte1i2norte1í2norte1o2norte1ó2norte1u2norte1ú24o2icas_4o2icos_o4i3dal_4o2i3de_o4i3dea_oligo1a2oligo1á2oligo1e2oligo1é2oligo1i2oligo1í2oligo1o2oligo1ó2oligo1u2oligo1ú24ó3loga_4ó3logo_4ósteos_paleo1a2paleo1á2paleo1e2paleo1é2paleo1i2paleo1í2paleo1o2paleo1ó2paleo1u2paleo1ú2para2is_para4ísopenta1a2penta1á2penta1e2penta1é2penta1i2penta1í2penta1o2penta1ó2penta1u2penta1ú2piezo1a2piezo1á2piezo1e2piezo1é2piezo1i2piezo1í2piezo1o2piezo1ó2piezo1u2piezo1ú2plan4c5tpluri1a2pluri1á2pluri1e2pluri1é2pluri1i2pluri1í2pluri1o2pluri1ó2pluri1u2pluri1ú2poi3des_poli4arqpoli4árqpoli4u3rpos3tas_pre3eligpre3elijpre3eminpre3exispreo3cuppreo2cúppre3opinproto1a2proto1á2proto1e2proto1é2proto1i2proto1í2proto1o2proto1ó2proto1u2proto1ú2radio1a2radio1á2radio1e2radio1é2radio1i2radio1í2radio1o2radio1ó2radio1u2radio1ú2ranco1a2ranco1á2ranco1e2ranco1é2ranco1i2ranco1í2ranco1o2ranco1ó2ranco1u2ranco1ú2retro1a2retro1á2retro1e2retro1é2retro1i2retro1í2retro1o2retro1ó2retro1u2retro1ú2rmano1a2rmano1á2rmano1e2rmano1é2rmano1i2rmano1í2rmano1o2rmano1ó2rmano1u2rmano1ú2seudo1a2seudo1á2seudo1e2seudo1é2seudo1i2seudo1í2seudo1o2seudo1ó2seudo1u2seudo1ú2sobre1a2sobre1á2sobre1e2sobre1é2sobre1i2sobre1í2sobre1o2sobre1ó2sobre1u2sobre1ú2socio1a2socio1á2socio1e2socio1é2socio1i2socio1í2socio1o2socio1ó2socio1u2socio1ú2s3toras_s3tores_su4d3oessupe2r3rsupra1a2supra1á2supra1e2supra1é2supra1i2supra1í2supra1o2supra1ó2supra1u2supra1ú2talmo1a2talmo1á2talmo1e2talmo1é2talmo1i2talmo1í2talmo1o2talmo1ó2talmo1u2talmo1ú23te3ri3ntermo1a2termo1á2termo1e2termo1é2termo1i2termo1í2termo1o2termo1ó2termo1u2termo1ú2tetra1a2tetra1á2tetra1e2tetra1é2tetra1i2tetra1í2tetra1o2tetra1ó2tetra1u2tetra1ú2trans4artrans4ittropo1a2tropo1á2tropo1e2tropo1é2tropo1i2tropo1í2tropo1o2tropo1ó2tropo1u2tropo1ú2ultra1a2ultra1á2ultra1e2ultra1é2ultra1i2ultra1í2ultra1o2ultra1ó2ultra1u2ultra1ú2", + 9 : "_bi1anual_bien1and_bien1apa_bien1ave_bien1est_bien1int_dieci1o2_en1aceit_en1aguaz_enu3mera_enu3merá_enu3mere_in3abarc_in3abord_in3acent_in3adapt_in3aplic_in3arrug_in3asist_in3efici_in3eludi_ine3narr_ino3cula_ino3culá_ino3cule_inte2r3r_mal1acon_mal1acos_pos2t2a2_pos2t2á2_pos2t2e2_pos2t2é2_pos3terg_pos2t2i2_pos2t2í2_post3ind_pos2t2o2_pos2t2ó2_post3ope_post3rev_pos2t2u2_pos2t2ú2_re3afirm_re3afírm_re3ajust_rea3júst_rea3lism_rea3list_rea3liza_rea3lizá_rea3líza_re3ubica_re3ubíca_reu3mati_reu3máti_su3b4ien_sub2i3ll_su4b3ray_sub3urba_su2d1est_sur1a2me_tele1imp_tele1obj_tra2s2oñ4á3bamos_4ád3mela_4ádmeles_4ádmelos_4ádnosla_4ádnosle_4ádnoslo_4a3doras_4a3dores_4ádselas_4ádseles_4ádselos_4ád3tela_4ádteles_4ádtelos_4a4i3gan_4ándolas_4ándoles_4ándolos_4ándonos_4á3ramos_4a3remos_4á3remos_4a4r3las_4a4r3les_4a4r3los_4á4rmele_4á4rmelo_4a4r3nos_4ároslas_4árosles_4ároslos_4á3semos_biblio1a2biblio1á2biblio1e2biblio1é2biblio1i2biblio1í2biblio1o2biblio1ó2biblio1u2biblio1ú2b4ien3do_cardio1a2cardio1á2cardio1e2cardio1é2cardio1i2cardio1í2cardio1o2cardio1ó2cardio1u2cardio1ú2cefalo1a2cefalo1á2cefalo1e2cefalo1é2cefalo1i2cefalo1í2cefalo1o2cefalo1ó2cefalo1u2cefalo1ú2contra1a2contra1á2contra1e2contra1é2contra1i2contra1í2contra1o2contra1ó2contra1u2contra1ú2cripto1a2cripto1á2cripto1e2cripto1é2cripto1i2cripto1í2cripto1o2cripto1ó2cripto1u2cripto1ú2desa3briddesa3certde4s3acotde4s3aficde4s3afilde4s3afinde4s3afordesa3garrde4s3ahijde4s3aliñdesa3marrdesa3moblde4s3anidde4s3animde4s3anímde4s3anudde4s3apoyde4s3arende4s3avisde4s3empéde4s3enamde4s3enchde4s3enclde4s3encode4s3encrde4s3encude3senfadde3senfádde4s3enfide4s3enfode4s3enfóde3sengañde3sengáñde4s3enlode4s3entade4s3entode4s3entrde4s3entude3s4ercide4s3espade3sesperde3sigualde3siluside4s3imande3sinencde3sinfecde4s3inflde3sistende4s3odorde4s3ordede4s3órdede4s3orejde3s4osegde3su3dande3su3darde3su3dasde4s3unimde4s3unirdodeca1a2dodeca1á2dodeca1e2dodeca1é2dodeca1i2dodeca1í2dodeca1o2dodeca1ó2dodeca1u2dodeca1ú24éd3mela_4édmeles_4édmelos_4édnosla_4édnosle_4édnoslo_4é3drica_4é3drico_4édselas_4édseles_4édselos_4éd3tela_4édteles_4édtelos_e5r4a3ba_e5r4a3da_e5r4a3do_e5r4a3ra_e5r4a3rá_e5r4a3re_e5r4a3ré_e5r4a3se_e5r4aste_e5r4ates_4e3ríais_4e3riora_4ér3mela_4érmeles_4érmelos_4érnosla_4érnosle_4érnoslo_4é3rosla_4é3rosle_4é3roslo_4érselas_4érseles_4érselos_4ér3tela_4érteles_4értelos_gastro1a2gastro1á2gastro1e2gastro1é2gastro1i2gastro1í2gastro1o2gastro1ó2gastro1u2gastro1ú2hemato1a2hemato1á2hemato1e2hemato1é2hemato1i2hemato1í2hemato1o2hemato1ó2hemato1u2hemato1ú2hipe2r1a2hipe2r1á2hipe2r1e2hipe2r1é2hipe2r1i2hipe2r1í2hipe2r1o2hipe2r1ó2hipe2r1u2hipe2r1ú24i2dales_4i3gamos_inter4inointer4ior4ís3teis_4í4s3tes_4ísticas_4ísticos_4meables_megalo1a2megalo1á2megalo1e2megalo1é2megalo1i2megalo1í2megalo1o2megalo1ó2megalo1u2megalo1ú2melano1a2melano1á2melano1e2melano1é2melano1i2melano1í2melano1o2melano1ó2melano1u2melano1ú2mili4arioo4i3deas_4o2i3des_4ó3logas_4o3logía_4ó3logos_pe5r4antepoli4andrpoli4éstes3ta3les_s3ti3lla_supe2r1a2supe2r1á2supe2r1e2supe2r1é2supe2r1i2supe2r1í2super4iorsupe2r1o2supe2r1ó2supe2r1u2supe2r1ú2t4eo3nes_tran4sacctrans4ido", + 10 : "_an3e2pigr_ante2o3je_en1aguach_in3aguant_ina3movib_in3analiz_in3apreci_in3aprens_inte2r1a2_inte2r1á2_inte2r1e2_inte2r1é2_inte2r1i2_inte2r1í2_inte2r1o2_inte2r1ó2_inte2r1u2_inte2r1ú2_inu3tiliz_ma4l3e4du_pa4n1afri_pa4n1ópti_post3elec_pos3te3ri_pos3ti3go_pos3ti3la_post3impr_pos3ti3ne_pos3ti3za_pos3ti3zo_pos3tó3ni_pos3tu3la_pos3tu3lá_pos3tu3le_pos3tu3lé_pos3tu3ra_re3a2grup_re3aparec_re3utiliz_re3utilíz_sub3aflue_sub3enten_sub3estim_sub3estím_sub3ofici_su2d1a2fr_su2d1a2me_tran2s1ur4a3ciones_4ád3melas_4ádnoslas_4ádnosles_4ádnoslos_4ád3telas_4ándomela_4ándomele_4ándomelo_4ándosela_4ándosele_4ándoselo_4ándoseme_4ándotela_4ándotele_4ándotelo_4ándoteme_4a3ríamos_4á4r3mela_4á4r3sela_4á4r3sele_4á4r3selo_4á4r3tela_4á4r3tele_4á4r3telo_b4ien3das_centi5áreaco3n4imbride4s3abastde4s3abollde4s3abotode4s3aceitdesa3ciertde4s3acompde4s3aconsde4s3acoplde4s3acorrde4s3activde4s3adeudde4s3adornde4s3aferrde4s3agradde4s3agregde4s3agrupde4s3aherrde4s3ajustde4s3alentde4s3alfomde4s3alforde4s3aliende4s3alinede4s3almidde4s3alterde4s3amoldde4s3amortde4s3angeldesa3pacibde4s3apadrde4s3aparedesa3parecdesa3paricde4s3aplicde4s3apretde4s3aprobde4s3arbolde4s3arrimdesa3rrollde4s3arropde4s3arrugde4s3asentde4s3asistdesa3sosegde4s3atencde4s3atendde4s3atentde4s3atornde4s3autorde4s3embalde4s3embálde4s3embarde4s3embárde4s3embotde4s3empacde4s3empañde4s3empáñde4s3empatde4s3empegde4s3emplede4s3empozde4s3encabde4s3encadde4s3encajde4s3encájde4s3encamde3sencantde4s3encapde4s3encarde4s3encárde3senfrende4s3enfurde4s3engarde4s3engasde4s3engomde4s3engozde4s3engrade4s3enladde4s3enlazde3sentendde4s3enterde3sentiende3sentiénde4s3estimde4s3imponde4s3inhibde3s4interde4s3intoxde4s3inverde4s3obligde4s3obstrde4s3ub4icde4s3unierde3s4ustane4a3miento4éd3melas_4édnoslas_4édnosles_4édnoslos_4é3dricas_4é3dricos_4éd3telas_e5r4a3ban_e5r4a3bas_4e3ra3ble_e5r4a3das_e5r4a3dor_e5r4a3dos_e5r4a3mos_e5r4a3ran_e5r4a3rán_e5r4a3ras_e5r4a3rás_e5r4a3ren_e5r4a3res_e5r4a3rés_e5r4a3ría_e5r4a3rís_e5r4a3ron_e5r4a3sen_e5r4a3ses_e5r4astes_4e3re3mos_4e3ríamos_4e3rioras_4e3riores_4ér3melas_4érnoslas_4érnosles_4érnoslos_4é3roslas_4é3rosles_4é3roslos_4ér3telas_familia3riinter4esarmini4a5turo4i3dales_4o3logías_4o3lógica_4o3lógico_para4ulatape3r4e3miaperpon5d6rpoli4anteapoli4o5mies3ti3llas_s3ti3llón_super4ablesupe4r4a3rsupe4r4á3rtrans4ibertrans4igentrans4igirtrans4itabultra4ísmo", + 11 : "_mal1andant_mal1andanz_pa4n1europ_sub2i3mien_tran2s1alp_tran2s1and_tran2s1atl_tran2s1oce4ándomelas_4ándomeles_4ándomelos_4ándoselas_4ándoseles_4ándoselos_4ándosenos_4ándotelas_4ándoteles_4ándotelos_4ándotenos_4á4r3melas_4á4r3meles_4á4r3melos_4á4r3nosla_4á4r3nosle_4á4r3noslo_4á4r3selas_4á4r3seles_4á4r3selos_4á4r3telas_4á4r3teles_4á4r3telos_de4s3abrochde4s3acelerde4s3acobarde4s3acomoddesa3cralizde4s3acuartde4s3aderezde4s3adorarde4s3advertde4s3agracide4s3agravide4s3alagarde4s3alquilde4s3alumbrde4s3amuebldesa3percibde4s3aprenddesa3prenside4s3aprietde4s3apropide4s3arraigde4s3arreglde4s3arrenddesa3sosiegde4s3atiendde4s3atrancde4s3embargde4s3embolsde4s3emborrde4s3emboscde4s3embragde4s3embrágde4s3embrujde4s3embrújde4s3empedrde4s3empeorde4s3empernde4s3empolvde4s3empotrde4s3encallde4s3encállde4s3enfundde4s3enhebrde4s3entierde4s3entiérde4s3envainde3sesperacde4s3imaginde4s3impresde4s3incentde4s3inclinde4s3incorpde4s3inflamde4s3informde4s3insectde4s3instalde3s4integrde4s3obedecde3s4ubstane5r4a3bais_4e3ra3bles_e5r4a3dora_e5r4a3rais_e5r4a3reis_e5r4a3réis_e5r4a3ríaise5r4a3rían_e5r4a3rías_e5r4a3seis_e5r4asteis_4i3gá3moos_4o3lógicas_4o3lógicos_2o3samente_super4ación4te4r5i4nsutrans4eúntetrans4icióntrans4istortrans4ubsta", + 12 : "_in3ter2e3sa_in3ter2e3sá_in3ter2e3se_in3ter2e3sé_in3ter2e3so_in3ter2e3só_in3te3r4rog_pa4n1a4meri4á4r3noslas_4á4r3nosles_4á4r3noslos_deca2i3mientde4s3acostumde4s3acreditde4s3adormecdesa3guisadode4s3apolillde4s3articulde4s3embravede4s3embrávede4s3embrollde4s3embróllde4s3emparejde4s3emparéjde4s3emperezde4s3enganchde3senvolvimde4s3estabilde4s3impresXde4s3incruste5r4á3bamos_e5r4a3doras_e5r4a3dores_e5r4á3ramos_e5r4a3remos_e5r4á3remos_e5r4á3semos_4e3rioridad_4i3gá3monos_4i3gá3mosla_4i3gá3mosle_4i3gá3moslo_4i3gá3mosme_4i3gá3moste_s3ti3llones_trans4itorio", + 13 : "_in3te3r4rump_in3te3r4rupc_in3te3r4ruptde4s3aprovechde4s3empaquetde4s3empaquétde4s3emparentde4s3esperanze5r4a3ríamos_4e3riormente_4i3gá3moosla_4i3gá3moosle_4i3gá3mooslo_4i3gá3mosela_4i3gá3mosele_4i3gá3moselo_4i3gá3moslas_4i3gá3mosles_4i3gá3moslos_supe3r4á3vit_", + 14 : "4e3rioridades_4i3gá3monosla_4i3gá3monosle_4i3gá3monoslo_4i3gá3mooslas_4i3gá3moosles_4i3gá3mooslos_4i3gá3moselas_4i3gá3moseles_4i3gá3moselos_4i3gá3mosmele_4i3gá3mosmelo_4i3gá3mostele_4i3gá3mostelo_supe3r4á3vits_", + 15 : "4e3ra3blemente_4i3gá3monoslas_4i3gá3monosles_4i3gá3monoslos_4i3gá3mos3mela_4i3gá3mosmeles_4i3gá3mosmelos_4i3gá3mos3tela_4i3gá3mosteles_4i3gá3mostelos_4o3lógicamente_", + 16 : "4i3gá3mos3melas_4i3gá3mos3telas_", + 17 : "_de3s4in3ter2e3sa_de3s4in3ter2e3sá_de3s4in3ter2e3se_de3s4in3ter2e3sé_de3s4in3ter2e3so_de3s4in3ter2e3só" } }; \ No newline at end of file diff --git a/resources/viewer/hyphenate/patterns/fi.js b/resources/viewer/hyphenate/patterns/fi.js index 2310cd5eed..4cb7147ca8 100644 --- a/resources/viewer/hyphenate/patterns/fi.js +++ b/resources/viewer/hyphenate/patterns/fi.js @@ -1,17 +1,17 @@ -Hyphenator.languages.fi = { +Hyphenator.languages['fi'] = { leftmin : 2, rightmin : 2, shortestPattern : 2, longestPattern : 7, - specialChars : 'öäå', + specialChars : "öäå", patterns : { - 3 : '1ba1be1bi1bo1bu1by1da1de1di1do1du1dy1dä1dö1fa1fe1fi1fo1fu1fy1ga1ge1gi1go1gu1gy1gä1gö1ha1he1hi1ho1hu1hy1hä1hö1ja1je1ji1jo1ju1jy1jä1jö1ka1ke1ki1ko1ku1ky1kä1kö1la1le1li1lo1lu1ly1lä1lö1ma1me1mi1mo1mu1my1mä1mö1na1ne1ni1no1nu1ny1nä1nö1pa1pe1pi1po1pu1py1pä1pö1ra1re1ri1ro1ru1ry1rä1rö1sa1se1si1so1su1sy1sä1sö1ta1te1ti1to1tu1ty1tä1tö1va1ve1vi1vo1vu1vy1vä1vöä2yo1yö2ya1äa1öo1äo1öä2äö2öä2öö2ä_ä2u2sb2lb2rd2rf2lf2rg2lg2rk2lp2lp2rc2lq2v', - 4 : 'y1a2y1o2u1y2y1u2ö3a2ö3o2ä3a2ä3o2ä1u2ö1u2u1ä2u1ö2e1aai1aao1aau1aau1eea1uui1uue1uuo1uuää1iää1eää3yi1ääe1ääy1ääi1ööa1eia1oie1aii1auy1eiai1aai1eai1oai1uau1aau1eeu1aie1aie1oie1yiu1aiu1eiu1ooi1aoi1eoi1ooi1uo1uiou1eou1oue1aui1euo1auo1ue1ö2ö1e2r2asl2as1k2vsc2hts2h', - 5 : '1st2raa1i2aa1e2aa1o2aa1u2ee1a2ee1i2ee1u2ee1y2ii1a2ii1e2ii1o2uu1a2uu1e2uu1o2uu1i2io1a2io1e2keus11b2lo1b2ri1b2ro1b2ru1d2ra1f2la1f2ra1f2re1g2lo1g2ra1k2ra1k2re1k2ri1k2va1p2ro1q2vich2r', - 6 : '1sp2lialous1rtaus1perus12s1ase2s1apuulo2s1bib3li', - 7 : 'yli1o2pali1a2v2s1ohje1a2sian1a2siat1a2sioi2s1o2sa2n1o2sa_ydi2n12n1otto2n1oton2n1anto2n1anno2n1aika2n1a2jo2s1a2jo', - 8 : '2s1a2sia2n1o2pet2s1a2loialkei2s12n1e2dus2s1ajatu2s1y2rit2s1y2hti2n1a2jan2n1o2mai2n1y2lit2s1a2len2n1a2len', - 9 : '2s1o2pisk2n1o2pist2s1o2pist2s1i2dea_2s1i2dean2s1e2sity_suu2r1a2', - 11 : '1a2siaka2s1' + 3 : "1ba1be1bi1bo1bu1by1da1de1di1do1du1dy1dä1dö1fa1fe1fi1fo1fu1fy1ga1ge1gi1go1gu1gy1gä1gö1ha1he1hi1ho1hu1hy1hä1hö1ja1je1ji1jo1ju1jy1jä1jö1ka1ke1ki1ko1ku1ky1kä1kö1la1le1li1lo1lu1ly1lä1lö1ma1me1mi1mo1mu1my1mä1mö1na1ne1ni1no1nu1ny1nä1nö1pa1pe1pi1po1pu1py1pä1pö1ra1re1ri1ro1ru1ry1rä1rö1sa1se1si1so1su1sy1sä1sö1ta1te1ti1to1tu1ty1tä1tö1va1ve1vi1vo1vu1vy1vä1vöä2yo1yö2ya1äa1öo1äo1öä2äö2öä2öö2ä_ä2u2sb2lb2rd2rf2lf2rg2lg2rk2lp2lp2rc2lq2v", + 4 : "y1a2y1o2u1y2y1u2ö3a2ö3o2ä3a2ä3o2ä1u2ö1u2u1ä2u1ö2e1aai1aao1aau1aau1eea1uui1uue1uuo1uuää1iää1eää3yi1ääe1ääy1ääi1ööa1eia1oie1aii1auy1eiai1aai1eai1oai1uau1aau1eeu1aie1aie1oie1yiu1aiu1eiu1ooi1aoi1eoi1ooi1uo1uiou1eou1oue1aui1euo1auo1ue1ö2ö1e2r2asl2as1k2vsc2hts2h", + 5 : "1st2raa1i2aa1e2aa1o2aa1u2ee1a2ee1i2ee1u2ee1y2ii1a2ii1e2ii1o2uu1a2uu1e2uu1o2uu1i2io1a2io1e2keus11b2lo1b2ri1b2ro1b2ru1d2ra1f2la1f2ra1f2re1g2lo1g2ra1k2ra1k2re1k2ri1k2va1p2ro1q2vich2r", + 6 : "1sp2lialous1rtaus1perus12s1ase2s1apuulo2s1bib3li", + 7 : "yli1o2pali1a2v2s1ohje1a2sian1a2siat1a2sioi2s1o2sa2n1o2sa_ydi2n12n1otto2n1oton2n1anto2n1anno2n1aika2n1a2jo2s1a2jo", + 8 : "2s1a2sia2n1o2pet2s1a2loialkei2s12n1e2dus2s1ajatu2s1y2rit2s1y2hti2n1a2jan2n1o2mai2n1y2lit2s1a2len2n1a2len", + 9 : "2s1o2pisk2n1o2pist2s1o2pist2s1i2dea_2s1i2dean2s1e2sity_suu2r1a2", + 11 : "1a2siaka2s1" } }; \ No newline at end of file diff --git a/resources/viewer/hyphenate/patterns/fr.js b/resources/viewer/hyphenate/patterns/fr.js index 16d9b18235..a596f88e2f 100644 --- a/resources/viewer/hyphenate/patterns/fr.js +++ b/resources/viewer/hyphenate/patterns/fr.js @@ -1,27 +1,26 @@ -Hyphenator.languages.fr = { +// The french hyphenation patterns are retrieved from +// http://tug_org/svn/texhyphen/trunk/collaboration/repository/hyphenator/ +Hyphenator.languages['fr'] = { leftmin : 2, - rightmin : 2, + rightmin : 3, shortestPattern : 1, longestPattern : 14, - specialChars : 'âêîôûçœéèàî', - //The french hyphenation patterns are retrieved from http://extensions.services.openoffice.org/project/french-dictionary-reform1990 - //They are under LGPL + specialChars : "àâçèéêîïôûœ’'", patterns : { - 2 : "1j1q1ç", - 3 : "'a4'e4'i4'o4'u4'y4'â4'è4'é4'ê4'î4'ô4'û4_a4_e4_i4_o4_u4_y4_â4_è4_é4_ê4_î4_ô4_û41ba1be1bi1bo1bu1by1bâ1bè1bé1bê1bî1bô1bû1ca1ce1ci1co1cu1cy1câ1cè1cé1cê1cî1cô1cû1da1de1di1do1du1dy1dâ1dè1dé1dê1dî1dô1dû1fa1fe1fi1fo1fu1fy1fâ1fè1fé1fê1fî1fô1fû1ga1ge1gi1go1gu1gy1gâ1gè1gé1gê1gî1gô1gû1ha1he1hi1ho1hu1hy1hâ1hè1hé1hê1hî1hô1hû1ka1ke1ki1ko1ku1ky1kâ1kè1ké1kê1kî1kô1kû1la1le1li1lo1lu1ly1là1lâ1lè1lé1lê1lî1lô1lû1ma1me1mi1mo1mu1my1mâ1mè1mé1mê1mî1mô1mû1na1ne1ni1no1nu1ny1nâ1nè1né1nê1nî1nô1nû1pa1pe1pi1po1pu1py1pâ1pè1pé1pê1pî1pô1pû1ra1re1ri1ro1ru1ry1râ1rè1ré1rê1rî1rô1rû1sa1se1si1so1su1sy1sâ1sè1sé1sê1sî1sô1sû1ta1te1ti1to1tu1ty1tà1tâ1tè1té1tê1tî1tô1tû1va1ve1vi1vo1vu1vy1vâ1vè1vé1vê1vî1vô1vû1wa1we1wi1wo1wu1za1ze1zi1zo1zu1zy1zè1zé2'22jkn1xé1q", - 4 : "_1ba_1bi_1ci_1co_1cu_1da_1di_1do_1dy_1dé_1ge_1la_1ma_1mi_1mo_1mé_1no_1pa_1pe_1po_1pu_1pé_1re_1ré_1sa_1se_1so_1su_1sy_1ta1b2l1b2r1c2h1c2k1c2l1c2r1c½01d2r1f2l1f2r1g2l1g2n1g2r1k2h1k2r1m½01n½01p2h1p2l1p2r1r2h1s2h1s½01t2h1t2r1v2r1w2r2chb2chg2chm2chn2chp2chs2cht2chw2ckb2ckf2ckg2ckp2cks2ckt2phn2phs2pht2shm2shr2shs2thl2thm2thn2ths4be_4ce_4ch_4ck_4de_4fe_4ge_4he_4je_4ke_4kh_4le_4me_4ne_4pe_4ph_4re_4se_4sh_4te_4th_4ve_4we_4ze_a1bîa1laa1maa1nea1nia1poa1viab2hac1qad2har1cb1leb1reb1ruc1cic1kec1lac1lec1rec2hac2hec2hic2hoc2huc2hyc2hâc2hèc2héc2hêc2hîc2hôc2hûch2lch2rd1had1hod1led1red1s2e1nif1laf1lef1ref1rif1s2g1leg1neg1rag1reg1s2i1vail2ll1lil1lul1mem1nèm1ném1s2n1sao1pup1hep1hop1lep1lup1nep1rep1rip1rop1rup1rép1syp1tèp1téph2lph2rr1cir1her1hyr1mis1cas1cos1hes1hos1las1los1pas1pes1pis1pos1tas1tes1tis1tos1tys1tét1het1rat1ret1rit1ruth2ru1ciu1niu1viv1reâ1meè1meé1ceé1cié1cué1deé1leé1lié1loé1léé1mié1neé1nié1pié1reô1me", - 5 : "'a1mi'a1na'a1po'o1vi_1p2l_1p2r_1t2r_a1mi_a1na_a1po_c2hè_con4_cul4_dé2s_o1vi_p1ha_p1lu_p1ro_p1ré_p1sy_pe4r_réu2_s1ta_s1ti_t1ri_é1mi1d2'21g2ha1g2he1g2hi1g2ho1g2hy1p2né4bes_4ces_4des_4fes_4ges_4gue_4hes_4jes_4kes_4les_4mes_4nes_4pes_4que_4res_4ses_4tes_4ves_4wes_4zes_ab1seac1ceai1meal1coan1tiap1paar1mear1mias1meau1meca1pica1rêch1lech1loch1rech1rocil3lco1apco1arco1auco1axco1efco1enco1exco1nuco1é2cy1rid1d2hda1medi1lidé1caer1mees1cees1coes1tifa1mefu1mefé1cugil3lhil3lhu1mehy1pehy1pohé1mihé1moi1b2ri1oxyib1riim1maim1miim1poim1puin1ciin1diin1doin1duin1foin1noin1soin1tein1tiis1ceis1taja1cel1s2tlil3lmi1memil3lmo1nomu1nimé1coo1b2lo1d2lo1g2nob1looc1teog1noom1buom1meom1nior1meos1taos1tios1toos1tépa1lépa1piph1leph1reph1taph1tipi1ripo1lypu1pipu1sipé1nupé1réra1dira1mere1lere1lire1peri1meru1leré1geré1maré1suré1tis1c2ls1p2hs1t2rsc1lésc2hese1mises1qsp1hèsp1hést1rost1rusu1mesu1pesu1rasu1rét1c2ht1t2lta1metc2hith1reth1rito1metu1meté1léue1viva1civa1nive1nivi1divil3lvé1loxil3lys1toé1d2réd1riéd2hiélo1q", - 6 : "'a1b2r'a1g2n'ab1ré'ag1na'an1ti'ar1ge'ar1pe'as2ta'i1g2n'in1te'in2er'on1gu_1c2h4_1k2h4_1p2h4_1s2h4_1t2h4_a1b2r_a1g2n_ab1ré_ag1na_an1ti_ar1de_ar1ge_ar1pe_as2ta_bi1au_bi1u2_ci1sa_co1o2_cons4_do1le_dy2s3_dé1a2_dé1io_dé1o2_dé1sa_dé1se_dé1so_dé1su_i1g2n_in1te_in2er_la1te_ma1la_ma1le_ma1li_ma1lo_mil3l_mo1no_mé1go_mé1se_mé1su_mé1ta_mé2sa_no1no_on1gu_pa1na_pa1ni_pa1no_pa1ra_pa1re_pa1te_pé1ri_re1s2_res1q_ré1a2_ré1e2_ré1i2_ré1o2_ré1é2_ré2el_ré2er_ré2èr_su1bi_su1bu_su1ri_su1ro_ta1le1m2nès1octet1p2neu1p2tèr1p2tér1s2c2h1s2cop1s2lav1s2lov1s2por2bent_2c1k3h2cent_2dent_2fent_2gent_2jent_2kent_2lent_2nent_2pent_2rent_2s2chs2s3hom2sent_2tent_2vent_2went_2xent_2zent_3d2hal4b4le_4b4re_4c4he_4c4ke_4c4le_4c4re_4d4re_4f4le_4f4re_4g4le_4g4ne_4g4re_4gues_4p4he_4p4le_4p4re_4ques_4r4he_4s4ch_4s4he_4t4he_4t4re_4v4re_abs1tiabî1meani1mear1c2harc2hias1t2ravil4laè1d2rbou1mebou1tibru1mecci1deche1vicla1meco1a2dco1accco1g2ncog1nicom1pécon1ficon1nicon1ticor1pucur1redis1codis1sidis1tidé1t2rdét1rien1t2rent1reeus1taex1t2rfi1c2hfic2hufir1mefri1tihémi1éins1tiisc2hiiva1leiè1d2rl3lionla1w2rllu1memil1lemit1tenu1t2rnut1riopu1leos1t2rost1raost1rioxy1a2oè1d2rpe1r3hper1maper1tipho1toplu1mepri1vapru1depré1sepu1g2npug1napé2nulqua1merai1mercil4lrin1germil4lry1t2hry2thmser1geser1pesla1lospa1tispi1rospo1rusto1mosté1résu1b2lsub1lisub1s2suc1cuta1c2htac2hytan1getem1péter1getes1tator1retri1detru1cutur1buucil4luvil4lvol1tawa2g3néci1meécu1meédri1qéli1meélé1meémil4léni1te", - 7 : "'ab3réa'ami1no'e1n1a2'e1n1o2'i1n1a2'i1n1e2'i1n1i2'i1n1o2'i1n1u2'i1n1é2'i2g3ni'i2g3né'i2g4no'in2ept'in2i3q'in2i3t'in2ond'in2u3l'in2uit'ina1ni'ini1mi'ino1cu'ins1ta'iné1lu'iné1na'oua1ou_ab3réa_ami1no_bai1se_bi1a2c_bi1a2t_bio1a2_com1me_coo1li_da1c2r_dac1ry_di1ald_di1e2n_di2s3h_dia1ci_dia1to_dé2s1½_dé3s2c_dé3s2p_dé3s2t_e1n1a2_e1n1o2_gem1me_i1n1a2_i1n1e2_i1n1i2_i1n1o2_i1n1u2_i1n1é2_i2g3ni_i2g3né_i2g4no_in2ept_in2i3q_in2i3t_in2ond_in2u3l_in2uit_ina1ni_ini1mi_ino1cu_ins1ta_iné1lu_iné1na_ma1c2r_ma1g2n_ma2c3k_ma2r1x_mac1ro_mag1ni_mag1nu_mil1li_mé2s1i_mé3san_oua1ou_pa1r2h_pen2ta_pha1la_plu1ri_pon1te_pos1ti_pro1é2_pré1a2_pré1e2_pré1i2_pré1o2_pré1s2_pré1u2_pré1é2_pré2au_re2s3s_re2s3t_res1ca_res1ci_res1co_res1pe_res1pi_res1po_res1se_res1ta_res1ti_res1to_res1té_ré1t2r_ré2aux_ré2uss_réa1li_rét1ro_sar1me_ser1me_seu2le_sou1ve_stil3l_su1b2l_su2r3h_sub1li_émi1ne1alcool1s2clér1s2perm1s2phèr1s2phér1s2piel1s2tein1s2tigm1é2drie1é2nerg2chent_2guent_2phent_2quent_2r3heur2shent_2t3heur3d2houd3ph2tis4b4les_4b4res_4c4hes_4c4kes_4c4les_4c4res_4ch4le_4ch4re_4d4res_4f4les_4f4res_4g4les_4g4nes_4g4res_4p4hes_4p4les_4p4res_4ph4le_4ph4re_4r4hes_4s4hes_4t4hes_4t4res_4th4re_4v4res_amal1gaanti1feappa1rearmil5lcapil3lcarê1mechlo1rachlo1réchro1meco1ac1qco2nurbcoas1socoas1sucyril3ldia1p2hdiaph2rdili1gedéca1dee2s3c2he2s3copesti1meext1ra1extra2cextra2iflam1mefécu1legram1megran1dihype4r1hypers2hypo1a2hypo1e2hypo1i2hypo1o2hypo1s2hypo1u2hypo1é2i1al1gii1s2c2hi1s2tatiar1t2hibril3limma1neimmi1neimpo1teimpu1deinci1deindi1geindo1leinno1ceinso1leinti1meio1a2ctl2ment_la2w3remil4letmon1t2rmono1vamont1rémoye1nâmuni1fin3s2at_o1io1nio1s2taso1s2tato1s2timo1s2tomogno1moomni1poomni1s2papil2lpiril3lpoly1a2poly1e2poly1i2poly1o2poly1s2poly1u2poly1vapoly1è2poly1é2pros1taproé1mipréé1mipupil3lpusil3lreli1meryth1meréma1neréti1cesemil4lstan1dasu3r2ahsupe4r1supers2suré1mither1mothril3ltung2s3télé1e2télé1i2télé1s2u2s3t2ruevil4luni1a2xuni1o2vvacil4lvanil2lven1t2rveni1mevent1rividi1mey1al1giy1s2tomâ2ment_è2ment_é3cent_é3dent_é3rent_épis1coéqui1poéqui1vaô2ment_", - 8 : "'a2g3nat'anti1a2'anti1e2'anti1s2'anti1é2'eu2r1a2'inau1gu'inef1fa'inte4r3'inters2'ovi1s2c_1s2c2h4_a2g3nat_anti1a2_anti1e2_anti1s2_anti1é2_bi2s1a2_chè1v2r_chèv1re_con1t2r_cont1re_di1a2cé_di1a2mi_dy2s1a2_dy2s1i2_dy2s1o2_dy2s1u2_dé2s1i2_dé2s1é2_dés2a3m_désa1te_dési1ne_déso1pi_eu2r1a2_inau1gu_inef1fa_inte4r3_inters2_ma2l1ap_ma2l1en_ma2l1oc_mono1a2_mono1e2_mono1i2_mono1o2_mono1s2_mono1u2_mono1é2_mé2g1oh_mé2s1es_ovi1s2c_pa2n1is_pa2r3hé_para1s2_pe1r1a2_pe1r1e2_pe1r1i2_pe1r1o2_pe1r1u2_pe1r1é2_pluri1a_pon2tet_pos2t3h_pos2t3r_post1s2_pro1g2n_prog1na_psyc2ho_pud1d2l_péri1os_péri1s2_péri1u2_re3s4tu_re3s4ty_res1c2r_res1p2l_resp1le_rest1re_rest1ri_ré2a3le_ré2i3fi_sta2g3n_su2b1a2_su2b1in_su2b1ur_su2b1é2_su2b3lu_su2r1a2_su2r1e2_su2r1of_su2r1ox_su2r1é2_su3r2et_syn1g2n_syng1na_tri1a2c_tri1a2n_tri1a2t_tri1o2n1m2né1mo1m2né1si1s2patia1s2piros1s2tomos1s2ty1le2b2lent_2b2rent_2c2kent_2c2lent_2c2rent_2d2lent_2d2rent_2f2lent_2f2rent_2g2lent_2g2nent_2g2rent_2p2lent_2p2rent_2t2rent_2v2rent_4ch4les_4ch4res_4ph4les_4ph4res_4s4c4he_4th4res_a1è2d1rea2s3t1roab3sent_absti1neac3cent_ai2ment_anes1t2hanest1héar2ment_as2ment_au2ment_boutil3lca3ou3t2chevil4lchien1deco1assocco1assurcompé1teconfi1deconni1veconti1necorpu1leda2ment_di2s3copdiaph1radissi1dedistil3ldétri1meentre1geer2ment_es3cent_eu1s2tatfa2ment_fichu1mefritil3lfu2ment_hu2ment_hype1ra2hype1re2hype1ri2hype1ro2hype1ru2hype1ré2hémo1p2ti1arth2ri1è2d1rei2s3c2héi2s3chiai2s3chioimmis1ceindul1geinfor1mainstil3lintel1liis3cent_ja3cent_mi2ment_mécon1ten3s2ats_nutri1meo1s2trado1è2d1reo2b3longom2ment_ombud2s3or2ment_paléo1é2papil1lopapil3lapapil3lepapil3liperma1neperti1nephoto1s2poas1t2rpu2g3nacpé1r2é2qra2ment_radio1a2re3lent_re3pent_ri2ment_ru3lent_ré3gent_résur1geslalo1mesporu1lesu2ment_subli1mesuccu1lesupe1ro2ta2ment_tachy1a2tchin3t2tempé1ratesta1meto2ment_tran2s3htran2s3ptrans1patrucu1letu2ment_turbu1letélé1o2btélé1o2pvanil1liy1as1t2hé3quent_", - 9 : "'ae3s4c2h'apo2s3ta'ar3gent_'ar3pent_'in1s2tab'in2a3nit'in2augur'in2effab'in2o3cul'inte1ra2'inte1re2'inte1ri2'inte1ro2'inte1ru2'inte1ré2_ae3s4c2h_apo2s3ta_ar3dent__ar3gent__ar3pent__baise1ma_ci2s1alp_co2o3lie_di1a2cid_di1a2tom_do3lent__dé2s1u2n_dé3s2ert_dé3s2exu_dé3s2i3d_dé3s2i3r_dé3s2ist_dé3s2o3l_dé3s2orm_dé3s2orp_désen1si_in1s2tab_in2a3nit_in2augur_in2effab_in2o3cul_inte1ra2_inte1re2_inte1ri2_inte1ro2_inte1ru2_inte1ré2_la3tent__ma2g3num_ma2l1a2v_ma2l1int_ma2l1o2d_magni1ci_magni1fi_mala1d2r_malad1re_milli1am_mé2s1u2s_no2n1obs_pa2n1a2f_pa2n1opt_pa3rent__pa3tent__para1c2h_pos2t1in_pos2t1o2_pro1s2cé_prou3d2h_pré2a3la_péri2s3s_re2s3cap_re2s3cou_re2s3pir_re3s4t2r_re3s4tab_re3s4tag_re3s4tat_re3s4tim_re3s4tip_re3s4toc_re3s4top_re3s4tén_re3s4tér_ré2a3lis_ré2a3lit_rétro1a2_su2b3lin_su2r1i2m_su2r1inf_su2r1int_su3b2alt_su3b2é3r_su3r2a3t_su3r2eau_su3r2ell_subli1mi_ta3lent_1informat1p2sy1c2h1s2ca1p2h1s2to1c2k1é2drique1é2lément2r3hy1d2r3ph2ta1lé4s4c4hes_a2l1al1giabî2ment_amalga1meani2ment_apo2s3t2rarchié1pibou2ment_bru2ment_cci3dent_cla2ment_contin1gecur3rent_e2n1i2v2rfir2ment_grandi1loiva3lent_llu2ment_mit3tent_monova1lemunifi1ceo1s2té1roo2g3no1siomnipo1teopu3lent_ostric1tipapil3lomplu2ment_po1ast1repolyva1leprivat1dopro2s3tatproémi1nepru3dent_pré3sent_préémi1nepugna1b2lqua2ment_rai3ment_rin3gent_ser3gent_ser3pent_sesqui1a2stéréo1s2surémi1netan3gent_ter3gent_thermo1s2tor3rent_tran2s1a2tran2s1o2tran2s1u2tri3dent_vanil3linvanil3lisventri1povol2t1ampvélo1s2kiéci2ment_écu2ment_éli2ment_éni3tent_épi2s3copéquipo1teéquiva1le", - 10 : "'amino1a2c'ana3s4t2r'in2exo1ra'on3guent__1p2sy1c2h_amino1a2c_ana3s4t2r_chèvre1fe_com3ment__contre1ma_dacryo1a2_dé3s2i3li_gem2ment__in2exo1ra_macro1s2c_mono1ï2dé_on3guent__pa2n1a2mé_pa2n1a2ra_péri2s3ta_re2s3c1ri_re2s3pect_re2s3pons_re2s3quil_re3s4tand_re4s5trin_res3sent__sar3ment__ser3ment__sou3vent__émi3nent_1s2tandard1s2tro1p2h1s2truc1tu1é2lec1t2racquies1ceantifer1meappa3rent_carê2ment_chlo2r3a2cchlo2r3é2tchro2ment_co2g3ni1tidili3gent_déca3dent_esti2ment_flam2ment_fécu3lent_gram2ment_grandilo1qimma3nent_immi3nent_impo3tent_impu3dent_inci3dent_indi3gent_indo3lent_inno3cent_inso3lent_intelli1geinti2ment_mon2t3réalmoye2n1â2go1s2tra1tureli2ment_ryth2ment_réma3nent_réti3cent_tempéra1metran3s2acttran3s2atstranspa1reveni2ment_vidi2ment_élo3quent_", - 11 : "'anti2en1ne'in2i3mi1ti_1dé3s2o3dé_anti2en1ne_contre1s2c_dé3s2a3c2r_dé3s2ensib_dé3s2i3g2n_dé3s2i3nen_dé3s2in1vo_dé3s2o3pil_dé3s2é3g2r_in2i3mi1ti_ma2l1ai1sé_magnifi1ca_mé1ta1s2ta_pa2n1o2p2h_phalan3s2t_psycho1a2n_re2s3ci1si_re2s3ci1so_re2s3plend_re4s5trein_re4s5trict_su2b3liminabsti3nent_archi1é2pischien3dent_compé3tent_confi3dent_conni3vent_conti3nent_corpu3lent_diaphrag1medissi3dent_détri3ment_entre3gent_fichu3ment_immis4cent_indul3gent_mécon3tent_nutri3ment_o2g3nomo1niperma3nent_perti3nent_privatdo1ceprivatdo1zepu2g3nab1lerésur3gent_slalo2ment_sporu4lent_subli2ment_succu3lent_testa3ment_trucu3lent_turbu3lent_ventripo1teépi3s4co1pe", - 12 : "'in2é3luc1ta'in2é3nar1ra_bai2se3main_dé3s2a3tell_dé3s2as1t2r_dé3s2ou1f2r_in2é3luc1ta_in2é3nar1ra_ma2l1a2d1ro_ma2l1a2dres_pa2r1a2c2he_pa2r1a2c2hè1a2nesthé1siamalga2ment_contin3gent_monova3lent_munifi3cent_o1s2trictionomnipo3tent_polyva3lent_proémi3nent_préémi3nent_surémi3nent_équipo3tent_équiva4lent_", - 13 : "_ma2g3nici1de_ma2g3nificat_pro2g3na1t2h_syn2g3na1t2hacquies4cent_antifer3ment_intelli3gent_tempéra3ment_transpa3rent_", - 14 : "_chèvrefeuil2l_contremaî1t2rdiaphrag2ment_privatdo3cent_privatdo3zent_ventripo3tent_", + 2 : "1ç1j1q", + 3 : "1gè’â41zu1zo1zi1zè1zé1ze1za’y4_y41wu1wo1wi1we1wa1vy1vû1vu1vô1vo1vî1vi1vê1vè1vé1ve1vâ1va’û4_û4’u4_u41ba1bâ1ty1be1bé1bè1bê1tû1tu1tô1bi1bî1to1tî1ti1tê1tè1té1te1tà1tâ1ta1bo1bô1sy1sû1su1sœ1bu1bû1by2’21ca1câ1sô1ce1cé1cè1cê1so1sî1si1sê1sè1sé1se1sâ1sa1ry1rû1ru1rô1ro1rî1ri1rê1rè1ré1re1râ1ra’a41py1pû1pu1pô1po1pî1pi1pê1pè1pé1pe1pâ1pa_ô41ci1cî’ô4’o4_o41nyn1x1nû1nu1nœ1nô1no1nî1ni1nê1nè1né1ne1nâ1co1cô1na1my1mû1mu1mœ1mô1mo1mî1mi1cœ1mê1mè1mé1me1mâ1ma1ly1lû1lu1lô1lo1lî1li1lê1lè1cu1cû1cy1lé1d’1da1dâ1le1là1de1dé1dè1dê1lâ1la1ky1kû1ku1kô1ko1kî1ki1kê1kè1ké1ke1kâ1ka2jk_a4’î4_î4’i4_i41hy1hû1hu1hô1ho1hî1hi1hê1hè1hé1he1hâ1ha1gy1gû1gu1gô1go1gî1gi1gê_â41gé1ge1gâ1ga1fy1di1dî1fû1fu1fô1fo’e41fî1fi1fê1fè1do1dô1fé1fe1fâ1fa’è41du1dû1dy_è4’é4_é4’ê4_ê4_e41zy", + 4 : "1f2lab2h2ckg2ckp2cksd1s22ckb4ck_1c2k2chw4ze_4ne_2ckt1c2lad2hm1s22cht2chsch2r2chp4pe_1t2r1p2h_ph44ph_ph2l2phnph2r2phs1d2r2pht2chn4fe_2chm1p2l1p2r4me_1w2rch2l2chg1c2r2chb4ch_1f2r4le_4re_4de_f1s21k2r4we_1r2h_kh44kh_1k2h4ke_1c2h_ch44ge_4je_4se_1v2r_sh41s2h4ve_4sh_2shm2shr2shs4ce_il2l1b2r4be_1b2l4he_4te__th41t2h4th_g1s21g2r2thl1g2l2thm2thnth2r1g2n2ths2ckf", + 5 : "2ck3h4rhe_4kes_4wes_4res_4cke_éd2hi4vre_4jes_4tre_4zes_4ges_4des_i1oxy4gle_d1d2h_cul44gne_4fre_o1d2l_sch44nes_4les_4gre_1s2ch_réu24sch_4the_1g2hy4gue_2schs4cle_1g2ho1g2hi1g2he4ses_4tes_1g2ha4ves_4she_4che_4cre_4ces_t1t2l4hes_l1s2t4bes_4ble__con4xil3lco1ap4que_vil3l4fle_co1arco1exco1enco1auco1axco1ef4pes_co1é2per3h4mes__pe4r4bre_4pre_4phe_1p2né4ple__dé2smil3llil3lhil3l4dre_cil3lgil3l4fes_", + 6 : "’in1o2rcil4l4phre_4dres_l3lioni1algi2fent_émil4l4phle_rmil4l4ples_4phes_1p2neuextra14pres_y1asthpé2nul2xent__mé2sa2pent_y1algi4chre_1m2nès4bres_1p2tèr1p2tér4chle_’en1o24fles_oxy1a2avil4l_en1o24ques_uvil4lco1a2d4bles__in1a2’in1a21s2por_cons4_bi1u2’as2ta_in1e2’in1e2_in1é2’in1é21s2lov1s2lavco1acq2cent__as2ta_co1o24ches_hémi1é_in2er’in2er2s3homo1ioni_in1i2’in1i22went_4shes__ré1a2_ré1é2_ré1e2_ré2el_in1o2ucil4lco1accu2s3tr_ré2er_ré2èr4cles_2vent__ré1i22sent_2tent_2gent__ré1o24gues__re1s24sche_4thes_’en1a2e2s3ch4gres_1s2cop2lent__en1a22nent__in1u2’in1u24gnes_4cres_wa2g3n4fres_4tres_4gles_1octet_dé1o2_dé1io4thre__bi1au2jent__dé1a22zent_4vres_2dent_4ckes_4rhes__dy2s3sub1s22kent_2rent_2bent_3d2hal", + 7 : "a2g3nos3d2houdé3rent__dé3s2t_dé3s2pé3dent_2r3heur2r3hydri1s2tat2frent_io1a2ctla2w3re’in2u3l_in2u3l2crent_’in2uit_in2uit1s2caph1s2clér_ré2ussi2s3ché_re2s3t_re2s3s4sches_é3cent__seu2le’in2ond_in2ond’in2i3t_in2i3t’in2i3q_ré2aux_in2i3q2shent__di1alduni1a2x’in2ept2flent__in2eptuni1o2v2brent_co2nurb2chent_2quent_1s2perm1s2phèr_ma2c3kuevil4l1s2phér1s2piel1s2tein1s2tigm4chles_1s2tock1s2tyle1p2sych_pro1é2_ma2r1x_stil3lpusil3libril3lcyril3l_pré1s2thril3l_mé3san_pré1u2_mé2s1i_pré1o2_pré1i2piril3lpupil3lâ2ment__pré1e2_pré1é2_pré2au_pré1a22prent_2vrent_supero2_di1e2npoly1u2è2ment_poly1s2poly1o2poly1i2poly1è2poly1é2poly1e2poly1a2supe4r1capil3l2plent_armil5lsemil4lmil4letvacil4l_di2s3h3ph2tis2dlent_a2s3tro4phres_l2ment_i1è2drei1arthr2drent_4phles_supers2ô2ment_extra2i2phent_su3r2ah_su2r3hextra2chypo1u21alcool_per1u2_per1o2_per1i2_per1é2hypo1s2_per1a2hypo1o2hypo1i2hypo1é2_pen2tahypo1e2hypo1a2y1s2tome2s3cophyperu2hype4r1hypers2hypero21m2némohyperi21m2nési4chres_a1è2drehyperé2hypere2hypera2’oua1ou_oua1ouo1s2tomo1s2timo1s2tato1s2tasomni1s2tung2s3_dé3s2c2blent__bio1a2télé1e2télé1i22clent_télé1s22guent_1é2nerg2grent_2trent__dé2s1œ2t3heuro1è2dre2gnent_2glent_4thres__bi1a2t1é2drie_bi1a2c_i2g3nin3s2at_’i2g3ni2ckent__i2g3né’ab3réa’i2g3né_ab3réa_per1e2", + 8 : "_ma2l1ap_dy2s1u2_dy2s1o2_dy2s1i2n3s2ats__dy2s1a2distil3l1é2lectrinstil3l1s2trophe2n1i2vro2b3long1s2tomos_ae3s4ch’ae3s4ch_eu2r1a2ombud2s3’eu2r1a2_mono1s2_mono1u2o1s2téro_mono1o2eu1s2tato1s2tradfritil3la2l1algi_mono1i2_mono1é2_ovi1s2c’ovi1s2c_mono1e2_mono1a2co1assocpaléo1é2boutil3l1s2piros_ré2i3fi_pa2n1ischevil4l1s2patiaca3ou3t2_di1a2cé_para1s2_pa2r3héco1assur_su2b1é2tu2ment_su2ment__su2b1in_su2b3lupapil3lire3pent_’inte4r3_su2b1urab3sent__su2b1a2di2s3cophu2ment_fu2ment__intera2au2ment_as2ment_or2ment_’intera2_intere2pé1r2é2q_péri1os_péri1s2ja3cent__anti1a2_péri1u2’anti1a2er2ment__anti1e2ac3cent_ar2ment_to2ment_’intere2ré3gent_papil3leom2ment_’anti1e2photo1s2_anti1é2_interé2’anti1é2_anti1s2’anti1s23ph2talé’interé2ri2ment__interi2’interi2mi2ment_apo2s3tri2s3chio_pluri1ai2s3chia_intero2’intero2_inte4r3po1astre_interu2’interu2_inters2ai2ment_’inters2papil3la_tri1o2n_su2r1a2_pon2tet_pos2t3h_dés2a3mes3cent__pos2t3r_post1s2_tri1a2tta2ment__tri1a2nra2ment_is3cent__su2r1e2_tri1a2cfa2ment_da2ment__su3r2et_su2r1é2_mé2s1es_mé2g1oh_su2r1of_su2r1ox_re3s4ty_re3s4tu_ma2l1oc’a2g3nat_dé2s1é2_ma2l1entachy1a2_pud1d2ltchin3t2_re3s4trtran2s3p_bi2s1a2tran2s3hhémo1p2té3quent__a2g3nat_dé2s1i2télé1o2bo2g3nosiradio1a2télé1o2ppu2g3nacru3lent__sta2g3nre3lent__ré2a3le_di1a2mi", + 9 : "_ré2a3lit_dé3s2o3lthermo1s2_dé3s2ist_dé3s2i3rmit3tent_éni3tent__do3lent__ré2a3lisopu3lent__pa3tent__re2s3cap_la3tent__co2o3lie_re2s3cou_re2s3cri_ma2g3num_re2s3pir_dé3s2i3dco2g3nititran2s1a2tran2s1o2_dé3s2exu_re3s4tab_re3s4tag_dé3s2ert_re3s4tat_re3s4tén_re3s4tér_re3s4tim_re3s4tip_re3s4toc_re3s4toptran2s1u2_no2n1obs_ma2l1a2v_ma2l1int_prou3d2hpro2s3tativa3lent__ta3lent__rétro1a2_pro1s2cé_ma2l1o2dcci3dent__pa3rent__su2r1int_su2r1inf_su2r1i2mtor3rent_cur3rent__mé2s1u2stri3dent__dé3s2orm_su3r2ell_ar3dent__su3r2eaupru3dent__pré2a3lacla2ment__su3r2a3t_pos2t1o2_pos2t1inqua2ment_ter3gent_ser3gent_rai3ment_abî2ment_éci2ment_’ar3gent__ar3gent_rin3gent_tan3gent_éli2ment_ani2ment_’apo2s3ta_apo2s3tavélo1s2kivol2t1amp_dé3s2orp_dé2s1u2n_péri2s3ssesqui1a2’ana3s4trfir2ment_écu2ment_ser3pent_pré3sent_’ar3pent__ar3pent_’in1s2tab_in1s2tab’in2o3cul_in2o3culplu2ment_bou2ment_’in2exora_in2exora_su2b3linbru2ment__su3b2é3r_milli1am’in2effab_in2effab’in2augur_di1a2cid_in2augur_pa2n1opt’in2a3nit_in2a3nit1informat_ana3s4trvanil3lis_di1a2tom_su3b2altvanil3linstéréo1s2_pa2n1a2fo1s2tratuépi2s3cop_ci2s1alp1s2tructu1é2lément1é2driquepapil3lomllu2ment_", + 10 : "1s2tandardimmi3nent__émi3nent_imma3nent_réma3nent_épi3s4cope_in2i3miti’in2i3miti_res3sent_moye2n1â2gréti3cent__dé3s2a3crmon2t3réalinno3cent__mono1ï2dé_pa2n1a2méimpu3dent__pa2n1a2ra_amino1a2c’amino1a2c_pa2n1o2phinci3dent__ser3ment_appa3rent_déca3dent__dacryo1a2_dé3s2astr_re4s5trin_dé3s2é3gr_péri2s3ta_sar3ment__dé3s2oufr_re3s4tandchro2ment__com3ment__re2s3quil_re2s3pons_gem2ment__re2s3pect_re2s3ciso_dé3s2i3gn_dé3s2i3ligram2ment__dé3s2invo_re2s3cisitran3s2act’anti2enneindo3lent__sou3vent_indi3gent_dili3gent_flam2ment_impo3tent_inso3lent_esti2ment_’on3guent__on3guent_inti2ment__dé3s2o3défécu3lent_veni2ment_reli2ment_vidi2ment_chlo2r3é2tpu2g3nablechlo2r3a2cryth2ment_o2g3nomonicarê2ment__méta1s2ta_ma2l1aisé_macro1s2célo3quent_tran3s2ats_anti2enne", + 11 : "_contre1s2cperti3nent_conti3nent__ma2l1a2dro_in2é3lucta_psycho1a2n_dé3s2o3pil’in2é3luctaperma3nent__in2é3narratesta3ment__su2b3liminrésur3gent_’in2é3narraimmis4cent__pro2g3nathchien3dent_sporu4lent_dissi3dent_corpu3lent_archi1é2pissubli2ment_indul3gent_confi3dent__syn2g3nathtrucu3lent_détri3ment_nutri3ment_succu3lent_turbu3lent__pa2r1a2che_pa2r1a2chèfichu3ment_entre3gent_conni3vent_mécon3tent_compé3tent__re4s5trict_dé3s2i3nen_re2s3plend1a2nesthésislalo2ment__dé3s2ensib_re4s5trein_phalan3s2tabsti3nent_", + 12 : "polyva3lent_équiva4lent_monova3lent_amalga2ment_omnipo3tent__ma2l1a2dreséquipo3tent__dé3s2a3tellproémi3nent_contin3gent_munifi3cent__ma2g3nicideo1s2trictionsurémi3nent_préémi3nent__bai2se3main", + 13 : "acquies4cent_intelli3gent_tempéra3ment_transpa3rent__ma2g3nificatantifer3ment_", + 14 : "privatdo3cent_diaphrag2ment_privatdo3zent_ventripo3tent__contre3maître", 15 : "grandilo3quent_", - 16 : "_cont1re3maît1re", - 17 : "_chè2vre3feuil1le" + 16 : "_chè2vre3feuille" } }; \ No newline at end of file diff --git a/resources/viewer/hyphenate/patterns/grc.js b/resources/viewer/hyphenate/patterns/grc.js new file mode 100644 index 0000000000..dd409f6d7a --- /dev/null +++ b/resources/viewer/hyphenate/patterns/grc.js @@ -0,0 +1,28 @@ +// Hyphenation patterns for Ancient Greek. +// Created by Dimitrios Filippou with some ideas borrowed from +// Yannis Haralambous, Kostis Dryllerakis and Claudio Beccari. +// From http://tug.org/svn/texhyphen/branches/ptex/hyph-utf8/tex/generic/hyph-utf8/patterns/tex/hyph-grc.tex +// Converted by Pablo Rodríguez (hyphenator at pragmata dot tk) +Hyphenator.languages['grc'] = { + leftmin : 2, + rightmin : 2, + shortestPattern : 1, + longestPattern : 16, + specialChars : "αεηιουωϊϋἀἁἂἃἄἅἆἇἐἑἒἓἔἕἠἡἢἣἤἥἦἧἰἱἲἳἴἵἶἷὀὁὂὃὄὅὐὑὒὓὔὕὖὗὠὡὢὣὤὥὦὧὰὲὴὶὸὺὼᾀᾁᾂᾃᾄᾅᾆᾇᾐᾑᾒᾓᾔᾕᾖᾗᾠᾡᾢᾣᾤᾥᾦᾧᾲᾳᾴᾶᾷῂῃῄῆῇῒῖῗῢῦῧῲῳῴῶῷάέήίόύώΐΰάέήίόύώΐΰβγδζθκλμνξπρσϲςτφχψ'ʼ᾿ῤῥ’᾽", + patterns : { + 2 : "α1ε1η1ι1ο1υ1ω1ϊ1ϋ1ἀ1ἁ1ἂ1ἃ1ἄ1ἅ1ἆ1ἇ1ἐ1ἑ1ἒ1ἓ1ἔ1ἕ1ἠ1ἡ1ἢ1ἣ1ἤ1ἥ1ἦ1ἧ1ἰ1ἱ1ἲ1ἳ1ἴ1ἵ1ἶ1ἷ1ὀ1ὁ1ὂ1ὃ1ὄ1ὅ1ὐ1ὑ1ὒ1ὓ1ὔ1ὕ1ὖ1ὗ1ὠ1ὡ1ὢ1ὣ1ὤ1ὥ1ὦ1ὧ1ὰ1ὲ1ὴ1ὶ1ὸ1ὺ1ὼ1ᾀ1ᾁ1ᾂ1ᾃ1ᾄ1ᾅ1ᾆ1ᾇ1ᾐ1ᾑ1ᾒ1ᾓ1ᾔ1ᾕ1ᾖ1ᾗ1ᾠ1ᾡ1ᾢ1ᾣ1ᾤ1ᾥ1ᾦ1ᾧ1ᾲ1ᾳ1ᾴ1ᾶ1ᾷ1ῂ1ῃ1ῄ1ῆ1ῇ1ῒ1ῖ1ῗ1ῢ1ῦ1ῧ1ῲ1ῳ1ῴ1ῶ1ῷ1ά1έ1ή1ί1ό1ύ1ώ1ΐ1ΰ1ά1έ1ή1ί1ό1ύ1ώ1ΐ1ΰ14'4ʼ4᾿", + 3 : "α2ια2ία2ία2ὶα2ῖα2ἰα2ἴα2ἲα2ἶα2ἱα2ἵα2ἳα2ἷά3ιά3ιᾶ3ιἀ3ιἁ3ια2υα2ύα2ύα2ὺα2ῦα2ὐα2ὔα2ὒα2ὖα2ὑα2ὕα2ὓα2ὗά3υά3υᾶ3υἀ3υἁ3υε2ιε2ίε2ίε2ὶε2ῖε2ἰε2ἴε2ἲε2ἶε2ἱε2ἵε2ἳε2ἷέ3ιέ3ιἐ3ιἑ3ιε2υε2ύε2ύε2ὺε2ῦε2ὐε2ὔε2ὒε2ὖε2ὑε2ὕε2ὓε2ὗέ3υέ3υἑ3υἐ3υη2υη2ύη2ύη2ὺη2ῦη2ὐη2ὔη2ὒη2ὖη2ὑη2ὕη2ὓη2ὗή3υή3υῆ3υἠ3υἡ3υο2ιο2ίο2ίο2ὶο2ῖο2ἰο2ἴο2ἲο2ἶο2ἱο2ἵο2ἳο2ἷό3ιό3ιὀ3ιὁ3ιο2υο2ύο2ύο2ὺο2ῦο2ὐο2ὔο2ὒο2ὖο2ὑο2ὕο2ὓο2ὗό3υό3υὀ3υὁ3υυ2ιυ2ίυ2ίυ2ὶυ2ῖυ2ἰυ2ἴυ2ἲυ2ἶυ2ἱυ2ἵυ2ἳυ2ἷύ3ιύ3ιῦ3ιὐ3ιὑ3ι4β_4γ_4δ_4ζ_4θ_4κ_4λ_4μ_4ν_4ξ_4π_4ρ_4σ_4ϲ_4ς_4τ_4φ_4χ_4ψ_4β'4βʼ4β᾿4γ'4γʼ4γ᾿4δ'4δʼ4δ᾿4ζ'4ζʼ4ζ᾿4θ'4θʼ4θ᾿4κ'4κʼ4κ᾿4λ'4λʼ4λ᾿4μ'4μʼ4μ᾿4ν'4νʼ4ν᾿4ξ'4ξʼ4ξ᾿4π'4πʼ4π᾿4ρ'4ρʼ4ρ᾿4σ'4σʼ4σ᾿4ϲ'4ϲʼ4ϲ᾿4τ'4τʼ4τ᾿4φ'4φʼ4φ᾿4χ'4χʼ4χ᾿4ψ'4ψʼ4ψ᾿_β4_γ4_δ4_ζ4_θ4_κ4_λ4_μ4_ν4_ξ4_π4_ρ4_σ4_ϲ4_τ4_φ4_χ4_ψ4", + 4 : "ου3ιόυ4ιόυ4ιὀυ4ιὁυ4ιο3υίο3υίο3υῖ2β1β2γ1γ2δ1δ2ζ1ζ2θ1θ2κ1κ2λ1λ2μ1μ2ν1ν2π1π2ρ1ρ2ῤ1ῥ2σ1σ2ϲ1ϲ2τ1τ2φ1φ2χ1χ2ψ1ψ2β1γ2β1ζ2β1θ2β1κ2β1ξ2β1π2β1σ2β1ϲ2β1τ2β1φ2β1χ2β1ψ2γ1β2γ1ζ2γ1θ2γ1κ2γ1ξ2γ1π2γ1σ2γ1ϲ2γ1τ2γ1φ2γ1χ2γ1ψ2δ1β2δ1γ2δ1ζ2δ1θ2δ1κ2δ1λ2δ1ξ2δ1π2δ1σ2δ1ϲ2δ1τ2δ1φ2δ1χ2δ1ψ2ζ1β2ζ1γ2ζ1δ2ζ1θ2ζ1κ2ζ1λ2ζ1μ2ζ1ν2ζ1ξ2ζ1π2ζ1ρ2ζ1σ2ζ1ϲ2ζ1τ2ζ1φ2ζ1χ2ζ1ψ2θ1β2θ1γ2θ1δ2θ1ζ2θ1κ2θ1ξ2θ1π2θ1σ2θ1ϲ2θ1τ2θ1φ2θ1χ2θ1ψ2κ1β2κ1γ2κ1δ2κ1ζ2κ1θ2κ1ξ2κ1π2κ1σ2κ1ϲ2κ1φ2κ1χ2κ1ψ2λ1β2λ1γ2λ1δ2λ1ζ2λ1θ2λ1κ2λ1μ2λ1ν2λ1ξ2λ1π2λ1ρ2λ1σ2λ1ϲ2λ1τ2λ1φ2λ1χ2λ1ψ2μ1β2μ1γ2μ1δ2μ1ζ2μ1θ2μ1κ2μ1λ2μ1ξ2μ1π2μ1ρ2μ1σ2μ1ϲ2μ1τ2μ1φ2μ1χ2μ1ψ2ν1β2ν1γ2ν1δ2ν1ζ2ν1θ2ν1κ2ν1λ2ν1μ2ν1ξ2ν1π2ν1ρ2ν1σ2ν1ϲ2νς_2νϲ_2ν1τ2ν1φ2ν1χ2ν1ψ2ξ1β2ξ1γ2ξ1δ2ξ1ζ2ξ1θ2ξ1κ2ξ1λ2ξ1μ2ξ1ν2ξ1π2ξ1ρ2ξ1σ2ξ1ϲ2ξ1τ2ξ1φ2ξ1χ2ξ1ψ2π1β2π1γ2π1δ2π1ζ2π1θ2π1κ2π1ξ2π1σ2π1ϲ2π1φ2π1χ2π1ψ2ρ1β2ρ1γ2ρ1δ2ρ1ζ2ρ1θ2ρ1κ2ρ1λ2ρ1μ2ρ1ν2ρ1ξ2ρ1π2ρ1σ2ρ1ϲ2ρ1τ2ρ1φ2ρ1χ2ρ1ψ2σ1δ2ϲ1δ2σ1ζ2ϲ1ζ2σ1λ2ϲ1λ2σ1ν2ϲ1ν2σ1ξ2ϲ1ξ2σ1ρ2ϲ1ρ2σ1ψ2ϲ1ψ2τ1β2τ1γ2τ1δ2τ1ζ2τ1θ2τ1κ2τ1ξ2τ1π2τ1σ2τ1ϲ2τ1φ2τ1χ2τ1ψ2φ1β2φ1γ2φ1δ2φ1ζ2φ1κ2φ1ξ2φ1π2φ1σ2φ1ϲ2φ1τ2φ1χ2φ1ψ2χ1β2χ1γ2χ1δ2χ1ζ2χ1κ2χ1ξ2χ1π2χ1σ2χ1ϲ2χ1τ2χ1φ2χ1ψ2ψ1β2ψ1γ2ψ1δ2ψ1ζ2ψ1θ2ψ1κ2ψ1λ2ψ1μ2ψ1ν2ψ1ξ2ψ1π2ψ1ρ2ψ1σ2ψ1ϲ2ψ1τ2ψ1φ2ψ1χ4βδ'4βδ’4βδʼ4βδ᾽4βδ᾿4βλ'4βλ’4βλʼ4βλ᾽4βλ᾿4βμ'4βμ’4βμʼ4βμ᾽4βμ᾿4βν'4βν’4βνʼ4βν᾽4βν᾿4βρ'4βρ’4βρʼ4βρ᾽4βρ᾿4γδ'4γδ’4γδʼ4γδ᾽4γδ᾿4γλ'4γλ’4γλʼ4γλ᾽4γλ᾿4γμ'4γμ’4γμʼ4γμ᾽4γμ᾿4γν'4γν’4γνʼ4γν᾽4γν᾿4γρ'4γρ’4γρʼ4γρ᾽4γρ᾿4δμ'4δμ’4δμʼ4δμ᾽4δμ᾿4δν'4δν’4δνʼ4δν᾽4δν᾿4δρ'4δρ’4δρʼ4δρ᾽4δρ᾿4ζβ'4ζβ’4ζβʼ4ζβ᾽4ζβ᾿4θλ'4θλ’4θλʼ4θλ᾽4θλ᾿4λμ'4λμ’4λμʼ4λμ᾽4λμ᾿4θν'4θν’4θνʼ4θν᾽4θν᾿4θρ'4θρ’4θρʼ4θρ᾽4θρ᾿4κλ'4κλ’4κλʼ4κλ᾽4κλ᾿4κμ'4κμ’4κμʼ4κμ᾽4κμ᾿4κν'4κν’4κνʼ4κν᾽4κν᾿4κρ'4κρ’4κρʼ4κρ᾽4κρ᾿4κτ'4κτ’4κτʼ4κτ᾽4κτ᾿4μν'4μν’4μνʼ4μν᾽4μν᾿4πλ'4πλ’4πλʼ4πλ᾽4πλ᾿4πμ'4πμ’4πμʼ4πμ᾽4πμ᾿4πν'4πν’4πνʼ4πν᾽4πν᾿4πρ'4πρ’4πρʼ4πρ᾽4πρ᾿4πτ'4πτ’4πτʼ4πτ᾽4πτ᾿4σβ'4σβ’4σβʼ4σβ᾽4σβ᾿4ϲβ'4ϲβ’4ϲβʼ4ϲβ᾽4ϲβ᾿4σγ'4σγ’4σγʼ4σγ᾽4σγ᾿4ϲγ'4ϲγ’4ϲγʼ4ϲγ᾽4ϲγ᾿4σδ'4σδ’4σδʼ4σδ᾽4σδ᾿4ϲδ'4ϲδ’4ϲδʼ4ϲδ᾽4ϲδ᾿4σθ'4σθ’4σθʼ4σθ᾽4σθ᾿4ϲθ'4ϲθ’4ϲθʼ4ϲθ᾽4ϲθ᾿4σκ'4σκ’4σκʼ4σκ᾽4σκ᾿4ϲκ'4ϲκ’4ϲκʼ4ϲκ᾽4ϲκ᾿4σμ'4σμ’4σμʼ4σμ᾽4σμ᾿4ϲμ'4ϲμ’4ϲμʼ4ϲμ᾽4ϲμ᾿4σπ'4σπ’4σπʼ4σπ᾽4σπ᾿4ϲπ'4ϲπ’4ϲπʼ4ϲπ᾽4ϲπ᾿4στ'4στ’4στʼ4στ᾽4στ᾿4ϲτ'4ϲτ’4ϲτʼ4ϲτ᾽4ϲτ᾿4σφ'4σφ’4σφʼ4σφ᾽4σφ᾿4ϲφ'4ϲφ’4ϲφʼ4ϲφ᾽4ϲφ᾿4σχ'4σχ’4σχʼ4σχ᾽4σχ᾿4ϲχ'4ϲχ’4ϲχʼ4ϲχ᾽4ϲχ᾿4φθ'4φθ’4φθʼ4φθ᾽4φθ᾿4φλ'4φλ’4φλʼ4φλ᾽4φλ᾿4φμ'4φμ’4φμʼ4φμ᾽4φμ᾿4φν'4φν’4φνʼ4φν᾽4φν᾿4φρ'4φρ’4φρʼ4φρ᾽4φρ᾿4χθ'4χθ’4χθʼ4χθ᾽4χθ᾿4χλ'4χλ’4χλʼ4χλ᾽4χλ᾿4χμ'4χμ’4χμʼ4χμ᾽4χμ᾿4χν'4χν’4χνʼ4χν᾽4χν᾿4χρ'4χρ’4χρʼ4χρ᾽4χρ᾿ἐ2ν1ἔ2ν1ἐ2ξ1ἔ2ξ1ἐ2σ1ἐ2ϲ1", + 5 : "ἀ2ν1ύἀ2ν1ύἀ2ν1υεἰ2σ1εἰ2ϲ1εἴ2σ1εἴ2ϲ1ἐ2κ1λἐ2κ1μἔ2κ1μἐ2κ1νἔ2κ1νἐ2κ1ρἔ2κ1ρἐ3νηέἐ3νηέἐ3ν2ίἐ3ν2ίἐ3ν2ιἔ3ν2ιἔ3ν2ωἐ3σ2θἐ3ϲ2θἐ3σ2κἐ3ϲ2κἐ3σ2τἐ3ϲ2τἐ3σ2υἐ3ϲ2υἐ3σ2ύἐ3σ2ύἐ3ϲ2ύἐ3ϲ2ύἐ3σ2χἐ3ϲ2χἐ3σ2ώἐ3σ2ώἐ3ϲ2ώἐ3ϲ2ώἐ3σ2ωἐ3ϲ2ω", + 6 : "ἁλό2σ1ἁλό2σ1ἁλό2ϲ1ἁλό2ϲ1ἁλο2σ1ἁλο2ϲ1ἀ2ν1άρἀ2ν1άρἀ2ν1αρἄ2ν1αρἀ2ν1έκἀ2ν1έκἀ2ν1εκἀ2ν1ένἀ2ν1ένἀ2ν1ενἀ2ν1επἀ2ν1έφἀ2ν1έφἀ2ν1εφἀ2ν1ήδἀ2ν1ήδἀ2ν1ηδἀ2ν1ήμἀ2ν1ήμἀ2ν1ημἀ2ν1ίκἀ2ν1ίκἀ2ν1ικἄ2ν1ικἀ2ν1ίλἀ2ν1ίλἀ2ν1ιλἀ2ν1ισἀ2ν1ιϲἄ2ν1ισἄ2ν1ιϲἀ2ν1ίσἀ2ν1ίσἀ2ν1ίϲἀ2ν1ίϲἄ2ν1ιχἀ2ν1ίχἀ2ν1ίχἀ2ν1ίψἀ2ν1ίψἀ2ν1ιψἄ2ν1οζἀ2ν1όζἀ2ν1όζἀ2ν1όλἀ2ν1όλἀ2ν1ολἄ2ν1ολἀ2ν1όνἀ2ν1όνἀ2ν1ονἄ2ν1οπἀ2ν1όπἀ2ν1όπἀ2ν1όρἀ2ν1όρἀ2ν1ορἄ2ν1ορἀ2ν1οψἄ2ν1οψἀ2ν1όψἀ2ν1όψἀ3ν2υμἀ3ν2ύσἀ3ν2ύσἀ3ν2ύϲἀ3ν2ύϲἀ3ν2υσἀ3ν2υϲἄ2ν1ῳδἀ2ν1ῴδἀ2ν1ώιἀ2ν1ώιἀ2ν1ωίἀ2ν1ωίἀ2ν1ώλἀ2ν1ώλἀ2ν1ωλἀ2ν1ώμἀ2ν1ώμἀ2ν1ωμἀ2ν1ώνἀ2ν1ώνἀ2ν1ωνἀ2ν1ωρἄ2ν1ωρἀ2ν1ώρἀ2ν1ώρἁπα2ξ1ἁπε2ρ1ἀσύ2ν1ἀσύ2ν1ἀϲύ2ν1ἀϲύ2ν1ἀσυ2ν1ἀϲυ2ν1ἀξύ2ν1ἀξύ2ν1ἀξυ2ν1ἀω2σ1φἀω2ϲ1φ_δύ2σ1_δύ2σ1_δύ2ϲ1_δύ2ϲ1_δυ2σ1_δυ2ϲ1δύ3σ2ῃδύ3σ2ῃδύ3ϲ2ῃδύ3ϲ2ῃεἴσει_εἴϲει_εἴ3σ2ωεἴ3ϲ2ωἐ3κ2λῄἐ3κ2λύἐ3κ2λύἐ3κ2νυἐ2κ1τεἐ2κ1τέἐ2κ1τέἐ2κ1τιἔ2κ1τιἐ2κ1τίἐ2κ1τίἐ2κ1τόἐ2κ1τόἐ2κ1τοἔ2κ1τοἐ2κ1τρἐ2κ1τυἔ3ν2ατἐ3ν2άτἐ3ν2άτἐ3ν2εόἐ3ν2εόἐ3ν2εὸἐ3ν2εοἐ3ν2εῶἐ3ν2εάἐ3ν2εάἐ3ν2εὰἐ3ν2εᾶἔ3ν2ησἔ3ν2ηϲἐ3ν2ήσἐ3ν2ήσἐ3ν2ήϲἐ3ν2ήϲἐ3ν2ηήἐ3ν2ηήἐ3ν2ηὴἐ3ν2ηοἐ3ν2ηῶἐ4ν3ίζἐ4ν3ίζἐ4ν3ίηἐ4ν3ίηἐ4ν3ίψἐ4ν3ίψἔ3ν2ῃ_ἔ3ν2η_ἔ3ν2υξἐ3ν2υξἐ3ν2ύξἐ3ν2ύξἐ3ν2ύσἐ3ν2ύσἐ3ν2ύϲἐ3ν2ύϲἐ3ν2υσἐ3ν2υϲἐ3ν2υώἐ3ν2υώἐ3ν2υὼἐ3ξ2ήρἐ3ξ2ήρἐ3ξ2ηρἐ3ξ2υρἐ3ξ2ύρἐ3ξ2ύρἔ3ξ2υσἔ3ξ2υϲἔ3ξ2ω_ἐπε2ξ1ἐ3σ2άωἐ3σ2άωἐ3ϲ2άωἐ3ϲ2άωἐ3σ2ημἐ3ϲ2ημἐ3σ2ιγἐ3ϲ2ιγἐ4σ3κάἐ4σ3κάἐ4ϲ3κάἐ4ϲ3κάἐ4σ3καἐ4ϲ3καἐ3σ2όμἐ3σ2όμἐ3ϲ2όμἐ3ϲ2όμἐ3σ2ομἐ3ϲ2ομἐ3σ2οῦἐ3ϲ2οῦἐ3σ2ούἐ3σ2ούἐ3ϲ2ούἐ3ϲ2ούἐ3σ2ουἐ3ϲ2ουἐσύ2ν1ἐσύ2ν1ἐϲύ2ν1ἐϲύ2ν1ἐσυ2ν1ἐϲυ2ν1ἐ4σ3χέἐ4σ3χέἐ4ϲ3χέἐ4ϲ3χέἔ2σ1οπἔ2ϲ1οπεὐε2ξ1ἐω2σ1φἐω2ϲ1φἤ2ν1οπἠ2ν1όπἠ2ν1όποἱό2σ1οἱό2σ1οἱό2ϲ1οἱό2ϲ1ὁπω2σ1ὁπω2ϲ1_πα2ν1_πά2ν1_πά2ν1_πάνα__πάνα__συ2ν1_ϲυ2ν1_σύ2ν1_σύ2ν1_ϲύ2ν1_ϲύ2ν1ὑο2σ1κὑο2ϲ1κὑπε2ν1ὑπε2ξ1ὑπε2ρ1ὑπέ2ρ1ὑπέ2ρ1ὕ2σ1τρὕ2ϲ1τρὑ2σ1τρὑ2ϲ1τρὥ2σ1τεὥ2ϲ1τε", + 7 : "ἀδιέ2ξ1ἀδιέ2ξ1ἀδιε2ξ1ἀδυ2σ1ώἀδυ2σ1ώἀδυ2ϲ1ώἀδυ2ϲ1ώἀδυ2σ1ωἀδυ2ϲ1ωἀ2ν1αγοἀ2ν1αγῆἄ2ν1αγνἀ2ν1άγνἀ2ν1άγνἀ2ν1αγνἄ2ν1αθλἀ2ν1άθλἀ2ν1άθλἀ2ν1αίδἀ2ν1αίδἀ2ν1αιδἄ2ν1αιμἀ2ν1αίμἀ2ν1αίμἀ2ν1αιμἀ2ν1αίτἀ2ν1αίτἀ2ν1αιτἀ2ν1αλγἀ2ν1αλδἀ2ν1άλθἀ2ν1άλθἀ2ν1αλθἀ2ν1αλκἄ2ν1αλκἀ2ν1άλκἀ2ν1άλκἀ2ν1άλλἀ2ν1άλλἀ2ν1αλλἄ2ν1αλμἀ2ν1άλμἀ2ν1άλμἀ2ν1αλμἄ2ν1αλοἄ2ν1αλτἀ2ν1άλτἀ2ν1άλτἀ2ν1αμπἀ2ν1άμπἀ2ν1άμπἀ2ν1αμφἄ2ν1ανδἀ2ν1άνδἀ2ν1άνδἀ2ν1ανθἀ2ν1αράἀ2ν1αράἀ2ν1αραἀ3ν2αρπἀ3ν2άρρἀ3ν2άρρἀ3ν2αρρἀ3ν2αρτἀ2ν1άτωἀ2ν1άτωἄ2ν1ατεἀ2ν1άττἀ2ν1άττἀ2ν1αττἀ2ν1αύγἀ2ν1αύγἀ2ν1αυγἀ2ν1αύδἀ2ν1αύδἀ2ν1αυδἄ2ν1αυδἄ2ν1αυλἀ2ν1αύλἀ2ν1αύλἀ2ν1αύξἀ2ν1αύξἀ2ν1αυξἀ2ν1αύχἀ2ν1αύχἀ2ν1αυχἀ2ν1αφήἀ2ν1αφήἀ2ν1αφὴἀ2ν1αφῆἀ2ν1αφέἀ2ν1αφέἀ2ν1αφὲἄ2ν1αφρἀ2ν1άφρἀ2ν1άφρἀ2ν1έγγἀ2ν1έγγἀ2ν1εγγἀ2ν1εγκἀ2ν1έγκἀ2ν1έγκἀ2ν1εγχἀ2ν1εδάἀ2ν1εδάἀ2ν1εδαἀ2ν1εέρἀ2ν1εέρἀ2ν1εερἀ2ν1έθιἀ2ν1έθιἀ2ν1εθίἀ2ν1εθίἀ3ν2έκαἀ3ν2έκαἀ3ν2εκτἀ2ν1έλλἀ2ν1έλλἀ2ν1έμβἀ2ν1έμβἀ2ν1εμβἀ2ν1έμπἀ2ν1έμπἀ2ν1εμπἀ2ν1έμφἀ2ν1έμφἀ2ν1εμφἀ3ν2ενήἀ3ν2ενήἀ2ν1έορἀ2ν1έορἀ2ν1εόρἀ2ν1εόρἀ3ν2επνἀ3ν2επτἀ2ν1εργἄ2ν1εργἀ2ν1έργἀ2ν1έργἀ2ν1ερίἀ2ν1ερίἀ2ν1εριἀ2ν1ετυἀ2ν1έτυἀ2ν1έτυἀ2ν1ετύἀ2ν1ετύἀ2ν1εύθἀ2ν1εύθἀ2ν1ευθἄ2ν1ευκἀ2ν1εύκἀ2ν1εύκἀ2ν1ευλἀ2ν1εύχἀ2ν1εύχἀ2ν1ευχἀ2ν1εύξἀ2ν1εύξἀ2ν1ευξἀ2ν1ηυξἀ2ν1ηῦγἀ2ν1ηυγἀ2ν1εχέἀ2ν1εχέἀ2ν1εχεἀ2ν1έψαἀ2ν1έψαἀ2ν1εψάἀ2ν1εψάἀ2ν1ήκοἀ2ν1ήκοἀ2ν1ηκόἀ2ν1ηκόἀ2ν1ηκοἀ2ν1ηλήἀ2ν1ηλήἀ2ν1ηλὴἀ2ν1ηλῆἀ2ν1ηλέἀ2ν1ηλέἀ2ν1ηλὲἀ2ν1ηλῶἀ2ν1ήνυἀ2ν1ήνυἀ2ν1ηνύἀ2ν1ηνύἀ2ν1ήριἀ2ν1ήριἀ2ν1ηρίἀ2ν1ηρίἀ2ν1ήσσἀ2ν1ήσσἀ2ν1ήϲϲἀ2ν1ήϲϲἀ2ν1ησσἀ2ν1ηϲϲἀ2ν1ήττἀ2ν1ήττἀ2ν1ηττἀ2ν1ήφαἀ2ν1ήφαἀ2ν1ηφαἀ2ν1ίατἀ2ν1ίατἀ2ν1ιάτἀ2ν1ιάτἀ2ν1ίερἀ2ν1ίερἀ2ν1ιέρἀ2ν1ιέρἀ3ν2ίκηἀ3ν2ίκηἀ3ν2ικήἀ3ν2ικήἀ2ν1ίουἀ2ν1ίουἀ2ν1ιούἀ2ν1ιούἄ2ν1ιππἀ2ν1ίππἀ2ν1ίππἀ3ν2ίστἀ3ν2ίστἀ3ν2ίϲτἀ3ν2ίϲτἀ3ν2ιστἀ3ν2ιϲτἀ3ν2ίσχἀ3ν2ίσχἀ3ν2ίϲχἀ3ν2ίϲχἀ2ν1όδεἀ2ν1όδεἀ2ν1οδέἀ2ν1οδέἄ2ν1οικἀ2ν1οίκἀ2ν1οίκἀ2ν1οινἄ2ν1οινἀ2ν1οίνἀ2ν1οίνἀ3ν2ολκἀ3ν2ολοἀ2ν1όμοἀ2ν1όμοἀ2ν1ομόἀ2ν1ομόἀ2ν1ομοἄ3ν2ορθἀ3ν2όρθἀ3ν2όρθἀ3ν2ορτἀ3ν2ορύἀ3ν2ορύἀ2ν1όσιἀ2ν1όσιἀ2ν1όϲιἀ2ν1όϲιἀ2ν1οσίἀ2ν1οσίἀ2ν1οϲίἀ2ν1οϲίἀ2ν1οσιἀ2ν1οϲιἄ2ν1οσμἄ2ν1οϲμἀ2ν1όσμἀ2ν1όσμἀ2ν1όϲμἀ2ν1όϲμἀ2ν1ούαἀ2ν1ούαἀ2ν1ουάἀ2ν1ουάἀ2ν1ούτἀ2ν1ούτἀ2ν1ουτἀ2ν1οφθἄ2ν1οχλἀ2ν1όχλἀ2ν1όχλἀντε2κ1ἀντε2ν1ἀντε2ξ1ἀ2ν1ώδυἀ2ν1ώδυἀ2ν1ωδύἀ2ν1ωδύἄ2ν1ωτοἀ2ν1ώτοἀ2ν1ώτοἀ2ν1ώχυἀ2ν1ώχυἀ2ν1ωχύἀ2ν1ωχύἀπε2κ1λἀπρό2σ1ἀπρό2σ1ἀπρό2ϲ1ἀπρό2ϲ1ἀπρο2σ1ἀπρο2ϲ1ἁρπα2ξ1αὐτε2ξ1_δα2σ1π_δα2ϲ1π_διέ2ξ1_διέ2ξ1_διε2ξ1_δί2σ1α_δί2σ1α_δί2ϲ1α_δί2ϲ1α_δι2σ1ά_δι2σ1ά_δι2ϲ1ά_δι2ϲ1ά_δί2σ1η_δί2σ1η_δί2ϲ1η_δί2ϲ1η_δι2σ1ή_δι2σ1ή_δι2ϲ1ή_δι2ϲ1ή_δί2σ1ε_δί2σ1ε_δί2ϲ1ε_δί2ϲ1ε_δι2σ1ε_δι2ϲ1ε_δι2σ1θ_δι2ϲ1θδύ3σ2ω_δύ3σ2ω_δύ3ϲ2ω_δύ3ϲ2ω_δύ3σ2ονδύ3σ2ονδύ3ϲ2ονδύ3ϲ2ονδυ3σ2όνδυ3σ2όνδυ3ϲ2όνδυ3ϲ2όνδύ3σ2ασδύ3σ2ασδύ3ϲ2αϲδύ3ϲ2αϲδυ3σ2άσδυ3σ2άσδυ3ϲ2άϲδυ3ϲ2άϲδύ3σ2εωδύ3σ2εωδύ3ϲ2εωδύ3ϲ2εωδύ3σ2ι_δύ3σ2ι_δύ3ϲ2ι_δύ3ϲ2ι_ἐδυ2σ1τἐδυ2ϲ1τεἰ2ν1όδεἰ2ν1όδεἰ2ν1οδεἰ3σ2ί_εἰ3σ2ί_εἰ3ϲ2ί_εἰ3ϲ2ί_εἰ3σ2ὶ_εἰ3ϲ2ὶ_εἰ3σ2ι_εἰ3ϲ2ι_εἴ3σ2ομεἴ3ϲ2ομεἴ3σ2ῃ_εἴ3ϲ2ῃ_εἰ3σ2όμεἰ3σ2όμεἰ3ϲ2όμεἰ3ϲ2όμἐ3κ2λάζἐ3κ2λάζἐ3κ2λάγἐ3κ2λάγἐ3κ2λάοἐ3κ2λάοἐ3κ2λάσἐ3κ2λάσἐ3κ2λάϲἐ3κ2λάϲἐ3κ2λαίἐ3κ2λαίἐ3κ2λαύἐ3κ2λαύἐ3κ2λείἐ3κ2λείἐ3κ2λάπἐ3κ2λάπἐ3κ2λαπἐ3κ2λέφἐ3κ2λέφἐ3κ2λεφἐ3κ2λήρἐ3κ2λήρἐ3κ2ληρἐ3κ2λίνἐ3κ2λίνἐ3κ2λινἐ3κ2λόμἐ3κ2λόμἔ2κ1λειἔ2κ1λυσἔ2κ1λυϲἔ3κ2ναιἐ3κ2ναίἐ3κ2ναίἔ3κ2νησἔ3κ2νηϲἐ3κ2νήσἐ3κ2νήσἐ3κ2νήϲἐ3κ2νήϲἐ3κ2ράδἐ3κ2ράδἐ3κ2ραδἔ3κ2ραζἐ3κ2ράζἐ3κ2ράζἔ3κ2ραγἐ3κ2ράγἐ3κ2ράγἐ3κ2ράτἐ3κ2ράτἐ3κ2ρατἔ3κ2ραιἐ3κ2ραίἐ3κ2ραίἔ3κ2ρανἐ3κ2ράνἐ3κ2ράνἐ3κ2ρήηἐ3κ2ρήηἐ3κ2ράαἐ3κ2ράαἐ3κ2ραάἐ3κ2ραάἐ3κ2ράθἐ3κ2ράθἐ3κ2ραθἔ3κ2ρεκἐ3κ2ρέκἐ3κ2ρέκἔ3κ2ρεξἐ3κ2ρέξἐ3κ2ρέξἐ3κ2ρέμἐ3κ2ρέμἐ3κ2ρεμἐ3κ2ρήμἐ3κ2ρήμἐ3κ2ρημἔ3κ2ρινἐ3κ2ρίνἐ3κ2ρίνἐ3κ2ρίθἐ3κ2ρίθἐ3κ2ρότἐ3κ2ρότἐ3κ2ροτἔ3κ2ρουἐ3κ2ρούἐ3κ2ρούἔ3κ2ρυπἐ3κ2ρύπἐ3κ2ρύπἔ3κ2ρυψἐ3κ2ρύψἐ3κ2ρύψἐ3κ2ρύβἐ3κ2ρύβἐ3κ2ρύφἐ3κ2ρύφἐ3κ2ρυσἐ3κ2ρυϲἔ3κ2ρωζἐ3κ2ρώζἐ3κ2ρώζἔ3κ2ρωξἐ3κ2ρώξἐ3κ2ρώξἐ2κ1ταθἐ2κ1τανἐ2κ1ταρἐ2κ1τάσἐ2κ1τάσἐ2κ1τάϲἐ2κ1τάϲἐ2κ1τήκἐ2κ1τήκἔ3κ2τιζἐ3κ2τίζἐ3κ2τίζἔ3ν2ασσἔ3ν2αϲϲἐ3ν2άσσἐ3ν2άσσἐ3ν2άϲϲἐ3ν2άϲϲἐ3ν2άσθἐ3ν2άσθἐ3ν2άϲθἐ3ν2άϲθἐ3ν2ασθἐ3ν2αϲθἐ3ν2έγκἐ3ν2έγκἐ3ν2εγκἔ3ν2εικἐ3ν2εῖκἐ3ν2εικἐ3ν2είκἐ3ν2είκἔ3ν2ειμἐ3ν2είμἐ3ν2είμἐ3ν2ενήἐ3ν2ενήἔ3ν2ευσἔ3ν2ευϲἐ3ν2εύσἐ3ν2εύσἐ3ν2εύϲἐ3ν2εύϲἐ3ν2έχθἐ3ν2έχθἐ3ν2εχθἔ3ν2ην_ἐ3ν2ηείἐ3ν2ηείἐ3ν2ήνοἐ3ν2ήνοἐ4ν3ιαύἐ4ν3ιαύἐ4ν3ιδρἐ4ν3ίδρἐ4ν3ίδρἐ4ν3ίω_ἐ4ν3ίω_ἐ4ν3ιππἐ4ν3ίππἐ4ν3ίππἐ4ν3ίπτἐ4ν3ίπτἐ4ν3ίσσἐ4ν3ίσσἐ4ν3ίϲϲἐ4ν3ίϲϲἐ4ν3ίστἐ4ν3ίστἐ4ν3ίϲτἐ4ν3ίϲτἐ4ν3ιστἐ4ν3ιϲτἐ4ν3ισχἐ4ν3ιϲχἐ4ν3ίσχἐ4ν3ίσχἐ4ν3ίϲχἐ4ν3ίϲχἔ3ν2ος_ἔ3ν2οϲ_ἔ3ν2οσ_ἔ3ν2ου_ἔ3ν2ον_ἔ3ν2οι_ἔ3ν2ης_ἔ3ν2ηϲ_ἔ3ν2ησ_ἔ3ν2οσιἔ3ν2οϲιἐ3ν2όσεἐ3ν2όσεἐ3ν2όϲεἐ3ν2όϲεἐ3ν2υάλἐ3ν2υάλἐ3ν2υαλἐ3ν2υόοἐ3ν2υόοἐπεί2σ1ἐπεί2σ1ἐπεί2ϲ1ἐπεί2ϲ1ἐπει2σ1ἐπει2ϲ1ἐπε2σ1βἐπε2ϲ1βἐ4σ3θέσἐ4σ3θέσἐ4ϲ3θέϲἐ4ϲ3θέϲεὐε3ξ2ίεὐε3ξ2ίεὐε3ξ2ιεὐσύ2ν1εὐσύ2ν1εὐϲύ2ν1εὐϲύ2ν1εὐσυ2ν1εὐϲυ2ν1εὐξύ2ν1εὐξύ2ν1εὐξυ2ν1ἤ2ν1οψ__μυ2σ1π_μυ2ϲ1π_ξυ2ν1ε_ξυ2ν1έ_ξυ2ν1έ_ξύ2ν1ε_ξύ2ν1ε_ξύ2ν1ι_ξύ2ν1ι_ξυ2ν1ί_ξυ2ν1ίὅ2σ1γε_ὅ2ϲ1γε_ὅ2σ1τιςὅ2ϲ1τιϲ_προ2σ1_προ2ϲ1_τρι2σ1_τρι2ϲ1ὑπεί2σ1ὑπεί2σ1ὑπεί2ϲ1ὑπεί2ϲ1ὑπει2σ1ὑπει2ϲ1ὑπε2κ1τὑπε3ρ2ῶὑπε3ρ2ώὑπε3ρ2ώὑπε3ρ2ω_φω2σ1φ_φω2ϲ1φὡ2σ1εί_ὡ2σ1εί_ὡ2ϲ1εί_ὡ2ϲ1εί_ὡ2σ1εὶ_ὡ2ϲ1εὶ_", + 8 : "ἀγω2ν1άρἀγω2ν1άρἀγω2ν1αρἀμφί2σ1βἀμφί2σ1βἀμφί2ϲ1βἀμφί2ϲ1βἀμφι2σ1βἀμφι2ϲ1βἀμφί2σ1ωἀμφί2σ1ωἀμφί2ϲ1ωἀμφί2ϲ1ωἀμφι2σ1ώἀμφι2σ1ώἀμφι2ϲ1ώἀμφι2ϲ1ώἀ2ν1αγῆ_ἀ2ν1άγκυἀ2ν1άγκυἀ2ν1αγκύἀ2ν1αγκύἀ3ν2αγνάἀ3ν2αγνάἀ3ν2αγνωἀ3ν2άγνωἀ3ν2άγνωἀ3ν2αγνώἀ3ν2αγνώἀ2ν1αγρίἀ2ν1αγρίἀ2ν1αγρῖἀ2ν1αγριἀ2ν1άγωγἀ2ν1άγωγἀ2ν1αγώγἀ2ν1αγώγἀ2ν1άδελἀ2ν1άδελἀ2ν1αδέλἀ2ν1αδέλἀ2ν1άελπἀ2ν1άελπἀ2ν1αέλπἀ2ν1αέλπἀ2ν1αίσθἀ2ν1αίσθἀ2ν1αίϲθἀ2ν1αίϲθἀ2ν1αισθἀ2ν1αιϲθἀ2ν1αισιἀ2ν1αιϲιἀ2ν1αισίἀ2ν1αισίἀ2ν1αιϲίἀ2ν1αιϲίἀ2ν1αίσχἀ2ν1αίσχἀ2ν1αίϲχἀ2ν1αίϲχἀ2ν1αισχἀ2ν1αιϲχἀ2ν1άκανἀ2ν1άκανἀ2ν1ακάνἀ2ν1ακάνἀ3ν2αλδαἀ2ν1αλήθἀ2ν1αλήθἀ2ν1αληθἀ2ν1άλιπἀ2ν1άλιπἀ2ν1αλίπἀ2ν1αλίπἀ3ν2άλλοἀ3ν2άλλοἀ3ν2άλλεἀ3ν2άλλεἀ2ν1άλουἀ2ν1άλουἀ2ν1άλῳ_ἀ2ν1άλῳ_ἄ2ν1αλε_ἀ2ν1άλοιἀ2ν1άλοιἀ2ν1αμάξἀ2ν1αμάξἀ2ν1αμαξἀ3ν2ανθέἀ3ν2ανθέἀ2ν1άνιοἀ2ν1άνιοἀ2ν1ανίοἀ2ν1ανίοἀ2ν1ανίωἀ2ν1ανίωἀ2ν1αντίἀ2ν1αντίἀ2ν1αντιἀνα2ξ1αγἀνά2ξ1ανἀνά2ξ1ανἀνα2ξ1άνἀνα2ξ1άνἀνα2ξ1ανἀνά2ξ1αρἀνά2ξ1αρἀνα2ξ1άρἀνα2ξ1άρἀνά2ξ1ιπἀνά2ξ1ιπἀνα2ξ1ίπἀνα2ξ1ίπἀ2ν1άξιοἀ2ν1άξιοἀ2ν1αξίοἀ2ν1αξίοἀ2ν1αξίωἀ2ν1αξίωἀ2ν1αξίαἀ2ν1αξίαἀ2ν1αξῖαἀ2ν1απόβἀ2ν1απόβἀ2ν1αποβἀ2ν1απόγἀ2ν1απόγἀ2ν1απογἀ2ν1απόνἀ2ν1απόνἀ2ν1απονἀ2ν1απόπἀ2ν1απόπἀ2ν1αποπἀ2ν1απόσἀ2ν1απόσἀ2ν1απόϲἀ2ν1απόϲἀ2ν1αποσἀ2ν1αποϲἀ3ν2αρίτἀ3ν2αρίτἀ3ν2αρῖτἀ3ν2αριτἀ3ν2αρύτἀ3ν2αρύτἀ2ν1άσκηἀ2ν1άσκηἀ2ν1άϲκηἀ2ν1άϲκηἀ2ν1ασκήἀ2ν1ασκήἀ2ν1αϲκήἀ2ν1αϲκήἄ2ν1ασπιἄ2ν1αϲπιἀ2ν1ασπίἀ2ν1ασπίἀ2ν1αϲπίἀ2ν1αϲπίἀ2ν1ατὶ_ἀ2ν1ατί_ἀ2ν1ατί_ἀ3ν2αυδίἀ3ν2αυδίἀ3ν2αυδιἀ2ν1αφοῦἀ2ν1αφεῖἀ2ν1αφοῖἀ3ν2αφῆνἀ2ν1αχύρἀ2ν1αχύρἀ2ν1αχυρἀ2ν1έδεσἀ2ν1έδεσἀ2ν1έδεϲἀ2ν1έδεϲἀ2ν1εδέσἀ2ν1εδέσἀ2ν1εδέϲἀ2ν1εδέϲἀ2ν1εθέλἀ2ν1εθέλἀ2ν1εθελἀ2ν1είδεἀ2ν1είδεἀ2ν1ειδέἀ2ν1ειδέἀ2ν1είδωἀ2ν1είδωἀ2ν1ειδώἀ2ν1ειδώἀ2ν1είκαἀ2ν1είκαἀ2ν1εικάἀ2ν1εικάἀ2ν1εικόἀ2ν1εικόἀ2ν1εικοἀ2ν1είμαἀ2ν1είμαἀνε2κ1λόἀνε2κ1λόἀνε2κ1λοἀ2ν1έλαιἀ2ν1έλαιἀ2ν1ελαιἀ2ν1ελάτἀ2ν1ελάτἀ2ν1ελατἀ2ν1ελέηἀ2ν1ελέηἀ2ν1ελεήἀ2ν1ελεήἀ2ν1έλεοἀ2ν1έλεοἀ2ν1ελέοἀ2ν1ελέοἀ2ν1ελέωἀ2ν1ελέωἀ2ν1έλεεἀ2ν1έλεεἀ2ν1ελκήἀ2ν1ελκήἀ2ν1ελκὴἀ2ν1ελκοἀ2ν1ελκῆἀ2ν1ελκεἀ2ν1ελκῶἄ2ν1ελκτἀ2ν1έλκτἀ2ν1έλκτἀ2ν1έλκωἀ2ν1έλκωἀ2ν1ελκώἀ2ν1ελκώἀ2ν1έλπιἀ2ν1έλπιἀ2ν1ελπίἀ2ν1ελπίἀ2ν1έμετἀ2ν1έμετἀ2ν1εμέτἀ2ν1εμέτἀ3ν2ένειἀ3ν2ένειἀ2ν1ε2ξ1ἀ2ν1έστιἀ2ν1έστιἀ2ν1έϲτιἀ2ν1έϲτιἀ2ν1εστίἀ2ν1εστίἀ2ν1εϲτίἀ2ν1εϲτίἀ2ν1έταιἀ2ν1έταιἀ2ν1εταίἀ2ν1εταίἀ2ν1έτοιἀ2ν1έτοιἀ2ν1ετοίἀ2ν1ετοίἀ2ν1ευκτἀ3ν2εφάλἀ3ν2εφάλἀ3ν2έφελἀ3ν2έφελἀ3ν2εφέλἀ3ν2εφέλἀ2ν1ηγεμἀ2ν1ήκεσἀ2ν1ήκεσἀ2ν1ήκεϲἀ2ν1ήκεϲἀ2ν1ηκέσἀ2ν1ηκέσἀ2ν1ηκέϲἀ2ν1ηκέϲἀ2ν1ηλάκἀ2ν1ηλάκἀ2ν1ηλακἀ2ν1ηλεγἀ2ν1ηλεήἀ2ν1ηλεήἀ2ν1ηλεὴἀ2ν1ηλεοἀ2ν1ηλεεἀ2ν1ηλεῶἀ2ν1ηλεέἀ2ν1ηλεέἀ2ν1ηλεὲἀ2ν1ηλεῆἀ2ν1ηλέηἀ2ν1ηλέηἀ2ν1ηλοῦἀ2ν1ηλεῖἀ2ν1ηλοῖἀ2ν1ήλικἀ2ν1ήλικἀ2ν1ηλίκἀ2ν1ηλίκἀ2ν1ήλιοἀ2ν1ήλιοἀ2ν1ηλίοἀ2ν1ηλίοἀ2ν1ηλίωἀ2ν1ηλίωἀ2ν1ήλιαἀ2ν1ήλιαἀ2ν1ήλιπἀ2ν1ήλιπἀ2ν1ηλίπἀ2ν1ηλίπἀ2ν1ηλιφἀ2ν1ήρειἀ2ν1ήρειἀ2ν1ηρείἀ2ν1ηρείἀ2ν1ηρέμἀ2ν1ηρέμἀ2ν1ηρεμἀ2ν1ηρεφἀ2ν1ήροτἀ2ν1ήροτἀ2ν1ηρότἀ2ν1ηρότἀ2ν1ίδιοἀ2ν1ίδιοἀ2ν1ιδίοἀ2ν1ιδίοἀ2ν1ιδίωἀ2ν1ιδίωἀ2ν1ίδιαἀ2ν1ίδιαἀ2ν1ιδιτἀ2ν1ίδρωἀ2ν1ίδρωἄ2ν1ιδρεἀ3ν2ιέρωἀ3ν2ιέρωἀ3ν2ισᾶτἀ3ν2ιϲᾶτἀ3ν2ισάτἀ3ν2ισάτἀ3ν2ιϲάτἀ3ν2ιϲάτἀ4ν3ίσχυἀ4ν3ίσχυἀ4ν3ίϲχυἀ4ν3ίϲχυἀ2ν1οικεἄ2ν1οικτἀ2ν1οίκτἀ2ν1οίκτἀ2ν1ομήλἀ2ν1ομήλἀ2ν1ομηλἀ2ν1ομίλἀ2ν1ομίλἀ2ν1ομιλἀ2ν1όμιχἀ2ν1όμιχἀ2ν1ομιχἀ3ν2ομοθἀ3ν2όμῳ_ἀ3ν2όμῳ_ἀ3ν2όμω_ἀ3ν2όμω_ἀ3ν2ορμάἀ3ν2ορμάἀ2ν1όσφρἀ2ν1όσφρἀ2ν1όϲφρἀ2ν1όϲφρἀ2ν1οσφρἀ2ν1οϲφρἀ2ν1ούσιἀ2ν1ούσιἀ2ν1ούϲιἀ2ν1ούϲιἀ2ν1ουσίἀ2ν1ουσίἀ2ν1ουϲίἀ2ν1ουϲίἀντει2σ1ἀντει2ϲ1ἀ2ν1ωφέλἀ2ν1ωφέλἀ2ν1ωφελἀπα2ν1αιἀπά2ν1ουἀπά2ν1ουἀποσυ2ν1ἀποϲυ2ν1ἀπρο3σ2τἀπρο3ϲ2τἀρρε2ν1ωἀστε2ρ1ωἀϲτε2ρ1ωαὐτέ2κ1μαὐτέ2κ1μαὐτε2κ1μ_διό2σ1κ_διό2σ1κ_διό2ϲ1κ_διό2ϲ1κ_διο2σ1κ_διο2ϲ1κ_διό2σ1π_διό2σ1π_διό2ϲ1π_διό2ϲ1π_διο2σ1π_διο2ϲ1πδύ3σ2ει_δύ3σ2ει_δύ3ϲ2ει_δύ3ϲ2ει__δύ3σ2ετ_δύ3σ2ετ_δύ3ϲ2ετ_δύ3ϲ2ετδύ3σ2οι_δύ3σ2οι_δύ3ϲ2οι_δύ3ϲ2οι_δύ3σ2ων_δύ3σ2ων_δύ3ϲ2ων_δύ3ϲ2ων_δύ3σ2ουσδύ3σ2ουσδύ3ϲ2ουϲδύ3ϲ2ουϲδυ3σ2ούσδυ3σ2ούσδυ3ϲ2ούϲδυ3ϲ2ούϲδύ3σ2αι_δύ3σ2αι_δύ3ϲ2αι_δύ3ϲ2αι_δύ3σ2ον_δύ3σ2ον_δύ3ϲ2ον_δύ3ϲ2ον_δύ3σ2ας_δύ3σ2ας_δύ3ϲ2αϲ_δύ3ϲ2αϲ_δύ3σ2αν_δύ3σ2αν_δύ3ϲ2αν_δύ3ϲ2αν_δύ3σ2αντδύ3σ2αντδύ3ϲ2αντδύ3ϲ2αντδυ3σ2άντδυ3σ2άντδυ3ϲ2άντδυ3ϲ2άντ_δύ3σ2εσ_δύ3σ2εσ_δύ3ϲ2εϲ_δύ3ϲ2εϲδύ3σ2εο_δύ3σ2εο_δύ3ϲ2εο_δύ3ϲ2εο__δυσέ2κ1_δυσέ2κ1_δυϲέ2κ1_δυϲέ2κ1_δυσε2κ1_δυϲε2κ1_δυσέ2ξ1_δυσέ2ξ1_δυϲέ2ξ1_δυϲέ2ξ1_δυσε2ξ1_δυϲε2ξ1_δυ3σ2ιθ_δυ3ϲ2ιθδύ3σ2ις_δύ3σ2ις_δύ3ϲ2ιϲ_δύ3ϲ2ιϲ_δύ3σ2ισ_δύ3σ2ισ_δύ3σ2ιν_δύ3σ2ιν_δύ3ϲ2ιν_δύ3ϲ2ιν__δύ3σ2κε_δύ3σ2κε_δύ3ϲ2κε_δύ3ϲ2κε_δυ3σ2μῇ_δυ3ϲ2μῇ_δυ3σ2μᾶ_δυ3ϲ2μᾶ_δυ3σ2μα_δυ3ϲ2μα_δυ3σ2μῶ_δυ3ϲ2μῶεἰ3σ2ίν_εἰ3σ2ίν_εἰ3ϲ2ίν_εἰ3ϲ2ίν_εἰ3σ2ὶν_εἰ3ϲ2ὶν_εἰ3σ2ιν_εἰ3ϲ2ιν_εἴ3σ2οιοεἴ3ϲ2οιοεἴ3σ2ατοεἴ3ϲ2ατοεἴ3σ2αιοεἴ3ϲ2αιοἐ3κ2λήθηἐ3κ2λήθηἐ4κ3λείπἐ4κ3λείπἐ4κ3λείψἐ4κ3λείψἐ3κ2κλέπἐ3κ2κλέπἐ3κ2κλέψἐ3κ2κλέψἐ4κ3λάπτἐ4κ3λάπτἐ4κ3λαπτἐ3κ2κλώσἐ3κ2κλώσἐ3κ2κλώϲἐ3κ2κλώϲἔ3κ2λεισἔ3κ2λειϲἐ3κ2ραύγἐ3κ2ραύγἐ3κ2ραυγἐ2κ1τάμνἐ2κ1τάμνἐ3κ2τείνἐ3κ2τείνἔ3κ2τισαἔ3κ2τιϲαἐ3κ2τίσαἐ3κ2τίσαἐ3κ2τίϲαἐ3κ2τίϲαἐ3κ2τός_ἐ3κ2τός_ἐ3κ2τόϲ_ἐ3κ2τόϲ_ἐ3κ2τὸς_ἐ3κ2τὸϲ_ἐ3κ2τόσ_ἐ3κ2τόσ_ἐ3κ2τὸσ_ἔ2κ1τυποἑλλή2σ1πἑλλή2σ1πἑλλή2ϲ1πἑλλή2ϲ1πἑλλη2σ1πἑλλη2ϲ1πἐ3ν2άκιςἐ3ν2άκιςἐ3ν2άκιϲἐ3ν2άκιϲἐ3ν2ακισἐ3ν2ακιϲἐ3ν2ακόσἐ3ν2ακόσἐ3ν2ακόϲἐ3ν2ακόϲἐ3ν2ακοσἐ3ν2ακοϲἔ3ν2αρα_ἐ3ν2αρηφἐ4ν3αραρἐ3ν2άρεεἐ3ν2άρεεἐ3ν2αρέωἐ3ν2αρέωἐ3ν2αρέαἐ3ν2αρέαἐ3ν2αρεάἐ3ν2αρεάἐ3ν2άριεἐ3ν2άριεἐ3ν2αρίωἐ3ν2αρίωἐ3ν2αρίαἐ3ν2αρίαἐ3ν2αριάἐ3ν2αριάἐνδυ2σ1τἐνδυ2ϲ1τἐ3ν2εμήθἐ3ν2εμήθἐ3ν2έπειἐ3ν2έπειἔ3ν2ερθεἐ5ν4ιαύσἐ5ν4ιαύσἐ5ν4ιαύϲἐ5ν4ιαύϲἐ5ν4ιαυσἐ5ν4ιαυϲἔ3ν2οις_ἔ3ν2οιϲ_ἔ3ν2οισ_ἐ3ν2υοῦςἐ3ν2υοῦϲἐ3ξ2υ2ν1ἐπεί3σ2θἐπεί3σ2θἐπεί3ϲ2θἐπεί3ϲ2θἐπει3σ2θἐπει3ϲ2θἐπε2κ1τρἐπέ2κ1τρἐπέ2κ1τρἐπισυ2ν1ἐπιϲυ2ν1ἐ3σ2μὲν_ἐ3ϲ2μὲν_ἐ3σ2μέν_ἐ3σ2μέν_ἐ3ϲ2μέν_ἐ3ϲ2μέν_εὐπρό2σ1εὐπρό2σ1εὐπρό2ϲ1εὐπρό2ϲ1εὐπρο2σ1εὐπρο2ϲ1_θεό2σ1δ_θεό2σ1δ_θεό2ϲ1δ_θεό2ϲ1δ_θεο2σ1δ_θεο2ϲ1δ_θυο2σ1κ_θυο2ϲ1κ_κα2ν1εν_κα2ν1έν_κα2ν1έν_κρά2σ1π_κρά2σ1π_κρά2ϲ1π_κρά2ϲ1π_κρα2σ1π_κρα2ϲ1π_μογι2σ1_μογι2ϲ1_μυ2σ1επ_μυ2ϲ1επ_νου2ν1ε_ξυ2ν1αγ_ξυ3ν2εώ_ξυ3ν2εώ_ξυ3ν2εῶ_ξυ2ν1ῆκοἰ2σ1πώτοἰ2σ1πώτοἰ2ϲ1πώτοἰ2ϲ1πώτοἰ2σ1πωτοἰ2ϲ1πωτὅ2σ1περ_ὅ2ϲ1περ__παλι2ν1_παλί2ν1_παλί2ν1_πα3ν2ί__πα3ν2ί__πα3ν2ὶ__πα3ν2ικ_πα3ν2ῷ__πα3ν2ό__πα3ν2ό__πα3ν2ὸ__πα3ν2έ__πα3ν2έ__πα3ν2ὲ__παρε2ξ1_παρέ2ξ1_παρέ2ξ1παρέ3ξ2ῃπαρέ3ξ2ῃ_προε2κ1_προε2ν1_προε2ξ1_προέ2ξ1_προέ2ξ1_πυ2ρ1άγ_πυ2ρ1άγ_πυ2ρ1αγ_πυ2ρ1ῆθ_πυ2ρ1ηθ_πυ2ρ1ήθ_πυ2ρ1ήθ_πυ2ρ1ακ_πύ2ρ1αυ_πύ2ρ1αυ_πυ2ρ1αύ_πυ2ρ1αύ_πυ2ρ1αυ_πυ2ρ1ωπ_συνε2ξ1_ϲυνε2ξ1_τρι3σ2π_τρι3ϲ2π_τρί3σ2τ_τρί3σ2τ_τρί3ϲ2τ_τρί3ϲ2τ_τρι3σ2τ_τρι3ϲ2τ_τρι3σ2ώ_τρι3σ2ώ_τρι3ϲ2ώ_τρι3ϲ2ώ_τρι3σ2ω_τρι3ϲ2ωὑπέ3ρ2α_ὑπέ3ρ2α_ὑπέ3ρ2ᾳ_ὑπέ3ρ2ᾳ_ὑπε3ρ2εθὑπε3ρ2έθὑπε3ρ2έθὑπε3ρ2είὑπε3ρ2είὑπέ3ρ2υθὑπέ3ρ2υθὑπε3ρ2ύθὑπε3ρ2ύθὑπε3ρ2υθὑπε3ρ2έψὑπε3ρ2έψὑπε3ρ2εψὑπε3ρ2έωὑπε3ρ2έωὑπε3ρ2έεὑπε3ρ2έεὑπε3ρ2έοὑπε3ρ2έοὑπε3ρ2οῦ_φαε2σ1φ_φαε2ϲ1φὥ2σ1περ_ὥ2ϲ1περ_", + 9 : "ἀμπαλί2ν1ἀμπαλί2ν1ἀμπαλι2ν1ἀ2ν1αγής_ἀ2ν1αγής_ἀ2ν1αγήϲ_ἀ2ν1αγήϲ_ἀ2ν1αγὴς_ἀ2ν1αγὴϲ_ἀ2ν1αγήσ_ἀ2ν1αγήσ_ἀ2ν1αγὴσ_ἀ2ν1αγεῖ_ἀ2ν1αγές_ἀ2ν1αγές_ἀ2ν1αγέϲ_ἀ2ν1αγέϲ_ἀ2ν1αγὲς_ἀ2ν1αγὲϲ_ἀ2ν1αγέσ_ἀ2ν1αγέσ_ἀ2ν1αγὲσ_ἀ2ν1αγῶν_ἀ2ν1αγέσιἀ2ν1αγέσιἀ2ν1αγέϲιἀ2ν1αγέϲιἀ3ν2αγώγιἀ3ν2αγώγιἀ3ν2αγωγίἀ3ν2αγωγίἀ2ν1ακόλοἀ2ν1ακόλοἀ2ν1ακολοἀ2ν1άλειπἀ2ν1άλειπἀ2ν1αλείπἀ2ν1αλείπἀ2ν1αλειφἀ2ν1άλειφἀ2ν1άλειφἀ2ν1αλείφἀ2ν1αλείφἀ2ν1άλιστἀ2ν1άλιστἀ2ν1άλιϲτἀ2ν1άλιϲτἀ2ν1αλίστἀ2ν1αλίστἀ2ν1αλίϲτἀ2ν1αλίϲτἀ2ν1άλων_ἀ2ν1άλων_ἀ2ν1αμάρτἀ2ν1αμάρτἀ2ν1αμαρτἀ2ν1αμέλγἀ2ν1αμέλγἀ2ν1αμελγἀναμφι2σ1ἀναμφι2ϲ1ἀ2ν1ανάγκἀ2ν1ανάγκἀ2ν1αναγκἀ2ν1ανταγἀ2ν1ανταπἀ2ν1αξιόλἀ2ν1αξιόλἀ2ν1αξιολἀ2ν1αξιόπἀ2ν1αξιόπἀ2ν1αξιοπἀ2ν1απάρτἀ2ν1απάρτἀ2ν1απαρτἀ2ν1απαύδἀ2ν1απαύδἀ2ν1απαυδἀ2ν1αποδήἀ2ν1αποδήἀ2ν1αποδηἀ2ν1απόδοἀ2ν1απόδοἀ2ν1αποδόἀ2ν1αποδόἀ2ν1απόδρἀ2ν1απόδρἀ2ν1αποδρἀ2ν1απολόἀ2ν1απολόἀ2ν1απολοἀ2ν1απόλυἀ2ν1απόλυἀ2ν1απολύἀ2ν1απολύἀ2ν1απότεἀ2ν1απότεἀ2ν1αποτεἀ2ν1απότμἀ2ν1απότμἀ2ν1αποτμἀ2ν1απότρἀ2ν1απότρἀ2ν1αποτρἀ4ν3αρραγἀ2ν1άσσατἀ2ν1άσσατἀ2ν1άϲϲατἀ2ν1άϲϲατἀ2ν1ασσάτἀ2ν1ασσάτἀ2ν1αϲϲάτἀ2ν1αϲϲάτἀ2ν1άστειἀ2ν1άστειἀ2ν1άϲτειἀ2ν1άϲτειἀ2ν1αστείἀ2ν1αστείἀ2ν1αϲτείἀ2ν1αϲτείἀ2ν1ατεὶ_ἀ2ν1ατεί_ἀ2ν1ατεί_ἄ2ν1ατος_ἄ2ν1ατοϲ_ἄ2ν1ατοσ_ἀ2ν1άτου_ἀ2ν1άτου_ἄ2ν1ατον_ἄ2ν1ατοι_ἀ2ν1αφαίρἀ2ν1αφαίρἀ2ν1αφαιρἀ2ν1εφῶν_ἀ2ν1αφρόδἀ2ν1αφρόδἀ2ν1αφροδἀνδρό2σ1αἀνδρό2σ1αἀνδρό2ϲ1αἀνδρό2ϲ1αἀνδρο2σ1αἀνδρο2ϲ1αἀ2ν1έγερτἀ2ν1έγερτἀ2ν1εγέρτἀ2ν1εγέρτἀ2ν1έδρασἀ2ν1έδρασἀ2ν1έδραϲἀ2ν1έδραϲἀ2ν1εδράσἀ2ν1εδράσἀ2ν1εδράϲἀ2ν1εδράϲἀ2ν1ειλείἀ2ν1ειλείἀ2ν1ειλειἀ3ν2εκάς_ἀ3ν2εκάς_ἀ3ν2εκάϲ_ἀ3ν2εκάϲ_ἀ3ν2εκὰς_ἀ3ν2εκὰϲ_ἀ3ν2εκάσ_ἀ3ν2εκάσ_ἀ3ν2εκὰσ_ἀνε2κ1λιπἀ2ν1έλεγκἀ2ν1έλεγκἀ2ν1ελέγκἀ2ν1ελέγκἀ2ν1ελεγξἀ2ν1ελκέσἀ2ν1ελκέσἀ2ν1ελκέϲἀ2ν1ελκέϲἀ2ν1έλυτρἀ2ν1έλυτρἀ2ν1ελύτρἀ2ν1ελύτρἀ2ν1εραστἀ2ν1εραϲτἀ2ν1έραστἀ2ν1έραστἀ2ν1έραϲτἀ2ν1έραϲτἀ2ν1εράστἀ2ν1εράστἀ2ν1εράϲτἀ2ν1εράϲτἀ2ν1έρεικἀ2ν1έρεικἀ2ν1ερείκἀ2ν1ερείκἀ2ν1έρεισἀ2ν1έρεισἀ2ν1έρειϲἀ2ν1έρειϲἀ2ν1ερείσἀ2ν1ερείσἀ2ν1ερείϲἀ2ν1ερείϲἀ2ν1εύρετἀ2ν1εύρετἀ2ν1ευρέτἀ2ν1ευρέτἀ2ν1ηλάτωἀ2ν1ηλάτωἀ2ν1ήλαταἀ2ν1ήλαταἀ2ν1ήλειπἀ2ν1ήλειπἀ2ν1ηλείπἀ2ν1ηλείπἄ2ν1ιδροςἄ2ν1ιδροϲἄ2ν1ιδροσἀ2ν1ίδρουἀ2ν1ίδρουἄ2ν1ιδρονἀ2ν1ίδροιἀ2ν1ίδροιἄ2ν1ιδροιἀ2ν1ίδρυτἀ2ν1ίδρυτἀ2ν1ιδρύτἀ2ν1ιδρύτἀ2ν1ιδρωτἀ2ν1ιδρώτἀ2ν1ιδρώτἀ2ν1ιεράτἀ2ν1ιεράτἀ2ν1ίμαστἀ2ν1ίμαστἀ2ν1ίμαϲτἀ2ν1ίμαϲτἀ2ν1ιμάστἀ2ν1ιμάστἀ2ν1ιμάϲτἀ2ν1ιμάϲτἀ2ν1οικονἀ2ν1οικτίἀ2ν1οικτίἀ2ν1οίμωκἀ2ν1οίμωκἀ2ν1οιμώκἀ2ν1οιμώκἀ2ν1οιμωκἄ2ν1οιστρἄ2ν1οιϲτρἀ2ν1οίστρἀ2ν1οίστρἀ2ν1οίϲτρἀ2ν1οίϲτρἀ2ν1ομβρίἀ2ν1ομβρίἀ2ν1ομβρῖἄ2ν1ομβροἀ2ν1όμβροἀ2ν1όμβροἀ2ν1όμβρωἀ2ν1όμβρωἄ2ν1ομβραἀ3ν2όμου_ἀ3ν2όμου_ἀ3ν2όμων_ἀ3ν2όμων_ἀ3ν2οργάζἀ3ν2οργάζἀ2ν1όχευτἀ2ν1όχευτἀ2ν1οχεύτἀ2ν1οχεύτἀντα2ν1ισἀντα2ν1ιϲἀντα2ν1ίσἀντα2ν1ίσἀντα2ν1ίϲἀντα2ν1ίϲἀντιδυ2σ1ἀντιδυ2ϲ1ἀντισύ2ν1ἀντισύ2ν1ἀντιϲύ2ν1ἀντιϲύ2ν1ἀντισυ2ν1ἀντιϲυ2ν1ἀπα2ν1ούρἀπα2ν1ούρἀπρό3σ2κεἀπρό3σ2κεἀπρό3ϲ2κεἀπρό3ϲ2κεἀπρο3σ2κέἀπρο3σ2κέἀπρο3ϲ2κέἀπρο3ϲ2κέἀπρό3σ2κοἀπρό3σ2κοἀπρό3ϲ2κοἀπρό3ϲ2κοἀπρο3σ2κόἀπρο3σ2κόἀπρο3ϲ2κόἀπρο3ϲ2κόἀρχισυ2ν1ἀρχιϲυ2ν1_γερα2σ1φ_γερα2ϲ1φ_διέ2κ1ρο_διέ2κ1ρο_διε2κ1ρό_διε2κ1ρό_δικα2σ1π_δικα2ϲ1πδύ3σ2εις_δύ3σ2εις_δύ3ϲ2ειϲ_δύ3ϲ2ειϲ_δύ3σ2εισ_δύ3σ2εισ_δύ3σ2οις_δύ3σ2οις_δύ3ϲ2οιϲ_δύ3ϲ2οιϲ_δύ3σ2οισ_δύ3σ2οισ_δύ3σ2ειν_δύ3σ2ειν_δύ3ϲ2ειν_δύ3ϲ2ειν_δύ3σ2ωσι_δύ3σ2ωσι_δύ3ϲ2ωϲι_δύ3ϲ2ωϲι_δύ3σ2αις_δύ3σ2αις_δύ3ϲ2αιϲ_δύ3ϲ2αιϲ_δύ3σ2αισ_δύ3σ2αισ_δύ3σ2ειε_δύ3σ2ειε_δύ3ϲ2ειε_δύ3ϲ2ειε_δύ3σ2αιενδύ3σ2αιενδύ3ϲ2αιενδύ3ϲ2αιενδυ3σ2άτω_δυ3σ2άτω_δυ3ϲ2άτω_δυ3ϲ2άτω_δύ3σ2ατε_δύ3σ2ατε_δύ3ϲ2ατε_δύ3ϲ2ατε_δύ3σ2οιο_δύ3σ2οιο_δύ3ϲ2οιο_δύ3ϲ2οιο_δύ3σ2αιο_δύ3σ2αιο_δύ3ϲ2αιο_δύ3ϲ2αιο_δυ3σ2άμενδυ3σ2άμενδυ3ϲ2άμενδυ3ϲ2άμενδύ3σ2ατο_δύ3σ2ατο_δύ3ϲ2ατο_δύ3ϲ2ατο_δύ3σ2ετο_δύ3σ2ετο_δύ3ϲ2ετο_δύ3ϲ2ετο_δύ3σ2εσι_δύ3σ2εσι_δύ3ϲ2εϲι_δύ3ϲ2εϲι__δυ3σ2μή__δυ3σ2μή__δυ3ϲ2μή__δυ3ϲ2μή__δυ3σ2μὴ__δυ3ϲ2μὴ__δυ3σ2μῆ__δυ3ϲ2μῆ__δυσξύ2ν1_δυσξύ2ν1_δυϲξύ2ν1_δυϲξύ2ν1_δυσξυ2ν1_δυϲξυ2ν1_δύ3σ2ταν_δύ3σ2ταν_δύ3ϲ2ταν_δύ3ϲ2ταν_δυ3σ2τάν_δυ3σ2τάν_δυ3ϲ2τάν_δυ3ϲ2τάν_δυ3σ2την_δυ3ϲ2την_δυ3σ2τήν_δυ3σ2τήν_δυ3ϲ2τήν_δυ3ϲ2τήνεἴ3σ2οιτοεἴ3ϲ2οιτοεἰ3σ2όμενεἰ3σ2όμενεἰ3ϲ2όμενεἰ3ϲ2όμενεἰ3σ2ομένεἰ3σ2ομένεἰ3ϲ2ομένεἰ3ϲ2ομένεἴ3σ2ασθεεἴ3ϲ2αϲθεεἴ3σ2αντοεἴ3ϲ2αντοεἴ3σ2ωμαιεἴ3ϲ2ωμαιεἴ3σ2ησθεεἴ3ϲ2ηϲθεεἴ3σ2αιτοεἴ3ϲ2αιτοεἰ3σ2άσθωεἰ3σ2άσθωεἰ3ϲ2άϲθωεἰ3ϲ2άϲθωεἰ3σ2άμενεἰ3σ2άμενεἰ3ϲ2άμενεἰ3ϲ2άμενεἰ3σ2αμένεἰ3σ2αμένεἰ3ϲ2αμένεἰ3ϲ2αμένἐ4κ3λύσεωἐ4κ3λύσεωἐ4κ3λύϲεωἐ4κ3λύϲεωἐ4κ3λύσειἐ4κ3λύσειἐ4κ3λύϲειἐ4κ3λύϲειἔ2κ1ταμε_ἐ2κ1τύπῳ_ἐ2κ1τύπῳ_ἔ2κ1τυπε_ἐ2κ1τύπω_ἐ2κ1τύπω_ἐ2κτύποι_ἐ2κτύποι_ἔ2κ1τυπα_ἐ3ν2άρων_ἐ3ν2άρων_ἐ3ν2εμέσσἐ3ν2εμέσσἐ3ν2εμέϲϲἐ3ν2εμέϲϲἑ2ξ1ήρετμἑ2ξ1ήρετμἑ2ξ1ηρέτμἑ2ξ1ηρέτμἐπεί3σ2ω_ἐπεί3σ2ω_ἐπεί3ϲ2ω_ἐπεί3ϲ2ω_ἐπε2κ1τείἐπε2κ1τείἐπέ2κ1τειἐπέ2κ1τειἐ3σ2όμεθαἐ3σ2όμεθαἐ3ϲ2όμεθαἐ3ϲ2όμεθαἐ3σ2οίμηνἐ3σ2οίμηνἐ3ϲ2οίμηνἐ3ϲ2οίμην_θη2ρ1αγρ_κατει2σ1_κατει2ϲ1_κατε2ν1ή_κατε2ν1ή_κερα2σ1φ_κερα2ϲ1φ_κυνό2σ1α_κυνό2σ1α_κυνό2ϲ1α_κυνό2ϲ1α_κυνό2σ1β_κυνό2σ1β_κυνό2ϲ1β_κυνό2ϲ1β_κυνο2σ1β_κυνο2ϲ1β_κυνό2σ1ο_κυνό2σ1ο_κυνό2ϲ1ο_κυνό2ϲ1ο_κυνο2σ1ο_κυνο2ϲ1ο_κυνο2σ1φ_κυνο2ϲ1φ_μελά2ν1υ_μελά2ν1υ_μελα2ν1ύ_μελα2ν1ύ_μετε2ξ1α_μετε2ξ1έ_μετε2ξ1έ_μετε2ξ1ε_μογο2σ1τ_μογο2ϲ1τοἱο2ν1εί_οἱο2ν1εί_οἱο2ν1εὶ_ὁλο2ν1έν_ὁλο2ν1έν_ὁλο2ν1ὲν_ὁσο2ν1ῶν_ὁϲο2ν1ῶν_οἷ2σ1τισιοἷ2ϲ1τιϲιἧ2σ1τινοςἧ2ϲ1τινοϲαἷ2σ1τισιαἷ2ϲ1τιϲιἅ2σ1τιναςἅ2ϲ1τιναϲ_πα3ν2ός__πα3ν2ός__πα3ν2όϲ__πα3ν2όϲ__πα3ν2ὸς__πα3ν2ὸϲ__πα3ν2όσ__πα3ν2όσ__πα3ν2ὸσ__πα3ν2ῶν__πα3ν2ίσδ_πα3ν2ίσδ_πα3ν2ίϲδ_πα3ν2ίϲδ_πα3ν2ισδ_πα3ν2ιϲδ_πα3ν2οῦ__πα3ν2όν__πα3ν2όν__πα3ν2ὸν__πα3ν2οί__πα3ν2οί__πα3ν2οὶ__παρεί2σ1_παρεί2σ1_παρεί2ϲ1_παρεί2ϲ1_παρει2σ1_παρει2ϲ1_παρε2κ1λ_παρε2ν1οπαρέ3ξ2ω_παρέ3ξ2ω__πλεο2ν1έ_πλεο2ν1έ_πλεο2ν1ε_προει2σ1_προει2ϲ1_προ3σ2άβ_προ3σ2άβ_προ3ϲ2άβ_προ3ϲ2άβ_προ3σ2αβ_προ3ϲ2αβ_προ3σ2εί_προ3σ2εί_προ3ϲ2εί_προ3ϲ2εί_προσε2ν1_προϲε2ν1_προσε2ξ1_προϲε2ξ1_πρό3σ2θι_πρό3σ2θι_πρό3ϲ2θι_πρό3ϲ2θι_προ3σ2θί_προ3σ2θί_προ3ϲ2θί_προ3ϲ2θί_πρό3σ2τῳ_πρό3σ2τῳ_πρό3ϲ2τῳ_πρό3ϲ2τῳ_προ3σ2τῴ_προ3ϲ2τῴ_προ3σ2υγ_προ3ϲ2υγ_προ3σ2υμ_προ3ϲ2υμ_πρό3σ2ω__πρό3σ2ω__πρό3ϲ2ω__πρό3ϲ2ω__προ3σ2ώτ_προ3σ2ώτ_προ3ϲ2ώτ_προ3ϲ2ώτ_προ3σ2ωτ_προ3ϲ2ωτ_πυ2ρ1αίθ_πυ2ρ1αίθ_πυ2ρ1αιθ_συνδυ2σ1_ϲυνδυ2ϲ1_τρει2σ1κ_τρει2ϲ1κ_τρι3σ2μό_τρι3σ2μό_τρι3ϲ2μό_τρι3ϲ2μό_τρι3σ2μο_τρι3ϲ2μο_τρι3σ2μῶ_τρι3ϲ2μῶὑπεί3σ2αςὑπεί3σ2αςὑπεί3ϲ2αϲὑπεί3ϲ2αϲὑπεί3σ2ασὑπεί3σ2ασὑπεί3σ2ανὑπεί3σ2ανὑπεί3ϲ2ανὑπεί3ϲ2ανὑπει3σ2άνὑπει3σ2άνὑπει3ϲ2άνὑπει3ϲ2άνὑπει3σ2άσὑπει3σ2άσὑπει3ϲ2άϲὑπει3ϲ2άϲὑπε2κ1λαμὑπε2κ1λήψὑπε2κ1λήψὑπέ3ρ2ης_ὑπέ3ρ2ης_ὑπέ3ρ2ηϲ_ὑπέ3ρ2ηϲ_ὑπέ3ρ2ησ_ὑπέ3ρ2ησ_ὑπέ3ρ2αν_ὑπέ3ρ2αν_ὑπέ3ρ2αι_ὑπέ3ρ2αι_ὑπε3ρ2ῶν_ὑπέ3ρ2ας_ὑπέ3ρ2ας_ὑπέ3ρ2αϲ_ὑπέ3ρ2αϲ_ὑπέ3ρ2ασ_ὑπέ3ρ2ασ_ὑπε3ρ2έπτὑπε3ρ2έπτὑπε3ρ2επτὑπε3ρ2εῖ_ὑπε3ρ2εῖτ_χει2ρ1άγ_χει2ρ1άγ_χει2ρ1αγ_χει2ρ1απ_χει2ρ1αψ_χει2ρ1ου_χει2ρ1ῶν_χει2ρ1άν_χει2ρ1άν_χει2ρ1αν_χη2ν1ναλ", + 10 : "ἀ2ν1αγεῖς_ἀ2ν1αγεῖϲ_ἀ2ν1αγεῖσ_ἀ4ν3αγωγίαἀ4ν3αγωγίαἀ3ν2αλδήσκἀ3ν2αλδήσκἀ3ν2αλδήϲκἀ3ν2αλδήϲκἀ4ν3ανθές_ἀ4ν3ανθές_ἀ4ν3ανθέϲ_ἀ4ν3ανθέϲ_ἀ4ν3ανθὲς_ἀ4ν3ανθὲϲ_ἀ4ν3ανθέσ_ἀ4ν3ανθέσ_ἀ4ν3ανθὲσ_ἀ4ν3ανθέσιἀ4ν3ανθέσιἀ4ν3ανθέϲιἀ4ν3ανθέϲιἀ2ν1απάλλαἀ2ν1απάλλαἀ2ν1απαλλάἀ2ν1απαλλάἀ2ν1απόλαυἀ2ν1απόλαυἀ2ν1απολαύἀ2ν1απολαύἀ3ν2αστείβἀ3ν2αστείβἀ3ν2αϲτείβἀ3ν2αϲτείβἀ3ν2άστειρἀ3ν2άστειρἀ3ν2άϲτειρἀ3ν2άϲτειρἀ3ν2αστείρἀ3ν2αστείρἀ3ν2αϲτείρἀ3ν2αϲτείρἀ3ν2άστειχἀ3ν2άστειχἀ3ν2άϲτειχἀ3ν2άϲτειχἀ3ν2αστείχἀ3ν2αστείχἀ3ν2αϲτείχἀ3ν2αϲτείχἀ2ν1άτοις_ἀ2ν1άτοις_ἀ2ν1άτοιϲ_ἀ2ν1άτοιϲ_ἀ2ν1άτοισ_ἀ2ν1άτοισ_ἀ2ν1εί2σ1οἀ2ν1εί2σ1οἀ2ν1εί2ϲ1οἀ2ν1εί2ϲ1οἀ2ν1ει2σ1όἀ2ν1ει2σ1όἀ2ν1ει2ϲ1όἀ2ν1ει2ϲ1όἀ2ν1ελκές_ἀ2ν1ελκές_ἀ2ν1ελκέϲ_ἀ2ν1ελκέϲ_ἀ2ν1ελκὲς_ἀ2ν1ελκὲϲ_ἀ2ν1ελκέσ_ἀ2ν1ελκέσ_ἀ2ν1ελκὲσ_ἀ3ν2έντες_ἀ3ν2έντες_ἀ3ν2έντεϲ_ἀ3ν2έντεϲ_ἀ3ν2έντεσ_ἀ3ν2έντεσ_ἀ2ν1ηλάτουἀ2ν1ηλάτουἀ2ν1ήλατε_ἀ2ν1ήλατε_ἀ2ν1ηλάτοιἀ2ν1ηλάτοιἀ2ν1ήλατοιἀ2ν1ήλατοιἀ4ν3ιστορηἀ4ν3ιϲτορηἀ4ν3ιστόρηἀ4ν3ιστόρηἀ4ν3ιϲτόρηἀ4ν3ιϲτόρηἀ4ν3ιστορήἀ4ν3ιστορήἀ4ν3ιϲτορήἀ4ν3ιϲτορήἀ2ν1ιχνεύτἀ2ν1ιχνεύτἀ2ν2όμοιν_ἀ2ν2όμοιν_ἀ3ν2όμοις_ἀ3ν2όμοις_ἀ3ν2όμοιϲ_ἀ3ν2όμοιϲ_ἀ3ν2όμοισ_ἀ3ν2όμοισ_ἀ3ν2όμους_ἀ3ν2όμους_ἀ3ν2όμουϲ_ἀ3ν2όμουϲ_ἀ3ν2όμουσ_ἀ3ν2όμουσ_ἀντιπρο2σ1ἀντιπρο2ϲ1ἀ2ν1υπέ2ρ1ἀ2ν1υπέ2ρ1ἀ2ν1υπε2ρ1δύ3σ2ομεν_δύ3σ2ομεν_δύ3ϲ2ομεν_δύ3ϲ2ομεν_δύ3σ2οιμι_δύ3σ2οιμι_δύ3ϲ2οιμι_δύ3ϲ2οιμι_δύ3σ2οιτε_δύ3σ2οιτε_δύ3ϲ2οιτε_δύ3ϲ2οιτε_δύ3σ2οιεν_δύ3σ2οιεν_δύ3ϲ2οιεν_δύ3ϲ2οιεν_δύ3σ2ητον_δύ3σ2ητον_δύ3ϲ2ητον_δύ3ϲ2ητον_δύ3σ2ωμεν_δύ3σ2ωμεν_δύ3ϲ2ωμεν_δύ3ϲ2ωμεν_δύ3σ2αιμι_δύ3σ2αιμι_δύ3ϲ2αιμι_δύ3ϲ2αιμι_δύ3σ2ειας_δύ3σ2ειας_δύ3ϲ2ειαϲ_δύ3ϲ2ειαϲ_δύ3σ2ειασ_δύ3σ2ειασ_δύ3σ2αιτε_δύ3σ2αιτε_δύ3ϲ2αιτε_δύ3ϲ2αιτε_δύ3σ2ειαν_δύ3σ2ειαν_δύ3ϲ2ειαν_δύ3ϲ2ειαν_δύ3σ2ατον_δύ3σ2ατον_δύ3ϲ2ατον_δύ3ϲ2ατον_δυ3σ2άτων_δυ3σ2άτων_δυ3ϲ2άτων_δυ3ϲ2άτων_δύ3σ2ομαι_δύ3σ2ομαι_δύ3ϲ2ομαι_δύ3ϲ2ομαι_δύ3σ2οιτο_δύ3σ2οιτο_δύ3ϲ2οιτο_δύ3ϲ2οιτο__δυ3σ2όμεν_δυ3σ2όμεν_δυ3ϲ2όμεν_δυ3ϲ2όμεν_δυ3σ2ομέν_δυ3σ2ομέν_δυ3ϲ2ομέν_δυ3ϲ2ομένδύ3σ2ωμαι_δύ3σ2ωμαι_δύ3ϲ2ωμαι_δύ3ϲ2ωμαι_δύ3σ2ηται_δύ3σ2ηται_δύ3ϲ2ηται_δύ3ϲ2ηται_δυ3σ2ώμεθαδυ3σ2ώμεθαδυ3ϲ2ώμεθαδυ3ϲ2ώμεθαδύ3σ2ησθε_δύ3σ2ησθε_δύ3ϲ2ηϲθε_δύ3ϲ2ηϲθε_δύ3σ2αιτο_δύ3σ2αιτο_δύ3ϲ2αιτο_δύ3ϲ2αιτο_δυ3σ2άσθω_δυ3σ2άσθω_δυ3ϲ2άϲθω_δυ3ϲ2άϲθω_δύ3σ2ασθε_δύ3σ2ασθε_δύ3ϲ2αϲθε_δύ3ϲ2αϲθε_δυσ3σ2αμένδυσ3σ2αμένδυϲ3ϲ2αμένδυϲ3ϲ2αμένδύ3σ2αντο_δύ3σ2αντο_δύ3ϲ2αντο_δύ3ϲ2αντο__δυσεί2σ1β_δυσεί2σ1β_δυϲεί2ϲ1β_δυϲεί2ϲ1β_δυσει2σ1β_δυϲει2ϲ1βδυ3σ2έοιν_δυ3σ2έοιν_δυ3ϲ2έοιν_δυ3ϲ2έοιν_δύ3σ2εσιν_δύ3σ2εσιν_δύ3ϲ2εϲιν_δύ3ϲ2εϲιν__δυ3σ2μῆς__δυ3ϲ2μῆϲ__δυ3σ2μῆσ_εἴ3σ2εται_εἴ3ϲ2εται_εἴ3σ2εσθε_εἴ3ϲ2εϲθε_εἴ3σ2ονταιεἴ3ϲ2ονταιεἰ3σ2οίμηνεἰ3σ2οίμηνεἰ3ϲ2οίμηνεἰ3ϲ2οίμηνεἴ3σ2οισθεεἴ3ϲ2οιϲθεεἴ3σ2οιντοεἴ3ϲ2οιντοεἴ3σ2εσθαιεἴ3ϲ2εϲθαιεἴ3σ2άμην_εἴ3σ2άμην_εἴ3ϲ2άμην_εἴ3ϲ2άμην_εἴ3σ2ασθονεἴ3ϲ2αϲθονεἰ3σ2άσθηνεἰ3σ2άσθηνεἰ3ϲ2άϲθηνεἰ3ϲ2άϲθηνεἰ3σ2άμεθαεἰ3σ2άμεθαεἰ3ϲ2άμεθαεἰ3ϲ2άμεθαεἴ3σ2ησθονεἴ3ϲ2ηϲθονεἰ3σ2ώμεθαεἰ3σ2ώμεθαεἰ3ϲ2ώμεθαεἰ3ϲ2ώμεθαεἴ3σ2ωνταιεἴ3ϲ2ωνταιεἰ3σ2αίμηνεἰ3σ2αίμηνεἰ3ϲ2αίμηνεἰ3ϲ2αίμηνεἴ3σ2αισθεεἴ3ϲ2αιϲθεεἴ3σ2αιντοεἴ3ϲ2αιντοεἰ3σ2άσθωνεἰ3σ2άσθωνεἰ3ϲ2άϲθωνεἰ3ϲ2άϲθωνεἴ3σ2ασθαιεἴ3ϲ2αϲθαιἐ4κ3λύσεοιἐ4κ3λύσεοιἐ4κ3λύϲεοιἐ4κ3λύϲεοιἐ4κ3λύσεσιἐ4κ3λύσεσιἐ4κ3λύϲεϲιἐ4κ3λύϲεϲιἐ2κ1τύπου_ἐ2κ1τύπου_ἐ2κ1τύπων_ἐ2κ1τύπων_ἐ3ν2άροις_ἐ3ν2άροις_ἐ3ν2άροιϲ_ἐ3ν2άροιϲ_ἐ3ν2άροισ_ἐ3ν2άροισ_ἐ4ν3ιέτον_ἐ4ν3ιέτον_ἐ4ν3ίεμεν_ἐ4ν3ίεμεν_ἐπεί3σ2ατεἐπεί3σ2ατεἐπεί3ϲ2ατεἐπεί3ϲ2ατεἐπεί3σ2ατοἐπεί3σ2ατοἐπεί3ϲ2ατοἐπεί3ϲ2ατοἐπιπρό2σ1θἐπιπρό2σ1θἐπιπρό2ϲ1θἐπιπρό2ϲ1θἐπιπρο2σ1θἐπιπρο2ϲ1θ_θεμι2σ1κρ_θεμι2ϲ1κρ_καθυπε2ρ1_καλω2σ1ορ_καλω2ϲ1ορ_καλω2σ1όρ_καλω2σ1όρ_καλω2ϲ1όρ_καλω2ϲ1όρ_κα2ν1είς__κα2ν1είς__κα2ν1είϲ__κα2ν1είϲ__κα2ν1εὶς__κα2ν1εὶϲ__κα2ν1είσ__κα2ν1είσ__κα2ν1εὶσ__κατε2ν1αί_κατε2ν1αί_μελα2ν1άγ_μελα2ν1άγ_μελα2ν1αγ_μελα2ν1άε_μελα2ν1άε_μελα2ν1αέ_μελα2ν1αέ_μελα2ν1αθ_νεώ2σ1οικ_νεώ2σ1οικ_νεώ2ϲ1οικ_νεώ2ϲ1οικ_νεω2σ1οίκ_νεω2σ1οίκ_νεω2ϲ1οίκ_νεω2ϲ1οίκοὕ2σ1τιναςοὕ2ϲ1τιναϲἡτι2σ1οῦν_ἡτι2ϲ1οῦν_οὐδενό2σ1ωοὐδενό2σ1ωοὐδενό2ϲ1ωοὐδενό2ϲ1ωοὐδενο2σ1ώοὐδενο2σ1ώοὐδενο2ϲ1ώοὐδενο2ϲ1ώ_πα3ν2οῖς__πα3ν2οῖϲ__πα3ν2οῖσ__πα3ν2ούς__πα3ν2ούς__πα3ν2ούϲ__πα3ν2ούϲ__πα3ν2οὺς__πα3ν2οὺϲ__πα3ν2ούσ__πα3ν2ούσ__πα3ν2οὺσ__παρε2κ1τρ_παρε2ν1εῖπαρέ3ξ2ει_παρέ3ξ2ει__προσει2σ1_προϲει2ϲ1_προ4σ3θιγ_προ4ϲ3θιγ_πρό3σ2κοπ_πρό3σ2κοπ_πρό3ϲ2κοπ_πρό3ϲ2κοπ_προ3σ2κόπ_προ3σ2κόπ_προ3ϲ2κόπ_προ3ϲ2κόπ_προ3σ2τασ_προ3ϲ2ταϲ_προ3σ2τάτ_προ3σ2τάτ_προ3ϲ2τάτ_προ3ϲ2τάτ_προ3σ2τατ_προ3ϲ2τατ_προ3σ2ταυ_προ3ϲ2ταυ_προ3σ2τεί_προ3σ2τεί_προ3ϲ2τεί_προ3ϲ2τεί_προ3σ2τεν_προ3ϲ2τεν_προ3σ2τέν_προ3σ2τέν_προ3ϲ2τέν_προ3ϲ2τέν_προ3σ2τήσ_προ3σ2τήσ_προ3ϲ2τήϲ_προ3ϲ2τήϲ_προ3σ2τόμ_προ3σ2τόμ_προ3ϲ2τόμ_προ3ϲ2τόμ_προ3σ2τομ_προ3ϲ2τομ_προ3σ2φάζ_προ3σ2φάζ_προ3ϲ2φάζ_προ3ϲ2φάζ_πρό3σ2χημ_πρό3σ2χημ_πρό3ϲ2χημ_πρό3ϲ2χημ_προ3σ2χήμ_προ3σ2χήμ_προ3ϲ2χήμ_προ3ϲ2χήμ_προϋπε2ξ1_πυ2ρ1ήνεμ_πυ2ρ1ήνεμ_πυ2ρ1ηνέμ_πυ2ρ1ηνέμ_σελα2σ1φό_σελα2σ1φό_ϲελα2ϲ1φό_ϲελα2ϲ1φό_σελα2σ1φο_ϲελα2ϲ1φο_συνδιέ2ξ1_συνδιέ2ξ1_ϲυνδιέ2ξ1_ϲυνδιέ2ξ1_συνδιε2ξ1_ϲυνδιε2ξ1ὑπέ3ρ2αις_ὑπέ3ρ2αις_ὑπέ3ρ2αιϲ_ὑπέ3ρ2αιϲ_ὑπέ3ρ2αισ_ὑπέ3ρ2αισ_ὑπερε2κ1τεὑπερε2κ1τίὑπερε2κ1τίὑπε3ρ2εῖς_ὑπε3ρ2εῖϲ_ὑπε3ρ2εῖσ_ὡ2σ1αύτως_ὡ2σ1αύτως_ὡ2ϲ1αύτωϲ_ὡ2ϲ1αύτωϲ_ὡ2σ1αύτωσ_ὡ2σ1αύτωσ_ι2σ1χίλια_ι2σ1χίλια_ι2ϲ1χίλια_ι2ϲ1χίλια_ι2σ1μύρια_ι2σ1μύρια_ι2ϲ1μύρια_ι2ϲ1μύρια_", + 11 : "ἀ2ν1εί2σ1ακἀ2ν1εί2σ1ακἀ2ν1εί2ϲ1ακἀ2ν1εί2ϲ1ακἀ2ν1ει2σ1άκἀ2ν1ει2σ1άκἀ2ν1ει2ϲ1άκἀ2ν1ει2ϲ1άκἀ4ν3έ2κ1τιτἀ4ν3έ2κ1τιτἀ4ν3ε2κ1τίτἀ4ν3ε2κ1τίτἀ3ν2ε3ξ2ίκαἀ3ν2ε3ξ2ίκαἀ3ν2ε3ξ2ικάἀ3ν2ε3ξ2ικάἀ2ν1ερεύνητἀ2ν1ερεύνητἀ2ν1ερευνήτἀ2ν1ερευνήτἀ2ν1ευφήμητἀ2ν1ευφήμητἀ2ν1ευφημήτἀ2ν1ευφημήτἀ2ν1ήλατος_ἀ2ν1ήλατος_ἀ2ν1ήλατοϲ_ἀ2ν1ήλατοϲ_ἀ2ν1ήλατοσ_ἀ2ν1ήλατοσ_ἀ2ν1ήλατον_ἀ2ν1ήλατον_ἀντιπαρε2κ1ἀντιπαρε2ξ1_διαμφι2σ1β_διαμφι2ϲ1βδύ3σ2ουσιν_δύ3σ2ουσιν_δύ3ϲ2ουϲιν_δύ3ϲ2ουϲιν_δύ3σ2οιτον_δύ3σ2οιτον_δύ3ϲ2οιτον_δύ3ϲ2οιτον_δυ3σ2οίτην_δυ3σ2οίτην_δυ3ϲ2οίτην_δυ3ϲ2οίτην_δύ3σ2οιμεν_δύ3σ2οιμεν_δύ3ϲ2οιμεν_δύ3ϲ2οιμεν_δύ3σ2αιτον_δύ3σ2αιτον_δύ3ϲ2αιτον_δύ3ϲ2αιτον_δυ3σ2αίτην_δυ3σ2αίτην_δυ3ϲ2αίτην_δυ3ϲ2αίτην_δύ3σ2αιμεν_δύ3σ2αιμεν_δύ3ϲ2αιμεν_δύ3ϲ2αιμεν_δυ3σ2άντων_δυ3σ2άντων_δυ3ϲ2άντων_δυ3ϲ2άντων_δυ3σ2όμεθα_δυ3σ2όμεθα_δυ3ϲ2όμεθα_δυ3ϲ2όμεθα_δύ3σ2ονται_δύ3σ2ονται_δύ3ϲ2ονται_δύ3ϲ2ονται_δυ3σ2οίμην_δυ3σ2οίμην_δυ3ϲ2οίμην_δυ3ϲ2οίμην_δύ3σ2οισθε_δύ3σ2οισθε_δύ3ϲ2οιϲθε_δύ3ϲ2οιϲθε_δύ3σ2οιντο_δύ3σ2οιντο_δύ3ϲ2οιντο_δύ3ϲ2οιντο_δύ3σ2εσθαι_δύ3σ2εσθαι_δύ3ϲ2εϲθαι_δύ3ϲ2εϲθαι_δυ3σ2αίμην_δυ3σ2αίμην_δυ3ϲ2αίμην_δυ3ϲ2αίμην_δύ3σ2αιντο_δύ3σ2αιντο_δύ3ϲ2αιντο_δύ3ϲ2αιντο_δύ3σ2ασθον_δύ3σ2ασθον_δύ3ϲ2αϲθον_δύ3ϲ2αϲθον_δυ3σ2άσθων_δυ3σ2άσθων_δυ3ϲ2άϲθων_δυ3ϲ2άϲθων_δύ3σ2ασθαι_δύ3σ2ασθαι_δύ3ϲ2αϲθαι_δύ3ϲ2αϲθαι_εἴ3σ2εσθον_εἴ3ϲ2εϲθον_εἴ3σ2οισθονεἴ3ϲ2οιϲθονεἰ3σ2οίσθηνεἰ3σ2οίσθηνεἰ3ϲ2οίϲθηνεἰ3ϲ2οίϲθηνεἰ3σ2οίμεθαεἰ3σ2οίμεθαεἰ3ϲ2οίμεθαεἰ3ϲ2οίμεθαεἴ3σ2αισθονεἴ3ϲ2αιϲθονεἴ3σ2αίσθηνεἴ3σ2αίσθηνεἴ3ϲ2αίϲθηνεἴ3ϲ2αίϲθηνεἰ3σ2αίμεθαεἰ3σ2αίμεθαεἰ3ϲ2αίμεθαεἰ3ϲ2αίμεθαἐ2κ1τύποις_ἐ2κ1τύποις_ἐ2κ1τύποιϲ_ἐ2κ1τύποιϲ_ἐ2κ1τύποισ_ἐ2κ1τύποισ_ἐ2κ1τύπους_ἐ2κ1τύπους_ἐ2κ1τύπουϲ_ἐ2κ1τύπουϲ_ἐ2κ1τύπουσ_ἐ2κ1τύπουσ__μελα2ν1αιγ_μελα2ν1αυγ_μελα2ν1είμ_μελα2ν1είμ_μελα2ν1εῖμ_μελά2ν1ιππ_μελά2ν1ιππ_μελα2ν1ίππ_μελα2ν1ίππ_μελα2ν1όμμ_μελα2ν1όμμ_μελα2ν1ομμ_μελά2ν1οσσ_μελά2ν1οσσ_μελά2ν1οϲϲ_μελά2ν1οϲϲ_μελα2ν1όσσ_μελα2ν1όσσ_μελα2ν1όϲϲ_μελα2ν1όϲϲ_μελά2ν1οστ_μελά2ν1οστ_μελά2ν1οϲτ_μελά2ν1οϲτ_μελα2ν1όστ_μελα2ν1όστ_μελα2ν1όϲτ_μελα2ν1όϲτ_μελά2ν1ουρ_μελά2ν1ουρ_μελα2ν1ούρ_μελα2ν1ούρ_μελα2ν1ουρ_παρα2ν1ίσχ_παρα2ν1ίσχ_παρα2ν1ίϲχ_παρα2ν1ίϲχπαρέ3ξ2εις_παρέ3ξ2εις_παρέ3ξ2ειϲ_παρέ3ξ2ειϲ_παρέ3ξ2εισ_παρέ3ξ2εισ_παρέ3ξ2ετε_παρέ3ξ2ετε_παρέ3ξ2ομαιπαρέ3ξ2ομαι_προ3σ2έσει_προ3σ2έσει_προ3ϲ2έϲει_προ3ϲ2έϲει_προ3σ2εσεί_προ3σ2εσεί_προ3ϲ2εϲεί_προ3ϲ2εϲεί_προ3σ2τερν_προ3ϲ2τερν_πρό3σ2τερν_πρό3σ2τερν_πρό3ϲ2τερν_πρό3ϲ2τερν_προ3σ2τέρν_προ3σ2τέρν_προ3ϲ2τέρν_προ3ϲ2τέρν_προ3σ2υ2ν1_προ3ϲ2υ2ν1_πρό3σ2φαγμ_πρό3σ2φαγμ_πρό3ϲ2φαγμ_πρό3ϲ2φαγμ_προ3σ2φάγμ_προ3σ2φάγμ_προ3ϲ2φάγμ_προ3ϲ2φάγμ_προ3σ2φάττ_προ3σ2φάττ_προ3ϲ2φάττ_προ3ϲ2φάττὡ2σ1α2ν1εί_ὡ2σ1α2ν1εί_ὡ2ϲ1α2ν1εί_ὡ2ϲ1α2ν1εί_ὡ2σ1α2ν1εὶ_ὡ2ϲ1α2ν1εὶ_ι2σ1χίλιοι_ι2σ1χίλιοι_ι2ϲ1χίλιοι_ι2ϲ1χίλιοι_ι2σ1χιλίων_ι2σ1χιλίων_ι2ϲ1χιλίων_ι2ϲ1χιλίων_ι2σ1χίλιαι_ι2σ1χίλιαι_ι2ϲ1χίλιαι_ι2ϲ1χίλιαι_ι2σ1χιλίας_ι2σ1χιλίας_ι2ϲ1χιλίαϲ_ι2ϲ1χιλίαϲ_ι2σ1χιλίασ_ι2σ1χιλίασ_ι2σ1μύριοι_ι2σ1μύριοι_ι2ϲ1μύριοι_ι2ϲ1μύριοι_ι2σ1μυρίων_ι2σ1μυρίων_ι2ϲ1μυρίων_ι2ϲ1μυρίων_ι2σ1μύριαι_ι2σ1μύριαι_ι2ϲ1μύριαι_ι2ϲ1μύριαι_ι2σ1μυρίας_ι2σ1μυρίας_ι2ϲ1μυρίαϲ_ι2ϲ1μυρίαϲ_ι2σ1μυρίασ_ι2σ1μυρίασ_ι2σ1χιλιοστι2ϲ1χιλιοϲτι2σ1μυριοστι2ϲ1μυριοϲτ", + 12 : "ἀ2ν1ει2σ1φορἀ2ν1ει2ϲ1φορἀ2ν1εί2σ1φορἀ2ν1εί2σ1φορἀ2ν1εί2ϲ1φορἀ2ν1εί2ϲ1φορἀ2ν1ει2σ1φόρἀ2ν1ει2σ1φόρἀ2ν1ει2ϲ1φόρἀ2ν1ει2ϲ1φόρἀντιπροσ3κ2υἀντιπροϲ3κ2υδύ3σ2οισθον_δύ3σ2οισθον_δύ3ϲ2οιϲθον_δύ3ϲ2οιϲθον_δυ3σ2οίσθην_δυ3σ2οίσθην_δυ3ϲ2οίϲθην_δυ3ϲ2οίϲθην_δυ3σ2οίμεθα_δυ3σ2οίμεθα_δυ3ϲ2οίμεθα_δυ3ϲ2οίμεθα_δύ3σ2αισθον_δύ3σ2αισθον_δύ3ϲ2αιϲθον_δύ3ϲ2αιϲθον_δυ3σ2αίσθην_δυ3σ2αίσθην_δυ3ϲ2αίϲθην_δυ3ϲ2αίϲθην_δυ3σ2αίμεθα_δυ3σ2αίμεθα_δυ3ϲ2αίμεθα_δυ3ϲ2αίμεθα_δύ3σ2αισθαι_δύ3σ2αισθαι_δύ3ϲ2αιϲθαι_δύ3ϲ2αιϲθαι_ἐπεί3σ2ατον_ἐπεί3σ2ατον_ἐπεί3ϲ2ατον_ἐπεί3ϲ2ατον_ἐπει3σ2άτην_ἐπει3σ2άτην_ἐπει3ϲ2άτην_ἐπει3ϲ2άτην_ἐπεί3σ2αμεν_ἐπεί3σ2αμεν_ἐπεί3ϲ2αμεν_ἐπεί3ϲ2αμεν_ἐπει3σ2άμην_ἐπει3σ2άμην_ἐπει3ϲ2άμην_ἐπει3ϲ2άμην_ἐπεί3σ2ασθε_ἐπεί3σ2ασθε_ἐπεί3ϲ2αϲθε_ἐπεί3ϲ2αϲθε_ἐπεί3σ2αντο_ἐπεί3σ2αντο_ἐπεί3ϲ2αντο_ἐπεί3ϲ2αντο__θεοι2σ1εχθρ_θεοι2ϲ1εχθρ_καταδυ2σ1ωπ_καταδυ2ϲ1ωπ_κατεδυ2σ1ώπ_κατεδυ2σ1ώπ_κατεδυ2ϲ1ώπ_κατεδυ2ϲ1ώππαρέ3ξ2ετον_παρέ3ξ2ετον_παρε3ξ2έτην_παρε3ξ2έτην_παρέ3ξ2ομεν_παρέ3ξ2ομεν_παρέ3ξ2ουσι_παρέ3ξ2ουσι_παρέ3ξ2ουϲι_παρέ3ξ2ουϲι_παρέ3ξ2εται_παρέ3ξ2εται_παρέ3ξ2εσθε_παρέ3ξ2εσθε_παρέ3ξ2εϲθε_παρέ3ξ2εϲθε__πρό3σ2ωθεν__πρό3σ2ωθεν__πρό3ϲ2ωθεν__πρό3ϲ2ωθεν__συμπαρει2σ1_ϲυμπαρει2ϲ1_τεσσαρε2σ1κ_τεϲϲαρε2ϲ1κ_χαρι2σ1ανδρ_χαρι2ϲ1ανδρ_χαρι2σ1άνδρ_χαρι2σ1άνδρ_χαρι2ϲ1άνδρ_χαρι2ϲ1άνδρὡ2σ1πε2ρ1εί_ὡ2σ1πε2ρ1εί_ὡ2ϲ1πε2ρ1εί_ὡ2ϲ1πε2ρ1εί_ὡ2σ1πε2ρ1εὶ_ὡ2ϲ1πε2ρ1εὶ_ι2σ1χιλίοις_ι2σ1χιλίοις_ι2ϲ1χιλίοιϲ_ι2ϲ1χιλίοιϲ_ι2σ1χιλίοισ_ι2σ1χιλίοισ_ι2σ1χιλίους_ι2σ1χιλίους_ι2ϲ1χιλίουϲ_ι2ϲ1χιλίουϲ_ι2σ1χιλίουσ_ι2σ1χιλίουσ_ι2σ1χιλίαις_ι2σ1χιλίαις_ι2ϲ1χιλίαιϲ_ι2ϲ1χιλίαιϲ_ι2σ1χιλίαισ_ι2σ1χιλίαισ_ι2σ1μυρίοις_ι2σ1μυρίοις_ι2ϲ1μυρίοιϲ_ι2ϲ1μυρίοιϲ_ι2σ1μυρίοισ_ι2σ1μυρίοισ_ι2σ1μυρίους_ι2σ1μυρίους_ι2ϲ1μυρίουϲ_ι2ϲ1μυρίουϲ_ι2σ1μυρίουσ_ι2σ1μυρίουσ_ι2σ1μυρίαις_ι2σ1μυρίαις_ι2ϲ1μυρίαιϲ_ι2ϲ1μυρίαιϲ_ι2σ1μυρίαισ_ι2σ1μυρίαισ_", + 13 : "ἀ2ν1ερυθρίαστἀ2ν1ερυθρίαστἀ2ν1ερυθρίαϲτἀ2ν1ερυθρίαϲτἀ2ν1ερυθριάστἀ2ν1ερυθριάστἀ2ν1ερυθριάϲτἀ2ν1ερυθριάϲτἐπεί3σ2ασθον_ἐπεί3σ2ασθον_ἐπεί3ϲ2αϲθον_ἐπεί3ϲ2αϲθον_ἐπει3σ2άμεθα_ἐπει3σ2άμεθα_ἐπει3ϲ2άμεθα_ἐπει3ϲ2άμεθα__κατε2ξ1α2ν1ί_κατε2ξ1α2ν1ίὁ2σ1τι2σ1οῦν_ὁ2ϲ1τι2ϲ1οῦν_παρέ3ξ2εσθον_παρέ3ξ2εσθον_παρέ3ξ2εϲθον_παρέ3ξ2εϲθον_παρε3ξ2όμεθα_παρε3ξ2όμεθα_παρέ3ξ2ονται_παρέ3ξ2ονται_ι2σ1χιλιάκις_ι2σ1χιλιάκις_ι2ϲ1χιλιάκιϲ_ι2ϲ1χιλιάκιϲ_ι2σ1χιλιάκισ_ι2σ1χιλιάκισ_ι2σ1μυριάκις_ι2σ1μυριάκις_ι2ϲ1μυριάκιϲ_ι2ϲ1μυριάκιϲ_ι2σ1μυριάκισ_ι2σ1μυριάκισ_", + 14 : "_κατε2ξ1α2ν1έσ_κατε2ξ1α2ν1έσ_κατε2ξ1α2ν1έϲ_κατε2ξ1α2ν1έϲ", + 20 : "ὁποιου2σ1τινα2σ1οῦν_ὁποιου2ϲ1τινα2ϲ1οῦν_" + } +}; diff --git a/resources/viewer/hyphenate/patterns/gu.js b/resources/viewer/hyphenate/patterns/gu.js index 3bdf3ca7f2..8af78414fb 100644 --- a/resources/viewer/hyphenate/patterns/gu.js +++ b/resources/viewer/hyphenate/patterns/gu.js @@ -1,12 +1,12 @@ -// For questions about the Gujarati hyphenation patterns +// For questions about the Gujarati hyphenation patterns // ask Santhosh Thottingal (santhosh dot thottingal at gmail dot com) -Hyphenator.languages.gu = { +Hyphenator.languages['gu'] = { leftmin : 2, rightmin : 2, shortestPattern : 1, longestPattern : 1, - specialChars : unescape('આઅઇઈઉઊઋએઐઔકગખઘઙચછજઝઞટઠડઢણતથદધનપફબભમયરલવશષસહળિીાુૂૃેાોૈૌ્ઃં%u200D'), + specialChars : unescape("આઅઇઈઉઊઋએઐઔકગખઘઙચછજઝઞટઠડઢણતથદધનપફબભમયરલવશષસહળિીાુૂૃેાોૈૌ્ઃં%u200D"), patterns : { - 2 : 'અ1આ1ઇ1ઈ1ઉ1ઊ1ઋ1એ1ઐ1ઔ1િ1ા1ી1ુ1ૂ1ૃ1ે1ો1ૌ1્2ઃ1ં11ક1ગ1ખ1ઘ1ઙ1ચ1છ1જ1ઝ1ઞ1ટ1ઠ1ડ1ઢ1ણ1ત1થ1દ1ધ1ન1પ1ફ1બ1ભ1મ1ય1ર1લ1વ1શ1ષ1સ1હ1ળ' + 2 : "અ1આ1ઇ1ઈ1ઉ1ઊ1ઋ1એ1ઐ1ઔ1િ1ા1ી1ુ1ૂ1ૃ1ે1ો1ૌ1્2ઃ1ં11ક1ગ1ખ1ઘ1ઙ1ચ1છ1જ1ઝ1ઞ1ટ1ઠ1ડ1ઢ1ણ1ત1થ1દ1ધ1ન1પ1ફ1બ1ભ1મ1ય1ર1લ1વ1શ1ષ1સ1હ1ળ" } }; diff --git a/resources/viewer/hyphenate/patterns/hi.js b/resources/viewer/hyphenate/patterns/hi.js index f92332c9ac..84068a936a 100644 --- a/resources/viewer/hyphenate/patterns/hi.js +++ b/resources/viewer/hyphenate/patterns/hi.js @@ -1,12 +1,12 @@ -// For questions about the Hindi hyphenation patterns +// For questions about the Hindi hyphenation patterns // ask Santhosh Thottingal (santhosh dot thottingal at gmail dot com) -Hyphenator.languages.hi = { +Hyphenator.languages['hi'] = { leftmin : 2, rightmin : 2, shortestPattern : 1, longestPattern : 1, - specialChars : unescape('आअइईउऊऋऎएऐऒऔकगखघङचछजझञटठडढणतथदधनपफबभमयरलवशषसहळऴऱिीाुूृॆेॊाोैौ्ःं%u200D'), + specialChars : unescape("आअइईउऊऋऎएऐऒऔकगखघङचछजझञटठडढणतथदधनपफबभमयरलवशषसहळऴऱिीाुूृॆेॊाोैौ्ःं%u200D"), patterns : { - 2 : 'अ1आ1इ1ई1उ1ऊ1ऋ1ऎ1ए1ऐ1ऒ1औ1ि1ा1ी1ु1ू1ृ1ॆ1े1ॊ1ो1ौ1्2ः1ं11क1ग1ख1घ1ङ1च1छ1ज1झ1ञ1ट1ठ1ड1ढ1ण1त1थ1द1ध1न1प1फ1ब1भ1म1य1र1ल1व1श1ष1स1ह1ळ1ऴ1ऱ' + 2 : "अ1आ1इ1ई1उ1ऊ1ऋ1ऎ1ए1ऐ1ऒ1औ1ि1ा1ी1ु1ू1ृ1ॆ1े1ॊ1ो1ौ1्2ः1ं11क1ग1ख1घ1ङ1च1छ1ज1झ1ञ1ट1ठ1ड1ढ1ण1त1थ1द1ध1न1प1फ1ब1भ1म1य1र1ल1व1श1ष1स1ह1ळ1ऴ1ऱ" } }; diff --git a/resources/viewer/hyphenate/patterns/hu.js b/resources/viewer/hyphenate/patterns/hu.js index a9853ecdde..10b2017a79 100644 --- a/resources/viewer/hyphenate/patterns/hu.js +++ b/resources/viewer/hyphenate/patterns/hu.js @@ -1,12 +1,12 @@ -// For questions about the hungarian hyphenation patterns +// For questions about the hungarian hyphenation patterns // ask Nagy Péter (nagy dot pite at gmail dot com) -Hyphenator.languages.hu = { - 'leftmin' : 2, - 'rightmin' : 2, - 'shortestPattern' : 2, - 'longestPattern' : 14, - 'specialChars' : 'áéíóöőúüű', - 'patterns' : { +Hyphenator.languages['hu'] = { + leftmin : 2, + rightmin : 2, + shortestPattern : 2, + longestPattern : 14, + specialChars : "áéíóöőúüű", + patterns : { 3 : "_a2_á2_b2_c2_d2_e2_é2_f2_g2_h2_i2_í2_j2_k2_l2_m2_n2_o2_ó2_ö2_ő2_p2_q2_r2_s2_t2_u2_ú2_ü2_ű2_v2_w2_x2_y2_z22a_a1aa1áa1ea1éa1ia1ía1oa1óa1öa1őa1ua1úa1üa1ű2á_á1aá1áá1eá1éá1iá1íá1oá1óá1öá1őá1uá1úá1üá1ű2b_1ba1bá1be1bé1bi1bí1bo1bó1bö1bő1bu1bú1bü1bű2c_1ca1cá1ce1céc2h1ci1cí1co1có1cö1cőc2s1cu1cú1cü1cűc2z2d_1da1dá1de1dé1di1dí1do1dó1dö1dő1du1dú1dü1dűd2z2e_e1ae1áe1ee1ée1ie1íe1oe1óe1öe1őe1ue1úe1üe1ű2é_é1aé1áé1eé1éé1ié1íé1oé1óé1öé1őé1ué1úé1üé1ű2f_1fa1fá1fe1fé1fi1fí1fo1fó1fö1fő1fu1fú1fü1fű1fy2g_1ga1gá1ge1gé1gi1gí1go1gó1gö1gő1gu1gú1gü1gűg2y2h_1ha1há1he1hé1hi1hí1ho1hó1hö1hő1hu1hú1hü1hű2i_i1ai1ái1ei1éi1ii1íi1oi1ói1öi1ői1ui1úi1üi1ű2í_í1aí1áí1eí1éí1ií1íí1oí1óí1öí1őí1uí1úí1üí1ű2j_1ja1já1je1jé1ji1jí1jo1jó1jö1jő1ju1jú1jü1jű2k_1ka1ká1ke1ké1ki1kí1ko1kó1kö1kő1ku1kú1kü1kű1ky2l_1la1lá1le1lé1li1lí1lo1ló1lö1lő1lu1lú1lü1lűl2y2m_1ma1má1me1mé1mi1mí1mo1mó1mö1mő1mu1mú1mü1mű2n_1na1ná1ne1né1ni1ní1no1nó1nö1nő1nu1nú1nü1nűn2y2o_o1ao1áo1eo1éo1io1ío1oo1óo1öo1őo1uo1úo1üo1ű2ó_ó1aó1áó1eó1éó1ió1íó1oó1óó1öó1őó1uó1úó1üó1ű2ö_ö1aö1áö1eö1éö1iö1íö1oö1óö1öö1őö1uö1úö1üö1ű2ő_ő1aő1áő1eő1éő1iő1íő1oő1óő1öő1őő1uő1úő1üő1ű2p_1pa1pá1pe1pé1pi1pí1po1pó1pö1pő1pu1pú1pü1pű2q_1qa1qá1qe1qé1qi1qí1qo1qó1qö1qő1qu1qú1qü1qű2r_1ra1rá1re1ré1ri1rí1ro1ró1rö1rő1ru1rú1rü1rű2s_1sa1sá1se1sé1si1sí1so1só1sö1ső1su1sú1sü1sűs2z2t_1ta1tá1te1té1ti1tí1to1tó1tö1tő1tu1tú1tü1tűt2y2u_u1au1áu1eu1éu1iu1íu1ou1óu1öu1őu1uu1úu1üu1ű2ú_ú1aú1áú1eú1éú1iú1íú1oú1óú1öú1őú1uú1úú1üú1ű2ü_ü1aü1áü1eü1éü1iü1íü1oü1óü1öü1őü1uü1úü1üü1ű2ű_ű1aű1áű1eű1éű1iű1íű1oű1óű1öű1őű1uű1úű1üű1ű2v_1va1vá1ve1vé1vi1ví1vo1vó1vö1vő1vu1vú1vü1vű2w_1wa1wá1we1wé1wi1wí1wo1wó1wö1wő1wu1wú1wü1wű2x_1xa1xá1xe1xé1xi1xí1xo1xó1xö1xő1xu1xú1xü1xű2y_2z_1za1zá1ze1zé1zi1zí1zo1zó1zö1zőz2s1zu1zú1zü1zű", 4 : "_cs2_kr2_sc2_sk2_sp2_st2_sz2_zs2c2cs1cha1chá1che1ché1chi1chí1cho1chó1chö1chő1chu1chú1chü1chű1csa1csá1cse1csé1csi1csí1cso1csó1csö1cső1csu1csú1csü1csű1cza1czá1cze1czé1czi1czí1czo1czó1czö1cző1czu1czú1czü1czű1czyd2dz1dza1dzá1dze1dzé1dzi1dzí1dzo1dzó1dzö1dző1dzu1dzú1dzü1dzűg2gy1ghy1gya1gyá1gye1gyé1gyi1gyí1gyo1gyó1gyö1győ1gyu1gyú1gyü1gyűl2ly1lya1lyá1lye1lyé1lyi1lyí1lyo1lyó1lyö1lyő1lyu1lyú1lyü1lyűn2ny1nya1nyá1nye1nyé1nyi1nyí1nyo1nyó1nyö1nyő1nyu1nyú1nyü1nyűs2sz1sza1szá1sze1szé1szi1szí1szo1szó1szö1sző1szu1szú1szü1szű1thyt2ty1tya1tyá1tye1tyé1tyi1tyí1tyo1tyó1työ1tyő1tyu1tyú1tyü1tyű1zsa1zsá1zse1zsé1zsi1zsí1zso1zsó1zsö1zső1zsu1zsú1zsü1zsűz2zs", 5 : "_ak2h_ako2_at2h_aze2_ál1é_ál1ú_áre2_áré2_átó2_át1u_át1ű_ba2u_bei2_da2i_da2u_eb1í_eg2é_el1í_elo2_elö2_el1u_elü2_et2h_ez1á_éj1u_ék1á_ék1o_érü2_fas2_fat2_gu2i_he2i_ín1e_íz1a_kás2_kiá2_kió2_kiű2_leü2_ly1o_ma2e_me2i_műi2_mű1s_oda1_öni2_ön1í_ön3n_ön1o_ön1ő_ön1s_ön1ü_öte2_őa3l_ői3r_őr1o_ős1o_ős1p_ős1ú_őz1ő_őz3s_őz1u_pa2i_pe2s_rái2_rát2_s3gr_szk2_szt2_tbc1_té3k_tőa2_tőe2_uto2_új1e_úr1e_út1ő_űri2_űr1s_űrt2_zai2_ze2iaa2beaa2céaa2chaa2daaa2dóaa2duaa2foaa2gaaa2giaa2góaa2gyaa2jáaa2kaaa2káaa2koaa2kua2al_aa2laaa2láaa2léaa2loaa2luaa2maaa2naaa2neaa2niaa2noa2ansaa2nyaa2paaa2páaa2poaa2puaa2raaa2ráaa2réaa2ria2arlaa2roaa2szaa2toaa2tyaa2uraa2utaa2vaa2avoaa2zoaá2béaá2csaá2fáaá2gaaá2gáaá2géaá2giaá2goaá2guaá2gyaá2híaá2jua2ál_aá2laaá2loaá2poaá2raaá2ráaá2réaá2riaá2roaá2ruaá2rúaá2saaá2sáaá2soaá2sóaá2taaá2téaá2tíaá2toaá2tuaá2túaá2tüaá2záaá2zó2abab2abal2aban2abar2abáb2abád2abán2abázabb2a2abeaabeá22abec2abeé2abef2abeh2abei2abej2abem2abev2abék2abél2abén2abérab1flab1fr2abic2abie2abir2abit2abizab1kr2ablo2abog2aboh2abok2abom2abotabö2lab1pr2abri2abróab1stab1üsab1üvac2cöa2ce_ace2l2acenac1fra2cháac3híac3hóac1ívac2kűac2luac1ösac1őrac1plac1pr2acsi2acsíacs1sac1trac1újac1ügac1ürac1üzac3zaac3záac3zeac3zsac3zu2adarade2gade2ia2deuadé2sad1flad1gr1adhé2adia2adid2adin2adip2adis2adivad2jiad1kr2adob2adoc2adolad1plad1pr2adrá2adroad1spad1st2adug2adum2adupadú2tad1üzad1űzae2béae2ceae2csae2déae2dzae2geae2géae2gyae2heae2keae2kéae2laae2leae2loae2lőae2luae2meae2méae2miae2muae2neae2peae2péae2piae2poae2réae2róae2rőae2seae2séae2siae2sőae2süae2szae2taae2táae2teae2tiae2tűae2vaae2veae2véae2viae2voae2vőae2xeae2züaé2geaé2géaé2gőaé2heaé2jeaé2keaé2kíaé2leaé2léaé2liaé2lőaé2lüaé2lűaé2neaé2píaé2püaé2riaé2teaé2vaaé2veaé2véaé2viaé2vü2afa_2afak2afal2afam2afao2afar2afas2afék2afén2afér2afés1afféaf2le2afoc2afog2afok2afol2afon2afos2afotaf2rí2afroaf3tá2agala2gap2agazagá2cag1bla2ge_age2lage2sag1flag1fr1agg_1agglagi3aagi2óag1ínag1ívag1klag1kr2agomag1plag1pr2agráag1skag1spag1srag1stagsz2ag1trag1űrag1űz2agyűai2boa2iékai2gaai2gáai2geai2géai2gyai2iaai2ibai2ihai2ijai2inai2irai2itai2jeaika2aiki2ai2kőai2küa2ilba2ile2aill2aimi2aimpainá22aindai2ne2ainf2aing2ainp2ains2aintai2nüai2paa2ir_ai2réai2ri2airoai2si2aisk2aism2aist2aiszai2zéaí2géaí2jaaí2jáaí2juaí2raaí2ráaí2roaí2róaí2ruaí2téaí2váaí2veaí2véaí2viaí2vóaí2vüaí2vűaí2zeaí2zéaí2züaí2zűajá2c2ajárajá2zaj1blaj1brajé2raj1flaj1fraj1íraj1ízaj1klaj1öbaj1őraj1plaj1praj1shaj1skaj1spaj1ügaj1ülaj1üsaj1üzaj1űzaj2zíaj2zü2akab2akal2akam2akan2akao2akap2akau2akav2akazak1bla2ke_2akém2akés2akézak1flak1frak1gr2akia2akib2akic2akid2akié2akif2akih2akií2akij2akil2akim2akin2akir2akis2akit2akiv2akiz2akoa2akoc2akof2akom2akoo2akop2akosak1plak1prak1ps2akre2akré2akri2akríak1sp2akunak1yaal1blal1bra2le_2alea2aleb2alec2aleh2alej2alem2alen2alep2alesaleü22alev2alex2aléc2alég2alén2alétal1gr2alic2alik2alimal1íj1aljb1aljc1aljd1aljf1aljg1aljhal2jí1aljj1aljk1aljl1aljm1aljn1aljr1aljs1aljt1aljú1aljv1aljzal2líal2lü1allű2alob2alop2alovalóó2al1shal1skal1slal1smal1spalsz2al1tyalu1pal1ügal1ülal1ünal1üral1üsal1ütal1üval1űral1űz1alvóa2lyö2amad2amag2amajamaó22amap2amasam1dra2me_2amegamé2kam1fram1grami2gamió2a2mígam1klam1kr2amod2amos2amot2amozam1ösam1ötam1ősam1skam1spam1sram1st2amunam1ügam1ütam1üz2anad2anai2anap2anav2anátan1brance2an2dűan1dy2anem2aneu2anevane2zan1flan2gían2güan2gűani2g2anip2anív2anor2anosan1plan1pran2sö2anukanü2lan1űran1űzany1d2anye2anyi2anyí2anyoany1sanyt22anyú2anyüao2ázao2beao2csao2daao2dúao2kaao2káao2laao2moao2páao2peao2raao2roao2soao2utao2veao2viao2xiaóá2ra2óbáa2óbia2óboaó2ceaó2dáa2ódia2ófáa2ófea2ófoa2ófőa2ófüa2óhéa2óhia2óhüa2óila2óisa2ókáa2ókea2ókuaó2laa2ólea2óléa2óliaó2loaó2lua2ómea2ómia2ómoa2ónéa2ónöa2ónőaó2ráa2óréaó2ria2ósía2ósűa2ótaa2ótea2ótéaó2voaó2vóaö2böaö2csaö2déaö2koaö2köaö2leaö2léaö2lőaö2náaö2röaö2veaö2viaö2vöaö2zöaő2reaő2réaő2riaő2röaő2rüaő2seaő2söaő2sz2apal2apap2apavap1blap1dra2pe_ape2mape2sap1flap1grap1ívap1klap1krap1kvapmű1ap1ölap1önap1övap1phap1py2aproapuá2ap1űrap1wh2arad2arag2araj2arak2arác2arámar2cóar2cőar2cüar2cűar2döar2düare2ia2rewaréé22arémaré1p2ari_2aria2arip2arizar2müaró1par1őrar1ősar1plar1prar1ry2art_ar1üzasag22asaj2asal2asap2asar2asav2asám2asávas1blase2kase2t2asém2aséras1fras1glas1gr2asiv2asík2asín2asír2askáas1kl2asoras1őrasp2r2asta2astá2asti2astí2asto2astr2astú2asugasu2ras1űz2aszí2asző2aszü2aszűasz1z2atab2atag2atak2atan2atap2atar2atáb2atág2atáj2atál2atám2atár2atás2atávat1blat1brat1clat1dr2atég2atél2atém2atér2atétat1fjat1flat1frat1glat1gr2ati_ati2g2atin2atip2atir2atis2atit2atíp2atír2atki2atko2atkö2atkuat1kv2atoratö2lat1plat1prat1ps2atréat1shat1skat1slat1spat1stattó22atud2atul2atur2atúl2atük2atün2atüz2atűza2udáau2deau2gaau2goaul2lau1phau2röa2ut_2autáa2utia2utóa2utra2uttau2tuau2zíau2zsa2uzúaú2jíaú2joaú2réaú2szaú2tiaú2toaü2díaü2düaü2geaü2gyaü2leaü2léaü2liaü2löaü2lőaü2lüaü2nőaü2reaü2ríaü2röaü2rüaü2szaü2teaü2téaü2tiaü2veaü2vöaü2zéaű2riaű2röaű2zeaű2zéaű2ziaű2zöaű2ző2avad2avak2avád2avárav1bl2aves2avet2avezav1kravo1sav1ősav1őzav1prav1spav1stav1üra2wagaw2hiax1blax1egax1elax1írax1ösax1özax1prax1újax1üzax1űra1ye_a1yeda1yeia1yeka1yena1yesayet2ay1fla1yi_ay1ila1yitayma2az2du2azolazót2az4séaz3spaz3szaz1utaz1üzáa2daáa2dááa2doáa2dóáa2duáa2jááa2kaáa2laáa2luáa2raáa2száa2utáa2vaáá2csáá2gaáá2gyáá2juáá2muáá2raáá2ruáá2sááá2síáá2soáá2sóáá2suáá2zoáá2zuába1páb2bűáb1dráb1frábi2gáb1kláb1kráb1öbáb1öláb1önáb1ösáb1öváb1őráb1práb1spáb1stáb1tráb1ügáb1üsáb1ütáb1üvác1enác1erác3heác1ívác1órácsí2ács1sá1csyác1úrác1ülác1üráda1pád1drád3dzádéd2ád1ívád1klád1krádós2ádö2bád1övád1prád1psád1stád1trád3zaád3zúáe2csáe2dzáe2geáe2géáe2gyáe2leáe2lőáe2meáe2reáe2rőáe2seáe2séáe2siáe2sőáe2süáe2teáe2veáe2véáe2vőáé2deáé2geáé2géáé2gőáé2heáé2keáé2leáé2neáé2píáé2püáé2reáé2réáé2riáé2rőáé2rüáé2teá2fábá2fátáf1drága2cá2gadága2nág1blág1brág1efág1flág1frág1grági2dági2gág1klág1krág1kvágö2rág1plág1prág1pság1shág1skág1slág1spág1stágsz2ág1trágu2nág1üdág1ünág1üvág1üzág1űzái2dőái2gaái2géái2gyái2haái2jeái2máái2ráái2szái2taái2váái2voái2zéáí2géáí2rááí2veáí2voáj1bláj1bráj2cháj1exájé2ráj1fláj1fráj1íjáj1íráj1íváj1ízáj2küáj2nüáj1ökáj1öláj1őráj1ősáj1pláj1práj1snáj1spáj1ügáj1üláj1üráj1üváj1üzáj1űrák1blák1flák1fráki2gáki2ták1írákö2lák1prák1spák1srák1stáku2rák1újákú2ták1üdákü2lák1ünák1ürák1űr2ála_2álalál1blál1brál1dyál1ezál1flál1frál1gráli2dáli2gál1ínál1ítál2lüálóa2álóá2álóó2álót2ál1öbál1özál1skál1slál1stálu2nálú2tál1ügál1ünál1ürál1ütál1üvál1üzál1űrál1űzá2lyíá2lyőály1sámaó2ámá2cám1áfám1blám1dráme2tám1frám1grám1ígám1ízám1klám1krám1kvám1ölám1önám1örám1ösám1ötám1övám1őzám1skám1smám1snám1spám1stám1üdám1ügám1ürám1ütám1üvám1üzá3műtánae2ána2pán1blán1brán2cőán2cüán2czáne2dán1esán1ezáng3gán2gíán2güán1ígán1íván1ízá3nomán1ökán1ömán1plán1pránst2án1úránú2tán1űzáo2csáo2kááo2koáo2moáo2peáo2soáó2haáó2vaáö2leáö2möáö2reáö2röáő2száp1dráp1egápe2nápi2táp1őráp2roáp1ügáp1üzárá2cárá2gár1blár1bráre2áár1ejáre2nár1flár1glári2gá2rioár1ívár1öcár1ökár1örár1övár1plárs3sáruá2á2rudá2rujá2rurá2rutár1ünár1ürár1ütár1üzár1űrása2bása2nás1blás1brás1exás1ezás1flás1frás1glás1grási2gás1ígásí2rás1klás1kv1ásnuá2sórá2sósá2sóvás1önásp2rás1psás1srássz2ásu2tás1üdás1űrászt2ász1zátá2cát1álátá2pát1blát1br1átbuát1drát1eját1exátée2áté2gáté2pát1frát1gráti2dáti2gát1ígát1klát1oját1opát1öbátö2lát1önát1ötát1plát1prát1psát1skát1slát1smát1spát1srát1státu2nát1úját1ülát1űráu2gaáu2goáu2nááu2noáu2nóáu2nuáu2száu2taáu2tááú2száü2geáü2gyáü2leáü2léáü2löáü2lőáü2lüáü2ríáü2téáü2tiáü2töáü2tőáü2tüáü2vöáv1fráv1íráv1öráv1ösáv1öváv1őráv1práv1skáv1spáv1stáv1trávú2táv1ügáza2náz1bláz1efáz1epáz1exáz1fláz1frázi2záz1íjáz1öbáz1ödáz1ömáz1önáz1ösáz1özáz1plá2zseá2zsöázs1sá2zsüázü2láz1ürázy1ibaa2dba2bübae2rbaé2rba1flbai2zba2jüba2jű2bakcbak1kba2kybao2kbao2lbaó2rba2udbau2rba1yibá2böbá2jübálé22bálmbá2löbá2lübá2pobá2rí2bárúbá2rübá2sebá2töbá2tübba2tbb1drbbe2gbb1frbb1klbb1krbbö2rbb1plbb1prbb1skbb1spbbu2rbb2víbc3szbdé2nbd2rábd2robd2róbe2acbea2dbea2jbea2kbea2lbea2nbea2rbea2sbea2vbeá2jbeá2sbeá2zbe1blbe2dzbee2lbee2sbeé2rbe1flbe1frbei2gbei2sbeí2r2bejtbe2líbeo2kbeo2lbeo2mbeó2vbeö2rbe2rőbeu2gbeu2tbeü2t2bédé2bédh2bédj2bédlbé2dö2bédr2bédü2bédvbé2gőbé2lí2béljbé2lóbé2löbélt2bé2lúbé2píbé2pübé2rábé2ríbé2röbér1sbért2bé2rúbfé2nbf2labf2rábf2rebf2ribf2robg2rabg2rábia2dbi2aebi2agbia2vbi1brbi1bybida2bi2edbie2lbi1frbik1sbi2lübin3nbi2nübi1nybi2oabi2oábi2obbi2ocbi2odbi2oebi2oébi2ofbi2okbi2olbi2ombi2orbió2rbi1pr2bismbi2söbis3sbiú2sbí2jabí2vebí2vébí2vűbk2libk2lubk2rabk2rábk2rebk2rébk2ribk2ríbk2robk2róbl2bebles2bleü2bl2hebl2nebl2rebl2rőbl2tőbo2aábo2abbo2adbo2aebo2afbo2ahbo2ajbo2ambo2arbo2atbo2avbo2cebo2cébo1dybo2eibo1flbona12bondbo2nübo2ogbo2okbo2ombo2otbo2pebo2rebo2röbo2rőbo2rübo2tíbo2töbotú2bo2tübo2tűbo2uibo2ulbo2urbo1yabo1yábo1yébo1yibo1yobo1yubo2zíbo2zübo2zűbóa2dbóá2gbóá2rbó2bébó2chbó2cübó1flb1ólm2bórábóró2bó2röbórt2bó2rübó1szbö2chbö2lá2bölb2bölk2bölrbö2lúb1ömlbö2nábö2rabö2robö2ve2bőrlbő2rőbő2rú2bősibp2labp2lábp2lebp2rebp2rébp2ríbp2robp2rób2ricbs2lábs2pebs2pibs2pobs2tabs2tábs2tibs2tíbs2túbsz2fbt2rábt2rébu2chbué2rbu2ilb1urb2burnbu2sebú2jí2búr_2búrt2búszb1útmbü2dübü2gebü2gybü2kubü2ne2bürübü2zebű2nabű2nábűn1nbű2nobű2nóbű2nubű2nűbű2ribű2zoby2teca2chca2escal1pcal1sca2lüca1lycaó2rca2pócast2cau2ncá2gacá2gúcá2gycá2lacá2ne2cárkc1áthcb2locb2racc1blcc1efcc3hecc3hícc3hőcc3húcc1írcc1klcc1oácc1öncc1öscc1özcc1plcc1prccs1sc3csúc3csűcc1újcc1ürcc3zácc3zecc3zscd2racd2rácea2lce2atce2auceá2rce1blce2chce2guce2gúce1klceo2lceo2r2ceth2cetnceü2tce2vőcég1gcégo2cé2gócé2göcé2gúcéha2cé2hucé2húcé2lacé2lícé2lócélt2célu2cé2lücé2pícé2pücér1scé2rúcés3scf2lócf2racf2ricf2rocg2racg2ric3had2chamc3házch1bl2chevc3hiúch1prch1scch1spchu2rci2aaci2aáci2acci2aeci2aécia1fci2ahci2aíci2ajci2amci2aoci2aóci2aöci2aőci2arci2aúci2aüci2aűci2avci2azci2áócie2r2cinfci2nöci2nüci2odci2ofci2ogci2oici2olci2opcio2vci2óaci2óáci2ócci2óeci2ógci2óíci2ólci2óoci2óóci2óöci2óőci2óúci2óüciő2rci1tyciu2tcí2jací2jécí2mící2mocí2möcí2mőcí2mucí2rácí2rócí2vácí2vecí2vécí2zscí2zücke1pck1flck1frck1klck2luck1spck1űrck2vacli2sco2atco2ázco2beco2euco2káco2keco2leco2olco1py2corvcos3sco2ulco2unco2uvco2vicó2vóc1ösvc1öszc1ötbc1ötfc1öthc1ötkc1ötmc1ötnc1ötrc1ötsc1öttc1öv_cö2zöcő2rücp2lacp2racp2recp2récp2ricp2rocp2ró2csáf2cságcs1blcs1br2cségcs1frcs1glcs1grcsiá2cs1klcs1kv3cső_3csőb3csővcsp2rcs1pscs1slcst2r2csug2csüdc3széc3szic3szíc3szőcs3zscsz2tcs3zúc3szüc3szűct2ract2rect2réct2rict2roct2rücu2lücú2jíc1úr_c1úrrcú2tocü2gecü2gycü2lőc1ünncü2recü2rícü2rücü2tecü2técü2tőcü2vecü2zecű2zőc3zéhdaa2ddaát1da2czdae2rdaé2ddaé2rdag3gda1kldal3lda2lüdao2kdaó2rdaó2v2daptda2updau2sdaü2tdaü2zda1yeda1yédá2fádá2gadá2gádá2gúdá2lüdámu2dá2podá2rádá2rídá2rödá2rődárt2dá2rüdá2rűdá2södá2sődást23dátudb2lodb2lúdb2rodb2ródc2luddí2sdd2rádd2ród3dzsde2aade2aáde2acdea2dde2aede2aéde2ahde2aíde2amdea2nde2aode2apde2atde2epdee2sdeé2rde1frdeg3g2degodegö22degzde2ifdei2gdeí2rdek1s2delödem1pde2odde2ofde2ojde2omde2otde2rőderu22desgdesú2de2xadexi2de2xíde2xö2dezadé2dudé1fldég3gdé2gídé2gódég1sdé2gúdé2gűdé2kídékó2dé2kődé2lodéna2dép2idé2rádé2rídéró2dé2rödé1rydésa2désá2dé2sídé2súdf2lodf2lódf2rádf2redf2ridf2rodf2röd2ge_dg2ledg2lidg2lódg2radg2rádg2ród2gyud2hi_d2hiéd2hihd2hiid2hijd2hikd2hirdi2aadi2aádia1bdi2acdi2aedi2aédi2ahdi2aídi2ajdi2amdi2aodi2aódi2aödi2aődi2aúdi2aüdi2aűdi2avdi2azdi2eudi1fldi2lödi2lüdi1ly2dinddi2oadi2oidi2okdi2oldi2ovdi2óadi2óádi2óedi2ógdi2óídi2óodi2óódi2óödi2óődi2óudi2óúdi2óüdi2tüdiú2tdí2gédí2jedí2jídí2jödí2jüdíri22dívndí2zidí2zsdí2züdí2zűdj2egdj1isdkia2dkie2dk2ladk2lidk2lodk2ludk2rádk2rédk2ridk2rodk2ródk2vadk2vidleí2dlót2do2ázdobe2do2bído2bödo2büdo2bűdo2güdo2ködo2kü2domí2domldo2mő2domúdo2müdo2nödon1sdont2do2nüdord2do2rödo2rődors2do2rüdo2ugdo2utdo2vido1yedóa2ddóá2gdóá2rdó1bl2dóezdó1fl2dógádói2gdóí2vdó2mődóó2rdós3sdósz2d1öbldö2gadö2gádög3gdö2godö2gódö2gudö2kadö2kádö2kídö2radö2rádö2rod1ötldö2vedö2vidőa2ndőá2gdő1bldő1cldőe2ldőe2rdőé2ldő1fldő1grdő1kldő1kvdő1pldő1prdő1svdp2ladp2ledp2lédp2radp2redp2rédp2ridp2rídp2rodp2ródp2szd2ruids2káds2lids2peds2pids2pods2ráds2tads2táds2tídst2rdsz2ed1szndu2cödu2cüdue2l2duitduli2du2lídu2lödu2lűdu2óadu2óádu2óddu2ófdu2óldu2ópdu2sődu2tudú2cedú2chdú1drdú2jídú2rödú2téd1útldü2düdü2gydü2hadü2hádü2hodü2hődü2ládü2rídü2tedü2tédü2tődü2vedü2zedü2zédű1prd1űrldű1szdű1trdű2zédű2ződv1frdv1ordvö2ldv1ősdv1őzdv1prdv1undy1asd1yébd1yénd1yévdy2jédy2kedyk2kdyk2ndyk2tdy2védzaé2dzak2dzőa22dződ2dzőj2dzőr1dzsa1dzsá1dzse1dzsé1dzsi1dzsí1dzsó1dzsö1dzsődzs1s1dzsu1dzsú1dzsü1dzsűe2aboe2abőea2daea2dáea2dóea2dueaé2de2afáe2afee2afie2afoe2aföe2afőe2afüe2afűea2gie2agóe2aide2aile2aime2aipe2aisea2jae2ak_e2akáe2akbe2akee2akhe2akie2akíe2akoe2akóe2aköe2akúe2aküea2lue2am_e2amae2amáe2améea2moe2amue2amúe2aműe2anee2anée2anöe2anse2apie2apoe2apóe2ar_ea2ráe2arbe2aree2arhe2arje2arne2aróe2arre2arue2arüe2asoe2asüe2asűe2atae2atáe2atce2atee2atfe2atge2athe2atme2atne2atoe2atóe2atöe2atse2atue2atűe2atze2au_ea2ute2aviea1vyea2zoeá2béeá2cseá2gaeá2gáeá2gieá2goeá2gueá2gyeá2híeála2eálé2eá2löeá2mueáná2eá2poeá2rueá2rúeá2saeá2sáeá2síeá2sóeá2sueá2szeáta2eá2téeá2tíeá2tueá2tüebeá2eb1épeb1greb1kleb1kreb1öbeb1öseb1trebü2leb1üzec1ágec1árec1blec2cúech1uec2leec2luecs1sec3záec3zeed1gr2ediced1pled1predvá2edy1i1edzvee2béee2csee2dzee2geee2géee2gyee2heee2kee2el_ee2laee2lee2elgee2loee2lőee2meee2méee2mue2en_e2enbe2enje2ente2enwee2nyee2peee2péee2poee2reee2roee2róee2rőee2séee2süee2szee2teee2toee2veee2véee2viee2voee2vőee2züeé2deeé2geeé2géeé2gőeé2güeé2heeé2jeeé2jéeé2keeé2kíeé2leeé2léeé2lieé2lőeé2lüeé2lűeé2meeé2neeé2píeé2püeé2réeé2rieé2rőeé2rüeé2szeé2teeé2veeé2véeé2vieé2vüef2luef1plef2röega2ieg1áhegá2meg1bleg1breg1fle3gi_e3gieegi2geg1ijeg1kleg1kreg1kve2goce2goi2egome3gó_eg1óveg1ökeg1öteg1öveg1pleg1preg1pseg1skeg1sleg1smeg1spegsz2eg1treg1udeg1újeg1úreg1úseg1útegyu2eh1szei2ábei2áhei2ájei2ánei2árei2átei2áve2ibnei2dőe2idpe2ierei2gáei2géei2gyei2haei2máe2imke2imse2imzei2nőei2nüei2onei2paei2rie2iróei2tae2itbe2itje2itne2itrei2vaei2váei2voei2vóei2zéei2zoeí2géeí2jáeí2júeí2raeí2ráeí2téeí2váeí2veeí2véeí2vieí2voeí2vóeí2zeeí2züeí2zűej1abe2jakej1arej1auej1ábej1álej1blej1brej1dreje2cej1frej1ígej1ívej1klej1kvej1olej1opej1ócej1ónej1ótej1óvej1plej1prej1spej1újej1úrek1blek1brek1clek1drek1frek1gnek1grekiá2ekii2ek1ízek2kűek3nőekö2kek1plek1prek1psek1slek1smek1spek1stekú2tekü2tela2relá2mel2ánelá2sel1blel1br2eld_eleó2eleü2el1flel1glel2ibeliő2el3kiel1kvel1ojel1osel1öb2előö2előüel1skel1slel1smelu2nel1újel1úsel1ücel2vőel2vúe2lyőema2pemá2lemá2rem1dremé2kem1flem1gremi2gemi2me2míge2mírem1klem1kremo2kemö2kemö2lem1övem1pcem1skem1smem1spe2mude2muge2muje2murem1úrem1zren1ágen1blen2cíen2cuen2dúeneá2eneó22enesenga2eng1gen2núen1öne3növen1pren1ryen1úren1úteny1senyt2eo2áze2oboe2odeeo2dúe2okae2okéeo2köe2olóeo2lye2omee2omée2omieo2nöeo2nüe2opaeo2peeo2röeo2soe2oste2otíe2otoeo2vieóa2de2óböeó2ceeó2dáe2ófae2óhee2ójee2ómie2óműe2ónéeó2noeó1preó2ráe2óree2ósue2ótae2ótáe2ótee2ótée2ótie2ótíe2óvee2óvée2óvíeó2voeó2vóeö2böeö2déeö2köeö2leeö2léeö2lieö2löeö2lőeö2lüeö2möeö2nöeö2röeö2rüe2ös_eö2veeö2vieö2vüeö2zöeő2reeő2röeő2rüeő2szepá2sep1blep1brep1dre2péjep1fle2pizep1klep1kreppó2ep2pöep1spep1step1újep1úterco2er2cöer2cúer2cz1erdőereá2eree2er1fler1gler1ígern3nerö2ker1ryert1ser2vúer1ya2esa_esa2nesa2p2esán2esátes1bles1bres2ch1esdő2esé_1esküesná22esone2sőzestö2es2túesu2resz1zeta2cet1blet1bret2chet1dretea2etéé2et1fret1glet1greti2deti2get1klet1kv2etoretö2letőa2et1plet1pret1pset1sket1snet1spet1stet3yaeu2boeu2gaeu2míeu2mőeu2müeu2naeu2náeu2nieu2noeu2nóe2ur_eu2ráe2urteu2tóe2utseu2zseú2jíeú2szeú2tieú2toeü2düeü2geeü2gyeü2leeü2léeü2lieü2löeü2lőeü2lüeü2reeü2ríeü2rüeü2szeü2teeü2tőeü2tüeü2veeü2vöeü2zeeű2rieű2zeeű2zéeű2zieű2zöeű2zőex1abex1alex1apex1ábex1blex1brex1dre2xegex1opex1önex1örex1ösex1skex1spex1stex1újeza2cez1blez1frez1grezi2gezi2oez1kvez1ösez1pl1ezrűez3slez3szez1utez1újéa2daéa2dáéa2doéa2dóéa2gaéa2giéa2jáéa2kaéa2laéa2naéa2nyéa2rééa2riéa2roéa2ukéá2fáéá2gyéá2juéá2raéá2roéá2ruéá2rúéba2néb1álébá2rébié2éb1ízéb1kréb1pléb1préb1ügéc1ajéc1áléc1áréc1gréc3haéc3háéc3híéc3hoéc1obéc1oséc1őréc1préc3széc3zséd1ápéd1drédé2léd1frédi2géd1ívéd1kléd1öléd1önéd1ötéd1övéd1özédős2éd1pléd1préd1skéd1spéd1sréd1stéd1ujéd1úréd3zaéd3záéd3zeéd3zóéd3züée2béée2laée2leée2lőée2meée2piée2rőée2seée2séée2siée2sőée2ufée2véée2vőéé2geéé2leéé2píéé2raéé2teéf1aiéf1klég1améga2zég1ápég1blég1brége1pég1flég1fr1éghüégi2gég1ígég1íjég1ínég1írég1ívég1íz1égj_ég1klég1krég1kv1égniég1öbég1önégö2ré2göv1égő_1égőké2gőr1égőt1égővég1plég1prég1pség1skég1spégsz2ég1trég1unég1úgég1újég1úrég1úségyi2é2gyíégyo2éha2l2éhegéh1égéh1fléhi2ré2hitéh1ínéh1kréh1öbéh1öséh1pléh1pr1éhsééh1skéh1spéh1udéh1újéi2dőéi2gaéi2gééi2máéi2paéi2ráéi2roéi2taéi2vóéí2ráéí2roéí2róéí2váéí2zeéj1ebéjé2jéj1ödéj1önéj1öréj1pléj1préj1spéj1széj1udéju2té2jülék1blék1brék1dr2ékésék1fjék1flék1frékia2éki2déki2gék1íjék1kvék1ofékö2lék1ősék1plék1prék1psék1shék1skék1slék1spék1stékú2télá2lél1blél1bréle2béle2nélé2déli2mél1íjél1ízél1öbélö2kél1önél1örél1ösélőe2él1skél1spél1stél1úrél1űzé2lyőély1sélyú2émae2émas2émat2émá2cémá2lém1dréme2céme2gém1flém1frém1grémi2gém1ízém1klém1krém1oxém1öbém1öném1ösém1ötém1övém1ském1slém1spém1ujému2ném1whénas2éná2lénba2én1blén1bréne2néné2l2énézéni2gén1íjén1ínénmű1én1otén1ócén1ökén1ölén1önén1örén1öt2énövénpe2én1plén1prén2súén1útényö2ény1sényt2é2nyuénza2én2zíénzo2én2zúénz1zéo2laéo2peéo2széó2raéó2riép1ápép1blép1brép1dré2peb2épelépe2nép1flép1grép1ínép1klép1krép1kvép1obép1onép1opép1ölép1ömép1önépö2rép1ösép2píép1shép1skép1spépsz2ép1ugépu2népu2sép1újép1úsép1útép1üsér1blér1brérc3c1ércdér2cóér2cőér2cúér2czére2bére2nér1fléri2gér1ígér1íjéro2péró2lér1ötér1övér1plér1slérsz2éru2nérú2tér2vu2érzáésá2césá2sés1blése2bése2nés1flés1frés1grésié2ési2gés1klés1kv2ésorés1ócés1ónés1pséssz2ést2rés1ud2észá2észöész1zétat2étaü2ét1blét1drétea2été2gét1flét1frét1gréti2géti2pét1klét1kr1étkűét1kvétö2kétö2lét1pfét1plét1prét1slét1smét1spét1stétu2nét1üsétű2zéu2niéu2taéu2táéu2zséü2gyéü2leéü2lééü2löéü2lőéü2rüéü2tééü2töéü2tüéü2zeé2vadév1auévá2zév1grévi2gé2vinév1kr1évnyév1okév1osév1ösév1ötév1prév1skév1stév1szév1urév1új1évzáéza2néz1aséz1azéz1ázéz1bléze2céz1frézgé2ézi2dézi2oéz1íréz1ízéz1opéz1öbéz1önéz1öréz1öséz1ötézőa2éz1plézsó2éz3söézs1séz3széz1ugéz1ujéz1utéz1űrfaát1fae2rfaé2dfai2dfai2sfa2jőfajt2fa2jüfalö2fa2lüfaó2rfau2rfau2sfaü2tfaü2zfa2xefaxi2fa2xífa2xöfa2xúfa2xüfa2xűfa1yafa1yef1ábrfá2nífá2pofás3sfá2tefc2lufd2rófe2aafe2aáfe2abfe2acfe2adfe2aefe2aéfe2affe2agfe2ahfe2aife2ajfe2amfe2anfe2arfe2asfe2atfe2aúfe2avfe2edfe2elfe2jafe2júfel3lfelt2fe2lúfe2vőfe2zófe2zsféka2fé2lífé2lófé2mífé2mófé2möfémü2fé2pífé2püfé2zsffli2ff1sh1f2fyfg2lófi2aafi2aáfi2aefi2aéfi2affi2ahfi2aífi2aofi2aófi2aöfia1pfi2aufi2aüfiá2lfie2lfie2nfie2rfie2sfie2tfi1flfi1frfi2löfi2lü2findfint2fi2nú2finxfio2vfi3ókfió2rfiő2rfist2fiu2tfi2úafi2úáfi2úefi2úffi2úgfi2úífi2úlfi2úofi2úöfi2úőfi2úpfi2úufi2úúfi2úüfi2xöfí2ráfí2rüfk2lifk2lufk2róf2lakf2lanf2lepf2lipf2lotf2lukfo2amfog3gfo2gífo2göfo2güfo2kífond2fo2nífon1kfo2nöfons2fo2nüfo2röfors2fo2rüfo2vifó2ráfö2lafö2láfö2lífö2lofö2lófölt2fö2lufö2lúfö2sáfőa2nfőá2gfő1blfő1brfőe2lfőe2rfőe2sfőé2hfő1flfő1glfő1gnfő1grfői2dfőí2tfő1klfő1kvfő1plfő1prfőri2fő1sl2fősöfősz2főü2lfp2lafp2rofra1sf2rásf2rigf3ripf2röcf2rusfs2hofs2pofs2tífst2rft1ajft1blfte2mfti2gft1ösft1útft1ütfuga1fú2zsfü2lafü2láfü2lífül3lfü2lo2fülőfü2mafü2máfü2mofü2mőfü2múfű1drfű1frfű1prfű1srfű2záfű2zo2gabrga1bygae2rga1flga1klg1akvgaó2rga2rőgast2ga2ulga2us2gazgga2züg2ábag2ábógáda2gá2dágá2dőgá2fog2ájag2ájágá2jüg2álig2ám_gá2mügána2gánt2gá2nügá2pogá2rígáró2gá2rögá2rőgá2rügá2rűg2ás_gá2sígá2sógá2sögá2sőgást2gá2sűg2át_gátá2gátó2gá2tőg2ávagá2zígá2zögá2zőgá2zügbeá2gb2lagb2legb2logb2lúgb2ragb2rigb2rogb2rugda2ugd2regd2rogea2cgea2ggea2lgeá2rg2ebe2gegege2lögena2g2endgent2ge2obge2ocge2ofge2okge2omge2otgeó2r2gepige2róge2rőgeru2g2es_ge1scgesd2g2esrgess2getó2ge2urgeu2s2gevoge1yége2zogéc3cgé2dígé2dögédü2gé2dűgé2gigé2gőgé2güg2émbgéna2géná2gé2níg2énngé2nógént2gé2núgénü2g2ény3gép_gé2pígé2pógé2pögé2pőgé2púgéra2gé2rá2gérl2gérmgé2rogé2rögé2sógf2lagf2logf2lógf2lugf2rágf2rígf2rugga2sggó2nggős2g2gregg2rogg1spg3gyóg3gyög3győg3gyug3gyűg2hiagi2aagi2aági2acgi2aegi2aégia1fgi2ahgi2aígi2ajgi2amgi2aogi2aógi2aögi2aőgi2argi2atgi2aúgi2aügi2aűgi2avgi2az2gibrgi1flgi2gégig3ggi2gígi2gúgi2gű3gileg1ill3giné2ginf2ginsgi2otgi2óagi2óági2ócgi2óegi2ófgi2óggi2ólgi2óúgi2óügi2óz2girog1iscg2itágí2gégí2jagí2jágí2mágí2négí2nygí2ragí2rágí2regí2rigí2rogí2rógí2vágí2vegí2végí2vogí2vógí2vügí2zegí2zügí2zűgkiá2gk2lagk2ligk2lígk2logk2lógk2lugk2ragk2rágk2regk2régk2rigk2rígk2rogk2rógk2vagk2vógla3tgleí2gleü2g2lorglóó2glós2gna2dgn1brgne2igné2lgni2gg2nolgn1ökgn1ösgn1prgn1stg2nújgn1üggn1üzgo2ázgo2bego2etgoki2g2onogo2nügo2odgo2págo2rö2gorzgo2sego2sögo2sügo2uago2ubgo2udgo2urgo2utgo2xigo1yago1yágóa2dgóá2ggóá2rgó1blgó2cügóí2vgó1klgó2lígó2lügóó2rgós3sgó2vugö2kugö2negö2nö2göntgö2ra2görvgösé2g1öv_g1övbg1övhg1övng1övrg1övtg1övvgőa2ngőá2ggő1brgőe2lgőe2rgőé2bgő1frgő1glgő1klgő1kvgő1plgő1prg1őrbg1őrhg1őrkg1őrng1őrsg1őrtgő1trgőu2tgőü2lgő2zúgp2lagp2lágp2legp2lugp2ragp2rágp2regp2régp2rigp2rígp2rogp2rógp2rűgp2szgre2eg2rilg2rízgróa2gróá2gró1pgs2hogs2kags2kágs2kogsk2rgs2lags2lágs2ligs2mágs2migs2mugs2nágs2pags2págs2pegs2pégs2pigs2pogs2pógsp2rgs2rágs2tágs2tegs2tégsto2gst2rgs2tugs2végsz2mgszt2gti2mgt2ragt2rágt2regt2régt2rigt2rogt2rógt2rögt2rugt2rügu2atgu2aygu2elgu2idgu2ingu2irgu2nágu2nógu2nugu2sögu2sőgust2gu2sügu1yagú2jagú2jígú2jugú2régú2rigú2ro2gúttgú2zigü2csgü2dégü2dígü2dügü2gegü2tegü2tégü2tigü2tögü2tőgü2tügü2vegü2vögü2zegü2zégűre2g1űrhgű2rigű2rugű2rügű2zegű2zégű2zigű2zögű2ző3gyámgy1blgy1brgy1dr3gyémgy1flgy1glgy1grgy1ízgy1klgy1kvgy1ou2gyöv3győzgy1plgy1prgy1psgy1scgy1skgy1slgy1smgy1sngy1spgy1sr2gyúd2gyúé2gyúi2gyúm2gyúü2gyüg3gyüm2gyüs2gyüt2gyüv3gyűlgy1zrgzőa2haa2d3hab_3haboha2büha2dühae2rha1flha2ifha2jöha2jőhaj1sha2jüh1akt3haláha2lí3halmha2lüha2lűhamb23hamuha2mü3hanghaó2rha2rű3hasa3hatáhatt2ha2uehau2nhau2sha2uthaü2z3hábohá2gyháma2hámi2há2möhára2hári23hárí3hárthá2rühá1ryhá2síháté2há2tíhátó2há2töhá2tőhá2tűhá2zöhá2zőházs2há1zyhb2lehe2adhe2av2hecu3hekt2helf2hema3henghe2olhe2röhe2rű3hety2hevé3heví2hezh2hezi2hezn2hező2hezzhé2hé3héi_3héithéje2hé2jö3héknhéne2hén3nhé2nöhént2hé2nuhé2nühé1phhé2pühéra2héta2hé2tíhétó2hé2tuhéze2hézo2hf2ló2hia_hi2aahi2aáhi2achi2adhi2aehi2aéhi2aghi2ahhi2ajhi2alhi2amhi2aphi2arhi2at3hida2hiév3higi2hila2him_2hime2himé2hing2hinkhi2omhi2pa2hise2hisn2hisohi2tahitó2hitö2hi2túhi2zohí2dahí2dáhí2dehí2díhí2döhí2dőhí2dúhí2dühí2dzhí2jéhí2máhí2mohí2möhí2muhí2ríhí2rőhír1shí2rúhká2rhk2riho2dúho2efho2iiho2it2hoklhola2ho2löho2lü3homb3homohone2ho2ního2nöho2nőho2nüho2re2hoszho1thho2usho2wehozi2ho2zühóa2khóá2ghó1blhóc3chó2cóhó2czhó2döhó2dü2hóráhó1shhóví2hökö1hőa2nhő1brhőe2lhőe2mhőe2rhőé2nhő1flhő1glhő1grhő1kvhő1prhősa2hős3shősű2hő1trhőü2lhp2lahp2rahp2réhp2rihp2rohp2róhs2chhs2kahs2pihs2pohsz2lht1clht1klht2ráhu1hy2hurá2hus_2husihú2rehúrt2hú2síhú2söhú2sőhú2sühü2gyhü2rehü2rühü2tőhű2réhű2rihű2röhy1érhy1évhy1igiaa2diaát1i2abíi2aböi2abői2abui2abúi2abüi2abűiac3ci2acíia2cóia2cöia2cőia2cüia2czi2adei2adíi2adöi2adői2adúiae2liae2riae2tiaé2ri2afái2afei2afii2afói2aföi2afői2afui2afúi2afüi2afűi2agái2agei2agéi2agii2agöi2agői2agui2aigi2aipi2ajei2ajoi2akái2akei2akíi2aköi2akői2akui2akúi2aküi2alíi2alöi2alyi2amái2amei2amói2amúi2aműi2anéi2anöi2anőiao2kiaó2ri2apei2apéi2apoi2arei2aroi2arói2aröi2arui2arúi2asei2asii2asói2asöiast2i2asúi2asüi2asűi2atei2atói2atöi2atőia2tyi2audiau2siaü2zi2avéi2avii2avíi2avoi2azái2azeia2zoi2azsi2azúiá2csiá2gaiá2gáiá2geiá2giiá2goiá2gyiá2híiáka2iáki2iá2kíiá2kőiá2kűiála2iá2nöiánt2iá2nüiá2óiiá2poiá2reiá2ruiá2rúiá2síiá2sóiá2söiá2sőiást2iá2sűiá2taiáti2ibas2ibat2ibau2ibaü2ibe1sibi2oib2loib2róib2ruic2cíic2cúic2czics1sic1üzid1br1iddoid3dz2idelideu2id2geid1krid1ösi2dőzid1prid1stid1ügie2beie2csie2dzie2fáie2géie2gyie2hei2eldie2loie2maie2nyie2peie2ríie2röie2rőiert2ie2sőie2szietz1ie2urie2veie2véie2viie2vői2édoi2éfeié2geié2géié2gőié2güi2éhai2éhii2éilié2leié2léié2liié2lői2émei2éméi2émoié2píié2püié2réié2riié2rüi2étöi2fe_ifio2if1ír1ifjí1ifjuif2leif2loif2löif2luif2ruif2töif2túig1bri2gegigek2i2gémig1flig1ívig1ízig1klig1krig2nöig2nüigóé2ig1öbig1ölig1prig1skig1slig1smig1spig1stig1szig1trig1ugigu2nigu2tig1úsig1ücig1üdigü2lig1ütig1üvig1űzii2deii2déii2dőii2gaii2gáii2géii2gyii2haii2jeii2máii2miii2paii2ráii2roii2szii2taii2váii2voii2vóii2zéii2zoií2géií2raií2ráií2roií2róií2ruií2téií2veií2zeikaó2ikas2ik1drik1flik1frikó1pik1plik1prik1st2iku_2ikub2ikuf2ikuh2ikui2ikuí2ikuj2ikuk2ikur2ikut2ikuvila2nil1blilc3cil2chil2czil1fr1illu1illúil2möil2mőilmu2ilót2il1öbil1ösil1shil1sp2ilteil1üril1üvimaó2ima1pim1drime2m1immuimót2im1ös1impé1impuin1blin1brin2cóin2cőin2cúindö22ine_2iner2inébiné2l2inév1infling3gin2gíin2gú2inie2inié2inir2iniuin1önin1őzin1plin1prin1újin1ürin1üsin1űrin2xa1inzuioá2rio2csio2dúi2ogái2ogyio2ikio2káio2kíio2koio2kui3oldi2olói3olvio2möio2nöions2io2peio2soi2oteióa2dió2apióá2gióá2ri2óbái2óbéi2óbíi2óboi2óböi2óbői2óbui2óbúi2óbüi2óbűi2ócei2ócéi2ócii2ócui2ódei2ódéi2ódii2ódíi2ódói2ódöi2ódúi2ódüi2ódzi2óégi2óéki2óéli2óépi2óési2ófái2ófei2ófii2ófói2óföi2ófői2ófui2ófüi2ófűi2óhai2óhái2óhei2óhéi2óhii2óhíi2óhói2óhöi2óhői2óhui2óhüi2óhűiói2gi2óipi2óisi2óizióí2vi2ójei2ójoi2ójói2ókíi2óköi2ókői2ólai2ólái2ólei2óléi2ólii2óloi2ómei2ómói2ómui2ómúi2óműi2ónei2ónói2ónöióo2kióó2ri2órei2óréi2óroi2óröi2óruió2sóiós3si2ósúi2ótei2ótéi2ótii2ótíi2ótöi2ótői2ótui2ótúi2ótüi2ótűi2óugi2óuni2óuri2óuti2óvei2óvéi2óvii2óvíi2óvöi2ózei2ózsiö2köiö2leiö2léiö2liiö2löiö2lőiö2möiö2reiö2röiö2rüiö2töiö2veiö2zöiő1dri2őhai2őkéi2őkui2őrai2őtei2őtéi2ővai2őváipau2ip1flip2fuip1klip1krip1ösip2pöir2chi2rei1irgairke12iro_2irob1irriirs3sir2szirté2isa2nisa2pis1blis1bris1dris1frisi2gisió2is1klis1kv2ismo2isműis1ölis1önisö2ris1ösisp2r1istvisu2tisz3sit1blit1brit1dr2iterité2git1flit1frit1glit1gnit1griti2git1klit1krito2bitóa2itós2it1plit1prit1sp2itteit1újiu2gaiu2goiu2míiu2möiu2mőiu2müiu2naiu2noiu2raiu2ráiu2ruiu2taiu2tóiu2tuiu2zsi2úbái2úbei2úbéi2úbii2úboi2úböi2úcii2úcíi2údái2údei2údoi2údzi2úéliú1fri2úhai2úhái2úhei2úhii2úhöi2úhői2úhui2úhúi2úifi2újeiú2jíi2újói2úkei2úkíi2úkói2úköi2úkui2úmei2úmói2úmui2úműi2únei2únéi2únöi2úreiú2riiú2roi2úrui2úsei2úsoi2útai2útái2úteiú2téi2útíi2útöi2útúi2úvei2úvéi2úvii2úvoi2úzeiü2csiü2geiü2gyiü2leiü2léiü2liiü2löiü2lőiü2lüiü2reiü2ríiü2rüiü2teiü2téiü2tiiü2töiü2tőiü2tüiü2veiü2vöiü2zeiű2zeiű2zéiű2zői2ve_1ivotivós2ivőé2iv2réix1asix1blix1frixi2tix1ödix1ösix1őrix1ősix1plix1prizas2iz1bli2zédi2zéliz1fl1izmúi2zosiz1pliz1prizs1s1izzi1izzíí2bisíd1ágíd1álíd1átíd1blídi2gíd1ívíd1ösíd1príd1stíd1újíd1ügíd1üníd1üzíd3záíd3zsíé2leíge2síg1trígyá2íi2roíj1eníj1épíjé2ríj1fríj1ígíj1íníj1kríj1öníj1ösíj1özíj1plíj1príj1skíj1spíj1ügík1aríka2sík1álík1emík1evík1frík1íník1íríkö2lík1plík1prík1spíl1ajíl1blíl1bríl1kríl1ösíl1stíltá2íma2níma1pím1blím1drími2gím1írím1krím1olím1oním1osím1ökím1ösím1ötím1spím1stína2dín1blín1bríne2nín1égíné2líni2gín1ízín1önín1örín1ösín1ötín1plín1prín1psín1ugín1újíó2voíp3roír1blír1bríre2nír1glíri2gí2risír1ínír1írír1ívír1kv1írogíro2líróá2í2róíírót2ír1önír1örír1shírsz2íru2nírü2lír1ürís2poís2tííszi2ísz3sísz1zítóa2ító1fítót2ít2réíü2düív1blív1dríve2cíve2níve2rív1frívi2gívi2kív1klív1krív1övív1plív1prív1skív1spív1stívsz2ív1trív1újív1útíz1abíz1ajíza2níz1aríz1álíz1blíze2níz1fríz1glízi2gíz1ízíz1klízo2kíz1oníz1oríz1osíz1öbíz1ödíz1ökíz1ömíz1öníz1öríz1ösíz1özíz1pfíz1plíz3síí2zsoí2zsöízs1sí2zsúíz3szíz1úrí2zűeí2zűní2zűv2jakfjakt2ja2urja2xijá2arjáí2r2jánljá2pojáre2já3rójá2rőjá2söjást2já3zsjb2lojb2rijb2rójc3hojcs1sjea2ljea2nje2béjee2njelá2je2luje2lúje2muje2róje2sőjest2je2sujeu2rjég3gjégi2jé2gójé2göjé2gújé2küjé2lőjé2nojé2nújé2píjé2püj1évhj1évkj1évtj1évvjf2lejf2lojf2lójf2rajf2rejf2rijf2ríjf2rojf2röjg2ruji2doji2jeji2maji2máji2miji2onji2paji2zéji2zojí2géjí2rájí2rójí2vejí2véjí2vójí2zejí2zéjí2züjí2zűjjá1sjj1ívjj1ízjj1prjj1ügjkau2jkia2jkiá2jkie2jk2lajk2lájkme2jk1pljk1prjk1stjk1ügjk2vajl1bljleí2jli2kjl1prjl1spjl1stjme2gjn1stjog3gjogó2jo2göjo2gőjo2güjoma2jo2möjo2mőjo2müjo2műjo2óbjo2pájo2pejo2rüjo2uijo2ukjo2uljo2urjo2utjo2vajóa2kjóá2gjóá2rjó1bljó2cejóde2jódó2jó2düjó1fljó1kljó2söjós3sjö2déjö2kojö2léjö2rejö2röj1ösvj1ötvjö2zöj1őrljő2röjő2rüjő2zejp2lajp2lejp2rejp2réjp2rijp2rojp2rójra1fjrai2jrau2js2hojs2kájs2kijs2nijs2pejs2pijs2pojs2pójsp2rjs2tijsz2kjszt2jt1fljt1frjti2mjti2sjt1kljt1krjtóa2jtőa2jtőe2jtőé2jt1pljt1prjt2rijt1spjt1stju2gajugo1ju2hőju2hü2jula2julsju2rujú1frjú2jíjú1pljü2gejü2gyjü2lejü2léj1ültjü2rejü2ríjü2rüjü2tajü2vejü2zejű2rijű2zőjza2jjze2rjz1frjzi2gjz1pljzs1skaa2dkaát1kab2aka2cüka2czkae2lkae2rkaé2rkai2z2kangka2nűka2óaka2óáka2ócka2óeka2ógka2óíka2ópka2óüka2óz2kappkars2kast2ka2udkau2nkau2rkau2skaü2tkaü2z2kábéká2ceká2cóká2cüká2díká2fáká2gaká2jöká2jüká2lüká2röká2rőkárt2ká2rüká2sóká2söká2sőkás1pkást2ká2tíkátó2ká2tükb2lakb2lekb2lokb2rákb2rikb2rokb2rókc2lukd2rakd2rákd2rekd2rokd2rókd2rukea2jkea2kkea2lkea2nkea2rkea2skeá2lkeá2rkee2nke2epkee2ske1flkeo2lkeo2rkeó2dkeó2hkeó2lkeó2rkers2ke1tckeu2rkeu2ské2geké2géké2gőké2jökéma2ké2míké2moké2möké2mőkéna2ké2noké2píké2póké2pőkép1ské2puké2púkéra2ké2roké2rökérü2késa2ké2sóké2suké2tíkétó22kétvké2zíké2zökézs2kf2jokf2lakf2lekf2likf2lokf2lókf2rakf2rákf2rekf2rikf2ríkf2rokf2rökf2rukg2lakg2nókg2rakg2rikg2ríkg2ruk2hilkh2mekia2dki2aéki2afkia2gkia2jkia2nkia2pki2aúkia2vkiá2z2kidikie2lkie2mkie2rkie2tki2ewkié2dkié2k2kiga2kigá2kige2kily2kindkio2lkio2mki3óhki1pf2kirg2kismki2sőkisp2kist2kiu2skiu2tkiú2skiú2tkí2jakí2rá2kítmkí2zékí2zükí2zűkká2skk1brkke2ckk1frkk1grkkiá2kkie2kkö2lkk1prkk2ríkk1smkk1spkk1stkk1űrkk2vókla1gkleí2klió2k2loák2lubkma1bkmas2knag2knak2ko2ázko2beko2löko2nükonz2ko2ón2kopcko2röko2rőko2rüko2seko2süko2utko2xikóa2dkó1blkóc3ckó2chkód1dkó2dökó2dükóé2rkói2gkóí2vkó1kvkópó2kó2pükó2rőkö2bakö2dakö2dákö2dokö2dókö2dukö2dúkö2dzkö2líkö2rakö2rákö2rokö2rókört2kö2rukö2rúkö2zakö2zákö2zokö2zókö2zukö2zúkőa2nkő1blkő2chkőe2kkőe2lkőe2rkőé2lkő1gnkő1grkői2tkő1krkő1plkő1prk1őrlkő2sökő1trkőu2tkp2lakp2lekp2lékp2lukpó2tkp2rakp2rekp2rékp2rikp2ríkp2rokp2rókp2szkra1pk2reok2rupks2koks2láks2luks2miks2paks2peks2piks2poks2póksp2rks2ráks2tiks2tokszt2ksz1zkt1frkt1grkti2gkti2mkt1prkt1spkt1stkt1szktü2lkuá2rkue2lkue2rkue2sku2müku2nekun3nku2nü2kupr2kupuku2söku2süku2zskú2jíkü2gekü2gykü2lokü2rükű2rokű2zékű2zők2vóckyd2nkyk2kky2seky1üzlaa2dlaát13labd2labrla2cőla2cúla2cülae2dlae2llae2rlaé2dlaé2r2laffla1flla2gíla2gűlaji2la2jíla2jől2ajslakt2la2mölans2la2nülaó2rla2pöla2pőla2pűla2ubla2ukla2uslaü2zla1yélá2bölá2bőlá2bülá2dzlá2gőlág1slá2gülá2gű2láheláí2rlá2lílálö2lá2lülá2lűlá2mílá2mólá2mölá2mőlá2mülá2műlána2láná2lánt2lá2nülápi2lárt2lá2rülá2selásó2lá2sőlá2sű2lávi2lávu3lázblázo2lb2lilb2lolb2lúlb2ralb2relb2rilb2rolb2rólb2rulce2zlc1frlc3halc3hálc3holc3hulc3húlc3hülc1ívlc1öklc1öslc1prlcs1slc1trlc1üllc1ütlc3zálc3zoldai2ld1ágld1brld1flld1frld1glld1grldi2pld1krld1kvld1plld1prld1spld1stldu2rld3záld3zóld3zulea2dlea2glea2klea2llea2nlea2plea2vleá2jleá2sleá2zleb2s2lecclee2sleé2rle1frlegg2le2iclei2glei2sl2endlenu2le2oale2ocleo2kleo2mle2ozleó2cleö2r2letyleu2gle2ukleu2rleu2tle2xále2xöle1yélé2calé2cáléc3cléci2lé2colécs2lé2dölée2rléé2r2légílé2gú2légü3légz2léhslé2kől1élcléná2lé2nolé2pólé2rílé2rölésa2lé2só2létllétö22lévülfat2lf1cllfe2tlf1kllf2lolf2lólf2lölf2lulf1prlf2rilf2rölf2rőlf1splgau2lg2lalg2lolg2lólg2rulhai2li2aali2aáli2aeli2aéli2agli2ahli2aíli2ajli2aoli2aóli2aőli2apli2aüli2avli2azli3beli2cüli1cyli2eclie2d2lienlié2dlié2klié2nli2fíli1fll2ig_2lilllimű1li2oclio2lli2őáli2ődli2őeli2őfli2őgli2őmli2őpli2pöl1ismlitő2liú2t3lix_lí2gélí2jalí2julíma1l1írdl1írhl1írjl1írll1írs2lív_líva1l2ízilj1írlj1prlj1splj1üzlkiá2lk2lílk1shlk2valk2válk2vóll1blll1brll1cllleí2ll1frlli2pll1kvllóá2llóó2ll1skll1splls3sllsz2lly1öl3lywlmá2llm1bllm1cllm1drlmeó2lm1gllm1grlmi2glm1íglm1írlm1ízlm1kllm1krlm1önlm1öslm1ötlm1sklm1sllm1snlm1splm1stlnak2lo2áz2lobá2lobulo1bylo2chlo1cylo2éclo2éolo2éplo2ézlo2gílo2gölo2gülo2irlo2kílo2külo2mölo2mőlo2mülo2műlo2nölo2nülo2oilo2ojlo2orlo2óslo2pelo2pílo2pölo2pü2lornl2os_l2osal2osblo2selo2sülo2xálo2xilóa2dlóá2rló1blló1brlóc3cló2chló1fllóg1gló2gílóí2v2lónn2lóno2lónr2lóntló2ríló2rülós3sló1szló2zőló2zülö2bölö2calöc3clö2chlö2cőlö2kalö2kálö2kolö2nalö2nálö2nelö2nélö2nólö2nulö2núlö2palö2pálö2pelöpü2lö2relö2rölö2sülőa2clőa2nlőá2glő1bllő1brlő2dálőe2llőe2slő1fl2lőhű2lőítlő1kllő1kv2lőnnlő1pllő1prlő1pslősó2lő2sőlős3slő1sylősz2lőu2tlőü2l2lőzl2lőzmlpé2llpé2rlpo2nl1prdlpu2slrei2lreü2ls2hols2kals2káls2kils2lals2láls2lils2mals2mils2tálszt2lt1bllt1brlté2llt1fllt1gllt1grltig2lt1ítlt1krltó1pltót2ltö2lltőa2lt1pllt1prlt1sllt1splt1stlua2gluá2rlubó2lu2bölu2bü2ludj2ludvlu1dylue2llui2rlu1kllu2lí2lulr2lumí2lundl1unhl1unjl1unll1unnl1unvlusö2lu2sőlust2lu2zslú2dálú2delú2galú2gelúg3glú2gilú2julú2rilú2rulú2rülü2cslü2dílü2dülü2gelü2gylü2lálü2lélü2lílü2lúlü2lülü2relü2rílü2rülü2szlü2telü2télü2tilü2tölü2tőlü2tülü2velü2völü2zelü2zélű2rál1űrllű2zelű2zélű2zilű2zölű2zőlű2zülv1brlv1frlv1kllv1krlvö2llv1őslv1prlv1pslv1splv1stlv1újly1blly1brly1drly1ejlyé2lly1flly1glly1grlyi2gly1ívly1kl1lyn_lyo2lly1plly1pr1lys_ly1skly1splys2t1lywolzőa2lzőe2maa2dmae2rmaé2rm1ahhmai2z2malgm1alr2malv2manámao2k2marmma1rymast2ma2usmá2fá2mágo2mágómá2hímájo2má2jümáka2má2kőmána2má2nőmá2númá2nümá2pomá2rímá2römá2rőmá2rümá2sömá2sőmást2máte22mátém1átjmá2zemá2zőmba1pmbeá2mb1grmb1ízmb1klmb1lymb1plmb1prmb1spmb1szmb1trmb1újmc2lumd2ramd2rámd2romd2rómea2lmea2nme2avmee2sme2etmeg1fmegg2me2gime2gúmek1s2melb2melkme2níme2nöme2núme2omme2óemers2me2túme2ukmeu2tme2vőme2zume2zúmé2gemé2gémé2gimé2gőmé2gúmé2höméka2mé2kímé2kőmént2mé2pímé2pümé2sömé2tömétő2mé2zímé2zumé2zűmfit2mf2lamf2lómf2lumf2rámg2limg2lómg2ramg2rámi2aami2aámi2acmi2aemi2aémi2agmi2ahmi2aími2aomi2aómi2aömi2aőmias2mi2aümi2avmi1bl2midőmie2lmi2éfmi1flmi1frmii2d2miksmi2nümio2rmió2r2mirg2mirhmiu2smi2xömi2xőmí2jamí2jám1ínsm1ív_mí2vám1ívbmí2vém1ívhm1ívrm1ívvmí2zümí2zűmj1ősmke1pmkia2mkiá2mkie2mk2lamk2limk2límk2lomk2lumk2ramk2rámk2remk2rémk2rimk2rímk2romk2rómk2vamk2vómla1fmleí2mmai2mmas2m2me_mo2bemoci1mohu2mo2ismo2kömok1tmoku2mokú2mo2kümo2nömons2mo2nümo2nűmo2or2mopemo2römort2mo2rümo2rűmo2sümo2unmo2vimo2ximóá2gmó1blmó2chmódó2módu2mó1flmóró2mó2römö2bömö2komö2lemö2numö2rom1ötlmö2vemö2vömö2vümö2vűmőa2nmőá2gmőe2lmőe2rmőé2lmő1klmő1psmő2simő2sümőü2lmő2zimp2cimp1frmra1pms2kams2káms2kims2koms2láms2mims2nims2pams2pems2pims2poms2póms2ráms2tams2táms2tems2tims2tíms2tomst2rms2túmsz2cmsz2lmsz2mmt2rámt2remt2rémt2rimt2römt2rüm1ujj2mulzmu2mömu2mőmun1g2mur_mu2sőmuss2mu2tümú2jímú2rim1úthmü2dímü2dümü2gymü2námü2remü2rímü2rümü2temü2témü2tőmü1tzmü2vemü2vömü2zemű1blmű1brmű1flmű1frmű1grmű1klmű1plmű1pnmű1prmű1spműsú2mű1szmű2zémű2zimű2zömű2zőmű2zümw2himz2rínaa2dna1clna2einaé2rna2jinalt2na2lünano1nao2lnaó2rna2pínapp22nasknast2na2ucna2ulnau2snaü2zna1whna2zé2nábrná2cíná2dánád1dná2ganá2gáná2giná2guná2gúná2gyná2künále2n2áléná2líná2lüná2míná2munáné2ná2níná2nüná2rínáró2ná2rőnárt2ná2rünást2ná2tünb2lanb2lonb2lúnb2ranb2ronb2rónca2unc1blnc1brnc1drncea2nc1flnc1frnc1grnc3hínc3hönc1íjnc1klncö2tnc1őrnc1plnc1prncs1snc1trnc1ujnc1útnc1üvnc1yanc3zenc3zönc3zsnc3zünd1blnd1clnd1drnd1frnd1grnd1klndö2bnd1prnd1slnd1spnd1stndu2tnd1újndy2bndy2hndy2nndy2rndy2tndy2vnea2jnea2knea2nnea2rne2béne1blne1dy2neffnei2gneí2r2nekj2nemsne2obne2odne2ofne2ogne2ohne2róner1sne1yé2nédlné2kónékü2népa2népá2né2pőnép1sné2púnéra2n1érdné2röné2rünéti2né2tönéva2né2vöné2vőné2vúné2zangá2cng1blng1brng1frngi2gngi2mng1ígng1írng1ívng1ízng1klng1krng1kvngö2rng1prng1psng1shng1skng1spng1trng1ürng1ütng1űrnhe2ini2aani2aáni2acni2adni2aeni2aéni2ahni2aíni2ajni2amni2aoni2aóni2aöni2aőni2arnia3uni2aüni2avni2azni1brni2düni2et2nigmnikk22nindni2óani2ódni2óeni2ópni2óüni1pr2niráni2xani2xőní2géní2janí2juní2vení2zení2zűnkaó2nk1brnk1drnkia2nkiá2nkká2nk1plnk1prnk1spnk1stnlac1nleí2nműt2nnak2nn1synnü2l2nog_2nogh2nogj2nogn2nogo2nogs2nogt2nogvno2irno2köno2kőnok1sno2künom1pnona2no2nöno2nőno1nyno2okno2ríno2rüno2seno1tyno2uino2xinóa2knóá2rnó2cenó2chnó1flnó1frnó2münó2rünó1slnós3snó2vónö2kanö2kánö2konö2kónö2kunö2kúnö2lőn1ömlnö2rönö2tenö2ténö2tin1ötlnö2tün1övbnőa2lnőa2nnőá2gnő1brnő2canő2chnőe2rnőé2lnő1klnő1plnő1prn1őrsnős3snőu2tnőü2lnpe2snp2lanp2lánp2lenp2lénp2lonp2lünp2ranp2renp2rénp2rinp2ronp2rónp2szns2chns1drns1frnsi2zns1klns1stns1synsu2rns1úrnsz1zntad2ntaü2nt1blnt1brnt1drnt1flnt1frnt1grntió1nt1klnt1krntó1pntót2ntőa2nt1plnt1prnt1rynt1shnt1sknt1spnt1stntsz2ntu2nn2tyín1uccnu2ganu2gonu2münu2ránuss2nu2ten1újdnú2jínú1pr2nútb2núth2nútj2nútr2núttnü1blnü1frnü1grnü1prnü2rínüst2nü2tinü2tünü2vönü2zénű2zénű2zőnv1sknx1ar2nyápny1blny1brny1cvnye1pny1flny1glny1gr3nyíl3nyk_1nykkny1kl1nykn1nym_1nymt1nyn_ny1plny1prny1ps3nys_ny1scny1shny1skny1slny1spnys2t2nyud2nyuj3nyul2nyut3nyúlny2vóny2vőny2vúnza2cnz1grnzi2anz1ígnz1ínnz1klnz1krnzö2rnz1plnz1prnz3sznz1újnz1üsnz1üvnz3zsoa2céoa1fro2akio2amio2asioá2gaoá2ríoá2zsoba1pobau2ob2böob1ívob1klob1ötob1pr1obstob1ügob1ürob1ütob1űroc1eroci3aocie2oció2oci1poc1procs1socs1toc3zsodas2odat2odáb2od1edode2l2odézodi2god1klod1prod1st1odúnod1ügod1ünod1üzod3zeod3zooe2iroe2leoe2muoe2neoe2uroe2uvo2éfao2éfáo2éfoo2ékeo2ékioéna2oéná2o2észo2éviof2laof2lóof2rí2ogazog1blog1droge2roge2sog1flog1frogi2gog1ínog1írog1ívog1klog1krog1ösog1plog1prog1skog1spog1trog1ülog1ürog1ütog1üzog1űzohas2oh2nioi2aeoi2afoi2anoi2avoida1oina2oi2neoi2reoi2zooj1inoka2uok1blok1brok1dro2ke_oke2doké2pok1flok1frok1grok1íjok1írok1ívok1ízokö2rok1plok1prok1spok1ügok1ünok1ürok1üzok1űzo3la_ol2cíol2cóol2cöol2cüol2czol2dűolfu2ol1gl2oliboll1sol2lüolót2ol1örol1ösol1skol1úsol1ügol1ülol1üvol1üz2olyóo2lyőoma1fomá2gom1drom1efome2gome2lome2oo2mepome2some2zom1glom1gromi2gom1íjomjó2om2jőom1klom1krom1ökom1önom1ösom1övom2pőom1skom1slom1spom1stomu2nom1üdom1ügom1ürom1üsom1ütom1üvom1üzom1űrom1űzom1yaonae22onak2onácon1blon1bron2cúon2cüone2lone2none2s2onéboné2don2güoni2gon1ígon1ízon1öbon1ölon1önon1öron1öson1plon1pron1ps2ons_on1slon1sronsz2onu2nonú2ton1űron1űzon2züoo2iboo2inoo2peoo2reoo2xio2palopa2uo2pálop1blop1emop1esop1gropi2zop1ívop1klop1kr2opolop1ösop2péop1py2oproop1slop1spop1srop1újop1üdop1ügop1ütop1üzoraó2or1blor1bror2cúor2cz2oreao3reáore2lore2nore2sor1ezor1glor3jáor2müor1önor1öror1ösor1ötor1övor1phor1pl1orrb1orrkor2sőor1üdor1ünor1üror1ütor1üzor1űr1orv_2orváor2vő1orvvorz1zosa2nos1exos1ezosgé2osi2gos1kl2osokosó1pos1ökos1önos1psossu22ostuoszí2o2szöo2szüotag2ota1kot1blo2tebot1frot1groth2rot1íjot1ínot1kl2otópotót2ot1ösot1plot1prot1psot1spot1srot1st1ottlot1ütot1űrotya1ou2agou2ilou2leovau2ovio2ow1eloy2ceoza2goza2noza2roz1eno2zorozs1so2zsüoz1ünoz1űróa2céóa2dáóa2doóa2dóóa2gaóa2gióa2gyóa2jáóa2káóa2kuóa2laóa2láóa2loóa2luóa2maóa2naóa2nóóa2nyóa2páóa2poóa2póóa2puóa2raóa2ráóa2réóa2rióa2roóa2tyóa2ukóa2uróa2utóa2vaóa2xióa2zoóá2béóá2csóá2gaóá2gióá2goóá2híóá2laóá2loóá2poóá2ráóá2ruóá2rúóá2saóá2sóóá2szóá2taóá2táóá2téóá2tíóá2toóá2tuóá2túóá2tü2óbab2óbaj2óbak2óbalóbas2óbau22óbec2óbef2óbeg2óbeh2óbej2óbek2óbem2óbeo2óber2óbet2óbev2óbezó2bég2óbil2óbio2óbir2óbit2óbiz2óbójób2ráóce2lóc3háóc3heóc3hoóci2móc2luóc1pr2ócsa2ócse2ócsé2ócsi2ócsí2ócso2ócsö2ócsőócs1póc3szóc1tróc1ünóc1üzóc3zaóc3zeóc3zuóda2jód1blód1bród1epód1fród1glódi2pód1klód1kród1kv2ódob2ódok2ódol2ódomód1ösód1őród1pr2ódráód1spód1st2ódugódu2ród1ügód1üvód1üzóe2béóe2chóe2csóe2déóe2dzóe2geóe2géóe2gyóe2keóe2kéóe2leóe2léóe2loóe2lőóe2lüóe2meóe2méóe2muóe2neóe2péóe2pióe2poóe2reóe2réóe2róóe2rőóe2seóe2séóe2sőóe2szóe2teóe2tióe2tűóe2veóe2véóe2vőóe2züóé2beóé2geóé2géóé2gő2óéhsóé2keóé2kéóé2kíóé2leóé2léóé2lőóé2píóé2pü2óér_2óérdóé2rióé2rő2óérzóé2te2óétkóé2veóé2véóé2vióé2vü2ófa_2ófaa2ófaá2ófab2ófac2ófad2ófae2ófaf2ófag2ófah2ófak2ófal2ófao2ófap2ófar2ófas2ófaü2ófav2ófaz2ófék2ófénóf2lóóf2löóf2lu2ófoc2ófog2ófok2ófol2ófos2ófotófu2róga1póg1dróge2oóg3gyóg1íróg2laóg2le2óhal2óhan2óhas2óhat2óhon2óhor2óhos2óidéói2di2óigéóile22óillói2mi2óimp2óind2óinf2óing2óinj2óinp2óint2óinvói2paói2szói2zéói2zoóí2ráóí2rióí2roóí2róóí2téóí2véóí2vüóí2vűóí2zeóí2zéóí2zióí2züóí2zű2ójam2ójav2ójut2ókab2ókav2ókaz2ókem2ókeróke2t2ókev2ókez2ókém2ókésók1gr2ókia2ókiá2ókic2ókié2ókifóki2g2ókií2ókij2ókim2ókio2ókit2ókiv2ókoe2ókoh2ókoo2ókop2ókód2ókór2ókölók1plók1prók1skók1stó2kum2ókup2ókur2ókut2ókúr2ókül2óküsóleí2óli2sól1ínólóá2ólót2ól1ütól1üvóly2á2ómanómas22ómax2ómág2ómáz2óméd2ómélómi2g2ómin2ómis2ómod2ómog2ómoh2ómor2ómos2ómot2ómozóm1ötóm1őróm1próm1ütóm1üzóműt22ónad2ónag2ónap2ónavóná2lón1bróne2dón1ez2óném2ónézóni2g2ónorón1oxón1önón1ötón1prón1ür2ónya2ónye2ónyí2ónyo2ónyu2ónyúóo2dúóo2kaóo2káóo2kuóo2laóo2lióo2peóo2raóo2rióo2roóo2vióo2xióó2laóó2láóó2lióó2loóó2raóó2rióó2sáóó2váóó2voóó2vóóö2böóö2koóö2köóö2léóö2lőóö2röóö2veóö2zöóő2reóő2réóő2rióő2röóő2rüóő2séóő2söóp1üvór1brór1fl2órip2óritóri2zór1klóró1p2órózór1őrór1ünór1üz2ósarós1blós1br2óseb2ósejóse2móse2p2ósém2ósétós1frósi2gósi2p2ósíkós1klós1kv2óslá2ósorós1őrós1pl2óstá2óstí2óstú2ósug2ósül2ósür2ósza2ószá2ószé2ószi2ószí2ószkósz2l2ószó2ószö2ósző2ószpós3zs2ószt2ószú2ószüósz2v2ótan2ótap2ótarótas22ótat2ótax2ótág2ótápót1fróti2gót1kr2ótoj2ótol2óton2ótor2ótov2ótó_2ótónótőe2ót1slót1spóu2boóu2gaóu2nióu2noóu2raóu2szóu2taóu2táóu2toóu2tóóu2tuóú2jíóú2réóú2szóú2tióú2toóü2gyóü2leóü2léóü2lőóü2nőóü2reóü2ríóü2rüóü2szóü2teóü2téóü2tőóü2veóü2zeóű2ző2óvad2óvag2óvaj2óvar2óvasó2vat2óvág2óvák2óvál2óván2óvázóv1inó2vom2óvon2ózajóza1s2ózavóz1bl1ózdióz1emóz1ezóz1flóz1frózós2óz1őróz1próz3sz2ózuhóz1ülöb1álöb1átöb2bíöb2bóöb2bööbbü2öb1fr1öbli1öblööb1oröb1ónöc1ajöc3heöc3hööció2öc1őröcs1óöc3szöd1aröd1áröd1gröd1ízöd1osöd1ócöd1spöd1újöd3záöd3zuög1abög1agög1apög1arög1asög1ábög1ágög1átög1drög1frög1ínög1írög1ívög1krög1opög1osög1prög1skög1spög1trög1udög3yaök1abök1arök1asök1auök1ágök1álök1átök1ázök1dröke2lök1frök1glöki2döki2gök1íjök1ívök1ízök1kl1öklűök1ok1ökonök1óvökőé2ök1pr1ökrü1ökrűök1spök1srök1usök1újök1úrök1útökü2löl1agöl1alöl1apöl1auöl1álöl1átöl1bröldő2ö2lelölé2döl1fröli2göl1olöl1oröl1sköl1sröl1stöl2tíöl1ujöl1újöl1úsöm1alöm1aröm1auöm1áböm1ágöm1áhöm1álöm1ápöm1ázöm2bíöm2búöme2söm1grömi2göm1klöm1kröm1oröm1osöm1spöm1stöm1tröm1ujön1abön1amön1arön1asön1atön1auön1azön1ábön1ágön1álön1ámön1ázön1blön2chön2cőön2czön2dzöne2nön1exön1iföni2gön1íjönkü2ön1opön1orön1osön1oxön1óvön1öbön1őrön1őzön1plön1prön1psönsz2ön1udön1unön1újön1útön1üdöny1dö2nyíöp1ajöp1álör1abör1ajör1asör1ábör1br2ördí2ördüör2fáöri2göri2kör1obör1opör1os2örögör1udör1ujör1újör1úr1örv_1örvb1örvh1örvn1örvr1örvt1örvü1örvű1örvvörz4sös1alös1árösié2öt1aböt1ajöt1amöt1asöt1áböt1ágöt1álöt1áröt1epöt1esöte2uöt1flöt1fröt1gröt1kr1ötléöt1oköt1olöt1oröt1osö2tösötőa2ötőe2ötőé2öt1pröt1scöt1stöt1ujöt1unöv1aböv1akö2vé_öv1égö2vihö2vivöv1oröv1utöz1aböz1atöz1auöz1azöz1álözé2möz1frözi2göz1íröz1ízöz1oböz1olöz1opöz1osöz1ovöz1ónözőa2öz1plöz3saöz3sáöz3seöz3séöz3soöz3súöz3szöz1ugöz1uröz1utöz1útöz3zsőa2daőa2dáőa2doőa2dóőa2duőa2gaőa2gáőa2giőa2győa2jaőa2jáőa2kaőa2káőa2kóőa2laőa2loőa2mőőa2naőa2noőa2nóőa2paőa2páőa2poőa2póőa2puőa2raőa2ráőa2riőa2roőa2szőa2toőa2tyőa2ulőa2urőa2utőa2vaőa2xiőa2zoőá2csőá2gáőá2géőá2giőá2goőá2gúőá2győá2híőá2laőá2loőá2míőá2poőá2raőá2ráőá2riőá2roőá2ruőá2rúőá2saőá2sáőá2soőá2sóőá2suőá2szőá2taőá2téőá2tíőá2tüőá2vóőba1pőb2leőb2loőb2riőb2roőb2róőb2ruőc1apőc1grőc3háőc3héőc3höőc2luőcs1sőc3sződ1álődea2ődi2gőd1prőd1stőe2ceőe2csőe2déőe2dzőe2geőe2géőe2győe2laőe2liőe2loőe2löőe2lüőe2maőe2meőe2méőe2muőe2neőe2piőe2poőe2reőe2réőe2rüőe2séőe2siőe2sőőe2taőe2teőe2tiőe2unőe2véőe2viőe2voőe2vőőe2zeőé2deőé2etőé2geőé2géőé2giőé2gőőé2jiőé2keőé2kéőé2kíőé2léőé2lőőé2lűőé2píőé2püőé2réőé2riőé2vaőé2viőf2laőf2leőf2loőf2lóőf2löőf2luőf2raőf2ráőf2riőf2röőg2leőg2lóőg2nóőg2raőg2ráőg2riőg2róői2doői2dőői2gaői2geői2géői2győi2koői2maői2máői2miői2onői2paői2raői2ráői2riői2roő2iruői2siői2szői2vaői2váői2vóői2zéői2zoőí2géőí2jaőí2raőí2ráőí2roőí2róőí2ruőí2váőí2veőí2véőí2viőí2vűőí2zeőí2züőí2zűőkes2őkiá2őkie2ők2laők2leők2liők2líők2lóők2luők2vaőleí2őlőt2őműt2őo2ázőo2beőo2dúőo2káőo2kíőo2koőo2laőo2peőo2ráőo2riőo2roőo2soőo2veőo2xiőó2ceőó2haőó2noőó2nuőó2raőó2ráőó2riőó2vaőó2vóőö2böőö2déőö2koőö2köőö2léőö2lőőö2naőö2reőö2röőö2veőö2véőö2viőö2vöőö2zöőő2reőő2réőő2riőő2röőő2seőő2siőp2laőp2leőp2léőp2neőp2reőp2réőp2riőp2roőp2róőp2szőra2nőr1ap1őrbí2őreaőree2őreo2őreu2őreü2őr1fl1őrfőőr1frő2rimőr1ír1őrjö1őrlöő3rögő2rölőr1pl1őrs_1őrsí1őrsöőrs3sőr1úrősa2nősa2pős1auősá2lős1drőse2nőse2pős1épős1flős1frős1gnős1grősi2gős1klős1kvős1obőso2kős1ócősö2rős1őrősp2rős1skőssz2őst2rős1unősu2tőszt2őt2roőu2goőu2niőu2raőu2ráőu2ruőu2taőu2tóőu2tuőú2joőú2réőú2riőú2roőú2szőú2téőú2tiőú2toőü2düőü2geőü2győü2leőü2reőü2ríőü2szőü2teőü2téőü2tiőü2töőü2tőőü2veőü2vöőü2zeőü2zéőű2réőű2riőű2röőű2zéőű2ző2ővetőz1blő2zemőz1olőz1osőzőa2őz3szőz1útőz1ügpa2chpa1clpade2pae2rpaé2rpa1flpans2pa2nüpa2pöpa2pú2parbpa2röpa2rő2parrpars2pa2rűpast2patü22paurpa1wh2páca2pácápácé2pála2pá2lepá2lüp2ály2pámipá2mupána2pá2nípá2nöpá2nőpá2nüpá2rőpá2rüpá2sőpás3spá2tápá2tüpb2lopb2rapb2ripb2ropd2rapd2rápd2ropd2rópea2ppea2rpeca1pec3cpe2czpe2edpe1fl2pelu3pelypeo2lpeo2ppeó2rpe2ríp2erlpe2rúp2erzpet2ápe2ugpe2vőpédü22pééb2pééi2péénpéje22pélm2pépüpé2sopéta12pétlp1évkpézi2pé2zupf2lopf2lópf2lupf2rápf2rupf1stpg2rapg2rupg2rüp2hicphó2ipi2aapi2aápi2adpi2aepi2aépi2agpi2ahpi2ajpi2alpi2ampi2aopi2aöpi2appi2atpi2aúpi2aüpi2az2picc2piclpida2pi2egpi2erpi2égpi1fr2pigopil2i2pind2pinjpi2nüpi2óapi2óápi2óepi2ófpi2ógpi2ólpi2óopi2óppi1täpí2gépí2jápí2népí2rápí2rípír1spírt2pí2rüpí2rű2pítmpí2vepí2zepí2zépí2züpí2zűpkia2pkiá2pkie2pk2lapk2lipk2lípk2lupk2rápk2repk2répk2ripk2ropk2rópk2vapk2vópleí2pléé2plót2p2lurpo2bepo2dzpo2inpoki2po2kíponi2pon3n2ponzpo2ol2popcpopi2pop1spo2púpo2püpore2po2röpo2rőpo2rüpo2süpo2töpo2tüpo2vipó2cepó1frpói2gpóre2pó2röpós3spóta2pótü22póünpó2zepö2kapö2kápö2kupö2kú2pöntpö2ra3pörgpö2ropö2rúp1ötlpö2vepőa2npőá2gpő1blpőe2rpőé2hpőé2lpő1klpő1plpő1prp1őrjp1őrlp1őrspő1szppai2ppa2jppa1spp2hópp1ígpp1klpp1önpp1övpp1spppví22pretp2répp2rofp2rogp2rojps2pips1prps2ráps2tips2tops2tupsz3spta2dpt1klpt2répua2dpue2l2puká2punopuo2rpu1prpu2sípu2söpu2sőpuss2pust2pu2süpú2szpú2tépü2gepü2gypü2kü2pülepü2repü2tépü2vepü2zepű2zőpw2hipy2bapy2bópy2dopy2hopy2japy2jápy2kapy2képy2kipy2kopy2mapy2napy2nápy2rapy2rópy2tópy2vapy2vápzőa2pzőe2pzőé2qu2aequ2atqu2erqu2ezqu2ébqu2iequ2ijqu2ilqu2inqu2isqu2odraa2d2radmrae2rraé2rra1flrai2o2ralkram1bra2möra2mőra2müra2óara2óára2ófra2ómra2óp2rapprast22raty2raumrau2nraü2traü2z2ravúra2xüra1yera1yérá2cörá2cúrá2cü2rágírá2güráí2rrá2jürá2lírá2lürá2mörá2nírá2nü2rápo2ráru2rárúrá2sőrást2rá2tírátú2rb2lúrb2rirb2rorb2rurca1prc1frrc1grrc3hurci2drc1kvrc1ónrc1óvrc1őrrc1plrc1prrcs1prcs1src3szrc1trrc1ügrc1üvrc1üzrc1űzrc3zórc3zsrc3zurc3zúrda1prd1blrd3dzrd1frrd1klrdóa2rd1övrd1prrd1skrd1sprd1strd1ügrd3zord3zórea2drea2jrea2rre2cáre2chre2czre2etre2ew2reffre2gúre2jare2kőrek1s2relú2relűre2mö2reníre2ofre2óare2ócre2óere2óére2ófre2ólre2óore2óprepö2re2púre2udré2báré2bíré2bü2réfáré2gő2régtré2kőréku22rélyré2móré2möré2nörépi2ré2pöré2pürésa2ré2súrévá22révf2révh2révtré2vú2révvrézá2rézó2ré2zörf1álrf1flrfid2rfii2rfik2rfit2rf1klrf1krrf2larf2lorf2lórf2lurf1prrf2rírf1sprf1strge2org2ilrg2larg2lerg2lorg2lórg2ölri2aari2aária1bri2acri2aeri2aéria1fri2ahri2aíri2ajri2amri2aori2aóri2aöri2aőri2auri2aúri2aüri2avri2az2ribé2ribürid1dri2duri2ed3rierri1fl2rigirihó22rilórin3nri2om2rioxri2óari2óári2ócri2óeri2ógri2ólri2óori2óü2ripl2rivorixe2ri2xíri2xö2rizarí2gé2ríj_2ríjá2rímárí2morí2mörí2nérí2raríva2rí2virí2vűrí2zarí2zorjet2rka1brke1prkia2rkie2rki2grk1klrk1shrk2vórleí2rleü2rl1grrlóó2rlót2rlőe2rmaó2rm1clrmi2grm1klrm1skrm1strm1trrm1ügrm1üzrmű1srm1yarna1brnas2rnés2rni2grny1sro2adroa2n2roblr1obsro1flro1frro2görogu2ro2gü3rogyro2hero2höro2is3rojtroke2r2okéro2kőrokú2ro2küro2lüro2míro2möro2mőro2müro2níro2nöro2nőro2nüro2omro2os2roperop2srore2rort2ro2rüro2söro2ső2rotéro2unro2usro1xyro1yaróa2d2róbáróc3cró2czró2dőró2dü2rófsrói2gró2mí2rómkró2möró2mü2rónj2rónn2rónr2rónúró2nüróo2króó2r2rótb2róth2rótj2rótk2rótm2rótnró2zúró2zürö2garö2gorö2gó2rökírö2korö2marö2márö2mírö2morö2mórö2mu2römü2röműrö2rerö2rörö2sarö2sárö2sorőa2nrőát1rő1blrő1brrő2dárőe2lrőe2rrőe2srőé2hrőé2lrőé2rrő1flrő1klrő1kv2rőltrő1plrő1prr1őrhrő2rörősá2rő2sőrőu2trőü2lrpei2rp2herp2lerp2lérp2lurp2lürré2rrr1flrr1frrró1prr1plrr1prrr1sprry2nrs1blrs1brrs1frrs1glrs1grrsi2drsi2gr1skjrs1klrs2nirs1őrrs1plrsp2rrst2rrsu2rrsu2trsz2mrt1blrt1brrt1clrt1crrt1drrtea2rtei2rte1prt1flrt1frrt1grrtí2zrt1klrt1krrt1kvrtmű1rtó1prt1plrt1prrt1psrt1skrt1slrt1sprt1strtsz2rtu2krty2jrty2srt2zőru2acru2czrue2lrue2rru1frru2míru2möru2mőru2müru2peru2püru2sőruss2rust2rúda2rú2durú2dürú1dyrú1grrú2jírú2rorúto22rútsrü2dírü2dürü2harü2larü2lárü2lírü2lórülö2rü2lurü2lúrü2rírü2rürü2terü2térü2törü2tőrü2vörü2zerü2zérű1grrű1klrű1prrű2rörű1sprv1frrv1klrv1krrv1ősrv1prrv1skrv1sprv1strv1trrvü2lry2bery2bóry2bőry2hory2nary2nery2rary2rerys2nry2tóry2tőry2vary2verzőa2rzőe2rzs1s2sabo2sabrsae2r2saga2saggsa2gő3sah_sa2ig2saja2salf2salms2and2sanesa3nösaó2r2sapp2sapu2sarm2sarzsase23sastsa2sú2satysa2ul2sautsa2uv3sav_sa2vősa2vüsa2xisá2bösá2büsá2gísá2gőság1ssá2güsá2gűsáka2sá2küs1álc3sámásánt2sá2nüsá2rísá2rösá2rősárt2sárú2sá2rüsá2sósá2sösá2ső2sáta2sáté2sáth2sáti2sátj2sátk2sáts2sátt2sátu2sátv3sáv_3sávb3sávjsá2vö3sávr3sávú3sávvsbeá2sb2losb2lúsb2rasb2risb2rosb2róscar2sc2risdai2sdeá2sdes2sd2rasd2rásd2rosd2rusea2dsea2lsea2nseá2lseá2rsebá2se2böseb1pseb1sse2búsee2lsee2n2seff3segg3segísehü2seí2r2selb2self2selr2selzs1enzseó2rser1kse2róser1ssert2seü2tse1yese1yése1yis1ezrség3gsé2gí3ségkségo2ség1ssé2gusé2gú3ségüs1éjs2séllsé2lű2sély3sémásé2mu2sérb2sérc2sérmsé3ró2sérr2sétksétő22sétr2sétt2sétv2sévhsf2lesf2losf2lósf2lusf2rasf2rásf2resf2risf2rísf2rosf2rösga1bsga1psge2osg2lesg2lósg2nósg2rásg2risg2rós2hopsi2acsia2dsi2aési3aksia2l2sidési2dusi2egsie2lsi2ensi2eu2siga2sigá2sige2siha3simí2simp2sind2sinf2sinj2sinvsi2óasi2óási2ócsi2óesi2ógsi2óosi2ópsi2óú3sipís1irg2siro2sirtsis3ssist23sitysiú2t3siví2sizésí2gésí2jasí2jusíke2sí2kísí2küsína2sí2nö2sínssí2rísí2rösí1spsí1stsí1trsí2vásí2vésí2vűsí2zas1ízr2sízüskao2skat2skau2skiá2skie2sk2jösk2lask2lisk2lísk2losk2lósk2luskó1psk2rísk2rusk2vask2visk2vósky1is2lágsleí2sléi2sli2dslős2s2lussmaó2smas2s1objso2díso2döso2dőso2dúso2düso2kí2sokl2sokmso2küso2mísom1pso2múso2mü2sond2sonó2sonvso2órso2óss1opcso2röso2rőso2rüso2rű2soszso2ulso2urso2veso2xisóá2gsóá2rsói2gsóí2vsó2kósómű1só2nisóó2rsó1szsö2bűsö2gasö2gásög3gsö2gosö2gűsö2kasö2kús1ölysö2nasö2násö2nosö2nú3sör_sö2rasö2rá3sörb2sörd3sörksö2rosö2rósör1ssö2ru2sörvs1ösvs1ösz2söves1övvsőa2csőa2lsőa2nső1blső2dásőe2lsőe2rsőe2sső1grső1klső1plső1pnső1prs1őrzsősü2s2pájsp2lusp2nesp2rasp2szsrau2ss2koss2láss2póss3szss2toss2tússzt2sta3ust1brst1drste2aste2ust1flst1frst1grsti2gs2tírst1krst1kvstőa2stőe2st1pfst1plst1prst1scst1stst1szst1útsuá2rsubi1s1udm3suhi2sujjsu2ke3summsu2nosupe22sura2surn2sutó2sutusúdi2súi2ms1újh3súly2súr_2súrb2súré2súrh2súri2súrk3súrl2súrn2súrp2súrr2súrtsú2só2súsz2sútés1úth2sútis1útn2sútosútü2sü2dísü2düsü2küsü2násüne2sü2rí2süst2sütksü2zesü2zésű1pr3sűrísű2zősven1s2vunsw2hisy2bősy1igszaa2szaé23szax2szápsz1blsz1brsz1cl2szehszeo2sz1flsz1frsz1gl2szio3szof3szovszőa2szőé22szőzsz1plsz3sész3shsz3slsz3sósz3süsz3szszu2bszuc12szud2szuh2szúg2szúj2szús2szúz3szűksz3zstaa2dtaa2ltaát1ta1clt1adjt1adl2tadót1adst1advtae2ltae2rtaé2r2tafítai2zta2jéta2lüta2lűta2müta2nüta2nűtao2ltaó2r2tapp2tasc2tasftast22tasvta1sytaü2zta1wh2táb_2tábé2tábj2tábk2tábntá2bö2tábrtá2bütá2fatá2fá2tág_2tágb2tágg2tágj2tágn2tágrtá2hítá2jítá2jőtále2tá2lötá2lütá2mítá2nítá2nötá2nütá2nű2tánztápá2tá2pőtá2pütá2rítá2rötá2rőtá2rütá2rűtá2sótá2sötá2sőtás3stást2tá2sűtá2vítá2vötá2vőtá2vütbeá2tb2latb2letb2litb2lotb2lútb2ratb2retb2rotb2rótb2rutca1ktca1stc2lutc2retd2ratd2rátd2retd2rotd2rótd2rute2aate2aáte2abte2acte2aete2aéte2agte2ahteai2te2aíte2ajte2aote2aöte2aőteas2te2aúte2aüte2avte2azte2díte2gáteg3gte2gútei2gte2jíte2jote2jőte2júte2kíte2lúte2nöte2núte2octe2ofteo2s2teppte2rőtert2tesp2té2cő2tég_2tégb2tégé2tégg2tégj2tégn2tégr2tégttégü2tékó2té2kőtéla2t2éláté2líté2lótélu2té2météna2té2rötésa2té2sóté2sutétó22tévh2tévk2tévtté2vúté2zstf2jotf2latf2letf2litf2lotf2lótf2ratf2rátf2retf2ritf2rítf2rotf2rötf2rutg2lotg2lótg2netg2ratg2rátg2ritg2rótg2rutg2rüth1scti2aati2aeti2aéti2afti2ahti2ajti2amti2aüti2avtie2ntié2bti1flti3kitin3nti2nöti2nűti2oltio2xti2xatí2gétí2jatí2játí2jútí2latí2rőtí2rütívi2tí2vötí2vőtív1stí2zatí2zátízi2tí2zí2tízltí2zötí2zutkiá2tkie2tkié2tk2latk2litk2lítk2lótk2lutk2ratk2rátk2rítk2rutk2vatk2vitk2vótleí2tleü2tma1kto2díto2ilto2kíto2kőtok1sto2küto2kűtom1bto2míto2mötom1s2tomúto2müto2műto2nöto2nőtont2to2nüto2nű2topcto2pütord2tore2toró2to2röto2rőtors2tort2to2rüto1ryto2süto2uttova1to1yotóá2rtóát1tó1bltó1cltó1fltó1gltói2gtóí2vtóo2któó2rtö2dítö2do2tödütö2katö2kátö2kítö2kutö2natö2nátö2notön1stö2nutö2nútőa2ctőa2ltőá2gtő1bltő1brtőe2rtőé2ltő1fltő1grtőí2ttőí2vtő1kltő1kvtő1pltő1prtő1ps2tőrl2tőrp2tősűtősz2tő1trtőü2ltőzá2tp2fetp2latp2látp2létp2lutp2ratp2retp2rétp2ritp2rotp2rótp2rutp2sztrat2tréé2trii2tr2ost3römts2chts2káts2kots2lats2láts2lets2lits2máts2mits2nitsói2ts2pats2pets2pits2pots2pótsp2rts2ráts2tets2téts2tits2títs2totst2rts2tuts2túttad2ttaü2tt1krttö2ltt1prtt2sittwe2ttyü2tuá2rtu1ck2tudítu2gatu2gotu2hutu2in2tukátulo2tu2lütu2mítu2mötu2mőtu2mütu2setu2sőtuss2tu2sü2tutátu2umtú2jatú2jítú2jotú2jutú2lítú2lötúl1stúlt2tú2lútú2lütú2lűtú2rötú2rütú2tátü2getü2gytü2látü2lítü2lutü2lútü2ma2tüsttü2titü2tötü2vötű2dátűé2htű1grtű1kvtű1pltű1prtű1sptű2zítű2zotű2zútyat2tyau2ty1ívtynk2ty1ősty2pety1prty2saty1sptz3scua2chua2daua2dáua2dóua2esua2gáua2jaua2jáua2laua2láua2nyua2szua2tyua2utua1yáua1yéua1yiua1youa2zouá2gauá2gyuá2pouá2szub1drubi2gub1krub1ölub1ösub1övub1plub1prub1slub1spub1üdub1ügub1üzuc2cöuc2cúuc2cüuc2czuc3háuci1puc2kyuc1prucs1suc3szuc1üguc3záuc3zeudi2oue2béue2dzue2géue2gyue2lőue2meue2rőu2es_u2esbu2eshu2esiu2esku2esnue2sőu2esru2estu2esuue2teue2veué2geué2géué2kéué2leué2píué2püué2teuf2riuf2ruuf2tüuga1pug1águg1elugg2lugi2eugi2tug1írug1klug1ösug1prug1sk2uguiug1ügug1üzug1űruh1emuh1exuh1őruh1pruh1tru2hu_u2hujuh1üzui2deui2dőui2euui2gaui2géui2paui2ráui2zéuí2jauí2juuí2veuí2vű1ujjb1ujjc1ujjd1ujjé1ujjf1ujjg1ujjh1ujjiuj2jí1ujjk1ujjl1ujjm1ujjn1ujjp1ujjr1ujjs1ujjt1ujju1ujjúuj2jü1ujjvuk1bluke2luk1exukós2uk1öbuk1pruk1űrul1blule2iuleí2ule2lulot2ulóó2ulót2ul1ötul1prul1stul1úrul1ütul1űru2lyi2umaé2umaoum1blum1drume2gum1flum1glum1grumia2umig2umit2um1ívum1ízum1klum1krum1kvumna2um1ömum1önum1ösum1ötum1övum1ősum1skum1spum1stum1szumu2rum1ügum1ürum1üsum1ütum1üvum1üzuna1bun2dzun1égung3gu2nodu2notun1pru2nunuo2lauo2liuore2uo2xiu2óbuu2óneu2óréuó2riu2ósou2ószu2óveuö2kouö2köuö2röuö2zöuő2reuő2réuő2riuő2röuő2rüupas2upda2up2hiup1üzur2fí1urnáur2neurn2éuro1pur1ölurpi22urulu2rú_us1blus1brus1druse1tus1ezus1frus1grusi2gus1ígusí2rus1klus1kvus1ócus1plus1pnus1prus1ps2uss_us1syusu2sus1üdusü2lus1üzuszü2usz1zuta1putaü22utav2utáb2utáé2utámut1bl1utca1utcáut1fruti2mut1kl2utos2utotut1prut1sput1stut1üguu2möuu2müuu2tauu2táuu2zsuü2gyuü2ríuü2téuü2veuü2zeuv2reuz1íruzki2uzói2uz3szuzü2lúa2daúa2dáúa2dóúa2gyúa2jáúa2laúa2láúa2nyúa2szúa2udúa2vaúá2gaúá2gáúá2giúá2goúá2gyúá2híúá2loúá2poúá2raúá2riúá2ru2úbab2úbarúb2lo2úbódúb2riúb2roúc3heúc3hoúc1pr2úcsa2úcse2úcso2úcsóúcs1púcs1súcs1túda2dúd1ágúd1álúde2lúdé2túdi2gúd1prúd2ráúd2roúd1üvúdy1iúdy2súd3záúe2béúe2géúe2gyúe2laúe2leúe2loúe2löúe2lőúe2meúe2piúe2reúe2réúe2rőúe2rűúe2szúe2taúe2teúe2veúe2vőúé2heúé2leúé2lőúé2pí2úér_úé2reúé2ri2úérzúé2teúé2veúf2löúf2ráúf2riúf2ríúf2roúg1elúgós2úg2ráúgyi2úi2dőúi2gaúi2gé2úillúi2mi2úing2úintúi2paúi2rá2úisk2úism2úistúi2taúí2ráúí2veúí2viúí2vüúj1esúj1ezúj1orúj1plújra11újsáúj1udú2jul2úkab2úkap2úkarúke2lúke2súke2t2úkés2úkézúkia22úkinúk2lu2úkol2úkom2úkosúkö2lúk1prúkü2lúla2núl1brúle2lúl1enúl1exú3lé_úlé2gúl1frúl1glúl1ígúl1kvúlo2kúl1öbúl1ölúl1örúl1skúl1smúl1spúlsz2últi2úl2tíúl1úsúl1ügúl1ülúl1ünúl1ürúl1ütúl1üvúl1üzúl1űzú2lyőúly1s2úmac2úmad2úmag2úmaj2úmar2úmoz2únac2únapúnau2úo2koúo2veúó2raúó2ráúó2sáúó2voúö2leúö2léúö2lőúö2röúö2veúő2röúp1egúpe2lúp1esúp2laúp2léúp2ríúp2ro2úrab2úrajúr1brúr1ezú2rék2úrésú2rieúri2gú2risúr1önúr1ötúr1ősúr1prúr1snúsa2núsa2r2úsátús1drús1exús1frúsi2gús1klús1kvús1ösús1őrús2peús1prús1ügús1ünús1üz2úsze2úszé2úszí2úszöúsz1p2úszüút1blút1efú2téhú2ténút1grút1idútie2ú2tiéúti2gút1ígút1íjút1ívút1op2útorút1ösútő2rút1plút1prút1stútu2r1útvoúu2noúu2raúü2gyúü2léúü2reúü2teúü2veúü2vöúü2zeúű2ző2úválúv2árúzae2úzaé2úzak2úzót22úzse2úzsiúz3szüa2jáüa2laüá2gaüá2goüá2guüá2raüá2szüb2loü2desüd1ízüdőé2üd2vo1üdvöüd2vőüd2vuüd2vúüe2béüe2geüe2géüe2leüe2meüé2keüé2píüf2roüge3lüg2raü3gyíüh1afüh1atüh1ásüh1orüh1ősüi2géüi2koüí2ráüka2pük2káükke2ükko2ül1abül1agül1ajül1atül1auül1álül1br2ülekül1früli2gül1ígül1omül1opül1orülőe2ülőt2ül1slül1spül1stül1udül1úsülü2lüm1flüm1frümi2güm1klüm1krüm1orüm1osüm1őrüm1trüm1újün1álün1idüó2ráüő2reüp2riüp2roü2römürtü2üss1süssü2üs2tíüs2túüstű2üszi2üt1abüt1aj1ütköüt2ziüu2taűa2daűa2dóűa2gyűa2kaűa2laűa2loűa2naűa2nyűa2orűa2paűa2páűa2raűa2ráűa2toűa2utűa2vaűa2xiűa2zoűá2béűá2gaűá2gáűá2gyűá2híűá2jeűá2loűá2poűá2raűá2riűá2roűá2ruűá2síűá2téűá2tíűb2loűb2róűd1álűd2roűd1skűe2csűe2geűe2géűe2gyűe2laűe2leűe2léűe2lőűe2lüűe2meűe2piűe2poűe2reűe2rőűe2seűe2séűe2sőűe2teűe2tiűe2véűe2vőűé2leűé2léűé2píűé2teűf2loűf2raűf2riűf2roűg1ősűgő2zűg2raűg2ráűi2doűi2gaűi2géűi2máűi2miűi2paűi2ráűi2roűi2szűi2taűi2zéűi2zoűí2ráűí2riűí2róűí2téűí2veűí2züűí2zűűkia2űk2laűk2liűk2líűk2loűk2vaűn1alűn1arűn1álűni2gűnme2űn3nyűn1olűn1osűn1prűn1űzűo2dúűo2káűo2koűo2laűo2ráűo2roűó2ceűó2raűó2ráűó2riűö2lőűö2röűö2veűö2zöűő2röűp2laűp2lüűp2neűp2réűp2riűp2ríűp2roűp2róűr1adűr1auűr1ábűr1álűr1ásűr1ázűre2nűr1exűr1épűr1flűr1idűri2gűr1orűr1otűr1ónűr1örűr1plűr1prűr1ujűr1unűr1útűr1ügűr1üzűs1álűs2peűs2piűs2poűsp2rűs2ráűs3szűst2rűsz2kűsz2tűtőa2űtőe2űt2riűu2gaűu2raűu2szűu2taűu2táűu2tuűú2riűú2szűú2tiűú2toűü2gyűü2léűü2ríűü2teűü2téűü2töűü2veűü2vöűü2zeűű2zőűz1akűze2sűz1frűz1glűzi2gűz1ínűz1írűz1klűz1krű3zoműz1onűz1opűz1orűz1osűzőa2űzőe2űz3saűz3süűz3szűz1úrűz1útűz3zsvaa2dvaát1v1absva2dűvaé2rvag1gva2gúva2jíva2jöva2jü2vangvan3nva2nóva2ríva2rővars2va2rűva2sővast2va2sűvatő2vatt2vau2n2vábrváde2vádé2vá2dövá2düvá2gúvá2lúvá2lüváma2vá2mívá2mövá2mővámu2vá2müvá2nüvá2povárd2vá2rívá2rövá2rővárs2várú2vá2rüvásó2vást2vá2sűváta2vá2zívá2zövá2zővá2züvb2lovb2ravd2rávea2gvea2lvea2nvea2rveá2l2veceve1clvegg2ve2gíve2gú2velave2növeó2rve2örve2peve2róve2rövest2véá2gvé2dávé2dövé2dúvé2dzvéga2vég3gvé2gövé2gúvé2lívé2lúvé2lűvér1svéru2vé2sóvé3vavf2ravf2revf2rivf2rovge2ovg2ravg2rávhez1vi2aavi2abvi2acvi2aévi2agvia2pvi2dzvi2ewvika2vi2má2vind2vipavisa2vi2sövit2a2vitnvi2zúvídi2ví2geví2nyví2záví2zíví2zöví2zúvízü2víz3zvkiá2vk2livk2lóvk2luvk2rivk2rívk2róvleí2vleü2vo2ilvo2jivo2kívome2vo2odvo2pevo2süvo2ucvo2vávo2xivóa2kvóá2gvóá2rvóó2rvó2sóvó2sövó2sővós3svö2bövö2vevö2vévö2zsvőa2nvőá2gvőe2lvőe2rvőé2jvőé2nvő1flvő1klvőo2lvő1plvő1prv1őrmvőü2lvő2zivp2lavp2ravp2revp2révp2rivp2rovp2róvp2szvs2kávs2kivs2kovs2lávs2pevs2tavs2tivs2tívs2tovst2rvs2túvsz2pvt2ravt2révt2rivt2rovu2bovu2mövu2ravu2ruvu2táv1utcvú1frv1újdv1újsvú2revúré2vú2röv1útnvü2gyvü2küvü2lávü1prvü2rívü1stvü2tevü2tévü2zévű2zőwa2iiwa2lewa2rewa1yewa1yéwe2büwe2edwe2ekwe2igwe2iswe2lewe2örwhi2twi2chwi2czwo2odwri2twsto2xa2dáxaé2dxa1flxa2naxa2rixa2vixá2gyxb2laxb2loxb2raxd2róxé2píxf2rexha2uxia2nxi2av2xidá2xidé2xidl2xidmxi2dö2xids2xidu2xidvxi2el2xilcxina2xine2xi2nöxi2onxi2ócxi2óexi2ógxi2óoxi2óöxi2ópxise2xis1pxis3sxí2jaxí2jáxí2joxí2juxí2róxo2pexö2déxö2röxö2zöxő2séxp2laxp2rixs2káxs2pexs2taxst2rxusi2xus3sxust2xusú2xu2süxu2taxü2léxü2vexü2zeyaa2dy1absyae2ryae2tyaé2ry1affya2gíya2gőyag1sy1ajky1ajtya2lüya2lűya2möya2mőya2müy1angyaó2ry1appya1slyast2yaü2tyaü2zy1ábryá2gayá2gáyá2géyá2giyá2goyá2guyá2gúyá2gyyá2jőyáka2yá2küyá2lüyáma2yámi2yá2müyán3nyá2nöyánt2yá2nüyáró2yá2röyá2rőyá2rüyá2seyá2söy1átby1átfy1áthy1átky1átmy1átny1átpy1átry1átsy1átty1átvybeá2yb2layb2leyb2léyb2liyb2loyb2lúyb2rayb2riyb2royb2róyc2viyd2beyd2niyd2royd2róyea2vyeá2rye1blyee2sy1effyega2ye2gíye2gúyei2gy1ejty1elcyemi2y1enzye2sáy1etnyé2büy1égby1égty1éhsy1éj_y1éjby1éjjy1éjsy1éjtyé2kőyél3lyéná2yé2noyé2píyé2püyéra2yéró2yéru2y1étly1év_y1évby1évfy1évhy1évky1évmy1évny1évry1évsy1évty1évvyfas2yf1glyf2layf2leyf2liyf2loyf2lóyf2riyf2ríyf2röyg2leyg2lóygót2yg2rayg2ráyg2riyg2róyg2ruyg2rüy1igmy1ihly1impy1incy1indy1infy1injy1insy1invy1irry1irty1ishy1ismy1ispy1isty1izgy1izmyí2géyí2jayí2jáyí2juyí2kayí2káyí2keyí2kíyí2layí2líyí2löyí2rőyí2váyí2veyí2véyí2vóyí2vüyí2vűyí2züyí2zűy2jévykai2yk2bóyk2hoykiá2ykie2yk2kayk2layk2leyk2liyk2líyk2lóyk2luyk2náyk2rayk2ríyk2royk2róyk2vóylei2yleí2ylóá2ylót2ym2mayn2kaynk2ryo2bey1objyo2geyog3gyogi2yo2gíyo2göyo2güyo2gűyoka2y1okmyo2lúyo2lüyo2míyo2möyo2mőyo2níyon3nyo2nöyont2y1opty1ordyo2seyos3syo2utyo2veyo2xiyóá2gyóá2ryóí2vyóo2kyóó2ryós3syö2böyö2bűyö2csyö2kayö2káyö2kíyö2koyö2kóyö2kuy1ömly1önky1önzyö2ray1ördyö2royö2ruyö2soy1ösvy1ötly1ötpy1ötty1ötvyö2veyö2véyö2viyőa2nyő1blyőe2lyőe2ryő1fryő1pryő2ray1őrgy1őrly1őrpy1őrzyősz2yp2layp2leyp2léyp2luyp2rayp2reyp2réyp2riyp2ríyp2royp2róy2prőyp2ruyp2szyrea2yreu2ys2chys2hoys2kays2káys2kiys2lays2láys2leys2luys2miys2nays2niys2peys2piys2poys2póysp2rys2rays2ráys2rőys2says2sáys2seys2tüyta2cyt2röy1udvyu2gey1ugryu2gyyu2huy1ujjyu2kőyu2kűy1undy1urnyus3sy1utcyú1blyú1bryú1gry1újdy1újry1újsyú2kóyú2lüyú2lűyú1ply1úrby1úrky1úrryú2süy1útby1úthyúti2y1útjy1útky1útmy1útny1útpy1útry1útsy1útty1útvyü2düyü2láy1ünnyü2ríy1ütky1üzlyű1blyűé2nyű1klyű1ply1űrby1űrryű2sáyűs1syvai2yv1bryv1dryv1fryv1gryv1klyv1kryv1őryv1pryv1skyv1slyv1styv1tryv1újyv1útyzőa2yz2rí2zabsza2ceza2cíza1fl2zagizai2z3zaj_3zajf3zajj3zajú2zakczakü2za2míza2mü2zangzao2kzao2szaó2hzaó2vza2pí2zarc2zarm2zarzzatt22zatyzaü2tzaü2zz1az_z1azhzá2dezá2güzáí2rzá2jízá2jőzá2jüzá2jűzá2lüzá2mózá2mözá2mőzá2müzá2műzán3nzá2nüzány22zárfzá2rőzárs2zá2rüzá2sü2zátbz1átd2záth2zátszázó2zá2zözbeá2zb2lezb2lozb2lúzb2rizb2rózb2rúzc2luzdas2zd2rizea2dzea2gzea2kzea2lzea2szeá2rzeá2z2zebez1ebfz1ebhz1ebk2zecezee2sz1effze1frze2gúze2iazei2gzei2szeí2rze2kő2zema2zemk2zeml2zemsze2mú2zemü2zemv2zenzzeo2kzeo2mzeö2r2zeprzer1s2zerűzesp2ze2tyzeu2gzeü2tze2xúz1ezrzé2dózédu2zé2dúzé2fáz1ég_z1égbzé2géz1égnz1égrz1égt2zéidz1éj_z1éjszéla22zélézé2lí2zélm2zéltzé2lú2zémezéni2zé2nízé2nözé2nőzént2zépo2zé2pózé2pözép1szé2púzé2rözér1szé2rúzé2sózés3s2zétkzé2tú2zétvz1évbz1évf2zéviz1évkz1évrz1évsz1évtzf2lazf2lezf2lizf2lozf2lózf2razf2rázf2rezf2rizf2rízf2rozf2rözg2lazg2lózg2rózhán2zi2aazi2aázi2aczi2adzi2aezi2aézi2agzi2ahzi2aízi2ajzi2alzi2amzi2aozi2aözi2arzi2atzi2aúzi2aüzi2av2zicczi1chzie2lzie2mzi2éazi2éázi2épzi2éüz1ifjz2ig_zim1bzi2mözi2nízin3nzi2núzi2olzi2otzi2óazi2óázi2óczi2óezi2ógzi2óízi2ólzi2óozi2óúzi2óüzi2óű2zirá2ziro2zirtzi2sözi2sőziss2zist2zitó2ziú2r2zizmzí2gézí2jezí2jözí2jüzí2nízíno2zí2nözí2nuzí2núzí2vúzí2zezí2züzí2zűzk1blzk1drzkia2zkiá2zkie2zki2gzk2lazk2lózk1przk2rázk2rízk2vózky2bzky2hzky2jzky2kzky2nzky2rzky2tzky2vzlei2zleí2zlóó2zmas2zmeá2znie2zni2óz2nobznót2z1objzo2eszoki2zo2lözo2lü2zome2zomé2zomf2zomgzomi22zoml2zomzzone2zo2nözo2nüzo2olzo2omzo2rözo2rü2zote2zotózo2vizo2xizóa2dzóá2gzóá2rzó1blzó1clzó1flzó1glzói2gzóí2vzója12zól_z1ólmzóó2rzó1slzö2bázö2bozö2bóz1öcczö2dézö2dúzö2gazö2gázög3gzö2gízö2gozögö2zö2guzö2gy2zönb2zöne2zöné2zöni2zönl2zönö2zönr2zöntz1ösvzö2tez1öv_zö2zözőa2czőa2lzőá2gző1blző1brzőé2lző1flző1grző1klzőmű1ző1plző1pr2zőrk2zőrl2zőrm2zőrü2zőrzzősz2ző1trzőü2lzp2fezp2lazp2lézp2lozsag2zs1blzs1brzs1drz3sej2zsezz3ség2zsél2zsépzs1flzs1frzs1grzs1íjzs1kl3zsom2zsorzsp2rzs1stzs3szzst2r3zsul2zsumzsu1s2zsúl2zsügzs1üs2zsützs1whz3szézsz2fz3sziz3szízsz2lz3szoz3szóz3szözsz2pzs3zsz3szüz3szűzt1blzt1drzt1flzt1frzt1grzti2pzt1klzt1krzt1kvz2toiztóá2ztö2lztőa2zt1plzt1przt1pszt1slzt1snzt1spzt1stzt1szz2tye3zubbzu2bu3zug_3zugbzu2gézu2gí3zugozu2gözu2güzu2gű3zuhazule2zu2lúzume2zu2mízu2mőzu2mü2zundzu2ne2zunizu2rúzu2sőzuss2zust2zú1drzú1fl3zúgáz1újdz1újsz1úthz1útiz1útjz1útnz1úttzú2tüz1útv3zúzá3zúzd3zúzózü2düzü2ni2zünnzü2ríz1ütkzü2vezü2vöz1üzlzű2razű2rázű2rózű2ruzű2zezű2zozű2zszű2zúzy1akz1yarzy2bezy2jezy2nezy2nézy2rezy2rőzy2sazy2sozy2tőzy2vezzát2zz2lezz1lyz3zsiz3zsíz3zso", diff --git a/resources/viewer/hyphenate/patterns/hy.js b/resources/viewer/hyphenate/patterns/hy.js new file mode 100644 index 0000000000..1afae322b7 --- /dev/null +++ b/resources/viewer/hyphenate/patterns/hy.js @@ -0,0 +1,13 @@ +// For questions about the armenian hyphenation patterns +// ask Sahak Petrosyan (sahak at mit dot edu) +Hyphenator.languages['hy'] = { + leftmin : 1, + rightmin : 2, + shortestPattern : 2, + longestPattern : 3, + specialChars : unescape("աբգդեզէըթժիլխծկհձղճմյնշոչպջռսվտրցւփքևօֆԱԲԳԴԵԶԷԸԹԺԻԼԽԾԿՀՁՂՃՄՅՆՇՈՉՊՋՌՍՎՏՐՑՒՓՔՕՖ"), + patterns : { + 3 : "և1աև1եև1էև1ըև1իև1ոև1օ", + 4 : "ա1բաա1բեա1բէա1բըա1բիա1բոա1բօա1գաա1գեա1գէա1գըա1գիա1գոա1գօա1դաա1դեա1դէա1դըա1դիա1դոա1դօա1զաա1զեա1զէա1զըա1զիա1զոա1զօա1թաա1թեա1թէա1թըա1թիա1թոա1թօա1ժաա1ժեա1ժէա1ժըա1ժիա1ժոա1ժօա1լաա1լեա1լէա1լըա1լիա1լոա1լօա1խաա1խեա1խէա1խըա1խիա1խոա1խօա1ծաա1ծեա1ծէա1ծըա1ծիա1ծոա1ծօա1կաա1կեա1կէա1կըա1կիա1կոա1կօա1հաա1հեա1հէա1հըա1հիա1հոա1հօա1ձաա1ձեա1ձէա1ձըա1ձիա1ձոա1ձօա1ղաա1ղեա1ղէա1ղըա1ղիա1ղոա1ղօա1ճաա1ճեա1ճէա1ճըա1ճիա1ճոա1ճօա1մաա1մեա1մէա1մըա1միա1մոա1մօա1յաա1յեա1յէա1յըա1յիա1յոա1յօա1նաա1նեա1նէա1նըա1նիա1նոա1նօա1շաա1շեա1շէա1շըա1շիա1շոա1շօա1չաա1չեա1չէա1չըա1չիա1չոա1չօա1պաա1պեա1պէա1պըա1պիա1պոա1պօա1ջաա1ջեա1ջէա1ջըա1ջիա1ջոա1ջօա1ռաա1ռեա1ռէա1ռըա1ռիա1ռոա1ռօա1սաա1սեա1սէա1սըա1սիա1սոա1սօա1վաա1վեա1վէա1վըա1վիա1վոա1վօա1տաա1տեա1տէա1տըա1տիա1տոա1տօա1րաա1րեա1րէա1րըա1րիա1րոա1րօա1ցաա1ցեա1ցէա1ցըա1ցիա1ցոա1ցօա1փաա1փեա1փէա1փըա1փիա1փոա1փօա1քաա1քեա1քէա1քըա1քիա1քոա1քօե1բաե1բեե1բէե1բըե1բիե1բոե1բօե1գաե1գեե1գէե1գըե1գիե1գոե1գօե1դաե1դեե1դէե1դըե1դիե1դոե1դօե1զաե1զեե1զէե1զըե1զիե1զոե1զօե1թաե1թեե1թէե1թըե1թիե1թոե1թօե1ժաե1ժեե1ժէե1ժըե1ժիե1ժոե1ժօե1լաե1լեե1լէե1լըե1լիե1լոե1լօե1խաե1խեե1խէե1խըե1խիե1խոե1խօե1ծաե1ծեե1ծէե1ծըե1ծիե1ծոե1ծօե1կաե1կեե1կէե1կըե1կիե1կոե1կօե1հաե1հեե1հէե1հըե1հիե1հոե1հօե1ձաե1ձեե1ձէե1ձըե1ձիե1ձոե1ձօե1ղաե1ղեե1ղէե1ղըե1ղիե1ղոե1ղօե1ճաե1ճեե1ճէե1ճըե1ճիե1ճոե1ճօե1մաե1մեե1մէե1մըե1միե1մոե1մօե1յաե1յեե1յէե1յըե1յիե1յոե1յօե1նաե1նեե1նէե1նըե1նիե1նոե1նօե1շաե1շեե1շէե1շըե1շիե1շոե1շօե1չաե1չեե1չէե1չըե1չիե1չոե1չօե1պաե1պեե1պէե1պըե1պիե1պոե1պօե1ջաե1ջեե1ջէե1ջըե1ջիե1ջոե1ջօե1ռաե1ռեե1ռէե1ռըե1ռիե1ռոե1ռօե1սաե1սեե1սէե1սըե1սիե1սոե1սօե1վաե1վեե1վէե1վըե1վիե1վոե1վօե1տաե1տեե1տէե1տըե1տիե1տոե1տօե1րաե1րեե1րէե1րըե1րիե1րոե1րօե1ցաե1ցեե1ցէե1ցըե1ցիե1ցոե1ցօե1փաե1փեե1փէե1փըե1փիե1փոե1փօե1քաե1քեե1քէե1քըե1քիե1քոե1քօէ1բաէ1բեէ1բէէ1բըէ1բիէ1բոէ1բօէ1գաէ1գեէ1գէէ1գըէ1գիէ1գոէ1գօէ1դաէ1դեէ1դէէ1դըէ1դիէ1դոէ1դօէ1զաէ1զեէ1զէէ1զըէ1զիէ1զոէ1զօէ1թաէ1թեէ1թէէ1թըէ1թիէ1թոէ1թօէ1ժաէ1ժեէ1ժէէ1ժըէ1ժիէ1ժոէ1ժօէ1լաէ1լեէ1լէէ1լըէ1լիէ1լոէ1լօէ1խաէ1խեէ1խէէ1խըէ1խիէ1խոէ1խօէ1ծաէ1ծեէ1ծէէ1ծըէ1ծիէ1ծոէ1ծօէ1կաէ1կեէ1կէէ1կըէ1կիէ1կոէ1կօէ1հաէ1հեէ1հէէ1հըէ1հիէ1հոէ1հօէ1ձաէ1ձեէ1ձէէ1ձըէ1ձիէ1ձոէ1ձօէ1ղաէ1ղեէ1ղէէ1ղըէ1ղիէ1ղոէ1ղօէ1ճաէ1ճեէ1ճէէ1ճըէ1ճիէ1ճոէ1ճօէ1մաէ1մեէ1մէէ1մըէ1միէ1մոէ1մօէ1յաէ1յեէ1յէէ1յըէ1յիէ1յոէ1յօէ1նաէ1նեէ1նէէ1նըէ1նիէ1նոէ1նօէ1շաէ1շեէ1շէէ1շըէ1շիէ1շոէ1շօէ1չաէ1չեէ1չէէ1չըէ1չիէ1չոէ1չօէ1պաէ1պեէ1պէէ1պըէ1պիէ1պոէ1պօէ1ջաէ1ջեէ1ջէէ1ջըէ1ջիէ1ջոէ1ջօէ1ռաէ1ռեէ1ռէէ1ռըէ1ռիէ1ռոէ1ռօէ1սաէ1սեէ1սէէ1սըէ1սիէ1սոէ1սօէ1վաէ1վեէ1վէէ1վըէ1վիէ1վոէ1վօէ1տաէ1տեէ1տէէ1տըէ1տիէ1տոէ1տօէ1րաէ1րեէ1րէէ1րըէ1րիէ1րոէ1րօէ1ցաէ1ցեէ1ցէէ1ցըէ1ցիէ1ցոէ1ցօէ1փաէ1փեէ1փէէ1փըէ1փիէ1փոէ1փօէ1քաէ1քեէ1քէէ1քըէ1քիէ1քոէ1քօը1բաը1բեը1բէը1բըը1բիը1բոը1բօը1գաը1գեը1գէը1գըը1գիը1գոը1գօը1դաը1դեը1դէը1դըը1դիը1դոը1դօը1զաը1զեը1զէը1զըը1զիը1զոը1զօը1թաը1թեը1թէը1թըը1թիը1թոը1թօը1ժաը1ժեը1ժէը1ժըը1ժիը1ժոը1ժօը1լաը1լեը1լէը1լըը1լիը1լոը1լօը1խաը1խեը1խէը1խըը1խիը1խոը1խօը1ծաը1ծեը1ծէը1ծըը1ծիը1ծոը1ծօը1կաը1կեը1կէը1կըը1կիը1կոը1կօը1հաը1հեը1հէը1հըը1հիը1հոը1հօը1ձաը1ձեը1ձէը1ձըը1ձիը1ձոը1ձօը1ղաը1ղեը1ղէը1ղըը1ղիը1ղոը1ղօը1ճաը1ճեը1ճէը1ճըը1ճիը1ճոը1ճօը1մաը1մեը1մէը1մըը1միը1մոը1մօը1յաը1յեը1յէը1յըը1յիը1յոը1յօը1նաը1նեը1նէը1նըը1նիը1նոը1նօը1շաը1շեը1շէը1շըը1շիը1շոը1շօը1չաը1չեը1չէը1չըը1չիը1չոը1չօը1պաը1պեը1պէը1պըը1պիը1պոը1պօը1ջաը1ջեը1ջէը1ջըը1ջիը1ջոը1ջօը1ռաը1ռեը1ռէը1ռըը1ռիը1ռոը1ռօը1սաը1սեը1սէը1սըը1սիը1սոը1սօը1վաը1վեը1վէը1վըը1վիը1վոը1վօը1տաը1տեը1տէը1տըը1տիը1տոը1տօը1րաը1րեը1րէը1րըը1րիը1րոը1րօը1ցաը1ցեը1ցէը1ցըը1ցիը1ցոը1ցօը1փաը1փեը1փէը1փըը1փիը1փոը1փօը1քաը1քեը1քէը1քըը1քիը1քոը1քօի1բաի1բեի1բէի1բըի1բիի1բոի1բօի1գաի1գեի1գէի1գըի1գիի1գոի1գօի1դաի1դեի1դէի1դըի1դիի1դոի1դօի1զաի1զեի1զէի1զըի1զիի1զոի1զօի1թաի1թեի1թէի1թըի1թիի1թոի1թօի1ժաի1ժեի1ժէի1ժըի1ժիի1ժոի1ժօի1լաի1լեի1լէի1լըի1լիի1լոի1լօի1խաի1խեի1խէի1խըի1խիի1խոի1խօի1ծաի1ծեի1ծէի1ծըի1ծիի1ծոի1ծօի1կաի1կեի1կէի1կըի1կիի1կոի1կօի1հաի1հեի1հէի1հըի1հիի1հոի1հօի1ձաի1ձեի1ձէի1ձըի1ձիի1ձոի1ձօի1ղաի1ղեի1ղէի1ղըի1ղիի1ղոի1ղօի1ճաի1ճեի1ճէի1ճըի1ճիի1ճոի1ճօի1մաի1մեի1մէի1մըի1միի1մոի1մօի1յաի1յեի1յէի1յըի1յիի1յոի1յօի1նաի1նեի1նէի1նըի1նիի1նոի1նօի1շաի1շեի1շէի1շըի1շիի1շոի1շօի1չաի1չեի1չէի1չըի1չիի1չոի1չօի1պաի1պեի1պէի1պըի1պիի1պոի1պօի1ջաի1ջեի1ջէի1ջըի1ջիի1ջոի1ջօի1ռաի1ռեի1ռէի1ռըի1ռիի1ռոի1ռօի1սաի1սեի1սէի1սըի1սիի1սոի1սօի1վաի1վեի1վէի1վըի1վիի1վոի1վօի1տաի1տեի1տէի1տըի1տիի1տոի1տօի1րաի1րեի1րէի1րըի1րիի1րոի1րօի1ցաի1ցեի1ցէի1ցըի1ցիի1ցոի1ցօի1փաի1փեի1փէի1փըի1փիի1փոի1փօի1քաի1քեի1քէի1քըի1քիի1քոի1քօո1բաո1բեո1բէո1բըո1բիո1բոո1բօո1գաո1գեո1գէո1գըո1գիո1գոո1գօո1դաո1դեո1դէո1դըո1դիո1դոո1դօո1զաո1զեո1զէո1զըո1զիո1զոո1զօո1թաո1թեո1թէո1թըո1թիո1թոո1թօո1ժաո1ժեո1ժէո1ժըո1ժիո1ժոո1ժօո1լաո1լեո1լէո1լըո1լիո1լոո1լօո1խաո1խեո1խէո1խըո1խիո1խոո1խօո1ծաո1ծեո1ծէո1ծըո1ծիո1ծոո1ծօո1կաո1կեո1կէո1կըո1կիո1կոո1կօո1հաո1հեո1հէո1հըո1հիո1հոո1հօո1ձաո1ձեո1ձէո1ձըո1ձիո1ձոո1ձօո1ղաո1ղեո1ղէո1ղըո1ղիո1ղոո1ղօո1ճաո1ճեո1ճէո1ճըո1ճիո1ճոո1ճօո1մաո1մեո1մէո1մըո1միո1մոո1մօո1յաո1յեո1յէո1յըո1յիո1յոո1յօո1նաո1նեո1նէո1նըո1նիո1նոո1նօո1շաո1շեո1շէո1շըո1շիո1շոո1շօո1չաո1չեո1չէո1չըո1չիո1չոո1չօո1պաո1պեո1պէո1պըո1պիո1պոո1պօո1ջաո1ջեո1ջէո1ջըո1ջիո1ջոո1ջօո1ռաո1ռեո1ռէո1ռըո1ռիո1ռոո1ռօո1սաո1սեո1սէո1սըո1սիո1սոո1սօո1վաո1վեո1վէո1վըո1վիո1վոո1վօո1տաո1տեո1տէո1տըո1տիո1տոո1տօո1րաո1րեո1րէո1րըո1րիո1րոո1րօո1ցաո1ցեո1ցէո1ցըո1ցիո1ցոո1ցօո1փաո1փեո1փէո1փըո1փիո1փոո1փօո1քաո1քեո1քէո1քըո1քիո1քոո1քօօ1բաօ1բեօ1բէօ1բըօ1բիօ1բոօ1բօօ1գաօ1գեօ1գէօ1գըօ1գիօ1գոօ1գօօ1դաօ1դեօ1դէօ1դըօ1դիօ1դոօ1դօօ1զաօ1զեօ1զէօ1զըօ1զիօ1զոօ1զօօ1թաօ1թեօ1թէօ1թըօ1թիօ1թոօ1թօօ1ժաօ1ժեօ1ժէօ1ժըօ1ժիօ1ժոօ1ժօօ1լաօ1լեօ1լէօ1լըօ1լիօ1լոօ1լօօ1խաօ1խեօ1խէօ1խըօ1խիօ1խոօ1խօօ1ծաօ1ծեօ1ծէօ1ծըօ1ծիօ1ծոօ1ծօօ1կաօ1կեօ1կէօ1կըօ1կիօ1կոօ1կօօ1հաօ1հեօ1հէօ1հըօ1հիօ1հոօ1հօօ1ձաօ1ձեօ1ձէօ1ձըօ1ձիօ1ձոօ1ձօօ1ղաօ1ղեօ1ղէօ1ղըօ1ղիօ1ղոօ1ղօօ1ճաօ1ճեօ1ճէօ1ճըօ1ճիօ1ճոօ1ճօօ1մաօ1մեօ1մէօ1մըօ1միօ1մոօ1մօօ1յաօ1յեօ1յէօ1յըօ1յիօ1յոօ1յօօ1նաօ1նեօ1նէօ1նըօ1նիօ1նոօ1նօօ1շաօ1շեօ1շէօ1շըօ1շիօ1շոօ1շօօ1չաօ1չեօ1չէօ1չըօ1չիօ1չոօ1չօօ1պաօ1պեօ1պէօ1պըօ1պիօ1պոօ1պօօ1ջաօ1ջեօ1ջէօ1ջըօ1ջիօ1ջոօ1ջօօ1ռաօ1ռեօ1ռէօ1ռըօ1ռիօ1ռոօ1ռօօ1սաօ1սեօ1սէօ1սըօ1սիօ1սոօ1սօօ1վաօ1վեօ1վէօ1վըօ1վիօ1վոօ1վօօ1տաօ1տեօ1տէօ1տըօ1տիօ1տոօ1տօօ1րաօ1րեօ1րէօ1րըօ1րիօ1րոօ1րօօ1ցաօ1ցեօ1ցէօ1ցըօ1ցիօ1ցոօ1ցօօ1փաօ1փեօ1փէօ1փըօ1փիօ1փոօ1փօօ1քաօ1քեօ1քէօ1քըօ1քիօ1քոօ1քօ" + } +}; diff --git a/resources/viewer/hyphenate/patterns/it.js b/resources/viewer/hyphenate/patterns/it.js index 568ddf4300..5928ac1f5b 100644 --- a/resources/viewer/hyphenate/patterns/it.js +++ b/resources/viewer/hyphenate/patterns/it.js @@ -1,15 +1,15 @@ -Hyphenator.languages.it = { - leftmin : 1, +Hyphenator.languages['it'] = { + leftmin : 2, rightmin : 2, shortestPattern : 1, longestPattern : 8, - specialChars : 'àéèìòù', + specialChars : "àéèìòù’'", // The italian hyphenation patterns are retrieved from // http://www.ctan.org/tex-archive/language/hyphenation/ithyph.tex patterns : { 2 : "1b1c1d1f1g1h1j1k1l1m1n1p1q1r1t1v1w1x1z", - 3 : "2'2e2w2bb2bc2bd2bf2bm2bn2bp2bs2bt2bvb2lb2r2b_2b'2cb2cc2cd2cf2ck2cm2cn2cq2cs2ct2czc2hc2lc2r2c_2c'_c22db2dd2dg2dl2dm2dn2dpd2r2ds2dt2dv2dw2d_2d'_d22fb2fg2ff2fnf2lf2r2fs2ft2f_2f'2gb2gd2gf2ggg2hg2l2gmg2n2gpg2r2gs2gt2gv2gw2gz2g_2g'2hb2hd2hhh2l2hm2hn2hr2hv2h_2h'2j_2j'2kg2kfk2h2kkk2l2kmk2r2ks2kt2k_2k'2lb2lc2ld2lgl2h2lk2ll2lm2ln2lp2lq2lr2ls2lt2lv2lw2lz2l_2mb2mc2mf2ml2mm2mn2mp2mq2mr2ms2mt2mv2mw2m_2m'2nb2nc2nd2nf2ng2nk2nl2nm2nn2np2nq2nr2ns2nt2nv2nz2n_2n'2pdp2hp2l2pn2ppp2r2ps2pt2pz2p_2p'2qq2q_2q'2rb2rc2rd2rfr2h2rg2rk2rl2rm2rn2rp2rq2rr2rs2rt2rv2rx2rw2rz2r_2r'1s22sz4s_2tb2tc2td2tf2tgt2ht2l2tm2tn2tpt2rt2s2tt2tv2twt2z2t_2vcv2lv2r2vv2v_w2h2w_2w'2xb2xc2xf2xh2xm2xp2xt2xw2x_2x'y1i2zb2zd2zl2zn2zp2zt2zs2zv2zz2z_", - 4 : "_p2sa1iaa1iea1ioa1iua1uoa1ya2at_e1iuo1iao1ieo1ioo1iu2chh2chbch2r2chn2l'_2l''2shm2sh_2sh'2s3s2stb2stc2std2stf2stg2stm2stn2stp2sts2stt2stv4s'_4s''2tzktz2s2t'_2t''2v'_2v''wa2r2w1yy1ou2z'_2z''_z2", + 3 : "2’2e2w2bb2bc2bd2bf2bm2bn2bp2bs2bt2bvb2lb2r2b_2b’2cb2cc2cd2cf2ck2cm2cn2cq2cs2ct2czc2hc2lc2r2c_2c’_c22db2dd2dg2dl2dm2dn2dpd2r2ds2dt2dv2dw2d_2d’_d22fb2fg2ff2fnf2lf2r2fs2ft2f_2f’2gb2gd2gf2ggg2hg2l2gmg2n2gpg2r2gs2gt2gv2gw2gz2g_2g’2hb2hd2hhh2l2hm2hn2hr2hv2h_2h’2j_2j’2kg2kfk2h2kkk2l2kmk2r2ks2kt2k_2k’2lb2lc2ld2lgl2h2lk2ll2lm2ln2lp2lq2lr2ls2lt2lv2lw2lz2l_2mb2mc2mf2ml2mm2mn2mp2mq2mr2ms2mt2mv2mw2m_2m’2nb2nc2nd2nf2ng2nk2nl2nm2nn2np2nq2nr2ns2nt2nv2nz2n_2n’2pdp2hp2l2pn2ppp2r2ps2pt2pz2p_2p’2qq2q_2q’2rb2rc2rd2rfr2h2rg2rk2rl2rm2rn2rp2rq2rr2rs2rt2rv2rx2rw2rz2r_2r’1s22sz4s_2tb2tc2td2tf2tgt2ht2l2tm2tn2tpt2rt2s2tt2tv2twt2z2t_2vcv2lv2r2vv2v_w2h2w_2w’2xb2xc2xf2xh2xm2xp2xt2xw2x_2x’y1i2zb2zd2zl2zn2zp2zt2zs2zv2zz2z_", + 4 : "_p2sa1iaa1iea1ioa1iua1uoa1ya2at_e1iuo1iao1ieo1ioo1iu2chh2chbch2r2chn2l’_2l’’2shm2sh_2sh’2s3s2stb2stc2std2stf2stg2stm2stn2stp2sts2stt2stv4s’_4s’’2tzktz2s2t’_2t’’2v’_2v’’wa2r2w1yy1ou2z’_2z’’_z2", 5 : "_bio1_pre12gh2t2l3f2n2g3n3p2nes4s3mt2t3s", 6 : "_a3p2n_anti1_free3_opto1_para1hi3p2n2nheit3p2sicr2t2s32s3p2n3t2sch", 7 : "_ca4p3s_e2x1eu_narco1_su2b3r_wa2g3n_wel2t1n2s3fer", diff --git a/resources/viewer/hyphenate/patterns/kn.js b/resources/viewer/hyphenate/patterns/kn.js index 0d14511d6b..6bc2d11e85 100644 --- a/resources/viewer/hyphenate/patterns/kn.js +++ b/resources/viewer/hyphenate/patterns/kn.js @@ -1,13 +1,13 @@ -// For questions about the Kannada hyphenation patterns +// For questions about the Kannada hyphenation patterns // ask Santhosh Thottingal (santhosh dot thottingal at gmail dot com) -Hyphenator.languages.kn = { +Hyphenator.languages['kn'] = { leftmin : 2, rightmin : 2, shortestPattern : 1, - longestPattern : 3, - specialChars : 'ಆಅಇಈಉಊಋಎಏಐಒಔಕಗಖಘಙಚಛಜಝಞಟಠಡಢಣತಥದಧನಪಫಬಭಮಯರಲವಶಷಸಹಳಱಿೀಾುೂೃೆೇೊಾೋೈೌ್ಃಂ', + longestPattern : 1, + specialChars : "ಆಅಇಈಉಊಋಎಏಐಒಔಕಗಖಘಙಚಛಜಝಞಟಠಡಢಣತಥದಧನಪಫಬಭಮಯರಲವಶಷಸಹಳಱಿೀಾುೂೃೆೇೊಾೋೈೌ್ಃಂ", patterns : { - 2 : 'ಅ1ಆ1ಇ1ಈ1ಉ1ಊ1ಋ1ಎ1ಏ1ಐ1ಒ1ಔ1ೀ1ು1ೂ1ೃ1ೆ1ೇ1ೊ1ೋ1ೌ1್2ಃ1ಂ11ಕ1ಗ1ಖ1ಘ1ಙ1ಚ1ಛ1ಜ1ಝ1ಞ1ಟ1ಠ1ಡ1ಢ1ಣ1ತ1ಥ1ದ1ಧ1ನ1ಪ1ಫ1ಬ1ಭ1ಮ1ಯ1ರ1ಲ1ವ1ಶ1ಷ1ಸ1ಹ1ಳ1ಱ', - 3 : '2ಃ12ಂ1' + 2 : "ಅ1ಆ1ಇ1ಈ1ಉ1ಊ1ಋ1ಎ1ಏ1ಐ1ಒ1ಔ1ೀ1ು1ೂ1ೃ1ೆ1ೇ1ೊ1ೋ1ೌ1್2ಃ1ಂ11ಕ1ಗ1ಖ1ಘ1ಙ1ಚ1ಛ1ಜ1ಝ1ಞ1ಟ1ಠ1ಡ1ಢ1ಣ1ತ1ಥ1ದ1ಧ1ನ1ಪ1ಫ1ಬ1ಭ1ಮ1ಯ1ರ1ಲ1ವ1ಶ1ಷ1ಸ1ಹ1ಳ1ಱ", + 3 : "2ಃ12ಂ1" } }; diff --git a/resources/viewer/hyphenate/patterns/la.js b/resources/viewer/hyphenate/patterns/la.js new file mode 100644 index 0000000000..5c9d17bfaf --- /dev/null +++ b/resources/viewer/hyphenate/patterns/la.js @@ -0,0 +1,22 @@ +// Latin hyphenation patterns converted by +// Pablo Rodríguez (hyphenator at pragmata dot tk) +// based on LaTeX Latin hyphenation patterns by Claudio Beccari +// (http://tug.ctan.org/tex-archive/language/hyphenation/lahyph.tex) +Hyphenator.languages['la'] = { + leftmin : 2, + rightmin : 2, + shortestPattern : 1, + longestPattern : 8, + specialChars : "æœ", + patterns : { + 2 : "æ1œ11b1c1d1f1g1h1j1k1l1m1n1p1r1t1v1x1z", + 3 : "2bb2bdb2l2bm2bnb2r2bt2bs2b_2ccc2l2cm2cn2cqc2r2cs2ct2cz2c_2dd2dg2dmd2r2ds2dv2d_2fff2l2fnf2r2ft2f_2gg2gd2gfg2l2gmg2ng2r2gs2gv2g_2hp2ht2h_2kk2lb2lc2ld2lf2lg2lk2ll2lm2ln2lp2lq2lr2ls2lt2lv2l_2mm2mb2mp2ml2mn2mq2mr2mv2m_2nb2nc2nd2nf2ng2nl2nm2nn2np2nq2nr2ns2nt2nv2nx2n_p2hp2l2pn2ppp2r2ps2pt2pz2p_2rb2rc2rd2rf2rgr2h2rl2rm2rn2rp2rq2rr2rs2rt2rv2rz2r_1s22s_2tb2tc2td2tf2tgt2ht2lt2r2tm2tn2tp2tq2tt2tv2t_v2lv2r2vv2xt2xx2x_2z_", + 4 : "a1iaa1iea1ioa1iuae1aae1oae1ue1iuio1io1iao1ieo1ioo1iuuo3uc2h2k2h22php2pht1qu22s3s2stb2stc2std2stf2stg2stm2stn2stp2stq2sts2stt2stv2st_a1uaa1uea1uia1uoa1uue1uae1uee1uie1uoe1uui1uai1uei1uii1uoi1uuo1uao1ueo1uio1uoo1uuu1uau1ueu1uiu1uou1uu", + 5 : "_e2x1_o2b3l3f2tn2s3mn2s3f2s3ph2st3l", + 6 : "_a2b3l_anti13p2sic3p2neua2l1uaa2l1uea2l1uia2l1uoa2l1uue2l1uae2l1uee2l1uie2l1uoe2l1uui2l1uai2l1uei2l1uii2l1uoi2l1uuo2l1uao2l1ueo2l1uio2l1uoo2l1uuu2l1uau2l1ueu2l1uiu2l1uou2l1uua2m1uaa2m1uea2m1uia2m1uoa2m1uue2m1uae2m1uee2m1uie2m1uoe2m1uui2m1uai2m1uei2m1uii2m1uoi2m1uuo2m1uao2m1ueo2m1uio2m1uoo2m1uuu2m1uau2m1ueu2m1uiu2m1uou2m1uua2n1uaa2n1uea2n1uia2n1uoa2n1uue2n1uae2n1uee2n1uie2n1uoe2n1uui2n1uai2n1uei2n1uii2n1uoi2n1uuo2n1uao2n1ueo2n1uio2n1uoo2n1uuu2n1uau2n1ueu2n1uiu2n1uou2n1uua2r1uaa2r1uea2r1uia2r1uoa2r1uue2r1uae2r1uee2r1uie2r1uoe2r1uui2r1uai2r1uei2r1uii2r1uoi2r1uuo2r1uao2r1ueo2r1uio2r1uoo2r1uuu2r1uau2r1ueu2r1uiu2r1uou2r1uu", + 7 : "_para1i_para1u_su2b3r2s3que_2s3dem_", + 8 : "_su2b3lu", + 9 : "_anti3m2n_circu2m1_co2n1iun", + 10 : "_di2s3cine" + } +}; diff --git a/resources/viewer/hyphenate/patterns/lt.js b/resources/viewer/hyphenate/patterns/lt.js new file mode 100644 index 0000000000..9242a867fe --- /dev/null +++ b/resources/viewer/hyphenate/patterns/lt.js @@ -0,0 +1,17 @@ +// For questions about the Lithuanian hyphenation patterns +// ask Rogutės Sparnuotos (rogutes at googlemail dot com) +Hyphenator.languages['lt'] = { + leftmin : 2, + rightmin : 2, + shortestPattern : 2, + longestPattern : 6, + specialChars : "ščžįėūąęų", + patterns : { + 3 : "a1ba1ca1da1ea1fa1ha1ja1ka1la1ma1na2oa1pa1ra1sa1ta4ua1va1wa1ya1za1ąa1ęa1įa1ša1ųa1žb1jcu4d4zd4že1ce1ee1fe1ge1he1je1ke1le1me2oe3pe1re1se1te1ve1we1ye1ze1ąe1če1ęe1ėe1še1ųe1ūe1ž3gui2ai1ci1di2ei1fi1ji1ki1li1mi2oi1pi1ri2ui1vi1wi1yi1zi2ąi1či1ęi1įi1ši2ųi2ūi3ž1ju1jū3kek4i3ko3ku5ką3lą3lųm2am2one15noo1ao1bo1co1do1eo1fo1go1ho1io1jo1ko1lo1mo1no1po1ro1so1vo1wo1yo1zo1ąo1čo1ęo1ėo1įo1šo1ųo1ūo1žpa3p2ep2i3pop2yp2ėr2ar2ir2or2u3rą5rųs2esu1są35sėt2at2it2o3tęu1bu1cu1du1fu1gu1hu1ju1ku1lu1mu1nu2ou3pu1ru1su1uu1vu1wu1yu1zu1ąu1ču1ęu1įu1šu1ųu1žv2e3vą3vėy1ay1by1cy1dy1ey1fy1gy1hy1iy1jy1ky1ly1my1ny1oy1py3ry1sy1ty1uy1vy1wy1yy1zy1ąy1čy1ęy1ėy1įy1šy1ųy1ūy1žą1aą1bą1cą1dą1eą1fą1gą1hą1ią1ją1ką1lą1mą1ną1oą1pą1rą1są1tą1uą1vą1wą1yą1zą1ąą1čą1ęą1ėą1įą1šą1ųą1ūą1žę1aę1bę1cę1dę1eę1fę1gę1hę1ię1ję1kę1lę1mę1nę1oę1pę1rę1sę1tę1uę1vę1wę1yę1zę1ąę1čę1ęę1ėę1įę1šę1ųę1ūę1žė1aė1bė1cė1dė1eė1fė1gė1hė1iė1jė1kė1mė1nė1oė1pė1rė1uė1vė1wė1yė1zė1ąė1čė1ęė1ėė1įė1šė1ųė1ūė1žį1aį1bį1cį2eį1fį4gį1hį1iį1jį2lį2mį1nį1oį4pį2rį1sį1uį2vį1wį1yį1zį1ąį1čį1ęį1įį1šį1ųį1ūį1žų1aų1bų1cų1dų1eų1fų1gų1hų1ių1jų1kų1lų1mų1nų1oų1pų1rų1sų1tų1uų1vų1wų1yų1zų1ąų1čų1ęų1ėų1įų1šų1ųų1ūų1žū1aū1bū1cū1dū1eū1fū1gū1hū1iū1jū1kū1lū1mū1nū1oū1pū1rū1sū1tū1uū1vū1wū1yū1zū1ąū1čū1ęū1ėū1įū1šū1ųū1ūū1žž1jž2u", + 4 : "_ap1_at1_nu1_sk4_st4_uk3_už1_įs4a1a2a2chae2l2a1ga4grak2la3lia3lya3lėa3lūap3la3pra4rgasi1a4ska3slato1atp42a1ča1ė2a3šnaš2va1ū2až2lba3c2b1b2b1c4b3dbep42b1f2b1g2b1h2b1k2b1lb2lab2lu2b1m2b1n2b1p2b2rb3ri2b1s2b3tbu4k2b1v2b1w2b1z2b1č2b1š2b1žcar42c1b2c1c2c1d2c1f2c1g3chi2c1k2c1l2c1m2c1n2c1p2c1r2c1s2c1tcuk52c1v2c1w2c1z2c1č2c1š2c1ž2d1b2d1c2d1dde4k2d1f2d1g2d1hdi4pdi4s2d1j2d3k4d3l2d1m2d1n2d1p2d1rdro1d2rė4drų2d1s2d1tdu2adu4k2d1vd3va2d1w2d1č2d1še1a2eat1e1b2ebe1e3bleb3re2che3d2e1ie1eine3kr2e1neno1ens4enu1e3orep4rero1erė2es4ke1u4euž3e3vie1į4eįp3e3šneš2vešė32f1b2f1c2f1d2f1f2f1g2f1h2f1k2f1l2f1m2f1n2f1p2f1rfri12f1s2f1t2f1v2f1w2f1z2f1č2f1š2f1žgaš32g1b2g1c2g1d2g1f2g1g2g1h2g1k2g1lg2leg2lo2g1m2g1n3g2rg3rig4rą5grį4grų2g1s4g1t2g1v2g1w2g1z2g1č2g1š2g1ž2h1b2h1c2h1d2h1f2h1g2h1hhi4b2h1k2h2l2h1mh2me2h1n2h1p2h1r2h1s2h1t2h1v2h1w2h1z2h1č2h1š2h1žia3kiap4i3ari3b2ice1id2rie3gi3ei2i1g2i1hi1i2ik3rilo11imd4i1n5inviok2i3ori3ri4i1si5sai5siis4ki3sli1ė2i3šniš5ti4švišė21išš3ja_2j1b2j1c2j1d2j1f2j1g2j1h2j1j2j1k2j1l2j1m2j1njot32j1p2j1r2j1s2j1t2j1v2j1w2j1z2j1č2j1š2j1ž3ka_kak33kar3kas5kav2k1b2k1c2k1d2k1f2k1g2k1h5ki_5kia3kib3kil5kit2k1k2k1lk2ly4klą4klų2k1m2k1n2k1p2k2rk3rok4ryk5rą2k1sk4skks3l4k1tk3ta4kubku4k2k1vk2vak3vok2vė2k1w3kyt2k1z2k1č2k1škšė32k1ž3la_2l1blb3r2l1c2l1d3le_le3c4leč2l1f2l1g2l1h3li_li4a3lių2l1j2l1klko12l1l2l1m2l1n3lo_log44lop4l1p2l1r4l1sl4sk4l3t3lu_2lup4l1v2l1w3lyč2l1z2l1č3lęs3lėm3lės2lėč3lį44l1š2l1ž3mas2m1bmb3r2m1c2m1dme3c2m1f2m1g2m1h2m1k2m1l2m1m2m1n2mod2m1pm4plm3pr2m1r4m1s2m1tm3ta3muo2m1v2m1w2m1z2m1č2m1š2m1ž2n1b2n1c2n1dneg42n1f4n1gng3lng4r2n1hni4s2n1j2n1knk3r2n1l2n1m2n1n2n1p2n1r4n1sns3l4n1tn3tanua4nu3gnu1inuk22n1v2n1w2n1z4n1č2n1š2n1žo3dro2eto3krono1o1o2o2ręo3slo3t2oto1oš2vpad23panpap4p2arpas22p1b4p1cper12p1f2p1g2p1h3p2lp3lep3lip3lop4lup4ly2p1m4p1npo4g2p1p2p2rp3rip3ry4prąp3rėp3rū4p1spsi13p4u2p1v2p1w2p1z2p1č4p3ž3ra_ra3b3rac3ral3ram3rav2r1brbo12r1c4r1d2reb3rel5res3ret2r1f2r1g2r1h3ri_ri3d3rij2ril3riori3p3rią3rių2riū4r1k4r1l2r1m4r1n3roj3rok3ron3rop5ros2r1p2r1r4r1srs4p4r1t2ruk3rul4run2rup3rus4r1v2r1w2r1z4rąs4r1č4r1š2r1ž2s3b2s1c2s3d2s1f2s1g2s1hsi3d4sk_4ske5ski5sky4ską5skę2s2l3sles3lis3lo2s1m4smę4s3n3s2ps3pe4spn4spu4s1rs3ri2s1s2s1tst2v4stę4stųs2tūsuž42s1vs2ve2s1w2s1z4s3č2s1š2s1ž2tabta5s2tat2tač2t1b2t1c2t1d2teb3temte4o2t1f4t3g2t1h3tin2tip4t3j4t3kt4kl4t3l4t3m2t1n2tow2t3pt4pjtp4r2t1r4tro4trą4trųtsi14t1ttua43tur2t1vt2vo2t1w3tyd2t1z2t1čt2ėm2t3žu1a2u3aiu2bju1e2ug4ru5inui2ru3klu3kru3kvu5kųu3orup4lurk2u3slu3t2uto12utru1ė2uš2vu1ū2u3žluž3v3va_vap4va3t2v1b2v1c2v1d2vep3ves2v1f2v1g2v1h2v1j2v1k2v1l2v1m2v1n2v1p2v1r2v4s2v1t2v1v2v1w2v1z2v1č4vėp2v1š2v1ž2w1b2w1c2w1d2w1f2w1g2w1h2w1k2w1l2w1m2w1n2w1p2w1r2w1s2w1t2w1v2w1w2w1z2w1č2w1š2w1žy4sk2z1b2z1c2z1d2z1f2z1g2z1h2z1k2z1l2z1m2z1n2z1p2z1r2z1s2z1t2z1v2z1w2z1z2z1č2z1š2z1ž2č1b2č1c2č1d2č1f2č1g2č1hčin12č1k2č1l2č1m2č1n2č1p2č1r2č1s2č1t2č1v2č1w2č1z2č1č2č1š2č1ž2ė3lė3me2ė1sės3l2ė3tė4trį1d2į2k4įsi1įs3lįs2mįs2rįst2į2t2į1ė22š1cš1eiše2v2š1f2š1h2š1lš2lu3šly2š1m2š1nš2nešno1šo2r2š1ršsi1šu4š3š1vš2vi2š1w2š1z4š3čšė2j2š1š2š1žūs3lūs3t2ž1cžen12ž3g2ž1hžio32ž1lž2lu4ž1m2ž1n2ž3p2ž1r2ž1sžsi1ž4skžs3t3ž2vž4viž3vo2ž1w2ž1z2ž1čžįs32ž1š2ž1ž", + 5 : "_api1_ap3r_as3p_ata1_at3r_aš3v_ek3r_i2š3_iši2_sam1_u2š3a4draag3raa5groa5infai4skai4trak2via2kėta5lo1an4skan4trap3eiap3s2ari4sasi5sas3klas2mias2mua5s4na4stua4truat1ė2atū2žau4klau4skau4slaš4trba4slbe3s2besi1be3t2b2liz3b2loda3b4dema1de4prde4spdis5kdo3ridro2bdu5kadu4sldvi3adžio1e2a3leapi1ed3rie4droed3rėeg3raei4skei4slei2š14entae3o2šep4liepra1epri1eri4sesi5seska1e5skoe3s2veįs3keįt3rfi4s5ge4o13g2nų2g1p2grai2g3ran5g3reg4reig3ro_gyva1ia5g4i3aišid3rėi2dėmie3kli3entie4ski3g2lig3rui3k2nin4klio4pli2p1jip3ruis4lii5s4ni4steisto12i3t2jo4tv5ka3dka4klka4pr3katika3z2ke4b33k2lak4lan4kle_k2lel4klo_4klu_k4raukris2k4rov4k3ru5krunk4s3pku4prkš2lyle4gr5li4olpna1l4s3pmeis1mi4glmi4grmin4smi4trna3s2na3t2ncen1n3drėnei2mne4o3neor2nerė3nesi1ne3slne3t2nk3lan3kryns4kun4s3pnst3rnt4pln3trunu3b2nu4o3nuos2nu5s4olen1om4pro2rieori4sor4tros3leos4loo3s2vpai2lpai2mpai2rpa5srp2at24p3d2pe2reper3spe2rėp3ieš2p3k24pliop4liup4lojpoli1p3raip3rašpris2p5ro_p3romp5s4kp3s2v4p3t2pu4skpu4slpu4tr4p3š2ra1imra3krras4lra3smr3b4r4rein4reitre4p5res3lri3krrisi1ri3strk3lyr3k4r3rod2ro4grr3p4rr3t2rr3t2v3ruosru4sk4rutor3š2lr3š2msala1san5tse4krsi3k4si3p4si3s23s2k2s5ka_5sk4r5skubsk3vask3vi4s3lu4s3lū4sme_so4drs2tals2ten4stins2tods2toj4s3tėsu3blsu3d2su3g2suk2lsu3s2susi13s2vyta3krte3t2ti4gr3toje2tolįto3s2tp3lū4triot2riš4t3s44tvėjt3ėmut3ėmęt3ėmė2t3š2u1i2muk2leuo4slup3rour3klu5ro1ur3s2us3laus3leusva1us3veu3š2lu3š2nuži2muž1ė2ygia1y4k3lčeko1ė4k3l2š1b22š3d22š1g4šiuk12š1k2š2lij2š1p42š3s44š3t2š4vydū4k3lū4s3kžant42ž3b22ž3d22ž3f4ži3mu2ž3k2ž4s5l4ž3t2žu3s2", + 6 : "_arbi1_arti1_dina1_nusi1_pie2č_sida1_su5kr_te3s2_šven1a5grioan3k2lap1a4kap3i2mar1eitat3augat3i2mau4t3rbalta1ei4k3l2eis3tema5s4en3k2lenk4laere3a44g4rioi3antęi3antėie4d3rie4p5rio4g3rira3s2jauna1kavar1keren1kri5stlg3s2t2m3aidmas3kine3s2tneįs3tnt2ruoparsi1p4s3tyrai4tįri2ma_2r3imtrivin12r3orgrs4ko_rti5k4rti3s22s1amžsarka1senat4si3auksi3a2vsi3a2šsi5š2v5s4ken5s4kle3s2tovst2raitaura1ti4k3ltskri1ug5riou2s1alvi4s5kvi4t3r2vydau2š5istžants5", + 7 : "_kirti1ate5isteist2rapa4r1ė2pe2r3imprau2sipusiau1rau4ka_viesia1šsikap1", + 8 : "lap4s3to" + } +}; \ No newline at end of file diff --git a/resources/viewer/hyphenate/patterns/lv.js b/resources/viewer/hyphenate/patterns/lv.js new file mode 100644 index 0000000000..fd7b0b5f19 --- /dev/null +++ b/resources/viewer/hyphenate/patterns/lv.js @@ -0,0 +1,20 @@ +// For questions about the latvian hyphenation patterns +// ask Kristaps Karlsons (kristaps dot karlsons at gmail dot com) +Hyphenator.languages['lv'] = { + leftmin : 2, + rightmin : 3, + shortestPattern : 2, + longestPattern : 9, + specialChars : "žāīūēčļšķņģ", + patterns : { + 3 : "d4z", + 4 : "dd4žda2ida2udi2ede2idu2idi2udo2ido2ude2uo1pīū1rēi1taū1gaē1žuū1toā1nii1rēi1čoā1buo1mīo1kāo1čiā1loe1čūo1ļāe1lai1šoo1biē1cēā1ruo1siu1noe1hāā1nēe1būi1ruo1sūa1čaā1čao1rēi1keo1rau1tei1zoi1giē1maū1ķeū1cao1dēa1nāā1gee1čiū1bēē1tāā1fii1zio1līe1šee1gāi1foa1ņou1toī1zēū1guā1šai1ķiū1nēī1maā1teē1kēū1māu1zuo1sāē1buī1gae1diī1tea1ļīe1tēi1žeo1foā1puo1huē1doo1duā1maū1mie1rei1hai1bee1luā1jaū1taa1šūa1daē1cīi1bua1pīu1ņāe1zuū1noe1nīi1noe1māē1ļaū1pāā1beā1moī1jae1jiī1ree1ceī1riī1tīū1niī1žīi1žia1fīa1bee1šāe1ķoe1pūe1ļīu1ģiē1tīa1cie1jēa1zīo1lēu1gaī1cia1kee1hoi1nūū1šīe1sie1boo1ģēu1ņiu1sēē1bāo1šaū1roē1cei1zīi1veo1ļui1dīo1kue1vēa1riu1sāi1pāi1dēo1pūī1vīa1meē1zeī1bēu1ķea1bēa1jaā1ļoa1jēe1feo1puo1toē1vēa1kio1māo1loa1loē1ķie1šēū1dīū1cāo1zoo1gūo1gāī1tēe1zēī1lee1gīī1nao1mee1poe1fua1ģeu1rūu1riū1joe1dēa1ļaa1žāī1ļaē1nea1zūā1vēe1soo1mio1šoē1sīē1ļue1gai1pēe1vuo1ruē1juu1čiā1vaa1huī1sēe1ķai1rāa1čāī1kii1tiu1cui1žuā1jou1kiu1muo1ķīe1maī1ļoē1deo1čoā1čui1ņau1ļau1māo1hei1līa1deo1faē1roo1sīā1riū1tio1bēa1jāū1zuā1vīe1ļeo1ņaī1deī1šea1kūū1jao1dīe1žie1riī1gāe1kiu1zeu1mai1vīē1pīu1lue1tio1čāa1ķiū1zēa1ļoi1čio1kea1ģui1vēu1čuu1cau1vuo1ļai1rio1ņou1coa1rāo1jāī1bie1čīē1rēe1kāi1pia1kaā1vuū1žae1mīe1vīo1gia1pēū1zāi1cēe1vao1nīī1rue1pāa1ceē1kāo1jaa1hēa1boū1muī1vei1nāi1fio1vau1žue1ģiē1nīi1lii1ņou1laī1ģee1caa1tāū1zia1būē1pēī1suī1pāī1zuū1die1loā1māe1cia1žaē1toe1rūā1lau1ķuo1ģīā1pae1lūe1sīe1bēi1coi1ķēa1šoū1kuu1šāo1dia1ņaī1pao1pia1žēa1sia1hau1šoē1māī1moā1žoū1lue1žūo1ķiā1vāa1žoi1zāa1kuo1zio1dāe1cuī1noe1zie1jūā1ņoi1ceū1lēa1žīo1mēi1bīo1ree1zūū1raa1gii1lēī1bāū1šue1bii1gūū1ķiē1vaā1tou1cea1pūā1gii1ķeā1kāe1ķīē1žau1veu1voē1noo1bua1tīe1fie1ļoū1žia1tūī1tiī1lai1hoē1gii1fūa1tēā1ķia1mie1rau1jae1meī1bui1puo1laa1ķīu1šuo1žaa1rūū1ļae1čuī1loo1nuā1jēa1dāu1rēu1rīē1žoi1māa1zoo1žuē1daī1coū1zīā1saē1šuū1poi1siu1zēū1riu1zīū1gāe1puā1due1cēē1jii1biē1rāi1ļiu1nui1kia1mūī1niā1feē1caā1ņiu1goa1nue1nēu1kuā1žiē1goe1čeē1zaā1čāi1ģeī1goa1goe1bīi1zee1šūo1kēo1pēi1naā1raā1jīo1zae1zāa1lāe1ņēa1jeē1siā1bou1gāi1sēu1šiu1bīa1vāe1koā1šuā1ģēi1moe1ļāi1tēu1ļāa1ņēu1naī1voū1mea1hīū1kaā1mīā1līū1tue1jeī1vāa1baī1dāū1koū1cēā1nīa1ļēu1juā1žāū1moi1geā1pāe1lāi1ķīa1sēe1nia1maa1tui1kūa1bii1jīī1ķue1fāu1taē1dēa1gāi1lāi1ņie1ļaē1tiā1bia1šia1līi1jae1muo1hēu1jāū1šai1sāu1poā1cāa1seo1ņeu1foā1sūā1būo1coo1ķēā1ļae1žeu1tīī1kuu1ķau1zie1doi1soo1fiē1sāi1pīī1šia1dīā1tiu1ņou1pao1kao1cīi1peī1māā1pēā1pīū1pēo1būe1ķēa1mēā1rūo1dei1ķao1šīī1guu1biā1kaā1nuu1žiu1soē1kaā1leē1peu1ļīī1meu1dīi1žāi1duē1rao1voo1fāo1soā1ļāe1dāā1guo1boe1hīā1ģiā1čoa1dēu1diī1seē1sēā1nāa1nīū1rāo1hio1šāi1lūē1lēi1teu1šeī1tuu1ģoe1šiū1bae1ņau1siē1zoū1kāi1guū1dai1sūo1bīa1moē1gāā1veu1bēe1ņoē1voī1mīu1ļuā1tui1cīu1faā1tāē1guo1gai1mii1fēi1ļeā1cou1žīi1zēi1vua1jui1caī1čuū1reē1bie1roi1fāa1heu1moi1joe1buī1roa1teī1ģiā1dii1būu1ļiu1lea1nae1tāe1bāo1tūū1zeā1fuī1bea1pāu1dei1dūe1veī1dia1vou1lāe1piu1dēē1dāo1joi1žoī1ķeo1nāe1mūā1zāa1roī1rāa1žeu1jea1tiū1cīi1tīī1viī1joe1coi1tūi1boū1pee1tūo1pāē1sea1ļāā1jia1čoe1zaā1mēa1žūe1šoī1ļuū1jāo1sue1jao1tae1līo1zeī1vēo1vāa1vīi1kīā1zīu1haī1pēi1deo1nēū1bīē1tua1žiā1žuo1ņāo1ļoi1ņēu1ciī1caū1sae1rīi1bēe1nea1šīu1giī1mua1zāi1loī1cēu1līe1čoa1bui1nīā1dāā1tēā1koī1šuo1ģia1tai1laa1vaa1šea1hia1cae1bee1žēa1suī1dīo1dae1ģoe1ņue1paī1jāe1sāa1ņiū1soī1nui1voū1loī1nēē1mīū1cuo1žēē1jāī1cāa1čuo1zūa1luā1luo1ņua1vui1tui1ķui1ķoi1koa1faī1pii1goi1mea1fie1sūī1juo1pea1sīa1nēū1žeē1vei1poo1zēa1nee1saa1lēē1šaū1giē1lāi1mūu1vāū1mīū1mēu1roā1poo1jui1fui1jēi1gaū1tāē1luū1sāa1gūā1bāa1lao1riē1šoū1ņao1fēe1liē1kou1vaī1šoa1zie1dīi1dai1šīi1hīi1nei1šuē1kue1ņāo1naī1žao1čaā1fao1tēī1dēo1tāi1hiē1muī1soe1cāā1ziī1cīu1šēo1noā1ņeu1buū1gēo1vea1ģīi1lui1pae1kaā1ciu1ķīo1sao1goi1nuī1žoi1sīo1fīa1pua1duī1ļio1bai1fae1mio1cuu1žaā1mia1ķāi1čuo1žūī1kāā1ķeu1ģēe1daē1dīī1čoū1paā1deo1mai1dāē1ņoū1žuo1koa1vēā1zēā1sāī1dou1cāī1ļāu1due1juā1sio1vēi1šau1feo1jiē1reū1ļīu1ņaā1caa1šuū1nuū1lee1ķiā1tīo1gei1vāū1zaē1nāū1maā1ķue1lēā1sēā1liī1nei1mīā1pia1māa1žui1juē1vuu1nāū1rue1via1pai1bāo1cēā1lēe1kuu1lēi1see1vāē1jēe1pīē1cio1šia1hāa1kāu1jiū1rīī1sāi1roo1rāū1kio1roe1ruo1kūē1sua1ņāū1tīā1bae1ņee1nuē1teā1voa1sae1nūū1žīo1žeū1doē1jīī1vuo1viu1baā1naī1mēa1jiu1tie1moa1rae1hio1teu1boe1sui1fīē1pii1ģiī1ņuū1līā1roo1zāa1vio1niī1zao1doī1zāo1gēu1zūu1liu1daa1čie1tai1raā1ķaa1jūī1baa1cēu1rai1kāi1zuē1nua1šāe1tou1gēū1pīa1hoā1jeī1ķaa1veo1šuu1čoī1miu1sīa1dūe1cūī1rīu1koā1ķīā1zuā1muī1saā1ņuu1kai1baū1viē1gaē1ģea1rīu1šau1cīa1coī1cuo1vui1jeu1doo1cāā1vii1jāa1zea1muo1ņie1žao1čīi1čai1mēā1cīē1lae1dūū1nīī1poē1ļiī1nāū1beu1seū1ciī1ņāī1keā1cēē1saē1lia1ģāu1peā1kua1bīu1puo1cau1neī1ļīu1mie1dui1ļuu1pāī1ņaī1puu1beo1čuo1šēū1šoē1mea1ķau1zoē1zāū1cee1tīo1ķuē1jou1tūā1cui1vie1žāa1joe1joū1biu1nīā1ļue1zoi1mau1vēo1jūo1haū1pue1šaa1rua1liu1mīū1veā1pei1cuū1nāī1sīe1peī1zīi1rīī1peo1poā1rēa1ņeī1gie1žīī1lui1suī1tāa1noī1žia1sūa1koi1žēu1joi1vaī1jia1feo1pae1rēe1šīē1cui1šāū1žāe1ģeē1cāa1poi1tāā1neī1vae1seī1rao1guū1deu1dāi1diu1rāē1nēa1toe1fīa1soe1zeē1leo1muī1tae1ļua1zēē1ķēo1ģee1naū1vēē1duu1žoi1nēī1sii1kaī1fee1noi1lee1pēe1ģēā1goi1nie1čaa1čīē1bea1šae1gii1muē1bēa1čūī1šāa1bāī1duo1ciē1boā1kio1moē1loo1lāo1lea1gīu1kāē1viī1lēu1čēē1moa1cīu1čaī1toa1fēu1ķie1faī1šao1bāa1ļiī1daa1mīi1gāa1ģēe1cīā1tai1reā1meū1dēa1reī1lia1gao1tuu1pīe1haā1ķēe1tui1ģēe1kēā1bēo1čūa1zuū1sēū1neā1gaū1voo1hoē1ļāo1rīū1juo1fuū1jio1lūā1doi1tou1bāu1geu1cēa1leu1ķēī1cea1ķuā1zee1šuē1jaa1vūi1ņāē1nao1neā1dēā1ģau1suu1saē1diū1sue1foē1niī1pīi1kuē1paē1poī1zii1ļai1šiē1līā1noa1jīā1gāo1zīā1dīo1ļiā1rāē1ziū1piē1geo1mūi1kēe1gūu1gui1zūa1gua1lūi1cāū1lāo1ķeo1seē1vāē1rua1foe1sēā1reā1lāe1ļia1ņue1jāā1žaē1zue1ņiu1piē1mēo1ņēo1tiu1pēe1zīu1fie1ķeā1jāu1vīī1ņiu1žāū1lie1deo1beē1zīe1hue1heī1lāu1tēe1nāa1sāā1seē1ļoa1ģiī1zeo1jeū1tee1kūo1liā1ceo1vīi1ciā1soe1gei1šea1nii1doā1lūo1žāo1šeo1zua1cue1mēe1guē1taa1doe1baē1ģie1žoā1gūa1zaū1laū1ķīa1piī1nīū1šāi1šēo1ļeē1miu1zāi1ķāī1koo1dūī1ķia1ķēā1suī1līe1čāē1ļeu1zao1žio1feū1tēo1kiā1zae1leē1bīa1dio1sēī1žuī1bou1mea1rēi1ļoū1siā1sīu1niī1kaā1ļio1tīā1šou1tue1žui1žao1luē1rīā1juu1šīa1ķeē1soā1daē1baē1rio1ceē1kii1ļāa1peo1šūu1ļoī1zoē1rūe1goe1tei1zae1vou1vii1fei1ņuā1zoē1zēo1jēu1reā1ņaē1pāo1žou1nēu1ņuū1dua1ļuu1mēē1puu1loi1jiā1rīī1rēe1rāu1rua1cāo1rūū1nau1ģeū1dāu1tāi1sa", + 5 : "at1tueg1rūak1soit1deeb1lāet1vīor1bial1šaap1dūak1naum1ciaš1leēr1ķeen1kuil1kiēr1kuat1nāat1ģēus1pēos1vīos1cian1raen1paej1dēaž1vīas1buīs1gaiņ1dien1touj1meor1kiel1zoot1nēes1kouz1guak1tiīr1niiz1hiil1pues1maāt1viag1rēon1zēīb1tuap1doīt1vīul1sāīk1līur1sook1tēēb1tuīs1laet1veal1moop1šaen1ceim1nīuš1ķaek1tiiz1cīer1diur1faan1tāer1baas1peal1suip1soal1cīat1deaņ1raēk1šuīg1liom1nioņ1kaas1leat1ņiid1rīun1veal1kūin1daār1baīs1žual1kaup1jīur1guat1sīīg1māāl1tial1vauļ1kuok1rēer1giuz1ļoak1šēīm1reiz1teāt1vēēg1niīg1ruil1cēir1muar1kuot1ziub1naan1čeom1bīēg1siel1leav1ruil1nuēs1teur1kāik1roep1nuur1vēoņ1luit1mail1jaēj1tēan1gaeš1paāl1ceob1rīur1viup1riēz1tāiz1čoap1šauz1ruut1rēar1toež1nīaš1ļuaļ1ceal1neis1sīib1šouz1nuut1ņuul1deār1hoam1pūēl1guum1viik1toēr1zeož1vaez1nīam1līak1seel1koep1siāj1tuum1zāat1jaal1ķīaz1dāor1toec1heat1cīen1koūs1kiīg1saef1riār1saim1poīt1rīed1viid1sēā1džāup1laēc1tees1puuk1šoāp1niā1džiak1laen1naas1kaām1diag1liog1rāag1dāoz1vian1kuīk1nēus1mūer1maāb1šain1tuob1tiap1cues1vāac1tiur1puar1kīel1lait1taam1leik1seēk1tiar1sais1muut1ķeār1vīu1džiet1nāid1kaāl1seur1naār1zouz1liān1kaas1veab1laaņ1ķeēb1tāel1vāal1žuat1pūat1goēr1lae1dziiz1dēab1seat1žēir1caēr1suuļ1mael1peej1veap1veīg1rāel1poed1loit1moep1nāuk1tuat1šoap1šāār1čoak1sēek1tēom1peul1goum1dīec1siēd1vium1māiz1mook1zāāp1roāl1koāl1vēed1poīl1ziof1rēēj1loap1sūip1šois1puin1feep1raat1šaor1gaon1gāak1šuat1joes1pauz1šaār1suuz1beik1sīen1šaok1teok1buur1šaor1ģeīn1taap1ģiiz1zuim1tīap1teon1nāus1jūur1noab1tien1jūop1soeņ1nour1kaan1šool1leūs1moās1tāek1tīuz1sīiš1ķāum1pāis1poob1lēap1zaek1doez1mēēd1lauš1kaof1rien1hīāf1riuk1nuiz1doej1gaul1riiz1fiir1nais1kaār1doen1šoož1maēs1tīat1sāum1laoš1paeb1toez1ņiej1kaiv1žuuņ1ģuik1nail1kool1muim1siap1taos1tuus1tīat1koar1ciiļ1doun1čioš1sien1zāir1zoi1džāuz1baer1vēip1niil1zuin1pūor1hiiv1deos1mēuz1pūām1pios1tūaz1bēal1deon1deuz1ceem1baēr1ļuat1nēār1tūur1cuir1kuāv1daīp1riop1rāej1niam1dīak1vaek1piup1veūt1maun1tāaš1maāv1jaum1tiūz1māim1teev1rēon1tiig1zaiz1gūup1rāid1pūār1cīār1līel1lēus1gaez1daap1cēej1laag1dauz1vaop1sēāģ1veel1toēz1kūeš1viuz1vīī1dzeis1mēef1rīab1šaup1maār1nīaš1vaab1riob1tāik1sāis1mīag1šaūr1kaāņ1muev1nior1daem1zeāj1loat1rūal1reil1cīār1miet1maum1daob1leāp1tuel1pāiz1ķeez1tual1tīap1rūiz1taem1žaar1giēv1reas1kāaž1kāeg1taal1gāap1leap1roīv1niop1kaik1viil1tīur1pīir1kīiņ1neiz1daop1reēl1niis1nuar1cēed1sēul1kaās1maop1baos1fēak1leeļ1mūēb1šuaš1rauļ1puoķ1vāār1šoam1diār1žued1pued1veen1reūk1liuš1piep1taal1vead1maez1ceēg1tāud1rīim1biek1raiv1jūez1biiz1meuļ1tīif1rēap1kuid1niog1rēēj1deop1koiz1tīun1ciīt1kaēj1nīēr1pēoš1ļaat1zuīv1gaos1naog1gaes1luāt1koaz1vaem1zias1kean1siiz1mier1vāep1sēal1sāus1cūul1saen1taor1vēek1tāuz1žoan1mai1dzīij1kuid1laēp1taēļ1kour1tiap1nīot1reeš1ņuun1deār1vēuz1ģīer1mūo1džuoš1niij1kāal1loig1loer1rīem1puug1ļoūš1doip1šaūs1tāoš1baal1lēeš1dauļ1ļāār1sūin1deem1toās1tuol1fior1māiv1puaš1laec1hoār1zaar1kaub1sīap1ziēp1toāk1tuer1teur1zuīm1kaon1juap1gous1loor1naog1noam1dāār1taēl1neer1cāim1nauz1zāār1noaj1ciip1tāit1ļuag1riār1būos1poēņ1daan1kūom1bēār1veaļ1ģeim1tial1tiīņ1niin1naep1lauz1diiž1meal1tēin1sied1maor1tuem1taug1sier1beus1rail1muār1gaeb1loīr1rūīt1real1laet1viel1diār1žiiz1caad1daēn1mīut1saol1poez1rair1šāeg1šoud1puud1lēuk1sēon1vuem1pāēk1bēār1dēen1zūāj1reat1loez1niet1kaiv1jiin1kuor1bīok1tial1siur1zīūn1gaēr1paam1biat1roēr1buiz1ķēip1sēuz1čiir1duuh1tāer1bāik1gaīš1ķiiz1rūit1daok1ņuēg1tair1loan1kain1dīes1vīop1maum1sīon1paem1pīūk1koel1tīuz1meer1vīūz1naeg1ruit1gaus1duīt1ņuep1lāur1vaum1zīīd1līo1džiār1buak1tāer1taēr1noēr1pāum1bien1caoņ1cūēj1muat1pīēr1gāip1reār1viaļ1ķoet1niir1gūāp1neir1suāt1meeb1tuin1cēaš1ķeip1room1daep1tīef1raū1dzaēt1kuub1liaz1beūs1kaus1paar1suuf1liūr1vīīs1zaaf1rēuz1ņae1džaiz1bēūt1dien1nīeļ1ķēes1kuaz1daīg1raiz1gāar1ķīer1šuud1kaed1riop1raap1liap1dīed1laan1rīen1tīāb1šoan1cūēj1daes1tīer1koūg1tael1zuin1neer1biig1meež1niad1miaj1niel1liik1šuāl1puar1gaet1taīc1šeuz1zuom1būun1kuīb1niar1žaēt1niis1tuun1zeaš1diit1nien1zēen1ģeer1peuz1zūul1siur1caap1fais1noiz1ķīus1viin1hoog1ļuūs1nuer1gair1zeēl1reēs1liem1maif1raat1mēur1rāat1hoob1juop1roip1liec1māer1mīak1mues1saīk1lou1džēur1fiid1koār1ņuuņ1ģaīk1liiņ1ķeas1kēil1deār1kūul1boez1noen1mēab1rouz1gūek1ņuož1ņāat1kuuk1sauk1loar1doak1tuār1duik1cial1duen1peal1vīun1tiul1leos1cēec1saīk1tiār1dāēb1juap1čuub1rāiv1paos1maoš1ķeaš1puum1pēēp1tāek1siīk1ļuuļ1ķīūš1kaal1peīg1nāuz1pāāt1rāīg1nuik1luāb1tāum1jiab1soog1leir1teīb1tāil1doem1zēar1ģeot1veap1gūid1vāār1deāt1neēt1saad1doen1jaer1naēk1liiļ1ņauš1kiiz1nēoz1vaez1gous1bāut1riur1luib1reej1teok1hoen1zueb1rāem1tāed1māah1tiem1tium1sāaz1tuur1sīin1goār1diap1ņoīs1cīal1bias1niek1seal1liuk1naal1nēiz1mēer1ceūs1mual1tāul1fāēk1loaz1gaer1zāir1guig1rīen1dēeč1tuep1ļaēk1tauz1dēur1suīc1kuit1biāk1kāāp1tāeļ1ceed1rāib1rāer1miāb1rīiļ1ķior1mēem1pios1vāas1zoaf1rāež1pāūs1nēān1veeļ1ķioš1gail1žuen1vaīt1raak1riup1tuad1kaeļ1zīir1nēec1veor1muiz1mīīš1ļaab1veer1riū1dzeūz1niin1kaīķ1saud1peus1mēiz1rīon1rāaņ1kāat1zeāl1reem1jaim1sēīk1luek1vaat1bīis1lāos1pīār1jāas1māol1nīīg1tiem1poīg1tāed1vaar1daor1pous1nial1lāos1tieg1dauz1bāūt1rīag1niiņ1dēiz1zois1meat1biaz1tiog1raen1laat1doap1zīam1gaus1tioš1ķiis1tāat1laēj1tie1džāec1kaor1ķoiz1pūuļ1zier1deuk1ļueh1niēg1toēl1siēc1nāap1pāāl1noar1hāat1guob1ļaap1bouļ1ķiuk1lēes1biar1žoiv1coel1miēr1ciik1mēap1dauz1ķīim1puīk1laag1ruiz1dīer1ņaat1ņuor1piēp1niūt1ņueš1taar1taun1gaoš1ļieņ1ģian1tēat1sior1teiz1rāol1viiv1cīaš1koām1riāz1tuek1sīūk1tuēk1ļuir1sāel1kuek1suaš1ļiiļ1ņuiz1siir1giat1haar1tuem1buāt1saek1ļūen1tāiz1šuas1poir1taab1reit1leūk1piuņ1neaš1viām1paār1sēok1siog1paut1rīin1jiig1noiž1ļaēb1niuk1maēp1šuol1vēēz1taam1kāed1foāp1rair1ceul1lias1noēt1raon1taur1ņiur1biiz1cēus1kieb1šaož1mean1gīāv1jiip1siur1nēak1šaeņ1kuab1liil1vīis1kēom1pāir1mīip1līēn1māēr1šāāk1dael1nāul1peiš1ļoēj1puāl1līud1koer1viak1tēīs1kaag1tāī1dzīat1vuar1mēar1sēeb1lēod1kāūr1viot1ņuen1daaz1duāt1nāoņ1meāl1baeb1šouz1māan1zīag1līot1buil1poēr1ķaur1cāej1boaz1zeiz1žoop1ļāīg1šuēs1luat1māeg1loīt1riir1tuek1sāik1taeg1luur1vāun1bēuz1mūež1zieg1tāor1maob1gaav1koel1baā1dziat1ģiāg1neēr1zaed1rūiz1huaš1ņaāb1siuz1niet1piāz1vāu1dzien1tēāt1reūv1noum1suiz1ciat1rauz1rior1taāk1luik1poāš1ķiār1peap1ķīuz1būuz1pēuz1siir1žaan1gāap1šūi1dzeat1juat1fois1neez1rēas1gāal1guas1tiūš1koes1tāal1jēin1šaab1lei1džaēp1jaeb1ļaub1leab1tuād1miiņ1ķoā1džaek1liun1liek1mēok1līēr1piēr1puiļ1laep1kaem1liez1naid1maaž1neir1reēt1diam1zoūr1foež1gaim1toūp1nīat1duim1tāūg1šoen1sial1geal1dēeļ1ļaap1vīār1cuež1ģaiš1reār1neul1jear1mīoš1kaīn1vaēr1maok1nuom1raap1jāus1ceun1māek1šiob1lāēr1sāet1neuz1deil1boit1pāar1tēed1kool1vīot1rīus1seēt1tiiž1ļuīz1deen1sāis1laik1teob1toag1lāit1koep1ciāg1tiūs1leek1luus1māār1zeīs1tuar1kūir1deed1jūor1fīēt1liūs1māel1noid1ruij1koer1veec1laaš1moem1zouz1bēer1foeš1ķūak1līel1luib1liek1nuir1ņuaš1nāēl1gaem1nīiz1vius1teis1haon1joaz1kaās1taaš1taiz1vēer1nēuļ1vaab1lēan1žuoņ1veil1buem1paob1seem1joīv1suer1cour1toēg1vāin1ciak1ļūuz1šueņ1laūg1šuāg1tuūg1tiīt1vaer1kaol1šūiz1čuus1keur1bēāp1riak1ļaūs1kāos1vaer1zeēt1nīāj1kuen1žouļ1veis1ķeīg1siur1meur1bīon1hīan1diāj1māep1ļēaš1ņuor1viad1voaz1guuz1lūit1piak1šoap1siās1toin1team1saap1šoiz1vouz1veuļ1ņeuz1fouv1sauņ1ķauz1taug1ļuek1līok1seok1viaž1ņaoņ1saab1hāiņ1ciug1šāek1rūij1paok1veap1heut1boel1zāor1dian1goiņ1ziek1mīap1bēon1giaļ1meab1ruig1tiur1beu1džeek1viur1zeūm1vaum1muaļ1buāt1ņuom1reug1leez1taam1buat1cēēp1juez1saat1nian1meuz1noār1lēul1kāar1puiz1ruan1žieņ1ķēod1niis1naem1zāār1seat1riit1ruuš1čoil1veal1taoš1vīēr1poil1piap1pēis1ķēēr1saār1kuoļ1šeuz1piav1roog1rūīg1ņaī1dzāil1zeez1veūr1teon1dāup1daiz1nāim1diul1giaz1mēā1dzeas1lēok1ļaak1ceūn1veek1look1tāap1joēr1guil1nāiz1heuļ1ņēīt1ruīd1seak1rēāt1roat1daiz1žāol1tēūt1saas1kuīn1būīv1sior1noot1ceol1deab1paēr1peoņ1kook1naev1zeus1riip1tieķ1tuop1taīs1raer1zēof1rāur1dēot1kais1ziēk1mīiz1neag1rīon1siir1pēer1niās1vian1zaēl1gāap1duek1lāār1ņaum1paan1faār1pauļ1soar1peeš1ļaēr1vief1rāog1lait1pēin1jeut1maig1nuēr1teaz1gāāl1deār1zion1feon1maib1taat1žuit1līit1raok1beis1žēēz1maār1tier1ruaz1jaēg1lean1niaz1lēuk1niat1līeņ1maik1vīap1bear1neip1taap1žuaz1puak1raul1veis1pēež1saiv1maār1šuek1naos1laik1tēēs1laes1laat1kiiz1luur1leīd1niit1seej1maiņ1siār1lāus1vaus1ciif1teel1tauz1gaak1tūor1veiz1ceoš1kāēt1ruad1rēet1ņuik1šooz1mair1tiuz1daūm1deel1tēēz1tiit1rēaņ1veap1zāat1gaup1deās1naap1tuāp1ņuin1tēās1neap1reir1kauz1tīuz1goat1ļāad1rūir1ziīv1māer1sain1tiāb1juiv1siep1joe1dzēel1siij1žuan1duiz1tāil1lāul1bāis1cīag1viāj1rūos1loīk1lāāb1toal1nuāt1kieņ1ķīol1kūun1piec1reuz1čuul1dāen1roir1dien1čuul1joul1ceaz1vēap1jēāl1zīūš1ļoog1veag1sion1suog1caol1guār1zāig1liiš1saot1rual1vāam1tīās1teud1rāēt1kouz1jēāl1guet1meed1raat1cūol1zāuz1žāul1gāok1ļuīv1zeat1veen1guum1duo1dzīup1joap1diur1rūīv1mūūk1toiz1ņuuz1šāuļ1būez1piin1vāal1jain1veiz1buap1šuus1zeob1rāēk1meil1leēz1toīk1deēj1luar1zoec1mear1zaol1buēj1peul1teīd1paal1kien1zoiv1kaāl1teok1noa1dzeit1vaār1jūun1goiz1kou1džoup1tion1liiz1čāil1gāer1guiz1zain1giū1dzour1nium1bēed1muēk1tuār1soid1luar1meir1šiik1šaej1zaap1haīv1līas1gaeg1šuiz1bāev1juap1cear1diem1juam1boiņ1maet1siāk1tīis1daid1puiz1leet1noul1daur1tāem1gaēr1šaor1miak1kāiz1māab1vēok1piir1bēīg1tuir1sīeņ1ciiz1sāuz1heeļ1ķeeb1kāin1čear1moēp1šoeb1rūon1cūer1paīg1naus1taār1rūis1līēg1lieš1reuz1huak1reīn1dael1deum1jaak1nēob1tuek1toēr1bēir1ciih1tiov1nual1beaļ1daot1rāēr1ķēud1maāv1juik1liar1duuk1suak1sīus1leāt1būug1šaag1māēr1tāuz1nāuz1čīēs1tuiv1tūun1koer1mēor1ciun1kaīt1ciūk1niār1gāoz1tais1pief1koāš1ņaig1niur1cīaņ1ķīec1tiil1tuul1suan1joek1vāal1pouk1tīāj1niām1jaēr1liah1tuat1vēil1nēan1keas1cier1jees1nīid1guān1vaus1fiār1siēd1vaul1vāel1nieš1maun1laal1maun1duan1houl1šuel1mual1žīel1rūul1ciar1ģiat1voēr1biil1vēus1meat1liuz1muav1daēg1tuuz1ļueg1vīēb1toad1juir1moor1fēel1nīiž1ļiem1deap1paūg1šaul1buēr1muas1vieb1ļāas1piir1sūuz1vēās1nīur1zāir1boīk1dait1nīar1pael1doēr1leor1fiēt1laaļ1ļiam1bāāš1ņāus1joeļ1nieļ1nīus1jain1guig1nīed1ruuj1bios1teem1vaar1loig1luak1lāun1baiz1būam1zeis1tiit1neuz1sāep1lēiz1bīār1nēeg1laiz1duēg1dēān1zaes1loim1deat1hiar1ķiiņ1veēr1zēuz1lāir1viār1ruoš1ļuat1teat1žāun1suon1tāod1laār1ģeēs1loal1kāaš1paūz1neār1čāur1jeuļ1ķaak1ņāīr1faes1kūār1šiar1baār1šair1dīid1nīuk1dauz1žuār1vaot1raam1doiz1ģiep1līem1siāl1tain1suol1niub1ļuiz1ņeap1čael1zaob1jāuk1tēap1māal1riot1zair1dāav1niūr1muit1miog1ļūer1zaek1lēūg1teit1mēoš1ņaāk1leaļ1čūān1līe1dzāum1beet1rīek1saal1leuļ1kaiv1niēd1mēil1dīul1tiot1leat1gāiņ1sēat1caaļ1rāab1suīn1buip1rīuz1rauļ1deem1koat1čoop1vēa1džuuz1ķiir1maur1boiz1peem1tuāč1sūum1šoap1ķēāl1saas1faož1ņaem1dīūz1dael1piir1saāz1moed1roil1siīk1nauz1cuos1puag1šoiv1vaīd1viiņ1roār1čuid1neeg1puum1kouš1ķoār1kaīļ1bāak1veez1gior1laaš1pāīg1vair1šīiļ1liēr1sīum1šiīm1juub1jeep1liat1poāl1maam1bīiņ1ķiāj1raas1tūeš1tūen1teīv1maet1nīāb1puos1kuis1tēok1ļiiz1rēiz1žiel1nuiz1pāul1tāoļ1koēv1vāos1lāor1tīāb1tīaf1roēl1zīāl1ruan1šuus1tāor1doer1ciīs1riēd1raim1daar1beil1kuiz1mūit1rāup1šauz1sūus1ruir1dour1gaek1real1nāok1niek1šuob1rēir1žoār1dīeļ1maaš1ciil1paū1dzuek1šaār1moil1giuš1ņael1mūās1kaēk1šaor1ķiār1nuaz1ruās1tīim1šoum1zeīv1soūt1nīap1foag1šuil1maīc1gaēr1tues1miūs1mīīs1tiej1viuz1naon1naid1roel1mēos1peop1luēc1kaar1pāup1ciūs1maag1reūž1ņaol1gaan1taun1dial1koul1lāir1koī1dzoos1vies1lēus1maec1moiz1veaz1raāl1cuid1rāan1žaoņ1zīum1tāaf1raum1vāār1rāab1vīū1dzīi1džiēg1šuin1žaed1ņeec1tūor1neeg1maāp1jaār1šīep1reis1veol1feop1cias1teār1šūež1kuiņ1tūes1teek1taēl1cuār1naus1jēil1teāv1raāv1ceaļ1vaum1niak1niār1rēet1riu1dzīon1tuup1leam1bēin1toād1nīin1taol1maīk1buan1žāāb1maur1ķīak1viat1nuis1biol1veog1neīv1biok1luār1čīug1tiīn1raig1touļ1ģiār1maum1jīē1dzeap1rēis1nāūp1koun1siil1tāap1ņuol1beos1miig1laīl1nior1būip1ruak1cīeņ1ķaez1gīoņ1sāāz1niān1pāus1puād1neus1poīn1deāk1baā1džuur1sēat1baāp1tiūv1viah1tāut1nēem1beap1naul1paob1jeāk1ļaib1tios1veud1vien1pāāv1niiz1vāeg1roop1siap1puam1niat1taak1lies1neuv1juar1rīi1dzues1rēob1loes1liog1mauš1koan1zāig1tuan1beim1pēic1saeb1kauz1zīoš1maat1nīam1dēuļ1baār1muup1jāār1hees1mēer1haēl1diih1reop1jail1gouv1veul1puil1duaš1miāl1veār1luez1puat1soīs1caek1niēg1nāūt1roap1ķeab1puiz1nuiz1ņēēk1neež1joes1poās1noūv1niaļ1saaļ1ķīē1dzoip1noap1vāīk1tāār1čūuz1zeuz1nīon1duap1huez1nāuk1ļiul1biad1pēat1pēēr1zuuz1čāēs1toaš1gāāt1noen1vēis1beet1rūāk1tauk1tūij1niug1šuus1ķiij1veel1šuul1vēēt1rīag1ļēes1peēr1šoak1rāeļ1paec1rīez1loēk1luel1vaār1ķieļ1poam1paūt1niiš1ziid1mēuz1dūēk1laiņ1taol1tāīk1šaīt1nēiļ1jūit1tūis1paap1sāiz1soež1ģīud1rioņ1nāam1lūiz1pēak1vāal1tead1riak1gaār1bāap1rīor1bēaf1tiuz1duat1šiug1tuiv1zian1seeg1toūd1rāos1lēār1riel1gaēr1deir1tēem1ļaus1naim1doāt1veur1maur1ģiīg1niīd1koūd1raiz1vīed1rīat1jāil1moe1dzaēk1toār1ģēiļ1ņiiz1boas1roum1zoor1puar1kāik1koap1caīs1baas1vāat1mouz1puēn1gaam1bauk1šiag1toiz1ziuz1tuul1nier1līeš1ķēen1ziat1zoir1šaez1sius1soam1fīig1tāe1dzuap1kāār1roes1viag1lair1mēad1veit1dium1noap1lāin1gaop1šoa1džāer1pouz1bīun1rauk1taar1veīn1saap1viēr1ceog1lūaš1liaš1poe1džuap1muag1luor1beam1neol1diiņ1ģeit1naeļ1ņuuz1luās1meār1sīur1kuur1peep1naut1naac1dauz1leik1kaar1fiab1sier1zīār1ļuap1jaul1tuis1dian1gear1līug1tāon1soud1kāeļ1koiš1ķīum1poik1ļaūg1tuār1giēr1niet1vaap1loēr1ķīiz1tuīv1lais1juod1baaz1roūs1diup1tūūs1nīeļ1loap1bīum1taīs1tīeb1rīuš1ķēep1tūeb1līor1žeup1raēt1maak1roir1laat1čiog1luūs1kuut1rāil1noec1dean1bāaz1viān1gaēj1ceeļ1veer1ziel1saīk1taīt1rāār1feum1kair1siag1ļiip1kaak1šāar1kiek1ļāar1bāed1daos1leiv1jaiv1kāūk1šouļ1vēēk1tāoš1ņuog1deok1ļoul1dēik1saam1pēūs1noum1tous1čuod1kaas1loop1mīup1tooļ1tiū1dziīr1maos1kāal1dīok1vael1tuap1piis1caos1ceāl1viir1miuš1ķioz1tāis1teig1šaat1rāar1žuos1kūim1šaār1toum1boan1saaļ1ļaēk1diāj1kaak1tīar1tīos1tāeg1reim1saul1sīag1meil1lēon1ceiz1jāiž1cior1kuaz1noim1pāof1seop1ļēāl1kaēs1tioņ1deer1laār1ņēuz1kuab1piar1naem1šaer1kuim1pein1tīes1mīīv1douz1mouš1miak1lēaļ1laup1lāok1taūv1meem1žēāl1rūis1pāar1leeš1vaeņ1rāad1neon1kuīs1siab1dail1luar1vaan1koez1bēež1liil1gaat1tāiz1kūar1nuir1māad1jeik1raan1buop1riik1vāek1šēap1ruuz1ņiiz1beat1viit1rour1tēen1poap1jūiz1ģīol1rāar1goah1loim1paī1dzius1luir1žuat1cuam1viag1tiim1juep1ļāec1gaon1diān1kāis1fuat1ņēāņ1tiat1čūaz1paik1paov1boad1sier1lūir1bāum1tuuj1koež1vīab1loūk1laos1paul1toap1žēāv1maez1zoeg1māap1toiz1kuos1luor1vāok1rīos1toal1diis1luē1dziāt1liaļ1lian1čueb1laeņ1ķoak1rūen1riez1beēr1nēeļ1ņāab1rūun1saiz1zīaž1daūv1soaš1ķīit1kāap1buē1dzēa1džoīb1šuus1lāad1reej1leek1roat1suap1ļuež1cier1raez1vēaļ1koog1reur1jaer1zuār1meav1tīon1tēat1fiir1biob1liuz1jūaš1ļaāb1raur1bāap1nual1ģian1vīon1dēep1tēez1deum1deup1juīg1teod1deok1sāat1jēār1zuum1dieš1dieļ1moiz1dein1gāač1gāip1seiš1ķēūn1zeāk1toeš1vīēņ1veap1laoņ1niim1niut1roet1deep1paaš1reup1jaus1piuj1laāt1tiop1lean1nuēj1māas1lāam1miaz1dēam1poīk1piūk1tāār1goap1mauf1raīg1taad1caār1ķēek1voam1teiz1zāar1keēr1māen1dāeg1līat1ciur1ciāg1laaf1riīk1zeer1cuad1vael1ciep1noag1neār1zīeg1rāeš1ķīan1tiiļ1dāud1muāl1liub1veuz1peuš1ķueļ1tēor1čēog1pueg1nēop1laal1dūef1rēīt1niek1nāāz1beer1tier1noos1foēr1gaat1kaer1goor1ķeer1moun1daan1žoez1mief1paek1rīūp1lieļ1teār1tāot1riud1lius1zāas1tēiv1dais1koil1zaīg1touz1buer1tēap1sues1ziu1džuuk1liiz1lūit1tiīk1kāes1pīuz1vuūž1diūs1liāl1pook1reāk1ļiīž1meeš1ķaat1ķeāt1rīiņ1šiap1gaum1jāīm1jaez1roiz1jēes1sūeš1vāog1riār1loal1soiz1līis1kāep1tieg1biār1laar1voēp1siār1gūeļ1gauz1kūiļ1leo1dzean1sēat1nook1maal1saek1riep1leen1rīeš1deez1jūik1sēal1giep1roīv1ciid1pooņ1piod1raej1puir1goel1main1seet1saīb1šaaļ1ķaol1laat1rīat1dēīļ1siār1ņour1miep1loāg1šoec1toob1veup1tāāt1raos1koal1ziel1duiz1vuār1piat1šāul1tūil1dēap1mīar1lēer1tāus1muis1huoņ1siāz1veīp1neāz1toiš1maol1vāem1zīāl1beal1šous1koes1gain1faāj1viat1diat1žiap1bāah1taēr1nāel1meīs1leiz1jaēb1ties1kaul1beep1riež1zīot1vēas1laat1ruer1māed1reēj1maav1ciak1dous1nēeš1gaap1cīāt1zīas1paāk1šaes1taib1loer1ģiēr1mīeļ1diat1lāak1teaš1vīog1lial1gaaš1kīār1fies1toūt1paon1koār1ciām1juel1ceīs1tāec1nial1kuat1huer1feār1mēēr1mūul1dion1gaār1pēar1pēās1nāam1fiāt1pean1cooš1ņoeļ1ņiaš1noīr1naāk1šoet1koig1maan1tean1bae1dzīek1šoum1buir1gāom1leūm1veal1naiz1vaog1lāūk1tail1souz1mail1šaoš1ķūat1zīās1moēr1naūž1ņoum1nīeg1vial1tūon1seiz1žaek1teep1lūep1seos1tīas1taār1beiz1šaoš1ķoāg1riīv1kuāt1naaš1ķiēr1dēir1tāak1saas1toaz1jūun1meap1pūep1tour1veen1maēc1naeņ1ķuār1leum1ziuz1cēez1paos1kaab1rīer1ģēet1raīt1naap1čīok1rieš1peiž1mais1šaāz1ģeon1dīep1tāam1ziīg1loiv1reat1luāl1ciez1vāiz1tial1māug1liil1biiļ1ķuaš1ņāiv1baik1šiīk1meap1kūun1giuk1nāal1voup1looz1vēēj1kaap1rāad1liuz1juel1paen1liat1čuīk1būat1dāup1taiļ1ņoar1pīak1vēēc1gaeb1neaf1liol1kaez1foin1kian1giak1loup1siej1vaag1tuek1ļoiž1vīas1ziir1līen1duuz1tāif1loeļ1ļoob1līum1sūon1cian1dees1līēb1siib1tāil1dauķ1kouk1šaāj1peej1buūv1kaar1faoz1veīk1rāup1māūs1toir1nīag1looņ1raiz1sūīg1cean1dūiņ1vīe1džoār1daīn1māār1juer1voar1sei1dzēiļ1piit1puur1said1daiš1koeš1ķoār1poev1kāīk1rūos1riik1noār1tuur1kooz1tuom1piar1šēon1nuuņ1ģiur1šuab1rēīr1kūen1cēem1jeap1vaav1ļaaļ1biuz1hiin1čaon1fuār1sāoš1mīuz1rīil1kaun1tēas1miiz1gaār1māāk1tāik1loim1pior1paaš1roum1mēīn1teež1rūab1sauz1mēa1dzaas1saun1gāag1mīeš1mīeg1šaak1ruēt1rior1seus1noit1māuz1poin1čoiz1suis1touk1viir1toum1juuļ1sūin1dāum1tēar1šoīk1koer1meuk1siīv1piēr1mēas1tīin1kāen1zaal1buor1ģia1dzīen1saīs1taeļ1deū1dzēuk1tāec1viūk1leap1čoēd1niān1ceif1tuīk1diāl1vaap1guen1dear1deap1mūon1tees1daud1ciat1seūp1niin1haap1deal1ciir1puum1vaok1tuug1līaņ1daep1šael1suīk1sieņ1ģeaļ1fier1siop1juod1leīt1paak1nāap1nēar1dīek1zēat1ziāt1kaāl1mēem1zaum1puap1žoēj1sūen1leiz1lēer1zoum1dāur1žueh1noab1kaīs1vēīb1šoas1seul1lēir1kiat1čauļ1ķeāz1maip1nuar1nīīg1līad1raez1tiīk1raūr1ziap1vuib1laīt1kāiļ1daēl1koob1lao1dzaep1nīes1riup1jieļ1kuik1vees1vēer1loum1doik1lāem1žois1soom1juij1kaen1niāz1neīv1diif1toun1jeer1daen1kāūt1raen1geāp1jioņ1kāal1viēr1zāen1gaīr1kuar1teup1rīor1tiar1ķēel1līiš1laan1noec1piēk1šoan1daāp1šuiļ1ruež1līed1rēed1kaat1kūīb1siež1ņaam1vaun1dīār1nāal1meuļ1zees1tēāj1baāp1šoap1poen1zīer1sīig1roat1buum1sēel1cēās1niar1pūod1veoz1gain1douz1miun1mēuz1kaig1neet1paol1siab1raon1toos1kīaš1ķaiz1seīn1pieb1rues1nuūt1ruik1rias1luiz1lauz1ciat1tēon1daāp1šaēp1neor1ceep1rāūr1māež1vāup1jēeh1loīg1ņāus1liec1tēāt1māak1nuu1dzēez1near1dēēk1daet1nēež1roir1kūap1lūīs1tēus1baēj1zoī1dzuat1leēg1naep1tui1dzaaf1taep1deīļ1veod1roum1šāen1seeņ1raas1tuat1pueļ1daāb1baiš1ķaāg1šail1bāūš1tuud1saat1ģeum1šuaš1māen1soeg1baam1reud1roov1naik1reār1rīār1niež1rai1dzoīs1toan1šear1juiz1ģēaz1dūēr1meoņ1gaēr1tēid1moīs1fiat1mīal1seil1haep1jail1ceof1raum1piuz1rēaš1ņoel1žaap1ņēar1buiņ1reij1puer1žool1taez1vaaļ1ķiil1nīag1noul1līib1riāt1rium1pīūg1tāis1fēak1sual1toel1žuap1ģēiv1gaal1zaaļ1dēēr1siār1ņiet1rāaļ1ņium1zuūg1siaz1māin1koīg1riil1šuer1vauz1tūec1cīīs1lia1džiu1dzāam1žuuz1fiiz1nīir1dēev1gaiz1čaiz1puup1šuiz1guin1ceuz1dīāb1šuor1bai1dzāa1dzoes1tuāz1tiel1māap1voub1lēaš1ķēīs1vien1joas1kiik1tīok1leur1ķuin1gīek1ļuuz1touk1leir1buāg1touz1neas1koek1rēur1doob1taār1jouk1noot1līur1teuz1reat1maat1žoēd1neat1naus1kaal1vuib1šuiz1dūug1kouz1voat1zāeg1zīūš1gail1niuz1roel1puūg1toos1māul1maas1maal1niut1raug1šēat1sēin1foeļ1būuz1jāēt1vaēk1baik1diīg1leop1neur1vīār1dūir1cēēr1sēas1jaes1moil1ciaz1liem1šuap1luer1nāot1rūuz1čoas1dēos1moaļ1gaun1teat1neom1baok1raen1vāap1sēan1dēol1dēap1ļaek1sēad1soiz1pouz1līīk1neud1rauz1kour1taep1šoud1miār1kieļ1viūk1tiīg1roiņ1tiur1dueg1tuār1boes1muar1ceos1kiiz1tēev1māān1koer1geē1dzīen1baīv1baot1muēb1taīn1rūūk1ņaop1jois1loob1ruur1liēs1leur1lāēj1rāul1koāg1tāiv1kuām1gao1dzēī1dzēir1zaip1rāat1tūiv1viop1lūāp1siem1meap1žāār1mūik1šāil1baan1zeon1doil1heek1ļael1nēāk1reuk1seēr1soef1reūt1rāip1tuam1pāak1ņuat1meūr1maik1tāam1puaz1deen1kiiv1moar1geīb1tiuj1maos1taas1naēs1maom1boeb1rēer1žaāt1nuež1kouz1tēup1niig1nāan1naaz1kuon1tīar1sīek1tūeņ1meos1vēak1šīat1rēer1bueļ1ņaog1roīt1līij1roūk1siār1žāap1dāuz1paek1ļiiz1tūaš1ķoim1taik1nāat1jūēg1noā1dzēem1teer1ģeāš1ņieļ1taap1līul1lauz1biīt1diud1bāen1tuun1neuk1soīv1tiol1jeed1liiz1niēr1šueb1siēv1zeuz1zaer1neom1paec1kāin1sauz1žaūs1taap1ļāūv1gaiv1riaļ1baob1šair1zīaš1mēāt1ruaz1saiš1ķiok1nāor1moiļ1ļaiņ1ruuz1gāuz1vāit1riom1deis1cēis1miop1gaat1čīar1nēuz1hoat1bāir1žiel1fiir1near1dāuz1faap1kiur1dāāl1zeār1lior1buap1tium1gaek1ņaal1pius1faār1vouz1ģie1džiig1nēuz1teot1vaag1ļuos1pāīk1ņāīk1šue1dzeiš1jāek1veat1ļaāl1sior1zāul1loab1vaaņ1ķiār1ķeur1voap1zeem1nioš1ņāūž1zaēr1cēap1hiek1nīuz1ņein1tāun1cēib1lāīr1gais1kuuz1zoug1šiam1zāas1meun1dāak1sāit1ļaur1nīuz1ņēēz1tuab1tāār1šāus1saīg1šoeņ1caop1loāp1toel1mīeč1zieg1kual1pēik1rīal1vēit1ļoem1mēiz1bais1dāīd1mēen1veap1juol1koag1leap1tēāt1nīāv1vaet1soan1hieš1kāir1šues1lāos1meis1tīur1neet1nuap1miūz1maor1mīas1zaan1cēes1nial1faēr1bour1ģeāg1siis1deīs1saat1miēš1ļaūg1daūs1nāār1raun1kāok1liē1dzūēg1nual1boop1daet1ķīur1piār1puok1sīit1ļiap1saip1ciar1šaav1maec1vāiv1doūs1tiat1dīār1žēam1naak1ļāiņ1meuz1haar1mieļ1ļiēp1tuof1toag1rāil1zīēg1šoil1sēis1baap1koug1šoot1māiž1niār1tēat1šuep1šuuz1ģēag1lūup1luām1gāar1šīit1veak1mauž1puuk1teuz1loik1ceeļ1rīet1naāl1raoz1tiiz1zeap1zoir1nāad1leēt1hoad1moun1taa1dziaz1koāl1pauz1nēug1maen1diiz1šūag1rūīr1raas1pēok1ceen1cīil1māop1sual1šuof1liev1maab1ļāa1dzēud1ruir1zāod1biol1dāap1ciil1dāok1pean1kias1vīod1ruur1pāāj1gaēr1daep1juiz1reiņ1kaār1mīat1lēir1sēiš1ļaēg1šaāš1ņuar1gāav1laaļ1niiz1foil1laer1muup1šois1maāl1sāap1ļēur1dīas1tāul1tēes1cēud1līon1veuz1ģeek1meāš1ņoek1laāl1gaiz1dion1voer1tīon1jauļ1žoār1foak1rīev1biij1cieš1raum1joaz1meim1šuaš1daor1tēuz1rāār1vual1bain1geab1naan1ciīs1lāil1šāam1zaal1joek1leim1dāiņ1deoļ1vaiž1raam1mēok1rāer1leok1vēok1rūuz1ķēeb1tiāv1laa1džaiz1ļuon1kauz1doār1ķīē1dzāan1nāāģ1zouz1čaīt1biam1daat1kāēj1koul1duop1lāuk1šāik1nuoh1roat1tieļ1dāit1liuļ1ļaūs1miat1heat1toec1paaņ1paom1buig1tīap1meer1soan1tuon1fiaš1niīv1jaoņ1mail1rūap1peem1diār1pīer1žuit1rīal1tuiz1kāan1guim1tuan1vaīn1dāel1tiap1sīēr1beez1gaēt1kius1tēīn1koel1zeab1līar1tāaš1ķūen1viil1faik1tieg1riet1vāus1mium1teeb1joeļ1ģiar1haal1miig1lāek1vēis1leeg1rēel1tāap1ģeiz1rier1toug1toel1loār1lūel1sīel1fīoņ1dain1dueg1siub1ļoun1zēar1bīiz1juap1nāat1ceej1daam1vīeņ1ķioš1ļāij1meob1rae1džeap1pīam1piīķ1maop1teuz1cīoņ1teat1vāap1ņiuk1lāir1soak1meip1loik1caap1fioj1neiz1paok1took1cien1muip1nīol1zaār1ģiāk1ļuēr1toāl1šāef1leas1liar1soas1mīat1reīs1coar1nāug1tais1taeg1ļuām1niēg1tieļ1rio1dziop1lēip1nāoš1ķēap1būim1nāir1gēīg1vāēr1nuāk1siel1moiz1ņiap1mēal1paol1tiun1vēos1mīāk1lias1pāēr1ķuul1tīij1tiim1faūs1nium1baum1meal1dāus1toiž1ceit1cīor1ņaad1rīur1baus1vāu1dzeoš1daok1mīež1ģief1liir1kāuk1tiuz1dāēr1ģeīg1tēūs1teis1viil1tieš1ļāik1meor1deod1vaur1ziiz1čiuk1nīaz1mauz1jaāb1joat1faev1riiz1joīs1pau1džaod1koeb1rois1liat1muat1saub1riab1meēļ1niār1huik1tuok1saem1dēab1lāum1saog1lēāg1taez1liob1ļāad1paig1naor1sāir1daan1sīam1muul1doār1čiuz1viol1hoem1zuut1niel1šouļ1viīk1šois1lēuz1sair1gīež1vaīb1neīd1lait1viēk1veis1saem1peēj1said1raol1dail1cauv1reār1tīar1būap1moil1žaa1dzuap1seub1lāas1pīer1tuīc1niip1raog1loib1luel1nauļ1niak1sian1šiēr1zier1keam1kaon1zaār1bēud1niak1haus1moār1ņeat1dūiz1žuām1maaj1muuz1čūaņ1ģiiz1hoēj1niir1niek1tuās1kuel1žoiz1ģeēr1ķiēr1seīr1sēiz1naob1roal1goum1siop1ļaur1tuor1tāul1cēiš1ķoad1roit1čeil1viuz1seoh1lood1neiļ1raīg1noap1nioz1niil1meur1daāt1doar1hein1tūul1fīus1guul1cīal1bāib1rair1gaul1guān1riil1guab1peop1toil1ziis1ķiuv1cīap1tāaž1reiz1pīud1beek1neab1ļaiz1kiar1māiļ1ķeok1roig1šuat1boār1pūīb1tauz1kāiz1bium1maor1koan1vāes1leis1ciop1mēām1puir1baos1tēig1rēok1daīk1leel1teek1ruok1māob1jaar1guiz1ķior1gāij1jūis1māūk1nēal1ceēs1tāur1laīv1bēar1boaž1viiz1liom1fiar1niār1cēuņ1niir1pāuk1šuin1fuop1ļoon1mēēš1laūm1juon1meis1jaāl1daāj1puel1ziēr1koīs1tūāb1tait1reēr1taik1neaņ1ģēes1nauš1ķīēk1sūāp1joār1jaop1liib1rēoš1ķaag1taob1jook1lēul1kuip1tear1cīār1teīg1šauz1kiās1laet1roās1tiar1tiiz1saāk1ziuz1sēem1šook1soet1zear1žīoš1viap1riad1ruu1dzoāp1nēat1zaūr1liiv1laor1vaūv1beep1nieņ1sāūr1vēāz1tāēb1šoev1lūib1kāīt1daum1šaug1saik1daak1luēr1ļaos1muīņ1laif1rāoņ1tūeg1neis1mouz1šūon1tūob1šoin1vaeg1lūir1piu1dzaus1laūs1puib1toiz1sēap1čūok1lāuv1muīk1saāķ1veiz1muuz1mīuļ1ķoar1hīēl1meīg1meag1veur1vuār1haed1niāt1seat1ņaat1sūūk1šuol1meūz1mēip1toat1tīēs1taus1veiņ1puol1vain1šiāp1taar1koēk1siel1zīer1nuaz1piār1bīuk1laek1ņier1roēt1bial1dais1peīk1muēc1puin1dēūr1vees1tūēr1miez1koār1koāl1lēep1teār1rean1ceod1kuig1ruīk1tuēž1veap1noul1gael1veat1ņeār1pāop1buiv1tiiz1dāig1raij1vaēr1diiz1louz1boās1nuel1ņaus1neev1geab1diuz1joār1kāeb1reir1nuop1tāil1liuz1pīāj1doēg1tīul1reeļ1ķīej1nīav1ļuaļ1ņuūs1gaim1foab1taut1neiš1ķuez1nuor1sēep1ļuūt1siik1leis1gaoz1toop1tiur1šoil1kāim1duēr1baiz1noar1jeam1duul1luot1nieš1siat1paab1toip1zāūs1tīat1mūī1dzaim1boop1tuak1taes1veīk1maūk1šain1diuz1žiiz1čīad1viam1šāiņ1ņaār1ceēd1maik1niap1tīap1zuep1sīam1peuz1lēiņ1ģiuņ1ķiur1paeb1raeš1meāt1nior1meuč1kaar1vien1gāar1šiuz1laes1kāuk1ņīap1gāer1vues1nāir1šoiz1sīat1gūar1maef1roeš1ķion1nīap1hoez1zioņ1reur1nuam1beek1nois1jēāž1niag1lēek1ciel1daes1piož1vīoņ1māil1pāok1laas1līen1zeām1viir1beik1līe1dzouz1tiul1taār1guan1soik1sieņ1zeiv1juag1nāār1biib1šaor1foūr1zāap1ņaap1jiēr1līu1dzuen1rāiņ1paat1ķīār1vāap1ļoār1caek1šāēr1kaīz1daus1diīk1toop1saiv1koāb1tiil1joiz1rair1seuļ1paiz1ņaār1faos1liez1maar1sioš1taeh1roaž1dier1sāep1sael1jeāt1ceek1lūan1dāig1rāis1zaok1rueš1ļiāj1muot1rēel1kaur1čūeb1šuuz1žūeg1veuz1ņuob1riap1biiž1gaav1vaūs1naēj1raiņ1nieg1tīuš1paag1maur1ķēon1goēr1neīž1niir1ģeas1kūēr1cīel1šaēr1nīāk1ties1māap1dēīn1meig1šoes1kiot1neab1rāab1teib1rīir1poaz1doen1sīaz1nīer1boal1bīib1lēaš1haes1vaet1ruez1jēid1gail1tēon1kiil1naur1gooņ1paur1līod1piīb1toiņ1vaad1niev1kaar1laāb1tuat1vīer1suus1kuiv1vēiņ1zaor1nīan1doūt1neom1bian1toel1dēuļ1sēel1jēil1čaās1lēas1puuz1suuš1kuom1poul1bēēc1mēeņ1koīv1zāeg1leis1ceis1niod1rāom1naul1miāk1ļoig1muir1meeg1raeb1taal1muis1kiin1joīn1vief1lāēj1caar1hiul1baom1jaan1kāam1būop1tēol1loam1māat1ķiad1hēot1maem1līāl1leas1mēūr1gaik1laum1soan1dīus1līūr1tain1žeip1riej1seul1kieg1buil1šoat1peat1čāap1lēeg1lāīs1reēr1veek1caap1soēr1moāz1taor1tūāk1šuem1ciok1neēd1nīes1tiil1peip1naik1vaos1līiz1šāod1riob1rūun1vaeb1kuil1toir1tīuk1roiz1cuāž1raur1dieb1juul1soīs1loēj1čūin1fiur1zail1vaiz1faal1doib1siēr1bāos1nioš1reim1baig1siūr1fiec1puak1toel1soek1rāīs1vaaš1mīen1tien1pueb1riam1maes1meūn1viak1ciēp1šaeš1niel1viov1kaēz1doiz1lāen1tūen1suur1nāot1roob1reep1žoat1ķēēp1tien1ciat1bēuk1toāg1šuil1mēār1žois1vaēt1ceun1roeg1meon1būah1roād1reor1niuģ1niuz1souz1rūīs1kāīs1puar1šuar1sāel1buil1taur1ķiak1neap1vēār1čaav1veos1pēaļ1raeš1ķeur1zoas1vauk1čiar1piuk1raur1mēez1seal1pīum1zaīs1deaļ1ruuk1koeb1leul1juāt1zeat1būez1viat1šūag1raāt1kāīs1teiz1jūeš1ņour1coar1biūs1tuit1kaen1sēeš1ņaag1roaļ1siid1riit1noež1maos1piev1tiēk1piap1tūus1mīel1hiiz1haeš1ļuām1vāun1guā1dzīāl1nīeb1liod1reāk1laab1ziaf1niād1niig1riek1gauļ1muon1vaīv1koum1raat1pāub1ļaer1nīug1ļiaš1keēr1tīap1baod1jook1ļūus1tuuz1ķeih1taiņ1gaēp1joun1ceil1šiīt1neoš1ķīig1taol1līūk1gaes1pēet1boez1diap1ķiuz1caig1māor1ķaez1toāp1juēk1nīat1ļues1sēir1paap1raup1liul1dīē1dzaek1sool1zīēr1coor1kaad1jaen1raez1baiz1goen1hāez1kaet1reah1veil1pīep1lueg1tiim1fāih1nīēr1dīap1čāēj1vian1tīeņ1tuut1ruēj1tāur1buur1dees1noam1pīun1vāiž1kuuk1luun1būun1tuis1nīub1ļiap1čiūd1rien1līes1pāiz1čūob1jiez1tāem1žuop1līab1luod1rīāj1sauk1cian1žēūt1riun1dēeg1gāur1pūil1diiķ1veeņ1kaan1tūāv1viīt1roiz1roāl1dii1dziad1rāap1neat1vaiz1maūv1koūt1nēaž1vaān1sauz1zias1vēet1vēiļ1buaš1vāap1kaiz1pier1šaed1naim1dēag1nēāj1buād1veeb1tāus1pūīt1saap1žiūr1niog1ļaāt1nēel1vēet1laog1ruiz1kaal1sīir1zuom1foeļ1jūil1bīil1sauņ1ģīej1saor1nēam1taul1šoor1pēem1duur1loat1beur1siēr1tier1šoat1pior1loev1naec1riol1baiņ1kāār1hios1fāat1lūog1niaš1saeg1liij1deeļ1mā1portap1au", + 6 : "il1nsair1ptiiz1šķoēl1mjuuz1glāap1slāop1skaek1špēal1truiz1smēēr1ktaus1kriil1bsiul1griap1skuat1frēis1pruat1frium1pjaār1brāos1tgaas1preār1sveūm1tveār1brīuz1fraiz1druēr1ptuun1dzāut1skaīk1šķoāb1stiiz1hloēr1šļoap1groat1šmīun1spues1troap1blēet1rkaus1griat1plāon1steap1šķīel1dzeab1sceat1kļaiz1prāug1šdeon1fliat1stuim1šteir1ktaar1bnīer1dzīen1drook1snīuk1šķaeš1bļoīt1ņmēet1rdeir1mbāaz1gruin1grāuk1skaap1spoāg1stiug1špaal1kvaez1tnean1gliudz1baūk1sliat1smaap1fraiķ1skāuz1smaīp1slail1stuiz1graos1krēam1stiuz1preez1glaīdz1jūus1trāiz1plaiļ1krāēr1zkaap1proir1snoir1smoir1mmeer1dzeān1prāap1bruēg1stoas1braek1šneēr1bšoedž1lias1truun1draāl1proār1grēēr1stāar1ptaīk1stuez1spēam1skāir1kļoon1gruiz1štaāļ1dziāl1štāīs1prour1dzuir1stīār1šļauz1gruel1pšual1frīek1šgair1mdīek1skuiz1spuuz1plūāk1slaiz1drein1ssūuz1gleom1preār1gtiudz1cīiš1brūuz1kruuz1sliuz1klāat1bleīdz1niiz1smīār1sniīs1spaiz1preīg1skoiz1žvair1gtiēr1btaīt1praat1glaas1dziap1skūuk1šķeat1dzīuz1štauk1lvaat1dzēār1šmaes1prāiz1bloal1stiat1zviin1dzouz1krēat1kvēan1brūur1ksiuz1stīop1stain1stion1stiuz1pliat1kveas1krēin1sdaan1smiap1stuus1tpuuz1kņuār1bloon1gliar1pliap1šļaus1kreāk1šķual1vjaiz1sniap1plauz1brāiz1brēeš1stūiz1svāēr1kšaug1staat1bloap1šviil1dnoiz1glūir1sdiim1proār1treiz1briāl1braat1briuk1stēiz1brūat1plēil1bšour1dzaik1lpaāt1rrauk1stiur1kšaen1džoār1svāap1krāīk1šķiat1rreiņ1zvaat1žvīār1blīēr1staār1smiiz1šmīug1šnaiz1skāuz1trīap1svīis1prāek1staat1slaat1trūāk1slīuz1knail1dviār1dziuz1šņuis1treiz1sviap1driel1dmēul1gtoan1tziis1kvīuz1kļūār1šņouz1frēib1stoig1stain1ktīir1snien1sneem1pjoēr1btuīn1skāēk1šņoik1smēes1trīat1šķūat1plain1gtoot1rdial1cvium1briuz1šviis1glīan1džūap1sleuz1pļēap1šķeiz1bleap1šņair1mreen1traār1traul1snēiz1spaep1stiūt1sgaāg1stoīb1staap1pļāat1kleil1gtuiz1spiam1traan1frauz1frāēr1nvauz1stūūk1stoat1šmaum1šziug1stāat1špail1ktiīp1sleiz1trios1troel1pšoav1staak1tdaik1snuiz1stūok1triap1gveop1spēiz1prael1ptāes1traiz1kniān1spēos1kvaol1steul1dzoek1šzouz1steuz1brīin1skāār1švīil1nvēūv1proiz1šļuev1skien1zdaāt1rdaēk1šķuig1stoēr1kšuēr1ktāiz1skūan1kreiz1proil1spial1ktook1zvēap1zvaār1zvēun1tniak1stias1triīb1spēos1mveen1sžuel1nruer1csauz1zvial1vtuat1dzium1krūot1frīap1klīan1skoel1dkoan1tkāap1glaīk1šņaār1gveil1dbaes1tmauz1stiat1drūul1ptouk1smias1trēer1troīb1stiid1spaat1trāar1pnaat1staek1trīat1šņoat1zveig1zdair1mpaak1tniir1kšoār1ploār1prāil1ntiom1svaēr1bjail1trāal1ktaiz1dzaiz1šmaat1dzaiz1kriol1skāen1tniet1stiat1truiz1špaur1kneīg1znaul1svaan1tzaār1tņuīn1krūuz1šņoek1tkāat1plūil1kniuz1žņaur1sliiz1treap1stīor1ddaur1graat1glāās1tniuz1žmiat1dzeāl1stiēr1slīel1nzeāk1steop1plaat1prāup1stoem1plāib1stīup1stiār1špaēj1plaār1hloap1frēil1ktoal1dzion1triar1gsēiz1frēap1broul1tneim1stīug1špēem1ptaat1grūas1tmaīk1steiņ1krūil1kšuek1skais1tviār1droiz1trous1smēel1ztaēr1psiāk1smeēs1tneār1grūok1griup1stēok1skoet1rroun1dzeap1trīuk1šķuin1srien1triāj1dzīap1friet1rpauz1kluik1smeār1draiz1kviēr1ptoat1plīod1praat1gluap1fliuz1griat1krīīk1stēoš1prāan1frēap1svail1btaek1smēār1šruus1tmāīk1smīal1dķios1trīin1ssēal1tgair1mkāap1zviūg1stoem1pliuz1bleon1speat1spāār1skoap1trāek1šliāl1skāiv1proar1krēiz1trauz1triuk1steir1klīap1knaer1spēik1šķaak1šķour1gšoal1dgaap1klaap1svēin1triim1tgain1šķiēr1bkaēr1stiat1skaāb1sleap1slīiz1slāan1gļuir1msāēr1pšaor1tlīiz1driun1ktael1dzīem1ztuen1ksiār1knaun1ktoap1kluat1traat1brāat1žvaan1kroap1smeūg1stiar1tmāin1gtiār1stiik1stēom1bveap1skoār1pleīk1smiug1sneap1krēen1skāen1szīāk1snees1preēr1ķtiāl1smaīr1skaat1slīus1krēus1skael1ptaen1ktoar1bgaār1trueņ1krūen1trēār1spuen1spual1ktāik1stiem1ztiāt1stāal1kciap1kļūel1nsiēr1nruir1dzaār1klīat1treil1dmaīk1plaap1sniel1kmeel1nbāak1smēāb1stoun1drāuz1gluuz1skaen1slīan1sliēr1sbaun1droel1ztouz1trāuz1spāap1dzēap1druin1dzeed1grieļ1blāan1kcios1krūiz1spāan1krūir1srait1skoir1msoun1ktīiz1slīer1ztoet1praur1traal1tmeiz1sluil1gtiiz1greek1šķīop1svauz1truar1ppain1dzēab1dziur1tniuz1briab1stuin1grauz1svaiz1krēap1dziug1šteum1bruat1droir1stiur1stiāl1skoat1kluen1kšout1skāil1pšuur1gšuar1knāap1knuim1braēk1stuiz1knāil1btoāp1slius1truak1šņoap1prāir1dzoen1krāār1spēar1kroiz1droār1brail1dnīel1dbaal1briuz1brēot1griat1tvēur1smeuz1šļaek1šteat1šņaen1sroāk1sloan1žsauz1plīan1trail1bšail1tnius1glāur1gtiīg1stuar1zvaol1lmēiz1kvear1glīin1kruap1kņuir1pšuec1skāar1dziod1ršual1tmauz1sleeg1spaap1šļiek1šķouz1spoar1ktoiz1zviuz1šķoil1trēor1treim1šļaiz1blēel1gtiuz1slēār1spoal1dkauz1breis1tzoim1fvaaz1praap1plīaš1kriir1pjiuz1šļuiz1slaem1ztour1krial1tnaer1dzien1ktiat1pļēēr1sloar1gtoūk1šķiin1dzues1pļaoņ1priuz1bļāus1troij1skāār1fraiz1truog1dziij1speij1stūuk1šķiār1trāuz1klaek1sčeik1stuar1ppiiz1šņuoņ1sliil1psiiz1groēg1stuuz1skuol1stīur1vciuz1smīur1zmaen1sveer1speuš1plēur1bšuat1stūiz1smeel1gšuec1staap1kraek1šdail1ddeel1kņail1dleel1psiap1stūap1pleuz1pleur1kšoār1dnīēr1pjuēk1šķair1mteug1ļķean1kvēil1gtaīr1šķiap1svāul1lpues1nvēuz1gveat1priug1šdaat1šķoiz1plīār1brial1dkāudz1maun1ssaos1prūiļ1ņveer1cheān1skāab1skaēr1sliār1krīal1kšuur1stoūg1snauk1stoir1mcēid1staid1slāut1skoir1stāār1proir1ktiār1kreap1gluas1tneiz1švīuz1spual1nrūār1spaun1ktāāb1slīār1pļēir1bjuur1btoel1sviun1ktūug1šgair1sliuz1friur1btaāb1stuem1brāom1proez1glāep1stoal1kmeiz1blīar1ksiīk1smoār1speap1krīiz1šķēur1tkāēk1lkoār1tnail1dsaal1dniel1dceon1truiz1stoūp1stoap1žvīap1triod1gruār1gtāiz1gveel1gsier1nhaat1švīār1hroil1tvāuz1smeat1sveim1tniuz1priēr1sraas1krāen1skaiz1glīus1tdēol1tmeūr1stuum1šviat1šļaār1knāuz1treok1šņoat1bliat1sniel1gtoek1šķeab1stiun1fteap1griir1steul1snien1tviam1pluam1zdaik1stīat1knāat1skūis1trois1trēīg1stair1spuam1svēār1bruec1stūul1dzail1kšoār1plāos1tniīk1snauz1staār1zdaār1šķiuz1bliek1troap1grēur1bšoir1slēiz1klauz1trūuz1traak1stoos1treuz1driir1smaak1šķēak1tliek1švēās1nkuel1ztier1cbaēr1ktoin1dsēal1kšaum1traip1snaeļ1skaār1šķīap1kriār1šķēel1drēim1pliuļ1dziir1ptaēr1ptail1praup1stīiz1fraus1treub1krēār1pļāin1frail1ktair1mpiap1šņoat1skuun1dzies1trēan1drīil1ptoadz1niar1pjuin1gtāiz1gruap1šķoēr1skāot1rpior1tfeir1mtiik1šķian1tmēam1briun1džail1pšoas1brāel1gšoap1kviug1smeil1pneēt1sviir1kšaas1skoek1speen1kšaiz1breem1ptiār1greiz1frāiv1stāul1šņaār1kroas1prail1ktāat1sleiz1gluik1snāok1šņaum1šmaār1gruār1smeat1snaur1ktoik1snauz1svīus1sloam1pdaem1ztāuz1žvais1smiēr1tnīār1gtuār1drūīg1stiap1troat1smeiz1plēir1tniak1šžoil1skuul1bšaum1spoāk1sliap1bloār1dzeār1kvauk1sneāt1rviap1žvaam1stuan1draār1gšoek1stēār1sloār1gtoek1ļveek1spoār1tsaiz1džiar1blāēg1stiar1bdiuk1šķīil1bšuor1proap1hloiz1trīas1trīuz1smēār1spāis1triab1klāuz1hlouļ1stiat1fliut1nkoiv1krāur1tdiap1glūār1glūom1skāat1stoum1staap1gleal1smael1traer1stoel1dviiz1friet1skoat1tvaār1kleāš1kruer1tceap1kruus1triuz1glaap1bleil1staap1sveiz1dzīas1tpaem1psiiz1tvēac1grīēr1dzīul1lciiz1šļiat1žņaov1smēas1skaen1tgeat1pluīs1šķiār1dzīēk1šņāel1nkoār1skuāv1stiāl1dziēp1stuīv1klaim1tmuos1proap1spēum1brāul1dziār1stāur1knēer1trūel1nbaār1broar1smeok1sneil1škaat1svēar1vdeat1sluiz1broēr1steāb1slius1skāat1grāāp1stuār1brūam1stīas1tmēiz1kņuen1klaiļ1slium1stoap1bļāuz1snaol1kloer1tmeiz1flial1stuap1špaar1stiāk1šķiār1džium1brair1dzual1kjūap1smīāb1staiz1kļaul1ptūap1smēār1tnīar1gvaudz1sous1stuap1steul1znaār1glāār1blāur1skail1stāel1nraak1triat1kņueg1smeap1grūēk1šķoin1spiik1staam1bliir1dzēēr1ktuur1kniel1tniiņ1krāiņ1kreiz1klean1spaun1skaam1stāēr1pšoār1fliir1mriēr1btāat1sviir1spaār1tnāap1šķūen1drāek1šniat1trīar1ktiiz1priig1znēon1spiul1kveek1šķuāt1skoek1sneīs1krāiz1klāēj1tveur1ktiog1ļhior1tmeaš1plūēj1slēam1plaēs1tniur1bsiis1tkais1dziiz1speab1staāp1stias1tmeos1triudz1daur1dzēat1šļuat1braun1klaer1ztiuz1pļāār1dreil1gšaiz1pleiz1žņaer1ztāel1dšeir1knēeņ1krāēr1ssial1snoūp1stīir1gsiiz1stair1sseuz1speek1sniīg1snēin1dziat1kliar1bveon1gloiv1skail1dniār1kraār1blēar1stāār1slieņ1ķmēēr1bsiik1smīāl1sciat1dreaž1brīiz1plāir1mveuz1group1jmauz1dzaem1ptoan1ktoež1staēr1šļuap1brīuz1krouz1skūuz1krīap1šmīuz1kviil1btāor1tjees1krāat1tveul1stuūk1stuen1ktaēr1stuar1bmauk1stuēr1nziuz1slīūk1stiat1svaap1pļēil1nmiir1snīin1dniāj1prāar1sbuat1spael1nmaek1stuis1grūis1nleāk1stīuz1stuif1šteār1spiīk1stāar1ktuur1ktāāj1dziēr1btoiz1zvaat1knuat1fraen1sraal1ctīār1brear1bniār1tniez1proan1tnīēp1stias1trāāp1stoīr1svaiz1šķaig1stuer1traes1truas1grāal1snaur1preur1mjāēn1prāat1proek1ļpaik1lveēr1kšoiz1glaap1snain1dzaār1grair1gtoiz1snaan1čkiap1tvaār1snaum1špeat1zvaig1zdoen1svaet1rgail1ggaīk1smeal1stāet1rriiz1dziār1praiz1trūār1pliēk1šķēāj1staiz1krour1kšuiž1knāor1bciem1ptāan1scēir1kšual1tdiēk1šņuīdz1šiot1rreāt1spēēk1mjuāt1krūil1ddaat1svīudz1kāār1trīar1ktāāl1skaen1slies1priur1btuug1stīuz1plāem1ztaiz1bļāīk1stiuz1spaār1tvean1dceel1dseuz1kraap1sliir1gtauz1slāir1klioņ1plūur1gtoan1grēūk1snaāv1zvaan1slāek1švāār1žvaār1šļuap1frāaž1skāat1preas1ttiiv1plāuz1grēek1šnoiz1grāuz1braes1tpaur1braiz1kļuim1stour1gtuom1dziir1gkaiz1šķeek1stiuk1šgaār1smael1tkaar1gmaal1nrauļ1krēar1gkaiz1svēēr1stoil1špaim1tciuk1plēel1ptiis1draer1smeul1snīār1krāāt1smair1stuat1pļāuk1smuan1dtāen1kšuar1skoēr1ptiēk1lvaor1skāuk1staep1staār1triir1kņiul1stāet1rviil1btuār1slaat1pliel1nsaur1kmēuz1broal1dneār1frēun1spūek1šķēen1proan1droat1bruak1snīuz1tvēik1spāuz1blīap1šķiel1draun1sviat1spuār1friep1stuēr1szāīb1stoār1dzaār1gliel1kneār1tneun1prāap1kveuz1kniap1draār1gšaār1kviir1zgaek1šgāek1sveat1gleār1stīes1proal1kmaiz1klīug1stoaz1proāj1slaen1tneul1stiat1kreār1svaār1šķeiz1kļūap1sluil1zkaek1šmeam1pšoūr1skouz1grāes1grāap1šņuir1kļaur1lmēel1dfēaz1druat1rpuum1stues1grīiz1knaas1smēur1spīeņ1skāār1slēudz1vīun1druar1skaeņ1traam1pliuz1kliul1gtuēk1brūus1dzīap1stāar1kšues1kraiz1brāir1staar1gceem1ptuur1steār1druuz1pļaat1glūad1skāov1skāak1stāēr1zgair1mgain1gtuīdz1teār1drīam1braīk1šķuur1gsiab1scion1driil1pjuāp1jvear1gbūul1gšuār1dvaār1tnoap1ploas1tkail1gšoiz1skaār1dniap1dvaīk1snāap1blāas1pļaap1kreal1preem1pšoap1truak1stīel1skuak1ņveak1špaaļ1skaūr1staat1bļāin1gveat1hloig1frīok1snēār1griak1šķiāt1snaul1tsias1tniir1stoan1sfoek1šlaul1tzoob1spios1priel1briār1žvīat1blīot1rtiil1gsiuz1zvēin1speir1ptuag1svaiz1kliok1sniel1graum1spēūp1stiak1stēur1ktaan1driir1ptoiz1pliīv1drēar1pzour1btiul1šņiat1blēog1ļraiz1sleil1proil1gtoeļ1traiz1slēār1kveur1btāār1frāal1tlaur1pmāēr1ksial1ksiir1kņoin1sraem1blēib1stain1sciur1ktuiz1šķūan1tniām1glāur1zvaīk1šķēup1rlail1ngail1glaēk1šņaen1prāuk1špaat1pļaiz1šķīār1gšuir1gšaul1dzēan1kkuul1tniun1dzēap1smaer1stiel1ztuir1gkoim1treus1snaūk1šķuik1tniat1brēas1kraan1džaam1plīar1kšaap1spean1skaih1svēod1sliēr1pšuar1gream1stoān1skaor1tvīat1svāuz1šķūūr1stoin1sceud1spiudz1gaal1snāāg1stual1troat1štaat1kļūudz1viap1sloap1greiz1šņoug1stuim1stiup1stuur1stīos1krair1skaog1ļdeum1dziin1kvied1kļūul1traiz1skoel1gtāur1gtāiz1pļēap1smuer1stīāt1ršuok1šņuap1šķaāt1dzīat1troat1brīal1staudz1ruar1gtēin1staiņ1ķveat1krial1snuiz1zvēiz1kluin1hroir1ptāas1kviur1spiiz1kvēār1skāir1gtuāp1stauz1brued1krāet1staal1vgaam1pšaar1pgauz1slaat1šķīat1džiār1kļūār1šroeņ1braīk1gruār1klāak1ņkood1prāat1klīiz1stēār1žņaat1triik1stūek1šzīār1kniār1preap1klāul1gtaēr1pjoār1gsiiz1šņaiz1gleēr1bjois1stūeļ1drāik1steēr1ngaap1tveuz1skāap1knāik1snīam1bleek1stāol1fgaem1briuz1spīel1dmaiz1sloar1gkāiz1svīūg1kriun1ktier1preuz1švīap1dzīiz1spīek1tdaēr1dzeil1skaār1tnuur1bšaap1traap1dzean1stein1ktūer1ztuas1pruen1scauz1svāil1dmēik1sniār1brēāk1stoāk1sluap1briap1stēiz1stiap1pļaār1štaīk1sneun1traok1šķiūs1tniok1trīiz1glāom1pleār1kriuv1braīv1stuāt1rgāār1pļauz1klīuz1sloat1greeļ1brias1prāig1žņaēr1glēūr1stiīv1svaah1tveūk1sneet1rsiuz1špaan1dzeum1praer1plēiņ1stiat1drīat1dvain1tnīin1gvial1šķīap1slēid1plēil1nvauz1glūiz1šviudz1puor1tliin1kriap1priem1dviār1drāas1troar1dzeāk1sniuz1skias1tvaum1sveār1gdiik1stoos1preat1frāel1dreil1dvaug1prāul1stīuz1sviur1tdaār1sluūp1stāez1gluīļ1knāan1cleūp1stuec1sviak1šķeir1dzīuz1dzeāl1spēij1droār1klaim1sliap1bliil1sruon1skāuz1spiul1dzeik1šķous1krūek1stīek1šroit1brias1priik1šķuor1tkuat1kniis1mjuim1stuez1prāat1sliur1vmaom1staer1staot1rpues1prauz1great1šķēur1dziūk1steap1smiār1stuan1skāūr1stēur1zmiār1krēer1smaat1šņuod1skoim1preal1snēap1dzaiz1pļail1krūat1speuz1krāin1traat1šķiat1broel1tgain1troon1tdaak1šķaas1tnair1skiaļ1stuos1kniēr1tniār1trūer1ztair1zmaiz1knuar1gkueļ1gleiz1dzēap1stios1trāuz1šķios1truir1kļues1brāar1stoap1grāus1tmeiz1skiin1svaum1skoun1kniat1kviuk1stīap1pliot1plāet1rmoel1djoub1stauz1sniiz1dzeul1gšoam1pjouz1drear1pniis1mmīal1dzīiz1žvīar1bmūat1spoal1šķiuz1kvēal1ktiudz1reār1spīiz1kraet1rreab1stouz1sluār1plēus1ttēur1staiz1griot1rtoen1stiāv1grūār1tvaun1slīon1greēk1sneir1kniel1dpūav1grīor1tjēīk1smāīdz1jues1smēiz1spoiz1brīum1bveis1kvaīg1ļlaīs1stūim1tkāār1gmeār1bleāč1plēēr1zciēp1stael1drāak1šķual1ngauk1šķēir1ktāod1skaīk1stoir1speir1pšoēj1spēat1hroid1smion1traat1gveil1dķein1skuel1dtīek1šķiuz1kreap1zvēār1skaān1sveudz1vāiz1steuz1plaan1ckaež1frēin1gšaap1hroin1gtīir1mdiir1mvaap1sviuz1dzīuz1proēr1snaap1drouz1bloal1tvaek1šsēudz1veih1stāuz1graēd1dziar1psiār1driat1klāiz1tveār1sleul1gšaal1tvīēr1ļveir1mziat1draos1pļair1ktoel1ngaēl1spiap1gruēr1btius1pliik1smaār1slīol1skaīt1skaap1džiur1tnīuz1dziār1šmīodz1niar1gdaat1skiuz1dzēel1tliov1skiel1ztāat1blāar1dzīis1trāas1traen1svīon1krēur1gtaen1tmēār1kruun1driār1glael1pvaas1prois1priiz1plūil1dkoār1šļiar1tneus1tneat1knaat1kraat1spiēr1ptāīk1stain1grīed1spiop1stuum1šsaap1preap1trūār1šķaat1brūum1šķiel1stual1stouz1kļaal1nzeat1gruon1froat1klaap1brūir1mtēīdz1nāuz1šmīap1graak1šzeap1blīan1knoil1skāir1ktuēt1spēal1vniar1griuz1kleul1stoes1krūiz1pļāuz1ploat1šļiug1šmaec1slaīg1stouz1blēib1stien1stoin1kliir1dziug1znain1groas1prūež1graiz1kreeg1slāām1grāig1znāam1fleir1pšaeg1smiuz1šķaap1šķēug1stial1steal1nciem1mviīdz1tiik1snoār1svēet1rkāul1gtāat1spēār1stoil1šmāet1rtiar1dzēer1ckoar1staēr1bšaāj1gleam1pjauz1dvaot1rkāak1šmauz1plēak1špuār1bļāir1gtāik1šķēuz1zvaal1stīos1kleār1steug1šžoēr1tneiz1dvais1truek1škuap1skāar1gtiar1gviuz1smiim1ptoār1skiār1plūuļ1skaib1snīiz1šķiap1skiun1sbīep1stēus1skoat1zvēat1stiel1dzoīk1smēan1skuum1slauz1šmaap1žņaek1šzeuz1kriir1mmāan1čkaēg1staat1kroet1rrāuz1knāuz1stāap1drīez1gloat1plear1šļaug1šņuār1kliot1rzial1kvīis1traib1stāor1dniel1dpain1gpoul1slauz1tveel1ttaap1plēuz1šņaār1staos1tbiār1gleog1ļrūer1stuiz1ploūv1briēl1spuiz1sliap1pluum1stiuk1švāus1trauz1džiēr1npael1pjoet1kreāb1slēik1lķean1spoim1tkuok1greiļ1skaan1tkuan1sjēil1pšaūk1snāāl1szāol1stous1trēij1krēan1floap1glāāl1sviat1slour1bjoel1smeat1smēop1dzīūg1stual1traer1tneat1švios1trēez1drāur1gšaen1spoov1skail1ktues1treiz1dveār1smēat1graāg1staūv1grias1tmāin1flāoņ1stūār1kluel1tneak1staār1dkoār1kvēan1troat1kruap1stoil1ptaedz1niis1proīr1groudz1siem1braār1zkoul1šņāus1stiēk1šķiudz1vēum1tniar1stuap1kleīk1smuup1staīk1smaār1zvaab1rkaēdz1niāb1stāēr1klien1troār1plīil1gšuap1kvēas1treak1steek1šķaāt1rmoan1scein1sdeiz1kruap1šļāat1breon1staēr1zlael1gšaām1brael1dziuz1druudz1diap1brāar1ktaeņ1slaar1šviiz1smiir1vjaen1griar1kšouz1drīul1staek1smeār1šņaār1zniār1troap1kliār1sviēr1stēīk1stīet1rtūīdz1ciur1tliek1stoim1tsaus1brāuk1šķoir1ztaār1stūun1ktuēr1mjuīk1šķaur1kliuz1fliap1plūil1dziap1dreaz1svaug1ļlaat1stīiz1pluuz1trois1sliiž1skāir1gšoen1ktāār1gtaiz1bliār1smīim1brīār1dzēār1svīek1spaīdz1kouz1svēat1ploor1tlaab1prāir1tneūk1slāiz1sveet1plāir1svail1btiuz1brūīt1spēuz1šķēudz1noat1slāiz1blāes1tdius1zviis1kriēl1slēob1skuēk1šņiul1šņuon1troil1stīiz1braur1pnial1dsēim1ttūis1spēes1tmein1gvīug1špuir1dneiļ1ņlaap1staik1smiad1grāiz1spēil1gtāiz1svail1nbāim1stāak1šveuz1prauz1grūār1skūiz1bruus1tsēug1snēār1dzoin1tniig1stier1gtuen1truas1krūār1slāap1tvēel1stiil1stoil1draot1rgaur1kņuap1braer1tzāat1stāer1cliēr1bšuuz1stēap1plāan1gviuz1šļiuz1blāed1rvias1tlaiz1stuot1spēus1proim1tdaam1krēop1proig1žņoat1bļaap1kniiz1smaiz1grūan1dpuīv1prāur1stuar1stīig1zneūk1staāj1skoek1škaub1stiur1dzeiz1hroap1šmaap1spaār1stēib1stuat1smīim1stail1ksiar1ndoon1krees1krēāl1plāuk1smain1grium1prouz1draār1plaār1pluat1steel1gtaen1gruil1tzeār1priiz1krīat1krēes1prūis1svēār1šviār1knuen1ktuap1treiz1kņūul1gsiin1driiz1drīek1steaļ1ķneuz1spēos1tmaug1sniat1grēal1sniur1ngaip1frūēr1skoat1stēēr1gliol1fraat1groun1kciār1kņuiz1skuek1sceap1slaat1slēap1štaap1šļues1triuz1pluār1bliār1grāuz1stoil1train1gruūk1snien1szāos1prāāp1jvīār1tnēil1ptuum1šzais1kreis1krēul1gtium1dzīek1špuur1zniuz1drous1tveās1trāūg1staap1brēer1vjeiz1grēar1gmuat1druap1kļaap1spiap1breel1ptoār1tvēal1kšouk1smeel1dzēil1kmeēn1skāir1gšuil1stiir1dsair1slīat1smiār1šķoar1spaal1dseuz1knuar1gpoiz1šļaat1šķaār1šņuuz1svean1stēek1trāār1gluur1vjuoņ1stiat1drāiļ1proiz1tvaiz1trāap1spāom1pliak1stuap1spuek1tdiok1steer1graam1breuz1bļaus1grael1gruam1staat1skoīb1stuek1triel1mlaan1sveat1skāun1dzīīk1graap1skain1dkoal1ktuul1dzues1trāat1spīol1dlaat1šķeeņ1pleos1tlaik1stāap1švīuz1prāap1kroūt1smēis1griem1pšuiz1bļair1mnoap1spīēr1ktial1gmeed1sviis1briun1sneen1sviuz1kveār1groer1stāuz1šķeeļ1krūod1rpaīv1grāet1rbaun1skuār1tmēāb1stīil1pjoiz1stāuz1žvīuz1šķīis1tkoos1prael1gtuad1smiom1kraut1svail1ptiug1preun1kteil1gruār1šķūez1gliiv1spēer1dloāt1ršāēj1grāur1dzoen1trāap1bļaēr1tņuem1dniin1ksaāl1šķēuz1hroiv1stoet1rjūuļ1gluir1psiel1zceum1slēat1griel1ptuuk1stāat1praar1gjouz1tvauz1skoiz1stīel1stoap1praov1skuar1šruēp1stoat1krāir1ksiok1šķeiz1šļāiz1drail1ptāil1dsēin1gtaūp1staug1ļkoar1džuiz1krāul1dzīur1stā_jā3a2_ne3a2_ie3a2_no3a2_pa3a2_sa3a2_uz3a2_ap3a2_at3a2_iz3a2_jā3ā2_ne3ā2_ie3ā2_no3ā2_pa3ā2_sa3ā2_uz3ā2_ap3ā2_at3ā2_iz3ā2_jā3e2_ne3e2_ie3e2_no3e2_pa3e2_sa3e2_uz3e2_ap3e2_at3e2_iz3e2_jā3ē2_ne3ē2_ie3ē2_no3ē2_pa3ē2_sa3ē2_uz3ē2_ap3ē2_at3ē2_iz3ē2_jā3i2_ne3i2_ie3i2_no3i2_pa3i2_sa3i2_uz3i2_ap3i2_at3i2_iz3i2_jā3ī2_ne3ī2_ie3ī2_no3ī2_pa3ī2_sa3ī2_uz3ī2_ap3ī2_at3ī2_iz3ī2_jā3o2_ne3o2_ie3o2_no3o2_pa3o2_sa3o2_uz3o2_ap3o2_at3o2_iz3o2_jā3u2_ne3u2_ie3u2_no3u2_pa3u2_sa3u2_uz3u2_ap3u2_at3u2_iz3u2_jā3ū2_ne3ū2_ie3ū2_no3ū2_pa3ū2_sa3ū2_uz3ū2_ap3ū2_at3ū2_iz3ū2_ne3satran2ssa2ls_ir2k3lir2k3ļ_ai4z5", + 7 : "ārg1stiilg1stoakt1spoalt1gvaark1staugs1tlēuzs1pļaald1skāins1grēizs1prūilk1tniurb1stiezg1lvearp1proirk1snield1plēird1spuilp1stuīns1trāārs1kraird1smieln1svāirp1stiārg1stuens1staugš1stiirk1stiilg1staals1tpuārd1dziirm1dziabs1traumš1brūarb1spēils1blīurs1krūizs1praurb1stuudz1šķauzs1kraaps1preins1gruens1blaārs1praarg1krāilk1tneens1truulk1steupj1graunk1šķiurk1staaps1krēirs1drēērt1sliobs1truērt1ssūast1skoird1skairg1stoord1zniaks1tveikt1stēuzs1preizs1proilt1stēuzs1prāeks1tkoalk1stīīdz1proens1droirg1stuing1stoizs1kraink1stēalk1šķiātr1sliild1spaāls1trealk1stoubs1trāaps1truērk1šķaizs1trīats1krēārs1trīalk1stuuss1kriizs1preent1lmeirg1zdailb1stieks1treaps1prailk1stiunt1sziuzs1proeks1kluiss1priaps1trīulb1stourk1stiaps1proaht1kluāls1staens1krāilt1smāeks1preuzs1truaps1prāetr1klauzs1priīks1tmēeld1spēapj1draist1hreids1krēirs1plāirs1stuunk1stēilk1sniink1šķiird1smīirs1kreīdz1skaalk1snāīks1tsiizs1truars1tdaunt1snoēst1griuzs1treurk1stouns1droulg1stoātr1spiilg1spēerc1skoilb1stoāls1skāens1krūaps1triilk1tnēudr1skāurb1jmaats1praird1sliizs1trāekš1ņnīind1staaps1kraērk1stuiln1briuzs1praudz1plailb1stuizs1kriilk1stuirp1staeks1trēugs1tkault1zvaātr1griink1šķourk1šķaulb1stiuzs1trāaps1trāirk1stīulb1stuunk1tsions1trēīgt1spēark1stuilk1stoark1šķoalt1kvēuns1dzēirk1stēild1krēink1sliurs1trāunk1stoilk1stēārg1stoakt1sguert1briilg1stiērt1svēērs1griaps1trēeņs1krāamp1stuats1trāilp1stiežs1trāerk1šķieln1plaurk1sniakt1sviens1dziirg1stiark1šķuess1krāirk1stount1smaisn1grialk1sneild1plaudz1skaārs1truuzs1krūink1šķēērs1svīērk1šķoīks1tpiilt1rpaātr1braurk1stuārs1proals1stieks1ploamp1stoizs1treang1steirg1staizs1krēātr1spēust1knāark1šķēark1šķiārs1prāaps1prūilp1stoīgs1trāont1rreakt1sdeats1treuzs1trīaps1pļaurk1šķiurk1steink1stuājs1trāats1pļaērk1šķietr1stūink1staans1krieks1proald1drāārp1staurb1staunk1šķēakt1sdaakt1spualk1sniārg1staāls1traāls1steirg1zdeāgs1tviird1zniirt1skuons1trāērk1stailp1staisn1stūelk1sniilt1skoats1prūurk1šķuars1tgaugs1troens1šķiing1stiads1krūels1traark1šķaark1stoant1sbeink1šķaunk1stiird1sdeink1stians1plaugs1traats1preirk1šķiirp1stuils1druals1tniats1truins1truanž1dzeīks1proamp1stiars1tvīugš1stāanc1spēark1stiunk1stairm1skaakt1smīulg1stuamp1staeks1trīunk1šķourk1stēelz1szāārs1treens1kriink1šķeuks1trāink1stoult1spūelt1spēats1priild1spēuzs1prūeks1troegl1prāirp1stoalt1kriakņ1graārs1lveārs1pļaudz1stūurb1stoaps1treugs1tvēekļ1skāunk1šķaisn1prāats1triākļ1stāudz1krāimt1proing1staeks1pluakt1spailk1staalk1šņaats1prāīks1tčaent1rtiērk1stiirg1spēikt1spēizs1prāakt1smiizs1krūunk1stuats1krūārs1priunk1šķuult1spēunt1sgaugs1tsiizs1priārs1krūaps1krūārk1stiizs1pļaars1tpuērk1steuzs1triulb1staizs1trions1truirs1svāats1trīārs1krēakt1ssaeks1traakt1slourk1šķoing1stuult1kvaust1spoītņ1griežs1krūirm1sleirk1staurk1šķēort1preekš1ņlaiņs1trāalk1stairk1stuemm1dziirg1zdāirm1klaaks1tnions1traink1šķuats1kraind1rveakt1sjaens1bluaļķ1špault1svaogļ1skāārk1staulg1stiērk1stoird1sdāugs1tceuns1grēult1plairš1krāegt1spēārs1tniats1proakt1slaārs1triilg1stuīdz1svauzs1krēoks1krūārt1stailb1staalk1stioks1troekš1dzient1rbēiln1skairm1šķiārs1trāaps1prions1krēārs1preirk1steird1slēulg1staakš1svāalt1briārs1prū_jā1s2p_ne1s2p_ie1s2p_no1s2p_pa1s2p_sa1s2p_uz1s2p_ap1s2p_at1s2p_iz1s2p_jā1t2r_ne1t2r_ie1t2r_no1t2r_pa1t2r_sa1t2r_uz1t2r_ap1t2r_at1t2r_iz1t2r_jā1s2c_ne1s2c_ie1s2c_no1s2c_pa1s2c_sa1s2c_uz1s2c_ap1s2c_at1s2c_iz1s2c_jā1g2l_ne1g2l_ie1g2l_no1g2l_pa1g2l_sa1g2l_uz1g2l_ap1g2l_at1g2l_iz1g2l_jā1ž2v_ne1ž2v_ie1ž2v_no1ž2v_pa1ž2v_sa1ž2v_uz1ž2v_ap1ž2v_at1ž2v_iz1ž2v_jā1š2ļ_ne1š2ļ_ie1š2ļ_no1š2ļ_pa1š2ļ_sa1š2ļ_uz1š2ļ_ap1š2ļ_at1š2ļ_iz1š2ļ_jā1s2f_ne1s2f_ie1s2f_no1s2f_pa1s2f_sa1s2f_uz1s2f_ap1s2f_at1s2f_iz1s2f_jā1š2t_ne1š2t_ie1š2t_no1š2t_pa1š2t_sa1š2t_uz1š2t_ap1š2t_at1š2t_iz1š2t_jā1b2r_ne1b2r_ie1b2r_no1b2r_pa1b2r_sa1b2r_uz1b2r_ap1b2r_at1b2r_iz1b2r_jā1š2r_ne1š2r_ie1š2r_no1š2r_pa1š2r_sa1š2r_uz1š2r_ap1š2r_at1š2r_iz1š2r_jā1š2v_ne1š2v_ie1š2v_no1š2v_pa1š2v_sa1š2v_uz1š2v_ap1š2v_at1š2v_iz1š2v_jā1s2t_ne1s2t_ie1s2t_no1s2t_pa1s2t_sa1s2t_uz1s2t_ap1s2t_at1s2t_iz1s2t_jā1p2r_ne1p2r_ie1p2r_no1p2r_pa1p2r_sa1p2r_uz1p2r_ap1p2r_at1p2r_iz1p2r_jā1g2ļ_ne1g2ļ_ie1g2ļ_no1g2ļ_pa1g2ļ_sa1g2ļ_uz1g2ļ_ap1g2ļ_at1g2ļ_iz1g2ļ_jā1š2k_ne1š2k_ie1š2k_no1š2k_pa1š2k_sa1š2k_uz1š2k_ap1š2k_at1š2k_iz1š2k_jā1p2s_ne1p2s_ie1p2s_no1p2s_pa1p2s_sa1p2s_uz1p2s_ap1p2s_at1p2s_iz1p2s_jā1k2l_ne1k2l_ie1k2l_no1k2l_pa1k2l_sa1k2l_uz1k2l_ap1k2l_at1k2l_iz1k2l_jā1g2r_ne1g2r_ie1g2r_no1g2r_pa1g2r_sa1g2r_uz1g2r_ap1g2r_at1g2r_iz1g2r_jā1š2ķ_ne1š2ķ_ie1š2ķ_no1š2ķ_pa1š2ķ_sa1š2ķ_uz1š2ķ_ap1š2ķ_at1š2ķ_iz1š2ķ_jā1p2n_ne1p2n_ie1p2n_no1p2n_pa1p2n_sa1p2n_uz1p2n_ap1p2n_at1p2n_iz1p2n_jā1s2v_ne1s2v_ie1s2v_no1s2v_pa1s2v_sa1s2v_uz1s2v_ap1s2v_at1s2v_iz1s2v_jā1d2r_ne1d2r_ie1d2r_no1d2r_pa1d2r_sa1d2r_uz1d2r_ap1d2r_at1d2r_iz1d2r_jā1p2l_ne1p2l_ie1p2l_no1p2l_pa1p2l_sa1p2l_uz1p2l_ap1p2l_at1p2l_iz1p2l_jā1d2v_ne1d2v_ie1d2v_no1d2v_pa1d2v_sa1d2v_uz1d2v_ap1d2v_at1d2v_iz1d2v_jā1š2l_ne1š2l_ie1š2l_no1š2l_pa1š2l_sa1š2l_uz1š2l_ap1š2l_at1š2l_iz1š2l_jā1s2k_ne1s2k_ie1s2k_no1s2k_pa1s2k_sa1s2k_uz1s2k_ap1s2k_at1s2k_iz1s2k_jā1k2v_ne1k2v_ie1k2v_no1k2v_pa1k2v_sa1k2v_uz1k2v_ap1k2v_at1k2v_iz1k2v_jā1z2v_ne1z2v_ie1z2v_no1z2v_pa1z2v_sa1z2v_uz1z2v_ap1z2v_at1z2v_iz1z2v_jā1k2s_ne1k2s_ie1k2s_no1k2s_pa1k2s_sa1k2s_uz1k2s_ap1k2s_at1k2s_iz1k2s_jā1p2t_ne1p2t_ie1p2t_no1p2t_pa1p2t_sa1p2t_uz1p2t_ap1p2t_at1p2t_iz1p2t_jā1z2n_ne1z2n_ie1z2n_no1z2n_pa1z2n_sa1z2n_uz1z2n_ap1z2n_at1z2n_iz1z2n_jā1k2r_ne1k2r_ie1k2r_no1k2r_pa1k2r_sa1k2r_uz1k2r_ap1k2r_at1k2r_iz1k2r_jā1f2r_ne1f2r_ie1f2r_no1f2r_pa1f2r_sa1f2r_uz1f2r_ap1f2r_at1f2r_iz1f2r_jā1s2h_ne1s2h_ie1s2h_no1s2h_pa1s2h_sa1s2h_uz1s2h_ap1s2h_at1s2h_iz1s2h_jā1ž2ņ_ne1ž2ņ_ie1ž2ņ_no1ž2ņ_pa1ž2ņ_sa1ž2ņ_uz1ž2ņ_ap1ž2ņ_at1ž2ņ_iz1ž2ņ_jā1d2d_ne1d2d_ie1d2d_no1d2d_pa1d2d_sa1d2d_uz1d2d_ap1d2d_at1d2d_iz1d2d_jā1v2j_ne1v2j_ie1v2j_no1v2j_pa1v2j_sa1v2j_uz1v2j_ap1v2j_at1v2j_iz1v2j_jā1f2j_ne1f2j_ie1f2j_no1f2j_pa1f2j_sa1f2j_uz1f2j_ap1f2j_at1f2j_iz1f2j_jā1p2j_ne1p2j_ie1p2j_no1p2j_pa1p2j_sa1p2j_uz1p2j_ap1p2j_at1p2j_iz1p2j_jā1b2ļ_ne1b2ļ_ie1b2ļ_no1b2ļ_pa1b2ļ_sa1b2ļ_uz1b2ļ_ap1b2ļ_at1b2ļ_iz1b2ļ_jā1g2n_ne1g2n_ie1g2n_no1g2n_pa1g2n_sa1g2n_uz1g2n_ap1g2n_at1g2n_iz1g2n_jā1h2r_ne1h2r_ie1h2r_no1h2r_pa1h2r_sa1h2r_uz1h2r_ap1h2r_at1h2r_iz1h2r_jā1s2n_ne1s2n_ie1s2n_no1s2n_pa1s2n_sa1s2n_uz1s2n_ap1s2n_at1s2n_iz1s2n_jā1ž2m_ne1ž2m_ie1ž2m_no1ž2m_pa1ž2m_sa1ž2m_uz1ž2m_ap1ž2m_at1ž2m_iz1ž2m_jā1d2ž_ne1d2ž_ie1d2ž_no1d2ž_pa1d2ž_sa1d2ž_uz1d2ž_ap1d2ž_at1d2ž_iz1d2ž_jā1k2c_ne1k2c_ie1k2c_no1k2c_pa1k2c_sa1k2c_uz1k2c_ap1k2c_at1k2c_iz1k2c_jā1k2ņ_ne1k2ņ_ie1k2ņ_no1k2ņ_pa1k2ņ_sa1k2ņ_uz1k2ņ_ap1k2ņ_at1k2ņ_iz1k2ņ_jā1š2m_ne1š2m_ie1š2m_no1š2m_pa1š2m_sa1š2m_uz1š2m_ap1š2m_at1š2m_iz1š2m_jā1g2v_ne1g2v_ie1g2v_no1g2v_pa1g2v_sa1g2v_uz1g2v_ap1g2v_at1g2v_iz1g2v_jā1h2l_ne1h2l_ie1h2l_no1h2l_pa1h2l_sa1h2l_uz1h2l_ap1h2l_at1h2l_iz1h2l_jā1k2ļ_ne1k2ļ_ie1k2ļ_no1k2ļ_pa1k2ļ_sa1k2ļ_uz1k2ļ_ap1k2ļ_at1k2ļ_iz1k2ļ_jā1s2l_ne1s2l_ie1s2l_no1s2l_pa1s2l_sa1s2l_uz1s2l_ap1s2l_at1s2l_iz1s2l_jā1t2v_ne1t2v_ie1t2v_no1t2v_pa1t2v_sa1t2v_uz1t2v_ap1t2v_at1t2v_iz1t2v_jā1š2ņ_ne1š2ņ_ie1š2ņ_no1š2ņ_pa1š2ņ_sa1š2ņ_uz1š2ņ_ap1š2ņ_at1š2ņ_iz1š2ņ_jā1š2p_ne1š2p_ie1š2p_no1š2p_pa1š2p_sa1š2p_uz1š2p_ap1š2p_at1š2p_iz1š2p_jā1d2z_ne1d2z_ie1d2z_no1d2z_pa1d2z_sa1d2z_uz1d2z_ap1d2z_at1d2z_iz1d2z_jā1f2l_ne1f2l_ie1f2l_no1f2l_pa1f2l_sa1f2l_uz1f2l_ap1f2l_at1f2l_iz1f2l_jā1k2n_ne1k2n_ie1k2n_no1k2n_pa1k2n_sa1k2n_uz1k2n_ap1k2n_at1k2n_iz1k2n_jā1p2ļ_ne1p2ļ_ie1p2ļ_no1p2ļ_pa1p2ļ_sa1p2ļ_uz1p2ļ_ap1p2ļ_at1p2ļ_iz1p2ļ_jā1k2b_ne1k2b_ie1k2b_no1k2b_pa1k2b_sa1k2b_uz1k2b_ap1k2b_at1k2b_iz1k2b_jā1s2m_ne1s2m_ie1s2m_no1s2m_pa1s2m_sa1s2m_uz1s2m_ap1s2m_at1s2m_iz1s2m_jā1m2n_ne1m2n_ie1m2n_no1m2n_pa1m2n_sa1m2n_uz1m2n_ap1m2n_at1m2n_iz1m2n_jā1š2n_ne1š2n_ie1š2n_no1š2n_pa1š2n_sa1š2n_uz1š2n_ap1š2n_at1š2n_iz1š2n_jā1v2r_ne1v2r_ie1v2r_no1v2r_pa1v2r_sa1v2r_uz1v2r_ap1v2r_at1v2r_iz1v2r_jā1b2l_ne1b2l_ie1b2l_no1b2l_pa1b2l_sa1b2l_uz1b2l_ap1b2l_at1b2l_iz1b2l_pie3a2_aiz3a2_bez3a2_pār3a2_eks3a2_vis3a2_pie3ā2_aiz3ā2_bez3ā2_pār3ā2_eks3ā2_vis3ā2_pie3e2_aiz3e2_bez3e2_pār3e2_eks3e2_vis3e2_pie3ē2_aiz3ē2_bez3ē2_pār3ē2_eks3ē2_vis3ē2_pie3i2_aiz3i2_bez3i2_pār3i2_eks3i2_vis3i2_pie3ī2_aiz3ī2_bez3ī2_pār3ī2_eks3ī2_vis3ī2_pie3o2_aiz3o2_bez3o2_pār3o2_eks3o2_vis3o2_pie3u2_aiz3u2_bez3u2_pār3u2_eks3u2_vis3u2_pie3ū2_aiz3ū2_bez3ū2_pār3ū2_eks3ū2_vis3ū2_jā3ie1_jā3iz1_jā3no1_ne3ap1_ne3ie1_ne3at1_ne3in1_ne3iz1_ne3uz1g2š1galk2š1galvēs2t1nvēs2t1ksa2lds_sa2l2d1pir2m1rpir2m1kot2r1r2ot2r1k2_adā2m3apak2š3kār2t3n_at3e2j_vie2n1", + 8 : "_pie1s2p_aiz1s2p_bez1s2p_pār1s2p_eks1s2p_vis1s2p_pie1t2r_aiz1t2r_bez1t2r_pār1t2r_eks1t2r_vis1t2r_pie1s2c_aiz1s2c_bez1s2c_pār1s2c_eks1s2c_vis1s2c_jā1s2tj_ne1s2tj_ie1s2tj_no1s2tj_pa1s2tj_sa1s2tj_uz1s2tj_ap1s2tj_at1s2tj_iz1s2tj_pie1g2l_aiz1g2l_bez1g2l_pār1g2l_eks1g2l_vis1g2l_pie1ž2v_aiz1ž2v_bez1ž2v_pār1ž2v_eks1ž2v_vis1ž2v_pie1š2ļ_aiz1š2ļ_bez1š2ļ_pār1š2ļ_eks1š2ļ_vis1š2ļ_pie1s2f_aiz1s2f_bez1s2f_pār1s2f_eks1s2f_vis1s2f_pie1š2t_aiz1š2t_bez1š2t_pār1š2t_eks1š2t_vis1š2t_jā1s2tr_ne1s2tr_ie1s2tr_no1s2tr_pa1s2tr_sa1s2tr_uz1s2tr_ap1s2tr_at1s2tr_iz1s2tr_pie1b2r_aiz1b2r_bez1b2r_pār1b2r_eks1b2r_vis1b2r_pie1š2r_aiz1š2r_bez1š2r_pār1š2r_eks1š2r_vis1š2r_pie1š2v_aiz1š2v_bez1š2v_pār1š2v_eks1š2v_vis1š2v_pie1s2t_aiz1s2t_bez1s2t_pār1s2t_eks1s2t_vis1s2t_pie1p2r_aiz1p2r_bez1p2r_pār1p2r_eks1p2r_vis1p2r_pie1g2ļ_aiz1g2ļ_bez1g2ļ_pār1g2ļ_eks1g2ļ_vis1g2ļ_pie1š2k_aiz1š2k_bez1š2k_pār1š2k_eks1š2k_vis1š2k_pie1p2s_aiz1p2s_bez1p2s_pār1p2s_eks1p2s_vis1p2s_pie1k2l_aiz1k2l_bez1k2l_pār1k2l_eks1k2l_vis1k2l_pie1g2r_aiz1g2r_bez1g2r_pār1g2r_eks1g2r_vis1g2r_pie1š2ķ_aiz1š2ķ_bez1š2ķ_pār1š2ķ_eks1š2ķ_vis1š2ķ_pie1p2n_aiz1p2n_bez1p2n_pār1p2n_eks1p2n_vis1p2n_pie1s2v_aiz1s2v_bez1s2v_pār1s2v_eks1s2v_vis1s2v_jā1s2pr_ne1s2pr_ie1s2pr_no1s2pr_pa1s2pr_sa1s2pr_uz1s2pr_ap1s2pr_at1s2pr_iz1s2pr_pie1d2r_aiz1d2r_bez1d2r_pār1d2r_eks1d2r_vis1d2r_pie1p2l_aiz1p2l_bez1p2l_pār1p2l_eks1p2l_vis1p2l_pie1d2v_aiz1d2v_bez1d2v_pār1d2v_eks1d2v_vis1d2v_pie1š2l_aiz1š2l_bez1š2l_pār1š2l_eks1š2l_vis1š2l_pie1s2k_aiz1s2k_bez1s2k_pār1s2k_eks1s2k_vis1s2k_jā1s2kv_ne1s2kv_ie1s2kv_no1s2kv_pa1s2kv_sa1s2kv_uz1s2kv_ap1s2kv_at1s2kv_iz1s2kv_pie1k2v_aiz1k2v_bez1k2v_pār1k2v_eks1k2v_vis1k2v_pie1z2v_aiz1z2v_bez1z2v_pār1z2v_eks1z2v_vis1z2v_pie1k2s_aiz1k2s_bez1k2s_pār1k2s_eks1k2s_vis1k2s_pie1p2t_aiz1p2t_bez1p2t_pār1p2t_eks1p2t_vis1p2t_pie1z2n_aiz1z2n_bez1z2n_pār1z2n_eks1z2n_vis1z2n_pie1k2r_aiz1k2r_bez1k2r_pār1k2r_eks1k2r_vis1k2r_jā1s2kr_ne1s2kr_ie1s2kr_no1s2kr_pa1s2kr_sa1s2kr_uz1s2kr_ap1s2kr_at1s2kr_iz1s2kr_pie1f2r_aiz1f2r_bez1f2r_pār1f2r_eks1f2r_vis1f2r_pie1s2h_aiz1s2h_bez1s2h_pār1s2h_eks1s2h_vis1s2h_pie1ž2ņ_aiz1ž2ņ_bez1ž2ņ_pār1ž2ņ_eks1ž2ņ_vis1ž2ņ_pie1d2d_aiz1d2d_bez1d2d_pār1d2d_eks1d2d_vis1d2d_jā1š2pr_ne1š2pr_ie1š2pr_no1š2pr_pa1š2pr_sa1š2pr_uz1š2pr_ap1š2pr_at1š2pr_iz1š2pr_pie1v2j_aiz1v2j_bez1v2j_pār1v2j_eks1v2j_vis1v2j_pie1f2j_aiz1f2j_bez1f2j_pār1f2j_eks1f2j_vis1f2j_pie1p2j_aiz1p2j_bez1p2j_pār1p2j_eks1p2j_vis1p2j_pie1b2ļ_aiz1b2ļ_bez1b2ļ_pār1b2ļ_eks1b2ļ_vis1b2ļ_pie1g2n_aiz1g2n_bez1g2n_pār1g2n_eks1g2n_vis1g2n_pie1h2r_aiz1h2r_bez1h2r_pār1h2r_eks1h2r_vis1h2r_pie1s2n_aiz1s2n_bez1s2n_pār1s2n_eks1s2n_vis1s2n_pie1ž2m_aiz1ž2m_bez1ž2m_pār1ž2m_eks1ž2m_vis1ž2m_pie1d2ž_aiz1d2ž_bez1d2ž_pār1d2ž_eks1d2ž_vis1d2ž_pie1k2c_aiz1k2c_bez1k2c_pār1k2c_eks1k2c_vis1k2c_pie1k2ņ_aiz1k2ņ_bez1k2ņ_pār1k2ņ_eks1k2ņ_vis1k2ņ_pie1š2m_aiz1š2m_bez1š2m_pār1š2m_eks1š2m_vis1š2m_pie1g2v_aiz1g2v_bez1g2v_pār1g2v_eks1g2v_vis1g2v_pie1h2l_aiz1h2l_bez1h2l_pār1h2l_eks1h2l_vis1h2l_pie1k2ļ_aiz1k2ļ_bez1k2ļ_pār1k2ļ_eks1k2ļ_vis1k2ļ_pie1s2l_aiz1s2l_bez1s2l_pār1s2l_eks1s2l_vis1s2l_pie1t2v_aiz1t2v_bez1t2v_pār1t2v_eks1t2v_vis1t2v_pie1š2ņ_aiz1š2ņ_bez1š2ņ_pār1š2ņ_eks1š2ņ_vis1š2ņ_pie1š2p_aiz1š2p_bez1š2p_pār1š2p_eks1š2p_vis1š2p_pie1d2z_aiz1d2z_bez1d2z_pār1d2z_eks1d2z_vis1d2z_pie1f2l_aiz1f2l_bez1f2l_pār1f2l_eks1f2l_vis1f2l_pie1k2n_aiz1k2n_bez1k2n_pār1k2n_eks1k2n_vis1k2n_pie1p2ļ_aiz1p2ļ_bez1p2ļ_pār1p2ļ_eks1p2ļ_vis1p2ļ_jā1s2pļ_ne1s2pļ_ie1s2pļ_no1s2pļ_pa1s2pļ_sa1s2pļ_uz1s2pļ_ap1s2pļ_at1s2pļ_iz1s2pļ_jā1s2kl_ne1s2kl_ie1s2kl_no1s2kl_pa1s2kl_sa1s2kl_uz1s2kl_ap1s2kl_at1s2kl_iz1s2kl_pie1k2b_aiz1k2b_bez1k2b_pār1k2b_eks1k2b_vis1k2b_pie1s2m_aiz1s2m_bez1s2m_pār1s2m_eks1s2m_vis1s2m_pie1m2n_aiz1m2n_bez1m2n_pār1m2n_eks1m2n_vis1m2n_pie1š2n_aiz1š2n_bez1š2n_pār1š2n_eks1š2n_vis1š2n_pie1v2r_aiz1v2r_bez1v2r_pār1v2r_eks1v2r_vis1v2r_pie1b2l_aiz1b2l_bez1b2l_pār1b2l_eks1b2l_vis1b2l2b3dams_2c3dams_2č3dams_2d3dams_2f3dams_2g3dams_2ģ3dams_2h3dams_2j3dams_2k3dams_2ķ3dams_2l3dams_2ļ3dams_2m3dams_2n3dams_2ņ3dams_2p3dams_2r3dams_2s3dams_2š3dams_2t3dams_2v3dams_2z3dams_2ž3dams_2b3gans_2c3gans_2č3gans_2d3gans_2f3gans_2g3gans_2ģ3gans_2h3gans_2j3gans_2k3gans_2ķ3gans_2l3gans_2ļ3gans_2m3gans_2n3gans_2ņ3gans_2p3gans_2r3gans_2s3gans_2š3gans_2t3gans_2v3gans_2z3gans_2ž3gans__ne3aiz14d5ze1me_tur2p1mil2k1tiemē1ne2š1pa2t3stāpa2s2t3kpa2s2t3mpa2r3ketpir2m2s1ak3me4ņ3aug2s2t3bal2t3ma", + 9 : "d_vi1s2a_d_vi1s2ā_d_vi1s2i_d_vi1s2u__pie1s2tj_aiz1s2tj_bez1s2tj_pār1s2tj_eks1s2tj_vis1s2tj_pie1s2tr_aiz1s2tr_bez1s2tr_pār1s2tr_eks1s2tr_vis1s2tr_pie1s2pr_aiz1s2pr_bez1s2pr_pār1s2pr_eks1s2pr_vis1s2pr_pie1s2kv_aiz1s2kv_bez1s2kv_pār1s2kv_eks1s2kv_vis1s2kv_pie1s2kr_aiz1s2kr_bez1s2kr_pār1s2kr_eks1s2kr_vis1s2kr_pie1š2pr_aiz1š2pr_bez1š2pr_pār1š2pr_eks1š2pr_vis1š2pr_pie1s2pļ_aiz1s2pļ_bez1s2pļ_pār1s2pļ_eks1s2pļ_vis1s2pļ_pie1s2kl_aiz1s2kl_bez1s2kl_pār1s2kl_eks1s2kl_vis1s2kl2b3da3ma_2c3da3ma_2č3da3ma_2d3da3ma_2f3da3ma_2g3da3ma_2ģ3da3ma_2h3da3ma_2j3da3ma_2k3da3ma_2ķ3da3ma_2l3da3ma_2ļ3da3ma_2m3da3ma_2n3da3ma_2ņ3da3ma_2p3da3ma_2r3da3ma_2s3da3ma_2š3da3ma_2t3da3ma_2v3da3ma_2z3da3ma_2ž3da3ma_2b3ga3na_2c3ga3na_2č3ga3na_2d3ga3na_2f3ga3na_2g3ga3na_2ģ3ga3na_2h3ga3na_2j3ga3na_2k3ga3na_2ķ3ga3na_2l3ga3na_2ļ3ga3na_2m3ga3na_2n3ga3na_2ņ3ga3na_2p3ga3na_2r3ga3na_2s3ga3na_2š3ga3na_2t3ga3na_2v3ga3na_2z3ga3na_2ž3ga3na_2b3nieks_2c3nieks_2č3nieks_2d3nieks_2f3nieks_2g3nieks_2ģ3nieks_2h3nieks_2j3nieks_2k3nieks_2ķ3nieks_2l3nieks_2ļ3nieks_2m3nieks_2n3nieks_2ņ3nieks_2p3nieks_2r3nieks_2s3nieks_2š3nieks_2t3nieks_2v3nieks_2z3nieks_2ž3nieks_2b3nī3ca_2c3nī3ca_2č3nī3ca_2d3nī3ca_2f3nī3ca_2g3nī3ca_2ģ3nī3ca_2h3nī3ca_2j3nī3ca_2k3nī3ca_2ķ3nī3ca_2l3nī3ca_2ļ3nī3ca_2m3nī3ca_2n3nī3ca_2ņ3nī3ca_2p3nī3ca_2r3nī3ca_2s3nī3ca_2š3nī3ca_2t3nī3ca_2v3nī3ca_2z3nī3ca_2ž3nī3ca_2b3ša3na_2c3ša3na_2č3ša3na_2d3ša3na_2f3ša3na_2g3ša3na_2ģ3ša3na_2h3ša3na_2j3ša3na_2k3ša3na_2ķ3ša3na_2l3ša3na_2ļ3ša3na_2m3ša3na_2n3ša3na_2ņ3ša3na_2p3ša3na_2r3ša3na_2s3ša3na_2š3ša3na_2t3ša3na_2v3ša3na_2z3ša3na_2ž3ša3na_2b3ta3la_2c3ta3la_2č3ta3la_2d3ta3la_2f3ta3la_2g3ta3la_2ģ3ta3la_2h3ta3la_2j3ta3la_2k3ta3la_2ķ3ta3la_2l3ta3la_2ļ3ta3la_2m3ta3la_2n3ta3la_2ņ3ta3la_2p3ta3la_2r3ta3la_2s3ta3la_2š3ta3la_2t3ta3la_2v3ta3la_2z3ta3la_2ž3ta3la_2b3tu3ve_2c3tu3ve_2č3tu3ve_2d3tu3ve_2f3tu3ve_2g3tu3ve_2ģ3tu3ve_2h3tu3ve_2j3tu3ve_2k3tu3ve_2ķ3tu3ve_2l3tu3ve_2ļ3tu3ve_2m3tu3ve_2n3tu3ve_2ņ3tu3ve_2p3tu3ve_2r3tu3ve_2s3tu3ve_2š3tu3ve_2t3tu3ve_2v3tu3ve_2z3tu3ve_2ž3tu3ve__priek2š1_spil2g1tpa2s2t2s_pa2r2k2s_", + 10 : "d_vi1s2os_2b3da3mās_2c3da3mās_2č3da3mās_2d3da3mās_2f3da3mās_2g3da3mās_2ģ3da3mās_2h3da3mās_2j3da3mās_2k3da3mās_2ķ3da3mās_2l3da3mās_2ļ3da3mās_2m3da3mās_2n3da3mās_2ņ3da3mās_2p3da3mās_2r3da3mās_2s3da3mās_2š3da3mās_2t3da3mās_2v3da3mās_2z3da3mās_2ž3da3mās_2b3nie3ce_2c3nie3ce_2č3nie3ce_2d3nie3ce_2f3nie3ce_2g3nie3ce_2ģ3nie3ce_2h3nie3ce_2j3nie3ce_2k3nie3ce_2ķ3nie3ce_2l3nie3ce_2ļ3nie3ce_2m3nie3ce_2n3nie3ce_2ņ3nie3ce_2p3nie3ce_2r3nie3ce_2s3nie3ce_2š3nie3ce_2t3nie3ce_2v3nie3ce_2z3nie3ce_2ž3nie3ce_2b3ša3nās_2c3ša3nās_2č3ša3nās_2d3ša3nās_2f3ša3nās_2g3ša3nās_2ģ3ša3nās_2h3ša3nās_2j3ša3nās_2k3ša3nās_2ķ3ša3nās_2l3ša3nās_2ļ3ša3nās_2m3ša3nās_2n3ša3nās_2ņ3ša3nās_2p3ša3nās_2r3ša3nās_2s3ša3nās_2š3ša3nās_2t3ša3nās_2v3ša3nās_2z3ša3nās_2ž3ša3nās_1pa1d2smit", + 11 : "d_vi1s2iem_2b3da3mies_2c3da3mies_2č3da3mies_2d3da3mies_2f3da3mies_2g3da3mies_2ģ3da3mies_2h3da3mies_2j3da3mies_2k3da3mies_2ķ3da3mies_2l3da3mies_2ļ3da3mies_2m3da3mies_2n3da3mies_2ņ3da3mies_2p3da3mies_2r3da3mies_2s3da3mies_2š3da3mies_2t3da3mies_2v3da3mies_2z3da3mies_2ž3da3mies_" + } +}; \ No newline at end of file diff --git a/resources/viewer/hyphenate/patterns/ml.js b/resources/viewer/hyphenate/patterns/ml.js index 03e024a3da..d22b7a05bc 100644 --- a/resources/viewer/hyphenate/patterns/ml.js +++ b/resources/viewer/hyphenate/patterns/ml.js @@ -1,14 +1,14 @@ -// For questions about the Malayalam hyphenation patterns +// For questions about the Malayalam hyphenation patterns // ask Santhosh Thottingal (santhosh dot thottingal at gmail dot com) -Hyphenator.languages.ml = { +Hyphenator.languages['ml'] = { leftmin : 2, rightmin : 2, shortestPattern : 1, longestPattern : 3, - specialChars : unescape('ആഅഇഈഉഊഋഎഏഐഒഔകഗഖഘങചഛജഝഞടഠഡഢണതഥദധനപഫബഭമയരലവശഷസഹളഴറിീാുൂൃെേൊാോൈൌൗ്ഃം%u200D'), + specialChars : unescape("അആഇഈഉഊഋൠഌൡഎഏഐഒഓഔാിീുൂൃെേൈൊോൌൗകഖഗഘങചഛജഝഞടഠഡഢണതഥദധനപഫബഭമയരറലളഴവശഷസഹഃം്ൺൻർൽൾൿ%u200D"), patterns : { - 2 : 'അ1ആ1ഇ1ഈ1ഉ1ഊ1ഋ1എ1ഏ1ഐ1ഒ1ഔ1ി1ാ1ീ1ു1ൂ1ൃ1െ1േ1ൊ1ോ1ൌ1ൗ1്2ഃ1ം11ക1ഗ1ഖ1ഘ1ങ1ച1ഛ1ജ1ഝ1ഞ1ട1ഠ1ഡ1ഢ1ണ1ത1ഥ1ദ1ധ1ന1പ1ഫ1ബ1ഭ1മ1യ1ര1ല1വ1ശ1ഷ1സ1ഹ1ള1ഴ1റ', - 3 : '2ഃ12ം1', - 4 : unescape('2ന്%u200D2ര്%u200D2ല്%u200D2ള്%u200D2ണ്%u200D') + 2 : "ാ1ി1ീ1ു1ൂ1ൃ1െ1േ1ൈ1ൊ1ോ1ൌ1ൗ11ക1ഖ1ഗ1ഘ1ങ1ച1ഛ1ജ1ഝ1ഞ1ട1ഠ1ഡ1ഢ1ണ1ത1ഥ1ദ1ധ1ന1പ1ഫ1ബ1ഭ1മ1യ1ര1റ1ല1ള1ഴ1വ1ശ1ഷ1സ1ഹ2ൺ2ൻ2ർ2ൽ2ൾ2ൿ", + 3 : "1അ11ആ11ഇ11ഈ11ഉ11ഊ11ഋ11ൠ11ഌ11ൡ11എ11ഏ11ഐ11ഒ11ഓ11ഔ12ഃ12ം12്2ന്2ര്2ള്2ല്2ക്2ണ്2", + 4 : unescape("2ന്%u200D2ര്%u200D2ല്%u200D2ള്%u200D2ണ്%u200D2ക്%u200D") } }; diff --git a/resources/viewer/hyphenate/patterns/nl.js b/resources/viewer/hyphenate/patterns/nl.js index 98ce8bfceb..e773367cc4 100644 --- a/resources/viewer/hyphenate/patterns/nl.js +++ b/resources/viewer/hyphenate/patterns/nl.js @@ -1,11 +1,11 @@ -// For questions about the dutch hyphenation patterns +// For questions about the dutch hyphenation patterns // ask Remco Bloemen (remco dot bloemen at gmail dot com) -Hyphenator.languages.nl = { +Hyphenator.languages['nl'] = { leftmin : 2, rightmin : 2, shortestPattern : 1, longestPattern : 8, - specialChars : '', + specialChars : "", patterns : { 2 : "1b1çè1ê13ëî31ï3ñ1q1ü1z", 3 : "_a4_b4_c4_d4_e4_é2_f4_g4_h2_i4_j4_k4_l4_m4_n4_o4_p4_r4_s4_t4_u4_w4_y2_z44a_4aea2ë2aha2qa1ta4üä3hä3r4b_3ba4bbb4o4bvby34bz4c_1ca2cbc4d1ce1céc3g3cic3j1coc3w1cy4d_1da2db1de3dè1di1do2ds2dt1du2dv2dw1dy2dz4e_4eae1de4ee2ie3oé3aé1dé1gé3hé3jé3né3pé3ré1t4ècè2lè2sè5tê2pê5t4ë_ë2bë3cë3dëe2ë3jë1l5ënë3pë2së1t4f_1fa4fbf1c4fd1fe1fé3fè3fê1fif1jf1n1fo3föfr44ft1fu4fv2fz4g_1ga4gd1ge1gé3gè1gigl41go4gs4gt1gu4gv1gy2gz4h_4hb2hdh4eh3hh3j2hlh1n2hr4hs2ht4i_i1a4ic4iei1è4ifi1hi3ii2j4ik4is4iti5w4izît42ï_ï5aï1cï1dï3oï1tï5z4j_j3bj1cj1gj3hj3j2jkj3r2jsj3vj1w4k_1ka1ke1kik1j1ko2ks4kt1ku2kû2kvky32kz4l_4ld1li2lm4lp4lsl1w1ly4lz4m_1ma4mb1me3mé3mè3mê1mi1mo2ms2mt1mu2mv1my2mz4n_1na2nb4nd1ne3né2ng1nin3n2ns2nt2nvnx31ny2nz4o_4oao4e2oë4oio3ï2oko1ö2oso2v4owo4xö3lö1pö4rös44p_1pé3pêpr42ps2pv5qequ44r_r1cr1gr3hr3lr1mr1p4rs4rtr1wr3x4rz4s_1sc3se3sé3sès1h1sisj2s1ms4qs2t1sus4y4t_1te1tétè33titr44ts4tv4tzu1a4ucu1du3èu1hu2i2uk4up4uzü4bü1n1v22v_v4bv4e3viv3j3vlv3tvy32w_2wbw1cw1gw1hw1j2wnw1p2ws2wtwu2w1wx1cx4ex1fx1hx3lx1mx1px3rx1tx3wxy3y1ay1cy1ey3èy1fy1gy1hy1iy1oy1py1rys3y1t4z_4zb4zc4zdz4e4zf4zgz2i4zm2zs2zvz4w5zy", diff --git a/resources/viewer/hyphenate/patterns/no-nb.js b/resources/viewer/hyphenate/patterns/no-nb.js new file mode 100644 index 0000000000..b3b111bab7 --- /dev/null +++ b/resources/viewer/hyphenate/patterns/no-nb.js @@ -0,0 +1,131 @@ +// The norwegian hyphenation patterns were retrieved from +// http://www.ctan.org/language/hyph-utf8/tex/generic/hyph-utf8/patterns/tex/hyph-no.tex +// and adapted to hyphenator.js format by Erik Erik Seierstad (erik dot seierstad at gmail dot com). + +// % This file is part of hyph-utf8 package and resulted from +// % semi-manual conversions of hyphenation patterns into UTF-8 in June 2008. +// % +// % Source: nohyphbx.tex (2007-02-07) +// % Author: +// % +// % The above mentioned file should become obsolete, +// % and the author of the original file should preferaby modify this file instead. +// % +// % Modificatios were needed in order to support native UTF-8 engines, +// % but functionality (hopefully) didn't change in any way, at least not intentionally. +// % This file is no longer stand-alone; at least for 8-bit engines +// % you probably want to use loadhyph-foo.tex (which will load this file) instead. +// % +// % Modifications were done by Jonathan Kew, Mojca Miklavec & Arthur Reutenauer +// % with help & support from: +// % - Karl Berry, who gave us free hands and all resources +// % - Taco Hoekwater, with useful macros +// % - Hans Hagen, who did the unicodifisation of patterns already long before +// % and helped with testing, suggestions and bug reports +// % - Norbert Preining, who tested & integrated patterns into TeX Live +// % +// % However, the "copyright/copyleft" owner of patterns remains the original author. +// % +// % The copyright statement of this file is thus: +// % +// % Do with this file whatever needs to be done in future for the sake of +// % "a better world" as long as you respect the copyright of original file. +// % If you're the original author of patterns or taking over a new revolution, +// % plese remove all of the TUG comments & credits that we added here - +// % you are the Queen / the King, we are only the servants. +// % +// % If you want to change this file, rather than uploading directly to CTAN, +// % we would be grateful if you could send it to us (http://tug.org/tex-hyphen) +// % or ask for credentials for SVN repository and commit it yourself; +// % we will then upload the whole "package" to CTAN. +// % +// % Before a new "pattern-revolution" starts, +// % please try to follow some guidelines if possible: +// % +// % - \lccode is *forbidden*, and I really mean it +// % - all the patterns should be in UTF-8 +// % - the only "allowed" TeX commands in this file are: \patterns, \hyphenation, +// % and if you really cannot do without, also \input and \message +// % - in particular, please no \catcode or \lccode changes, +// % they belong to loadhyph-foo.tex, +// % and no \lefthyphenmin and \righthyphenmin, +// % they have no influence here and belong elsewhere +// % - \begingroup and/or \endinput is not needed +// % - feel free to do whatever you want inside comments +// % +// % We know that TeX is extremely powerful, but give a stupid parser +// % at least a chance to read your patterns. +// % +// % For more unformation see +// % +// % http://tug.org/tex-hyphen +// % +// %------------------------------------------------------------------------------ +// % +// % TeX hyphenation patterns for Norwegian +// % +// % version of 2007-02-07. +// % Patterns of January 25, 2005, with later additions and changes +// % +// % Copyright (C) 2004, 2005 Rune Kleveland, Ole Michael Selberg. +// % Copying and distribution of this file, with or without modification, +// % are permitted in any medium without royalty provided the copyright +// % notice and this notice are preserved. +// % +// % Please send bugs or suggestions to tex-live (at) tug.org. +// % +// % Originally generated by a script written by Rune Kleveland +// % from dictionaries available from +// % http://folk.uio.no/runekl/dictionary.html. +// % +// % Adjusted manually by Ole Michael Selberg to prevent +// % numerous wrong hyphenations, especially in compounds. +// % +// % Changes from the former version of 2005-06-29: +// % 388 new patterns. Some old patterns have been deleted or changed. +// % +// % In Kleveland's nohyphb.tex there are 26017 patterns. +// % This version of the revised nohyphbx.tex contains 27149 patterns +// % --- plus 45 exceptions in the \hyphenation-list +// % (which you may change to suit your personal needs). +// % +// % To load these hyphenation patterns the parameters +// % of TeX must have the following minimum values: +// % trie_size = 33385 +// % trie_op_size = 815 +// % (The corresponding values for nohyphb.tex are +// % trie_size = 31900 trie_op_size = 636) +// % If you want to load more than one set of hyphenation +// % patterns the parameters have to be set to a value +// % larger than or equal to the sum of all required values +// % for each set. +// % +// % Notes on other Norwegian hyphenation pattern files, from Dag Langmyhr, +// % tex-live mail of 29 Jun 2005 11:26:21 +0200. +// % nohyph.tex -- manually created by Ivar Aavatsmark and others; +// % hyphenate according to pre-1973 rules; no longer recommended for use. +// % (Sometimes also known as nohyph1.tex.) +// % nohyph2.tex -- created by Dag and a student; the present file, +// % nohyphbx.tex, is more extensive and is recommended. + + + +Hyphenator.languages['no'] = Hyphenator.languages['no-nb'] = { + leftmin : 2, + rightmin : 2, + shortestPattern : 2, + longestPattern : 10, + specialChars : "æøå", + patterns : { + 3: "_a4_b6_c4_d6_e6_f4_g6_h4_i2_j4_k6_l6_m8_n8_o6_p6_r6_s6_t8_v6_y6_z4_æ8_ø6_å28aca1ha1ja1oa1ø2bc1be7bé6bg2bhbl26bnb2o4bpbr81by6cb4ccc2dc2lc1mcr81cuc6zcæ51da1de1di1do5dqdr48ds1du1dyd5z1dæ1dø2ea2ece1fe1he1je1ue1vey1é1aé1bé1dé1fé1gé1hé1ié1ké1lé1mé5oé1pé1ré1sé1té1vé5åè1r1fa1fe2ff1fi1fjfn61fo3fôfr22ft1fu1fy1fø4få1ga1ge1gé1gi1gjg1n1go1gu1gy1gåh2a4hc2hf2hh2hl2hnh4oh1p2hr4hthv4h6yh6å2ie2if2igi3hi1ii1j2ik4io2iri1ui5yi1øj1b2jdj2ej1f4jgj1hj2oj1pj1tj5vjy1j2ø2jå2kc1kekj22kkkl4kr6kv26ld1le7lè5lê2lg1li2ljl5q8lvl5wl3z1lø1mam1c1me2mé1mi1mom3q6ms1mu2mw1my5mæ1mø1må1nan1c6nd1ne1né6ng1ni2nk4nn1no7nón3q6ns1nun3w1nyn1z1nø2oa4oc2og2on2ooo4q2os2otow1ox3o1øo1åô4tó7tó8v1pa1pepl61po2pppr62ps1pu1pæqa5qu2r1c4rdr1j2rn4rsrx1r4z1se1sés1h1si1sjsl4s1ms1nsp2sv21sys4z1sæ1sø2tc1te1titr44ts6tt2tz1tæ2udu1hu1ju1uu1vu1wu1æ1vê8vs1vu1væw2aw1bwe2w1lw1mws5wy2w1zx7bx3fx7hx5kx1lx3rx7tx6uxy2y1by1cy1fy1hy1iy1j6yk2ysy1uy1vy1wy5æy5øz1cz1d1zez1fz1gz1kz1mz1pz5rz1sz1væ1fæg6æ2kø1bøg1ø1hø4iø1jø1o4øtå1aå1f2ågå1hå1iå1j6åmå3oås2å3uå1v", + 4: "_aa4_ai2_a6k_a6l_a6n_a6s_bl4_bæ2_ds4_ei2_ex4_gl6_gø2_ik2_i3ø_ji4_ks6_og4_om1_ph2_ps2_sk4_sn4_st6_sv8_sz6_sæ2_th2_tr6_ts2_u1i_u2n_u1o_u1p_u2t_vy4_xe2_ye4_ys4_yv6_zj8_øi5_øs2_å6e_å6f_å6g_å8l_å8m_å4t_å6va1ad4aafaa4gaa2ma1apaa2sa1ava5bhab1lab1raca5ack3a1co6ada1adgad1j2adl1admad5n1adv4aeaa4eda3ep6afa6afcaf4i6afo4agaa4gé4agoa5hiah4vai5øa7jea4jéa4jia6jl6ak_a1ka2akd2ake6akn2akva5kå2ale4alnalp22alsa1lå2amia2moam1s2anu6any2anøan7åao9aaog9a2oiao2pao4ra7péa1piap1j8apua1pyap7øa1ra1arba1re6arf2arsa1rya1rå6as_a1scas2has1la1soa1suas5å4at_a4té4ati2atsa1tuat5va1tya1tø4au_au3cau5i2auxa1va1avd1avg6avna1voav1r1avt2avua1waa5wea1wiay2aa5zua7å61b4aba3aba2d4bafba2k6bavba5z2b1bb3bab3bib4bøb6bå2b1d2beeb4efbe3gbe6i2bepb4er6beå2b5fbhu11b4ibi1dbi5gbio74bipb5khb5ljb6lu2b1mb7ni2boh2bojb4olboo61botbo6yb7plb2ro1bryb4rø6b1sbs4ebsk4b2smbså56b5t1b2u4bubbu1ibu1p4buv6buø2b1v4b5wbya23byiby5nby1s2byv1b4øbø4ebøf3bø2nbø1v1b4åbå6e1c4acab4ca4eca1tc1cicde6ce3dce1i1cel1cer2ch_2chb2chm4chn2chp8chs6chtch1vci1c3cidci2e2c6kck1ick1kck7rcku6cly4coa62cod6cof6cogco2mco2o2corc1pr5cru4c4s4c1tc6tacty54cu_2curcu6tcy2acys34daa2dafda1i2dap2dav4daø4d1c6d1dddø22deade7bde1c2dee2def2deg2deh2dei2dejd2erde1s2deu2dev2dey4deø2deå2d1fd5gid3go2d1h2dib4dih4dii2dij2dipd1jad1jodki6d5kjd3lad5lid5lod5lå2d1m8d1ndn6a2dof2dop2dov4doø2druds1lds1pdst4ds1v4d1td3tidt6jd7todtø8dtå4du1c3dug7duo3durdu1s2d1vd7vo2d1wdy9a2dyf2dyldy2t8dz_4dø_2døkd2ør2døsdøt31dåd1dåpe1ade1afe1ane1ape1are1aue1aveb3heb5se4caec4ce1cee8dée1dredæ4e3e2eea7ee3be2edee4n4efa4efi2efle2fn8efre8ft6efue3fæ4efø2ega6egm4egoeg2re1gø4egåei4cei7e4eii4eil4eime4ip2eir2eise1ki2ekke1kl4ekne1kue5kye3kæe1køe1kå2eliel1jelk2el5n2elæ2elø4em_6emd8emee5my6emø2ena4enb2eno2enp2enu4enw4enåe3o6eo3aeo5de2oke2oleo2peo1s2e1pep2l4erbe1ree8ré2erg2erhe1ri2ern2ero2erp2err2erue1ræ2es_e1sa2esee1sue1taet1c2ete4eté4eth2eti6etlet5m2etnets14etz4etæe1tøe1tåeu4ae8ufeu4heu2leum2e2ure2use2vjev1se2vøew3aey5ke1yre3zie1zue1æ2eær3e1ø4eøy4e1å6eåk4é5e8é2rjése2ê6raê1reêr7ofac8fa4ffai55fal2fap3far2f1b2f1d3fe_2fec2fef8fej2feo2feu2fev2feø2feå1férf2fjf2fof3fæf4fø2f1hfie2fi4ff6ig4fihfi2rf5juf2l21flof6lu3fly1flå2f1m2fo_2foe4fof3fonf1op1fra2f1sfs2hfsi2f2slf4smf2snfs2tf1taft5lft7nft3rft1u4f1vfyr2fy3s2fæ1fø1f2føkf8ør6gah6gakg2at2gaw4gaø2g1b2g1c8g1d2gebged42gee2gef2geh2gei2gejg2en2geo2gepg2erg6es2geug2ev2gey4geæ2geø2geå2g1f4g1gg2glg4gn2g1hghæ83gi_2gibgi8c2gidgi1e2gih2gii2gip2giugl2agl6e4gljgl5lgls42g1mg5még3mugn1dgn4egn5rgn1sg2nå2gob2gof6goi2gok2gom4gov1gr48gr_8gs1gsa2g2sigsu2g2søgså42g1tg3tag3tigt5t6gug7gum2g1v6g1w7gymgyr6g5æt4gåmgå2sha4a4haeha2ghai1h4au2h1b2he_he2ahe2ihe2khet2h5huhje42h1mh2nahn1shob6hoi5ho4oho4shou2ho1v2howh1rah1re6h1sh1trht5thvo2hya3hyd4hy2ehys3hæ5ghø4ehøf5hø2ghøk6hø2shå7aia1ti1avi1b2i5boib4rib8ti1ciick1i1coi5cy2idai8dji2dyi3døid7åi2edie1ii1eni1etieu2i8fti3føig3di6ghig1li5ini1kii1kjik1li1koik1ri1kuik1vi1kyi3køi3kåi1lai1léi1ly8im_4imai8méi7mjim5mimp24imu2in_6ina4ine8iné2inkin5l2inoin1s6inu1inv6inøi2obio1iiol4i1pii1pli1pri3pøi1rai1reir7gi1riirt6i1rui1røi1råi1sa8iséis1lis1p6isuis1vis7wi1tai1téit2ii1toi1tri1tui1tøiu6aiu2biu2niu8pi2uri1vei1véi1viiv3ni1voiv3riv7yi9væi1waiwi5i4zei1zoi4øsi1øyi1å41jaeja4j1jaz2jeb2jef2jehje1i4jej2jel2jem2jep6jeø4ji_6jik4jiø2j1k6j1l6j1m6j1n6jn_j5ni1job5jocjon24jop2jos1jou4j1r1jubju2l8jup1jusju1å1jø_1jøejø1f4jøl1ka_2kaa2kag2kah1kam1kas2kav9kayk5ce2k1d2keb4kecked44kefke5h2kei2kej2kek2kem2keo4kep2kev6keæ2keø2keå1ké4két52k1fk5fik3gek5ghkgu44k1hkh6m2kifkio42kip1kir4kiuk6ivk1kak1kikk5kk4knkk7skk1v6kl_k2læ2k3mkn5fk2nøko3e2koi2koj1komk6on1kos4koø4koå6k1pk2rok1sak1scks1lksmåk1sok8srkss6k1suks1vks5wks1å6k1tku2a2kud6kuf6kug1kunku4o1kup1kus1kvok2vuk1våk7wek5wuky5a4kyf2kyg1kyr2kyt1kø_1køek1ønkøs41la_2laala1b1lae2laf2lal2lao2lav1lawl5bel5bå2l1cl9déldø22lea2leblec42lee2leh2lej2leo2leplex14leø2leå5lée1lér4l1fl5felf3flg5glg5nl1gælg5ø8l1hl5hjli1a3lif3lig4lih2lip7liul5jél1jiljø36l1kl3kalk4elk2llkå12l1lll1jll5mll5p2l1mlm7blm5llm5mlm1slm3t2l1nl3nel7ny2lob1log4loh2lop1lov2l1pl7palp2hlp2ilp2l8l1sl4sfl2shl2sll2sml2su2l1tlt9blt9nlt2rl3ty2lublu5c1luflui61lujl4umlu6oluth1luvl1val9vél1vilv1jlv1åly1a2lybly5ely5l2lyo1læ16læd2løt2låilå2n2låp2lår2maa2mab2maom6at2mau2mav2m1bm6com3de2meb2mecme7e2mef4meh2mejm2el2mem2mep2mev2meø2meå2m1f2m1hmi1ami6c2mih2mii4mij2mim2mip2miv2mjem1ji8mjo1mjø4m3lm7laml6im3mémm5nm3mummø22m1n3moa3moe4moh2mopmo5w8m1pmp1smpø5m1scm2smm1soms1vms1å2m1tm3tamt4bm5tomt4rmtå5mu6amu2e2mugmu2k7mumm2us2mut2m1vmy5amys3mø6emø2o7møt2møy2må_må5amå1km6ål2mår8naf6nah2nakna7on5can1dénd5knd7v2nea2neb2nef2neg6neh2nei2nej2nek3nen2neo2nep2neu2neø4neå4néb4néd2néf6néh2nél4ném6néo2nép5nér4név4néå4n1fngd4ng1lng7nn1gø2nih8nij4nirn4it6niå4n1jn1kan1kin5kjn3kon1krn1kun1kvn9kyn1køn1kå4n1ln5len3ljn7lå4n3mnn9rnn1å2nob3noe2nof2nok2noo2nop4nouno1vn5pen9ran3renry6n2shn1su6n1tnt9gnt5lnt5n4nu_2nugnuk5nuo26nup2nut6n1vn5vin3vu2nyd4nyg2nyn4nyo4nypny1s2nyv4nyø1næ12nøe4nøfnøy11nådnå8j1nålnå2soa5co1afoa4ko1auob4e2obr2obu2obyo5bøo3båo5cy2o1dod4eo4dj6o1eoe6foe2loe2no2es2ofao1fé2ofio1fl2ofo6oft2ofyog5øohø4oia4oi5ko1imoi6ro1is4o1jo1kao1kj4okl2okno3koo1kro1kuo3kå8ol_2old2oleo1lé2oliol9no1luo1lyo1lå2om_2omaomb62ome8omhom1j2omm2omoomp21omromt26omyo5måon5bon7fon3jon1koo5s2op_2opa4opho1pi2opl4or_4orb4orc8ore2orfo1ri6orl4oro4orr2ors2ortor1u4ory2orøo1saos2lo2sno3soos1vo1tao1tjo1too1tro1tuo1tyo1tøot7åoub8ou4r6ovh2ovj4ovoowa8ow5ho1zao3zyô6raô2reô1rió9saò9re4paa2pac2paj2pamp6aspa1t2pavpce6pdø22pea4pebpec3pee62pef2peg2peh2pej2pekp6el2pem2peo2peppe2u2pev4peø4peå3pér2p1fp3fop5fr2p1h4pib2pid2pif2pih6pii2pim1pit2piu4piø8pl_p2lip1lyp1lå2p3mpo9apod82pofpog64poh2pom4poupow4p1pipp1jpp3kpp1lpp5npp5ppp1rpp1sp2pup6på4pr_6pru4pråp1scp2shp2smp2snps1opst2ps1vps5wps1å2p1tp3tep5ti5pucpu2k5pum2pur2p1vpy8o6pys4p5z5påb1pålp5ånpå1r1pås1påv1que2rao2rav4raw2raør5bør8dérd7mrd3nrd5t1re_2reb2ree2reh2rej2rem1rer2reu3rew2reå2r1frft2r9fæ2r1gr2gn2r1hr7hu2rib2rih2rii2rij2rip4riå2r1kr3kir8ks2r1lr3ljrl6or3ly2r1mrm3brm7pr3narn3drn3nrnu41roc1roi2r1pr5parp6jrp2lr3pu2r1rrr3drr6er3rirr5v6rs_r1sar1scr1sor1spr1svr1sz6r1tr4thrt2r4rukr4umru2rr4us2r1vrv4arv2jr3vr4r1w2ryrræ8v2rø_6røb2rølrø6m1rør2rå_rå7a4råb2råf4rål2råprå1s2saa1sas1sat4sca1sce2seb4sec2sef2seh2sejs2el2sep2sev2seø2seå2séa6séb4sée4séf4séj4sék2sél4séo6sép9sér4sés2sév2s1f6sfes5fo3sfæ4sh_6she4shj6shs2shus5høs7hå3sig4sih3siks2ils2is2sj_2sjb6sjd2sjf2sjg2sjk2sjl2sjm2sjn2sjp2sjr2sjs6sk_1ska4skb6skd2ske2skf2skh1ski2skm2skn2skv1sky6skæ1skå1slus1ly2snæ1sod5soe6soh3son1sos4sou2sov4sp_1spisp6o8s9rs5ro4s1ss2shs2sls2smss2ts6så6st_st7c2std2stg2stk2stl2stm2stp2stv1sty1stø1stå4su_1suesu2fsu2hsu2ksu4o1sus7suv6sv_s3vrsy4c5syes4yms2ynsæ2l4sø_sø2d4søfsøg44søjs4øp7søt2søv5sågså2pså2rså2s9såvta1ata1c4tadt8ae8tah1tau2tavt1cet5co2t3d4teb2ted2tef4teh2tej2tem2tept4es2teu2tev2teø2teå4téa2téb2téf2téh2téi2tém6t1ft7fo2t1h3thr2tib3tid2tih2tii2tijt4il2tir2tit4tiy2tiå2tjo2tjø4tjå2t1m8t1nt3nat5ni4toc1toe2tof2toh4tojt6ok1tonto1s2tov5tow4toøt7pa8tr_t6ræ6ts_t1scts3fts1lts1ots1vts1wts1åt1tat1tét4tht6tst5twttæ6tu2k2t1vtv4a1tyd6tyh1tyn1typty2st5zatæ5l4tøl4tøpt2ørtøs44tøt2tøvt4øytå2k4tåptå3stå2tua7gu1akua3tu1avub5hub1j2ubsu4båu1ciuck1ucu5ud1rud3tud5vu5eiu1elue7ou1eru1etu1flu1frufø6u4glugo1ui8aui2du4ilu1imu7jå4uk_u7kiu1kj4ukku1ko2uksu1ku6ul_u1lau1léul1ju1lo4ult1uly2uma2umb4umc4umd2ume2umh2umi2umk4uml4ummum3n4umo2ump4umrums1umå72un_un6i4unk4unsunu6u3nyu3nøu3nåuo9au1obu1omu1opu1ov6upfu3pi4upr6ups6upt6upuu1påu1raur4curd4u1re2urfu1riurø24usaus1c2use4usgu2shus1lu4snus1pus1v6usæ1utb1utd1utf1utgut1j2utout1ru1tu1utv8utzut1øu7utu5viu5vu4ux1uy6au7ynu1ø6uøv54vabvaf32vap4vauva4z6v1dvd6rv7dø1ve_2veb2vec2vee2vef2veh2vej2vem1ven2vepv4esv4et2veu2veø2veå2v1fv9gevgo42v1h1via1vid4vim1virv1jav1jev1jivls92v1m2v1n6vob2vofvoi11vok1vol2vom1vosvo1v2vr8v1rev1rov1ruv7ryv1råv1skv1slvs1v2v1tvta18vuévu8k2vul2v1v2vy1vya4vø4lv5øv1våa1våev4åk1vånwa6l2wap1watwa3zwe7bwe3gwes2wet5w4i2wi3dwi5fwk3rwn5swob5wou6ws6kw1yoxga6x1icx1p6x1s2ya7b1yacya5fya4hy1akya2ly7amy1anyas4ya5ty1avybo2y8cé4yddydo4y1dry2duydø44y1ey2eky2emye2nyes2ye2ty2evygi2yg7myg6ry1kay2key1kiy1kjy1koy1kryk1sy1lay1lyym1sy3noyns1y1omyon4you4yp8ey1piy5poy1pry3puy1ray1riyr3my1ruyr3vy1ryy1says4eys6iy1soys2ty1suy1tay6tjy3to4ytty1tyy6uay8ueyu8gyu4ly1å2za5b3zaez1b4zbu4zea15zhaz3hiz5hu5zie1zis4z1l5zo_5zoe6zos4z1tzu3ez1unæ5byæ2bøæ5deæ7diæ3keæ5kiæ8kjæk6læ1laæl5jæ1re4ærfæ1ri4ærmær3nær5rær3væ2sjæ5ta4æteæt4ræ5vaæ5viøau4ø2bløb4rød3dø5djød1rø2duø4edø5epøfe8øf6jø5fnøg2aøgs2øi4eø4it6øk_ø1ki4økj2økk1økoø1krø7kyø1laøl3døledøl1jø1loø1lyø5mi4ønnøn2sønt1ø1piøp5pø1prø1raø1reø1riør1oør5vø1saø1scøs1lø1tuø5tyø1u2øv1røv1sø5vå2øyløy3o6øypøy1sø1ø2ø5å6å2arå1b46å1då7diåds14å1eåe2nå3eråfe6åg4råg5øå1kaå1kiå1kjåk1kå1koåku8å1laål3dål5jål1uå1lyå3niån5oå9nyåp2eå1piåp6jåp7på1prå4på2årnår2så1røå1saås3hå1slå5soå1spåsu4åså9å1taå5ti2åtnå1to6åtpåt1tåt1uå5tyåv4aå7vyå1ø8åøy4", + 5: "_ad2r_af7f_ag4r_ak6r_am7b_a6me_an3n_ant2_ap8t_as5s_at4h_at3s_a5ty_au6e_au4r_avi2_bok5_bon2_ce6b_cos1_da2m_de4u_di2a_du4a_ecu6_efo7_ege2_egs4_ei3l_ei3m_ek4r_el3k_el5l_el6s_em5p_en5a_en5t_ep6t_er8a_er4e_es1k_es5l_es3p_es6r_et4s_fa2e_fe4e_fe2l_fi6a_fol2_fo2r_fug2_ful2_gaf7_gas4_ga2t_ge2a_ge4o_gha5_gi4n_gi4s_gos7_gus1_gå4v_he2n_hi4n_ho2d_ho2e_høi5_i3a4_i3bl_i4da_ik6k_ik5t_i5kv_i3la_i6me_in5s_i6sa_i3sc_i6se_ist6_i5ti_i3va_i3ve_ja6e_je2a_je2l_je2m_ju6a_kaf2_ke6e_kel3_kir2_kø3s_le2f_le2t_li8a_li2g_li2k_lo4e_lo4i_lo8o_lu4d_lu2e_ly8e_ma4v_mne6_mo5v_mur7_mø2t_nak2_na4r_nat2_ne2s_ne4t_no6e_no4r_nu4e_ny5a_ok1k_oli5_ol6m_op7r_opt6_ort6_osa5_os4k_os4s_ot5r_ove6_ov5u_pe2p_pi6p_pi2s_pøn3_ra2m_rei2_ri2d_ri8e_ro4e_ry2e_rød2_rø1v_råg8_sch6_se2b_se2e_se4i_si2d_små3_sne3_soa8_s8p6_syd5_sær1_ta2s_te4e_te6i_te6o_ti8a_ti4e_ti4s_tsj2_u5a6_u1b2_u3d2_u7de_u3e6_uf4f_u4ga_u5gi_ug8n_ui6m_u1k6_u6ke_u7kn_u3le_ul5t_u1lu_u1ly_u3lå_u5ma_umu7_une8_un2n_u3no_un4t_u5nu_u4pi_up2l_u2ra_ur4d_u1ro_ur1s_u3ry_u5rå_u1s2_u5se_u5sn_u7sp_u3tu_vai4_vi2e_vo6r_vå4d_wa4r_wi6e_yns2_yr6t_yt5t_øi6e_øko5_ør5k_øs4t_øv4d_øy2e_øy4n_å6k4_ål6t_å6se_ås3k_ås7l_ås3m_ås5va3afta1aksaak5vaa3laa1a2na6an_aar5n3aasea6babab7av4abevabie6abl7uabo3babo3eab8reab2slabu5ea4bufa4by_a4byba4bykaby3ra6ca_a5dalad9daa2deba2deka4dela2deoa2depa2desad8ge1adjuado7aa4dob4adora2dread1roa7drøad4siad5un2advea4dy_2a1e2ae3deaed7raek5ta4el_ae5laae3liael5oaen5taes4ta4fe_afei5afia1a2fiba5fjoaf3leaf5li1afriafs1laf5yrafø4ra2gaaa5gaeag5dea2gemag5geagg7ua4gi_ag5idagi6sag1laag5låag1ora5gosa3gotag5ovag1reag1riag1råag2slag2sya6gu_ah4n5ai1a4ai3e2ai4isai5koai9kvai5nea3inga1innai1roais4eai8smais5sai5veaja9da8je_ajes74aka_6akaf6akan4akarak4aua9keca2keha6kek4a1kia6kida6kikakis12a1kjakki4ak6kjak1koak1ku2ak1lak5nea5kno2a1koa5kona7kosak1ruak6sl4akso4aksr4aksu4akthak2trakut2ak5øl8ala_ala4ga5laha1laiala4o2alat4alaual1aval3de4aldoa2lefa2lega2lema2leuale5v2alg_al2gua2limal1joal1jøal6låa5lo_a5loial1oma1lonalow7al3psals1lal2sn6alsual1voalv3s6a1lyal3øva4maha2maka2mala3manam5bea2meia2mekame5uamhu76amn_amo5eam1opam1oram2påamru4am5råams4lamst6ams2vam2søam3ti5amtmam7tvam6ulam5yram5øy6ana_8anan4anar4and_6ando4andsa2neda2nem2anen2anera2nevang4eania7a6nib4aniv4anki4ankjan4kø2anlaan4nyan2nøa3no_2anoga6notan4sn2ansu6ansyan4såan5uta4nyaanær8a2nøkao6k6a5peaa2piaap1ida6pika2pioa1plaap3liap9loap2ly4apola4pona4pooapo3pa2potap3raap2s1apsa4a3psya5på_2aran2arar2arba2arbi4arbj6arbl2arbo2arbr2arbu2arby2arbø4arbåa4reba2reda2refa2reia2reka2reoa2repar4eta4rev8a1ré6argjarg4lar7go2a1ria3riba4rima2rivar3ke2ar2nar3niar3noar3nuar3nåa1ro_a5roka1ronar1opa1rosa1rotar9po1arraars7æar3te4artn4arto6artr6artu8artyar1ular1una1rusar7æ6ar1øyar7åp4a1saasab4asak4as6anasbe2a2se_asea4a2seda2sega2sekas4ela2semas5hua4siba2sipa2sira2sivas4jaask2ia5skja1skras4kva4so_as5ovas3peas5plas2sjas1taa1stjasu3nas1vaa6sym4ata1at6afatas4atat8a2tauatch5a2teaa2teca2teea4tei4atena2teo4atera2tesat3joato5aat1oia2toma1tora1traa9tru4att_att1oat1tra2tuta3t3wa3tå_a7tåaa1tåeat5år8a8ua4au5b4a6ueau7enau7er3auguaul5lau5luau6moa5undau5riau1ruau1saau1soaus5sau1suaut6aau5te1autoau4tyav5aba5vaeava7g6aval4avas5avbi2a1vea2veka2vesa2vev1avfaa1vika1vin2avira5vitav7naa4vokavo3ravo4vav5riav1saavs2iav5su1avviav3øl4a1våawat4ay5ara5y4tazz3obaby5ba5clb5addba3dibad1sba3ki4bakrbak1vba3labal3jba1lobal5tba1luban4aba3reba3riba5ruba3siba2stba1tab6bakb3be_b4bebb2befb4begb6behb2beib2bekb4bemb2beob3berb2bevb8b1hb2b1lbb5opb2by5bby3ebby1kb2dekb7denb4depbe2aube5edbe6efbega9be4gnbe5go4behube5kebek6l4beksbel3ubel5vbe4nabe3nebe5niber5dbe1robe1ru5bes_6besjbe3snbe5spbes3sbe6så3b4et5bet_be3te4betube9vobev9rbeån9bi5akbi5cebi8débid6rbidu8bi5el4bifabi3kabik1kbil3jbil1o6bi5mbi7nobi1robis2abi3seb5ish8bisnbi4spbi1stbjar3bjø6r2b1k4b1larb3latbla4ub4lefb4lekb3ler2bletblja41blokblå5nblå3rb3ne_b3nerbo2blbobs4bo3debo2dø4boef1boenbo2erbogn7bog1s3bok_bo2kabok1ibok1kbo2kubo7li1bombbom5mbo6mo4bonnbons4boom1bo1p4bo1rabo3rob4o1sbo2slbou3c4bo1vbow4e1b4rab6revbri5ab4rio3b4rubråe6b5s6ib4slibs2t6b7s6vb7t6sbu4arbu3dabu3debue5sbu6is6bukibuk3lbu5la2bu3obu3rubus6ebu1st4busybu1tab5utgbu2tubu1tøby5alby2erbyg3lby1lo4byløby1re5bys_4byse6bysi6byspbyst44bysvby1trbæ3ribæ3rubøne5bøn7obø5tabøye5bå4debå4labå1rebå6tobåt5rca5leca5meca5mocap1rca3racar5nca5rocash5cath5cebo9ce5le3cen_5censce5o4ce3recer3t6cerucha5t4chei4ch3hch5nechom4cie8ncil5lci3neci5tack1enck1o2ck5s2ckup3ck9utcoat51co4cco5macom5tcon5scon7tco7paco1reco4so4costcre2ecros2cu5lacu5lecu5lucup1lcu6pocup1rcup7scu4påcy6p78dabod5absd4adgdadø44daef5dagb4dagjdag7l4dagå4dahe5dahl2daka4dako4dakrda5kvda1lada1luda3mo5dan_d8ane9dani3dann7dano8dany2da3oda3ped3app3dar_5dara2darbd5arnda2ro2dash6dasida4sk6dasudata5d6aud2dautd5avbd1avl2d1b2d6byfd2dadddag4d4dakd2dekddie8d7domddsa4d2dybddør3dd1årdeak3de2al2debe4debl2debo2debr2deby4debø5ded_2deda2dedy5dee_de7erd5effd5eft5deggde3gldei4d5deik3deir8deka2deke2deki2dekj5dekkdek2lde5ko5dekt2deku4dekv4dekø4dekåd4el_d4elsd4elt4dely4delæ2delø2delåd3emb2deme4demj3demr5dems4demu2demø2demåd2en_4dena4deni4denod2ens4denu2denæ2denøde2obde4og2deol2depe4depi4depl6depuder5dder5kder3tder3v2derå2desa4desc2dese2desj2desk2deso2despdes6v2desydeså7d2et_2detade3te2deti2detj4deto2detu4dety4detø6detåd1eur5deusde5vu2d1g4d4geldgi6ndhø4rdi6akdi1ardia1s2diavdi1erdies43diff4difødig7g2digjdi2gudi5ka2dikj6dikn2dikodik7v2dilidi5ma2dimo4dimådi5nadini42dino2dinv4dinø3diog7diol3dipl5dis_di6scdis4id6iskdis5sdis1tdi5sv2disydi7tediv6i2divu2diøkd1je_d1jen5djupd4jø_2d5k2dko2r4d1l4dla4vd2lefd2leldli4fdmo4edmo8s2doavdo2b34dobado3be2dobådo4dadodø44doeud3offd5ofr2dogr6do5ido3ki4dokndo5le4dolj4domldo4modom7p2domrdo4mudon5g3dopido1redorm8do3ro5dorp3dorrdors6do1ru5dos_do1sk2doso4dosp2dost4dotrdo5vadov9n2d7p8d1ra_d5raa1dramd1rar2dre_2dredd5rej4drel4dremd1ren4drer4driad2rik3drukd1ruld1rumd3rup2drykd2rysd4rømd7røtd1råd3dråpd5sa_ds1add1sagd1sald2sasd5se_dse4dds1efdse2mds1evd2s1id7sild3sird2sjods6jud1skjds1kods1kvds3mad6smods3neds5nods1o2d7sotds2pids5s4dss8tds1tjds3tvds1u2d5sykd3synds1ytd2s1ød6sørds1å6d3t4adta4sd3temdt6økdub5bdub5ldue5s4dufo4duguduit6dul5l4dulydums2d3upkdu2skdu2sldu2spduss4dust4du2sv2d1utdve6sdvo8r2dyba4dykl4dykø4dynkdyr5ø7dys_dy8sa4dysedys7sdærs4dø3grd5økndø4madør3id6øs_dø9vadø1vi6døvl2døy_døya8døy8gdå5rid3ås_d7åt_e1a2bea2gue1a2ke4akr6eakte1al_ea2løea4m1e5amne2an_e4aniean7nea4peea2ree3aspe1assea7taeat8he8atoe1atteau5s2e1b2eba3deb3beeblæ5ebob3ebø6ne5chae3come2dade2dare3de_ed4ise7dived8obe4doled1oped1oved2raed2smed5taed3teedt6redu8aed7vae3dykee3dieeg6nee5gåeei4deek1eee3lae5enbeen6keen5te3eplee8raee3rie3e6tef7eaef5efef3feef3foe5fig4e3fjeflå3ef2sjef2skef2spef2taeføy9e3gafe7game2gemegg3legie2eg7lyeg6noe7gnåe4go_7egoiehea4ehog5ehov2e6hå_2e8iae8id_5eidf5eidge1idreie5dei8egeie2nei6esei1fl8eig_ei3gaeig6eei5giei6guei1krei6moein1dein9fe4ini6einvei5orei9paei3peeip5sei3rieir5se4iseei2toei3vi4e1kae4kese6keye4ki_4e1kjek1kjekk3lek6kuek4kye3klue5klæek2løek3noe1knue5knøe1k2oe4ko_e4kov2e1kre3kroek4ryeks1k1ekspek4sæ4ektoe1k2v6ekve6e5kw2e1lael1alel4chel5do4elede3leee2lele2lem4elenel5fiel5gie9liee4lifel3knel4læel5mu2e1loe2lomel1opel4otel5phel3siels1lel2søel2tue3luae3luke7lume7lupe1lure7luselv1r4e1ly2e1låel1åre5låte2made2mahe4mame4mibe4mig4emine6mirem7jee5mjuem5le8emnd6emniem1opempo3em2snems3ue3muge2mukemy4kemø8re5møyen1akena2vend5l1endren7dø4enem2enen4eneveng6aeng4r4enhje4ni_e2nife5nir2enna2enneenn2ienn2oenn7øen3oken3ogen1open3sien1sten2søens7åen3ti2en3ve4ny_e2nybe6nyre2nys4e7næenæ8menø4ken1åse6obeeo2ble1og1eo7gre2o1ie3okseo5nee7onke3onteo3paeo5pleopo3eo3preo9ree2orieo1roeos6le2o1uepa3tepe6pe3pese6peu3epidepp2seps1tep2suept6r2e1rae2rafe2rauerd2eer1drere4t6erfi4erfre2rid4eril4erka8erke6erkn4erkrer3meerm1ser2noe3roae1roee1roge1role1rome1roner1oper1over3ra6ersa6ersjer1sker1sl6ersper1su4ersver1så2erta4ertse1ruae1ruie3rume1rus6erviervs3e1ry4er1yrerys32e1rø2e1råe9rå_erå6eerå4kerå6te6råves5aae2sadesag6es4ale3seke4seue4shae4shie1shoe4silesi6ve1skje1skre1skue5skye1skøe7skåe1slaes2noes4nues2ny4e1soeso4be2some1s2pes3pl4essues7såe1stje1stu8eståes5ut2e3sy4eta_e4taee2tafe3take3talet4ape8taxet8ete3tit2e1tjet3jø2e1toe4tot2e1tr8etreets7let2sø2ettiet2tjet4tret2ty2e1tu2e1tyeu2keeu7kre3u2neu5nue6upkeure42eurie3urneuro1e3urteu4sieu1tae3utseut7te4u3z6eved6evegevi4eev2naev7nue4vreev9råevs8vevti4e1y2de1ynge1y2te7ytiey3treåt8té4n5eè2redè2refè2repè2revè6vesê8lanêr9sl4fabofa1cifa3de6fadmfa2gifa2gofa2gr2fakrfa1kufa1lafal5mfa4lo5fane4fank6fanufa3rafar5nfart24faryfa7sa2faslfa1tofat2rfa1vø5fea_fe4da3fedefe2dr2fe3g2fehj4fekl2feko4fekrfe5li2felofem9bfe4mofem5s5fen_4fena4feni5fens5fer_7fernfer2r3fes_2fesife2st4fesyfe5tif7fa_f4fabffa7lf9fasf6fatf2febf2feef6fehf2femf2fesf2fibf2fidf2fipff3laff3liff4olff1roff5slff5t4ffu6rff5ut2f3g2fia7lfia4n4fiapfici7fi7difi1erfi5fifi5fofi7flfi9kafi5ko4fikufi3lifi1lo4filæfin5d6finj2finsfi2nu7fio5fi3rafi3ri4fiscfi2sk4fitrfi7tyf1jegf5jen2f5k6f4las2flegfle6if4lekf6lelf3levflus8fl5utf3lønflø5sfo9ar6fobsfo4lufo4nafond2fo5nefor1aforh6fork8for3nforo6for5pfor9åfo9se4fosjfo4tafoto5fot3sfot3t4f1ov2f3p2fpo6efra5lfra1sfra7vf2re_8fregf4rekf1rin6frocfro7ffrus1f1rytfrø5bfrå9rfsho6fs5ovf4s9vf3ta_fta7fft1akf2teaf3tedf4teef2tegf2teif2tekf6temf2teof5tog3ftonfts1kfts1uft5t4fu6lefull3funn2fu7rofuru1fu6skfut4hfutu1fy5lafy1refyr7kfyr5tfysa7før6afå5rifår7ufå7va4gabaga1bo6gabøga3da4gadg2gadmg3aftg1aksga3kvga1la4gamb9gane4gann9gar_2garbgar2iga4sc4gasp5gastga3tiga1toga3tr9gav_2gavd4gavgg5avk2gavt4gavvg6bykgde3ag2debg2demg2desg2detgd5opgd1orgdy4d2ge1a6geba2gedr2gedy2gedøg5eft3gefæg5eggg1eie3geit2gek2ge9klge3kng1eks6gekt5gel_3geli2gelo4gelu4gely2gelæ2gelø2gelå5gem_2gema2gemi3geml2gemo9gemr3gemsge3mu2gemy2gemø2gemå3gen_gen5kgen3n4geny4genæ4genø5geog3geolge5on6geop3ger_ger3nger5pger5v4gerå5ges_2gesa2gese4gesige1sl4geso2gesu2gesy6gesæ2gesø5get_2geti2getj2geto2getr2getu2gety2getø2geve5gevågfe2lgg1eig2gemg2gevggie6g4gifgg4jeg7glug3go_g5gosgg4sygg3søghe8ngh4to4giakgi1ar6giavgi3de4giek3gien5gier4gifa2gifo4gifr4gifu2gigr5gika3gike4giki3gikk4gikugi5le4gimi4gimø4gino2ginvgio4r6giragi3regiro35gis_2gisagi3se5gisk4giso4gispgi5tagi7va4givo4givu2gjazgje5fgje2n3gjer2gjob2g1ju2g3k2gkly96gla_4glagg1lar3glatg5laug2lef6gleig2lekg2lel4glen4gler4gletg2levglig14gliogl7jag4lo_g2loa5globg4los6glov5glugg5luk6glungl5utg5lyd3glyfg2løg2gløsgmo4egn1akg2navgndø6g2neeg5netg2nevg4nibg4nidg6nikgni4sgn5k4g2nomgn6smgn5t47goango1argobe5go4da2goddgo9gago3lego5logo4lå7gommgo7nigon9s2g1op2gordgo1re2gorgg4orig5orvgo5røgos3p4gost6gotogot6r2g3p64grab6gracgra5tgra4u2grea2gref4grekgrib34grid4grif4gritg4ron2gryd4grøy6grådgråk4grå7ngsam3g2sasgs2cegs5efg2segg2seig2sekg2semg2sergse4tgse2vgsfø2gs5isgsi2vg5sjig2sjog5sjåg6skvg5soggs2pigs3s4gst6egsu5ggs7vægsy2dg7symgsy6tgs6øtg9t6egt7svgty8egt9ytgu2digu4elgui4dgul5ogul7øgun4ggur2ggu4rigu4stgu1ta2gutb4gutd6gutgg7utl4gutn2gutsg9y8agy3ne4g5økgør3s2g3øvgøy9agøy5ngå6as4g3ångå3sthaba9ha2el4hafiha3gaha5kaha1laha5luha5maha5moha5nahani1ha4pehar5kha4sjha2slhas5vhav4aha1viha4vohav1ø4havåheb5nhe3geheia33heimhel1ahel3oher5jhe1roher7phe2sphet3thi5aohie4nhi2ethi4f1hiff2hif9rhik7ehins4hi4plhip3phi1rohi2s14hiskhit7ohiv1shjar4h5lanhma8nhne6nho6daho5dyhogs6ho2lahol5lhols4ho4luho5raho1ro2horthos5aho4véh5s4eh5terhu4dahu4d3hu4erhu4gahu4lahu5mahus1ahus7mhus1thu2søhu4vahvas5hve2rhvor5hy2blhy8sahys5thø4nahø1vahø1vehø1vihøy5khøy7nhøys4hå8lehå1rehå1rihår3shår7uia9ali1ablia1boi1adjia1g2ia2geia1inia1kri1aksia5kui1al_ial1ai2alfial3gi4alkial1uia2løi1an_i2anai5anki1anmi1ansi1antia7nøia2pai3appi1ar_i2arei6asii1asmia4spi1astia5teiat6ri1atti7aukib5boib3buibo4eibo7nib3stibya7i5dali3dasid1av2ide_i2debi6def2idenid9na2idriid2s1idse4ids5lids3tid2t13idyli3dyrie1a2i1effie4geiego4iei6di1eiei3eigiek8li1eksi2elei1elsi9eltie3meie7nai2endie8néien7nie5noi5ensie5nui6enyi4erdi2erii2erli6eroier5tier5vi2e1si6es_ies4cie3seies5si2etaie9teie5téif2faifi6eifjø8if3leif1reift2si2gaei2gavi6gebi2gemi3geni5gibi4gimigl6dig5noigof6ig1omig2raig2reigs2jigst4ig1unig9utihen3i4huki7is_i6itai1k2ai2kabi2kafi2kaki2kaoi2ke_i2kedik9eiik4klik2koik4krik2kvik6kyi5klæi2koai2kobi4kodi4kogi4kohi2koki2kooi2kovik2ryik2sail7afil3alila5til5avil7dji2lefi2leki2lelile1sil5geil1gli4lidi5likil1jeil1joil1juilke3il5kuillæ4il4miilm5si1loei4lomi5lonilo1wil3slils2pils2til7suilu4hi5lukil3uni5luri9lusil1util5v6il1å8ilår6i2madi2magi2mami9mani2mapima5si8mb2i4meei2mekim8eti6meyi6mogimo9limp4l1impoimp9s1impuim9sei3mø2i4nagin2ani2napi6nauince2ind7åi2nedi2nevinfu94infyin2gring2s6ingui7niai2nibi5niei4nifi2nigi4nilini7mi2nip2inn_1inng1innt4innæino5ai4nodinok64ins_8insain3si6insj4insk1inspin2sv8int_int2rinu6iiny4iiny4tin7øki7nøtin3øvio1a4i1offio5gni1oksio3leio3muio4nuio1pli1oppio1reio1sti5papi4peeipi1ei2pleip2pri6praip5ruips1aip2siips1ti5py7ir5deird5sir6eki3reri3retiri4airi9tir5kvirk5øir9méi5roai1roei4roii1roliro1sir3reirs2pir3tairu8mi7sasisch5is3coi5scri2sedi2seii2seki2semi2sesi2seui8skeis1kris1kuis1kvi6sluis5neis5nu1isol3isotis1ovis5sii2steis6téi2stris5ufis5ulis1unisy5ris5yti4søyis7åkis3åritau4i4tavi4teci2tegi2teoi2tifi2tioi2tipiti3ri2tiuitiv4it7jiito9ai4tomito4sito8vit1sait1snit4tjitt1oit4trit4tyitu5eitær1i5tå9i5u6li5um_ium5miu4moiu5se4i1vai4vadi6vaji5vali2vegi4veii2veki2veviv7omiv2siiv2skiv2sliv2sniv4soivs5vi5za_i7zasi1ø4ki1ør_iør5iiør5siø3seja1akja9arja4daja7en5jag_jag6rja4haja4hvja7kuja3loja1lujam7b5jammjams2j5anl6jarøja6råja7seja5taja9vije5akjeb9b4jedrjeep16jeevje2fjje5ge6jegl4jego4jegr4jegy2jeka4jekl2jeko4jekøjelt3jemp6jen1d2jenijen3k4jenl4jeno4jenu4jenæ6jerå5jesf5jeshjets22jeu64jevejib5bji7e6ji7roji6sjj4kapjo4flj3omrjo5nejon7njons1jo5rajo1rejo3sejour52j3s2jubi3ju9boju3deju2dojue9s5jugo4ju2kju3kajull61jungjup7sju4raju9roju3ru5juryju1tajut5ojy2p31jøa_jø5b42jøef4jøeg6jøei2jøekjø3grjø9kjjø5mejø5pajø3rujø1røjøst2jø5tajø1tr4jø1v5kaa_k3aaska3atka7bo4kabyka3da4kadg2kadr5kadu4kady3kaenka3fe2kafoka9fr2kaft6kaføkag2r6kajo4kaktka3kukal2ek6alkka1lokal3p7kamu1kana1kanekan4i5kano1kant2kap_ka5pe1kapp1kar_1kara1karb1karf5karg1karmkar3n1kart5karu4karå7kas_ka4sk6kaspkass6ka4stka1tokat7s6k1b4kcen4k5d6vke9al4kebrke5dake5de2kedikedu64kedy2kedø2keeg2keek2keelke4ep2keevk3effk5eft2ke1gk3egg4kehjk1eigke5ilke1imkeis2kek2lke3knk1eksk6el_2kelakel5lkels4kel2tkel5v2kely2kelæ2keløke3ne3kenfke4niken3kken7n6kenøke3on6kepl3keri3kermk4ert2kerå5kes_2kesjkes1v2kesykes1å2ketake3te7keth2keti2ketj2ketokets22ketu2kety4ketæ2ketå2keu2ke5urkev2ak1evjk3evnke3vrke2yt4k5g2kh5akk4harkhe4oki3drk4ie2ki6elki5g4kik4ski5li4kilj2kiltki7lå6kindki5ne2kinf1king2kinnki2no2kins2kintki6nu2kinv4kiol7kioski5peki5reki5ri4kirski3seki7ti5kitokiv3skje1s6kjorkju9r1kjøpk2kabk2kamk4kaokk1avk2keek2kehkk1eik2kirk1kjakk5jukk1lokk1lykk3lækk5nekk5nyk1kodk1koek6kookk1opkko7sk4krakk3rokk3rukk7røkk7råkk1skkks4lkk3t2kk5ukk2kvok1ky6kkyl4kk5yrkk7ytk2k1øk8kølkkø6rkkøy6kk1å24kla_2klak2klegk2lem2klet8klia4klig1klip4klit1klos2klov4klunk5lydk6lør6kløskmål22k1n2kno7g5knop3k2nu3k2nykny4skn3øy9koa_ko7arko2b3ko3boko5da4kodd2kodø3koef4koek4koel4koes4koevkog3lko4guko6gåko1inko1ki4koko2koku2kolekol5p4koly2kolå6komg2komr4komu4komåkon3dko4nu1ko1o4koomko5pa4kopo2koprko1rako3ri4kormko5ru2kosako9siko2skko1sl2koso4kosø4kotrkot2s4koty2kou4kout3ko1va4kovrk3rad5krag4krapkra4u1krav4krei6krek2krel6kreo2krib4krif4krik1krimkri2pk2rit6krivk4ropkro3vkrum33kryskrø3v4krådkråe65kråkkrå9mk3sa_k7sask2sedk2seeksfø4k5siak2sifk7sioks1kjks5klks1krksk8uks5lok6sodk4sogk2sotks1ovks1prk3spyks3smks1tjks1trk2ståk6sunks5ærk3så_k4såpksår4ksåt4k5ta_k4tagk3tedk6teektem8k5tibk3tilk5tirk2tjakt7jukto9ak2tomkt1ovkt2rokt3t8k4tukktør7kt1øvku9anku3bjku4etku7iskuit6ku5li3kull1kultku6mikum2s3kumuk6unnku7ra1kurskur3t1kurv5kus_5kusekus3tku1taku5to2kuts1kuu8kuøy6kve7e2kves4kvid2kvivk1vog6kvokk4vot4k3væky6elky2p1ky8sa4kysek1æt3kø2arkø2er6k1økkø4lek3ørrkø5sek7øyd4kåkekå3lekå5nekå1rekå1rikå2t54labala6bl1labo4laby4lad_l6ade4ladg2ladm2ladr2laei4laepla3fl4lagglagi42lahala5ka4lakjl2akkla2kr4laktla5køl1alk4lambla3molan2c4lanl4lann4lanvla7pila8pl2larb5larfl2armlar3n4lartla6scla5sela2sk4lasml6astlas3vla1tala5ti4latmla1tolau7a2laudlaue64laun4laur2lautl5avh6lavs7lavåla6y52l1b2lba4kl4boal6buhlby4el4ce_l7da_l2debl5denl2depl3derldo9al2dolld1ril7dryld1røldse8lds1kldø5dldø5lld7øyle7agle3akle1al3leasle5at2leda2ledo6ledu4ledy2ledø6leei6lefa2lefi4lefl2lefrl1eft6lefy4lefø3legele3gi4legj2legu2legå2leinl6eit2lekalek6ele3ki2lekj2lekn2leko2lekr2leku2lekv4lekø4lekå2lele2lelo3lelsle1lul5elv2lely4lelæ2lelø4lemale3me2lemo3lemr2lemt2lemu6lemy4lemø2lemåle5ni2lenø4lenå5leolle5pa4lepoler5dl8erele1ru2lery2lerø2lerå2lesc2lesples1v4lesø3let_2letj2leto3lets2letule4tv2lety4letø8letå4leul2leunl1eur2leut2lev_lev5n2levolev1r4levs4levæ7lét_l4fa_l5farl5figlf5jal7fjel4foml4futl6gaflga5tl2gedl2gemlg1lolg5lylg3oblgo2dlg1oklg1omlg5ovlg2sklgu4llg3unlg3url6gå_li2amli4asliba5libi5lid3tlie5slif5f5lignli2guli9ki9liknli5ku6lilali3lel6ime4limhlim7rlim9ulin6c4lint2linv2liso4lisplit5j6litnli5toli5tyl1janl1jarljas4l4jedl6jeel2jeil2jeklje3ll1jenl2jevljo8el4jom3ljoslj5unl7jurlj7utlk4anl6k5bl3ke_l2kedl6kehl3kenlk4lil6ko_l2kotlku8tl2lakll1alll4asll3d2lle5al3leel2lefl2lemll6esl2leulle6yl2lé_ll7g2lli1el9ligl2liml3lipl4lirl4livll7k2l5lo_llob5l2lodll3opllsk4ll3t4l8lual4lufll7ugllu4kl5luml3lusll1v4l4løkl5ma_l4maplm3avl5mill7mislm1oplms6jlm3utl4mø_l2nablni4ulo1allo2bllo3de6lofj3loftlo5gelog2olo1in3lojalo1ki2loljlolo96londlo5nelo3palo1ra2lordlo1relo1rolo7salo1sllo7sp2lostlo3tolo1un7lovolpas5l4peel2peil2pell2peul4put2l5r4lre4ilrø5vl2sadlsag6ls4aml4scul3se_l2sedl2seel2semlse2sl2seul6sevl5sigl5sikl4sim8lsk_l6sklls8ksl4skåls5lol2snulsok3l5sotls1ovl2spal5spil4sprl8s7sl5subl3sukls1unl2s1vl4sørl2s1ål4taal4tafl3tall2tifl2tikl3toglto4sl3tral5trålt1s2lt7t8l2tutl5tv_l3tvsl4t5wlty8dlt7øllt3øvlua8rlu7go4luk_lu3kr4lulylu2molu4mø4luntlup4slur2elu5ri1lus_lusa5lus1tluta36lutf4lutglut6mlu1to2luts6lutvlu4val4va_lva6klv4enlv9iml6v3nlv1oflv9opl6v5plv9rilv1s2lv5selvs6llv9tal5vøel3våglvå6rlyes3ly8is2lykjly5kuly7kv6lykøly5me2lymply5okly3pely1r8lysk44lysp6lysyly1trly3vel6z5blæ6talø4er2løkol5ø6llø9melø2nalør5n5løs_lø2saløs3kløs3s6løy_4løya2løyd4løye2løyfløy4g4løymlågs4lå4gålå1k4lå9melå1rulå1sklå5su4lått3maa_ma3arma5br4maef4maek2ma1f3mafr3magnma2gr2mahema4isma4ja2mak_4maklmak2rma1kuma1lamal5lmals4mal3umal3åma3mom4an_ma3nem4anf2manl4manmma4no4mapa2mapr4marbmar5mmar7nma1roma6råmash34masp2masyma1tama3tema1toma1trmau4kmau7lma1un5maurm7avhm5avkma4zema3zom4baom2beam4bebm2befm2bekm2bemm4beombet2m2bibm3b4lmboe2mbo5nm4bopmbo9tmbu4embus52m1d2md7om2mea2me5almea5mmeck42medb4medfme3di2medm2medr4medumed5v2medy4medå2meef6meek2meel4mees4meevm3eff2megr2megumei2em1eig4meki4mekj2mekkme3kn4meko4meksmek5t4melame3leme1lumel5v2mely2melæ4melømen5km6enn2me3ome6os5mer_m4erimer9n5mers2mery2merå5mes_2mesj2mesp5mess4mesu2mesy2mesøme3te2metj2metu4metv2mety2metø4metå2meu4mfav5m2fekm4fi_m2fit2m5g6m4ga_m4gi_mhea4m4hu_mia2n2miav2midimid5jmid4t2mi5fmik6h4mikj2miko6mikumi7li4milæ5mimom7impmin2smi3num4invmi7ov4misami3se9misémi2sk7mism2misy4miså6mitami3te4mitj4mitomi5urmi5våm6ja_m6janm7je_2m3k2m4ko_mkro5m2lefm2lekm2lelm2lemml5jamløy32m1m4m6maimmal5m4mamm5marm2megm2meimme3um4miam2mibm4midm2mikm2neem2nevm6nipmn7skmo2ar4moba5modemo5di2modym1offmo6gi5moglmo5gom5ogs2mokamo8kemo1kimo3le4moltmo3lym5om_4momf2momrmo5nemo2nomon1smo3rem2orimo1rømos4omo5to4motrmot7tmour5m4peem6pepmpes2mp3idm6p5nmpoe4m4pogm6pokm2popmp1p8mps4pm9purmp5ysm9på_2m1r6m9rårm5sa_ms1akm4semmse5smsi6emsk8ums4lym1s2nms9nems5noms3næms1ovms3s2ms2tim1stoms1øymtbe6m2teem2tegm4telmti9amti5em6tifm2tikm4tiømt6vem1u2bmu3elmue7rmues1mug5lmu4hemu5lamull24mulymu3mimum2smun2c4mungmun3k2murnmurs46murtmu4sémust4my3kemyk3lmy8krmy2ramy1re4myrkmy6samy4somøb3lm3økn2møkomø6namør3ømø5semøt9tmå7g2må7plmå1remå1romå1rumå1s46måtfmå5trmå3tø2nabo4nabynadi44nadvn1affna3frnaf7tna3gena7gø4nairn6akk5naklna1krn1aksna7kvnal5gnal3t2naly4nalå5nam_5nams2namø9nan_4nanan6anenan5k4nanyna5pen4ar_2narbnar5s2nartnar7vnar5ønas7h8nasuna1ta4natlnaty52nauk4navd6navf2navgna1vi4navl3navn6navo4navrn1avs4navt4n1b2n5ba2nba3dn6bufnbyr5nbø6nncel5n3chen6cotn2cy1n4dadnda5fn3dalnd5d4n3de_nde5an2debn2dednd1eind6ekn2demn2depnd1jundo9an6dobn2doond1opn2dornd1rin1dron6dufn4dunn2dupn2dygndy1kn2dysndø5l5neaenea4gnea9mne1as3nebb4nebeneck52nedaned3d5nedg2nedoned1r5neds6nedu4nedø4neeg4neei2neekn1effn5eftneg8rn2eidn5eig5neirne3knnek2rnek5t4nela6nelênel7s4nely2nelæ2nelø2nema2nemi6nemjnem6k5nemn2nemo2nemu2nemy2nemø2nemå4nenanene44neni4nenu4neny4nenæ5neo_7neosne5pe3nerb5nerl2nery2nerå2nesa4nesc4nesene3si2nesl6nesn2neso2nesp2nesu6nesy4nesæ3net_2netane3te2netj3nets2netune4tv4nety4netåneu1rne5us3nevnnev1rn6foan4fobn4fomnfos4n4gafn6gagng1akn2gatng3drn3genn3gern2gesngfø4ng5g2ng5idng4lungo4dn7goen2gorn2gotng2sjng2skng5ye4n1h2nhat5ni1akni2bl4niby4nibå4nicrn8idan5idéni6donid7rnids44niegni1elni3ke2nikj2nikr4nikv5nilu4nimo2nimp4ninfn1inn2ninv5nio_nion24niop7niosni2plniss46nisu6nisy6nitj4nituni3tynit5z2niub2niut4niva2niven6jahnjav9n2jedn4jeen6jein2jetn2kakn2kaun4kehn4kidn4kienk1k4n1klan1klunk3lyn3klænk1lån1knun1knyn4kofn6kotn6kovnk1s2nk3ven6kvonlu4enmik3nmi8ln2nadnn4ann2natn2navnn5d2nndø4n2neen6nefnn1ein2nevn2neynn3g2n4nidnni3en2nimn5nisnn7k2n4no_nn5ofnn1opnnst6nn2sønn7t4nnu1inn1utnn1ynnny4tnn7øknn1øvnoa4gno1akno4blno5co4noef4noei4noekn1offno5idno3inno1kinok8rno9le2nolj4nomjnom9m5nomynon5tn1oppnor5g4norkn4ormnor2sno3ræ4nosp2nosynot3s4notyno3ve6n3p2n4påk2n1r2n4rebn6reon6ri_nro6tn1sa_n5sagn1schn3scon2sedn2seen6sefn2segn2semn2seuns5frns3hans7hens5hins1kvn1slåns3minso4dns1ofn1solns1ovns1prns7s6nsså5ns1tjns1ukns1vin4svunsy4dns1ytn5sønn5tabnt6asnt4atn2tean2teen4tefn2tein2teont4ernti1an4tidn4tign2tion2tipnto3an2tobn2tount1ovnts2tnt3t4ntu9entu4lnty6enu3annu4avnuft44nu4h4nulu6nulynu9me2n1unnu3plnu4renus7lnuss4nu6stnu7tan7utlnves14nyefny5geny3ke4nykony1lony8pany4runy5senyst4ny3teny3trnø2da4nøddnø1flnø1frnø7gr4nøko4nøksnø9monø5munø3p4nø7ranø1rynø3senø1sknøs4lnø7tenø7trn6øttnøv4dn7øyh4nøysnå6asnå8ennå6etnå2lanå8man1å4pn1å6rnå5sanåse4o1allo3alto1a2mo3a6no9ando1a6poa6réoar5moa9téo1a4v2o3baobb4lob4boo4beao3bes2o3bi1ob1jo1b2lob4loo1b4oobo9aob1reob1riob5stobyl5o6daboda4fod9doo2debo2depo2desodko5od3ovod3skods8todu7so4dy_o4dybod5øko5døsod5øyo4einoek6soe4muoen5ao7eneoen5toet2hoe5tio2fa_o2favo2febo4feiof6frof2fuof6fyo4fipof5leof1reof8sao2ga_o2ge_o4gedog1eio3getogie2o2gifo6gigo2gilo2gimo2gino2givog7laogly7o2go_og6raog5råogs4aog1skog5slog5syogt6rog1unog7ås2o1h6ohm9ao4ho_o1idroid5toie4noi5eroi6esoi4lao3in_o1ingo2is_o6isao2iseo4isio8je_o4jo_ok1akok2aro3kasok1efo6kev4okkeo1kluoklå5o8ko_ok8oloko4so6kovoks4eokst2ok5taok3tiok5tookt6roku6to5kvao3kviok5øy4o1laola5tolbu7ol3doo6lebo2ledo2lefo2leko2lelo2lemo2leso2levol4fj3o6ljol9kool6kuol5kvol2luol2låol4må2o1loo4lo_o3loeo4lofolo3iol3opol7sools8tol2trolu5lol5vaol1vooly7dol5ørom4asom1avom3bl1ombuo5metom1euo2miao2mibo2migo4mioo2miro2miu3ommøom1opomo1v2omre2omro2omru6oms_oms4øom3tiom3tvo2m1uo3muso2møkomø4ro4naco6nako4napo4ne_o2nemo3nero2nevong3don5giong2ron2guon4gyo9ni_oni1eo2nilo2nimon5kuon3nion5nyo4no_on4shons1ions1lons1vons1åont6aon3teon5tiont2ron5uron7å6ood1so1offoo2k1ool7aoo6moo1o2poopa8oo4peo6opio1o4roo6spo1o4vo4pabo2pako4pauo3peaope1i2openo2per2opeto4piro1plaop3liop9luop4ne2o3po2opp_4oppa4oppe1oppgop6pr2o1prop6reop7ruop7råo2ragor1ak2oralor6apo4rauor7by1ordnor1eior1elo2revor3geo3riao2rigo6rim6oris6oritor5kaor5koor5leormæ9orn3to3roao3roeo5rogoro5io1ronor1opo5rotor3sior1snor1suor3syor9søortå4oru8doru4ho5rumorv3so7ryaor1ynor5øror1øyor5åso6sado2safosbi7o2sego2semos2eno4seuos2hio1skoos3leoslo1os5luos5løos9maos5meos3mooss9los8svost1oo5støos5øyos7åro5tado5tasote7dot6eio2teootfø4oti2ko6tjaot6nåo2to_o2tobo6tofo4toio2tolo2toto2touot6shots6åoty8eot1ytoul5lou7riou5roou9saout8aouve4o5vaeo1vakoved3o1veio1vel4ovenove2ro1vet2o1vi6ovna2ovnio5vo_o7vomov1oro5votovs1po7wasowat2oy9aroys5lo1y2tôr5eip5ad_p4adgpads46pak_6paka4pakepa3lepal1j5palm4paløpa5mepa5ne4panvpa4ny2papapa3pe4papo4papr2parbpar5g2paripa1ro4parrpar5upar7v6parø4paråpasa5pa9se4pasp3passpas9vpa3te2patupau7k2p1b62p1d4pdø9dpeak34peddpe3de4pedr4pedu2pedøpe7dåpe3erp5eftp5eggpego4pe4ilpek4l8peku4pelapel9d6pelj4pelu2pely2pelø6pelåp1emb6peny2penåpep7p3periper5kper5n4pero2pery6perø2pe1s3pes_pe3sepe7si6peslpes4n5pesspe3tepe3ti2petj2peto4pett2petu4petø4petåpe5vip5evnpfri42p1g2phav27piarpi4as4piavpie2npi9frpi4ké8pikk4piklpiku5pi5lapi1lo3pingpi2nø3pi2ppi4pi2pisopis1tpi9tapi5té2piti4pitj4pitrpit5t2pi5v4p5k4pka5v2pladp4lakplap3p2lasp2lat2ple_2pledp2lek4plev4plitp3livp1lokplu4ep4lukplun32p1n4p7nerpo6empo5id2pokepo3le6poljpo2lupom5s4pon_pon5dp5opnpop1s2por_po1rapo8ré2pori2pork2porvpo1ræpo1rø4posjpo2st5pot_7potapo3te3poti4potr2po4vpove6p2padp2pakp2papp4peep2peupp1idpp5impp7irpp1ofpp5ompp1ovpps2ppps2tpp7t2pp1ukpp5utpp3ø4ppøs84prad2pran4pray5pref1prem1presp3rif1pris2prit1p2ro8pro_3prof3pros6prør5prøv2prøyp1sa_p3se_p2sekp6sibp7sisp2sleps4nop3sodps5pups3s2ps3tvpsu4rp2svap2svep4svæ4psysp2s1øpsøy8pte6kpto7gp4toup4tutpu4brpu7lapull62punn3puri3purkpur5upur3vpu7sapus4hpu1ta4putg2puts2putv6putøpver7py4dr3pyrapy1repy1ropys6tpø1kjpø9tapø9tepå1k2på3pepå1plp1åpnpå5smpå3t2que7r4raam4raar4rabr2rabyra3ch5raci4radf4radj2radmrael4ra2fj2rafo2rafr6raftra4fura6fy2ragl2rah67raidr2akkr6akr2raks4rakvral3gral1jral7mra5ly4raløram3bram1o4ramu6ramyr4an_r4aner4annra5nu4ranø4rapara1pl4rapo4raps4rapu2rarbr1arg6rarn4rarrrar5sra3rø4rasa2rascras3hra6slras7vra1tar6atera1to6raty7raud6raug6ravd4ravgra1vi4ravlrav6r4ravtra5vyraøy42r1b8rba3drbe2drbie8r2bigr2bikr4dabr5dagr5dahrdal4rd3d2rd1eir4deor4didr2difr2dilr2dior2ditr2diurd5jer1djurdnæ4r9dobr4dolrd1opr6dorrd1rird5trrd7tørd5ver4dygr6d5ærd3år2rean4reavre3dir1edl2redo2redr6redy2redøre3er8refa4reff4refi2refj6refr4reft2reføre3ge4regg1regireg1l2regr2regå2reid2reie4reikrei9l6rek_4rekjre7ko4rekur8el_re9la6relgr2ell4relv2relæ2relør1emb6remnrem1s4remu8remy4remåre5ni2renkr3enlre5no4renu5renz6renæ4renøre5og2reop5reou1repu3rers2rerå1res_2resare3se2resj2resk1resm2ress1resu2resy2resø4retj2rety2retøreu6r1revyrfat5r4fikrflå3rfyr4r5ga_r4gefr2gemr3georgi1ar2gikr2gilr2gimr2gior2girr2giørg2ler4gogr3gomr2gotr3grurg5scrg1snrg2syrgu7drg6utrhav2rho3dri1anri1ar6riau2riavri5dari5dirid3tri1elrie4nri1er2rifa6rifj1rifl2rifo2rifuri3gi4rigjrig2s5rij_5rikdri7ki4riklrikt64rikå2rila2rilø4rima2rimirim7l4rimm4rimo4rimu4rimy4rind2rink4rinn2rins2rint2rinvri6nø2rior4ripe4ri1r4rish2risj4risv4risy4risøri3teri7ti4ritjri5tr4rity2riunriu4r2riut2rivi6rivo4riøkr2jesr4kaor3ke_r2kehr6kekrki3drki3erk1k2rk2lirk2lør3knor2kobr2kohrk1strk5tirk5torkå4krle4ar2lefr3lepr4leur3l4irlog2rl4skrlu4er6l5zrm5avr2mekr4meyrm1jermo4er2mofrm1oprm1slrms6nrm1strm1surm3termue4r9må_rmål4r9mårrndø4r3ne_r2necr4nefr2nelr2nevr2nésrn5g6rn5k4r5no_r4noarno5br4nodr4noir6nokr2nomr2nosrn7sern1strn3tern5tirn7trrnt4vrn5ugr7nøtrn3åsro1akroa4s1robe7rodoro7faro2guro5kirok5nrok7srok5v4rolj2roly4romk2romrrom3t4ronn2roppro9pyror3aro3rero1ru4roslro4smro5tu6rotyroun2ro5utr5petr2påkr8raar2ragrra3rr4rebr2refr4reorre5ur6riprri5vrr3m4rro6er5romrr5s2rs3abr3sakr5samr3sesrs1inr7sjar4sjhr4skir1skjr6sklr1skrr1skursk5ørso9ars1ovr5spir4spårs3s6r1s2trst4rr7stårsu9rrs1versy3trt5adr4tecr2teer2teor4tevr2tior2tipr2tivr5to_rt8rart2sirt3t4r7tugrt5ytrt5øl6ruavru8blru5borud4rrue4rru9la4rulir2ullr7ulvr7ulyru5rarus5jr4uta4rutdrut8e2rutgr1utkrut9o6rutr2rutvru5varuvi8r2vesr2vevr4vosr4vovrv2s1rvå7rry1a4ry2drry7fery5flry7lery8rer1yrkry9rory5røry5ta1rytmr3ytrræ7lerær8trø8arrød1s4røeprøf5lrøk3l4røknrøk7trøk1vrøm1arøp9l5rørlr8øs_rø3serøs5vrø8tarø1varø1vi4røya3røyr4råag2råkjråk1vrå5lur5ånd2r1årrå5ru4råsb2råserå5si2råsjrås4t6råtarå5trrå5tu5saa_s6abes8ablsa5bysa3ce4sadmsa4do2sadvsae5d3saen7saer1safe5sagasa3iksa5irsa1is5sak_sa2ka3sakb3sakd5sakf1sakh1sakisa4kj5sakl5sakm4sako3sakps4akusa1la4salb1salgs6alisa5losa1lu3salv2saly1s2am5sam_sa2ma5saml5sammsa4mys5anmsa2nosan1s2s1apsa2po1sara2sarbs4ard3saris1arrsa4ru4sarvs4arys6ast2sasu4sasysa1tasa3tisa1to5sau_sau4d5saue4saug5saum3saus4saut2s1avs2avasav5n3savu8s9b4sbi6es6bugsbul32scels3cer6sch_6s7cl4sco_6scoc4scoss4cus8s9d6sdø8v2se1a3sea_sea4gsed5dse3de5sedl4sedo2sedr2sedu2sedø5see_see3d2seef2seegse5enseer15sees2seevs1eff6segase2ge3segm2seid2seigsei5k6seim2seinsei5r3seis5sej_3seke4seki2sekj5sekk2seko4seky4sekå2selasel1d2selo3sels2selu2sely2selæ2selø6selå3semb7semdse5me2semo2semås2en_s2enes2ens4seny2senæ6senø2seo27seodse3orse3pe3septs2er_se3raser5ds1erfs2eri5sernse1ru2sery2serå5ses_4sesc2sesese3sj5sesose1stses1v2sesy4sesøses3å7setl5setn2setos4ets2setu2setv2sety6setø3seum4seunseu2tsev4ds1evnse3vr2seynsfes5sflå36s9g6sga4lsha2ks7hats3haushea4s4hi_s6hip3show4s5hyshø8l4siap4siavsi2bl4sidy4siegsi1elsie4nsie4s6sifesi3fl2sifo2sifu4sifø4sigisi5grsi3kasiko35sil_3sildsil5jsil2k2silø2simpsi3musi4ni4sinj2sinn4sinvsi6nøsi4sksi4sn4sisy3s2itsi5ta4siut5sivas2ja_4sjams4jansje3g3sjels6jim2sjob5sjok4sjom9sjon2sjor2sjou2s6jtsju1a6sjub4sjun4sjur5s2jøsjø1p2ska_4skabs2kad8skae2skak2skam2skas8skays2kehs6keis6kevs2key7skia4skid5skie5skif5skip2skir6sklas1knu4skoa4skof1skol4skom4skoo2skoss2kotsk8ra5skud1skuf2skun4skup3skvus6kyas6kye4skyr4skys3skyt6skø_4skøe6skåt3slals1latsla1v2sle_6sleis2lel2slers5lev4sleys5lia2slid6slig2slin3slip6sluf4slugs6lups4lutsly8t2sløns6lør2sløss4låes1lån1slåtsma6d4smansmeg54smei6smess6mias4mies4migs2mitsmo7as2mok6smot3smugsmul26smøn4smøt5små_små5r8sna_s4nab7snak4snav4sne_4sneb4sneds6nees4neg3sneis4nel2snem4sner6snes4snets6nifs2niksnir4s8no_s6noes3nums4nur7snut8snyh5snøesnø1sso3also8ar4soav2s1obso2blsofa1soft1so2gaso8giso7glso5id5sokn4soks7sol_1sold2soljso2loso4lø3som_5somh4soml2somrs1omsso2nuso3pr1sor_7sora5sorbso2risor5n6sosf4sosjso4slso5tesots4so3va3sovjs2pal4spas4spe_spe4as4pees2pels5peps2pio2spip2s1pl4sple2spoe2spol4spotspo5v1sprus4pry5språ2s3ps8spub2spul5s2pøsp5øy9spå_5spådsro4esro2tsrø1vs6saes4sajss6ass2segss4els2sems2seus4seyssi4ass4kåss1loss5lyss2noss4nøs2sofs2somss9risst6rs2suls3surss1vessy5r4stah4stao2stap1stas1stat2stea2stebs2tee4steo2step2stes4stet6steåst5he4stib3stics2tifs5tij5stir2stis4stiås4tja4stjus2to_1stof4stoms1totst5ou8str_6strh2strys4tuas2tue6stur2stya2stydsty6l4styv2støk5støl6støm5støp5støtst8øystå5k1su4a1su2bsub7lsub3o5subss3ubåsu8er5s2ugsug3g3sui6suk3rs1ulu2sulysulæ53s2umsu2mosums63s2upsupi9sup4rsur5d1surf4susisus3psus3ssu2sysva5asvai5s4vie4svig4svil4svir2sviss8viv4svol3svuls3vy41s2vø4svæs2s7våsy2ersy8ka2sykosy7mesynk4sy4ras6yre3sy1ssy4sesy2sl2sy2t9syttsy2vå6szt_4sætts1øde9søk_5søkj5søkk2søko3s4øl3s2ømsø6må3sønns1øns7sørlsør3ssør5ø3s2øs4søs_sø8sas1øve3søvn8søye3søylsøy2r5s4ål6s1ån9såpasåp9uså6rasår7øs7åsas4åsbs5åsesås5ksås5tsåva74tabotab2rtab2s4tabøta2data6du6taei4taek4tael1taenta6es4tafl1tage4tagjta7is1tak_2takrta1kutak3v1tal_3tale1talg7taljta6lå2tambt4ametam4it6an_ta2na1tane1tank2tanl5tap_1tape3tapi4taplt6ara2tarb4tart4tasata3setas4p4tasuta1tatati19tau_7taue4taun2taut3tavlta9xy6t1b2tba3dtba2nt6be_tby3ktby4stcen4tch5e4tead2teaktea6m2teap2teartea4s2teau2teavt5ebbte1co4tedi4tedo6tedu4tedy4tedøte3e48tefa4tefi4tefl4tefo3tefø2tega4tegg2tegh2tegj2tegl2tegu2tegå5tei_t3eiete1im2tekj2tekl2teko2tekr2teku4teky2tekø4tekå2telo2tely6telæ2telø2telå6temntem3s4temø3ten_2teng6tenó4teny4tenæ2tenø2teom5teon4teop2teovte3pa9tepé4tepr3terhter5jter5rter7v2tery5tes_2tesa4tesj6tesp5tesr3tess2tesu2tesyte7så3tet_te3te2teti2tetj2teto2tetu2tetv2tetyteu8kt1eur3teust6eva3tevlte3vr2tey64téle2tése4tésttfe6etfe4ltflå32t3g2t4ga_tge4atgei5t4gi_t4gå_t4hapthu6sthy5r2tiadti3ag4tiau2tiav2tickti2datid7d4tido4tidr2tidu6tidy4tidøti1e22tief2tiei2tiemties3ti3et2tifa2tife4tifl2tifo4tift2tifu4tifø4tigj2tignti5ke6tikjti3ku6tiky4tikø2tile3tilg4tilm2tilu2tilø2timltim7s2timu2timy2timø2tind2tinkti5no2tinv4tiny9tiol4tiopti1orti1ovti3pa4tipr3tipsti1roti3setis5l4tisn4tiso2tisyti7tati3teti1tj3titltit4rtit3s3titt4tiub2tiut2tivoti1ø82tjel1tjen6tjep2tjert5jev2t1ji2tjubtju4e2tjun6tjur4t3k2t6kagtkly96t3l6t6leftlu4etlå7rtma3dt2mamt2mekt2most6neet8no_tn5sk7toantoa6t6toau2toav6tobsto5da3todo2toek6toeltoe4t4toggto6glto2gutoil3to3ki2tokj2tokkto3kl5tokt2toku2tolj3tolo4tolå2tomb2tomf4tomgto3mi4tomkt8omm2tomrto5na2tono2tonu2to3o4toprto1ra4tordto1reto4rø4torå4tosato2sh6tosj2tosy4totato5te6totyto1va6t3p2t4påk5trapt2rat3travtre1c4treit2rer2trest1ret4trevt6ribt4riut2riv5trix5troa3troet4roftro5gt4rokt2rolt2rostro1vt8ru_t8rua3trugtru1i2truttru5vtrø8a4trøk4trøm2trør5trøtt5sa_t5sabtsa2gts1ant5se_tse6dts2emts4ests4fæt5sirts2luts5løt5sokts2pits5s4t1st4t5stuts3tvt4suatsu4lt5sykts5ytts5øvtsåt8t3ta_t2tabt2taft4tavt3te_t2teat3tedt2teet4teft2tegt2teit2tekt4temt3tent2teott5hetti5atti3et2tift5tigt1to_t2tontto5ut5tryt1tumtt1untt1uttt5vet5ty_tty8et1tørtt3øvtt1å45tualtuba3tu6bå5tueltu1int5ukat1uke7tukt3tula1tuletum5mtum4s3tun_4tund3tune9tuns3t2urturi4tur1otur3ptur1ø1tus_tu1sa3tusb3tusftu4smtus5otus5u2tutgt5utjt5utkt1utrtva8kt2vett5vik6t7vo6twa26t5yo3tysktys3t2ty2tty8tatøf3l2t1øktørk4tør3ttø8satøt5atø3tetøtt6tøv6dtøy5atøy5rtå5kitåk6rtå3net1åpnuak3su1al_ua7laual5lual3oual3uu5anlu3ansu1ar_uar5du4arruash3u5au81uavhu4ba_ub4boub2brub4buubi6su1b4rubu8eu3da_ud2drud2dåudea9u2debu2deku2depu2desudia2udio5ud7irud7jiu7dobu6doeu2dotudse43u4dyue5a8u1e2nu7eneue5riu2ermue4seue2siues6nuet8rueul8u4fe_u6febufe6euf1f4ufi9lu6foauft3au5gagu5garugby7u2gemu5genu3geru2gevu5gisug1laug5lyug7nau4go_ug4reu4grøugs4kug7so3uhelu4i6cui3e6uil5lui3neu1ingu1ismu1ittu4jasu8je_u1k2au7karu5katu2ke_u4ked4ukemukho7ukk6aukk7nukks6uk8luu2krauk2sauk2siuk2souks5tuk2søuk6tjuku6eukys8uk3ø4uk5å4u4la_ula7du4lefu2leku2lelu2lesu2leuul4foul4fru3l4iulie8ul5kaul6lyul2løulm4uulo6iul5opul4skul8snulss8ul2stul4tou7luau3lue1uluku5lupu5lusulv3tum5auum3avum5be2umfoum9jaum3meumna8umo6gum5okum2snums3t6um7tum5ut4umveum7øyu9naru7nasu3nat2und_6unda4undsu2nedu4neeu2nelu2nev1ungdun4gou4ni_u2nidu4nimu3ninun7koun4krun2nou4no_uno7tun5utuom7suo1reuo5roup3avu5peru8pi_up3liup1p2upp5su3prau2radu2rafu4ramur7auur1avur3diure4lur3geu4ri_u3riku3rimurk5su4ro_u6roc5uroeu2ropur1orur3reur2svur5tiur4touruk6ur6uluru7vurv3su6rysur1ødur1øyus7auu2seku2semus4idu4sjiusk4lus1kou1skrus4kyu4sluus7møus1okuso5lus1oruss1lus2svu2steus5tius1tju4ståu2surusø6mus1øyu1taeu2tag4utbiutch5u2te_u2teau4teeu4teiu2tekut2enu2teo2uterut6eu6u3tiut6juu8tni1utnyuto5suto4v3utprut4påut3re5utruut4rø4uts_2utsjut3sk5utstut1trutu5e2u3tyu8ty_u5tørut7åku3tålut1ånut7åru7umau5umeuve3su6vevuvi6kuv5rauv9saux4a4u9årau7åreva3amva8an6vadjvad1rvaf6rvai5rvai5s6vakh4vakovak3r1vaktva1kuvak3vva1lu4valvval7åv4ane2vangv4ansva4nyva5po4vasava2skvat5a5vatnva1tova6trvat1s2v1av2v1b2v7devv7doiv7donve6agve2d1veds2vedø4vedå6ve4erve5ge3vegg2vegj4veglveg5n2vego6veit4veka2veki4vekj2vekl2veko2vekr3veks1vekt2vekå5vel_2velovels2vel5v2vely2velæ2veløve5mave2no2venuve1ru6veryverø64verå3ves_4vesh4vesi4vesj2vesl4vesp2vesøve1så1vet_2veta4vetj2veto2vetr1vets6vetv4vetyve8um2veva2vevi2v1g2v4ga_v4gi_v4gå_vi1anvi6blvi5devid3rvi1elvig4mvi4guvi5gø5vikb7vikgvik5n4vikt1viljvil5mvil1ovi2løvim7pvim7uv6ingvip5s4viro7viruvis5mvi1sovi4spvi4trvivi34v5jovju3t6v3k6vk4le6v1l2v6labv9ledv9legvl6elvli7vv3nadvn5alv9narvn5dyvne7bv2nedv2nemvne1sv2nevvn5t4vn5ørvo1alvo2arvo4gu4vokovoli7vo4navons62vordvo1re4voro4vosj6votr2v1p4v7rarv6ri_3vrid7vriev4robv4rofv4rokv4ropv6sa_v6se_v4segvse4nv2serv6si_vs1invs8kevs1kvv1s2nvs3nevs3nyvs3nævs5odvsom5v7sonvs1orvs2pevsøl5v8så_v4ta_vta6sv5t4iv5t4rv3t2vvty8evu2d1vud5dvuds42vung6vu6o2v1utvæ1rav3ø4dvø7li3vøre4v1øyvøy6evå5ne4vånu6våtfvåt7å5waldwal4kwal4lwash3wboy5we5rewes3swett4wich33wiczwi3niwi5rawi5tawout7wurs6wyor2xan5t5x6idxi5e4y6an_y2anayan7ky1arky7arrya5siybde3ybyg5y8ce_y2co3y6dabyd5avy4deoy2depyd6jeyd1jiyd3opyd5ovyd1rey4droyd3siyds4vyd1uny4dømydør5yd1øsyed8ly5eksy2enhye5niy2enky2enlyens4y3ernye5smye9teye5tyyfan9y4fley8ga_yg2doyg2døyge5iy2gesy4gevyg5gjygg5lyg6gryg6guy5gloyhes5y9in_yis7tykap3y3keny3keryk1kjyk4kyyk1lay1kloy5klæy2koay2kotyld1ry7lesy4levyl5k8ylke2yl3s6y6meiy4mo_ymo5eym3p2ym4seym8sly2nely6nevyn2grynko3yn5nayn5neynn4øy4no_yn2siyn2skyn4styn2suyo6nuy1o2py1o2ryo5reyout5y2pe_y4peey4pi_y1p2lyp3peyp5s8yr5avyr7dayr5døyrek4y1reny4reoy1retyr7gay4rifyr5kjy7roeyr1opyr5r8yr5skyr2spyr4svyr3teyrty8yr3økyrøy4y1rå1yråd2y2råmy4råty4råvy4sedy4seey2segy2seky2semy4seuysi8ey5sjkys4miys4nøys2peys2sjys2soys2spys4suys3tayst3rys6tyys1veys5åry2teey4tefy2tegy2teoy2tetyt9jayt8rayt1riy5tråyt3skyt5svytt4e2y3tuyt4ysy7tå8y4vaky2vedy6vevyv1år4zaesza4g5zani45za5vzebu9zeli5zen3s1zifi5zingz5int2zisyzo1f2zo4nozo5rez1za_æk1jaække7æ4le_æ4levær1d4æ2reaæ4redæ2refæ2regæ2rekæ2repæ2reværhø8æri6s4ærk2ær4nåærom5ær1skær2spæ2r1uærut5ær3å4æ8se_æ2s1kæ4te_æt4taævar5æve4s6ø1a2øa7reøbl9uød3agø4dakø2de_ø6defø4demø4deoød2scødt6rø6d5ø4ø1e2ø5eneøf3feøg5akøg5alø7garø5gasø3gerøg5gløg8gåø7g4jø2g2røgta54øg4uø5ingø5isk6ø1kaø5kavø6kehøke1sø1kjeøkk5r2øknaøk4siøk2soøku4røk7veø2lahø6lamø2levøl2keøl7opølrå4ø5lukøl7utølva6ølv5oølv7rø4me_ø9met1ømfiøm3opøm1stø2m1uøn2adø5nasø2nemønni4øn2nøø6nomøn2taøn2toøn7u8øpes4øp3liøp6pløp6s1øpsa4ø2ra_ørd4eø2reaø2refø2regø2rekø2repør6etør1euø2revør5feøri8mør4kåørn4eø1rosøro4vørri4ør4scør2siør2størs9uør2svørs1åør3toørum5ø6rutørø1vør1åpø2se_ø2semøs5joø4sluøs2meø1s2pøsto2øst1røstø4øt3akø9tarøta4sø2te_ø2teaø6tefø2teiø2telø3tenøt7riøt1saøt4tyøv5aaø4vekøve1sø5vikøv7neøv6nøøv9o8øv9saøy3aløya2nøyd8i5øyebøy2eeøye4nøy4epøy1gløyks4øyk5tøy5naøy5niøy3røøy5siøys2løy4smøy1trøy5tø5øyvååa4n5åber2å7danå9darå4dedå4dekå4demå4deoå4depå2desåd4raåd8reåd2skåd5stå2eleå7enså4ga_å4ge_åg7eiå2gesågna5åg5neågs6kåg5slåg7spågs4tågu4lå4gå_å3kanå3karåk7avå4kehå3kenåke5så6kidåk5kaåkk6låk7kråk3læåko4såk6raåk3rååk1s2åks7låk3t4å2k3åå9lasål9avå2lefå2lekå2lemå2levålgå6å6lioål3oråls7iål2spål5tiå6me_åm1omåm5øyå3narå9nasånd3rå4ne_åned4å2nelå3netå5perå1plaåpra5åp2s1åp6taår3akå9ranå2re_å5reiå6relåre7sårfi4å7rivår3k2årn5sår3onår3opårpo8års1uårs1vår5syår3unår5y4å5r8åås7auå4se_å4seeå4sekå4semå8si_ås8kiå1skjå1skrå5skuås5neås3niås7plås5saås5seås3siåss3k4å1stås3unås7utås7væås5øyå4ta_åta2lå2te_å2teaå4teeå4teoå9terå2tesåt7ovåt1reåt1ruåt5skåt4tiått3oåtts4åt4unåt5veåt1øvå4vegåve5lå2vevåv7s6", + 6: "_ab4ba_ab7be_ad1s2_af5t4_ak3kl_ak3kr_ak6ta_ak5tr_akva7_alfa3_al5gi_al5lo_al4na_als5o_alt4a_alt3o_am4s4_am6ta_ana3b_an3er_anes5_an3ge_ann4e_an5s8_ap1p6_arbi5_ari6a_ari8e_ar5ka_ar3ne_ar9ti_arvi6_as8ka_at4ki_at2o4_atte4_att6r_au8de_au8ga_au4ge_aus9k_au4sp_av7s6_ba6by_bi6en_bla4d_bo8da_bogs8_bo8la_bu4et_ca6se_co4st_da4ta_dau3s_de4so_di6er_di4sk_do4en_do4er_do8et_dome5_do4ra_du4er_duft3_duk3n_du4st_dø6r3_eb4ba_ed4da_ef4ta_ege5l_eg5si_eid5a_eik5a_ei3ni_eir9u_ei5te_eit9r_ekk4o_ek3li_ek3se_ek4sp_ek8ta_ek7to_els6a_els6t_em3b2_emfa9_end5r_en3ge_engs6_en6ka_en6sa_en5so_en3sp_ent4r_en3ø4_er4ke_es3ka_es4so_es5ta_es3te_es5ti_est3r_es7tu_et4na_ets4i_et6ti_ev8ja_fela9_fel5l_fe4ma_fe8me_fem5t_fer6s_fe8sl_fi4b5_fis6k_fjel4_fre6e_fy8se_ga4me_gel4e_ge3ne_gen5s_ge4st_ge9sv_gis7p_glo6i_glo9v_gly5s_ha6vi_hei5e_he4t5_hil4l_hu4di_hvit3_hø4re_hø4va_hå8er_i4her_ikke5_i3k6l_i4la__i3leg_i6les_il4ja_il6sk_in5ad_in5de_in3gr_in5k6_in4n3_io4na_i4rer_ir7k8_is7k6_is5pa_i5spe_is3s4_is5sk_is7ti_i6s5ø_i4van_i4vel_i6ven_ja4ne_je5re_je4ta_ju6la_jule3_ka5me_ka3na_kau9k_kier3_ki4na_ki7ni_kino3_kje4k_kle4s_ko7gr_ko4la_ko3le_kol5j_ko3pe_ku4le_kå6pa_la4ga_la3tr_la4va_la3ve_le8ar_le4er_le6et_lef3l_lemu9_le6o7_le7ta_le2u3_le3va_li4e4_liga3_lik3o_lik3s_li4ma_link6_li6ra_li4sa_li5ti_lo6na_lo6ri_lo6te_lo4va_lo3ve_lu4na_lu6pa_lyd3s_ly8ge_ly4sk_løv5i_lå8ma_lå5re_mag9r_ma3ka_ma4si_ma6st_ma8ta_me4d3_mek5l_me3ri_me4sk_mi6kj_mo5de_mo6er_mo4ta_mo4tr_mu8ga_my8ka_mål3o_nabo3_nan5s_na3tr_nei5e_ni8ar_ni6er_nig4l_ni8sa_nita9_ni4to_ni4va_no8ka_no8se_nød4d_obo5e_ok8ke_old3s_ol8la_om4me_om5s2_ond3s_on6kl_on6na_op5ar_op4pa_op4pe_op4pi_opp3l_or4da_or4dr_or5ga_or6va_ot3to_over3_ov8re_pe3do_pek5t_pep3r_pe4st_pi9ra_po4et_po3la_po2p1_pop3p_po8ra_po6st_på5d6_ra6et_ra4ka_raks7_ra4na_rap4s_ra7ti_re4al_ree6l_re6kn_ren4t_rep5s_res9s_rev9n_ri6ma_ro4an_ro8di_ro4mi_ro6pa_ro3pe_ro4sa_ro8va_ro3ve_ru8ka_run7g_ru4sk_røy7e_rå4en_sag6n_sau6e_sen7s_si6er_si4va_sje4i_skat4_ski6n_slim5_sma4s_smo9g_små9l_snø3k_so8de_son6a_spe6e_ste4i_stu8a_su4ri_su5te_sy3ti_sy6v5_sø8ka_sør3a_søye5_så3re_tak9r_tam5m_te7si_tid5r_ti4ki_ti4l5_tili6_tokk8_to3ro_to5t8_to6va_tra7c_tre3b_tre7p_tu6na_tve6n_två7g_ty8et_ty5ti_tøv9d_tåp9n_u4er__u6era_u4ere_uf8sa_u4ka__u4le__ule8k_u6let_u4lin_ul6ka_ul6te_und5r_u5nek_u9net_unn3s_u5raf_ur6an_ure4n_u2r2i_ur4ke_ur6na_ur8ta_u5rut_u4sa__u4sas_u3ska_us3se_us6t4_usy5r_uta4g_u3tak_u4ti__u5tol_u3trø_ut3t4_vei3s_ve4l3_vel5d_vel5l_ve4ly_ve8læ_ve4sl_ve4st_vete5_vide4_vin5n_vi5tr_væ4ra_vå4r3_vårs6_yn4kv_yr8ka_øg8la_øk6ta_øl3ed_øl3s6_øl3v6_ør4je_ør9sm_ør3st_ør8ta_øy6na_øy6ra_øy4re_åp6na_års3k_å3steaans9ta7antraa4ri6aa5t6hab9b8lab4butabi9erabi9laa4bistab4loka5bo9aa3boerabo3kla3borda4buela6buska4buteache3aad5anta4darta5denda3denea5der_a3desla3det_a3dets3adferad7oppa7doraad5rafad7ranad7relad5repad3retad3ridads5tead3stra4d5øyaf4fanaf4feiaffe3saf7fi_affi3daf5f4uafi5anafi7rea4fitiaf9la_af9lara4frikafra5saft5eiaf6t5oaft1s4afø5ria4ganfa4garta5gas_a7gersa5geruage5s2a4getaag5garag4gasagg1s2ag6gutag4lemagmo8eagn5omago5d8ag7ras4a3gruag4selag3semag6sjuag4skaags3tragu3ayagå8vaai3er_ai5ke_ai4s3kaisk2hais6omai5s4v1a2kadak3aksaka4o5ak6arba3kei5akel8ea4kerøake5smakes6pa8keteakhe6nak7indak5ke_ak3kenak4kesak5kimakk3olak4kulak4k5vak3levak6likak6lusak5om_ak1o2vak4pe6ak5regak3resak3ro_ak3roeak4sekak4ses3aksjeak2s1kak7skuaks5tiaks4trak4tabak4taiak4takak6tamak4tapak4tasak4tavak4tegak4tek7aktigak5titak6treakt3rå5aktueak3valal7adrala9gaa5lagmal3allal3anaa3landa5laneal3anlal3anvala5pra5lar_a3laraal3arka7larlal5arra5larsal3arta7larvala7tral5aukala4vaal4ba_albo4g5albumal7derald3rea9leg_a5lekea4leksa4lelial8en_a7lepta4leruale1s2ale7sea4leska4lesla6lesua4letaa4levaa4levi3alfabal3gebal4gåral3illa9lin_al3intal9ja_al3je_al3jeral4joral2j1ualk7s6al4lapal5leaal4lekal5let3alliaal4lidal6lulal6mekal4metal1o4bal3opeal7ordalori5al3oveal7sedals5løal6spuals4tealt6akal3tedalte4tal5undal5va_al4vedalve5salø5seal7å6tama5isa5makiam3aksam5alda3mar_a5maraa7mas_amaso7am4bar3ambasam4batam3eiea3meisam3eksami7naami7neamisk3am4madam4nedamo6veam4papamp5eiampes6am2p3lam4punams9utana3laanal4f3analya3nanea5nanganant8a6narban5artana3to6an7auanaus7an9av_3anbefan4dekan5denan9detan4dosan5eggane3rua5nes_a4nestane5sv3anfalan4gedan4gi_5angivang5ofan5gosang4sman4gunan4gå_a4nisjan4koban4kopan4kosan2k1rank3reank3ut8an2kvan5nenan5neran5nidan4nom5annonan4novann6slann3sta9noa_a7norma2no4vano5vaan3ove4ansan3ansatan4sekan4ses3ansikan4skian3skjan5skøan6sløans5oran1st61an1sv4ansvean3tedan4timan5toiant5s6an4tulanus7a3anven6anvina2n1æ2a6pinsapi6r5api7seap4pleap5pliap6priap5renap5retap3rinap3selapse4sap8s9lap4s5øa6p5utara9biar5aksarak5tar3alta4ramia4ransa4ranvar5augar7aukar7avh6arbeh4arben6arbetar7debard3re1a2rea4arearare3ina4relaar7emn3arenaa4renia6rerka4reroa6rerøa5res_ar3evnar7g6har5g6iariba9ar5idrar3innar3insar3intari3sear4kauar5kha3arkit3arkivar4klear6kodar4køyar4map5armbåarme7tar4nadar4nalaro6paar7ostar3ovear6pedar5reear3selar4sinar4sprars6trar4topart9raarts5øar4tyvar5u6rar5utbar5utnarve3sa6r5åta4saloas7augase5lea4senka7seola2se5sa6sesta4setea2se3ua7sis_asis5tas5joras3karask6etas5kisas5ko_as5koeas3koras3kotas7kraas3kulask5øyas4levas4lita2s5omas4panas7pisas9sa_as4sabas4salas4samas5se_as4sedas4sekas4sesassi3sas4sitas6s1kas2s3nas5so_asso9aas6s1pas2s3tas4stras2s1vas4sysas4søkas2s5åas6tabas5te_as3tedas4tegas4teka9stofa5stokast5ovas4troas9tuaasu9saasyn7das7øyea4tanga5tas_at5avhat7eddat5eidat3eigate3ina4tekaate7leat3emba4tenia4tenua5ter_at6e5u3atferat4ha_at8hasatili5atl9øy3atmosat4nelato5gra5tosea3to1vat5regat3renat3rera4trifat3rinat5rotat5røsat5røyat3serat7sjeat7skjat2s3øat6tatat4tidatti4sat3titatto6vatt3spatt3svat6tysatu5e4a5t6yvatør3satø9sea4t5øyat7åt8au9ar_au5da_au9detau4di_aue5reau3estau4galau4gasau4gel5aug2nau5ketauk5laau5kveau6lasau4lataul8laau9menau5raeaure5sau5retaur5s6auru4eaus9kjau6skrau5strau4sunau3ta_au7tarauto5vav3alvav3anga9var_av3art3avdela7veilave3ina4velaa4veleavens4a5ver_aver5davi4ar4a5vigavi9ke5avisaavis3tavlu9tav4nesav4resav5seg3avsniav1s2pavs4teav1s2vawe9neay9s8tba4bysba4da_ba7danba8de_ba4debba3karba3kenba3kerbake3sba8ki_bak6kobak5krbak4reba5kribak3robak3smbak5spbak7t6bal7akba4lesba4li_bal6læba4na_ba5nanba5narban9daba4nelba4nesbantu5bark5sbar5trba5senba4setba2s1kbassi4bas4sobas4stba7s8u2ba1trbat6tibau9lab6baseb4bedabb3eiebb5eigb6belob4bes6b6betab4betib6betob6betrbbi9e8bb7lenbb5rekbbu9rabb5ut_bb5utebe4bo_bebo9kbe4da_be9darbe3derbe4drebed2s1be1då3be4ga_be4gi_be4gå_be6ha_beha7gbehå4rbe2k3ibe4lekbeli9vbel5læbe2l1obe5nat4benedben5guben5spben5te4beraibe7rasbe4repber4gaberg3jberg3lberg3obe5ribbe7risber6klber5naber5nebe4ro_bero9aberri6ber5teber5tiberø5vb4e1s2be4se_be5s4i4besikbes5kebes7ne4be3sobeso9vbes7sibe4tab4beteibe7tesbe4ty_be6ve_bi6blabi5deebi6elebi5ervbik6kibi5k4l4bi7krbi6la_bi4lasbi4laubi3letbi4linbil5labil5m6bingo54b5intbi4ri5bis6hibis7kebis5sebi3s4vbi6ta_bi4te_bi5tesbi8ti_bi4trebi6tri1b2ladblad3abla6f3bla8gablak5rbla5meb4lankb4lantbleie5ble4mob6lesab4lestbli9kebli5mabli5meblis3sblo6drblom5mblues3blu9sably7glblå7sab7nes_boa5s4bob7labo6dinbo6d7rbo4et_2bo3f6bo4gelbo6kelbo6kop5bok1sboks4pbok3veboli7nbo7lo_bo5loibolst6bom1s4bo5napbon5nebo5nusbo4ra_bo6re_bo7relbo3renbo3retbo6ri_bor4ti3boskabos5sebo4stobo4ta_bo4takbo4talbo6te_2bo7to4bot6r4bot4vbra5kabrak5sbra5sebrei5ebrei3sbro9arbro1s4bru5kebru4nabru5plbru5sabrus4lbryn4sbrø5debrå9neb4s5elb2s1ofb6st7f4bu3embu4en_bu9enebu4er_bu4le_bul3lebun7debunk3rbunn3sbu6ra_bu4re_4bu3robu4se_busk7øbus6sjbus4snbus4spbus4stbuss3v4bustrbu4talbu7tem4butstby9areby7depby4en_by7eneby5ensby3ersby4ge_by6re_by4steby5tarby4te_bæ5rarbæ4re_bæ5renbø7ensbø4kesbø6la_bø6le_bø6re_bør4spbørs3tbørs3vbøy7arbøy4esbøy4etbå9desbå7enebå6regbå4repbå6t5jca4pe_ca2sa3ca6setcas5toca4to_ce4nedce4neece4nemce4netce4nevcen6toce1ro5cest3ocha5le3cham4cha7nechel5sche7techi4licho5s6cie2s5ck5ar_ck5artck3er_ck4ereck5et_cke8y5cmini4co6bidco4la_co4labco4lakco3r6aco4vercras4hcrack4creen7cures44daberdadør5da4gevda6go_da4g1rda6gunda8la_da4las6dalau4d5aldda4lesdal6soda4ma_da4manda3masda4me_da3mendame3sdam7pe6danal2d1anl4dannod4ans_dan3sa4dansv9dant_9danti4dareada4resdar5s64daseida9sko6dastrda4tek7d6atoda3toa4da5trdats6jdau5god3av5sdd3eied4demidder5sd4desud4d1redd5rundds5trd4d5øy6debar4debas3debat3debut6d7edd7dede_4dedek4dedel4dedia2ded4r3deig_d2e1inde5is_de3ist7de7itdekk3a6dekly5dekni4dekod4dekon4dekosdek6st6delad4delau4deledde4lef4delei4delid4delis4delivdel3sedel4sidel3tedel7tr6delukdel5ve6deløy2de5mademie4de4mo_de4mog5demok4demol5demosdem5pede7nakde5neb4dened6denel4denem4denet4denevde4nomdent3oden4trden6tå4deopp4de3orde4ove4depak4depapder8amder3av4derea4deredde4ref4dereg4derepde4rifde4ril5derinder5nede5rob4derog4derosdero4vder4spder5unde5rup6derus4derør3d6es_de5seg4desho9desk_5deske7despld4es2t5dest_de5sti4destj4desto4destu6desty6desup4detea6deteg4detel4deten4detepdetes74det6r3devikd7ev8ndhav4sdhu9gadi5algdia5lidia3redia7spdias6tdiats4did5ridi7elldi5en_diffe53difuldi4gat4digrudi8ka_di5kem2di1kr6dimed4dimes4dimet4d5imp2d1inddi7nendin3grdi4ni_4d1inndio3nadio4nodi3oridio5tr4dired4direg4d5irsdi6seddi4skjdis7kudis4vidi4tal4ditekditt3rdi9us_di4va_4divaldi7van4divekd7jes_dje9vedla4gad4ledid4legadle3ged5lekad4lerudli5kedlå9redmors6dodør54doled6dolisdol5l44domesdo5misdom8sadoms3ldom4sodo4na_4donkedon5stdon5t4do4pa_do4pe_d6o1rado5ran2d1orddor4dad5oriedo7ryedo4se_do4setdo3strdo5vendo4verd9rad_d5rade1d6rag3drakt3drap_5drapa3draped3rappd3rarbd5rarmd5rarr9drattd5reds9dreg_d3regj3dreied6rekad7rekk3drektd3ret_d3retnd6retrd3retsdrett43drevn3d2rif2d1rigd3rik_d3rike3drikkd9rikt5d4ril2d1rindring6drit5u1d2riv3dronndrop5s2d1ror3d4ros2d1rovdro5vadro3ve6d5rutdrykk4drø3ved3sabldsa9gad6salld9sameds1a6nds5aneds1a2rd4satfdsbø6nd2s1eids7eksds3elads3emid5sensds3e2pd7ser_d6serfds5erkds3etad5setjd3s2idd7sidads3idrds5indds3i4sdsi4veds7jords5kabds3kard4skatd5skotds3krods5la_ds5lands6lemdsli6kds6lo_ds4lukd4s5osd3spekd3speld9s8pyds3takds6tauds5teod3stord3stridsty8eds3tyvdsure6d5s6usdsy6nadt4engd5t4etd6trocd5t4rød6t1s2d3t2vadtørs3du9enedu9ensdu6ka_du4na_dun7de4d5unidun5s6du6ra_du6re_du6reidur8tadu5s4adu9semdu5s2idu6va_du4ve_dve6vady5ke_dy4na_dy4ne_dy3pesdy2p3rdy4ra_dyr5s4dy2r5udy6se_dyst7rdød2s1dø4pe_dø4pendø2st3dø3vel4d9øysdåd6s5då8na_då8ra_då8sa_då7semea2d1ieadli5e5alleea4love3altee3amanea4ne_ea4nore6ans_ean3slea5rerea5retea5r4iea2s1ieat6leea5trieau6gaeau6reeau8saeav8laeb4be_ebers6ebet5se5b6loebo4daebo6krebo6laebu6eteby4taed5ad_e5d4aged3arked3arved4dyred3eiee4dekse4denfeden5te6deprede4rae4derøe4deskede4slede4sme4desnede4tae5d6iaedi6gjedi3sied3reged3romed7skied3skredvi6sed5ynkeeg4gaeei7nieek4tee5e4lieem6naeen3ineer3ene4er3le6e5shees8kae4fanaef3anke4fark3effeke4f3idefo4noef6strefta5reft5eief5tereft1s4efyrs5efø5lee6galaegde8leg7dese5gedoegei9ee3gemeegen5se7geome2ges2ege5speg9genegi3ane4gikoegis4pe5g6løeg4neme7g8røegs4amegs4kiegs4taegå4vaehei9eeh5er_eh7erneher4sehø8vae9iaktei9a4nei7ar_e3ideae3ideoei9derei5dete6i2doei3d4uei9en_eier3aei4ertei6gevei6graei5kaaei3ke_ei6keeei6kehei4kelei4keteiks3aeik6seeik4soei9lede3illuei3lo_ei9loaeil5opei5loseil5s6ei7ma_e5imagei4medei6meiei7menei4met8e1impei5nedei7neleinga6ein3grein3k44e1innei4nomei4noveins6oei3numei2n3øeir9akei7renei5sarei3se_eise5iei3senei4sile3isk_e3iskeeis3koei4spiei4tekeit7taei3tveei6t7øei4vakeiva9rei9veneiv5s4eju6laekali7e5kavrek3eiee4keroek4kjøek5kokekko5vek6lege6klenek5letek9na_e3knekekne7sekni7peko7lee3k2rae7krefe3krene3k2rie3k4råek5rådek4sal3eksamek3sel3eksemek4sigek4skaeks5peek4staek3stiekst5oekst3åekt3avek3tefek5tesek4tidekti5mek5tivek4valek4vinek6vis3ekvivekå6paela4gael3agge2l1ake5lakeel7akte8lameel3anle4larre5las_e5laseel5atoel5avlel3avse4ledie4ledreleg5de7leire7leise5lekee5lem_e3lemme3lempele9naelens3e5lepa2e3lerele3ske4letae4leteel9ga_elg3s8el5la_el4ledel4legel5lerell7saell5skell5spell5svel5m4oe3lommel3omnel3omse2l1ore3lortel3ostel4petelro4sel4seiel3senel4sjeel6snoel4speel3sprel4stiel4stjels5økel5te_el6tegel4troe1lu2eel3ungel3utrelv3anel4vei5elvs_el5yndel9ærve6l5ætel3øy_el5øyael5øydemafo5e4magre4makoe4makue4manae6manue4maree4masie4mataema3ukema5ve3embed3embetemei9eeme4lie4mendem5e4vemi5niemi9saemle6sem5me_em5menem8mi_em4ne_em4nedem4nemem4pedem2p3lem6pliem4polem4posem4sesem4s1lem4sorem1st8ems4teem4tilemå4laemål4sem1å8ren3aldena5lien3allen5ande5nanee5nar_en8aree4narren3assen3avien4deken3delen3derend3stendø4ren5eggen3eieen5ekse3nekten5eng3energe4nesken7garen4gemen4gleeng5soeng5spen4guten4g5åen9nalen4nemenn4sjen3om_en4påsen4remen5sabens5afen4sekense3uen4simens4tiens4veensvi6ens3øken5ta_en4tapen5te_en4tecen4tegen4telen5tieen5tigen5tiken4treen6tul3entuse2n7ule4n5ure4nytae2n3øven5øyden6ås_e4o7loeom1s4eon4kleopp5reor4daeo4rideo4rikeo4rise6penoeper5repe4ste4petaepi7kr3episoe8plenep5ler3epletepo6et3epokeep6seme3p2syep6tine4raeler3afte4ra4ge2r1ake3rakeera5kleral3ue4ramaera4noer3apoe5rar_e4rarge4raske6rasoer6aste4ratrer5atter5aukerau8ser3av_er3avher5avle3ravner3avrer3avser8byler4deder4diserd4raerd8reerds3ter3d4ver3effer3efter3eider3eieere6kae9rem_e5remmer3emner8er_e5rerier3esse5ret_eret6here5toe7rets6erettergi3fer6glier4go_erg5spe4riade4riakerib3beri3ble4ricee5rid_e5ridne6rikner3inde3ringer3inner3inser3inte5ris_e4risaeri3see4risoe6risperi5søe4ritee4ritoer7ivo3erklæer4nader4neder6neeer3nober3obler3offer5okser3olyer5omkero5moer5onderono5e5rop_er1o2re5ror_e3rore3erosjer3oslero4taer4raeer4relers6aler3seper3skaers4laers4mier5sneer4svaers4veer5tiaer3tiberti4eer5tiler4topert3saerty6ee5rud3er1u2ker3unie3rup_er1u8rerure8er5ut_e5rutae3ruteer5utner9utoe4rutser7u6ve2r3yaer5økne4røkoer1ø4le4r5ønerø8raer3øyaerøy4nerå4daer5åkeer3å4le2r1åner3å4pes5arvesbi9ees5egees3eige4sekue3s2ene5ser_e5seree5seriese5s2e3seste4sesve5setje9setses6haresi6are5silies3illesi3stes3jore5skabes6kedes4keees4ker8eskiles4kjæes5k4ne5sko_es7koae3skotes3kvie6skyreskå7res4lekes4letes4lites4løkes4løves9na_es4nere2s3ode2s1ofes3okse3sommes3pases5pe_es3pole3spores3punes4sedes4seees4segesse7ies4seses4sjees4skress3omes4soses4spaes2s1ve7stades5taees3tape3states4teges4tekes4tel6estene3stifes4tige3stikes4tise4stive4stoge3stokest9rée3stråe5studes5tusestå6ses5viges3visesy4nae4s5ytes5øvies7øyeetafo7e6takoeta3laet5aldeta5leet3ambe6tande9tapae5tapeet8ar_et8areet5art1e2tate5tatoe3tattet5aune4teiee4tekaete5ruetes5ie4tesle5tet_e7tetse7tjeret6neveto4eret3orde5treee5trefe9tru_et5rumet4skuetsnæ4et4taket4talet8tapet5te_et6teiet6tiaet4tiletto5aett3reet3tuget4tur5e6tuietu6naet3uni2e3t2ve4t3vaetæ3raetå5reeug8laeu4ka_eu5keme4up5aeu6rateur8na3europevad6reva4lae4varbe6vatfe5vegg6evenneven5se4venye9ver_e5ves_e5vetae5vev_evin4sevis3tev7omse7vri_e2v3une5vyrkeybal4eyr6kaeøy9aneøy7eneån8daédø4r5é5n6etéva8laè2rek4ère3s2è4restfa6de_fa2g1afa5gerfage4tfag3skfa2g1ufakta3fal4sk4fa5mofa4na_7fan5dfanfa5fang4s2f3anlfan5s6fan5tifan3to9f8ar_fa4ra_fa4re_fa4resfa4ritfa4selfast3rfa3talfa4te_fav5ne2fe1a4fe5a6lfe3drafe7enefei5enfei5gefei4li9fein_7feine2fek4afe5lagfe5len6felikfel7læfel5okfel4tifem5akfem9nefe2m1øfend9r2fe3p2fe6ral4feramfe5rasfer6atfer5de4ferea4feregfe4rekfer6enferi6e2fe1ru2fe1skfe6ta_4fetapfe4te_4fetea4fetil2fet6rfett5j4fe4tyfe4venfe6øy_f4f3akf6fannf4farbffar6dffa7ref8f9auf2f3avf2fe3df4fetif4fetoff5evef4ficef9fienf4finnff5intffi5s4ff9legf2f3refi4as1fi9cenfigh9tfi7g6rfi7kenfik6kafik7safi4la_fi4ne_fi5nerfing3rfi4n3ofi9norfi6ra_fi5s4afi6se_fi8si_fi6ska6fiskufis5ti6fistufitt5sfi4ve_fje4skfje2t3fjære5f5lag_f6laggfla7kefle4slf4lettfli7neflis7tflo9gaflok9sflo2m3flue3sfly3s4flå9saflå7sefoi7lafo8ke_fo6la_fol4drfo4le_fo5ledfol5lifo4ninfon1s2fo6re_for9eifor4etfor9g6for3sefors8tfors4vfor7v6for5æ4for5ø4fo6te_fo4tokfo4tomfo6topfo4torfots6vfra6mifra7r8fra7skfras6pfre4e3fre4m5frems4fre7nefre6skfro8stfrø7kofråve4f5sjukfs7ne8ft3algf2t1amf4tanaf7taneft3anlf5tar_ft8as4f6t1avfte4naften3dfter5sf4testf4tetaft3indf2t1o2fts3eift2s1ift3stoft5støfu8ga_fulle6funns3fu6ra_fu6re_fu9retfu7selfus6o7fu4s5tfva8lafy8ra_fy4re_fy8sa_fø4da_fø4dekfø5denfø4desfø4le_fø5rarfø4re_fø4resfå7renfå7retga4ded4g5adrga4e5k6gaflogak8tega4la_galei5ga7len4galli5ga7loga4ma_ga5mer6gand_4gan5k2g1anl4gansa4gansvga6pa_ga4pe_ga4p5lgap3s2ga6p7uga6raf5garbr5garby7gare_4gareagar5es4garkigar3neg5arteg3artigar4unga4rylga5s2iga6skigass3lgas5tega5stoga4te_gate5s2g1avsgd5altg6d5aug3debag4dedigde5log4dendg2de5og4derag6derog3det_g6d1øyge4ark4ge5be3gebri4gebrå3gebyr4gedan6gedelgedia54gedos2ge1g2g3e2gng4e1ingei4r3gei9regeit3ageit3oge4lar4gelauge6le_ge7lea4geled4gelei4gelek5gelet4gelid4gelit6gelivge5lov7gels4gel3segel5sigel5t4ge5lungel7ve9gema_4g5emngem6nage2n1age3nea4genemge5nesgene4t4genevgen5gr6genivgens5lgen5tr4genumgeome5ge9opege5ra_ge6ralge9rasger5di4gered4geref4gereg4gerek4gerep4gerikge4rimge4risge4ritge4rivgerne64geroa5gerudge5rup4gesje2ge1skgeslu7ges4lø4gespege4spr2ge1st3gest_6gestå2ge1såge5tak4ge3te5gete_5get5sgety8e4gevir4g5evn4ge5vog6g5algg5askg2g1avg4gedig4gelag4geleg4genug4gerøgges6bgges5lg4gesmg6gesog4gespggje5sg2g1o2gg3radgg5ratgg8re_gg3redgg7rekgg3stog7g8ud4giarbgi9endgi6ga_gi5k4r2g1indgi4nin2g1inngin5nu4g1ins4g1int4gi5om2gi1opgip5sigi4re_gi6rob4gisel4gisen6giskagis8lugis4løgis5ti4gistu6gisty4gi5tegite4sgi2t9rgit5te4gival2g1jakg5jarn4g3jeggjels46gjentgje7sk7g6jutgjø9degla3degla4gag3landgl5artglar7v1g2las7glaseg6lass6glastgle3geg7lek_g5leke3glemtg9len_g9lensgle9plgle4rag9les_1g2lidgli8er3g2limgli9meglitt46g7liv1g4lorgl5ungglø8pagl7øy_5gløymg4meteg4metrgmini6gmå6lagna4logndør5g4nelog6nerog6nerøgne1s4g4neskg4nestg6netrgning4gni6stgn5o6pgn7o6vgn4skrgn4somgns4prgn4stign2s1vgnu5regnæ6re7goar_go5dalgod5argo4de_gods9tgo5ge_go9g8rgol6fagol4vag7o6mago9ne_go5nokgo5ra_go7raego7rasgor6dagor8vago8ve_go8vi_gra5ce9gradsgraf5fgra4m5gra6skgras3tgre4eng7refeg4rega2g5relg5rent4grepig7rese4grett4g5ri_4g1riggro9arg4ro7igrom5mgro5skgro3ve4g5rui4g3rulgrun7g5g4rupgru7sagrus5t2g1rut4g5ryg6g5rør4g5røvgrø5vegr7øy_grå6dag7sal_g7salegs3ambgs7amng5sardg7sastgsbø6ng5sekrg7sekvg5sensg3sentg5ser_g3serigse4stg3setegs3etig9setsgs4ettgs4jarg3sjefgs4ka_g5skadgs4kalg6skamg4skangs7kavg7s4kjg3skotg7skugg4slukgs4lung5slyngs5medg7snelgs9opeg5spalg3spelgs5pikg3spilg3spurgsse4egs5takgs5te_g3stifgs5tiåg5sto_gs4tolg3strøg5stuegst5utgs4tørg5s4tågs5vikgsy6nagsø6kig4t5ifgt6re_gtvek8guds3tg5ug6lgu4le_4g5ulkgul4lagur8nagu5ruagu3rueg5ute_4guttrgva8lagvi8tagy4da_gy8sa_gy6se_gy4te_gy4ve_gøye6rgå6en_gå4er_4g5å4kgån8da2g1å4p2g3åregå9vengå4vetha4ga_ha3genha7ismha4ke_ha5kenha6la_ha4le_ha4levhal6løhal4sohal4v5ha8me_ham4sthand5øha4ne_hanis4han2n3han4nehan3sehan4skha4re_ha5reiha4relha3remha4resha5rovhar7sehasj5eha3tarha4te_hat6lehau6stha4va_ha4ve_ha4vegha4veihave3shav4slha6vu6he7ansheat4rhe4de_he2d9rhef9tahe4ge_he2g3rhei5enhe3inshei4skheit4she4la_he4le_hel2s2hel3sahel3skhel5sphel3svhel9vehe4makhem5nehen5o6hen1s2hen5sehe5rethe4ri_4her5nhe4ro_hero9aher6svhe2r3øhe4se_hes7pahe6støhe4te_he5t6ihe6va_he4ve_hi4bakhi6ge_hi9se_hi3senhi5s4ihi4t5rhit5tihi8va_hi4ve_hjem7ehju6l7ho5ar_ho4de_ho5denhode3rhof4f3hof4fiho5lagho5lanho4le_ho4linho4lomhol7utho4me_ho4mo_ho4modho4mosho5n6oho8pa_ho4pe_ho8pi_ho6ra_hor2e1ho5senho5serho5si5hri5nehri2s3htere4hud5s6hu6et_hu4ge_hu8ja_hu6ka_huk8rahu4le_hu4leghu5leshu4levhun2n3hu1ru4hu8sa_hu4se_hu2s1ihu2s5jhu2s1khus5s4hu8strhu6styhu4ve_hu4veshva5lehver3ah4v4irhvits4hy6la_hy4le_hy4se_hy2s1jhærfø9hær3s6høg3rihøg7røhø6le_hø4ne_hø5rarhø5renhø5rerhø4reshør6sphøst7ahøst5øhøy5a6hå6na_hå5nelhå6pa_hå4pe_hå4p5lhå8va_hå4ve_i2a3deia5d8riale4tia4linial3opia6lovi5als_ials4ti3alt_ia4nalia5nari7andria8nesia7netia2no1ian3saian3sliar4doiar4dui5areai5arn_i9arnsias3s6i3assii7ast_i3bereibe4roib7lari2b3leib4legice5neid3delid6dep3ideali7dekii9del_id3elvi5dendideo3vi7derni5dersi6desmid6gemid4gesidi4en1i2dioid7jer1i4dolid9ranid5regid5samid6selid5simi2d1uni6d7øyi5einiie5l6ai5elemie4levi8e9maiem7b8i2e5niien4skie4ranie6re_ie5regi6eretie4rilie4risie4rivie7ro_ier4raier4spiers3vie3runies4tii8es6vi3etatiet4reie7vedife4s1if4lesiform4if4talifte5sig3anni7garkig4artiga3ruiga7teig3atti6gediige6noi5gersi4gerøi4gespig5ettig4gedigges4ig4graigg9s2i2g1iaigion4ig5loaig5neuigo5frigo4noi2g1røig3rådigrå5tigs4alig5seligs4muigs4taig4steihu9laikan9di4kapoi5kar_i5karaika5rei6kasaika3spi5keliike5lui5ken_i4kenai5kenei9kensi3ker_i4keraike5riike3sii6keski5kesoike5sui5ket_i5ketsiki9neik5inniki5stik4kafik4kapik4kasik4katik3kjøikk3reikk5svi9koariko5dei2ko3fi4koreik4rakik5remik3rosik4sekik7sotiks5tiiks5toik8stuik4tavik4tegik2t1rik4vinikå8pail5adri2l3aki4lanail6andi4larkil3artil5assil4dakild3reilea9ri3le7ei2l1eii6leigi4lenoi4leroi4lesei4lestile4tuili9gai2l1imi7linei4linsil3ja_il5keril4kesil4labil6lamil6lapil9lauil4leeil4levill3s2i9loloil5omvil3oppi5losoilot3ui4loveilret4ilsla7ils4muil5stril3s2vil6t7åil7ul8ilve8dilve4ri4maeni4makoimal8ni5mar_i4matri2me1gi6meluim5enhi9met_i4metai4metiimi9laimini6im4levim8l9uim5ordim7o6vimpse8im4refim4rekim4resims3krim1s4tim6stiin5aggi5nakki4na2min3amei9nanein5annin5appi5nar_i5narsi4naski4naspin7aukin5avlin5avrin7der6indigin4dogind9rain3druindr5øind5skind3spinedy6in5eggin5eidin3eiei6neleine4liin7engine8pai7nerni5nerti5nes_i4neski4nesø3infekin4fosin4fotin4gavin6gemin3gevin4goain4gosingst8ings5vin2g5øi4ninni4nisaini3sei4nito5injekin5kelin4kokin4nalin4nem4innet3innho2inni4in4ni_inn1s46inns_3innsainn5sein2nø4i5noarin7oksin9sa_in7salin5sarin5se_in4sekin3seninsis5in4sjain3sjeins4kiin3skjins6køin3sloin3sopin4spains4poin6ståin7sul6in3sy2in3ta4inte_in5ter4in5tiin7ut_6invevion3g4io4ninio5ra_ior8daio4rieiosk3vio3t4eio4traipela9i7pe6pipi9neipp4søip7punipse4lipsfø5ip2s1kip6tarir5arki9rastira6trir3eiei3repoire7sti8retoir3indir3innir5ka_ir4katir4kleir4magir4malir5oppir7skoir3s4tir5u4kir7å6li4saksi4sanbis3annis3antis5aud3isbryis6ceni4seeli4seenis3eieis5eigise5isi3sektise5nei4senoi5ser_i5sersis5essi4sete3ishavis5ildisis5tis7junis9ka_is3kalis3karis5ke_is8keeis4kelis3kjei3skjoisk3loisko5gis3kopis3kotis4kulis4kviisl7uti5smakis4medismo5ei6smus6isold5isomois5omriso3paiso5peiso7pris4panis6pisis7pruis4sesissis5is4skois7skris5skyis4skåis5sokis7stois6sveis5svois4søki5stabis5tapis5te_is4tekist6enis4tikis5tisis3tokis3tolis3tryis3tusis4vakisy8nai2s1økita4loita4lyi6tangi7tekyi4teniite3rei4teroi2te1si4tiesiti5mei4tisai4tisii4tisji4tistitivs5it7jerit5ordi4tra_i6traeit3relit3renit5rimit3rini5trisit3serit6sesit5skuit6stiit3sunit4tagit6takit4talit6tapit5tedit4tidit4tilit6tofit7tonitt4søit7tysiu2m1ii6umsei4umsui4vanai4varbivat3tive6geiv7eigive4raiver5di4veski6vesvi6vetøiv5insiv5is_iv5isbiv4sali2v3univ7åpni5wie6iårs7lja4ga_ja7garja4ge_jak4koja1k8rja8krejaktel6jambijan4grja6ra_ja9rekjar5tajar7tija8skija5sti2je1a2je4debjef4sajeg5geje5i8sje4klijekt3aje4lesjel7gejel4lojel4trjel9utje4miaje4mitjem5pljem5se2je7na4jendrje3ne_4jenet2je5o4je3rafjerd6sje3r6e4jered6jereg6jereije5rikje6rimjer4kvjerle7jer6muje6ronjer4spjert5s4je1ru2je3spje3str5jesutje5svejett3oje4t3vjety8e4jev6aje6vasjevi4sjev7ne2j3infjo4da_jo6datjo6disjol5t6jons5ajonse4jons3pjons5tjonsu4jord3rjord5sjor6dujo4riejort6ajo3r4ujo4sesju8areju7doejue7nijug9leju3ke_ju3kenju3la_ju5larju5lasju4li_ju6lidju4likjun7gej6u6niju7ras3jurisju5so5ju6va_ju6vakjy8de_jæ5le_jæ3ra_jæ9ranjæ7te_4jøend4jøeng4jøetajø4lesjøn5nejør4spjørs5vjør7utjø4sesjø3te_jøte4tjøtte4jø4veljå5ar_jå9ge_jå6la_jå4le_jå7lesjå5let6kabes4ka1brka5delkadi7ekaf5tak5a4gika5iskka5ismka4ka_ka4ke_ka4kedka4kelka4keska4ki_ka4kiska3lamka3lanka3laskald5s5kaldt3kalenka5lev5kalis5kalkykal7lakall4ska6ma_ka8me_kam4prka8na_4kandaka5nerka5nin2k1anl4k1anmk3annoka4no_ka8nom4kansa6kansi3kansl5kapadka4pak3kapas4kapen3kapitkap3re4karab4karamkaran5ka3rav4kareaka6rekka5relka4ri_ka6ridka3rolkar3omkarp3s3karri7karsjkars4tkar5tika3sekkas5evkas2ju6kasjøkas3kakasko5ka4spikas4soka3ted3kategka3tetkat5taka4t5yk7au4rka7vesk9avis2ke1a84kebuk4kedag4kedal6kedei4kedem4kedes2ke5drked8skke7ernkeg8ga3kehetk3ei2dk6e1ink5ek4t5kelalke6lat4keles4kelev3kelig4kelis5kelit4keliv4kelofkel5slkel5spkel5stkel3svkelt3e6kelua4kelue6keluvke4mit5kena_6kenamken6apke4nasken5de4keneb4kenek4kenel4kenem4kenev5k6enhke4nomken1s2kens6tken7te6ke3ny5kepi_9kepia7kepiekera7l4keramke4ran6kerau4kered4kereg4kerekkere6n4kerepke3res4keretke4rifke4rimke4ris7kerop5kerorke3rotker5toker3un4kerus4kesam5kese_k5eselke5sil4kesit4keski4keskj6keskå5kest_ke3sto4kestu4kestøk6etar5kete_4ketek2ket2rkety6e5kevas3kevelkev6jaki3a2rk3ideo4kidolkie5reki3er_ki6ka_ki1k8lki3k2rki8la_3kildeki4le_kil9jaki7loaki4logki3loski4lovki8ma_ki4me_5kimo5ki4mol2k1impki6ne_kin3geki4p5lkip5pekip2s3ki5skoki3smuki1s2pki5strki6tenki4tonki4vekki6vi_3k8jankje7fj4kjegg3kjeld3kjemp6kjenkkje9nykjet5t3kjærlk5jødi3kjørikjø4trkk3aftk2k1akk2k3alk4kanbkk5andk4kannk4karbk6kargk5kastk6kasuk6kattk2k1auk6kedok4keduk5kel_kkelu4k5ker_k4kesak4kesek4kesik4kespk4ketek4ketøk4k9g2kk3indkk3infkk9innkk3inskk3intkkjek8kkje7tkkla4gkk3lankk8larkk7laukk6s5vk4k1ofkk5omlkk7omskk9omtk4kosik6koskk4kostkk3ovekk5ramkk3rapkk3reakk5reikk3renkk3reskkri6kkkro8ekkro4skk4ruskks6alkk4sarkk5sedkk4sinkks4kjkk3slakk7slekk5slikk3spekk1s2tkkst4rk4kuni3k2lask7latikla4trklei9ek7leikk4leivkles7jkle4sp4klie_k5linjk3luktklun5t6k7lyfklø7naklø9vaklø5ve6k1lånklå5rekmann63k2napk4nedi5k2neek4nest3k4nipkni2t33k2nivkno6klkno9takno5te4k3numknø9le4ko1ak9koane4ko3brko4de_3kodek5kodenko4grekogst6ko7i6kko8ja_ko4ka_ko4kabko4ke_ko6kelkokk6ok3okku4kok4lkolba5ko4legko4leiko6lelko4letko4leu3kolleko5lo_ko4ma_4komafko4me_ko4mi_4komil4komsekom3slkom5sokom4st4kom5tko4na_kon6dr4konivkon3s24kopetko4pi_ko4pipko4p9lko4ra_kor4duko1r6e6korefko5remko7retko6rikko5rol6korpa6korpe1kor3rkor4svko6sa_ko4sedko4sekko5senko4seskosi9d4kosmuko6stakost5jkotes7ko5t4i4kotilko6trekot4tikott4skou7ta1k4raf3krakk6krank3kranskra9sekras5skra4to4kred_3kredi4k1regkregi3krei9ekrei5sk5rela4krentk5repr5kreps5kresjkreta9k4retsk3rett7k6rigkri9gakri5kekri4kjkri4me1k2ris3kritekro5b4kro5dek3rofokrok7kk6ronik5ronlkrop9nkropp4k4rostkru3i4kru5sakru3tr2k5rygkry7pakry5pekry4pikrø5ke6k5rørkrå8dakrå5lekrå7nek2s3adks3altksa5mek3sanek4sansk3sar_k7sarakse6gek2s1eik5sektk5selak4serfks3erkk4sesak5sesokses4pk5sessksi5koks3indk3singksi7niks3innksi3stk4sitiks9kabk6skioks9ku_ks7kuaks8kutks1k6vk7s6luks5løsks4melk5s4nok7s8nøk6s7oak4sombk2s1ork3spalks3pekks5pioks3pirk5stadk4stakks3talks6tavks4tegk3steik4stekkst3evks4tilk4stinks4triks4troks9tumk5stusks3tyvks5vegksy8nak6s3ølkta7f6kta6kak4taktkt3anlk4tanvkt3appk9tar_k6tassk5tastkt5avhkt5avkk4tedak4teføk2te5ik6tekakte5lekt7emnk9ter_k7tes_k6tesak6tesek4tetekt5evnktis5tkt5offk4tolikt5omfk2t1opk9tor_k7torak5torektor7skt3ralk2t1rektro5sk2t1rukts5arkt5sekkt7semkt6sinkt5skukts4kvkt6sokkt4spakt4stakt4ståkt7undk2t1utkt7yrkktør8ek6t5øsk2t3årku4be_ku4dalku4er_ku4f3lk5u4gr6kuldikuld3rku4ledku4legku6leiku4lemku5lenku4letku4levku6li_ku4man2k1ungku4pe_kup4plku4rekku8r7okur6skkur4spkurs3vku5ru6ku7sa_kus5arku4ska6k1ut_ku6t7rkva8kek4valik6vardkva9sekve3d2k6veil1k4velkve5la5kvernkves5t7k6via3k4viekvi5erkvi7la3kvinnkvi5se7kvistkyf5leky4leg2k3ynsky4p5rky6se_ky3skrkys6sk1ky4stkyst3aky6ta_kyte3skø4en_1k6øyrkån8dakå4pe_kå7penkå9rask5åt6tla4demlad3s44laent6lagnela2go8lag5omla2g1rlag4sj2la1inla4ke_l7aksjl5akslla5mabla4mesla4metl8a8muland3rl6a3ne3lane_4lanetlan4grl3annola4norlan5til3anvila6pallap5sa1l8ar_l8are_la9redla5remlare6tla7rialariar6l7arrlasi9e7laskjla5smi4la4sp4lastr6lataula4teglat6ekla6ti_latt6ulau7selau6stla4vellba3delbe9nald5aksld5aktl9dandl2de5ol7der_lder7al4deshldis7kl4doreld5ovnl3drakld3ranld5rasl6dre_ld4sekld4selld4sesld4skalds4kjld4s9mlds3trld6tuslea5lale4bem5lebæk5ledarled4dø4ledeble4dem6ledeple5derle3des3ledop5ledovle4drole5dryled1s24le3då4l1eff4lefor4lefot6legap5legasle4gedle9genle4gev7leggi6legifle4gol4legreleg3s46lehal6lehan6lehaule3idol6eie_leig6dle3intleis7tle4ka_6lekanlekk7s2lek2llek4na4leksp2le3la8l9eldl3elem4l5elg5lelig4lelukle8me_4lemet8l9emnlem8nalem4silem5tile4na_le4nal4lenavlend8a4lened4lenem4lenevl4engdleng9u4lenivlensa4len4trle4pelle2p3jle4ple4leramle9re_6lerea4leref4lereg4lerekle5res4leret4lerev9leri_7leriele4rivle5ro_4leromle3ros7lers_lers4pler7te4lerus5leryr5l6es_le4sab4lesam7lesar4lesaule5sedle4seg4lesekle5senle3ser4leset4leshole6si_4lesig4lesit4lesju4leslales3s64lestale3sto4lestø4lestå4lesug4le5sy5lesøyle4tab6letak5lete_6letea4leteg4letekle5ten4letes2le3ti2let2rle7trelet6sjlets8klet6trlety8ele4utele6vadle4ved4leveg4levei4leveklevi6dlf5antl5f6inl4gelal4gelelge3nalge5ril4geryl4gesllgie8nlg3reflgr9øylg3s2elg5år_lgå8vali4alali5anslibie6liby5eli4dakli4dedli4do_2l1idrli4eneli3er_4lifatli4ga_li4garli4getlig3selig3slli5kanli9karli7kasli5keeli3kenlikk3oli1k2lliks4t8l5ildli4marli4masli4me_limp3rli4na_linch54linduli4ne_li6nem2l1infling5l5lingvlin4kv2l1inn3linni6linnsli4norl4inse5linsklio4noli5o6slipes4li9rarli4rek4lisakli5setlis4kllis6splis5tilist3oli4teeli4tekli4tidli4tigli4tilli4timli4tivli2t1rli6va_liv5eglivi5eliv2s3l4jarblj9elvl3jer_l4je1sl5jes_ljes4tl5jet_l4jete3l2jodlj5oril5jøs_l5ka6ll3kedelkeei4l7ker_l4keral4keril5ket_l5ketsl5k4lulko9malko9salkras5lk4serlk1s4tlk9utel6kvegl5la6all6a5fl4lamil5lanell3anlllans4ll7apallap3sll5aspll5aurll7avlll5avrl5leaklle5grl5lehal5lehol5lehål4lekil4lelil4lenkl4lenulle4sol5let_l4letal5letsl8letæl5levål4linsll3intllo5idll5oksllo2m1ll5oppl2l1orl4losol6lotellra7nll4sakll4semlls5kvll5skåll3smylls4nolls4tells7økllto4el4lu4el6luksl4l1unllu4pil2l1url2l1utllva8nll5øksl4løvell7øy_ll5øyall3øyell1å8rll3å2slm3anml4melulme7rilm3indl5minglmini6lm3inslm5intlm5s2pl6m5øslm5øy6lmøya9lm5å4rl4m5ås7loanelo1a4r5loar_lo2d3alo6d5u6loenglo4girlo3goplog5salo5id_lo3idelok4ko4lokonlo1k4vl5omdrlo4nallo4nitlo4pealop5pa5l4opt4l1orglorie6lo7rødlo6seklo4seslo5sevlo9teslo8ti_lo3vanlo3varlov3salpa5rel4pedol3pelil3pesml4petilpin3elpo6etlra8dalre4delre8kalre8valri8malrot5sls5aldl7sanals5arkl4sat_ls3eidls5eigls5embl4senol7ser_lses3llses5sl5simul5sjefls3jegls3jenl6s5kelskif5ls3kjolsk3læls3koals5korls3kovl4skralsk5unls7kvals3kvils3kåpl5smørls5ondl2s1orl9spegl5speil9spells3pril6ste_ls4tedl4stegls4tells6ti_ls4tiels6tonl9strils7veals5veel4svikl2s1øylt3aktlt3anllta6nolt3artlta4stltat3rlt3avkl5tavæl3tedel4tekalt4en_lt3epiltid6sl4tietlti6g5l4tinalt3indlt9innlt3insl4tivil2t1jalto9arlt3ostlt3reglt3reilt3resl5trevlt3rollt3roml5troslt5s4ilt7s6tlt2s3vlts4vilt3undltu4ralu6brilu7ere3lugarlu4ka_4luket5l6uktlu6mellum6sklu4ne_l7u2nilun5ne3lunsjlu2p3u6lureilu5ren6l5urnlur8nalur8talu7saklu6sellush7elu2s5klus4o5lu3ta_lu7tetlutla9lu4t5rlu4ve_lu9venlu9verlva6lal4va4ml4vanalv8andl7var_lv7asal4velal4velelve9nel9ver_l4verul4vesklve5sllvi9erlv3irolvor4slv5o4vlvra8rlv7s6klvå4p4ly4d7rly4gelly5g6lly2n3aly4ne_lyn3s2ly8ra_ly6re_6l7yrkly4sa_lys3kjlys9klly2s1lly8ta_4lyteklyte5slæ6ra_læ5rarlæ4re_lære3ilæ3rerlær6svlø3de_lø4dellø5demløk5kj4l1øknlø4k5rløns5tløp6s55l4ørdlør5k64l5ørrlø5sanlø5serlø9ta_lø3te_lø4tegløva9rlø4ve_lø3verlø5vesløy8edløy5elløyg5elå6gallå6grelå6ke_lå2m5o6l5åndlån2s1l1åp9nlå8ra_lå9rarlå5raslå3rinlå6sa_lå6skolå4s5llå4stelå3te_lå4teglå4teklå8ti_lå4ve_ma3chema4delma3dram6ad9s7maene3mafia6mafråma8ga_ma4gedma4gelma4gesma5kab4makadma4kesmak7kemak6lema4kotma3kremak4to2ma1kvma7lebma4letma4lov4mamerma3nakm3anal6manam4manavman8cem6ange4mangrmania8m3anle5m4annmar5d67mare_6maregma3reima7relma5res3mar4ima3rinm4arkamar4kvmar7slmar5tema4ry_4maselma5setma4siama4sikma4sis6masjumas4ki4maskomassø97mast_4mastoma5tadma4te_ma6tedma4tel7maten7matet4matil4matramat3s2mats8lmat5tamau7suma6ve_ma5venmbar3dmbe9dam4bedøm4belim4benam4berombi6armbo5idmbo5re4medat5mede_me4dedmed5eime7denme7det4medik4medirme6dok4medommed1s4me6dun7medve6me2game7galmeie5nme3ildme3indmei5nime7isk4meisome2k1l6mekte5melarme4le_4meled4melei4melek4melik4melis4melit4melivmel5le4melok4melovmel4simelsk4mel7trmelvi6me6mo_men4nyme4nomme4normen4simen3smmen5temen5trme4nytme6rab4meradmer5di4mered4mereg4merei4merek4merelme3resmere6t5merinmer5osmer5skme3run4merusme2r3øme4råk2me5sa2me1skmes5ke2me1slmes6le4me3so7mest_4mestames4timest3r4mestu4metabme4tar4meteg4metei4metek4metel4metep4metil4metonme4treme4tru4metræmeva8nmfa9ram4fibrmgå8va5mi6al9miane7miar_8m9idémid3s4mi3er_mie9s8mik5sami4la_mile6tmi4lev4milinmi8ma_mi4na_mi5narmi4ne_6minntmin3spmins4tmi4n5ymi4san4misek4misel4mi7simis4komis9le4mistu2mit6rmitt3sm5jar_m7jarnmju7kemjøs5tmkå8pamla6gam4leram4leskm4letamma5klmmar7om4medøm4melum6menim4menummer5tm2me1smmest6m5met_m4metam4metim7mianmmie6nmmi5skmmi5sommi3stmn7eidm2ne9lmne4ram5nesem4neskm9net_m4netemo3demmo6di_mo4en_mo8ka_mo6la_mo4le_mon5t65mo1ramo4ra_mo4rar4mordlmores7mo4ri_mo6ridmor4klmo5rokmo4rommor4simor4spmo9senmo2s7k4motapmo4te_mo4teimo4tesmot7remot1s23mo3vam4panam6penam5pettm2pe5um8pla_mp5le_m6p5obmp3oppmp3radmp5retmp3ropmp3sekmp5s6tmp5ut_mrø9dems5antmse5lum9s6eim4servms4ingms3innm4s5jams5kabmska9kms6kinms3korms3lanms9luams3luem4somsms3orims7teams3timms4trums3unnmsu9tams3yndm4s5ørmteks7m9tidam6tinimtiør6mt4vin8m9uka4m1ukemu4legmule6smunes6mu6ra_mu4re_mu4se_mu2s3k3mu1tamu8ta_mvak5tmva6lamvari6mvi7e6myg4gamy9ranmy9rarmy4re_m5yrkemy4r5umy4se_my4te_mæ6la_mø7desmø9ensmøkk6amø4ne_møne9s3mørkemør5smmø9tasmøy9arm5øys_6måenhmå4ka_må4ke_må4kesmå5larmå4le_må6ledmåle3imå8pa_må4pe_måra6rmå6takna6ansna6botna4dedna8demn3adopnad2s1nafo7rna8ga_4nagennag3s4nagså5nak7kanak6konak8sa8n1aktna9lagna7legna4lekna4lesna4levna4lilnal3opnal5s2na3lurna2l5øna5mesna5mo9n3analnanfø84n3anlnan4nena4n5onape4snap3s4na4rapnar5dr4nareanar7einar5tinasa3rna4sas8nasikna4skinasta5nate8kna7tem4natomnat8ranat3spnaus6pna6va_2n3avh4n5avknben4snbo5etn6butrnbø9lench3ein7daa_n6dabin7dag4ndags5n4daksn4dalfndals3n4darkn8daskn5defind4einn4dekln4dekon5dem_nde5mon5den_n5densnd6erkn4desin4destn4desundi4enndi6sknd3jernd4lemnd4levnd3orgnd5ormn6dotend5raend3rannd6reknd4sagnds3aknd4sernd4sjend4skjnd7spundu3isnd3ungndu6sindus7kndy5spn2d1øyne5alpne5als6ne7avne4ble3nedal4nedeb4nedeg4nedelne4di_nedi4sne6drened3stne5dårne3gla6negrun2e1inn3einine4ka_6nek2lnel3de4neled4nelei4nelid4nelis4nelit4neliv2ne1lu4nelås4n3emb4nemel4nemer6nemesnemie86nendr4nened4nenemne3nes4nenet4nenevnen5sene5o4r3n4er_4nerad6nerap4nerea4nered4neref4nereg4nerek4nerepne5res4neret4nerev4ner2gner3ganer3ge4nerik4neritn3erob6nerocne7rofne5rok4neromne5rotn6ers_ner7seners4pner5un3neryr4nerørne4sa_5nesar6neseknes6er4nesit2ne5sjnesk4e4neski4neskj4neskr6neskune3sline7slønes6mine7snø3nesot5nest_4nesto4nestu4nestø2ne1svnes8va5nesøy4ne5så5nete_4ne3ti6netid2ne5to6netom2net4rne6va_ne4ve_5nevikne4y5tnfall4nfan5tn4folen4foran8g8adng3ankn4gartngar5ung5atong7aving4dedng4delng4depn4gedan4gelan4genan7genen6genon4genunge3sln4getan2ge7vn5glemng5oddn3g4okng9omeng5ondng5ordng3orkngos6png3ra_ng7reang3regng3renn4grerng3retng3revng3ridng3rinng7ro_ng9roang7roeng3rådng8sa_ng4semng4sesng6skjngs3neng3undngvi4sn2g1øyngå8vanhet4sni1a2nni4delnid5stni3er_nie5rini7ersni5ertni5glani9glo4ni5koni5l4i4nimar4nimas2n1indning3onin5gr2n1inj4ninnb4ninnh4ninns4ninnt2n1ins2n1intnions34ni5ovni4petnip3linip5si4nisemni5setnis5imni9solni3str4nisty4nistøni3tedni4togni4tosnitt4rni4umf4n5ivoniv3s2n2je1sn3jes_n3jet_njet6rn5jettnk3aksnkal5ln4kedon4keernk5eienkel5snkelt3n8kenon6ketønk3iernk5indnk7infnk3innnk7intnk3loknkofi8nk5oksnko5len3kravnk4taknk6talnk4tinnkt3sknkuri9n4ku6tnk9uten7kvitnkå6panly6dinmini6nn5ad_nn9aftnn5airn6n1akn4nalann5algn4namenn5anan9nanenna8nin5nanln9nar_n4narin6nasin4nasknn3avlnnbo9ennbu9enndør3n5nea_n5neapn5nebun4nedin3neken4nelon3n4enn9ner_n4neron7nes_n6nesjn4nesøn4netenn3idenn7infnni4sjnno2m1nn6omsnn7ordnns3arnn5segnns5opnns3ornns3tvnns3vanns3øknn6ungnnvi4s5noaneno7ar_nobe4lnob5leno3b4r4noent3no3ftn6ogran3oksino6midno6mikno4milnom7s2non1s4no1r4ano5ranno5rarno5rasnor4da4nordnnor4døno9reeno3rekno3renno7ret3norge7noritno4selno4sesno3stjno4ta_no4te_note5i5notekno4telno4tes4no5vi4n5ovnnpo8tanra8nanra8sanrei7enrå8dans1a4dn5sakkns3aksns5akvn3salans3aldn5sanen4sanfns5antns6armn6sartn4satins5eddns8edense5einse6erns5egensei6dns9eign4seksn5sen_n4senin7sensn3ser_n4seran4sesan4sesinse3sln4sestn6sesun4seten9setsnsin5dns3innnsi8ransis7kns3jakn4sjavn5sjefn4skann9skimns5kirn5skisn6skjan3skjæns5korns3kron4skugn5skumns5lasns5lidn5slynn4smaln4s5mon4smurn4smusns5nesn3s2okn4sondn3sovnn5spetn7spurnsse4ens4ta_n4stakn4stagn3stamns4tauns4teln6stepns4tinn5sto_n3strun3stuen6stukns5turnst3utn4sungn2s3vens9vegns9visn3s4væn4s1øvns5øyan5såpens7ås_n4tagrntall4nt3anlnt4anvnt3appn7tartnt3avint5avrnt7avsn5teatn4tegen4tegin7tegnn5teisn4tekan7teknn5telln4telsn9teltnt3embn5ten_n5tensn5teppn5ter_n5tersn7tes_n4tetan4tetent4e3un4tiatn5tiemn5tikin4tikln5tilenti3lon6tinin4tisant5omfnt5omnnt3omsn2t1opn5tor_n6torgnt6rann4trepn5trern6tromn6trulntrøy4nt5skjn6t7ubn2t1utntyr3snt7år_nufts5nug6lanuit8enul9t8nu5sa_nu5sennu7sernus3tanu3te_nute6rnu6umenva6lanvand5nvi4etnvi5kenvæ8rany5ar_ny9astny4de_5n6yheny6ra_ny4re_ny7revny9s6knystu4ny8va_ny5vakny8ve_næ8ra_nødde5nød3sknø9dunnø4le_nø6rednøtt6rnø3ver2n1øy_n3øys_nå5dedn1å2k4nå5levnåp8naoak4kuoa4r5iob4b5rob4b3uober4sobi5e6ob5la_ob3le_ob3leno2b5li3obligob5rar3obserod7attodd5eiod4delo6d5eio4dekoo5dekuo5det_o5detsodie4nod3omlo2d5reo4d3røods4kao2d1å6oeng5doeng3soeng3uo5ens4o7ens_o3e4reo6ereroer8mao3erskoe6sipoe6sitoes8kao4etanofag6ao4faraofa4seo4feraof4fekof5fesof6fiaoff5ido6fra_of9ras6o5friof8se_of4teloft2s3og7anko4gareo2g7avog4g5jogg3s4og6g7uogi3a4o4gievo4gikoo3gingo2gi1oog5jerog4nedog6nelog4re_og4rero4g3riog3rydo4g5røogs6anog3s2eogs4kjogs4leog1s4pogs5paog5steog3stiogs4toogs4trohe5teo4inspok7aftok5arkok5elvo5k6eno4keskok3kjeok3ko_ok5kolok4kunok8la_okla5mok8le_ok7lutok3omtoko5peok5oppok3ormoko9seok5reoo6kreto4k5ruoks4alok4sekok4semok7senok4sesok5s4ioks6tioks6tr3oktanok5u4kok7uteola8gaol5anlol3anto9lar_olber4olbo7eol4bolol9danol5de_ol4demol5detol3driol5eigole5ino7lekio5lem_o5lemso4lenio4lenoo4leruo9let_ol4f5iol3g4eol1g4lo4libaoli5neol2k3lol5la_oll3akol4lamol7le_ol4ledol4lelol7lenol4lesol4logol4lomol5losol4lovolls4toll5svol4løpol6løsol6løyolme5so5loanol5oksol3omsolo5veol4pedol5svaol3tedol5tepo4l5urom3aldo2ma2mom5angomann4oman5tom3arsom4betom4bis5ombodo2m1eko5mekaomer6so6mese3omfan3omgreomi3e4o4mieko7mikko7mineom7inno4misjo4mistom6matom4medo4mofoompa3toms3alom4sek3omsetom4somoms3un3omtalom4tesom5øy6on3aboon3appo6narbonat5ron4darond3reonds4ion5eieo4neleo7nello4neruonesi6o4nesko4neteon7ga_on5ge_on6gedonges4on5go_on8groongs4jon4g5øon5ildoni6mion3info2ni1oo4ni5po6nisoon5k6a3onkelon5k6ion4kleonle6gon5nado5nor_o4no4von3oveonsi3sonsi4vons1k4ons7keon4sveon4tedon5tenon4tokon5toron7ul8onu4sko4n5ø4on6øy_oo5k8aook5esoo4m5ioop9anoop5enoop5etoor6daopan9do4pasjo4penao9pendo7pent3operao7peroo5perto4petao4piekop4na_op4pasop4pi_op6piaop4pisopp3li3opplyop6poeopp1å2op6sa_o8p8siop2t1ror3adror5aldo3r4amo4ranao3raneo4rango4ransor3attora3ukor1a4vorbit5or3dea6ordelor7dikordi4sord3itords6eord3sto8redio4relao6reldor3enkoren3so6rerfo4reroore1s2o5resco4retao6retv4orga_or5gerorge4sorg4skorha9gori5b4o7rietori7kaor3indor3inkor3innor3insoriro8oris4ao4riti3orkesork7s2or6mapor5melor4narorned5or5netor4nolor3offo4r1oro5rosaor3oveor5ovnorpe6sor5senors4kuor1s4lor3s2oorso9vors4paor4tekor3temor5tiior7tilor5tis3ortodor6tokorto4ror4touor9udeoru4t5oruta4or4utfor5vegor9ø8korøk8tor3ø4vorøv8do4sa5bo4saku6o5sauosefi5o6senaose5slose5smos7hisosk3eio4skilosko5po3skrios8k3vos3lodos7oveos6pa_os6pe_os4pilos4poros4sekos3semosse5vos6skioss3kjos6spaos7styos5talo8ste_os4tegos4tekost6elos5teoo4sti_o8stiao4stieo4stinos5tisost3reo3stroost7råot5aldo9taneo9tar_ot3argotek5io4tenao4terooter5so4teråotet5aotet5ootika3ot5jero4to3ao5toa_ot3offo6togaoto5neotor5dot7redot5rerot5revo6t7rio6t5røots5elots6opots5prot7steot5tasot5tinot5toaot7tugot4typo6t5utovan9oov3anvo7var_o6varbova9reov5artov7arvove4lao4vendover3aovere63overg5overrover9voviso3ov4nesov1o2vov5salov4sekov4senov9skeov4sleovs5teov4stiov7sunovsy5kpa8cenpa3deb4pakti3pa1lapa7limpal5inpal5løp3analpa4nappan9depan3kapan5sepan5slpant8rpa8pa_pap4prpap3ripa4ra_5parad4parekpa4ri_pa3ris4parkipar4kvpar3m8par9s4parvi6pa4s3tpas5tipa6trep8attap8at6vpa4ve_3pa1vipbo6dape7d6a5pedaspedfø9pe6doape6donpe4dro4pedy62pe1inpe6ismpe8ka_5pelalpe5lar4peledpe4lef4peleipe6lep4pelerpe6lev6pelivpel4lo4pelovpel7stpe5lunpe4nanpen3de4penerpe3net5peng8pen7glpeni4n4penivpenly4pen5skpens4tpen5trpe7o6spera3a4peradpe4raipe4ral4perappera5t4pered4perei4perek4peretpe4rev4peritper5mupe3ros5perropers6m4pe7råpe6se_p3eske3pest_4petab4petal4petas4petau5pete_4peted6petei6petek4petel4petem4petid4petilpe4tim2pet4rpet1s6pfø5repgjer4pha9vaphavs5phe9tephe7vaphe5vephi5li7piasepi6ca_pid3s26piendpi3er_pi9erspig5gep7i6gjpi4kehpi6kelpik3kopi6la_pi3leppi4na_pi4ne_pi9nedpi4nelpine4vpin6goping3r6pinnspin4slpion5spip9lapi4rarpi4respi4rutpisi9epi4skipiss4lpis4sppis4stpka8vap4lan_plan5gplan5s4p1larpla4st4pleispli7vaplo4gjp4lo8i4p5lovply5d8plæ5replø6papo6da_po4de_po6f7rpo6lanpo4lekpol5lipo6lompon4grpongs62pon1spon5sapon4svpo2p1apo6pe_2p5ordpo1r4epo4refpo6reg2p1orgpo4se_po4sespo4stapos3te4pos4vpotak9po4te_pp3aktp9panepp5ankp9par_pp5arrp7pastp4p7atp4penappe5p8p4penøppe5rapp9esnp4petap4petepp5ettp2p1ilpp3infp4pistpp3ledpp5leipp9levp2pol4pp3oldp2p1oppp3orkpp5reipp5rinpp4rispp9rivpp9ro_pp7rotpp3skapp9spepp3splpp7sto3prakspra7lipran3s5prat_5prate4preiipren4s6pres_4prettpri5ke4pring5prinopris3tpri9ve6p7roc4prog_4proge4progl4p3roip5rop_7prosepru5tapru5teprø5s4prå8dapråk3iprå4kops5a6np2s1elp3sen_p5sensp7ser_p5setep5setsps5insp3s4jop2s1kop3skodp3s4låps5pleps7talp5s6tåp3s4uspsy3ke3psykop3s2økpt7arkpte7reptus5t6pu6dypu8le_pu4ma_pu4re_pu8reapusl7upu4ta_pu5taspu5terpu5tevput6trput4tupy6sa_py4se_pæ4re_pø8sa_p1ø2v8på4by_på4la_på4le_på7sko6påtå7qu9ar_4rabisra1bo4ra3cetra3d2a4radir2ra1drr3adrerad2s3radvi4ra5ede4raerkra4fiura5fo_ra4fosra5frera7geara5geera5intra3iskra9karra7kelra5krorak6sarakst64raktirakt3rr4a5ku5ralds4raledra5leora4linral5leralo6iral3opra4magra4mas6ramed4ramilra4naara5narran9csrand3r4ranfaran5ge6rangirania8ra6ninran3kv2r5anlr6anli2r1anm4ransvran6utra4pel4rapinra4pirra4pisra6pitra4pos4rappa3rappo2ra1pr1r4ar_4rarea4rareg6rargu4r1armrar3rera3sea4raselras3kera4skirass4lras7st4rasti4rastj6rastyratak9ra4te_4ratfera1t4rra4trø4ratubrat5utraud3srau6ga4rau4kraus6sra3vørraz5z6rbede4rbi9errbist6rbo4nirbon7srbo5rerbra5srbrei6rbu5enr4d5akr4dalardals5r4dantrd5atlr4datmr4d3aur6dedirde4enr3defir9dekar4deklr4deksr6delor6demir7denar6deporde6smrdfes5rdi3anr6diaurdi3e2r4dikar4diklr4dikur6dimirdi3ovr4dishrd3ostrd1o4vr9dradr3drakrd5ranrd3rasr3dreird3retrd3rotrd3seird8skerds4kvrd3stords7turd3undrdy5perdy3rer6d7ytr7d6ærrd1øs6rd7å6srear5e3redak6redamre3defre5denre3des3redigred4sl3redukre4el_6refos4regar4regebre5gel4regen4regerre4giare4gil4regub4regud2r1eigrei9rarei5sarei3sire7ismrei7varei5vere5ka_re5kavre7ken4rekob4rekom4rekon6rekos4rekra3rekrur3eksa6reksp4relag2r2ele6relekre7lenr3elit4re3lj5r4elmrel4sk4re1lu2re5lyrelå7rremi6lre7misrem9jirem8narem5p42re3na4rendr8renedre5negre7nei4renek6renet6rengdreng5l4rengnren6klren5sar3enss6renture3o2r8repen6repus6reradre5re_4rered4reref4rereg4rereire4rek4rerep4reret6rerfa4rerig4rerik4rerol4reromre3rosre5rotrers4pre2s3c4reselre4sem4reset4resinres5keres6klre6sky6re1slre4slure5smore3sovre9spe4respi4resprres4sjres6skres4spres4stres4syres3tére3str7restv4restå6resuk4resunre3svi4retalre4tap4retea6retelre5ten4re5ti4retoarets4iret4strett8o4re5tu4re7tå4revakre5van6reveg4revei4revelre5verreve5sre7vomrfa5rerfe8errfu8serga8lirg5andr7gannrga3rirg3artr6gedirgent4r4gesjr4geslrgie4nrgi7slrg5le_rglem5rg3lenrg3lerrg5rabrg3rearg3relrg5rinrg5storg9sturgå9asrgå6varhavs3rhø5rerhå9ne4rianf4rianl4riarb4riarrri4avari2b3lri8ca_ri4co_ri5der2r1idr4rieie4rieig4rieks6rieldri3end4rienh4rientrie5rarie5ririf4firif5la4rifø4ri4ga_rig4gr4rigreri5kanri3kesrikk5j2ri7ko6rikonrik4skrikts3riku6mri3k4v6riledri5lei2ri5loril4snri9mabri9mar6rimesri5metri4mi_7rimisri4mor4r1imprim9utrina5l4rinas4r5incr3induri4neeri4nes2r1infring3r2r3inj4rinorrins6krin6smrin4tr2ri1of6ri3om2ri1oprio5s4riot3r4risau4risedrise5i6risek4riselri6sju4riskari4ski6risku4riskyri4sto6ristøri6stå6riteo4ritilri5t6orit1s6ri6tun4rivarri6vedri5vei8riøyar4jerer4jetir4jetrr4jeturju6lark3aktr6kanfr4kaprr6katrrk5eikr4kelor3ken_r3kener4kenir5kensrke5rir4keror5kersr4kerørke4ser9ket_rk4hanrki4virkjek8rk5jorrk5lunrk9lutr3knekr5kneprk7nesr6kofor4kolar4kolir4koper4korar4korur4kosjrk5reirk4sarrk2s1irk4skark4stjrk4storkti4srk9veir5kvelr4kverrk3vesrk5vikr4k5ølr2k3øyrk9øysrk5åkerkå6park5å4srle4str4lesurli9kerli8tarlo5verlys7kr5løy9rm3anlrm4ansr6manvr4marer4marrr2me7grme5ner4mesermini6rm5i4vrmo7strmu7anrm5øy_r6m5åpr4n1akr4narbrnat7rr4natvrn3avlrndør5rne5a2r3nellr3nelsr4nenhrne3rorne1s2r5nes_r8nesir4nesmrne3sor4neterne5vrr4ninnrn5omnrn3omsr4n1oprn3orkrn5skern3skrrn5slarn4stirntre4r6n3utr4n5øvro5asi9roban9robarro4bedro4bef5robenro4besr3oddsro5endro7ensro4felro4femro7ga_ro7ge_ro6gryrog1s4ro4kelrok5klro7k6lrol6lyrolo9vro6makro4mal2rom7b4ro3merome5d4r3omnro4morr7omsyromsø3ro5ne_ro7nimron4narono5sron1s4ro4pad5ropetro4piaro4satro5selro3senros3laro6sovro1s1pros4stros4syro3stiro3strro5tesround3ro5va_ro7vasro5vekro7venrov5smrovve6rò6te_r6parbr5pefor4penor6penør5peskrp3ladrpun7gr6p5øyr4raror4reklr4replrre5skr4resmr4resor3ressrre4strro8sarro8tar2r3unrrå5der2s7adrsa5kar6saktrs3allr4sarrrs3arvr8sedirse6g7r4sekurs4elars7eldr4selir4sesir6sesurs6ettr7sim6rsimp7r4sinsrsis5trsj3orr3skadrs4kamr3skapr4skasr5skilr5sko_r5skoersk3opr4skorr3skotr5sku_r5skuers5kysrs4lefr4sleirs4lekrs4lesrs3lokr4slunrs4mo_rsmål4rs6nevrs5omlrso6n5rsons4r2s1orrs5ordrs4panrs6patr5spelr4sperr7spesrs4porrs3tapr6st7brs4tedrs4temr3stilr5stisr4stitr6st5kr5strørst7utrstyg7r3st6ørs5uklrsu7sars5usirs8vakrs5vitrsy4narsøks3rs9øyer4t5afr4tanart3anlrta9par4tarrrt3artrt3avsr4tedar3teder4tegor4tegrr4teier4tekar4tekir4tekur3tempr7t6err5terdr5terkr4terår4teser6teskr4tetar4teter4tiarrti5enr4tilar4tilir4tilorti7sar4tisprtis3sr3titurt3offr9tofor9tok_rt3omkrt3ordrt1o4vr9tre_rt6redrt3regrt3reirt5relrt5repr7tribrt3rutrts3arrt4segrt5skert3skjrt4stirt3undr2t1utrtyr5srty6rartæ9raru3andru6avhru4di_ruds4lru4elerue3s4ruga8lruga5trui3d6ruk4surukt3s6r7ulkrum3alrund3r4ru2nirun5krru4nøyru8ranru8rarru9rerrur8tarus2h3rus7luru1s4orus4stru3talr4utberute3iru4telru9terrut4reru6trørutto5ru4vedru4vegru4veiru4velru4vesrva7karva6larve3der4vegar4vegir4vegrr4veimrve5klr4velar5ver_rve5rervil9lrv5ungry5ke_2ry1klry4nesry4pa_ry4tekrær5inrø4be_rø4dekrø4ke_røk5s4rø4pe_rør5d6rø7retrø2r3orør4sprø5slarøt9asr4ø5væ2r1øy_røy9arrøy6edrøy5esrøy4et5r6øykrøy5rerøy4st3rådetrå9ene4rå5g4råk3rerå2k3urå4letrån6darårs5ksa4ba_sa5boks3abonsa4dag4sadamsa4ga_sa4gassa4gat6s5aggsag8nasa6go_sa4gogsag3s43saka_4sakadsa5kaisakh5esak5krs4akkysa1k2rsak4sp5saksr5saksu2s1akt4sa7kø1s4al_7sala_1sa3lesa9lets4algesals4asa5ma_sa5massam5eisa4melsa4metsa9na_sa7narsa3natsand5r5sang_3sange2s1anlsan5ne6sannos5anorsan5os4sansa6sansvs8ant_san9te6santr4santy4s1anv1s2ar_6sarab4saregsa5revsa4ri_2s1armsar5me2s1art8sasju4s1ass4sastysa5ten2s1atls5atsk5satt_sau6gas3auge2s1auksa4ve_sbo4dasbu6etsby8tas4cene8schl_sdam9psdu8ersea9re4sedag5sede_se6e3ise3e4l4s1eftsega6lse6gesse3gev9segl_sei5ge3se8ilse3inds3einise6inkse3insse3int2se5ka2sek4l4se3knse2k1r4sekra4sekri4sekro4sekspsek4stse6la_3selak5selarse4le_4selei4seles5s6elg4selik4selil4selis7selolse3lomsel5t62se3mase4mi_2s1emnsem4na9semndsem5pe6senau4sendr4senedse3neg4senem2s1enhse6nins3enkj5sen3nsen4sjsen3so7s6ent4senum4seram5seran4serap5seras6serau5sere_4serea4sered4seref4sereg4serei4serek4serel4serep4seret4serev4serik5serkr2se1rose4ropse4rorse4ros9s6ertser4tr4serulses5in4sesjeses5kvse3snases3pr5sest_4sestoses5un3s2et_3seta_se5taese5tar6setea4seteg4setei4setekse7tel4setes2se3tise8ti_4setje2set6r3sevågsfo8rasfra5ssfyrs5sfø5risga8vasgen9ssge4stsgå4vas5hei5sh5isk3shortshø6va4sia5msi7ans3si2dasi4deos4ider2si2do4s1idrsid8rasi5er_si3estsi4f3rsi5ke_sik2h7sik4kasik4kosi4komsi4kopsi4kossi4kotsi6mel4simet4sindesi3nek2s1inf7singus3innhs5innks3innl4sinntsi5nob2s1int4si5ovsi4pa_si8pe_si6re_si7rensi4ri_sir8klsi5selsi6sin6sisjusis5kesi4stisis3tosit8jisi4trisit3s4si4umfsi9vansi6veksi8vi_si9våt4sjanls7jarn2sj3av6s7jaz5s4je_sjef5tsjons76s7jugsju8la2s7jussjø3k6sjø9røsjø1s2sjø3t8skabe34s6kags4kaml4skane4skano6skant4skapp2sk2ar5skard6skars4skart4skates4kedas6kedoskel3ts4kelus3ken_s4kenas4kenos5kens5skepts5ker_s4keros5kerss2ke1sske3siskes4mske5sn5s6ki_5s4kiks6killskino65skiols4kiresk5irss6kis_7skiss5s2kivs6kje_3skjor5skjøn6skjøp2sk1k42s1k2lsk5laks5klassk9legs6kleisk3leksk5lits2klyd7skodd3s2kog2s3koi3skoles6koma6s1konsk5ords7kors4skort3skotts4krat6skreg3skrib3skrif4skrig3skrik3skrip3skrivs3kronsk6rud1s2krå2sk1s22sk3t41s4kuesku4er3skule4skulls4kulp4skultskum3s8skurvsk5va_3skvadsk3vass6kvensk3versk5vitsky3re6s5køaskå5resla8das3ladesla5gesla5kes5laks3slakts5lare4s1laus5laus3slaves8ledas4legis4legns6legrs4leivs5lekks4leme8s5less6lesjs4lesos6lests4letas4levasli5kes4likk4s5livslob5bslott48slu7a2slu2eslu5ess3lunds5lunsslu7sa1s4lyn4s5lys8s5løpslø5vaslø5veslø5vi5sløydsløye79s4lå_3smak_s4med_s4medes4medksmek7ls4mekt2s5mens6mesis6mil_smi7las6milesmini6s6mulas4mulds6mule5smurt1s2mørsmør3ss8mått4s3nas6s3nats7nektsne9sasnes9vsni6gl3s2nil6s3nin3s2nip5s2nit2s3nivs5nord6s7not5s6nud5s6nø_1s2nørsnø5viso4da_so4fagso4fas6s5off5s4oi4so4la_sol5avso4le_sol5f61so7liso8lo_sol3s2sol5t4so4lum4s1omg2s1omk1som5msom5sls4omst4somsy1s2omt5somt_6somtaso4na_son7da7s6oneso8neaso4n3osons4kson5stso4ny_2s1o2pso7pakso9parso7pet3sopp_5soppa3soppesop4piso3ran4s1ordsor4da1so1reso4reksor4gl7sorisso5riu4sorke3sor5s7s8ort4s5oscso8se_so8te_so4trasot5tesot4tiso4ve_so5ven5sovet7spak_7spaka5spake8spakks3pall5spalt3spari8spedaspe9dé1s2peis4pent6speri4sperls4perrs3pers3spesis4pests9pet_4spingspi7rispi7ro2s3pizsp9lars4plin3splitspo6ets4poras4pore3sporv2s5poss3pote9sprag5spran5spreis4preks3prems5prio8s7pros3prod4sprof3sprøy3s2pyd6s3pølsre8kasri8e9sri8kasri8masro6pasro6sasro9tesrot5osrå8mas7sablss5allss5amps5sanes4sarrs6seetsse5gess5eggsse5lissel5ss5sen_s5senes4senis4senus6senås5ser_sse7sks4sests7set_s9setss4siffs6siloss3injss3inns5sis4ssis5mss3karss3kofs7skogs4skorss6ky_ss4kyess5kåls7skåpss6narss5nøks4sok6sso5loss4omasso3rass3ovess6pilss4pors5stadss4tedss3tekss5teps7stipss4tråss3tusss3t4vssy6nass7øye2s1ta_stabs3stad3as5tafa3stafesta5flst3aftsta7ge5stakk4stakl6stal_st5ald4stale5stalts3tame3stammst8anes4tanfs4tangst3anlst3anvs7tapas4tapps8tapås3tari4statosta3tu3stave2s4t5b2s3te_3sted_s4teda5stedt2s4tefs4tege3steghs4tegrs2t4eis6tekes4teki4stekos4tekt4stela5stemd5stemn4stemøsten5as4teni6stenk4stenos5teolst8er_6sterrs4teses4tetas6tetø4steve4stevi6stevl5stevn2s4t5f2s6t5h2s3tias5tibes9tibl6s5tidsti5en3stift3stigns4tikl4stild3stiles6tilk6stilns4tilo4stime6stimés6tinis6tint1s2tip6stips4stitt5stjel3stjer2st5n22s3tog4stoks6stokt3stoli4stoljs5tolls9tommst3oms4stonist3opes6tormstor3o4storsst5o4s5stovast3ra_st3ralst4ran4strap4strars4tred9stria5striest3rin6stroest3rolst3ron6stryg4s3træ1s2trøst6røm4strør4strøs4strøy6stråd2st5s64st7t6st3t4r1s2tub3s4tudstu4elstu4er3s4tum6stunn2s4tut3s4tyk2s5tyn2s7typ3s4tyrstyrs36stysksty5ve6størkstø3vestø5vi5s4tåesu7a8lsu6ga_su4ge_su3is5suit5a4s1uke3suk5k1suk5ssu4le_3s4ulfsu4lik5sund_9sundssu4pe_super3su8presu4re_su4riesu4riusurs5ksur4spsu3sansu4se_su4sik5svak_3svake6svakssva4la7s6vams4var_s3varm6s1vas6s1vegs5veies5vekasve4res5verks4verm7s4vev6svikg3sviktsvi4sesvi9ve5s2vorsvor7tsy4de_sy5densy4kersy6kogsyn6sksyn3tesy5rarsy4re_2s1yrksyr4kasy2s3tsys4trsy5tensy5t6hsz3c4zsæ4r1isærle9sær5s83s6økesøk7kjsøk4sksøk4tasø4la_sø4le_sø5letsø4rassø4re_sø8retsø7telsø5tes2s5øy_4s3øya6s5øyd2s7øyss3å2keså4le_sån4daså5pet6s1åpnså4re_sår3skta4bu_4taend4taenh2ta5fetaf7f65tafista4ka_4takauta7kenta5kertak4si5taksttak4tot5aktøta9lamta3lanta7lasta4leita4lektal4lytal3opta6l9ut3ambi4tametta3narta5nasta5nattand5rtandø4ta4nelta5nemt3anfatanfø66tangft3anle2t1anm3tannlt5annotanns4tan6sk4tansvt3anve2ta3o4ta4pa_ta4pe_4tappa5tappi1t4ar_4taram3tarbo5tarbø4tarratar9sitar7sptars6v6t9asftasi3eta4sifta4siltas5s4ta7strta7testat3optat2s1tat3tet3attr4t5augtau4sk6tavin4tavlitbo6datbu8datby7tetdy5pe4te3ag2tea2nte5arb3teatr4teatt4tecel3tede_4tedebte7def4tedek4tedel4tedemte5den5tedilte4dorted4skted4sltefo8rt3efte5tegat4t3egdte7geate9geete4gimte3gla8tegs_6tegsvtegvi85tegås2tei4dt3eiga6teigr3teikntei5le6teinfte5i4s6teisote7kente5ker4tekil5tek1ktek4li4teknute7kra9teks_t3ekse4teksptekt4stek6tyte2k3v2te3latel6ak3telav4teled4telei4telek6telerte4les4telid4telik4telil4telinte4lir4telis4telit4telivtel4lotel3set3elsk2te1lu7telut3temae6temant5emba5temiktem9matem5pe3tempote5nabten8amte4nante4nat6t7enc4tendr4tenedte5neg6tenem5tenes4tenet7tenik5tenis4tenivten9note4nomte5nor4tenotte6novten3saten3sotens5v4tenumte6ora4teord4tepak4tepas4te5pe7tepee4teract6er5d4tered4teref4teregte4rel4terep3ter5gte4rig4terikte4riv4terk_4terke4terkh7terkr4terktter3notern5ste5ro_tero6ete3rof4teromtero6v5ters_ters4lters4hter5sv3ter3tter9toter9ul8terumter5ør4terøt4teråd5tesarte7sen2te1sh4tesid4tesik4tesit4te1sk6teskite5sko2te1sn2te3so5test_4testy4testø4te1svtes8væ2te3søte8sårte4tap5tete_tete4e4teteg4tetei4tetek4tetem3tetik3tetis3tet2stet5titett3s5tetu_te2t3åtevo6rt4hea3thei5mtho7litho3rethu5le2ti1akti5als2tia2m2ti1apti3asp4tidan4t7idé4tidistidvi44tienhtie5ra4tierf4tierkti4ertti3esk4tieta4tiettt8ifråtif5teti9ge_3tignoti6gunti3ka_4tiket4ti5kitik4kj2ti3kotil1d43tildeti3lei3tilfetil3id4tilke3tilkn4tillhtillø77tilnæ3tilsttil3t44tilteti7mab5timatti4me_4timo72t1impti6nab4tinazt3induti4nem4t1inf6t5inj7tinks4t1inntinsk54tinsp4t1int4tinva6ti7omti6platira4tti4ref6tisak4tisam4tisek4tisel4tisem4tisep6tisig4tisio4tisje4tisjutis4ka6tisku4tisty4tistøtiv6istiv5sitiv5skti5ær_ti7ære6t3jag2t1jakt5jarn2t1je_2t1jegt5jord3t8juvtkå8patla4gat4ledrtle5titligh6t6l7uttl7øy_tlå3net6makut2meg4tme3intmini6t4nelit4neskt4nesttnæ6re7toar_tobe6rt3o2blto9de_6toff_t3ofreto5frito7gento4gretog3st2to1in1to3ke5toksi5tolatto5lel7tolkitol5trto9ma_4tom1s5toms_to4nedto4nelto8nibton3saton5spto4ny_4to1pl4toppd6toppgtop4po4topptto4rak6toregto4rekto7rem5torertore4t4torgator7metorm5stor5nators4itor5t84to3setos5keto8sku4tos2pto8ti_to5to_to4torto7vegtpi7netpi7pitpo4et3trafit5ranetra3petra5potra5r45trase5trasét3refu6t1regt5regi6trek_4treke4trekl4trelatre5net6rengt7repet4rero6tresitres4l3tresnt5resut4retat6retotre9va4t1ric4t4ridtri7eit5rig_t4rikkt8rina3trinn7t6riot4risttri5totri7vi3t4ro_tro9ar3t2roitro3int6rondtros3l7trua_5trued5truet5truknt3rullt3rund4trupet5rutat3rutet3rutitry3dr3t2rygt5rød_t5rødt5trøya4trøyr6trøys5trøyttrå4drt6råklt3råstts4angtsau6rt6schatse4erts5egetsei4dts3eigt3sen_t5senst5ser_t3seritser3ot4seskts3etats1e4vts7illts3innts5jegts5jort7sjukt4sjurt5skadt4skants6kists6kjøt5skolt7skottsk5ruts5krøts1k6vts9kvits6ky_t5smitt5spekt3spelt5stadts3takt5start5statts6taut3stedt4stegt4stekts6tigts4tikt4stint4stitt2s1tjts5tonts3trytsu7gets3ulits3u4rts5usit3sviktsø8katt9abott5adrtta9frtt3aftttall4t4tanst4tanvttare6t4tarrt4taset4tasjtt3avitt5avktt5avrt4tedat8tedrtt3efftt7eidtte3intte7kvtt5emnt5ten_t4tenat4tenitten5st5ter_t4teråt4teset4tesit4teslt5tet_t4tetat4tetett3indt5tinet7tinét5tingt4tinit4tisjt7titettlin5t5tofrtt5om_t7tomrtt3oppt5toratt3ordtto5rett3ormttpar4tt6påstt3ramtt3raptt7rattt3restt3revtt5romt5tropt2t1røtt7saftts3artts5kjtt3soktt3ugltt8utett6vuntt1y6ttt3ø4l4tu4avtu4be_tu6demtu4er_tug8la6tungdtung9s6t5unitu4niotu4rastu4rektu4rintur5s4tur3uktu5rustu4sintust6rtu8va_3tvang8t9var3tveit4t7vertvert53tvet_7tvetstvi5lat6ving3tvungty4medty4ne_5t6ypety4petty4rak6tyregty4repty4ri_tyri9et3ytelty5tenty4ve_5t6zel6t6z5ltær4ertær4ettær5s4tø9kettøk8ta5t4øm5tøp5setør3in7tørk_9tørka5tørketør5netø5ta_t9øyemtøy5tetå4en_tå2l3atå9la_tå4legtå7leltål5s4tån8datå6pe_tå6re_tå4rept3året4t5åri3t8årnt3åtaktå7tenu5ars_ub7altub7antub5arkubel5subis7tub5rinuch5enuch5eru7das_ud4dagudeie5ude3luu6derou3d2etu5devoudi3anudi4enud5legudy9raud5å4suem8nauend5rue4re_ue5renue4rerue4resuerle7ue4skjufi5neufor3suf4tanuft3spu6g5avu4gerøu9get_u8getaugg3s4ug4le_ugle7sug7ne_ug5s4iug5øynuid5eluid5eruid5inuista7uit3enuit5erukare6uke5l4uker5iuk8k9lu5klemukl7utu5k4nou4k5oguk3rusuk4sekuk4seluk2s1kuk7skiuk2t7rukts6lukt3spuku5leuk5viku6l1aful3aksul5artul4detule5mau3len_u6leniu3lensu5ler_ule3riu4leroule3stul4f5luli9en3ulikhuli5neu7linjul4k3vul4lagul4lamul4legul8li_ul8ligul8lotullo3vulls4tull3svul2lu4ulo7vauls4poul4tegul4tekul4tesul4tilul4timul7torult3riul9ut_u7lutau9luteul7va_ul5vanul4varul4ve_ul4vegul4veiul4vesul4v3uulæ6raulæ5reulø3seuløy6eul5å6lu6mareu4mendume5rau6middumie6numi9nau4mintum4milum4misum7panum4pleum7se_um4skuum4sorumta8lumør3suna6daun5algu4n3ap6unde_un4dekun4del6unden4undetu9nei_u4nenou3nes_unev5nun4gemun2g1jun4g5lun2g1r1u2nif3unionuni4stun4k5lun7nakun5nesun4nivun4n3yu2n3osun3skrun5s4punst3oun1s2vun4talun4tamun4tasun3t2run4triu7nøyguor8dau3pea4uper3au4petaup3insup6nevupo9peup4pedup4plaup6preup6senup2s3kups4keups5prupåvi6ur3aftu2r1akura6lyu5raneu3ransu5rar_ur3arvu9ras_ur5aspur3attur4bodur4d5oure8alur5egguregi63ureinur3eleu4reliu7reomu4resuu4retau4reteur4e5vur4febur6feduri5neur3innur3insur3inturi6spur7k6jur8klaur4kleur6k5nurma7gur3neaurn1s2urom5suro7piur3oppuro3s4uro8taur4pelur4salur4sinur4skrur4speur5steur4stjurs3vaur2s1øur3teourts4tu6rug8ur7ugluru4keuru7knurumo7urun4gu7runkur4velu9saneus3angu9sar_u5sealu2s1eiu4seleus7erku6sesius3evaus3indus5innus7jagus5kafus7katus5kenus5klous7kruus5linu3sorius5sarus6satus4sjåus4skjus7smiuss7møus4stru4status3tavus3tedu5steius7tenust5ofuston8us5toru6streus4trius3troust7utus3ungusva8nusæ9leu7taggu9tal_ut3albut5aldu3talluta7nout6anvut3armut3artuta1s4u5tas_ut4ba_utbe8dut6by_4utdatut3eksu5temmu9temtu6tenau3tenku4tenuu6terøu4tetau3tettuteva9utfa7s8utgåeu4t5ifutiku9u4tiliu5tjen3utleiut7omsu3trivu3trolu3trosut9rød1ut1s44utseiut4tidut4tilut4tra3uttryutt1s2u6t5unu2t5utut4ø8sutøs7t1utø4vut5øyauve5diuve3inu7ves_uvet5øuvø9reva6ka_va7kanva5kerva8ki_vakt5rva3lanva4led4valelval3lava6l1ova4lunva4løyvam8puvand5svane5sva4netvan4grva8ni_1v4annva4nom5vanskvan3smvan3tivan9trva4ra_va6rakva4ralva4ramva4rapva4re_va4regva6remva4resvar8kavar5mavar4savar4skvar4svva4sa_va9set6vasidva6sieva4sifva4sikva4silva6sisvass5a4vastava3ta_vat7ravber5gvbo6davdu6er2ve1a2ve6ar_ve9dobvedom5veggs4ve3gle6vegre4vegruve4gutve4g5å1vei1evei3en4veillve4ke_ve4ked4vekeevek8lavek8leve4klivek4stvek5to6veld_8velds4veled6velei7velet4velis4velit6veliv5velocvel3sevel3smvel5spvel5st4velugvel5unve8na_4venemve5net4venevve4ninvent6avent4s4ventyve4nusve5ny_4venyave4nym2ve3o41v8er_ver5akver3al8verauverd7vve3re_4vered4vereg4verekve4rel4verepve5rerve9ri_veri3ave7rie4verikver3il5verknver5m6ve9ro_ve3rom2ves4ave5san4veset4veskive9slive1s2m6ve3so4vestr4vestu4vestøvesva74veteg4vetek6vetev2ve7tive4to_veto7eve4torvety8eve6vakve5vanve9varvev4smvev4spvfall4vga6livice5svid3s4vi5endvi4katvi5kedvik5ke3viks_vik5sa5viktivi2l1avi5la_vilt7o4vindl5vindu4vingnving3rvin3na6vinnh4vinntv2in2svi8pa_vi6pe_vis3abvis3akvi4seevi3senvi2s1kvis3omvis9paviss4pvis5tivi4takvi4t3ovit7ravit5revi4va_vi6vesvjet3tvje4tuvk4lervla6gavlei9ev5lesnv6lesvvlu9savmord4vmå8lavne7dev4nelev4neliv4nelov4nerovn1s4tvoks3kvok6s5vo9nalvo9narvon5devon5sh2v1o6pvo9ren2v1orgvors7kvos4sevo4tegvo4telvo4ve_vo6vi_3v6rakvregi3v3ringvrin5svrø3vev7salivs3eggv3s4elv5sen_vs3lanvs6letv6slikv6s7nav4s3nøvs7s6tvs4s5åv1s2t2vs3tilv2s5øyvså7rev5teppvti8navva8lavvi5kevy7ensvæ9retvæ8ta_vø6re_v3ørkevø3se_4våendvå8ka_vå4ke_vå4le_vå3renvå8sa_vå5tesweate7wi9ar_5wi6enwi9er_wi3renwyork3ya4ne_yan7slyb4bedybu6eryd4depy4deroy2d1isyd5remye6dreye4lenye6letyel4skyels3my7e6ney8enery4ensey3e6reye4relyer8sky4erstyf5le_yg4dalyg4dekyg4delyg4depyg2d1ryg2d1yygen5syg6gamygges4ygg3s2yg6g5åy6karay7kel_y3keliy7kelsy4keroy5ket_y9ketsy4kjarykk5niy3klubyk3lusy6koliy4komoy5kosay5kotiyk3varyla8gayl4danylde4syligh9yl4levyl5tety8luse3ylvenylæ7rey4meteym8sa_ym6ta_ym6te_ymå6layndes8yn5detyn7eldyner3gyne5s4ynesi8yn5gelyn4gemyn4g5øyn6k5vynn3s4yn4semyn9setyns7kiyn5skjyn4tapyn8tegynt5eiyn4tekyo4gatyo6gi_yor6day4penay6petay7pingyp5innyp7p6ayp4tokyra8kay7rarby4r5auy7realyre3iny5reisy3relsy5remsyre9ney4reroyre5scy4retay4retey4retoy7retøyr3innyris6pyr4keeyrke4sy3rommy5roskyr4sanyr7setyr6skjyr6skryr3stiyr6tekyr2t3ryr3trayrå8day4rådiy6råstyse4buyse5eiy4seray4sesjy4sesky4sesty6sesuy9set_y7skagysk9auys2k3lysk5øsy4s5orys5pisy5s4poys6sakys6samys4skuyss5peys4stays2s5vys4tatys3telys3teny2s3tiyst3opyte3iny4tekay4tekiy4tenay4tenoyte6royters6y2tes2y3t2hi6y5tilyt5jenyt9jeryt4meiyt4mesyt4re_yt5reryt4rikyt5t6ayttes6yva8lay4vesey6vesyyvi8sayvå5teza5k6hzania54z3ent6zistyz2z3elæk7je_ækkel6æ2le3dæ4lenaælsle9æ4r1akæ3raneæ4ransæ4rarbæ4r1atærbu5eæ8r7eiærei6eæ5rernære4slære4spæ4retaæ9retsærgen5æ4r3ilær3insær5is_ær5ne4æ2r7o6æroms4ær6selæ2r1ø4ærøy7eøbe4liød9de_ø4dedeø4delaø4deriø4deroød4redød4rekød4repøds7keøds4koøds4muød3undø4d5urø3e6reøf8la_øf8le_øfte5søg5re_øg4steøg4strø4keloø6keseø8keslø4kestø4keteø5kjasøk5keløk5ketøk4k5løk3lagøk3lanøk5oppø8krarøk8sa_øk6se_øk4sesøks1t6øks5tiøk5ur_øk5ureø4lediø6leluø4leroø6letaølke7søl6levøl6seløls6t4øl5s4vøl4varøl6vekøl8velømini6øm4medømmet6øm4peløm7s6pøm5sviømå8laø6n5alø3nes_ø9neseøn4nalønns3lønns3tøn9sa_øn5sakøn5samøn5se_øn3serøn3skjønst3rø4pedaø6pe5iø4penuø5peroø4peruø4peteø4petiøp5steøp4s5øø2r1afø2r1akø4ransøra8saøra6siø4r7auør7eddø6reduø6reinørek6lør3eksør5ektø4reruøre1s2ø5res_ø4reseø6resiø8resoø4restø4retaørge5sør4jetør4kesør6k5nør4kveørm9utør4n3uør4n5øø5r6okør4rekør4repør4råtør4sakør6sesør5skiør4skrør4somør4speør3stoør9tarør4tekør6tifør1ø2søseri7øs7karøs4lagøs8tasøs6tegøst5oføst5ovøst3reø2s1ø2øt5asaø6tegeø4teniø3ter_øte3ruø2te1søte7snø4tetaøt3s4pøt7s6åøtt5avøtt5raøtt7riøtt1s2øt4turøug8laøv5ansøve5inøve5noøves4tøve3teøv5reb7øyan_øy4dekøy4eleøy4erføy3ke_øy4ledøy4legøy3pe_øy4peløy4ra_øyri6vøy4spiøy4teiøy4teløy4veiåak6taå5aranåau4reåbo9taå4dereå4deriå6deroåd7sloåd3slååd1s2nåd7spuåem8naåfø5reåg7aldåg5rinå4karbå4kenaå4kereå4keslå5keviåk7lauåk3oppåk5røkå5k8ulå6larbål5au8å4leniå4leteål4sanål4sekål4serål4stiålti5då2l1øyåløy4eål5å6kåm4li_ånd4saånd4seånd4soåneds5åne5i6ånely6å5nes_å4netråpen3så6peroåp4ne_å7raraå4restår4le_års5afårs3elår3semårs3koår8skuår3solårs3taår7steårs3tiår7stoår5stuår5u4kås5eidåse3s2å4sesmå4sesoåse5taås5ka_ås7kopå7steiåtaks5åta9laåtale3å4tangå4tarkå2t1eiåti7daåt4tedåt4triåt6t5æå2ve7då4veniå9ver_", + 7: "_ab6s5t_ac6tin_adel4s_ad8la__ad6le__af5f6u_ag6na__ag6ne__ak6ka__ak6ke__ak6ne__ak8sa__ak4se__ak4te__akte4r_al4ge__al6ka__al4ke__al4kom_al4la__al4le__al5leg_all5s6_al4ma__al8me__al6s7k_al4ta__al5tar_al4te__al6ve__am6ma__am4me__an4da__an4de__an4d5ø_an4ga__an4ge__ange4s_an4ja__an4ka__an4ke__an4la__an4na__an7nal_an4ne__an4sa__an4se__an4ta__an4te__an5tem_an5tep_an4ti__an6tin_an4tis_an4tiv_ap8lan_ar6de__are4o7_ar4ge__ar5ges_ar8ka__arlan9_ar4me__ar7mea_ar4na__ar4ne__ar5nes_ar6ra__ar6r7u_ar6ta__ar4te__ar6va__ar4ve__ar4ved_ar4ver_as4ke__as4le__as6pa__ast5ru_at4le__at4na__au4ka__au8le__au6sa__au6se__av7i6d_av4la__av4le__ba6la__ba4le__ba4ne__ba4re__ba4ri__ba8te__be4de__bede4n_be8di__be3e4d_be6ke__be4la__be9nar_be4ne__be6ra__be6re__be4res_be8ri__be7ska_be4ta__be6te__be5t4v_bi6de__bi4le__bilet5_bi6t3r_ble4k3_bling5_bo8de__bo4na__bor6t5_bort6e_bort9r_bu6da__bu3d6r_bus6sy_by6de__by8ta__bø6k5a_bø8nen_bø8ner_ca4en__car4s5_da4ge__da4le__dags6e_da4ne__deka9r_deko7d_de4le__del5s6_de4mi__demo7e_den5sl_de4re__de4ri__de6s5m_de4sto_devi5s_di5e4l_di4et__di9f6t_di4ne__di8s3t_do6re__drau4m_du4en__du4ge__du4se__dy4re__dø6la__dø7r4a_dø7r4e_dø4ve__då5ren_då7ret_ed4le__efta5s_ef6ter_eg8de__eg6ga__eg4ge__eg4gel_eg8la__eg4le__eg6na__eg4ne__ego7t8_eg8se__ei5den_ei4ga__ei7ger_ei4ke__ei8ma__ei8me__ein7as_ei9rar_ei5res_ek4le__ek6ne__ek8sa__ek8se__eks6pi_eks3t4_ek4te__el8da__el4de__el4g5r_eli5ne_els4kl_el6ta__el6te__el6veg_em4ma__em8me__em6na__en4da__en4de__en4ga__en6gav_en4ge__en6g5r_en4ke__en5og5_en4se__en6te__ent8re_er4g5r_er4la__er4le__er6ma__er4me__er4mek_er4na__er6ta__er4te__es9ast_es8ka__es4ke__es8la__es8le__es6pa__es8sa__es4se__es6te__es7tet_et8la__et8le__et4ne__et8sa__et5s4e_et6se__et1te4_et6ter_ev4je__ev4ne__fag3s4_fa4ne__feil5i_fel4ta_fer8ro_fe8st5_fi4le__fo4bi__form5s_fu6ge__fu8se__fø8rel_ga4le__ga8li__ga4ne__gas5ta_ga4ve__ga9vee_ge6ni5_gift5s_gi8v3a_glø9se_gnå7la_go5des_grei4e_grus5s_gu4de__gud3v4_gu4lat_gu4tu__gås4e5_hai5s6_ha6ka__ha8ma__he4er__hen3i2_hes4s5_het6s5_he5t6e_hi6re__ho4re__ho5ren_ho7ret_ho8ta__ho8va__hy6ra__hy4re__hø4ve__hå8en__ifø5re_ig8la__ig4le__ik8te__il6d3r_il6de__il6je__il6ke__il4le__il4te__in8ga__in4ge__in6gri_in6ka__in4ne__in5n6e_in4n3i_in7tes_io4nom_ir8ra__ir6re__is6lam_is4le__is4let_is4me__is8na__is8ne__is6sa__is4se__is8te__i5sted_i5stem_i6s7tj_i6s7tr_is8ut__i4var__i4ver__i4vere_iv8ra__iv6re__ja4de__ja8se__ja4va__jo8en__jo4se__ju4li3_jø4dep_ka6la__ka6li__ka4ne__ka4p3r_ka4ra__ka6re__ka5rin_ka4te__ka5t6h_ka6va__ka4ve__ki4se__ki8va__ki6ve__kjek7l_kjønn4_kli5ne_klo9va_kly7sa_kna7se_ko6da__ko8le__ko6pe__ko4se__ko6ta__ko4te__ko6ve__ku5f4l_ku8ra__ku4re__ku8ta__ku8te__kve9ka_kve5ke_ky8la__ky4le__ky6te__la4da__la4de__la4ge__la5ger_la4ma__la6ta__la4te__la4ve__le4da__le4de__le4ge__le4gel_le8gi__lei4ve_le4ke__le4k5r_le4ne__le7s6a_le4se__le4sek_le4ses_le4s5p_le4va__le4ve__le4ves_li4de__li5ene_lik5k6_li4re__li4se__li4ta__li4te__li4ve__lo6ge__lo8gi__lo6g5r_lo8sa__lo4se__lo4ve__lu4pe__lu6ra__lu4re__lu6se__lu4ta__lu9tas_ly4de__ly4se__ly5s6e_lys5s6_ly8str_ly4te__ly4ve__lø8de__lø6en__lø8ne__lø6pa__lø4pe__lå6re__lå4te__ma4ge__ma4ke__makt5s_ma4le__ma4li__ma4na__ma4ne__ma4ni__ma4ra__ma4re__ma4ri__ma4sa__ma6t8h_me6d4i_me6d5r_mei5et_me6la__me4l5ø_me4ne__mes5ti_me4tri_mi4le__mi4me__mi4ni__mi4nik_min4k3_mo4na__mo8ne__mon4st_mo4re__mo4se__mo4tek_mo4ter_mu8ge__mu6le__mul5es_mu5r8e_my4ke__mø4re__mø5res_må6la__na6ge__na8ke__na4sa__nat6tr_ne4de__ne4den_ne4d5i_ne4d3r_ned3s4_ne8pa__ne6pe__ni4na__ni4pa__ni6pe__ni6se__no6de__no4me__no8mi__no8si__no4va__ny8sa__ny6se__ny4te__næ4re__nø4re__nå4de__nå6le__od4da__od4de__od8la__od8le__offsi6_of4te__of5teb_ok8ka__ok4se__ol4ga__ol8le__om4ar__om6bo__om4e6n_om4gå__on4de__on5des_on8ne__opp7el_opp5s6_or4de__or4del_ord5s4_or6ka__or4ke__or6me__or4re__os4te__ot7t8a_ot4ta__ot4te__ot4tes_ot4to__pa8la__pa4le__pa5n6e_pa5n6i_pa6re__pe4ke__pel4sj_pe4ne__pe8sa__pese5t_pi6le__plø7se_po8la__po4le__po4log_po2p2e_po3p2u_po6re__po4res_po8ta__po6tek_pøn9s6_ra6da__ra4ga__ra4ge__ra4ja__ra4ne__ra6pa__ra6pe__ra4re__ra6sa__ra6va__ra4ve__re6da__re4de__rege4l_re4gi__rei7de_re4ins_re6ka__re4ke__re8kle_re4kli_re8le__re4ma__re4na__re4ne__ren6sk_re4ve__re4ves_rie5ne_ri6ka__ri4me__ri4pa__ri4pe__ri4p5o_ri4sa__ri4se__ris5ko_ri4s3ø_ri4ta__ri6te__ri6va__ri4ve__ro4de__ro8ke__ro4ma__ro9par_ro4pe__ro9sar_ro4se__ro4sed_ro4ta__ro4te__ro8ve__ru8ga__ru4ge__rug9le_ru4na__ru4ne__runes6_ru4se__ru8va__ru4ve__rye7ne_ry6ke__rød7s4_rø8le__rø4re__rø8va__rø4ve__rå8da__rå4de__rå8er__rå6ka__rå4ke__rå3k4l_rå6na__rå8sa__sa4ge__sa4la__sa4le__sa4me__sa4mer_san6d7_se4k5l_sel4v5_se6na__se4ne__se4ra__se4te__si6ga__si4ge__si8la__si4le__si4ne__si4ra__si5str_si4ve__ska7ka_ska5ke_skei5d_skog5u_sku6m5_skå5ra_slu9ka_slø5se_smas5k_små7k6_små5t4_småt5t_somma4_sop4pa_sor4t5_so4ta__spa5ra_spi9la_sta9ka_sta5li_stat4s_sted4s_stem4m_sti7me_sto5ne_sto6ra_stu9va_sva5la_sva5re_svar5s_sver8n_sy5d6e_sy6na__sy4ne__sy5ter_sø4ke__søl6v5_søy6en_så5pen_ta8ke__tak5sk_ta4la__ta4le__ta4les_tal4li_tan5de_ta4p5r_ta4ra__ta4re__tei9er_te8ke__te4ma__te8ne__te4se__te4sta_te4str_tid6s3_ti4de__ti4g3r_ti4med_ti4na__ti4ne__ti4p5l_to5arm_to6en__to4er__to6et__to6le__to6na__to4ra__to4re__to6reb_to5rye_to4str_to8te__to4ve__tre3sp_tu4en__tu4ne__tu6ra__tu4re__tu8ve__ty6da__ty4de__ty8re__tyr8s9_ty5ter_tæ4re__tø6ve__tø9ver_tø5vet_tå5ker_tå4le__tå5ren_tå7ret_u6berg_ug6la__ulen4d_u8lene_ul4ke__ul4la__ul8le__ul8ma__ul4me__ul4ne__ul4v5i_un4ge__un4se__u6rane_u4ret__u6rets_ur4ne__ur4te__ur6tet_u7stek_u5stel_ut5age_u4ten__ut5esk_ut4ne__ut3o6v_ut6rer_ut6rov_ut6se__ut4si__va4da__va4de__va4ke__va6les_valg5s_va4ne__van4n5_vari4e_var5sk_ve8en__ve4ga__ve6ge__ve4g3i_veg3s4_vei3g4_vei4ta_ve4l3e_ve4ne__ve4net_ve4ra__ve4ras_ve6re__vermo9_vers4t_ve8te__ve4ve__vi4da__vi6de__vi4ka__vi6ma__vi8me__ving7s_vi4sa__vi4se__vi4ta__vi4te__vok4s3_vo6ta__vye5ne_væ4re__yn8da__yn4de__yn6ge__yn8ka__yn6ke__yp8pa__yp4pe__yr8ja__yr8je__yr4ke__yrkes5_yt9ren_yt6te__ære4st_æt4te__øg4le__øk4te__øm4me__øres8t_ør8na__ør4ne__ør6ski_ørt9an_ør8te__øve4r5_øv4re__øy6de__øy5ene_øy8rer_øy4str_ål8ut__ån8da__ån4de__ånd6s5_åt4te_abe4leiabel5t4abe9na_abes9kaab9lara5aborteade5i6sa4d5elvaderle7adi4eneadva5reaes8ke_a6f5innafo7ra_afo7r8eaga6ve_a7gelen3a4gentage4r3aage6rekag6lesaag4sambags4angag3s4eiags4kulags3t2vagå8ve_ai4n5o4aka4t5rake5l4iake4rekakk6andak4k5isak6k5riakra8saakregi4ak7s6idak5stolakt5allak6tansak5temealag8raal3a4mealan5gra5laren3a4larmal3a4sialeie6na9l8eikal5e4mua4l3enhale4posa4lereda4le5roa4le3teali5na_a4l3inda4l3insalj5endalj5ø6val9keraalla4gaall5artal5len_alle3s4al4lest5alli5ealli9neal4lo3mall4senall4stial6løs_al4løseal8løstalo6rital9skapals6teral7temaal4t3opa4l5u4kalul8laalu8re_alv5aksal5v6eral9ves_alvi8se3a4matøamen4s3ame4rama4meret3a4meri4amerinamis4kuam4leseam6lestam4pareamp7innam4p4ream7s6kuam4s3tram4s5veamti5daanda5taand4sela4n5elvan4g9raan4gre_an6gresan4gretan4g3ryangst5yang5svaang6søyan4kanaan6k5å6anland6anlø9paann5ansan6nemean4ninnann4seiann4sidann5staann4s3uano6debanri7keans5aftansa7kaan4sentans5indans5insans4k3lans6kunan4s3pi6anstarans4te46ans6tianta8laan4tansant5emi5antennan4teslanti7klant5ordant5rabant7romant5rygantus4taon8de_api7r6ea5p6las3ap3par4appar_6appareapp7eskap5plasa3p8ølsa4ranora4r5assara5te_arbo8daar6deliard5staareba4ra6r5ektar7eleka4r6elia5remo_a6r5enga6rerelares8kaa7reta_ar7e6vaarg5stjaria7nearins9karise4aa4ristoar4ke5sark6steark4strark7vegarla4gaar4mediar6metrar4minfarmå6laaro8de_a4r1o4rarp5retar7reskarri8e7arrå6daarsa6kaars5ansars5kamar5skarars5kesars7krears4veiarta4laar7tele8artetsart4ha_art4hasar4tika6ar4timar6trinart6s5tar6vetearvi8saarø8ve_arå8de_a6seneta6sjettas5ketias6kuleask9u8ta5s4lagasla8gaass5aldass5altas4servas6sifras5singas7sos_as4stanass5trua4statuast5renast5ø4va5taeneata8ka_ata8la_ata9rara6t7arvate5k8ea5tene_a6terata8tereka4terila4t3ettatik6kaati5neaati4repati8sta5atlantats6kul4at5te_at5tensatt5iseatt7o6pat4trafat4t3reat6trinatt3s6katt5s8lat2t3ø2at5å4seau6e5taau5keli1auk7s6aum5s6kaum7s4tausti6saus6tonau6striau2s5ø4au3t4rea4v3anda4v5anla2ve3d2a5vede_a5velegave7rasa6vereia4v5intavi5sa_3a6viseavlø5seavsko7gavta9kaa6v7å6lay7ane_ba5den_ba7densba5kan7bakars9ba9ket_bak9ettbak5strbal4lagbal4lanbal4ledbal4legbal4leibal4levbal4ligbal6lovball5s6ban6kapban4korban2k3ubaret5tbar5skrba4serubas6sakbas4sanbassis5bass6trb4b5arbbbel6t3bbelte4b9bene_b4b5erfb7beskab6betenb4b5innbedi9e8bed5redbedy9rabefa5rebehers7bek6kelbekke5rbek4kesbe4l3abbela9gabel5eiebel5eigbel5einbeli9nabel5letbel5s4pbel7s4tbel4tagbel4t3øbelæ5rebelå7nebe4nestben5s4iben5skj8berestbere5teber5gesber4g3åberi5keberu9sabes6k5nbes6selbes6tesbeto5nebe6trarbe6tre_be4t3ribeva5rebilet5rbil5legbi4nansbin4golbi7ris_bir4kenbi5s4labis4p5ibi5s6tabis4tilbis5trublan9dablan5keb8lararblei5erble4k3able5kesble7r6ablæ5re_blå5se_bob5by_bob9byebo4k3etbo6k5ribol5eiebol5s4pbom4belbon5atobo4retebor6teibor4tesbort5s6bred5spbret7tebre4vinbruk4s3bru7na_bru5nesbru7renbrå5te_bud5d6hbund4s3bun8ge_bus4h5ebus6sekbus4selbus6setbæ6rar_bæ5rer_bæ5rerebæ5res_bæ5ret_bæ4r5isbøn6nesbør4s5kbøy4enebå4s3tebå6s7tica6priscar4te_cel4lescel4levce5nes_ck5e4t3clai4r5co4la5rco6n5os6d5adeldak4se_4daktig7d6al5jdame5t6dan5nebdan4seldard3s4dar5os_dar4ta_dar6va_dar8ve_4dasjef4da4taldaud7s8dba8le_dba4ne_dbe8ta_dbe6te_dbling7dbo6en_d4d5armdde4lapdde4l5oddel5svdd4saladd4skapdds5tabdd3s4te5debon_6d6e5ge5dehavsdei4enedei8ge_5deigendei4g5rdek4kandek4kelde6k6kv2de5k6rdeks7tideks6tr6delagede6lansdel5eie4de4lekde5lele4d5elemde4lest6delinjdel5intdel4lapdel6leidel4lekdel6ligdelses7del4spodem8na_demo5noden4sin4dentif4dentitdent5s8de6rantde4rarede4rarkdera5te6deresider5est4derettde4rinæde5rose6de7rotder5s6ndes5ers4des4le5deste_des6tem4destråde4s3tå6detekk4di5enddig8la_dig6le_4digrendig5retdil4les4d5ingkdin8g9ådis6kamdis6k7ldi4sk6odis5ko_dis7koedis7tikdit4tetdjer5vedju8la_6djupardka8ra_dku4le_dla6te_d7legardlem4std4lenetdly8se_dlø8pa_dme6la_dmø4re_dmå6la_dno8de_dog6med4dokinedok6kan4dolinjdom6s5idom4s3kdors7ke6do7s6ldra5gendra6kes5d6rangd6rarardra6retd9ra8sadrau7ma5dreassd5rede_d5rederdre7d6r9drege_drei5end7religdretts55drevetdri8ka_drik7s6drit7trdro6pa_dro8ta_drø6re_drå4de_dsa8la_d4s3alfd4s3engds5e4stdse4te_d4s3jend4s3kands5kjendsmå6lad7somstd4s3tald3s8tard5s4tatd8s9te_ds9teikd3s4tigd3s4tikdstu8nad5stundd6s7uskd3s4vetdta6la_dta4le_dte4ma_dterle7dte4se_d5t4ragdun7stadva6la_dva6leldva4ne_dve8ve_dynk6s5dy5rebadøv8le_eak6se_eal8le_e6a5netear6ka_ear8ma_ear4ta_e5a4telea4t3eteau6ge_eau8ra_eau8se_eav8le_eba4ne_ebesku5ebu5ernedag4s5ed7delaed5e6geed5eg4nede8le_e8d5engede4s5pe6d5ettedi4eneedi4s5ke5drev_e6d5ryged3s4lae3d6ø1reer4me_ees6ke_eev4ne_efal6s7efar6s5e5f4ilmefi7renefo8bi_ega4ve_ege4leteg8g9ute3g6lade3g4ledeg7lesae5g4lite9g8nagegrans5egå4ve_e4h5ereehy6re_ei3d8arei6kerieil5eggei4me5seim9ettei4n3alei4nansein5antei7nare4e3indu6ei6nite5inkareinsi9dein4s3le4inspiein7stoei2n1u4ei3s4haei6s3kjei3s4peei4teraei4tereei6t7utejo8en_ekalie6ekam6s5eka6ra_ek5e4tae5k6hovekke7leekk9iste8klanee3k4nokekords8eko6te_e3k4rede5kretse5k4revek3s4akek4stil5ek3tepek6testek4t3raeku4le_ek6var_e4k5vikeky6te_e6l5argel7artiela4te_elbo8daeld4rereld5sleele7gereleg8nae5lemat5elemene5lemete4l5enhe4lentuele8ra_e7lerete6l7erge6lesku5e8lev_ele4vak6e5levnel5gelee4l3indelin5ese4linspeli6o5seli8ta_eli4tet6e5littel6k5alel4ke5sel4keteel5l6arell5eieel3le4sel6leteel4lisjell5s4lel5l4urelo6ka_e4l5ovnels5eieel4skalels4tenel4teroel4t3opelt5rope4lu4heelu8pe_el4ve3del6vereely8et_elæ5rese4l3ø4re6l3øynema4ge_ema4ke_em5aktiema6le_5e4maljema4ni_em7ar8me6masku5emballembe6r5eme5triemi5erte4minoremo5nole2m3o4vem6periem4s5juemta8laemå9lane6n7ange4n3antenbe9naen5demien4deslen4d3roendør5eeneg8gaene7venen4gerieng4leseng3s4eengs4tie4nierken4keraen4keriennes6tenn5stae6n5orden4seli5ensemben4ses4ensle7gens6levens4terens7unden9timaen4to4rent5orient5rabent5renen4t3råeod8de_eon8de_eori5e6epi6ka_ep5leneeple9s6ep4ses4ep6s5lue4r3abbera8da_era6na_e5ra7neer7anlier5ape_er5aperer5appee5rasare4rasjee4r3asse4ratekera7torerbi9tierbo8daerden8serd4skjerd4stoere6ke_e4r3eksere4lite6rellie4r3else4r3enge4r5enhe3re4o7e4r3erfe4r3etaeretts5e4r3evn5erfarierg5elverg5reterg5skoeri4kate5riorie5rist_e7ristae5risteer7jes_er4kesaer4keseer4kete4er5k4oer5nedeer4neroer4neste7ro6pae5ropene7ro4saerrie9nersa8kaers4ka_ers5korers6leders5terer7stever4s5årer4tareerti4moert5role4r3ungervele8erye7nee9r4æree5r6ønner7øyskerå8de_er3å4seer7åta9esa6la_esa9mete4s3antes5arabes3ei4des5eie_esel5s4e4s3erkese5tasese4te_esh9ar_es4h5ere7s8hopesi5erte4s3inse4skinge6skjønesku5etes7let_es7letse4s5lokes4makeesnæ5ree4s3oriespa9rae4s4pedes5permes4p5lees4setees4s3jaess4letes4stoless5toress9tuaess5tuees7taktes9talae8stanee5stanses5tante5startes5tatoe4s3taue7stav_est5avse6s5te_est5eieest5eige5stelles5telse4stemae6stemee4stemoes5tempe7stenges5tenkeste3s4es4testes4tienes4tikkes3t6one3s4toles6toneest5ordest5ories5trakest5reres5tribe5strykest7åseesva5ree5s4veke5svikteta4la_4e5talletal4s7eta4nen3etappe4e5tatiete4ma_e5teranetning4et5oppde5t4rade7t6rake4t3riset9sar_ett5altet4tanket6teltet4tenket4tennettera45etterk5etterrett5eskettian8ett4skiett4stieun4ge_eur6ne_ev5aktievann4se4varare4v5arkeve5d6aeve5delevei6s55eventyevi5ereevi5ertevi4se_evn5a4kevta8laeyr4ke_eør6na_évo8re_è4renerfag5eti6f5agrofakse9tfal6kesfal4k3lfan4tryfar4gelfar4gesfar6skjfar4velfa4serufa3t6refba4ne_fe3d4rifei5er_feig4defeil5esfei7terfek6tesfekt5evfeli7e6felles5fel9ta_fel4tekfel4trafem4tidfer4damfe7rer_fer5ersfers7kefes9t6ifes8t3rfes9tumfe6st9øfett7s6f2f3a2gf6ferdiffe4rerffla8gafibi6enfi7e6refikali7fik6k5nfil6lelfil4lesfilt6refil4trifin5artfinn5ei6finnsafi9renefi5res_fiser6sfis7kalfis4k3l6fiskolfjer5neflit9t8flo6r5oflos6klfol6k5vfol9lerfo3n4idfor7drofor5d6ufor7e6nfor5entfor5essfo4r9inforlo7vformo9rfor3s4mfor9stefor5t6efor7t6ifor3t4vfor3u4lfra4m5efranko5fran7sefra5se_fra7sepfrasi8efra7v6rfreds5tfre8s9v6f5ridifri4erffris6kafri5s4pf2s3tabf6s5tanfta8la_f4t3enhf4terinf4t5ettf2t5i4sfts5altfts5ersfts5ervft2skafft2s1ø4ftta8kafug9le_ful9larful9le_ful4lenful4lerful7lesfyr8ke_fø5des_fø7resvfø8retefør6tingak8ta_gal4les6gandengan4g5jga6r5akgar4dekgar6ta_gar8te_gas8ka_gas8ke_gas6selgas5sengas7sergas9triga5tensgat6tapgau5la_6ga4veiga4verigba4ne_g4de5regeak8tagea7ren9gedom_7gedoma9gedome6gedomsgei8s7pgei6st5gei4t3r4g3elemge5len_ge5lensgel5ett6geligggelsk7lge7n6amgends6tgen5erfgen5etigen8ga_ge4ni6ngen6sungeomet4ge6rene6gerese4gerettger4i5dgeri8ka6gerikegerle9g4gerom_4geromm6gerop_4gerope5gesen_5gesens4ge5sjage5spra5geste_ges8ti_geså5re6getat_6getate2ge7v8agevi6sagev6ne_g6gereigge4ring6ge5svg4g5i4mggra6dag4g5u4rght5ene4gimessgi4metrgi3s4pagi5s4prgist5ragi5strégjen5s8gje4s3pgla8ge_g5last_gleg8gag9lene_g9lenesgle6se_g4le5skg6le7smgli4delgli7e6n5g6lomegloria7glo5stegly4se_gmu8le_gna5lemgne8se_gnings5g6ni5skgnist9rgok4se_gol6vargore8a7gori5e6graf5t6gran5togrant4rgra9se_gra9setgra8te_grati4sgra7visgravta84g5redsgreie5n6g3reisgrep4s36g5rest6g5rytmgrø5de_grå5te_g5salg_g5salgeg3s6ankgse9la_gsel4stg5siderg5skallg4skapag5skapeg4skapig5skiltg7s6kjæg5skrengsla6gags6lerigsl9ut_gs5pileg5stanggs4tasjg7s4tatg5ste4egs4tellgs5temag7stemtgs4tereg5s4ti_g3s4tieg3s4tigg5stol_g7stolag5stolegs5tollgs4trapg5straugst5reagst5reigs6tretg5s6trågs4vanegta8ka_gta8ke_gta6la_gta4le_gte6ke_gte6ma_gti8de_gtu8en_4g5u4båguid5argul8ke_gur6ne_gut4takgut4tesgva4ke_gvedli6ha7keraha4ke5shald4s7hal6leihal4s3khal4s3than6d5rhan6nelhan5nenhar5trehar4trihas6p7lhau5ke_hau4t5rha5van5hba4ne_hef7teshek4sekhel4se7helses4hel5stehel4teshem3s8khera9daher6reiher6rether5un4hes5pelhes5penhes9perhes4teshet4s5phev9na_hi6n7anhin4neshins9kehjorte5hju7l8eho5der_hog6strhove5rehun6deshu4s3edhus4trehu6s5u6hvi5l6ihvor5i6hye5ne_hye9neshyg5gelhyldes7hyr4deshøy7rariak8se_ial5einial5etiian5aldi5a4ne_iard5s4i7arskaiaty6raiba4ne_ibi5er_ib4le5siby9ar_ick7eteiddel5uid5e4geiden5svi6derapi7dereni9deres4i3drevid4s5tui7e6limielø8paien4s5vien4t3rif4tereig3e4taigje9vaig5s4kaig3s4krig3s4paig5stekig7stelig5stemigs4traig5s4vaiho7le_ihu5le_i5kabeli4kareii9kelegi5kere_ike4r5oi2ke1s2ik6kanaikk5arvikk5attik4keruik8keskik4kestik4kjøpikk5lagikk5ord4ik2ku2ikk5undiko5na_i5k6ordik5robeik5speliku6le_i6k7u6tilas5t6il4dekoil4deteild3s4tile8areile4ge_i4l3egni4le5skile6triilet5teilfø5reili5ersi4l3indi4l3i4ril5jeseilk4o6sillei9eil6leskilli9gail4lo5mills5kåilm5e4vi4l1o4rilta9lai6m5akkimor8da5imperiims4k5lim5s4meimta8laina4leti4n5assind5s4tine8areine8pe_i7nere_i5nereni9neresine4rikines8kaines4stin5gebj5ingeniin5geriin4geruing5jening5reping7risings5omini9ar_i4nises5initiain4keroin4k3lainla8gain4nerøin4nesiinnes6tinnfa9s5innhalin4n5ominn9seninn9steinn7svein4n5u4in5skatinske4tins6korins4k3vinsle7gin3s2løin5s4main5s4pl5instalin4stinin5stra5instruinta8la5in7tegint5essinti5meintran4int4rerin5tresi8n9ul8in9u8teio4dereiol7jenio4nansio4narrio4r5inipa4ti_ip4peliipp6lanipp4s3ti9r6andire6r5airi8ka_ir5instir5ker_irke3s6ir4kestir4mastiru7sa_i4s3angi4s3ansise5erni4sektei6s7eldis4e5liisensi6iset8jeisha7neis4h5inishø9veisi6enei4s3indisk5elsiske5s4is6k5leis7kogri5skulaisl9øy_is6s7kjis9s4ærista9leis5tanei4s5tarist5avbist7aviist5ektistel5lis5ten_is5teneis5ter_is5ternis6terøis5tilbi5streri4stresi6stretita4l3aite8ke_i6t7elgiter6s5i4te5ruite6se_itet6s5iti6er_i4tikami4ti3kvi4tiseni4tiskoi4ti3spiti5stritnes4sitri8mait7ro6sit4s3eiitta9lait6tannit4t5atit4tenkitte5s4itt5ettitt5skri4v3aksiva6la_i4v5ankivar5s6i4v5assiv5eg6nive5rasi6vereti4vestiiyr8ke_iåt4te_jak4keljakk5s4ja6r5apjarn3s4jar5te_jau4ere6je4dekje4f3etjef5lagje4f3rejef6s5ijef3t4rjeg6lesjek4tanjek6tesjekt5evjek4t3rjekts4tje6legrje7lelejel6lagjel5lenjel7va_jem4stije7ne8sjen5gedjeng5s4je2n1y4jer4dep6jerennje6rinæjer4kesjer6k5ljern5sljes4kiljes4teaje6stimje4t3agjeta6kaje9tar_je7taraje9tareje4t3rujett5s6je7varkjev7na_jok9kerjokk9o8jon6stijon4strjor6dekjor4d3ojords4ljor5tetjo5steiju4e5rejuk9sarju8l9eijul7innju6p5å6jæ9res_jøl6verjør4keljør4teljø6t7avjøt5eta5ka4an46kadaleka6del_ka4deri6k5aksjka6lantkal7s6vkal4ves4kameri4kammelkam4p3ikan6da_kan6t9r5kapellkap4s3t4karbei6k3arki6k5arktkar5peska5se4ikas6sadkas4sak4k3assi8kas5tokas2t3r1ka7t6aka4t5op4ka1t4rkat4telkatte5skat4tilkat4trikav8l9u5kedan_9kedant7kedes_ke3l4akke6lanskel5eigkel7eik6keleiskel3e4l4k5elem4keleng4ke5lep7k6eletkeli8e8keli9en4kelign4kelinjkel5intke4lise6kelov_4kelovekelsva9kel9ukakel5ukeke4l3ur6ke5l4åkelå7re4kend5r6kenett4ke5niv4k5enseken5t6r4k3entuker5antkerei4d4kereir6kereis4ke5rem6kerene4kerenn4keress4kerest4keresu5keret_5kereta7kerets6kerik_4kerike6keriktke4rineke4rinæ4ke3rosker3t4v9kesam_4k5eskekes8ke_kes5ped5kespot5ke4spu4ke3sta5keste_kes6tem4kestrike4s5unketa6ka5ketalsket8teskev4je_kev6ne_kevæ8rakhjul8skikk8s9kin9andki4narkki5nas_kin5ingkinn4spki5stavkjap5pe6k7jarnkje7f6r5kjemaskje6t5rkju5le_kju5lenk8kand_k4k5angk4k7artkke6leikkel3t4kke4lukkkel5unkke6nank4kereik4kerelk4kerigk4keritk5kesaukke3s4lk5ketetkk5jentkko6ligkk3s4eikks5takkks7tepkk8s7vakk5s4å7k2k1u6t4k5lagtkla9ke_kla4melkleby7t3k4leddkle4debkle4des5k6lem_7k4lenok6lerikkle5snokle5stikles7s81k2lim23k4lini3k4lyngklæ5reskne4b3lkne8se_knippe6kog9ger4komisbko4misekon6s7vkon6tonko5perskop5perkor6da_kor4d3okor4salkor4s5lkor6strkor5teskor6topkor4t5rkort5s4ko6rume5kosele2ko1s2pkost7askots5trkotts5tkover7e1kov4s3kre4kli4k3renn4k3ress6k7retnkrig6s5krik6ka3k6rinsk4roforkro4nomkro9t8ekroten9krutt5ik4s3antk6s3arkkse5levksen5tok5serolk4ses6kk4se3smkses4spkses4stkse6te_k4s3insk6s3kalksko7naksko5nek8s7lugkslø8vak5s4makks5tantk7s8vakkste4dakst6rank6strenk6strerk5s4vinksy8s7mksø4ke_k4t3akskta6la_k4t3anakta9na_k4t3annk4t3arrk4t3artk6t7atlk6t3avlkt5e4gek4t3enhkter5s6kt5eskekt5estik4t3inskt7i6tekt5ord_kt4s5erkts5krakt5sprekts6tonkts5topktu9er_kue4r5akun4ge_ku7r6opkuro8pakur4s3tkur4v3ikus5a6kku4s5elku7s6pe4ku5te_5k6vartkvei9se4k3verdkverns8kvi4enekyr8ke_kys4telkøy7ar_2l3abonladi9e8lag5san4l3anallan6daslan6deblan6gellan4gemlang3s46l5ansilap5senlap5s4i6l7arab4l7areal6aren_4larena4l3arkilar6ta_lar7vetlas6saklas6samlas6satlas6sellat5angla4tenolate5s4lat7ra_lat9ranlat5rarlat4trala4v5allav5innlba5ke_lba4ne_lbe8re_lda6t5olda6t5yl4derekl6derikl6destrl8d5oksld7regnld5rer_l8dres_lds6leglds4letld5s4omle4gerale4gerole4geta2le1g2l6lehamr6lehavel6ei8etlei4gerlei4getleig4h5leig6naleig8nelei6r7u4l3ekso4l3elsklelø6palem9pedlem5peslem4s5ølen9dan6lendenl6endre4lendrilen4g5r4lensemlen5seslen4stalen4tamle8pla_4leraba4lereso4leresule6rieile7rina4l5ernæ6lerope4le3rotle7singles5innle7skaple4s3kj6leskol6lespal9lesta_7lestalle5stedle5stegle5stelle4stim4lestrø4lestyrle5s6vileta8kal5e4tas6letenk6le7teple5ter_l5e4tikle5t4rilet6tealett3s4le6valu6levern4le4vevl6f3nullga8le_l4g5altl4g3analga4ve_lge4raplger5unl6ge7splgsle9glg5s4trlgå8ve_lha8ka_lhav6s5libe5roli5ers_li4g3anlig9artli8gas_li4g3relig3s4ilig3s4plig5strli5kesålil5letli6mate4lina6l5l4indrlind3s4l5indusli3ne6alin4g3j4l5injulin5keslin5klelin5net4l3instli6n5ø6lion5splion5svlipp4s3lis7tanli6s8trlist7røli4st5yli4ti3aliti5stlit5rerlitt5s6li4v3akljar5s6l5jete_l5kedall5kelegl4k5ersl4ke3rul6k5ninlk5ri6kl4k3s2hlku4le_l4l5anoll5anskllau6relle8da_lle4d3rlle5gevl4l5eigl4lendrl6lendtl5l8ensl4lentull5eplel4leroblles5prlle5støll5evenlle7vevlli5e4nl4l3indl9lint_lli6senllmu9erl4l3offllom5s6lls5endlls6karlls5laglls6tigl8l7ukal4l3ukelly4se_llø6pa_lløy6erll5øy6nl4markil4m3elslm5e4pol4m5erflme7stilme5t4rlmi8le_lmin7nelmu4le_lmå6la_lob5by_lob5byelo4d3rilod3s4mlod7stelod7s6vlog8reslo6g5rolok6kul2lo1k4l2lok7s4lok8se_lo4m5inlom4mellomst9rlon4g3rlon7skjlor6da_lor4g5llos4kle4lottetlov7aldlo9vandlo7vanel6over_love5rel5overnl5pelegl4pelinlpi5ne_lradi4ulra6ne_lre8ke_lri4ve_lro8de_lro6pa_lro8sa_lro4se_lrø6re_lrå8da_lrå4de_l4s5anol4s3ansl4s3elel4s3elvlses5kulses5palse4te_l6s5illl4s3innls5jakkls5kabil4s5kanls5karilsk5artlskinn6ls1kjedlskå6palsla4gal7slagnl5s4lukl6s5løslsmå6lals7o6sel5spredl4s3takl4s3tall6stankl3ste4ils5terrls5trenl6s5veklsve7rels6vindlta4la_l4t3alblta6levlta8teslta4t3olte6ma_l4t5enhl4terasl6trekol6t5rell6t7reml4trensl4t5ritltro8pal4t5rødltur5e6ltur5s6ltur5å6ltva8laluid6erlun5d4rlun4gellur8ne_lus4sidlus4s3tlus2t3rlut4tallut4tapl4vaktil4v5asslve3d4alve5i6slve9raul7v6et_lve5strlvi8enelvi6ka_lvo8re_ly4n5illyst9raly4teril5y4tinlær4armlæ4re3slæ5res_6l7øv8d6l5øys_løy5terlås7tenlås5termada5memak5ronmak4tal4m3aktimakts4tma6lengman4domman4donman5g4aman4nemmanns5l5ma9ren4markitma4ro6pmar3s4hmas4seemas6setma5stem4ma5str7mater_6matera6m7atfe7matil_ma4t3rem4beregmbo4endmbo5er_mbo5erembu7ar_mbue7reme6dretme5d4us2me5k8r5melanemel2s3jmel5s4t4m5engamen5splmen6tekmen4tomme4ra5l4meress4me5ribmeri5kemerle7gmer5und4me5s4h5meste_6me7stome5stro6mestrø4mestrå4me9tapme4t3ramet5renmet7rermet5resmet5rik7m4eu3smfar8tam6f3essmfu6se_mgå8ve_miche6l4mi3ele5migrafmik5ro_mik5ronmil7etimil6s5v4m3innh4m3innsmi3s4lamis4s5kmis4s7pmista9k5mis7temis4tramku6le_mle6se_mle4ve_mly6se_mlø6pe_mma8le_mmando5mmar7inm2me3k2mme4runm4metrammå8la_m4nestamo7le6smom4s5ømo4nisamon4stemo7rar_mor5d6emor6d5rmor4skjmor7sky6mostabmote7klmo5ter_motsva5m4pelotmpe5resmpes6tempe4stim4pinjem3p4lanm6p5linm4poetampro8pamro8sa_mro6se_mru7te_m4s3engms5e4plm5s6etnmsk5ingms6legam4s3talm8s7te_ms5tilbm4s5topmst5ordmst5redms5trefmst5renms5trikmsu7tenmsva9ramsva5rem3s4vetmsø4ke_m6te7kvm6testum6tien_mull6s7mul6tivmun6ge_6m5univmunn5s6mun4t3rmu4ses4mus5tanmut7t6rmveg5s4mvi6se_myk4kesmytt6s5mø8nest6m5ønskmør4k5rmø4teremå9nesenak8se_nak6ta_na6lare6nalarvna4l3einal5eponal6ge_nal6lagnal4løpna3lå5rna7mere4n5angrnan6ke_6n5anlen4n5ansnan4sinnan4skjnan4s5t4na5rek4narkiv6n5armé6n5armenar8ma_nar8stenar6ta_na2s5t4nat6taknat6teanav4lesnba9sern4d5alln6d3artnda5taln5d4e5lnde4le_n4delikndel4skndel4stn6denern2de5o2n4derabn4derasn4derein4derimn4d3intnd4lesend4lestn6d5okkn4d3ramndre4rand5rettnds5elvnds7kulnd3s4tends9tegnd5stryne7a6lenea9ren5negatinei8dannek5rinn7ekser6nelegg4n3elem4neliganel4lovnelø8panem5ne_nem7nelnen5at_4neneslnen5etanen4ga_4n3enhe6nenhetnent5ei4nerent4neress4neresu4nerfar4ne3ribne4ri9vne1r4ovner5s4i4ne3rul5nesetsnes5evanes5indne5skam4ne5skones6samnes4stu4nestasnes9te_nes5tor4ne3strneså5re4netaksnet5s4pnett3a4net6telnevi8sanfalls5nfø5desnføy8edng5and_n4g5armng5art_n5gartanga4ve_n4g3engn4geretnge5runngjen5gn8g7o8mng7o6pen5grad_ng5randn4grendng5restngs5elvngs7legng5sløyngs7tepngs9tørngu5ru_ngå8ve_ni7dele7ni3e2n4n3i4frni6n7alning6s5ningse4ni9pet_ni9petsnir7kel4ni3skjnis4k3oniso5ne4nistas6nistatnis5tik4nistilnitt4s3nitt6sknitær6eniv5ei8n5jede_n4k5enhnker4stn4ke1s4n7k4lisnkol4lanku4le_nkurie8nland9anle8ma_nli4en_nly6de_nly4se_nlø6pa_nma4le_nmo6se_nmå6la_n4n5ankn5nebarnnebe8rnne6natnne4n3on4nereln4ne3stn5n6et_n2n1o4rnnsa9kanns5andnnsei8gnn4s3emnn4s3esnnsi7dann4s3innns5kannns5talnns4tennns5tepnns7tinnns5topnns5tronn4s5ulnn6s5vonnsy8nann3så5rnnto9ganok6se_nor4d5rnord3s4norges5n3o4rienor6klanor6klenostra4n6renemnro6de_n5sa4kr6n5aktin6s5alpn5s6annn5sansens5ansinse9a8lns5eie_n4s3elvn5sene_n4senern9senesn4senetn4se3skn4ses4pnsi5de_nsi4entnsi6er_n3s4ingn4sintens7kelens4ketens5kjennskog6snsku9etns5kulin5s6ky_n5s4kyen5skyssn5slangns6lerin5s4narnso5risnspa9rans5pelsn6sprosns5taken4stanknst5artn3s6tedn3s4teins5tenkn5s4tikns5tildns7tilfns7trøyns5vangnsva9rans5verdns5vernns4vindnså7pennta4lannta5na_n4t5andnta5siant5eininte5insn4teksen9telegn5telignte4ma_nte4misn4te7nan5tene_n4t3enhn5teorin7terekn4teselnt5e4van4tikapnti5klin9time_n7timesn4t3indnti6netn5to5rent5resin4t3rinnt5s6lan2t1u2nn4t5urontva8lanun4ge_nus4k5lnut5erinverle9nvi4ka_ny3k4lenyn8da_nyn4de_nær9andnød5stonøy8a9nnån6de_oar6d7eobakk8sober5etock5ersod4destoderle7o4d3iglod3s4pooen2g7roes8ke_oev6ne_o4fe3stoff9andoge7na_og4gerao6gista5o4g5nio5g6noso4g3rego4g3reiog7rettog4s5tjog5stre5o4g5åto1i2d9ioi2n1o4ok5els5ok4kandok6keraok4ke5sokna8sao4k3omsokse5krokse9teoksi7daok6s5vioku8le_ola6dedo6larbeol4destol5drevo5leakso7lene_o9leneso4leneto6leredole5staole5stroli9e6noli7ertolke3s4ol4keseol4keskol4kestol6linjol4mesto6l7os_o6l5osfols5vikol6t7raolt5re_olt5rerolt5reto4l3ungoma4nifomar7ø8o7menesome4takome7tarom3in5som4metromsko9do4n3ango4n3argo4n3arvo2n1a4vonder6eon4d5riong9roso2n3i2do6n7innons5undo4pa3reo7parenopel6løo4penet6o3per_ope6raroping9sopp5ropopp5undo6r7addo4r5algoral4stor6alt_orda9taordy9raorear8aorear8eo5rebraore6na_ore4nedore4netores6teor9et8norfi7ne1or3g4aorha9le5orientorla7teorm5angor4m3unorne6droror9daors5altor4serkorse9taors5karors8k9lorso9naorso9neors4tenor4t3akorta9peor4t5avorto9neort5oriort5resort5rådor4t3årorva9rao9r4æreo5seleioses4skoses6sposes4stosfa9taosi5ereosi5erto2s1ingoskei6eosk9larosk5lenos5sensos4s5kooss7troost5adrosta5leost5eggos6tonsost5ranost5rupota4l5aotal7evota4lovo8t9armote5intote4kleot5elemote5levotel4liotel8løo4teramo4tereto6terevote5r8uote5stéotet3s6oti7ertot7i6koot6nerooto6en_oto4ralo6t5romot4s3kiotsopp6ots5tabot6tankot5tegnot6tenkot5teseott4s3kotts5pootts4tioun6ge_ovanfø8o5vendeove6nyaove7ra_ove9raso6verdr3o6verfo5verksovers4povveg7ipak4kaspakke4spang5s69panne_4parenapar5esspar6k7lpar8ra_par6tidpar4tigpar4tinpase6r5pas5sabpas4tarpa4tistpat6takpba4ne_pde4le_pe4a3repedi9e8peg8ge_pei4legpek4tropel5s6epel5s4ipe4n3arpen4gelpen7s8apensa7kpen4s5lpen3s6mpen5s6open9stapen7stepen7tagpep5ar_4pe4rab4perate4peresp4perest4peresu4pe5rikperi3s4per6lesper6reiper4tropervi6kpes8ka_pes4ke_5peste_pes5tilpeta6kape4t5rupev6ne_3p6fenn7pi3anepig6g9upil4lagpillba6pil6ledpil4legping5skpis4t5rpla8de_plan7de4plane_ple5n4aple6r5uple8se_pne6se_pom6p9upor6s7vpor4torpor4tråpos5taspo5statpotek5lpo5t6hapover6np2p3a4lpp5angrp4p3anlp2pe5i4ppel5s6p4pendrppe9nesp7pere_p4perklppes8tip4p5innpp5lastpp7rissppska9kpra5te_pr5elempri4l3epri6s5kprun7geprørs5tpråk5k6psei8geps5e4lyp4s3kilps7kjenp7s6ko_p5s4koep9s8lo_pslø8vapspi9lap3s4prep4s5prop4s5temps4vingpsø4ke_pta8la_pta4le_pte4ma_punk4t5pvi4se_pør4ret3radio3raf4fer6r5akadra5k6harak4kelrak3s4erak6se_ral5ans6ralbum4r5alge4r5algo4ra5l8å6r9ambi4ra4merram8et_ram6p3u6r3analr5andelrang5strann3s4ran4tik4r5appl7rarbehrar5e6l4ra3reprar7etarar8ka_rar8ma_2r1ar5trar6ta_ra7s6korast5re6ra5tegra4t5rorat5telratte4srau6ge_rave5s4r3a4visravlø8srbed5enrbed5etrbed9rarbis5trrbo8di_rdag4s5rda4le_rda4mesrda8n9ord5antar4d3armr4d3artrd5e4ger6d7engr6d7enhrden4s3rdense4r4derikrd3e4tar6d7ettr4dianar4diansrdig3s4r4d5o4drdover5rd7rarar5drev_rds5tanrdsto5grds7trerdsva9rrdta8kardø4ve_re4d5rired5skureds5larega7tarei8ga_rei8ge_rei5na_rei7nasre5inderei5ne_rei7nesre4invarei7skarekk6anrek4k5v5reklamrek4ledrek4terr4e5lei7relenerel4lagrel5ledrel4levrel5ses4re7l6åremann6remmed5ren4delr3e4nel4renestreng5st6r5e6pi4rer6at4rerent4rerese4reresu4r3ernæ4rerutere6r7øyres7kodres4salres4sekres4sit5restaures4tes4re3stires4til4restre4re5sty4retaki8retek_6reteke4retekn6re5tem2re5t2rret7tedret5terr3e4vigre4v5åprfe8en_rfe4et_rfei5lirfe5m6ørga8le_r4g5anvrga4ve_r4gereir4geretr4ge3rur4gestarg3i4rirg5repsrgs6korrg5s4lergå6ve_rhjul8s6riansv3ri6avo4ridale4rielem6rielimriel4la4rietatri5evenrig6s7tri4kalirik7kenri8k9la2ri1k2rrik4s5u6r5ilderi5n6amrin7gomrin9nesrin4t5jripo4s3ri4seli5risiko6ristadris5tik4ristilris5tofri5stunriti9darive9ge4riverkri4vi4sriv5iseriø4r3arj7ambirkei8kar4ke3lur4kenavr4kerisr4ke3rur5k8ledrklæ5rerklå9rarko6b5rr4koselr6k7rasr5k6remr6k6segrk6stalrk4stenrk4s5tirk6s5virku4le_r6k7u6trla4te_r6le7slrli4te_rlø8pa_rma6ge_rma5k4lrme6lapr4menetr6merevrme9tarr4m5idermi6enermlø8parm5s6korms5tilrmta8larmue5nermu8la_rmu6le_r6m7åtar4n3aldr4n3artr5neboer4n3engr4nereir6nerisrne6se_r4ne3skr4n1o4vrn4s3inrn7s6mirn5sponrn3s4prrnå8le_roff5riroga9tarog5retrok6katrok4komrok8se_roli7garol4labrol4laprol4legrol4lisro4materom5sla6ronismro8pla_ror6da_ros7tasrost7røroti7karot5ordro9varerove5rerprø5ver6p5ut_rre7intr5relatr4re3rur4resperres5tarre7stirre5strrret6s5rri6ka_rrmå8larro8se_rsa6la_r8s9ald5s6ch6lr4s3elvrse4te_rsett8or5s4ingr6s7kafr4skar_rskla8grsk5larrs4k5lers4k3lær4s3krar5skrivr4s3krorsku7etrsk5undrsk5varr5s6litrs4makerso5n8erso5n6irso7risr5spredrs5tankrs5tendrsten6srs5ter_rs9tre_rs7treer4strinr4s5trorstu9varsva9rar3s4vekrta4ka_r4te3inrte6ke_rte6ma_r5teresr4terisr6testirtian8dr4tiansrti8ar_rti6grar4ti3kvr4ti7nar6tiskar4tiskirt6i9sor4t3opprt6opp_r6t7o6sr4t3risr4t5rosr5t6rålrts5engrt4s5jart5s4nort3s4pertu6en_rtu8ve_rty8da_rty8de_r6t5ås3rul8ke_rum4p9l5r2underun5delrund3s4run6ge_rus5selr7utan_ru4vereru6v7isrve4denr4ve5drrvel9ler4v5eng4r5yndlry5nes_ryr4ke_rys6sal8r3æ4rerø4kerorøn5nesrønn5skrøn5sko5r6øntgrø5vederø9versrøy6enerådy9raråle7s8rå5let_sa4dere6sagent6s5a6gi2s1a2gr3s4a3ke5s4aks_sak4s3i4s3aksjsak6ta_5s4akto5sa5lat4s5algosalg6s5sal4mes5sal2s34saltersal5vedsam4an7sam4levsammen54s1a2nasan6da_sand5stsan4d5ø1s2a5ne4s3angrs7anken5s4ans_san7s6k9s8are_4sarealsar6ka_4s3arkisar8me_sar4ta_2s1a4sp4sa5t6r4s3attasatte4ssau5di_sau6ge_sba4ne_sdag4s5sde6le_sdu8en_se3an5dse7ansaseg8ga_7segletsei8dansei9dens5ei4etsei6ga_sek4kes3s4eksjsek6te_3sek5to5selanesel5arts3e4lasse6l5at4se5led6selega4s3elem4selengsel6løpsel4sinsel4sposel4vanselv3e4sel4ve_selvei4sel4versel8vinsemini6sen9d8a6senden8senesa6seneses5engassen5ters2e5r4e4serenn4serent4sereso4seress4serest4seresu4serkjeser7nevser4takser6tatse4r3unser4vedser4vel2se5r6øses5ald5sesalsses5altse4sene4sesjukses5kalses5karses5lit5seste_2se2t6aseta8kase4terase5teros3e4tiks3e4tis5setje_s8e5varsevi4sasev4ne_sfa4ne_sfe6et_sforlø9sfø9rensfø5rersga4ve_sgå4ve_6s7hoppshø6ve_sial5v63si4de_3si3densi5der_si4detesi6erensiger4s4s3iglosikt4s3sil4delsil4dersil4dessil4les4s3indu3s4inn_7s4innas6inne_5sinnetsinsk5esi4serfsis5e4vsi4s5tesi6t7rasi4t5resitsva9sit4tes8s5ja9gsje4f3isje4flasje4lev3s2jen_5s2jene4s3jent5s4jer_s2je5s45s4jet_sjet4tiska5lar4s5kana4skande5s6kap_4skapas6skapitsk5arabsk7arbe4s5kark3s8karvs6keliks6kenavs4ketet5s4kiltski6netski4nin6s5kirk4s5kist5skjema7skjerss6k5lansk5lings4k5luf7s4kola4s3kolls5k6omes6korpis4k9ra_5s4krals2k7re_4s3kref5s8krek4s3kret5skrevn4skrite5s4krog4s3kropskru3s66skrysssku4endskue5re5skulan5skular8s5kurs6s6kyss5s6kysksla8ge_4s3landslap5pes5laran4s5lastsla4te_sla4vin8s5leke4sle7nes6lenersli4en_8s3linjslin6t55s4lit_3s4lites6lott_sluk3s6slum4p5sly8et_slø4pa_slø8s5a3s4løsislå5nersma9let6s5medi8s5meld3s4mell5s4melt3s4mertsmi4enesmo8de_6s5mugg1s2my4ksnei5ersne4krisnik5kosnæ4re_snø5d4r6s5ofresog6nemsok4se_so4leneso6mend4s3omfa3s6omme7somren5somrer6s3områsom5stisong3s48sopple7sorga_4s3oriesover5esove3s4spa5g6h3s4pannspe4legspe4les5spelet3s4penn6s5pilospi7res5s6piss5s6pole6s7poli5s4pors6s3pregspre5ke5s4pren6s5pres5s4prets6print8s3pris6s5prob5sprog_5sprogesre8ke_sri4ve_sro6se_srå4da_sråde9rs7sabelssa8ke_ssa6la_ssa4me_s7s8ar_s7s6armssau8sass9elv_sse8na_s6serabs6serats4seskis8s9imes6s3indss5inits4s3insss4kapesska8ras4s5nøds4sorgass7tilpss5trenssva7ra3s6t2adsta6d3osta6ka_6sta4lasta5laksta4le_5s6talista5na_3s4tandsta8n9o3s8tasj4s5taststa5top3s6teg_stega6l4s5tegn4stegspste4herstei5er4steikn3s4tek_4s4tekaste4ket4s5tekns8te5kvste5le_s5telegste5levs5telig3s4temmste4nars4tener3s6tengstens5l8s5teras4terams4terevs7t6erfs4teridste7ris4s3termste5runste7sleste7t6rstgå8vas6tidels4tigen7s6tigist9i8gj6s5tika4s5tike3s6til_5s4tilasti4lag6s5tils5stiltesti7mer3s6timus6t3ind4s6tinns6tinst4s3tipp6s7tisk4s3tjen6s5tomtst5opplsto4retsto4t5r4s5trads8traff6strafi6strail5strand4strane6stransst7ras_s4tre3ast5reis7strek_st5rekl6strenist5rer_6strers9s8tridst5rige5stri3ss5t4rog5s4trokst7rop_s6tropes6t7rug9s6trukst5rum_s7trykt6s5trøbst5røses5trøststsy8nastue5re6s3tung3s8tunts3t4vedstø7va_stø5varsul4t5r4s3umid5sundet5s4undisun6d7rsun4ge_6s7u2nisur4stisu6s5es2s1u4t1sut6ra_sut8reg8s5u6visva4les6svalet5s6valis4varet3s4vartsve6g7i3s4veis6s5veks5s4venssve8res3s4verg5s4verjsver4ki6s7vervsvi6e3lsvi5ke_4sviks_svi4nessvi4sa_svi5sensvi5ser5s6vulmsvye7nesy5kere4s5yndlsyr4ke_8s3æ4re3s6økna5s6øksmsør9ettsø7tastsøy8de_6s5øy4nsån6de_ta8d3eitad5spatad7s6vtak7keltak5k4lta8k9latak4saltak6se_4t3aksjtak4tal4taktigtal5angtal5eieta5ler_tale7s6tal6ge_talj5estal4ledtal4legtall7es6talter2ta3m4o4t3analt5andak4tanett6t3angrtans5kat5an5sl8tantiltan4trata4r3akta6rare6t7ark_tar8ka_4t5arke4t3arkit5artiktar7tittar4t3rt3a4sia6ta7stotat5e4v2t1a4uktau4ne_tbe6te_tbe6t7r2te9a8ltebu8da6t5edditedo4ertedyr9kteg8ga_te9g8li6tegspltei6ga_te4innete5intete5k4late6k5ru4t3eksat4ek8sttek8t9r8te4le_4telemete4lenete5lesk4te4levte6levatel5leftel4leitel4levtelses5tel7s6v5teltette4mans6temenntem5ne_tem5ordte4n5alten5at_6tenerg7tengont5e4nig6tenormten5skoten6sluten5økstepa9rat5e6plete7rakk6terammter7apa4terappte4rare6terasa4terase7terast4tereis8terem_6teremm6terennte4rerk4terett6terevo4terisi6terks4ter8ma_4teroll5teromr4te3ros4te3rotters4klter3s4mters6nete4r3øvte4r3ås6te3sin6tesjef2te1s2m7tesmåe4testaftes5tas4testat5testidtes4tik4te3sto4te3strteså9reteta6ka2t8et2rte4valutgi5rostgrei9e4ti3all6t3idee4ti5dem2ti5f6r6tikarr2ti1k2r6tikulttila6ga4tille_4tillinti4mera5timeritin5art6ti4nit6t5inne4t3insttion9s6ti5s6an4tis4ei4tisers4tiskan4tiskiltis5kok6tisprå4tistattis4ti_tis4tilti5streti8støytiva9reti9ært_tjen6sttjæ4restka8ra_tku6le_tla8te_tle6da_tle8se_tlight5tli6nestli4te_tlø4pa_tma8ge_tmin5s6tmå4la_t7neligtne4rektne4r5øtne8se_to4derato2g3at6togravtolele75tolera1to4l3ktol4labtol4lagtol6legto5miseto7misttong5s4ton5s4ltor5alttor5angto4r3astor8da_tor7eks6torenttor5etetor5inttorvei5to5verdtove7ret5overstra8ka_trak7to3t6ranstra5se_tra5sest5rate_tre4al_4t3redstre5int3t6reni4t3renntren6skt4re3rutre5skot4ri5ne4t5ring4t3rom_5t4rongtro5per5t6rosk2t1run9tru5sa_7t6rusktryg5ge7trykk_5trykketry7pe_5trøye5trøy9ettrå8da_4trådett6sch5kts4endet5senditsen8kat4sentut4s3erkts5e6sttse4te_t7s8hopt4s3inst6skollts5krent6s7kynt7s6lo_t3s4lott4s5o4dt5somstt3s4port4s3talt5standt5stangt4stilkts5torsts5treet4s5trots6trålts5øknitsøy8ertta4la_t6t3aldtta7lelt4t3anat5t6anet4t3angtt5appet7t8ar_tt5ar5ttt6artat5tede_tt7elevtte4ma_ttem8nat5tene_t9tens_t4tereitter5untte4r5øt4tideltti4g5jt4t3inst6tistitton6natt5o4ritt9rakatt5raket4t3reptts5kantts5toptts5tratts5tøyttva8latt7øy6rtul5les5t4un5ntur7ant4tu4reitus7s6ttut5tortutt5ovtva6ne_t4v5anltve5deltvi8ka_5t4vil_5t4viletvi4sa_tvi4se_tyg9geltyg5gestykk5s6ty4pere5tyranntyre5stty4ri5stær6enetæ4renht7ø4lettøn5nestø4r3astø7veletå5ket_tån6de_2t1års1u3a4ne_uble3s4udd4s5eude8areudei5eru6d5ettudover7uensar4u2ge5s4u5g4ladug9lar_ug9ler_ug3s4pruid5en_uid5ensukar5t4uker5anuke4rekukse7teuk4s3unuk4t3idukt9s6vukt4stiu5lere_u2l3erlu5lest_uli5ke_uli9na_ull7armull5eggul6lengul9lereull5i4vull5sleull3s6mul4t3reuma8ge_u4m3enhum4p7ut5undervun6d7imund5s4iu4n5engu2ne1s2un9g8ruung3s4iunn5erfunn5steun6sj5iun3stekunt5repun5øy6dupe6renu6r7arlureer6eu7r8ellu7r8eltu4r3elsu4r5engure7o6suri9en_uri9er_ur4ke5sur6k7jaurla8gaurnæ6reuro4staur6p9utursa8kaur4s3elurs5tilur6t5riurue7reu7sarenu6s7arkuse4al_u4s5ermuset8jeu2s3h4au2s3h4ou4s3kanuska8rau6s5kisus6k5leusk7u6tuso6l5du1s2pinuss5korus4skurus4s5tiu5s6tigust7onnust5o6vus8tra_us8tranus8trarust5renust5rødu6st5råu5svaleu5tandeu2ta1u4u5tekstute6ma_u2te1s6utfø5reutikk6uu6tivenutlø5seutlå7nautmå5leu5trengu5t6rul7uttak_5uttakeut4terkutt5evau3t4vilutvi5se3u4t6yduve6ris7v6aksi4v3aksjvak5s6tval9eksval4g3rvali9e8val6mes4v3analvang4s7van4nanvan4nivvan5semvar4meevar6temvas4sauvas4selvas6s7øva2terfvba4ne_vdu6en_ved5s4k3ve8d5tve6g5av5ve4ka_vek4t5rve4l5as5velat_5velatpvel4delvelses5velø8pave6neteven6n5ivennle7ven6stiven6strven5t6rver6desver6dinver6dir5vereig4verennve5res_4verett4veretuve4rialver6nalvern6s5ver5skiver7spo5verum_ver3øs4ve5stedveså5re8vetaka9vetokevett5skvevi8savfø7re_vga4le_vga8ve_vhø4re_vide4o7vi4d5o4vi2k3o6vik5s6lvi4k5ø4vi4les4vi4l3invil4ledvil4leivill9ep6v5illuvil4stivil4trivine5stvin8g9uvin4ned4v5innl4v5innsvin7sjavin4tesvin5trevis5andvi6sengvisk6revi5tese5vi6t5jvit5skrvi4t5unvje4t5avje5t6evje4t5rvku4le_vle4se_vle5strvma8le_vmo8de_vna8ke_vne5r6ev4nestav6nestevn4s5pavnæ4re_vof8fanvo4lituvol4tesvor8da_6vrenge4vrengiv6rengjv6rengtvrett4sv6rigasvri6ma_vri8me_vri6ve_vro8te_vrå8da_v4s5engv5s4ensv6s5kumvsmå8lavs5oms4vsø6ke_vsøy4ervta8ka_vta6ledvta9lenvta4levvti8ne_vuden5tvun4ge_vvi6k7lvvi4se_vøm4metvør8na_vå4kenewalk5o4wester6yak6te_yba4ne_ybue7reybu7ernyd6delay6d7enhyel4s5jyel6s5tyfjell4yga8ve_y6geretygg7arty5keleny4kerely5kjareyk4kanayk5kesjykk4s5kyk6lestyku6le_yl4derkyld5s6kyle6ge_ylke4s3yll5is_ylst7reym5jaray9n8andyns6areyn6teteyon5neny4penetype4relypin8nay4r3a6ly7rek7ky6rerely5rest_yre5steyrin5g6yri8ka_yrs7tanyrs5taryr5ut5ryråde7rys7ekteyse7ridy5sesteys6karays7kareys4s3eiys4s3ekys4s5ilyss5tabys4s5tiy8star_y4s3terys7teslys5t6ryy4t3anayt5e4gey4teretyte5r6øyt4s3enyt4testyve4riayve4risyvi6se_4z3ense4zi5s4væk9jer_æ6rarbeær4arteæ6r7eldære5ne_ære7nesæresa4mære6skræ4retekærmå8laær4s5ilær7s6noøbe6levød6s5ekød6sku6ød8t5omøglo8veøgn6s7pøg5res_øka8ve_ø6kerelø4ke5ruø5kjareø4le5teøl4geraøl4leseøl9letiøl4sereøl4se3søl4v3eiølv7erkøl4v3inøm4meroøm4metrøn4n5itønns5alønn4s3eønns5kuønst9raøps8legø2r1a2mø4r3antø9reletø4r5engø2re5o4ø6reretøre6s7vør4keriørla8gaør4nereør4nes4ø4r3ostør4r5isørsa8kaørs6levørs9tarørste5iørs5tigør6ti9aør4tideøsa6me_ø8sararøse4n5oøserie6øst9astøst9ettø2t5eksø5tela_øtså9reøt4teroøt6testøtt5eksøtt5etaøtt5eteøveren8øv6l7ut9øy8ansøy4dereøy7e4deøy5rer_øy5s4ar5øysundøy4tereøyte5s6øyti7daøy2t3y6åan8ka_åan6ke_åba8ne_åd3s4laåd3s4peåd6s7teå3e6re_å4k3enhåklist7å5l6ampål5einiå4l5enhåle6riså2le1s2ålla6gaålsy8naålul8laålå8te_åpe4n3aåpe4n5iård5strås9keneåta5le_åta5lenå4t5armåte6ke_5åtferdåtva5raåtva7reåun8ge_åvæ4re_", + 8: "_akter5e_albu5en_al5m6in_an5d4ra_arie5ne_as5kese_av7inde_ban4k3l_be4d5et_ber6ett_be6sten_ble5k4e_bor8ti8_de4l5ei_de4r5et_de6r3i4_de4r5om_dings7a_ein5og5_ek5s4ta_en6t5ra_fan3t4o_fes3t6e_fla4t5o_for5en__for7s6o_gang5s4_grunn5s_ha6v5ak_he6r5i6_he6r5o6_he9r6oe_he7r6oi_he7r6ol_he9r8os_het7s6e_hus6val_hvi3t4e_i8lande_ilbo8da_imø5te__isla8ga_jern5s4_kje3de5_kne4p3r_kring5s_kva4r1a_lega5ta_lei5er__let6tan_li4v5en_liv4s5v_løye5ne_mat5t8o_me6d5ei_me6d7in_mei5er__mel3l6o_me2t6a3_min5k4e_mi6s3t4_mor5d6e_ni5o6g5_over3i4_over5k8_pa6n7eu_plen5g6_plus6s5_ran7s6a_rap5s4e_rei5er__re8klar_ro4tek4_san7d8e_san7d8i_ser7vel_sha9ke__sik5k6e_sinn6s5_skinns6_sko7de__slotts5_slu5ke__spri5s6_stev9na_stål5l6_sund5s6_sva5ra__sær3e4g_tak9s8p_to5o6g5_tor4s5v_tre5s6t_u6lende_unde6ri_urte5m8_vann5s4_va6reta_ve5l4ar_ve5l4os_ve4l5ov_ver5ste_vi4d5å4_vi6seri_vok5s6e_ære4s5a_øve4r6saarie9nea5de4serad4s5amtad5s4letad5s6tekafore5neaf4t5e4lagang7s8age5riskag5s6ingagsmå6laakk5erstak4s5andakse3l4oak4s5elvakst7renakta6le_akt5s4laa5lande_albu7er_ale6s5kralla6ge_alle6ge_all5erstal6list_al7skarealta8le_5alternaal4t5etaal4t5etea2l5y4teamen8de_am8periaam6perieam5p4letanak8te_an4da5m6anderle7and8sendand7sleta5netikean5e4tisanfø5re_an4g5enhang5ermean8gesteangs6troang4t5reang5t6veann6s7kåan9s6und5ansundaan5t6andapo5s4tiarau9kenarba8ne_ardfø5rearen5tesa4r5erfaarev6ne_ar4k5løfar6s5ersarta6le_arvi8se_a4s5kopia5s6kulaa6standeas4t5enhastu8ve_ateke7taa6t5ektea6t5opprat7s6katattfø7reatvi5er_atyr8ke_auba6ne_au5e6te_au6s8tasaus8tett3a4van5savar6ta_av5isingavspe9g4ba4k5endbak6kersbak5s6tibari6e7nbebo5er_be4g5re_belle5sabel4te5sbes6s7a6bes7tensbe5stes_bevi5se_billa8gabjek4t5oblings6iboksi8dabo4l5o4rbor6t7efbor6t7etbose8te_bus6sentbørs8ta_ca5s4tilce4ne5s4cen4ti9mdalbu8er6d5ameridata6le_del5ei4d6d3e4levdel6lerfdel4s5atdel6taladelø6pa_den4s3t8den6t5u65de7rastde4r5edd8derest_6derestedero8se_de8s9hopdesi4s5t6de5s6prdeta8ka_deva8ne_devi9er_dheim2s5di8g9anddi3ge4s56d5i6meldisie5ned6jingand6jingardland7asdlei7er_dog4me5sdoli8ne_dom8s5e66d7on6kldor6gestdrei5er_drei7ernds3a6deldsak6se_dsel4s5ad6s7endadsen8de_d4s5e4skds5identd6s5kjøtd9slott_dste6ma_d6s5tempd5stillidsva8ne_dsvi6ka_eate6renebe4d3e6ebei7er_eben6s5kebo5ers_ebu4e5reedi6a5needle6ge_edok8se_edyr6ke_efisken8efle6ge_3e4genskei4m5a6le4k5ret_ek7s6telek6t7armektori6ae4k5ve4delak8se_e4li5g4reli6v7enelli7ga_el3se6s37elskandels5kareel5s6åpeelta8le_el4t5ettelun6ge_elvæ6re_emini6stemse8te_enat6s5pen4d5andenge6r5uenne4s5vensi8de_ensi5erten7s6opten6s7talen7timenen4t5rolentropi5e5rande_er5a4pine5rasaneerau9kenerbo8de_er5e4gene6r5ektee4r3e4leer5endene4r3e4vae4r5e4veerev6ne_erhø6re_e7ri6ma_6eringarering6sieri5stilerkeri6eer6k5etterle6ge_erle7s8termo8de_ermå6la_5ero4b7rers5tenser4te3s4ertå7renervæ6re_e6r5ør6se4r5øy7ee4r5øys_esei8ge_eskinns5e7s4mettes6sendies4s5enkess5e4vaess5tilte8s7ter_e5s6terkesterne8est5reneestå5renetall5s6etnings7etsla8gaetta6le_etter5atet5t6erfettvi5see5t6vange4v5antafal6lersfan7teskfa6t7ersfentleg5fers9karfikalie6fil6lerifil7letifil8m7atfil7tresfin6slegfin6te5sfisk5a6dfisk5andfis6kartfiti6me_fjæ4res8fol5lesefolke5s6for9drevforlø9paforlø9seforsi9dafortei9eforti5daforva9refosfo5refred8selfres7ko_fres5koefri5a6refsle6ge_ften5s6vfte4r5a4ftsla6gaft5s4lanft6s5topft5s6trifug6l7egfy4r5a4bgamme6l5gan5g6en4g5antregass5ettgas7t6ragdevi8sageak6te_7gedommegeen8de_gehø8ve_gelei5er3gem4s5tgene5ve_ge4r5antg9er8ma_ger4s5afgerø6re_ge4r3ø4vges6tekkgest5ridges5vik_geta6le_gg5s4par6gingenigiste6rugje8v9akgle6deroglei7er_glori6anglun8ge_go4n5and3g6or4a5grand3s4gra4v3akgrei6enegres6sakgri5setegs5akersgsel4s5ags6ende_gsen6ke_gsle6ge_g9s6mertg6s5porsg9s8tandgste6ma_g5s4terfg5s4terkg5s4terng5s4tersg5s4tervg5stredeg5strekeg5s4trofgstyr8kagtråd5s6ham6nesthams4t7rhand7skrhan5n4o5heder6s5he4l5ei4hel6lesuhenfø5reherle9geherli9gaher6resiher6ska_heste5rihet4s3a4he6v7armhof4f3a4hof4f3e4hof5f6erhog7strahudså9rehu5s6a6rhu6s7arrhusa7r8ehust9ranhånd5skria4l5ettia5r6e8l5identif5identiti9de5re_iderle7gidsla6gaien6delaie4r5engi5e4tabli6gedommigedoms5igli6se_ik6k7entiksmå8laillan8daillæ9re_il4m5estilset8jeilsle7geilsva9railsva5reilt5rettina4t5ak5industrines8ke_ine5s4tiin4g5aldin5n6ovain9s8kasins5kjøtins8legain8s5te_ins5ten_ins9tens3in3s4ti4in3s6toinst5relin8t7egein5te4t5iorla8gaiota6le_i4p5ingsippel7s6ippsy8naipru8te_irti6g5ri2s2e3g4isk9art_isk5arteiskla8gais6k5rinis5pane_iste6ma_i8s8tre_i4st5reni6strer_itan7s6vit7jaranitma6le_itostra6itsla8gaitte4l5oium4f5ari4um5s4tivle6ge_ivyr8ke_jak7kelejar5tet_jek6kerujek4t5injelei7erjell5angje4r5antjer6n5asjet4t5anjet6termkaf5ferekal6lero5k6ande_kat6term5kegladhkel5eierkels7karkelø8pa_5kenattskenne4l3ke6r5engke4r5ert6keringi6keringj8kerist_8kerista6keristekero6se_keru6se_kerø6re_8ker8øya6ker6øye7kesdalek9es8ka_4ke5sted4ke5stei4ke5struketa6le_ketøy6s5keva8ne_kevi6sa_king5andki4v5enhkjel7legk6kandenkkar6ta_kk5e4levk6kerentk6kestadk4k5jernklon7a8lklyse7tekna5t4reko4g5engkoi4e5nekone5l6åkord5s4ø4ko7rei97k8ra4sjkrin6s7t7krisenekses6selksla8ga_kslø8ve_ks4t5rekk9s8vakeksva8ne_k7s6vertk6t5elskkt5e4litkterie5nktes6ke_k4t5e4taktev6ne_k6togramktori9e8kt4s5ambktyr8ke_kund5s6lkuru9kenkuru7kerkyrie5nekyse8te_køy4e5nelan6germlang4s5elan6g5ø6la6r7etalari6e7nlat4t5isl6derklælderle9gldsla8gale6bostalefa6ne_le9geranle9geraslei5endelei4e5nelei7ger_lekt5ordlekt4s5tlen4s5aklen8t9rale2r3amb4le9r8eileru8se_leta8le_lge4r5anlg5s4kreli4g5enhlig5s4tilil5lebe6l5inntrlis6terk4lis6tillis4t3u4lit6telelit6terklit6terml6je5t6rlkali9e8l5kestadl6l5ekstllen6da_ll5endenllmue9nellmu7ensllsa6me_llun6ge_lmyr8ke_lob9byanlo6g5e8vlole6ge_lo3ve7d66l5overs6l5overtlsan6ke_lse8s5trl2s3kildlskinns5lsle6ge_lson6de_lsve8en_l4t5erstltle8ge_l5t4restltsa8me_ltu5r6enltu5r6erlub6bandluk6keri3lu5t6helut4t5atlvin5g6rlvly8se_lyk6kerily4s5a4klyse6te_mali9e8nmal4t5ekma4t5rasma6t7romm8at7t8rme5l4aks6m5e6lemme4l5engmello6m34me5l4å5me4r5antme6rensem5fru5s6mi4n5ersmisha9gem8jinganm8jingarmlei5er_m6le5s8vmman6dolmme5t6remnes9tiemofo6bi_4m3o4riemorla8ga6motsagdm4p5antam6peressm4p5erfampun6ge_m5s6toppm8strandm5stranemutsa8lamålø6pe_må4ne5s6na4l5ettnari4e5n7nariksknditori5ndit4t5and4om4s3nd5resennd4s5ambnds5endendsla6gands6lettnds5trekndta6ka_ndun6ge_6n5eddik5ne4e4r5neg5lesp7neleggjnelei5er6n3en5trnere6de_nerla8ganers8ten4ne5skar5neskinsnes9tas_neta6le_netå5ker6ne8ventnfor9en_n8gan8dan5g6ros5ngst5ridnian5depnings5ten4k5erfan5k6langnland6senlei7er_nmusik7kn6n7antan5nes4lannhø8re_nni4s3t6nnle6ge_nnlø6pe_n4n3o4venn4s5ambnn6s5enknnse6te_nn4s5i6snn6s5jaknn5s4klinn6s5tabnns5teltnn6s5trennte6se_nodi4e5nnors6ka_nose8te_nsak6se_n5saren_nseri7e6n4se3s4vn6s5jordn6s5kaukn6skjelen7slararnsle6ge_n3s4lektnsmå6la_nson6de_nste6ma_n4s5tilsns4t3i4sn5s4villn6t5arvin6terestnte6riskn4ti5stintrol6linæ8rast_oak6kanaoar4d5inoa4r5e4goa4r5enhobers5taobers5teod5s4tolo6gi7strogs5t6raoka4n5i6ok6serinokto4r5iolbo7ge_oldo7ve7old3s4kroll5overo6l7o6seolun8ge_omsku9laomvæ8re_omyr8ke_o4ne3s8tonsla6gaonst5rumo4p5landop4p5artord7e6plor4d5iseore6o5g6orfa6re_orfø9re_ori4e5neorko6se_orse7te_orsk5ei4orsmå8laorsva9reorta8la_or4t5andorte5i6gor6t5erfor4t5ermosi6e7neossis5teote6k7laotel6lanotel6leko4t5endeoten8de_otes6terotno7te_o6togramove8r5es5oversikovta6le_pakk7eslpekt7rospe5l4akspensa8laperie8nspero6se_per6regjper4t5råpeva8ne_pike5r6opillega6pille6rapio6n5anpita7la_platina5p6le5n4upol6s4kapor4t5ropp7e6senpp5e4tasppir8re_ppropri6ppse6te_prei7er_pres6sakp6restasprø5velspslø6ve_psmå8la_psøy9enepunk5t6erali5e6nramperi8r4an9de_rand5s6aran4n5inrans7kar8rarinna6rarinneraska8rara5s4tilra5t6røyrav8l9utravlø8par4d5erstrdi6gresrdon8na_rdvi8ka_rein6skjreis6ledre5k6lirrele8ge_rel6landremi6eneremti9da6r7entit4r3en5tr6re9rangrero6se_resi7ereres6sortres9tanerett6set5retøya_reva5re_re6v7enhre4v5innrhånd6s9rien5t4rril6lestring4sa4rings5akring8spa4ri5stedritt8s7trko6seler4k5ve6dr4l5e4rirling3s4r4m5altermin5skir6m5instrn5e4tabrnsle7gern6s3ovn5robølgjrok6keri3ro5m8an6ronista8roniste6ronistirot5ekters5e4rikrsk7innsrs5kjensrso7n6alr4s5tabbrstev9nar4s5tilfr4s5tilhr4s5tilsr4s5tilvrsvar4s5rt5e4litrten4s5krtentle8r4ti5strrtma6le_r4t5rekort4s5tøyrts5unde6r3underr5unders6r7u6sikru4s4t3rruta8la_ru9tene_rveis7e6rville9d8r3æ4renrønn5s4a6røy4s3kråta8ka_4s5alarmsan7d8al5s6ande_4s3a6nek5s4ansen4s5ans8l4s3atmos6s5atten4s2e7g8rsek2t3ansekte9ra4s3e4lev4s3e4lit8s5elskese6l7u6rsel4v5akselø8pa_sen6delasene8se_4s5ensemseperso5ses4s5ins5ettersseure9neseva6ne_sfisken8sik4k5elsit6termsjek4t5os6j3t6sj5s4kal8a9s8kapa_5skapen_skei5er_s3ke4t3j6skjemas4s5kjærlskjø5res6s5kulis7slegare5s6legasslei5er_s6len6t37slottetslum5p6eslæ6rari5s4makensolei5ersommar5a5s6paser8s9plantsport6s58sprinsi5s6prosssrå6dersssar8ve_ssau6se_ssel5v6åss5endenssen6ke_s5s6jargsstel6li6stande_stang5s6s6t5antr5stegspl5s4tenen4ste5nesstep7pers6terests6teri6vstga6ve_stgå8ve_stile9ge5s4tilt_6s5tiltas6t5jent6s8t5ord5s6tore_stra8na_st7rast_5s4traum7s6treik3s4t6rip6s4t5romst7ro6pastsa6me_stta6le_8s5under4s3u4reisverd5s44s5viktis6vindelsving5s4ll6svint8s3æ4ren7s6æ5te4søk6s3e6sø4r5endsår9ast_ta6d3e4ttal8ligntall6s9at5altern5t6ande_t7andel_t5andeletandør5e4t5anstr6t7antre4t9arenatart7estta6r5å8kta4si5s4tate8se_tbe6t8ratedo6en_tedo8et_t7ei6ge_5te4l5artel8ligntelø8pa_tempe8l7ten4t5intep6perete4r5engteren6gater5estiterla6gaterle7ge5tersjøoter7s6kotervi6set9es6ka_5tes7te_4te5steite5s6tivteta6le_tifa8ne_6tikular5timedie4tim6o8rtin5ge4stise8ra_ti4v5andti4v5arttlei5er_tokk5endto4l5armtoli8ne_tol6lettto5mene_tomlø8pa6t5opple4t5opplæto4r5ant6t9rabattran7ske4t3rekor3t6re7nat5represt5rettedtsak6se_tsen6ke_t5s6ers_5t6sjov_t4s5kjedtsmå6la_t2s3piket2s3tabbt4s5trenttem6ne_t4t5ensettes6ke_ttle6de_ttsla6gatt5stillttun6ge_tun5gesvtut6tenkt8viklast4vi5l4itørs7ta_tørs7tertørs5tinudle6ge_u5e6rastuf4f5ermuft5s4laugrei9erug5s4va7uinnsmi8ukt5e4skuk4t5oriuktue5reu5leste_ulleg8gaul4le3s4ulling7sul4l3o6sul8s3t6rulyk5kesumau7kenumen4t5i5underskun4n5ersun4n5ervunnta8launst5e6lurau9kenuregist5uri6a7neuri4e5neurle6ge_urle8se_u6s5endiusle6ge_u6standeust9etteu7s6valtusvi8ka_u6t5a6sau6t5a6seutda7ta_u5t4radiut5toreautun8ge_uærle9gevann6stivan5s6kivar4s5tivarta9lava6t7e8lvding5s4ve5g6lødveg5rettveks4t5rvek4t5anve6r7engverfø5rever8ska_ve6s3pervest5o4v5vesyndsve5te6s79vetoks_vgjer6s7vil4l5anvil6tretvin5gom_vi4t5øy4v4s5e4livsre6de_vste6ma_vven7n6ivvi8s9anvøy7ene_vøy9enesvå9kene_war6d7erwestern7y4d4r5auyk4k5enhyk8k5vi6ym4fe5d6yns9ket_yn4s5very5reste_yres6tenyri6ene_yrs7teneyrs5tensyrul8la_yrå6dersyseri7e6y4se5s6lyter5skeyt8tien_æri6e7neærle6ge_øffe8l7aø6keradaølge5s6vønhø8re_ønns5kjeønns5kreøpsla8gaørele8seør8k9lagørsa6me_ørs5tensør8tien_øs5terseøttså7reåkva8la_årsla8gaåseri7e6åtri6pa_åtri8pe_", + 9: "_be6d5ene_blek4k3f_bo4k4en__brudd7s6_bruddså7_de7r4i5v_ein5s6ta_ein8s7to_fem5o6g5_for3d6ri_for7d6ra_fri5e6re_ge5s6tap_hand5s6l_handsla9_høy6st5æ_hånd5s6l_in6n7eks_in6n7ets_in6n7ett_kalve5l8_ka5r6a5v_kor6s5ed_liv8s7u6_mak6t5at_me3ta4ll_mons6t5r_mor3t6a5_nær9ast__overen6d_plus7s6e_rap5s4o4_re5s6tan_san8s7ku_sel4v5i6_sju5o6g5_skudd5s6_skuddså7_sky6f7la_snitt5s6_stein7a8_stein7s8_strek5s6_torsk6e5_tota9la__tre5o6g5_tre6skja_tre3s8ko_ut6e7sko_ve6l5art_ysterie8adsle6ge_akelei9eraktle6ge_a4l5en5tralere6de_alvak8se_al8v9er8mand5s6trean5e6tikaan5e6tikkangs8t9råankra8na_armle6ne_arneva7laasseri7e6assku6le_aus6t7isebaken6de_bi3o8m3s4blesse9nebobba6ne_brevi9er_bunnla8gabusse6te_cerba6ne_dan9s8kandatali8na6d5engen_den6t5antdfø6rararding8s5ending6s5erdleva8ne_8do9b8landomsla6gadyrle8ge_eftle8ge_egøy6e5neeiseri9e8eli5e6rerelo7vers_eme6triskemp9lane_endelø7seentun6ge_erdsto8gae4ri5s6toerland7aser8skarane8s9kjer_esstu8en_5e6s5timaetal6list5e6tasjesetsku8le_fangst7evferi8e5nefis6k5endfjel6lendfor9e8te_for9e8tenforsi7de_forta8le_fri5s6tilfrite8re_friti8me_fronta9lefruta6le_ftsle6ge_fullfø7regares6ke_gart5s6lagenle6ge_gesta7b6lg6ges6tiogi6st5rerglere8de_glorie7ne6gometrisgres6sentgstatsrå7gst7evnengstri8de_hek6serinhimme6l5ohøyse6te_8icanarariderla8gaiktsla8gaildsfa9reili5s6tikin6n7etteio6n5erstipplæ8re_ipsle6ge_ita6l5ersjamhø8ve_jor6d7ervjor6d7is_kan6t7endkelei8ke_6k5en6den6k5en4derkesle6ge_4ke5s4tenket6t7enhkil6le5stkinnsi8dakinsi6de_kinti8me_kke5r6undkor6s5innkos6t5erskrani6e7nkspor6t5r6k6s5porskstev6ne_kterie7nskti6v7endktsle6ge_kumen6talkvari6e5nkyn6skjerkøn6skjerlakterie6lder5s6telder6s5tile6sk9u8tlesse6ne_ling7sen_l6l5e6rikllet6telelob9byar_ltesa8me_mari8e9nemarmo9ra_menle6ge_m5funn8s5mmatik7kamo6te6g6empera8te_mperi6e7nmse8t9jasmuske6l5a7na7bortrnatori5e6nderla6ganditorie6ne9a8r9anned5over76n5en6denngsmå6la_nnomsy8nanor6d5endnormlø7senstar8ta_olele6ge_ordre8gi_ordsa6me_orgi6e5neoriti6me_osseri7e6otekla8gaotshusvæ86p5enden_pil4le5s6pis9t8ra_plun6d7rip8p9ender3pr6in6s5rambu9ensramse8te_ramta8la_ramta6le_ran6n5ett8r7a6telir7d6æ5r6ere7a6r7anred7s6ledren8ne8slrennes9lare6s7kje_res6t5erv7retøyetsrfø8rararrg5s6tillriferi9e8rkeslø7ser6n5apparr6n9a6visrnele6ge_rolle8ge_rolle8se_ronta6le_rote7sterr7rebart_rt7s6trek7r4under_ryl4l5i8sr6ørende_røy8senessand5s6lo5s6a5v6in5se4au3sk6sedvanlesei8e9nessel9s8lagsen6s5endseri6e5nesfri5e6re7sh6e4rifsing4s5a4s8k5e4lev5sk8inns5spe4r5andssari8e9nssi7e6rerssi6v7endste6in6s5v4s5tekstsøren6de_8t7allergtamba6ne_tek6lede_6t5en6denterba6ne_terle6ve_tersø6ke_4te5s4til5t6jingan5t6jingar5t6retteltsje5t6sjttaba6ne_tteli6te_ub7lande_uguay7ansuinnsmig9uk7kestaluktu8e9raulele8ge_umsku8le_unele6ge_un7s6tenkuntun8ge_uran6t5reusove7r6eutse8t9javar4t5i4svatle6ge_verta8la_verta6le_ves6t5endville6de_vit6te6s7vitun6ge_y4d4r5oksyenle6ge_ykke6s5tayns7kjeleys6a7kersysterie7nyttsa6me_ønn4s5i4døn8skjer_åkøy8rar_åle9s6und", + 10: "_fire5o6g5_gra4v3end_oppla8te__skritt9s8_sy6v5o6g5_tver6r5a6_ut3kan6t5_vil5l6a5l_vil5l6a5t_øyele8ge__åtte5o6g5amen6t7arvansport7s6augele8ge_be4g5rene_ber4g5endeb5s6e6a5m46d5en6den_dritun8ge_en6s7a6kerer9s6kararframma8ne_fremma8ne_fullen8de_funnsla8gagestri8de_her8s7kareil6l7enderkinnsi8de_kses8serie8lemetriskle8p9endenlistyr8ke_mse6t7jarengstyr8ke_nteriø7ra_5og5s6y4v33pr6in7s6e3pr6in7s6irdenta8le_9relandsk_9relandskerifiserba88s7en5trepsikk8artet5s6kjer4m33skjer5m4es6k5undervsomme6r5e6tentle8ge_ukteslø9seungele8ge_us7edvanlevi6n5o6vervnor9s8kasvve8g9ing_vve6g7ingaykjeva8ne_ylkesla8gayn8s9kjer_ytte8r9endø7reskrivi", + 11: "_blekk3s4t6_blekk9s8v4_rett7s8kri_sek4s5o6g5anseri8e9nedgjø6re7n6hgjen1opp3s4inseri8e9nentres9kjareonstitue9raonstitue9re" + }, + exceptions: 'atten-de, aust-røn, aviser, betre, bortan-for, bortre, Dansk-øya, der-etter, dess-uak-tet, dit-over, fram-ifrå, før-enn, her-etter, her-etter-dags, hvor-etter, hvor-over, høyt-ærede, gi-vet-vis, lands-øl, lands-ølet, lands-ølets, langt-ifra, ned-imot, noens, Not-odden, Not-oddens, nøye-reg-nen-de, opp-imot, oven-ikjøpet, promp-te, spleen, sel-ves-te, smal-enden, sørpe-is, sørpe-isen, skrov-is, skrov-isen, Steins-land, syd-enden, tvert-om, velan, velet, welt-schmerz' +}; \ No newline at end of file diff --git a/resources/viewer/hyphenate/patterns/or.js b/resources/viewer/hyphenate/patterns/or.js index ae81395aa6..96b585ebc3 100644 --- a/resources/viewer/hyphenate/patterns/or.js +++ b/resources/viewer/hyphenate/patterns/or.js @@ -1,14 +1,14 @@ -// For questions about the Oriya hyphenation patterns +// For questions about the Oriya hyphenation patterns // ask Santhosh Thottingal (santhosh dot thottingal at gmail dot com) -Hyphenator.languages.or = { +Hyphenator.languages['or'] = { leftmin : 2, rightmin : 2, shortestPattern : 1, longestPattern : 3, - specialChars : unescape('ଆଅଇଈଉଊଋଏଐଔକଗଖଘଙଚଛଜଝଞଟଠଡଢଣତଥଦଧନପଫବଭମଯରଲଵଶଷସହଳିୀାୁୂୃୋୋୈୌୗ୍ଃଂ%u200D'), + specialChars : unescape("ଆଅଇଈଉଊଋଏଐଔକଗଖଘଙଚଛଜଝଞଟଠଡଢଣତଥଦଧନପଫବଭମଯରଲଵଶଷସହଳିୀାୁୂୃୋୋୈୌୗ୍ଃଂ%u200D"), patterns : { - 2 : 'ଅ1ଆ1ଇ1ଈ1ଉ1ଊ1ଋ1ଏ1ଐ1ଔ1ି1ା1ୀ1ୁ1ୂ1ୃ1େ1ୋ1ୌ1ୗ1୍2ଃ1ଂ11କ1ଖ1ଘ1ଙ1ଚ1ଛ1ଜ1ଝ1ଞ1ଟ1ଠ1ଡ1ଢ1ଣ1ତ1ଥ1ଦ1ଧ1ନ1ପ1ଫ1ବ1ଭ1ମ1ଯ1ର1ଲ1ଵ1ଶ1ଷ1ସ1ହ1ଳ', - 3 : '1ଗ1', - 4 : unescape('2ନ୍%u200D2ର୍%u200D2ଲ୍%u200D2ଳ୍%u200D2ଣ୍%u200D') + 2 : "ଅ1ଆ1ଇ1ଈ1ଉ1ଊ1ଋ1ଏ1ଐ1ଔ1ି1ା1ୀ1ୁ1ୂ1ୃ1େ1ୋ1ୌ1ୗ1୍2ଃ1ଂ11କ1ଖ1ଘ1ଙ1ଚ1ଛ1ଜ1ଝ1ଞ1ଟ1ଠ1ଡ1ଢ1ଣ1ତ1ଥ1ଦ1ଧ1ନ1ପ1ଫ1ବ1ଭ1ମ1ଯ1ର1ଲ1ଵ1ଶ1ଷ1ସ1ହ1ଳ", + 3 : "1ଗ1", + 4 : unescape("2ନ୍%u200D2ର୍%u200D2ଲ୍%u200D2ଳ୍%u200D2ଣ୍%u200D") } }; \ No newline at end of file diff --git a/resources/viewer/hyphenate/patterns/pa.js b/resources/viewer/hyphenate/patterns/pa.js index f08239f84b..37bcc3bbd1 100644 --- a/resources/viewer/hyphenate/patterns/pa.js +++ b/resources/viewer/hyphenate/patterns/pa.js @@ -1,12 +1,12 @@ -// For questions about the Panjabi hyphenation patterns +// For questions about the Panjabi hyphenation patterns // ask Santhosh Thottingal (santhosh dot thottingal at gmail dot com) -Hyphenator.languages.pa = { +Hyphenator.languages['pa'] = { leftmin : 2, rightmin : 2, shortestPattern : 1, longestPattern : 1, - specialChars : unescape('ਆਅਇਈਉਊਏਐਔਕਗਖਘਙਚਛਜਝਞਟਠਡਢਣਤਥਦਧਨਪਫਬਭਮਯਰਲਵਸ਼ਸਹਲ਼ਿੀਾੁੂੇਾੋੈੌ੍ਃ%u0A02%u200D'), + specialChars : unescape("ਆਅਇਈਉਊਏਐਔਕਗਖਘਙਚਛਜਝਞਟਠਡਢਣਤਥਦਧਨਪਫਬਭਮਯਰਲਵਸ਼ਸਹਲ਼ਿੀਾੁੂੇਾੋੈੌ੍ਃ%u0A02%u200D"), patterns : { - 2 : unescape('ਅ1ਆ1ਇ1ਈ1ਉ1ਊ1ਏ1ਐ1ਔ1ਿ1ਾ1ੀ1ੁ1ੂ1ੇ1ੋ1ੌ1੍2ਃ1%u0A0211ਕ1ਗ1ਖ1ਘ1ਙ1ਚ1ਛ1ਜ1ਝ1ਞ1ਟ1ਠ1ਡ1ਢ1ਣ1ਤ1ਥ1ਦ1ਧ1ਨ1ਪ1ਫ1ਬ1ਭ1ਮ1ਯ1ਰ1ਲ1ਵ1ਸ਼1ਸ1ਹ1ਲ਼') + 2 : unescape("ਅ1ਆ1ਇ1ਈ1ਉ1ਊ1ਏ1ਐ1ਔ1ਿ1ਾ1ੀ1ੁ1ੂ1ੇ1ੋ1ੌ1੍2ਃ1%u0A0211ਕ1ਗ1ਖ1ਘ1ਙ1ਚ1ਛ1ਜ1ਝ1ਞ1ਟ1ਠ1ਡ1ਢ1ਣ1ਤ1ਥ1ਦ1ਧ1ਨ1ਪ1ਫ1ਬ1ਭ1ਮ1ਯ1ਰ1ਲ1ਵ1ਸ਼1ਸ1ਹ1ਲ਼") } }; diff --git a/resources/viewer/hyphenate/patterns/pl.js b/resources/viewer/hyphenate/patterns/pl.js index bde7e7abae..74beb9631e 100644 --- a/resources/viewer/hyphenate/patterns/pl.js +++ b/resources/viewer/hyphenate/patterns/pl.js @@ -1,27 +1,27 @@ -Hyphenator.languages.pl = { +Hyphenator.languages['pl'] = { leftmin : 2, rightmin : 2, shortestPattern : 1, longestPattern : 15, - specialChars : unescape('ąćęłńóśźżਂ%u200D'), + specialChars : unescape("ąćęłńóśźżਂ%u200D"), patterns : { - 2 : 'a1ą1e1ę1i1o1ó1u1y1', - 3 : '_a1_b8_c8_ć8_d8_e1_f8_g8_h8_i1_j8_k8_l8_ł8_m8_n8_ń8_o1_p8_r8_s8_ś8_t8_u1_v8_w8_x8_z8_ź8_ż8ś1cc4hc4zd4zd4źd4żr4zs4z8b_8c_8ć_8d_8f_8g_8h_8j_8k_8l_8ł_8m_8n_8ń_8p_8r_8s_8ś_8t_8v_8w_8x_8z_8ź_8ż_ae2ai2ao2be1bi1bo1bu1ca1cu1de1du1ea2ei2eo2fi1fo1ga1go1hi1hu1ja1ka1ki1ko1le1lu1ly1ma1mi1mo1mu1na1oa2oe2oi2ou2pa1po1ro1se1so1sy1to1tu1ty1ua2ue2ui2uo2vo1we1ya2ye2yi2yo2yu2ze1', - 4 : '_ae2_be1_bh8_bj8_bl8_bł8_br8_bv8_bw8_bx8_ca1_ci1_cj8_cł8_cr8_cv8_cw8_cx8_ćh8_ćj8_ćl8_ćł8_ćr8_ćv8_ćw8_ćx8_da1_de1_dh8_dj8_dl8_dł8_do1_dr8_dv8_dw8_dx8_dy1_fb8_fć8_fd8_fg8_fh8_fj8_fl8_fł8_fń8_fp8_fr8_fs8_fś8_ft8_fv8_fw8_fx8_fz8_fź8_fż8_ge1_gh8_gj8_gl8_gł8_gn8_go1_gr8_gv8_gw8_gx8_hi1_hv8_hx8_ja1_jv8_jx8_kh8_ki1_kj8_kl8_kł8_ko1_kr8_kv8_kw8_kx8_lu1_lv8_lx8_łv8_łx8_mi1_mo1_mv8_mx8_na1_ne1_ni1_nv8_nx8_ńv8_ńx8_ot2_oa2_oc2_oć2_of2_og2_oh2_ok2_om2_op2_os2_oś2_ow2_oz2_oź2_oż2_pe1_ph8_pi1_pj8_pl8_pł8_po1_pó1_pr8_pv8_pw8_px8_re1_ro1_rv8_rx8_sa1_sc8_sć8_sh8_si1_sj8_sk8_sl8_sł8_sm8_sn8_sń8_so1_sp8_sr8_sś8_st8_su1_sv8_sw8_sx8_ść8_śh8_śj8_śl8_śł8_śm8_śn8_śń8_śr8_śv8_św8_śx8_ta1_te1_th8_tj8_tl8_tł8_to1_tr8_tv8_tw8_tx8_ty1_uć2_uś2_vb8_vc8_vć8_vd8_vf8_vg8_vh8_vj8_vk8_vl8_vł8_vm8_vn8_vń8_vp8_vr8_vs8_vś8_vt8_vv8_vw8_vx8_vz8_vź8_vż8_we1_wh8_wi1_wo1_wv8_wx8_wy1_xb8_xc8_xć8_xd8_xf8_xg8_xh8_xj8_xk8_xl8_xł8_xm8_xn8_xń8_xp8_xr8_xs8_xś8_xt8_xv8_xw8_xx8_xz8_xź8_xż8_za1_zb8_ze1_zg8_zh8_zi1_zj8_zl8_zł8_zm8_zn8_zń8_zo1_zr8_zv8_zw8_zx8_zź8_zż8_źh8_źj8_źł8_źń8_źr8_źv8_źx8_żh8_żv8_żx82b1c2b1ć2b1d2b1f2b1g2b1k2b1m2b1n2b1ń2b1p2b1s2b1ś2b1t2b1z2b1ź2b1ż2c1b2c1ć2c1d2c1f2c1g2c1k2c1l2c1m2c1n2c1ń2c1p2c1s2c1ś2c1t2c1ź2c1ż2ć1b2ć1c2ć1d2ć1f2ć1g2ć1k2ć1m2ć1n2ć1ń2ć1p2ć1s2ć1ś2ć1t2ć1z2ć1ź2ć1ż2d1b2d1c2d1ć2d1f2d1g2d1k2d1m2d1n2d1ń2d1p2d1s2d1ś2d1t2f1c2f1k2f1m2f1n2g1b2g1c2g1ć2g1d2g1f2g1k2g1m2g1ń2g1p2g1s2g1ś2g1t2g1z2g1ź2g1ż2h1b2h1c2h1ć2h1d2h1f2h1g2h1j2h1k2h1l2h1ł2h1m2h1n2h1ń2h1p2h1r2h1s2h1ś2h1t2h1w2h1z2h1ź2h1ż2j1b2j1c2j1ć2j1d2j1f2j1g2j1h2j1k2j1l2j1ł2j1m2j1n2j1ń2j1p2j1r2j1s2j1ś2j1t2j1w2j1z2j1ź2j1ż2k1b2k1c2k1ć2k1d2k1f2k1g2k1m2k1n2k1ń2k1p2k1s2k1ś2k1t2k1z2k1ź2k1ż2l1b2l1c2l1ć2l1d2l1f2l1g2l1h2l1j2l1k2l1ł2l1m2l1n2l1ń2l1p2l1r2l1s2l1ś2l1t2l1w2l1z2l1ź2l1ż2ł1b2ł1c2ł1ć2ł1d2ł1f2ł1g2ł1h2ł1j2ł1k2ł1l2ł1m2ł1n2ł1ń2ł1p2ł1r2ł1s2ł1ś2ł1t2ł1w2ł1z2ł1ź2ł1ż2m1b2m1c2m1ć2m1d2m1f2m1g2m1h2m1j2m1k2m1l2m1ł2m1n2m1ń2m1p2m1r2m1s2m1ś2m1t2m1w2m1z2m1ź2m1ż2n1b2n1c2n1ć2n1d2n1f2n1g2n1h2n1j2n1k2n1l2n1ł2n1m2n1ń2n1p2n1r2n1s2n1ś2n1t2n1w2n1z2n1ź2n1ż2ń1b2ń1c2ń1ć2ń1d2ń1f2ń1g2ń1h2ń1j2ń1k2ń1l2ń1ł2ń1m2ń1n2ń1ń2ń1p2ń1r2ń1s2ń1ś2ń1t2ń1w2ń1z2ń1ź2ń1ż2p1b2p1c2p1ć2p1d2p1f2p1g2p1k2p1m2p1n2p1ń2p1s2p1ś2p1t2p1z2p1ź2p1ż2r1b2r1c2r1ć2r1d2r1f2r1g2r1h2r1j2r1k2r1l2r1ł2r1m2r1n2r1ń2r1p2r1s2r1ś2r1t2r1w2r1ź2r1ż2s1b2s1d2s1f2s1g2s1s2s1ź2s1ż2ś1b2ś1d2ś1f2ś1g2ś1k2ś1p2ś1s2ś1ś2ś1t2ś1z2ś1ź2ś1ż2t1b2t1c2t1ć2t1d2t1f2t1g2t1k2t1m2t1n2t1ń2t1p2t1s2t1ś2t1z2t1ź2t1żtr4z2w1b2w1c2w1ć2w1d2w1f2w1g2w1j2w1k2w1l2w1ł2w1m2w1n2w1ń2w1p2w1r2w1s2w1ś2w1t2w1z2w1ź2w1ż2z1c2z1ć2z1d2z1f2z1k2z1p2z1s2z1ś2z1t2ź1b2ź1c2ź1ć2ź1d2ź1f2ź1g2ź1k2ź1l2ź1m2ź1n2ź1p2ź1s2ź1ś2ź1t2ź1w2ź1z2ź1ż2ż1b2ż1c2ż1ć2ż1d2ż1f2ż1g2ż1j2ż1k2ż1l2ż1ł2ż1m2ż1n2ż1ń2ż1p2ż1r2ż1s2ż1ś2ż1t2ż1w2ż1z2ż1źdni1mne1pne1wc4zwła1wło14b3b4c3c4ć3ć4d3d4f3f4g3g4h3h4j3j4k3k4l3l4ł3ł4m3m4n3n4p3p4r3r4t3t4w3w4z3z4ź3ź4ż3żbr4zdr4zpr4zrs4zsc4ha2u1a2y1a1a2blo1bro1chu1dże1er4ze2u1e2y1e1e2gra1gro1i2a1i2ą1i2e1i2ę1i2i1i2o1i2ó1i2u1i2y1o2y1oc4ho1o2pre1roe2sko1sza1sze1szy1u2y1u1u2_by1', - 5 : '_a2d3_a2u1_c4h8_c4z8_cza1_ćwi1_dłu1_dro1_dwó1_d4z8_dzi1_d4ź8_d4ż8_ego1_gru1_i2n3_izo1_kro1_kró1_na2j_o2b2_o2d2_ob3r_oa3z_obu1_oda1_odu1_ogó1_oka1_okr2_ole1_osi1_pła1_poe2_pra1_pre1_r4z8_ską1_skl8_skr8_spo1_spó1_ste1_s4z8_sze1_ś1c8_śró1_świ1_toa3_tra1_tró1_u3b2_u3c2_u3d2_u3f2_u3g2_u3h2_u3k2_u3l2_u3ł2_u3m2_u3n2_u3p2_u3r2_u3s2_u3t2_u3w2_u3z2_u3ź2_u3ż2_ube1_ubr2_ukr2_upo1_uro1_utr2_uze1_wni1_ws4z_wyo2_wye2_wyi2_zao2_zai2_zde1_zdy1_zło1_zma1_zni1_zro12cz1b2cz1g2cz1l2cz1m2cz1n2cz1ń2cz1ź2cz1żd2ł1s2dz1b2dz1g2dz1l2dz1m2dz1n2dz1ń2dz1ź2dz1ż2dź1ń2rz1b2rz1g2rz1h2rz1j2rz1l2rz1ł2rz1m2rz1n2rz1ń2rz1r2rz1w2rz1ź2rz1żs2t1s2sz1l2sz1m2sz1n2sz1wwcza18b8b_8b8c_8b8ć_8b8d_8b8f_8b8g_8b8h_8b8j_8b8k_8b8l_8b8ł_8b8m_8b8n_8b8ń_8b8p_8b8r_8b8s_8b8ś_8b8t_8b8v_8b8w_8b8x_8b8z_8b8ź_8b8ż_8c8b_8c8c_8c8ć_8c8d_8c8f_8c8g_8c8h_c2h2łc2h2rchr4zc2h2w8c8j_8c8k_8c8l_8c8ł_8c8m_8c8n_8c8ń_8c8p_8c8r_8c8s_8c8ś_8c8t_8c8v_8c8w_8c8x_8c8z_8c8ź_8c8ż_8ć8b_8ć8c_8ć8ć_8ć8d_8ć8f_8ć8g_8ć8h_8ć8j_8ć8k_8ć8l_8ć8ł_8ć8m_8ć8n_8ć8ń_8ć8p_8ć8r_8ć8s_8ć8ś_8ć8t_8ć8v_8ć8w_8ć8x_8ć8z_8ć8ź_8ć8ż_8d8b_8d8c_8d8ć_8d8d_8d8f_8d8g_8d8h_8d8j_8d8k_8d8l_8d8ł_8d8m_8d8n_8d8ń_8d8p_8d8r_8d8s_8d8ś_8d8t_8d8v_8d8w_8d8x_8d8z_8d8ź_8d8ż_8f8b_8f8c_8f8ć_8f8d_8f8f_8f8g_8f8h_8f8j_8f8k_8f8l_8f8ł_8f8m_8f8n_8f8ń_8f8p_8f8r_8f8s_8f8ś_8f8t_8f8v_8f8w_8f8x_8f8z_8f8ź_8f8ż_8g8b_8g8c_8g8ć_8g8d_8g8f_8g8g_8g8h_8g8j_8g8k_8g8l_8g8ł_8g8m_8g8n_8g8ń_8g8p_8g8r_8g8s_8g8ś_8g8t_8g8v_8g8w_8g8x_8g8z_8g8ź_8g8ż_8h8b_8h8c_8h8ć_8h8d_8h8f_8h8g_8h8h_8h8j_8h8k_8h8l_8h8ł_8h8m_8h8n_8h8ń_8h8p_8h8r_8h8s_8h8ś_8h8t_8h8v_8h8w_8h8x_8h8z_8h8ź_8h8ż_8j8b_8j8c_8j8ć_8j8d_8j8f_8j8g_8j8h_8j8j_8j8k_8j8l_8j8ł_8j8m_8j8n_8j8ń_8j8p_8j8r_8j8s_8j8ś_8j8t_8j8v_8j8w_8j8x_8j8z_8j8ź_8j8ż_8k8b_8k8c_8k8ć_8k8d_8k8f_8k8g_8k8h_8k8j_8k8k_8k8l_8k8ł_8k8m_8k8n_8k8ń_8k8p_8k8r_8k8s_8k8ś_8k8t_8k8v_8k8w_8k8x_8k8z_8k8ź_8k8ż_8l8b_8l8c_8l8ć_8l8d_8l8f_8l8g_8l8h_8l8j_8l8k_8l8l_8l8ł_8l8m_8l8n_8l8ń_8l8p_8l8r_8l8s_8l8ś_8l8t_8l8v_8l8w_8l8x_8l8z_8l8ź_8l8ż_8ł8b_8ł8c_8ł8ć_8ł8d_8ł8f_8ł8g_8ł8h_8ł8j_8ł8k_8ł8l_8ł8ł_8ł8m_8ł8n_8ł8ń_8ł8p_8ł8r_8ł8s_8ł8ś_8ł8t_8ł8v_8ł8w_8ł8x_8ł8z_8ł8ź_8ł8ż_8m8b_8m8c_8m8ć_8m8d_8m8f_8m8g_8m8h_8m8j_8m8k_8m8l_8m8ł_8m8m_8m8n_8m8ń_8m8p_8m8r_8m8s_8m8ś_8m8t_8m8v_8m8w_8m8x_8m8z_8m8ź_8m8ż_8n8b_8n8c_8n8ć_8n8d_8n8f_8n8g_8n8h_8n8j_8n8k_8n8l_8n8ł_8n8m_8n8n_8n8ń_8n8p_8n8r_8n8s_8n8ś_8n8t_8n8v_8n8w_8n8x_8n8z_8n8ź_8n8ż_8ń8b_8ń8c_8ń8ć_8ń8d_8ń8f_8ń8g_8ń8h_8ń8j_8ń8k_8ń8l_8ń8ł_8ń8m_8ń8n_8ń8ń_8ń8p_8ń8r_8ń8s_8ń8ś_8ń8t_8ń8v_8ń8w_8ń8x_8ń8z_8ń8ź_8ń8ż_8p8b_8p8c_8p8ć_8p8d_8p8f_8p8g_8p8h_8p8j_8p8k_8p8l_8p8ł_8p8m_8p8n_8p8ń_8p8p_8p8r_8p8s_8p8ś_8p8t_8p8v_8p8w_8p8x_8p8z_8p8ź_8p8ż_8r8b_8r8c_8r8ć_8r8d_8r8f_8r8g_8r8h_8r8j_8r8k_8r8l_8r8ł_8r8m_8r8n_8r8ń_8r8p_8r8r_8r8s_8r8ś_8r8t_8r8v_8r8w_8r8x_8r8z_8r8ź_8r8ż_8s8b_8s8c_8s8ć_8s8d_8s8f_8s8g_8s8h_8s8j_8s8k_skr4z8s8l_8s8ł_8s8m_8s8n_8s8ń_8s8p_8s8r_8s8s_8s8ś_8s8t_str4z8s8v_8s8w_8s8x_8s8z_szc4z8s8ź_8s8ż_8ś8b_8ś8c_8ś8ć_8ś8d_8ś8f_8ś8g_8ś8h_8ś8j_8ś8k_8ś8l_8ś8ł_8ś8m_8ś8n_8ś8ń_8ś8p_8ś8r_8ś8s_8ś8ś_8ś8t_8ś8v_8ś8w_8ś8x_8ś8z_8ś8ź_8ś8ż_8t8b_8t8c_8t8ć_8t8d_8t8f_8t8g_8t8h_8t8j_8t8k_8t8l_8t8ł_8t8m_8t8n_8t8ń_8t8p_8t8r_8t8s_8t8ś_8t8t_8t8v_8t8w_8t8x_8t8z_8t8ź_8t8ż_8v8b_8v8c_8v8ć_8v8d_8v8f_8v8g_8v8h_8v8j_8v8k_8v8l_8v8ł_8v8m_8v8n_8v8ń_8v8p_8v8r_8v8s_8v8ś_8v8t_8v8v_8v8w_8v8x_8v8z_8v8ź_8v8ż_8w8b_8w8c_8w8ć_8w8d_8w8f_8w8g_8w8h_8w8j_8w8k_8w8l_8w8ł_8w8m_8w8n_8w8ń_8w8p_8w8r_8w8s_8w8ś_8w8t_8w8v_8w8w_8w8x_8w8z_8w8ź_8w8ż_8x8b_8x8c_8x8ć_8x8d_8x8f_8x8g_8x8h_8x8j_8x8k_8x8l_8x8ł_8x8m_8x8n_8x8ń_8x8p_8x8r_8x8s_8x8ś_8x8t_8x8v_8x8w_8x8x_8x8z_8x8ź_8x8ż_8z8b_8z8c_8z8ć_8z8d_zdr4z8z8f_8z8g_8z8h_8z8j_8z8k_8z8l_8z8ł_8z8m_8z8n_8z8ń_8z8p_8z8r_8z8s_8z8ś_8z8t_8z8v_8z8w_8z8x_8z8z_8z8ź_8z8ż_8ź8b_8ź8c_8ź8ć_8ź8d_8ź8f_8ź8g_8ź8h_8ź8j_8ź8k_8ź8l_8ź8ł_8ź8m_8ź8n_8ź8ń_8ź8p_8ź8r_8ź8s_8ź8ś_8ź8t_8ź8v_8ź8w_8ź8x_8ź8z_8ź8ź_8ź8ż_8ż8b_8ż8c_8ż8ć_8ż8d_8ż8f_8ż8g_8ż8h_8ż8j_8ż8k_8ż8l_8ż8ł_8ż8m_8ż8n_8ż8ń_8ż8p_8ż8r_8ż8s_8ż8ś_8ż8t_8ż8v_8ż8w_8ż8x_8ż8z_8ż8ź_8ż8ż_be1e2bino1bis4zb2r2dbroa2bus4zbusi1c2h2jc2h2lcur4zde2u1dus4zd2ż2jd2ż2ld2ż2łd2ż2rd2ż2werza1fis4zfor4zgado1his4zhuc4zi4n3ni2n1sj2t1łj2t1rled1wly2o2mar4zmis4zmi2e1moza1mur4zo4f3fó2w1cpoli1połu1p2r1cprc4hs2m2rsowi1syno1szto1to2y1tygo1we1e2ź2d4ź_gd4z_ina1', - 6 : '_a2b1s_ad4e1_ad4i1_ad4o1_ad4u1_ad4y1_ad5op_ad5or_a2n1t_anty1_a2r1c_arcy1_au3g2_au3k2_au3t2_auto1_4b3b8_2b1c8_2b1ć8_2b1d8_be2z3_beza1_bezi1_bezm2_bezo2_bezw2_2b1f8_2b1g8_2b1k8_2b1m8_2b1n8_2b1ń8_2b1p8_br4z8_2b1s8_2b1ś8_2b1t8_2b1z8_2b1ź8_2b1ż8_cało1_2c1b8_4c3c8_2c1ć8_2c1d8_2c1f8_2c1g8_c2h2r_ci2e1_2c1k8_2c1l8_2c1m8_2c1n8_2c1ń8_2c1p8_2c1s8_2c1ś8_2c1t8_czte1_czwó1_2c1ź8_2c1ż8_2ć1b8_2ć1c8_4ć3ć8_2ć1d8_2ć1f8_2ć1g8_2ć1k8_2ć1m8_2ć1n8_2ć1ń8_2ć1p8_2ć1s8_2ć1ś8_2ć1t8_2ć1z8_2ć1ź8_2ć1ż8_dale1_2d1b8_2d1c8_2d1ć8_4d3d8_de2z3_deza2_dezo2_2d1f8_2d1g8_2d1k8_2d1m8_2d1n8_2d1ń8_do3b2_do3c2_do3ć2_do3d2_do3f2_do3g2_do3h2_do3k2_do3l2_do3ł2_do3m2_do3p2_do3r2_do3s2_do3ś2_do3t2_do3w2_do3z2_do3ź2_do3ż2_dobr2_dosm2_dotr2_2d1p8_dr4z8_2d1s8_2d1ś8_2d1t8_dy2s3_dy2z3_dyzu2_e1me1_e1se1_e2s1t_egoa2_egoi2_egou2_e1le1_2f1c8_4f3f8_2f1k8_2f1m8_2f1n8_2g1b8_2g1c8_2g1ć8_2g1d8_ge2o3_2g1f8_4g3g8_2g1k8_2g1m8_2g1ń8_go2u3_2g1p8_gr4z8_2g1s8_2g1ś8_2g1t8_2g1z8_2g1ź8_2g1ż8_2h1b8_2h1c8_2h1ć8_2h1d8_2h1f8_2h1g8_4h3h8_hipe1_2h1j8_2h1k8_2h1l8_2h1ł8_2h1m8_2h1n8_2h1ń8_2h1p8_2h1r8_2h1s8_2h1ś8_2h1t8_2h1w8_2h1z8_2h1ź8_2h1ż8_i2s3l_i1ni1_i2n1f_izoa2_izoe2_izou2_2j1b8_2j1c8_2j1ć8_2j1d8_2j1f8_2j1g8_2j1h8_4j3j8_2j1k8_2j1l8_2j1ł8_2j1m8_2j1n8_2j1ń8_2j1p8_2j1r8_2j1s8_2j1ś8_2j1t8_2j1w8_2j1z8_2j1ź8_2j1ż8_2k1b8_2k1c8_2k1ć8_2k1d8_2k1f8_2k1g8_4k3k8_2k1m8_2k1n8_2k1ń8_2k1p8_kr4z8_2k1s8_2k1ś8_2k1t8_2k1z8_2k1ź8_2k1ż8_2l1b8_2l1c8_2l1ć8_2l1d8_2l1f8_2l1g8_2l1h8_2l1j8_2l1k8_4l3l8_2l1ł8_2l1m8_2l1n8_2l1ń8_2l1p8_2l1r8_2l1s8_2l1ś8_2l1t8_ludo1_2l1w8_2l1z8_2l1ź8_2l1ż8_2ł1b8_2ł1c8_2ł1ć8_2ł1d8_2ł1f8_2ł1g8_2ł1h8_2ł1j8_2ł1k8_2ł1l8_4ł3ł8_2ł1m8_2ł1n8_2ł1ń8_2ł1p8_2ł1r8_2ł1s8_2ł1ś8_2ł1t8_2ł1w8_2ł1z8_2ł1ź8_2ł1ż8_2m1b8_2m1c8_2m1ć8_2m1d8_2m1f8_2m1g8_2m1h8_2m1j8_2m1k8_2m1l8_2m1ł8_4m3m8_2m1n8_2m1ń8_2m1p8_2m1r8_2m1s8_2m1ś8_2m1t8_2m1w8_2m1z8_2m1ź8_2m1ż8_na2d2_na3b2_na3c2_na3ć2_na3f2_na3g2_na3h2_na3k2_na3l2_na3ł2_na3m2_na3p2_na3r2_na3s2_na3ś2_na3t2_na3u2_na3w2_na3z2_na3ź2_na3ż2_nakr2_napo1_naro1_nasm2_nazw2_2n1b8_2n1c8_2n1ć8_2n1d8_ne2o3_2n1f8_2n1g8_2n1h8_ni2e1_nieo2_2n1j8_2n1k8_2n1l8_2n1ł8_2n1m8_4n3n8_2n1ń8_2n1p8_2n1r8_2n1s8_2n1ś8_2n1t8_2n1w8_2n1z8_2n1ź8_2n1ż8_2ń1b8_2ń1c8_2ń1ć8_2ń1d8_2ń1f8_2ń1g8_2ń1h8_2ń1j8_2ń1k8_2ń1l8_2ń1ł8_2ń1m8_2ń1n8_2ń1ń8_2ń1p8_2ń1r8_2ń1s8_2ń1ś8_2ń1t8_2ń1w8_2ń1z8_2ń1ź8_2ń1ż8_o2t1c_otc4h_ob3l2_oblu1_ob3ł2_obra1_obry1_o3be1_o3bi1_od3i2_od3r2_odra1_odrę1_odru1_od5z2_odzi1_o3de1_o2l1ś_ob3h2_ob3j2_o1bo1_ob3w2_oc4h2_oc4z2_od3h2_od3j2_od3l2_o1do1_od3w2_od5ż2_odbe1_od4ź2_ogni1_o2p1c_o2r1t_or4z2_os4z2_ośmi1_2p1b8_2p1c8_pc4h8_2p1ć8_2p1d8_pe2r3_pe1e2_2p1f8_2p1g8_pi2e1_pi2ę1_pi2o1_2p1k8_2p1m8_2p1n8_2p1ń8_po2d2_po3b2_po3c2_po3ć2_podi1_po3f2_po3g2_po3h2_po3k2_po3l2_po3ł2_po3m2_po3p2_po3r2_po3s2_po3ś2_po3t2_po3w2_po3z2_po3ź2_po3ż2_podó1_pobr2_pokl2_pokr2_pona1_poni1_posm2_potr2_poza1_pozw2_pó2ł3_półe1_póło2_4p3p8_pr4z8_prze1_przy1_2p1s8_2p1ś8_2p1t8_2p1z8_2p1ź8_2p1ż8_2r1b8_2r1c8_2r1ć8_2r1d8_2r1f8_2r1g8_2r1h8_2r1j8_2r1k8_2r1l8_2r1ł8_2r1m8_2r1n8_2r1ń8_ro2z3_rozi2_rozm2_rozw2_2r1p8_4r3r8_2r1s8_2r1ś8_2r1t8_2r1w8_2r1ź8_2r1ż8_samo1_2s1b8_sc4h8_2s1d8_2s1f8_2s1g8_si2e1_2s1s8_su2b3_subi1_subo1_supe1_2s1ź8_2s1ż8_2ś1b8_2ś1d8_2ś1f8_2ś1g8_2ś1k8_2ś1p8_2ś1s8_2ś1ś8_2ś1t8_2ś1z8_2ś1ź8_2ś1ż8_ta2o3_tar4z_2t1b8_2t1c8_tc4h8_2t1ć8_2t1d8_te2o3_2t1f8_2t1g8_2t1k8_2t1m8_2t1n8_2t1ń8_2t1p8_tr4z8_trze1_2t1s8_2t1ś8_4t3t8_tysi1_2t1z8_2t1ź8_2t1ż8_u4d3k_u4f3n_ukle1_u4l3s_u4l3t_u2m1b_u4n3c_u4n3d_u4p3p_u4r3s_uc4h2_uc4z2_ud4z2_ud4ź2_ud4ż2_u2p1c_ur4z2_us4z2_2w1b8_2w1c8_2w1ć8_2w1d8_we3b2_we3c2_we3ć2_we3d2_we3f2_we3g2_we3h2_we3k2_we3l2_we3ł2_we3m2_we3n2_we3p2_we3r2_we3s2_we3ś2_we3t2_we3w2_we3z2_we3ż2_2w1f8_2w1g8_wi2e1_2w1j8_2w1k8_2w1l8_2w1ł8_2w1m8_2w1n8_2w1ń8_2w1p8_2w1r8_2w1s8_wspó1_wsze1_2w1ś8_2w1t8_4w3w8_wy3b2_wy3c2_wy3ć2_wy3d2_wy3f2_wy3g2_wy3h2_wy3k2_wy3l2_wy3ł2_wy3m2_wy3p2_wy3r2_wy3s2_wy3ś2_wy3t2_wy3w2_wy3z2_wy3ź2_wy3ż2_wybr2_wydr2_wykl2_wykr2_wysm2_wytr2_2w1z8_2w1ź8_2w1ż8_za3b2_za3c2_za3ć2_za3d2_za3f2_za3g2_za3h2_za3k2_za3l2_za3ł2_za3m2_za3p2_za3r2_za3s2_za3ś2_za3t2_za3u2_za3w2_za3z2_za3ź2_za3ż2_zabr2_zado1_zadr2_zady1_zakl2_zakr2_zani1_zasm2_zatr2_2z1c8_2z1ć8_2z1d8_ze3b2_ze3c2_ze3ć2_ze3d2_ze3f2_ze3g2_ze3h2_ze3k2_ze3l2_ze3ł2_ze3m2_ze3p2_ze3r2_ze3s2_ze3ś2_ze3t2_ze3w2_ze3z2_ze3ź2_ze3ż2_zekl2_zesm4_2z1f8_2z1k8_zo2o3_2z1p8_2z1s8_2z1ś8_2z1t8_4z3z8_2ź1b8_2ź1c8_2ź1ć8_2ź1d8_2ź1f8_2ź1g8_2ź1k8_2ź1l8_2ź1m8_2ź1n8_2ź1p8_2ź1s8_2ź1ś8_2ź1t8_2ź1w8_2ź1z8_4ź3ź8_2ź1ż8_2ż1b8_2ż1c8_2ż1ć8_2ż1d8_2ż1f8_2ż1g8_2ż1j8_2ż1k8_2ż1l8_2ż1ł8_2ż1m8_2ż1n8_2ż1ń8_2ż1p8_2ż1r8_2ż1s8_2ż1ś8_2ż1t8_2ż1w8_2ż1z8_2ż1ź8_4ż3ż81ś2ci12b2ł1k2b2r1n2c2h1b2c2h1c2c2h1ć2c2h1d2c2h1f2c2h1g2c2h1k2c2h1m2c2h1n2c2h1ń2c2h1p2c2h1s2c2h1ś2c2h1t2c2h1z2c2h1ź2c2h1ż2c2z1c2c2z1ć2c2z1d2c2z1f2c2z1k2c2z1p2c2z1s2c2z1ś2c2z1t2c4z3z2d2ł1b2dłs4z2d2r1n2d2z1c2d2z1ć2d2z1d2d2z1f2d2z1k2d2z1p2d2z1s2d2z1ś2d2z1t2d4z3z2d2ź1b2d2ź1c2d2ź1ć2d2ź1d2d2ź1f2d2ź1g2d2ź1k2d2ź1m2d2ź1n2d2ź1p2d2ź1s2d2ź1ś2d2ź1t2d2ź1z2d4ź3ź2d2ź1ż2d2ż1b2d2ż1c2d2ż1ć2d2ż1d2d2ż1f2d2ż1g2d2ż1k2d2ż1m2d2ż1n2d2ż1ń2d2ż1p2d2ż1s2d2ż1ś2d2ż1t2d2ż1z2d2ż1ź2d4ż3ż2g2ł1b2k1s4z2k2ł1b2n2t1n2p1s4z2p2l1n2r2z1c2r2z1ć2r2z1d2r2z1f2r2z1k2r2z1p2r2z1s2r2z1ś2r2z1t2s2ł1b2s2n1k2s2t1k2s2t1n2sts4z2s2z1c2s2z1ć2s2z1f2s2z1k2s2z1p2s2z1s2s2z1ś2s2z1t2s4z3z2ś2ć1c2ś2l1m2ś2l1n2t2l1n2t2r1k2z2d1k2z2d1ndni2o13m2k2n3w2ład3w2łosbe2ethbizne1bi2r1mbu2k1sca2l1dchus1tcurzo1d2rz2wfisha1fo2k1sforza1fo2l1kfo2s1ffosfa1ga2d1ggadge1go2l1fhuxle1in2n1sin2s1bja4z3zka2r1lki2r1ckirc4hko2n1glu2k1smier4zmo2n1tmozai2murza1na2ł1knałko1na4r3vochmi1offse1pa1na1po2d1npodni1po2m1npo2r1tpo2w1spows4zprcha1pres4zskor4zsyste1sze4śćto1yo2tu2r1bturbo1vo2l1kze4p3p_byna1_gdzi1_o2w1s_ows4z_póła1', - 7 : '_a1d4a1_ae3ro1_aeroi2_aerou2_antye2_antyi2_antyo2_antyu2_arcye2_arcyi2_arcyo2_arcyu2_autoe2_autoi2_be1ze1_be2z1c_be4z3z_bezzw2_chr4z8_2c2z1t_ćwi2e1_de1ze1_długo1_do4k3t_do4l3n_do4ł3k_do4m3k_do4r3s_do4w3c_doc4h2_doc4z2_dod4z2_dod4ź2_dod4ż2_do2p1c_dor4z2_dos4z2_dwó2j3_dy3s4z_dzi2e1_e2k2s3_emes4z_e1goe2_ego1o2_eks4y1_grubo1_i3n4ic_i3n4o1_i3n4u1_infla1_ino3w2_i1zoi2_izo1o2_jadło1_ki2l1k_kilku1_ko1ło1_ko2n1t_kro2ć3_mi1li1_mo2ż1n_nad3i2_nad3ł2_nadłu1_nadmu1_nad3r2_nadre1_nadrę1_nadru1_nad3w2_nadwo1_na1da1_na3daj_na3dą1_na3de1_na3dę1_na3do1_na3dy1_nad4z2_na1ja1_na3ją1_na3je1_na3ję1_na4f3c_na4f3t_na4r3c_na4r3d_na4r3k_na4r3r_na4r3t_nac4h2_nac4z2_nad3h2_nad3j2_nad3l2_nad3u2_nad5ż2_nadtr2_naj3i2_naj3o2_najro1_naj3u2_najbe1_najdo1_najkr2_najsm2_najzw2_nar4z2_nas4z2_na2t1c_naz3m2_nie3b2_nie3c2_nie3ć2_nie3d2_nie3f2_nie3g2_nie3h2_nie3k2_nie3l2_nie3ł2_nie3m2_nie3p2_nie3r2_nie3s2_nie3ś2_nie3t2_nie3u2_nie3w2_nie3z2_nie3ź2_nie3ż2_niedo1_nieob2_nieoc2_nieoć2_nieod2_nieof2_nieog2_nieoh2_nieok2_nieol2_nieoł2_nieom2_nieop2_nieor2_nieos2_nieoś2_nieot2_nieow2_nieoz2_nieoź2_nieoż2_niepo1_niero1_niesu1_nietr2_nieuw2_niewy1_niezw2_o1bło1_o1bro1_o1dro1_od2r1w_odr4z2_odrze1_o3l2śn_obrze1_obrzę1_obrzu1_obrzy1_o2b3c2_o2b3ć2_o2b3d2_o2b3f2_o2b3g2_o2b3k2_o2b3m2_o2b3n2_o2b3p2_o2b3s2_o2b3ś2_o2b3t2_o2b3ź2_o2b3ż2_obc4h2_obc4z2_obd4z2_obd4ź2_obd4ż2_obe3b2_obe3c2_obe3ć2_obe3d2_obe3f2_obe3g2_obe3h2_obe3k2_obe3l2_obe3ł2_obe3m2_obe3p2_obe3r2_obe3s2_obe3ś2_obe3t2_obe3w2_obe3z2_obe3ź2_obe3ż2_obi3b2_obs4z2_oc2h2r_o2d3b2_o2d3c2_o2d3ć2_o4d3d2_o2d3f2_o2d3g2_o2d3k2_o2d3m2_o2d3n2_od3o2s_o2d3p2_o2d3s2_o2d3ś2_o2d3t2_odc4h2_odc4z2_odd4z2_odd4ź2_odd4ż2_ode3b2_ode3c2_ode3ć2_ode3d2_ode3f2_ode3g2_ode3h2_ode3k2_ode3l2_ode3ł2_ode3m2_ode3p2_ode3r2_ode3s2_ode3ś2_ode3t2_ode3w2_ode3z2_ode3ź2_ode3ż2_ods4z2_oka3m2_opc4h2_or2tę1_o2r2ż2_osi2e1_pe3c2k_pe2ł1n_pełno1_pe1pe1_pe1ze1_pię2ć3_pod3ł2_podmu1_podna1_pod3r2_podra1_podre1_podrę1_podró1_podru1_podry1_podr4z_pod3w2_podwa1_podwó1_po3da1_po3dą1_po3de1_po3dej_po3dę1_po3do1_po3du1_po3dy1_po3r1ż_poc4z2_podza1_podzi1_po4l3s_po4m3p_po4ń3c_po4r3c_po4r3f_po4r3n_po4r3t_poc4h2_pod3h2_pod3j2_pod3l2_pod5ż2_podsm2_po2p1c_po1po1_po1ro1_por4z2_pos4z2_poz4m2_półkr2_pó2ł1p_pra3s2_predy1_przyo2_retra1_ro1zo2_ro2z1p_roztr2_skąd4ż_so1bo1_spo2d2_spo3b2_spo3c2_spo3ć2_spo3f2_spo3g2_spo3h2_spo3k2_spo3l2_spo3ł2_spo3m2_spo3p2_spo3r2_spo3s2_spo3ś2_spo3t2_spo3w2_spo3z2_spo3ź2_spo3ż2_spó2ł3_sze2s3_sześ1c_śró2d5_śródr2_świ2a1_tró2j3_tróje1_u4m3br_ube2z3_ubezw2_u2m1k2_upc4h2_upo2d2_upo3b2_upo3c2_upo3ć2_upo3f2_upo3g2_upo3h2_upo3k2_upo3l2_upo3ł2_upo3m2_upo3p2_upo3r2_upo3s2_upo3ś2_upo3t2_upo3w2_upo3z2_upo3ź2_upo3ż2_uro2z3_u2r1ż2_usc4h2_u2t1k2_uze3w2_we4k3t_we4l3w_we4ł3n_we4n3d_we4n3t_we4r3b_we4r3d_we4r3n_we4r3s_we4r3t_wec4h2_wec4z2_wed4z2_wed4ź2_wed4ż2_we2p1c_wer4z2_wes4z2_we2w1n_wewną1_wielo1_wielu1_wi2l1c_wilc4z_wni2e1_wo1do1_wyc4z2_wy2ż1s_wyc4h2_wyd4z2_wyd4ź2_wyd4ż2_wy2p1c_wyr4z2_wys4z2_wy2t1c_za4k3t_za4l3g_za4l3k_za4l3t_za4m3k_za2r1c_zac4h2_zac4z2_zad4z2_zad4ź2_zad4ż2_zai2n3_zar4z2_zas4z2_zde2z3_zdeza1_ze4r3k_ze1te1_zetha1_zec4h2_zec4z2_zed4z2_zed4ź2_zed4ż2_ze2p1c_zer4z2_zes4z2_zi2m1n_zimno1_zło3w2_zni2e1_zro2z3_ź2d4ź82sz2l1n2t2rz1n3d2niow3m2nest3m2nezj3w2czas8b8r8z_8c8h8ł_8c8h8w_8c8z8t_8d8r8z_8k8s8t_8m8s8t_8p8r8z_8r8s8z_8r8z8ł_8s8c8h_8s8t8r_8s8t8w_sz2cz1b8s8z8k_8s8z8n_8s8z8t_8t8r8z_8z8d8r_be1khe1biszko1bi1rmi1blokha1bu2sz1mbusine1caldwe1deu2t1sduszpa1dże4z3bdże4z3me2r5zace3u2s4zgol2f3sgra2n1dgrandi1gro4t3rhu2cz1winn2s1binsbru1kar2l1skongre1luftwa1luk2s1fluksfe1mi2sz1mmiszma1montre1o2c2h1mó4w3c4zpaname1pa1sca1por2t1sportla1poli2e1poli2u1powsze1pr2chalroe2n1tro1kro1ro1sto1sowi3z2s4zas4zszezlo1szy2n1k_inac4z_ni2g1d_nigdy1_nigd4z_owsze1_skądi1_trója1', - 8 : '_a2b2s3t_ad5i2u1_a1eroa2_ae1roe2_aero1o2_a1ntya2_arcy3b2_arcy3k2_arcy3ł2_arcy3m2_a1rcya2_a1utoa2_auto1o2_au1tou2_be3z4an_be3z4ec_be3z4ik_bezc4h2_cało3k2_cało3ś2_cie2n1k_cienko1_ciepło1_cza2r1n_czarno1_2c2z1k8_cztero1_czwó2r3_daleko1_dezabi1_de3z4el_de3z4er_de3z4y1_dobr4z2_dogr4z2_dopc4h2_dopr4z2_do2r1ż2_dosc4h2_do2t1k2_dro1go1_dy3s4e1_dy3s4o1_dy3s4y1_dy3z4e1_e2s1ha1_ele2k1t_hipe2r3_hipera2_i4n5o2k_koło3w2_kontru2_kró2t1k_krótko1_ludo3w2_mili2a1_mo1żno1_na3d4ir_na2d3m2_na3dzi1_na3d4ź2_nadoki1_nadrze1_nabr4z2_na2d3b2_na2d3c2_na2d3ć2_na4d3d2_nade3t2_na2d3f2_na2d3g2_na2d3k2_na2d3n2_na2d3p2_na2d3s2_na2d3ś2_na2d3t2_na2dz1m_nadzmy1_nad5zo1_nad5zó1_nadzwy1_nadc4h2_nadc4z2_nadd4ź2_nade3b2_nade3c2_nade3ć2_nade3d2_nade3f2_nade3g2_nade3h2_nade3k2_nade3l2_nade3ł2_nade3m2_nade3p2_nade3r2_nade3s2_nade3ś2_nade3w2_nade3z2_nade3ź2_nade3ż2_nads4z2_nadśro1_nagr4z2_na2j3b2_na2j3c2_na2j3ć2_na2j3d2_na2j3f2_na2j3g2_na2j3h2_na2j3k2_na2j3l2_na2j3ł2_na2j3m2_na2j3p2_na2j3r2_na2j3s2_na2j3ś2_na2j3t2_na2j3w2_na2j3z2_na2j3ź2_na2j3ż2_najc4h2_najc4z2_najd4z2_najd4ź2_najd4ż2_najr4z2_najs4z2_napo2d2_napo3b2_napo3c2_napo3ć2_napo3f2_napo3g2_napo3h2_napo3k2_napo3l2_napo3ł2_napo3m2_napo3p2_napo3r2_napo3s2_napo3ś2_napo3t2_napo3w2_napo3z2_napo3ź2_napo3ż2_napr4z2_naro2z3_na2r1ż2_natc4h2_na2t1k2_nie4c3c_nie4c3k_nie4m3c_nie4m3k_niec4h2_niec4z2_nied4z2_nied4ż2_nieodw2_niepr4z_nier4z2_nies4z2_o3b4łą1_o3b4łę1_o3b4łoc_o3b4rać_o3b4ron_o3b4roń_o3b4ryz_o3b4ryź_o3d4rap_o3d4ręt_odrobi1_o3d4rut_ob3u2m2_obe3r3t_obe4c3n_obe4z3w_obec4h2_obec4z2_obed4z2_obed4ź2_obed4ż2_obe2r3m_ober4z2_obes4z2_ochr4z2_od3a2u1_od3u2m2_odbe2z3_odec4h2_odec4z2_oded4z2_oded4ź2_oded4ż2_ode2p1c_oder4z2_odes4z2_ode2t1c_odkr4z2_ogó2l1n_o1le2o3_osie2m3_pe3r4e1_pe3r4i1_pe3r4o1_pe3r4u1_pe3r4y1_pepee2r_pepee2s_pie2r1w_pierwo1_pi1ęci1_pię2ć1s_pięćse1_pio1no1_płasko1_po2d3m2_po2d3n2_pod2r1w_po1dro1_po1dwo1_po3d4z2_po3d4ź2_pode3k2_podobi1_podobó1_podoc4h_podoki1_podopi1_podory1_podosi1_po4d3ów_podura1_podus4z_po2dz1b_po4st3h_po4st3l_pobr4z2_poc2h2r_po2d3b2_po2d3c2_po2d3ć2_po4d3d2_po2d3f2_po2d3g2_pod3i2n_po2d3k2_po2d3p2_po2d3s2_po2d3ś2_podśró1_po2d3t2_podc4h2_podc4z2_podd4ź2_podd4ż2_pode3b2_pode3c2_pode3ć2_pode3d2_pode3f2_pode3g2_pode3h2_pode3l2_pode3ł2_pode3m2_pode3p2_pode3r2_pode3s2_pode3ś2_pode3t2_pode3w2_pode3z2_pode3ź2_pode3ż2_pods4z2_pogr4z2_po2ł1k2_pom4p1k_po2m1k2_pona2d2_pona3b2_pona3c2_pona3ć2_pona3f2_pona3g2_pona3h2_pona3k2_pona3l2_pona3ł2_pona3m2_pona3p2_pona3r2_pona3s2_pona3ś2_pona3t2_pona3w2_pona3z2_pona3ź2_pona3ż2_ponasm2_ponazw2_poni2e1_popc4h2_popo3w2_popr4z2_por4t1w_por4t1f_por4t1m_poro2z3_posc4h2_po2t1k2_poza3u2_pó3ł4ą1_pó3ł4ę1_pó3ł4y1_pó2ł1k2_pó2ł1m2_półob3r_półpr4z_pra2w1n_pra3w2z_prze2d2_prze3b2_prze3c2_prze3ć2_prze1e2_prze3f2_prze3g2_prze3h2_prze3k2_prze3l2_prze3ł2_prze3m2_prze3n2_prze3p2_prze3r2_prze3s2_prze3ś2_prze3t2_prze3u2_prze3w2_prze3z2_prze3ź2_prze3ż2_przebr2_przeci1_przeda1_przekl2_przekr2_przesm2_przetr2_przy3b2_przy3c2_przy3ć2_przy3d2_przy3f2_przy3g2_przy3h2_przy3k2_przy3l2_przy3ł2_przy3m2_przy3p2_przy3r2_przy3s2_przy3ś2_przy3t2_przy3w2_przy3z2_przy3ź2_przy3ż2_przybr2_przyoz2_ro3z4a1_ro3z4e1_ro3z4ej_ro3z4u1_rozani1_ro2z1d2_ro1zpo1_ro2z1ś2_ro2z1t2_samo3k2_samo3p2_samo3w2_sie1de1_sie2d1m_sobo3w2_spo4r3n_spo4r3t_spoc4h2_spoc4z2_spo4d3d_spod4ź2_spod4ż2_spor4z2_spos4z2_ste1re1_supe2r3_supera1_superi1_super4z_supero1_ta1rza1_transi1_transo2_tysi2ą1_u4k3lej_u4p3p2s_u4s2t3n_u4s2t1c_u4s2t1k_u4z3be1_upo3da1_upoc4h2_upoc4z2_upo4d3d_upod4ź2_upod4ż2_upor4z2_upos4z2_wes2t1c_we4z3br_we4z3gł_we2m1k2_wepc4h2_we2t1k2_wilczo1_wniebo1_wodo3w2_wspó2ł3_współi2_współo1_współu2_wybr4z2_wygr4z2_wyi2zo1_wykr4z2_wy2m1k2_wypc4h2_wypr4z2_wy2r1ż2_wysc4h2_wytc4h2_wy2t1k2_za4uto1_zabr4z2_zagr4z2_zai2zo1_zai1ni1_zain4ic_zakr4z2_zani2e1_za2r1ż2_zasc4h2_za2t1k2_zde1ze1_zdysko1_ze3t1k2_zepc4h2_ze2r1ż2_zesc4h2_zma2r1t_znie3b2_znie3c2_znie3ć2_znie3d2_znie3f2_znie3g2_znie3h2_znie3k2_znie3l2_znie3ł2_znie3m2_znie3n2_znie3ń2_znie3p2_znie3r2_znie3s2_znie3ś2_znie3t2_znie3w2_znie3z2_znie3ź2_znie3ż23k2s2z2t3m2s2k2n3p2ne2u18ch8r8z_8sk8r8z_8sz8c8z_8sz8t8r_bi2s2z1kbi2z3nesbo2s3ma1bu2k1s4zbukszpa1cu2r7zondeutsc4hdu2s2z1pfi1szbi1fo2k2s3tfo2r5zacfo1lklo1ga3d2getgado2p1tgolfs4z2hi2s2z3pinnsbru1in4sbrucja4z4z3bja4z4z3mkarlsru1kirc4h3hkirchho1ma2r5z1lma2r5z1łma2r5z1nmontrea2moza2i3kmurzasi1of2f3setpa2s3calpa2s3c4hpodni2e1po3m2ną1po3m2nę1po3m2ni1poli3e2tpołu2d1nroen2t1gse2t3le1sko1rzo1sy2s1temszynkwa1to3y2o3tturbo1o2tygo2d1nwe1e1ke1we4s2t3fwe4s2t3m_bezac4h_bezami1_gdzi2e1_inacze1_półac4h_półami1_przyna1', - 9 : '_ad5a2p1t_bezo2b1j_czte1re1_długo3w2_do5m4k2n_drogo3w2_dwó3j4a1_dwó3j4ą1_dwó3j4e1_dwó3j4ę1_dwó3j4o1_dy3s4ta1_dzi1esi1_dzi1ewi1_elektro1_grubo3w2_hipe1re2_in4f3lan_jadło3w2_kilkuse1_kon2t2r3_ko1ntro2_możno3w2_na3d4łub_na3d4r2w_na3d4ruk_na3d4r4z_nado1bo1_nado2l1b_nadzi2e1_na4j3e2f_na4j3e2g_na4j3e2n_na4j3e2r_na4j3e2s_na4j3e2w_na1deta1_nade4p3c_nade4p3n_nade4p3t_nadec4h2_nadec4z2_naded4z2_naded4ź2_naded4ż2_nader4z2_nades4z2_naj3a2u1_naj3o2b2_naj3o2c2_naj3o2ć2_naj3o2d2_naj3o2f2_naj3o2g2_naj3o2h2_naj3o2k2_naj3o2l2_naj3o2ł2_naj3o2m2_naj3o2p2_naj3o2r2_naj3o2s2_naj3o2ś2_naj3o2t2_naj3o2w2_naj3o2z2_naj3o2ź2_naj3o2ż2_najbe2z3_najbezw2_najdo3b2_najdo3c2_najdo3ć2_najdo3d2_najdo3f2_najdo3g2_najdo3h2_najdo3k2_najdo3l2_najdo3ł2_najdo3m2_najdo3p2_najdo3r2_najdo3s2_najdo3ś2_najdo3t2_najdo3w2_najdo3z2_najdo3ź2_najdo3ż2_najob3h2_najob3j2_najob3l2_najob3ł2_najob3w2_najoc4h2_najoc4z2_najod3h2_najod3j2_najod3l2_najod3w2_najod5ż2_najod4z2_najod4ź2_najor4z2_najos4z2_naj2t1k2_naj2t1r2_najuc4z2_napo4m3p_napoc4h2_napoc4z2_napo4d3d_napod4ź2_napod4ż2_napor4z2_napos4z2_nie4d4ź3_niedo3b2_niedo3c2_niedo3ć2_niedo3d2_niedo3f2_niedo3g2_niedo3h2_niedo3k2_niedo3l2_niedo3ł2_niedo3m2_niedo3p2_niedo3r2_niedo3s2_niedo3ś2_niedo3t2_niedo3w2_niedo3z2_niedo3ź2_niedo3ż2_niedokr2_nieob3h2_nieob3j2_nieob3w2_nieoc4h2_nieoc4z2_nieod3h2_nieod3j2_nieod3l2_nieod3ł2_nieod5ż2_nieod4z2_nieod4ź2_nieor4z2_nieos4z2_niepo2d2_niepo3b2_niepo3c2_niepo3ć2_niepo3f2_niepo3g2_niepo3h2_niepo3k2_niepo3l2_niepo3ł2_niepo3m2_niepo3p2_niepo3r2_niepo3s2_niepo3ś2_niepo3t2_niepo3w2_niepo3z2_niepo3ź2_niepo3ż2_niepod5ż_nieposm2_niero2z3_nierozm2_niesu2b3_nie2t1k2_nieuc4z2_niewy3b2_niewy3c2_niewy3ć2_niewy3d2_niewy3f2_niewy3g2_niewy3h2_niewy3k2_niewy3l2_niewy3ł2_niewy3m2_niewy3p2_niewy3r2_niewy3s2_niewy3ś2_niewy3t2_niewy3w2_niewy3z2_niewy3ź2_niewy3ż2_niewytr2_o3b4luzg_o3b4r4z2_o3d4i2u1_o3d4rwi1_o3d4rzeć_o3d4rz2w_o4b5rzą1_o4b5rzez_o4b5rzęd_o4b5rzuc_o4b5rzut_o4b5rzyn_o4d7ziar_o4d7ziem_obe2r1ż2_obesc4h2_obe2t1k2_od3u2c4z_ode3m1k2_odepc4h2_ode2r1ż2_odetc4h2_ode2t1k2_o1gni2o1_o1gólno1_osie2m1s_o1śmi2o1_ośmio3ś2_pe4r5i2n_pe1e1se1_pee2se2l_pe1pe1e2_peze2t1p_pięci2o1_piono3w2_po3d4łu1_po3d4naw_po3d4rap_po3d4raż_po3d4roż_po3d4róż_po3d4ryg_po3d4waj_po3d4woj_po3d4wór_po3di2u1_po4c2z3d_po4c2z3t_podobra1_po4d3o2f_po4d3o2g_podokre1_podokrę1_podo2b1s_podo2l1b_po4d5zam_po4d5ze1_podzi2e1_po4s2t3d_po4s2t3f_po4s2t3g_po4st3i2_po4s2t3k_po4s2t3m_po4s2t3p_po1stro1_po4s2t3s_po5r4tę1_pochr4z2_podec4h2_podec4z2_poded4z2_poded4ź2_poded4ż2_pode2p1c_poder4z2_podes4z2_podro2z3_pona4f3t_ponac4h2_pona4d3d_ponad3h2_ponad3j2_ponad3l2_ponad4z2_ponar4z2_ponas4z2_ponaz3m2_ponie3k2_ponie3w2_póło2m2d_półprzy1_pra1pra1_przed3ł2_przedłu1_przedmu1_przed3o2_przed3r2_przedra1_przedru1_przedry1_przed3u2_prze3dą1_prze3dę1_prze3dy1_przedzi1_przec4h2_przec4z2_prze1de1_przed3h2_przed3i2_przed3j2_przed3l2_przedsi1_przed3w2_prze2p1c_przes4z2_przetra1_przyc4h2_przyc4z2_przyd4z2_przyd4ź2_przyd4ż2_przy2p1c_przys4z2_rozbr4z2_rozec4h2_rozec4z2_rozed4z2_rozed4ź2_rozed4ż2_roze2p1c_rozer4z2_rozes4z2_rozpo3w2_samo1ro1_siede2m3_si1edmi1_spo3d4z2_stere2o3_stereoa2_stereoi2_stereou2_supe1re2_sze4ś2ć3_sześ2ć1s_światło1_ta2r7zan_tra2n2s3_tran3s4z_tra1nsa2_tró3j4ą1_tró3j4ę1_tysią2c3_wielo3d2_wielo3k2_wielo3ś2_wszecho2_wy3o2d3r_wy4ż3s4z_wye2k2s3_za3o2b3r_za3o2b3s_za4r3c4h_za5m4k2n_zado2ść3_zadośću4_zanie3d2_zde3z4el_zde3z4er_zde3z4y1_zdyskre1_zdyskwa1_ze4t3hap_zmartwy1_znie4m3c_zniec4h2_zniec4z2_znied4z2_znied4ż2_znier4z2_znies4z2_zro3z4u18s8t8r8z_8szc8z8b_8z8d8r8z_be2f3s4z2bi2sz3kopbirmi2n1gblokha2u1broa1dwa1bu2sz3me1buk2s2z1pfi2sz3binfol2k1lorfo1sfazo1karlskro1lu2ks1fermie2r5z1łpo1rtsmo1portsmou2pre2s2z1proe1ntge1skorzone1szto1kho1vo2l2k2s3_byna2j1m_n8i9gdy__ni1gdzi1_niechby1_trójac4h_trójami1_podó2w1c', - 10 : '_arcy3b1z2_auto3c4h2_a1utotra1_cienko3w2_czarno3k2_cztero3ś2_czwó3r4a1_czwó3r4ą1_czwó3r4e1_czwó3r4ę1_czwó3r4o1_ćwie2r2ć3_daleko3w2_długo3tr2_dziesi2ę1_dziewi2ę1_e1me1sze1_elektroa2_elektroi2_elektrou2_hipe3r4o1_kon3tr4a1_kon3tr4e1_kon3tr4y1_krótko3w2_nadre2p1c_na3ja2z1d_nado1bro1_nadoki2e1_na4d5rzą1_na4d5rzę1_na4d5rzy1_na4d5ziem_na4j3e2u1_nad3e2tat_nad5z2mys_nade2r1ż2_nadśrod4z_naj3a2k1t_naj3ro2z3_najdoc4h2_najdoc4z2_najdod4z2_najdod4ź2_najdod4ż2_najdor4z2_najdos4z2_najo2b3c2_najo2b3ć2_najo2b3d2_najo2b3f2_najo2b3g2_najo2b3k2_najo2b3m2_najo2b3n2_najo2b3p2_najo2b3s2_najo2b3ś2_najo2b3t2_najo2b3ź2_najo2b3ż2_najobc4h2_najobc4z2_najobd4z2_najobd4ź2_najobd4ż2_najobr4z2_najobs4z2_najo2d3c2_najo2d3ć2_najo4d3d2_najo2d3f2_najo2d3g2_najo2d3k2_najo2d3m2_najo2d3n2_najo2d3p2_najo2d3s2_najo2d3ś2_najo2d3t2_najodc4h2_najodc4z2_najodd4z2_najodd4ź2_najodd4ż2_najods4z2_napo2m1k2_niedoc4h2_niedoc4z2_niedod4z2_niedod4ź2_niedod4ż2_niedo2p1c_niedor4z2_niedos4z2_nieo2b3c2_nieo2b3ć2_nieo2b3d2_nieo2b3f2_nieo2b3g2_nieo2b3k2_nieo2b3m2_nieo2b3p2_nieo2b3s2_nieo2b3ś2_nieo2b3ź2_nieo2b3ż2_nieobc4h2_nieobc4z2_nieobd4z2_nieobd4ź2_nieobd4ż2_nieobs4z2_nieo2d3c2_nieo2d3ć2_nieo4d3d2_nieo2d3f2_nieo2d3g2_nieo2d3k2_nieo2d3n2_nieo2d3p2_nieo2d3s2_nieo2d3ś2_nieo2d3t2_nieod3w1r_nieodc4h2_nieodc4z2_nieodd4z2_nieodd4ź2_nieodd4ż2_nieods4z2_niepod3ł2_niepodmu1_niepod3r2_niepodra1_niepodrę1_niepod3w2_niepodwa1_niepo3do1_niepo3du1_niepoc4h2_niepoc4z2_niepod3h2_niepod3j2_niepod3l2_niepodsm2_niepor4z2_niepos4z2_nie1prze1_niero2z1t_nieroztr2_ni1esubi1_niewyc4h2_niewyc4z2_niewyd4z2_niewyd4ź2_niewyd4ż2_niewyr4z2_niewys4z2_o2t3c2h2ł_o3b4raso1_o3d4robin_o3d6zi2a1_o3d6zi2e1_o4b5łoc4z_o1d3i2zo1_ognio3tr2_ogólno3k2_osie1mse1_pełno3kr2_pierwo3w2_pięcio3ś2_pięćse2t3_płasko3w2_podre2p1c_po3d4rętw_po3d4ruzg_po3d4rze1_po3d4woi2_po3e2k2s3_podobi2a1_po1do1bo1_podoki2e1_podopi2e1_po4d5zakr_po4d5zast_po4d5zbi1_po4d5ziem_po1dzi2o1_po4d5ziom_po4st3rom_pod3a2l1p_pode3t1k2_podepc4h2_pode2r1ż2_podesc4h2_pona3c4z2_po1na3do1_pona3d4ź2_ponabr4z2_pona2d3c2_pona2d3ć2_pona2d3f2_pona2d3g2_pona2d3k2_pona2d3p2_pona2d3s2_pona2d3ś2_pona2d3t2_poro3z4u1_pó3ł4ec4z_pra3w2nu1_prze2d3m2_prze3d4um_prze3d4z2_prze3d4ź2_prze4d5zj_przedzwo1_prze4d5ż2_przec2h2r_przeci2w3_przeciwa2_przedago1_prze2d3b2_prze2d3c2_prze2d3ć2_prze4d3d2_prze2d3f2_prze2d3g2_prze2d3k2_prze2d3n2_prze2d3p2_prze2d3s2_prze2d3ś2_prze2d3t2_przedc4h2_przedc4z2_przedd4z2_przedd4ź2_przedd4ż2_prze2ł1k2_prze2m1k2_przepc4h2_pr4zer4z2_prze2r1ż2_przesc4h2_prze2t1k2_przy2m1k2_przypc4h2_pr4zyr4z2_przy2r1ż2_przysc4h2_przy2t1k2_ro3z4e3b2_ro3z4e3c2_ro3z4e3ć2_ro3z4e3d2_ro3z4e3f2_ro3z4e3g2_ro3z4e3h2_ro3z4e3k2_ro3z4e3l2_ro3z4e3ł2_ro3z4e3m2_ro3z4e3p2_ro3z4e3r2_ro3z4e3s2_ro3z4e3ś2_ro3z4e3t2_ro3z4e3w2_ro3z4e3z2_ro3z4e3ź2_ro3z4e3ż2_rozepc4h2_roze2r1ż2_rozesc4h2_samo3c4h2_samoro2z3_siede2m1s_siedmi2o1_ską2d5że1_stereo1o2_su3b4i2e1_supe3r4at_sze1ś2ci1_sześci2o1_sze1śćse1_tran3s4e1_tran3s4y1_trze2c4h3_tysią3c4z_we4s3pr4z_wie1luse1_wilczo3m2_wniebo3w2_wspó2ł1w2_wsze2c4h3_wy4cz3ha1_ze1te1me1_ze1te1se1_zimno3kr2_znie4d4ź3bi2n3o2ku1birmingha1blo2k1hauzbuk2sz3panbusine2s2sdeutsc2h2ldeutschla1du2sz3pasthu2x3le2y1kongre2s3mluftwa4f3fmi1e2r5zi1mon2t3realmurzasic4hpa2n3a2merpoli3u2re1połu3d2ni1powsze2d1npre2sz3pa1ro2k3roc4zsy2n3o2p1tsza2sz1ły1szyn2k1wasturboodr4ztygo3d2ni1_bynaj2m1n_bynajmni1_be9z8ami__gdzi1eni1_n8a9da8l__nigdzi2e1_nie2c2h1ż_nie1chże1_nie2c2h1b_ow9sze8m__pó9ł8ami__pó9ł8e8k__ską1diną1_podówcza1', - 11 : '_ciepło3kr2_de3z4a3bil_de3z4a3wu1_dziewię2ć3_elektro1o2_kilkuse2t3_kilkuseto2_kon3tr4o3l_kon3tr4o3w_krótko3tr2_mili3a2m1p_na3d4muc4h_na3d4ręc4z_na4d3o2b2ł_nadobo2j1c_na4j3e2k2s_na4j3e2ko1_na4j3e2m1f_nad5zwyc4z_nadśrodzi1_najdo2t1k2_najro3z4u1_niedobr4z2_niedo2m1k2_niedopc4h2_niedo2t1k2_niepo2d3m2_nie1podre1_niepo1dwo1_niepo3d4z2_niepo3d4ź2_niepodoc4h_niepo2d3b2_niepo2d3c2_niepo2d3ć2_niepo4d3d2_niepo2d3f2_niepo2d3g2_niepo2d3k2_niepo2d3n2_niepo2d3p2_niepo2d3s2_niepo2d3ś2_niepo2d3t2_niepodc4h2_niepodc4z2_niepodd4ź2_niepodd4ż2_niepods4z2_nieprze2d2_nieprze3b2_nieprze3c2_nieprze3ć2_nieprze3f2_nieprze3g2_nieprze3h2_nieprze3k2_nieprze3l2_nieprze3ł2_nieprze3m2_nieprze3n2_nieprze3p2_nieprze3r2_nieprze3s2_nieprze3ś2_nieprze3t2_nieprze3w2_nieprze3z2_nieprze3ź2_nieprze3ż2_nieprzekl2_nieprzekr2_nieprzesm2_nieprzetr2_niero3z4u1_nieroze3r2_niero2z1ś2_niewybr4z2_niewy2t1k2_ob3o2str4z_osiemse2t3_pe1ze1tpe1_po3d4muc4h_po3d4r2wi1_po3d4ręc4z_po3d4roba1_po3d4robó1_po3d4roby1_po3d4roc4z_po3d4wor4z_podobo2j1c_po4d3o2bóz_po1do1cho1_po4d3o2d1m_po4d3o2k1n_po4d3o2ryw_podosi1ni1_po4d3obs4z_po4d3o4d3d_po4d3u2c4z_po4d3u2d4z_po4d3u2pa1_po4d3u2ral_podu2s2z1c_podzie1le1_po4d5z2w2r_poduszczy1_pod3śró2d5_ponad3c4h2_ponad3c4z2_ponad3d4ź2_prapra2w1n_prze3d4łuż_prze3d4ruk_prze3d4ryl_przedłuży1_przedosta1_prze4d5za1_prze4d5zim_prze4d5z1l_pr4zebr4z2_przeci1wi1_przedsi2ę1_przed3s4z2_pr4zegr4z2_pr4zygr4z2_retra2n2s3_ro4z5a2gi1_ro4z5e2mo1_ro4z5e4g3z_ro4z5e4n3t_siedmio3ś2_ste1re1oe2_su3b4o2t1n_supe2r5z2b_superodr4z_sześcio3ś2_sześćse2t3_światło3w2_tró3j4ec4z_trze2c2h1s_trze1chse1_tysią3c4a1_tysią3c4e1_tysią4c5zł_we4s3tc4h2_wieluse2t3_współo2b3w_wszec2h2w2_zady2s3po1_zde3z4awu1_zdy2s3kred_zdy2s3kwal_ze4t3e2m1pbe2k1he2n1dbi2z3ne2s3mbusine2ss3mfi2s3ha2r1mfos2f1a2zotga1do3p2ta1gran2d1ilo1karl2s1kronna4ł3ko2w1soch3mistr4zro2e3nt2genro2s3to3c2ksko2r5zoner_n8i9gdzie__nie8ch9że__nie8ch9by__przyna2j1m_tró9j8ami__tró9j8e8k__podó4w3c4z', - 12 : '_cztere2c4h3_dziewię2ć1s_e2s1e2s1ma1_e1le1ktroe2_na3d4repc4z_na3d4re2p1t_na3d4wo2r1n_na4d3o2brot_na4d3o2dr4z_na4d3o2kien_na4d3olbr4z_na4d5rzec4z_niepo3d4łu1_niepo3d4rap_niepo3d4raż_niepo3d4waj_niepo3d4woj_nieprzed3ł2_nieprzedłu1_nieprzedmu1_nieprzed3r2_nieprzedra1_nieprzedru1_nieprzedry1_nieprzed3u2_nieprze3dy1_nie1prze1e2_nieprzec4h2_nieprzec4z2_nieprzed3h2_nieprzed3j2_nieprzed3l2_nieprzed3w2_nieprze2p1c_nieprzes4z2_nie1ro3z4e1_nierozbr4z2_po3d4repc4z_po3d4re2p1t_po3d4ro1bo1_po3d4wó2j1n_po4d3e4k2s3_po4d3o2biad_po4d3o2braz_po4d3o2choc_po4d3o2kien_po4d3o2kres_po4d3o2kręg_podosini2a1_po4d3olbr4z_po4d3u2sta1_półprzy3m2k_predy2s3po1_prze3d4o3br_prze3d4o3st_przedra1ma1_prze3e2k2s3_prze4d5z1g2_prze4d5zwoj_pr4zechr4z2_przeci4w3w2_przed3a2gon_przed3a2k1c_przed3a2l1p_przed3e2g1z_prze1de1me1_przed3e2mer_pr4zedgr4z2_sie1de1mse1_siedemse2t3_supe3r4i2o1_supe4r5a2tr_tran3s4i2e1_tran4s5e2u1_trzechse2t3_wewną2tr4z3birmin2g1hamcal2d1we4l3lin4nsbru2c1kkarl2s1ruhe1kir2chho4f3flu2ft3waffe1mi2s4z1mas4zpo3d4niepr4zpo4rt3la2n1dpowsze3d2ni1sze2z1lo2n1gtu1rboodrzu1we2e2k1e2n1d_bynajmni2e1_be9z8a8c8h__in8a9cze8j__pó9ł8a8c8h__przynaj2m1n_przynajmni1_podó3w2czas', - 13 : '_autotra2n2s3_cztere2c2h1s_dzi1esi1ęci1_dziesięci2o1_dzi1ewi1ęci1_dziewięci2o1_dzie1więćse1_e2m3e2s5ze2t_kon4tr5a2gi1_kon4tr5a2se1_kon4tr5a2sy1_kon4tr5a2ta1_kon4tr5a2d1m_kon4tr5a2k1c_kon4tr5a2l1t_kon4tr5a2r1g_na4d3o2bowi1_nadśrodzi2e1_nadśrod5ziem_niepodre2p1c_nieprze2d3m2_nieprze3d4um_nieprze3d4z2_nieprze3d4ź2_ni1eprzedzi1_nieprze4d5zj_nieprzedzwo1_nieprze4d5ż2_nieprze2d3c2_nieprze2d3ć2_nieprze4d3d2_nieprze2d3f2_nieprze2d3g2_ni1eprzed3i2_nieprze2d3k2_nieprze2d3n2_nieprze2d3p2_nieprze2d3s2_nieprze2d3ś2_nieprze2d3t2_nieprzedc4h2_nieprzedc4z2_nieprzedd4z2_nieprzedd4ź2_nieprzedd4ż2_nieprze2ł1k2_nieprzepc4h2_niepr4zer4z2_nieprze2r1ż2_nieprzesc4h2_nieprze2t1k2_pe1ze1tpe1e2_peze2t1pee2r_po4d3o2str4z_po4d3u2szc4z_po4d5rę2cz1n_podzi1eleni1_po5d4uszczyn_prapra3w2nu1_prze3d4muc4h_prze3d4o3zo1_prze3d4ramat_pr4ze3d4r4z2_prze4d5łużyc_prze4d5z2w2r_przed3się3w2_przedy2s3ku1_przetra2n2s3_ro4z5a2ni2e1_su1perodrzu1_zdy2s3ko2n1t_ze4t3e2m1e2s_ze4t3e2s1e2l_zmartwy2c4h3bro2a2d3wa2y1szto2k1ho2l1mturboo2d3rzut_gdzi2e1ni2e1_skąd9i8ną8d__tró9j8a8c8h_', - 14 : '_czte1re1chse1_czterechse2t3_dziesięcio3ś2_dziewięcio3ś2_dziewięćse2t3_na4d3o2bojc4z_niepo3d4muc4h_niepo3d4ręc4z_niepo1do1cho1_nieprze3d4łuż_nieprze3d4ruk_nieprze3d4ryl_nieprzedłuży1_nieprze4d5zim_nieprze4d5z1l_nieprzed3s4z2_niepr4zegr4z2_po4d3o2bojc4z_po4d3o2piec4z_po4d3o2siniak_po4d5zielenic_po4d5zielenić_po4d5zielenil_po4d5zielenił_po4d5zielenim_po4d5zielenis_prze4d5o4stat_supero2d1rzut_zmartwyc2h2w2mu2r7zasic2h3lpo4rt2s3mo2uth_gd4zieniegd4z_przynajmni2e1', - 15 : '_niepo3d4repc4z_niepo3d4re2p1t_niepo4d3o2choc_niepr4ze3br4z2_nieprzedra1ma1_nieprze3e2k2s3_nieprze4d5z2a1_nieprze4d5z1g2_nieprze4d5zwoj_ni2e1su3b4i2e1_po4d5zielenien_prze1ci3w4i2e1deut4sch3la2n1d_2g1dzienie2g1d', - 16 : '_niepo4d3o2str4z_nieprze3d4muc4h_nieprze3d4ramat_niepr4ze3d4r4z2_nieprze4d5łużyc_nieprze4d5z2w2r_po4d5zieleni2ą1_po4d5zieleni2ę1_po4d5zieleni2o1_by9naj9m8nie8j__gdzi1eni1egdzi1', - 17 : '_podzi2e1le1ni2e1_gdzienie9g8dzie__po8d9ó8w9cza8s_', - 18 : '_przy9naj9m8nie8j_', - 20 : '_gdzi2e1ni2e1gdzi2e1' + 2 : "a1ą1e1ę1i1o1ó1u1y1", + 3 : "_a1_b8_c8_ć8_d8_e1_f8_g8_h8_i1_j8_k8_l8_ł8_m8_n8_ń8_o1_p8_r8_s8_ś8_t8_u1_v8_w8_x8_z8_ź8_ż8ś1cc4hc4zd4zd4źd4żr4zs4z8b_8c_8ć_8d_8f_8g_8h_8j_8k_8l_8ł_8m_8n_8ń_8p_8r_8s_8ś_8t_8v_8w_8x_8z_8ź_8ż_ae2ai2ao2be1bi1bo1bu1ca1cu1de1du1ea2ei2eo2fi1fo1ga1go1hi1hu1ja1ka1ki1ko1le1lu1ly1ma1mi1mo1mu1na1oa2oe2oi2ou2pa1po1ro1se1so1sy1to1tu1ty1ua2ue2ui2uo2vo1we1ya2ye2yi2yo2yu2ze1", + 4 : "_ae2_be1_bh8_bj8_bl8_bł8_br8_bv8_bw8_bx8_ca1_ci1_cj8_cł8_cr8_cv8_cw8_cx8_ćh8_ćj8_ćl8_ćł8_ćr8_ćv8_ćw8_ćx8_da1_de1_dh8_dj8_dl8_dł8_do1_dr8_dv8_dw8_dx8_dy1_fb8_fć8_fd8_fg8_fh8_fj8_fl8_fł8_fń8_fp8_fr8_fs8_fś8_ft8_fv8_fw8_fx8_fz8_fź8_fż8_ge1_gh8_gj8_gl8_gł8_gn8_go1_gr8_gv8_gw8_gx8_hi1_hv8_hx8_ja1_jv8_jx8_kh8_ki1_kj8_kl8_kł8_ko1_kr8_kv8_kw8_kx8_lu1_lv8_lx8_łv8_łx8_mi1_mo1_mv8_mx8_na1_ne1_ni1_nv8_nx8_ńv8_ńx8_ot2_oa2_oc2_oć2_of2_og2_oh2_ok2_om2_op2_os2_oś2_ow2_oz2_oź2_oż2_pe1_ph8_pi1_pj8_pl8_pł8_po1_pó1_pr8_pv8_pw8_px8_re1_ro1_rv8_rx8_sa1_sc8_sć8_sh8_si1_sj8_sk8_sl8_sł8_sm8_sn8_sń8_so1_sp8_sr8_sś8_st8_su1_sv8_sw8_sx8_ść8_śh8_śj8_śl8_śł8_śm8_śn8_śń8_śr8_śv8_św8_śx8_ta1_te1_th8_tj8_tl8_tł8_to1_tr8_tv8_tw8_tx8_ty1_uć2_uś2_vb8_vc8_vć8_vd8_vf8_vg8_vh8_vj8_vk8_vl8_vł8_vm8_vn8_vń8_vp8_vr8_vs8_vś8_vt8_vv8_vw8_vx8_vz8_vź8_vż8_we1_wh8_wi1_wo1_wv8_wx8_wy1_xb8_xc8_xć8_xd8_xf8_xg8_xh8_xj8_xk8_xl8_xł8_xm8_xn8_xń8_xp8_xr8_xs8_xś8_xt8_xv8_xw8_xx8_xz8_xź8_xż8_za1_zb8_ze1_zg8_zh8_zi1_zj8_zl8_zł8_zm8_zn8_zń8_zo1_zr8_zv8_zw8_zx8_zź8_zż8_źh8_źj8_źł8_źń8_źr8_źv8_źx8_żh8_żv8_żx82b1c2b1ć2b1d2b1f2b1g2b1k2b1m2b1n2b1ń2b1p2b1s2b1ś2b1t2b1z2b1ź2b1ż2c1b2c1ć2c1d2c1f2c1g2c1k2c1l2c1m2c1n2c1ń2c1p2c1s2c1ś2c1t2c1ź2c1ż2ć1b2ć1c2ć1d2ć1f2ć1g2ć1k2ć1m2ć1n2ć1ń2ć1p2ć1s2ć1ś2ć1t2ć1z2ć1ź2ć1ż2d1b2d1c2d1ć2d1f2d1g2d1k2d1m2d1n2d1ń2d1p2d1s2d1ś2d1t2f1c2f1k2f1m2f1n2g1b2g1c2g1ć2g1d2g1f2g1k2g1m2g1ń2g1p2g1s2g1ś2g1t2g1z2g1ź2g1ż2h1b2h1c2h1ć2h1d2h1f2h1g2h1j2h1k2h1l2h1ł2h1m2h1n2h1ń2h1p2h1r2h1s2h1ś2h1t2h1w2h1z2h1ź2h1ż2j1b2j1c2j1ć2j1d2j1f2j1g2j1h2j1k2j1l2j1ł2j1m2j1n2j1ń2j1p2j1r2j1s2j1ś2j1t2j1w2j1z2j1ź2j1ż2k1b2k1c2k1ć2k1d2k1f2k1g2k1m2k1n2k1ń2k1p2k1s2k1ś2k1t2k1z2k1ź2k1ż2l1b2l1c2l1ć2l1d2l1f2l1g2l1h2l1j2l1k2l1ł2l1m2l1n2l1ń2l1p2l1r2l1s2l1ś2l1t2l1w2l1z2l1ź2l1ż2ł1b2ł1c2ł1ć2ł1d2ł1f2ł1g2ł1h2ł1j2ł1k2ł1l2ł1m2ł1n2ł1ń2ł1p2ł1r2ł1s2ł1ś2ł1t2ł1w2ł1z2ł1ź2ł1ż2m1b2m1c2m1ć2m1d2m1f2m1g2m1h2m1j2m1k2m1l2m1ł2m1n2m1ń2m1p2m1r2m1s2m1ś2m1t2m1w2m1z2m1ź2m1ż2n1b2n1c2n1ć2n1d2n1f2n1g2n1h2n1j2n1k2n1l2n1ł2n1m2n1ń2n1p2n1r2n1s2n1ś2n1t2n1w2n1z2n1ź2n1ż2ń1b2ń1c2ń1ć2ń1d2ń1f2ń1g2ń1h2ń1j2ń1k2ń1l2ń1ł2ń1m2ń1n2ń1ń2ń1p2ń1r2ń1s2ń1ś2ń1t2ń1w2ń1z2ń1ź2ń1ż2p1b2p1c2p1ć2p1d2p1f2p1g2p1k2p1m2p1n2p1ń2p1s2p1ś2p1t2p1z2p1ź2p1ż2r1b2r1c2r1ć2r1d2r1f2r1g2r1h2r1j2r1k2r1l2r1ł2r1m2r1n2r1ń2r1p2r1s2r1ś2r1t2r1w2r1ź2r1ż2s1b2s1d2s1f2s1g2s1s2s1ź2s1ż2ś1b2ś1d2ś1f2ś1g2ś1k2ś1p2ś1s2ś1ś2ś1t2ś1z2ś1ź2ś1ż2t1b2t1c2t1ć2t1d2t1f2t1g2t1k2t1m2t1n2t1ń2t1p2t1s2t1ś2t1z2t1ź2t1żtr4z2w1b2w1c2w1ć2w1d2w1f2w1g2w1j2w1k2w1l2w1ł2w1m2w1n2w1ń2w1p2w1r2w1s2w1ś2w1t2w1z2w1ź2w1ż2z1c2z1ć2z1d2z1f2z1k2z1p2z1s2z1ś2z1t2ź1b2ź1c2ź1ć2ź1d2ź1f2ź1g2ź1k2ź1l2ź1m2ź1n2ź1p2ź1s2ź1ś2ź1t2ź1w2ź1z2ź1ż2ż1b2ż1c2ż1ć2ż1d2ż1f2ż1g2ż1j2ż1k2ż1l2ż1ł2ż1m2ż1n2ż1ń2ż1p2ż1r2ż1s2ż1ś2ż1t2ż1w2ż1z2ż1źdni1mne1pne1wc4zwła1wło14b3b4c3c4ć3ć4d3d4f3f4g3g4h3h4j3j4k3k4l3l4ł3ł4m3m4n3n4p3p4r3r4t3t4w3w4z3z4ź3ź4ż3żbr4zdr4zpr4zrs4zsc4ha2u1a2y1a1a2blo1bro1chu1dże1er4ze2u1e2y1e1e2gra1gro1i2a1i2ą1i2e1i2ę1i2i1i2o1i2ó1i2u1i2y1o2y1oc4ho1o2pre1roe2sko1sza1sze1szy1u2y1u1u2_by1", + 5 : "_a2d3_a2u1_c4h8_c4z8_cza1_ćwi1_dłu1_dro1_dwó1_d4z8_dzi1_d4ź8_d4ż8_ego1_gru1_i2n3_izo1_kro1_kró1_na2j_o2b2_o2d2_ob3r_oa3z_obu1_oda1_odu1_ogó1_oka1_okr2_ole1_osi1_pła1_poe2_pra1_pre1_r4z8_ską1_skl8_skr8_spo1_spó1_ste1_s4z8_sze1_ś1c8_śró1_świ1_toa3_tra1_tró1_u3b2_u3c2_u3d2_u3f2_u3g2_u3h2_u3k2_u3l2_u3ł2_u3m2_u3n2_u3p2_u3r2_u3s2_u3t2_u3w2_u3z2_u3ź2_u3ż2_ube1_ubr2_ukr2_upo1_uro1_utr2_uze1_wni1_ws4z_wyo2_wye2_wyi2_zao2_zai2_zde1_zdy1_zło1_zma1_zni1_zro12cz1b2cz1g2cz1l2cz1m2cz1n2cz1ń2cz1ź2cz1żd2ł1s2dz1b2dz1g2dz1l2dz1m2dz1n2dz1ń2dz1ź2dz1ż2dź1ń2rz1b2rz1g2rz1h2rz1j2rz1l2rz1ł2rz1m2rz1n2rz1ń2rz1r2rz1w2rz1ź2rz1żs2t1s2sz1l2sz1m2sz1n2sz1wwcza18b8b_8b8c_8b8ć_8b8d_8b8f_8b8g_8b8h_8b8j_8b8k_8b8l_8b8ł_8b8m_8b8n_8b8ń_8b8p_8b8r_8b8s_8b8ś_8b8t_8b8v_8b8w_8b8x_8b8z_8b8ź_8b8ż_8c8b_8c8c_8c8ć_8c8d_8c8f_8c8g_8c8h_c2h2łc2h2rchr4zc2h2w8c8j_8c8k_8c8l_8c8ł_8c8m_8c8n_8c8ń_8c8p_8c8r_8c8s_8c8ś_8c8t_8c8v_8c8w_8c8x_8c8z_8c8ź_8c8ż_8ć8b_8ć8c_8ć8ć_8ć8d_8ć8f_8ć8g_8ć8h_8ć8j_8ć8k_8ć8l_8ć8ł_8ć8m_8ć8n_8ć8ń_8ć8p_8ć8r_8ć8s_8ć8ś_8ć8t_8ć8v_8ć8w_8ć8x_8ć8z_8ć8ź_8ć8ż_8d8b_8d8c_8d8ć_8d8d_8d8f_8d8g_8d8h_8d8j_8d8k_8d8l_8d8ł_8d8m_8d8n_8d8ń_8d8p_8d8r_8d8s_8d8ś_8d8t_8d8v_8d8w_8d8x_8d8z_8d8ź_8d8ż_8f8b_8f8c_8f8ć_8f8d_8f8f_8f8g_8f8h_8f8j_8f8k_8f8l_8f8ł_8f8m_8f8n_8f8ń_8f8p_8f8r_8f8s_8f8ś_8f8t_8f8v_8f8w_8f8x_8f8z_8f8ź_8f8ż_8g8b_8g8c_8g8ć_8g8d_8g8f_8g8g_8g8h_8g8j_8g8k_8g8l_8g8ł_8g8m_8g8n_8g8ń_8g8p_8g8r_8g8s_8g8ś_8g8t_8g8v_8g8w_8g8x_8g8z_8g8ź_8g8ż_8h8b_8h8c_8h8ć_8h8d_8h8f_8h8g_8h8h_8h8j_8h8k_8h8l_8h8ł_8h8m_8h8n_8h8ń_8h8p_8h8r_8h8s_8h8ś_8h8t_8h8v_8h8w_8h8x_8h8z_8h8ź_8h8ż_8j8b_8j8c_8j8ć_8j8d_8j8f_8j8g_8j8h_8j8j_8j8k_8j8l_8j8ł_8j8m_8j8n_8j8ń_8j8p_8j8r_8j8s_8j8ś_8j8t_8j8v_8j8w_8j8x_8j8z_8j8ź_8j8ż_8k8b_8k8c_8k8ć_8k8d_8k8f_8k8g_8k8h_8k8j_8k8k_8k8l_8k8ł_8k8m_8k8n_8k8ń_8k8p_8k8r_8k8s_8k8ś_8k8t_8k8v_8k8w_8k8x_8k8z_8k8ź_8k8ż_8l8b_8l8c_8l8ć_8l8d_8l8f_8l8g_8l8h_8l8j_8l8k_8l8l_8l8ł_8l8m_8l8n_8l8ń_8l8p_8l8r_8l8s_8l8ś_8l8t_8l8v_8l8w_8l8x_8l8z_8l8ź_8l8ż_8ł8b_8ł8c_8ł8ć_8ł8d_8ł8f_8ł8g_8ł8h_8ł8j_8ł8k_8ł8l_8ł8ł_8ł8m_8ł8n_8ł8ń_8ł8p_8ł8r_8ł8s_8ł8ś_8ł8t_8ł8v_8ł8w_8ł8x_8ł8z_8ł8ź_8ł8ż_8m8b_8m8c_8m8ć_8m8d_8m8f_8m8g_8m8h_8m8j_8m8k_8m8l_8m8ł_8m8m_8m8n_8m8ń_8m8p_8m8r_8m8s_8m8ś_8m8t_8m8v_8m8w_8m8x_8m8z_8m8ź_8m8ż_8n8b_8n8c_8n8ć_8n8d_8n8f_8n8g_8n8h_8n8j_8n8k_8n8l_8n8ł_8n8m_8n8n_8n8ń_8n8p_8n8r_8n8s_8n8ś_8n8t_8n8v_8n8w_8n8x_8n8z_8n8ź_8n8ż_8ń8b_8ń8c_8ń8ć_8ń8d_8ń8f_8ń8g_8ń8h_8ń8j_8ń8k_8ń8l_8ń8ł_8ń8m_8ń8n_8ń8ń_8ń8p_8ń8r_8ń8s_8ń8ś_8ń8t_8ń8v_8ń8w_8ń8x_8ń8z_8ń8ź_8ń8ż_8p8b_8p8c_8p8ć_8p8d_8p8f_8p8g_8p8h_8p8j_8p8k_8p8l_8p8ł_8p8m_8p8n_8p8ń_8p8p_8p8r_8p8s_8p8ś_8p8t_8p8v_8p8w_8p8x_8p8z_8p8ź_8p8ż_8r8b_8r8c_8r8ć_8r8d_8r8f_8r8g_8r8h_8r8j_8r8k_8r8l_8r8ł_8r8m_8r8n_8r8ń_8r8p_8r8r_8r8s_8r8ś_8r8t_8r8v_8r8w_8r8x_8r8z_8r8ź_8r8ż_8s8b_8s8c_8s8ć_8s8d_8s8f_8s8g_8s8h_8s8j_8s8k_skr4z8s8l_8s8ł_8s8m_8s8n_8s8ń_8s8p_8s8r_8s8s_8s8ś_8s8t_str4z8s8v_8s8w_8s8x_8s8z_szc4z8s8ź_8s8ż_8ś8b_8ś8c_8ś8ć_8ś8d_8ś8f_8ś8g_8ś8h_8ś8j_8ś8k_8ś8l_8ś8ł_8ś8m_8ś8n_8ś8ń_8ś8p_8ś8r_8ś8s_8ś8ś_8ś8t_8ś8v_8ś8w_8ś8x_8ś8z_8ś8ź_8ś8ż_8t8b_8t8c_8t8ć_8t8d_8t8f_8t8g_8t8h_8t8j_8t8k_8t8l_8t8ł_8t8m_8t8n_8t8ń_8t8p_8t8r_8t8s_8t8ś_8t8t_8t8v_8t8w_8t8x_8t8z_8t8ź_8t8ż_8v8b_8v8c_8v8ć_8v8d_8v8f_8v8g_8v8h_8v8j_8v8k_8v8l_8v8ł_8v8m_8v8n_8v8ń_8v8p_8v8r_8v8s_8v8ś_8v8t_8v8v_8v8w_8v8x_8v8z_8v8ź_8v8ż_8w8b_8w8c_8w8ć_8w8d_8w8f_8w8g_8w8h_8w8j_8w8k_8w8l_8w8ł_8w8m_8w8n_8w8ń_8w8p_8w8r_8w8s_8w8ś_8w8t_8w8v_8w8w_8w8x_8w8z_8w8ź_8w8ż_8x8b_8x8c_8x8ć_8x8d_8x8f_8x8g_8x8h_8x8j_8x8k_8x8l_8x8ł_8x8m_8x8n_8x8ń_8x8p_8x8r_8x8s_8x8ś_8x8t_8x8v_8x8w_8x8x_8x8z_8x8ź_8x8ż_8z8b_8z8c_8z8ć_8z8d_zdr4z8z8f_8z8g_8z8h_8z8j_8z8k_8z8l_8z8ł_8z8m_8z8n_8z8ń_8z8p_8z8r_8z8s_8z8ś_8z8t_8z8v_8z8w_8z8x_8z8z_8z8ź_8z8ż_8ź8b_8ź8c_8ź8ć_8ź8d_8ź8f_8ź8g_8ź8h_8ź8j_8ź8k_8ź8l_8ź8ł_8ź8m_8ź8n_8ź8ń_8ź8p_8ź8r_8ź8s_8ź8ś_8ź8t_8ź8v_8ź8w_8ź8x_8ź8z_8ź8ź_8ź8ż_8ż8b_8ż8c_8ż8ć_8ż8d_8ż8f_8ż8g_8ż8h_8ż8j_8ż8k_8ż8l_8ż8ł_8ż8m_8ż8n_8ż8ń_8ż8p_8ż8r_8ż8s_8ż8ś_8ż8t_8ż8v_8ż8w_8ż8x_8ż8z_8ż8ź_8ż8ż_be1e2bino1bis4zb2r2dbroa2bus4zbusi1c2h2jc2h2lcur4zde2u1dus4zd2ż2jd2ż2ld2ż2łd2ż2rd2ż2werza1fis4zfor4zgado1his4zhuc4zi4n3ni2n1sj2t1łj2t1rled1wly2o2mar4zmis4zmi2e1moza1mur4zo4f3fó2w1cpoli1połu1p2r1cprc4hs2m2rsowi1syno1szto1to2y1tygo1we1e2ź2d4ź_gd4z_ina1", + 6 : "_a2b1s_ad4e1_ad4i1_ad4o1_ad4u1_ad4y1_ad5op_ad5or_a2n1t_anty1_a2r1c_arcy1_au3g2_au3k2_au3t2_auto1_4b3b8_2b1c8_2b1ć8_2b1d8_be2z3_beza1_bezi1_bezm2_bezo2_bezw2_2b1f8_2b1g8_2b1k8_2b1m8_2b1n8_2b1ń8_2b1p8_br4z8_2b1s8_2b1ś8_2b1t8_2b1z8_2b1ź8_2b1ż8_cało1_2c1b8_4c3c8_2c1ć8_2c1d8_2c1f8_2c1g8_c2h2r_ci2e1_2c1k8_2c1l8_2c1m8_2c1n8_2c1ń8_2c1p8_2c1s8_2c1ś8_2c1t8_czte1_czwó1_2c1ź8_2c1ż8_2ć1b8_2ć1c8_4ć3ć8_2ć1d8_2ć1f8_2ć1g8_2ć1k8_2ć1m8_2ć1n8_2ć1ń8_2ć1p8_2ć1s8_2ć1ś8_2ć1t8_2ć1z8_2ć1ź8_2ć1ż8_dale1_2d1b8_2d1c8_2d1ć8_4d3d8_de2z3_deza2_dezo2_2d1f8_2d1g8_2d1k8_2d1m8_2d1n8_2d1ń8_do3b2_do3c2_do3ć2_do3d2_do3f2_do3g2_do3h2_do3k2_do3l2_do3ł2_do3m2_do3p2_do3r2_do3s2_do3ś2_do3t2_do3w2_do3z2_do3ź2_do3ż2_dobr2_dosm2_dotr2_2d1p8_dr4z8_2d1s8_2d1ś8_2d1t8_dy2s3_dy2z3_dyzu2_e1me1_e1se1_e2s1t_egoa2_egoi2_egou2_e1le1_2f1c8_4f3f8_2f1k8_2f1m8_2f1n8_2g1b8_2g1c8_2g1ć8_2g1d8_ge2o3_2g1f8_4g3g8_2g1k8_2g1m8_2g1ń8_go2u3_2g1p8_gr4z8_2g1s8_2g1ś8_2g1t8_2g1z8_2g1ź8_2g1ż8_2h1b8_2h1c8_2h1ć8_2h1d8_2h1f8_2h1g8_4h3h8_hipe1_2h1j8_2h1k8_2h1l8_2h1ł8_2h1m8_2h1n8_2h1ń8_2h1p8_2h1r8_2h1s8_2h1ś8_2h1t8_2h1w8_2h1z8_2h1ź8_2h1ż8_i2s3l_i1ni1_i2n1f_izoa2_izoe2_izou2_2j1b8_2j1c8_2j1ć8_2j1d8_2j1f8_2j1g8_2j1h8_4j3j8_2j1k8_2j1l8_2j1ł8_2j1m8_2j1n8_2j1ń8_2j1p8_2j1r8_2j1s8_2j1ś8_2j1t8_2j1w8_2j1z8_2j1ź8_2j1ż8_2k1b8_2k1c8_2k1ć8_2k1d8_2k1f8_2k1g8_4k3k8_2k1m8_2k1n8_2k1ń8_2k1p8_kr4z8_2k1s8_2k1ś8_2k1t8_2k1z8_2k1ź8_2k1ż8_2l1b8_2l1c8_2l1ć8_2l1d8_2l1f8_2l1g8_2l1h8_2l1j8_2l1k8_4l3l8_2l1ł8_2l1m8_2l1n8_2l1ń8_2l1p8_2l1r8_2l1s8_2l1ś8_2l1t8_ludo1_2l1w8_2l1z8_2l1ź8_2l1ż8_2ł1b8_2ł1c8_2ł1ć8_2ł1d8_2ł1f8_2ł1g8_2ł1h8_2ł1j8_2ł1k8_2ł1l8_4ł3ł8_2ł1m8_2ł1n8_2ł1ń8_2ł1p8_2ł1r8_2ł1s8_2ł1ś8_2ł1t8_2ł1w8_2ł1z8_2ł1ź8_2ł1ż8_2m1b8_2m1c8_2m1ć8_2m1d8_2m1f8_2m1g8_2m1h8_2m1j8_2m1k8_2m1l8_2m1ł8_4m3m8_2m1n8_2m1ń8_2m1p8_2m1r8_2m1s8_2m1ś8_2m1t8_2m1w8_2m1z8_2m1ź8_2m1ż8_na2d2_na3b2_na3c2_na3ć2_na3f2_na3g2_na3h2_na3k2_na3l2_na3ł2_na3m2_na3p2_na3r2_na3s2_na3ś2_na3t2_na3u2_na3w2_na3z2_na3ź2_na3ż2_nakr2_napo1_naro1_nasm2_nazw2_2n1b8_2n1c8_2n1ć8_2n1d8_ne2o3_2n1f8_2n1g8_2n1h8_ni2e1_nieo2_2n1j8_2n1k8_2n1l8_2n1ł8_2n1m8_4n3n8_2n1ń8_2n1p8_2n1r8_2n1s8_2n1ś8_2n1t8_2n1w8_2n1z8_2n1ź8_2n1ż8_2ń1b8_2ń1c8_2ń1ć8_2ń1d8_2ń1f8_2ń1g8_2ń1h8_2ń1j8_2ń1k8_2ń1l8_2ń1ł8_2ń1m8_2ń1n8_2ń1ń8_2ń1p8_2ń1r8_2ń1s8_2ń1ś8_2ń1t8_2ń1w8_2ń1z8_2ń1ź8_2ń1ż8_o2t1c_otc4h_ob3l2_oblu1_ob3ł2_obra1_obry1_o3be1_o3bi1_od3i2_od3r2_odra1_odrę1_odru1_od5z2_odzi1_o3de1_o2l1ś_ob3h2_ob3j2_o1bo1_ob3w2_oc4h2_oc4z2_od3h2_od3j2_od3l2_o1do1_od3w2_od5ż2_odbe1_od4ź2_ogni1_o2p1c_o2r1t_or4z2_os4z2_ośmi1_2p1b8_2p1c8_pc4h8_2p1ć8_2p1d8_pe2r3_pe1e2_2p1f8_2p1g8_pi2e1_pi2ę1_pi2o1_2p1k8_2p1m8_2p1n8_2p1ń8_po2d2_po3b2_po3c2_po3ć2_podi1_po3f2_po3g2_po3h2_po3k2_po3l2_po3ł2_po3m2_po3p2_po3r2_po3s2_po3ś2_po3t2_po3w2_po3z2_po3ź2_po3ż2_podó1_pobr2_pokl2_pokr2_pona1_poni1_posm2_potr2_poza1_pozw2_pó2ł3_półe1_póło2_4p3p8_pr4z8_prze1_przy1_2p1s8_2p1ś8_2p1t8_2p1z8_2p1ź8_2p1ż8_2r1b8_2r1c8_2r1ć8_2r1d8_2r1f8_2r1g8_2r1h8_2r1j8_2r1k8_2r1l8_2r1ł8_2r1m8_2r1n8_2r1ń8_ro2z3_rozi2_rozm2_rozw2_2r1p8_4r3r8_2r1s8_2r1ś8_2r1t8_2r1w8_2r1ź8_2r1ż8_samo1_2s1b8_sc4h8_2s1d8_2s1f8_2s1g8_si2e1_2s1s8_su2b3_subi1_subo1_supe1_2s1ź8_2s1ż8_2ś1b8_2ś1d8_2ś1f8_2ś1g8_2ś1k8_2ś1p8_2ś1s8_2ś1ś8_2ś1t8_2ś1z8_2ś1ź8_2ś1ż8_ta2o3_tar4z_2t1b8_2t1c8_tc4h8_2t1ć8_2t1d8_te2o3_2t1f8_2t1g8_2t1k8_2t1m8_2t1n8_2t1ń8_2t1p8_tr4z8_trze1_2t1s8_2t1ś8_4t3t8_tysi1_2t1z8_2t1ź8_2t1ż8_u4d3k_u4f3n_ukle1_u4l3s_u4l3t_u2m1b_u4n3c_u4n3d_u4p3p_u4r3s_uc4h2_uc4z2_ud4z2_ud4ź2_ud4ż2_u2p1c_ur4z2_us4z2_2w1b8_2w1c8_2w1ć8_2w1d8_we3b2_we3c2_we3ć2_we3d2_we3f2_we3g2_we3h2_we3k2_we3l2_we3ł2_we3m2_we3n2_we3p2_we3r2_we3s2_we3ś2_we3t2_we3w2_we3z2_we3ż2_2w1f8_2w1g8_wi2e1_2w1j8_2w1k8_2w1l8_2w1ł8_2w1m8_2w1n8_2w1ń8_2w1p8_2w1r8_2w1s8_wspó1_wsze1_2w1ś8_2w1t8_4w3w8_wy3b2_wy3c2_wy3ć2_wy3d2_wy3f2_wy3g2_wy3h2_wy3k2_wy3l2_wy3ł2_wy3m2_wy3p2_wy3r2_wy3s2_wy3ś2_wy3t2_wy3w2_wy3z2_wy3ź2_wy3ż2_wybr2_wydr2_wykl2_wykr2_wysm2_wytr2_2w1z8_2w1ź8_2w1ż8_za3b2_za3c2_za3ć2_za3d2_za3f2_za3g2_za3h2_za3k2_za3l2_za3ł2_za3m2_za3p2_za3r2_za3s2_za3ś2_za3t2_za3u2_za3w2_za3z2_za3ź2_za3ż2_zabr2_zado1_zadr2_zady1_zakl2_zakr2_zani1_zasm2_zatr2_2z1c8_2z1ć8_2z1d8_ze3b2_ze3c2_ze3ć2_ze3d2_ze3f2_ze3g2_ze3h2_ze3k2_ze3l2_ze3ł2_ze3m2_ze3p2_ze3r2_ze3s2_ze3ś2_ze3t2_ze3w2_ze3z2_ze3ź2_ze3ż2_zekl2_zesm4_2z1f8_2z1k8_zo2o3_2z1p8_2z1s8_2z1ś8_2z1t8_4z3z8_2ź1b8_2ź1c8_2ź1ć8_2ź1d8_2ź1f8_2ź1g8_2ź1k8_2ź1l8_2ź1m8_2ź1n8_2ź1p8_2ź1s8_2ź1ś8_2ź1t8_2ź1w8_2ź1z8_4ź3ź8_2ź1ż8_2ż1b8_2ż1c8_2ż1ć8_2ż1d8_2ż1f8_2ż1g8_2ż1j8_2ż1k8_2ż1l8_2ż1ł8_2ż1m8_2ż1n8_2ż1ń8_2ż1p8_2ż1r8_2ż1s8_2ż1ś8_2ż1t8_2ż1w8_2ż1z8_2ż1ź8_4ż3ż81ś2ci12b2ł1k2b2r1n2c2h1b2c2h1c2c2h1ć2c2h1d2c2h1f2c2h1g2c2h1k2c2h1m2c2h1n2c2h1ń2c2h1p2c2h1s2c2h1ś2c2h1t2c2h1z2c2h1ź2c2h1ż2c2z1c2c2z1ć2c2z1d2c2z1f2c2z1k2c2z1p2c2z1s2c2z1ś2c2z1t2c4z3z2d2ł1b2dłs4z2d2r1n2d2z1c2d2z1ć2d2z1d2d2z1f2d2z1k2d2z1p2d2z1s2d2z1ś2d2z1t2d4z3z2d2ź1b2d2ź1c2d2ź1ć2d2ź1d2d2ź1f2d2ź1g2d2ź1k2d2ź1m2d2ź1n2d2ź1p2d2ź1s2d2ź1ś2d2ź1t2d2ź1z2d4ź3ź2d2ź1ż2d2ż1b2d2ż1c2d2ż1ć2d2ż1d2d2ż1f2d2ż1g2d2ż1k2d2ż1m2d2ż1n2d2ż1ń2d2ż1p2d2ż1s2d2ż1ś2d2ż1t2d2ż1z2d2ż1ź2d4ż3ż2g2ł1b2k1s4z2k2ł1b2n2t1n2p1s4z2p2l1n2r2z1c2r2z1ć2r2z1d2r2z1f2r2z1k2r2z1p2r2z1s2r2z1ś2r2z1t2s2ł1b2s2n1k2s2t1k2s2t1n2sts4z2s2z1c2s2z1ć2s2z1f2s2z1k2s2z1p2s2z1s2s2z1ś2s2z1t2s4z3z2ś2ć1c2ś2l1m2ś2l1n2t2l1n2t2r1k2z2d1k2z2d1ndni2o13m2k2n3w2ład3w2łosbe2ethbizne1bi2r1mbu2k1sca2l1dchus1tcurzo1d2rz2wfisha1fo2k1sforza1fo2l1kfo2s1ffosfa1ga2d1ggadge1go2l1fhuxle1in2n1sin2s1bja4z3zka2r1lki2r1ckirc4hko2n1glu2k1smier4zmo2n1tmozai2murza1na2ł1knałko1na4r3vochmi1offse1pa1na1po2d1npodni1po2m1npo2r1tpo2w1spows4zprcha1pres4zskor4zsyste1sze4śćto1yo2tu2r1bturbo1vo2l1kze4p3p_byna1_gdzi1_o2w1s_ows4z_póła1", + 7 : "_a1d4a1_ae3ro1_aeroi2_aerou2_antye2_antyi2_antyo2_antyu2_arcye2_arcyi2_arcyo2_arcyu2_autoe2_autoi2_be1ze1_be2z1c_be4z3z_bezzw2_chr4z8_2c2z1t_ćwi2e1_de1ze1_długo1_do4k3t_do4l3n_do4ł3k_do4m3k_do4r3s_do4w3c_doc4h2_doc4z2_dod4z2_dod4ź2_dod4ż2_do2p1c_dor4z2_dos4z2_dwó2j3_dy3s4z_dzi2e1_e2k2s3_emes4z_e1goe2_ego1o2_eks4y1_grubo1_i3n4ic_i3n4o1_i3n4u1_infla1_ino3w2_i1zoi2_izo1o2_jadło1_ki2l1k_kilku1_ko1ło1_ko2n1t_kro2ć3_mi1li1_mo2ż1n_nad3i2_nad3ł2_nadłu1_nadmu1_nad3r2_nadre1_nadrę1_nadru1_nad3w2_nadwo1_na1da1_na3daj_na3dą1_na3de1_na3dę1_na3do1_na3dy1_nad4z2_na1ja1_na3ją1_na3je1_na3ję1_na4f3c_na4f3t_na4r3c_na4r3d_na4r3k_na4r3r_na4r3t_nac4h2_nac4z2_nad3h2_nad3j2_nad3l2_nad3u2_nad5ż2_nadtr2_naj3i2_naj3o2_najro1_naj3u2_najbe1_najdo1_najkr2_najsm2_najzw2_nar4z2_nas4z2_na2t1c_naz3m2_nie3b2_nie3c2_nie3ć2_nie3d2_nie3f2_nie3g2_nie3h2_nie3k2_nie3l2_nie3ł2_nie3m2_nie3p2_nie3r2_nie3s2_nie3ś2_nie3t2_nie3u2_nie3w2_nie3z2_nie3ź2_nie3ż2_niedo1_nieob2_nieoc2_nieoć2_nieod2_nieof2_nieog2_nieoh2_nieok2_nieol2_nieoł2_nieom2_nieop2_nieor2_nieos2_nieoś2_nieot2_nieow2_nieoz2_nieoź2_nieoż2_niepo1_niero1_niesu1_nietr2_nieuw2_niewy1_niezw2_o1bło1_o1bro1_o1dro1_od2r1w_odr4z2_odrze1_o3l2śn_obrze1_obrzę1_obrzu1_obrzy1_o2b3c2_o2b3ć2_o2b3d2_o2b3f2_o2b3g2_o2b3k2_o2b3m2_o2b3n2_o2b3p2_o2b3s2_o2b3ś2_o2b3t2_o2b3ź2_o2b3ż2_obc4h2_obc4z2_obd4z2_obd4ź2_obd4ż2_obe3b2_obe3c2_obe3ć2_obe3d2_obe3f2_obe3g2_obe3h2_obe3k2_obe3l2_obe3ł2_obe3m2_obe3p2_obe3r2_obe3s2_obe3ś2_obe3t2_obe3w2_obe3z2_obe3ź2_obe3ż2_obi3b2_obs4z2_oc2h2r_o2d3b2_o2d3c2_o2d3ć2_o4d3d2_o2d3f2_o2d3g2_o2d3k2_o2d3m2_o2d3n2_od3o2s_o2d3p2_o2d3s2_o2d3ś2_o2d3t2_odc4h2_odc4z2_odd4z2_odd4ź2_odd4ż2_ode3b2_ode3c2_ode3ć2_ode3d2_ode3f2_ode3g2_ode3h2_ode3k2_ode3l2_ode3ł2_ode3m2_ode3p2_ode3r2_ode3s2_ode3ś2_ode3t2_ode3w2_ode3z2_ode3ź2_ode3ż2_ods4z2_oka3m2_opc4h2_or2tę1_o2r2ż2_osi2e1_pe3c2k_pe2ł1n_pełno1_pe1pe1_pe1ze1_pię2ć3_pod3ł2_podmu1_podna1_pod3r2_podra1_podre1_podrę1_podró1_podru1_podry1_podr4z_pod3w2_podwa1_podwó1_po3da1_po3dą1_po3de1_po3dej_po3dę1_po3do1_po3du1_po3dy1_po3r1ż_poc4z2_podza1_podzi1_po4l3s_po4m3p_po4ń3c_po4r3c_po4r3f_po4r3n_po4r3t_poc4h2_pod3h2_pod3j2_pod3l2_pod5ż2_podsm2_po2p1c_po1po1_po1ro1_por4z2_pos4z2_poz4m2_półkr2_pó2ł1p_pra3s2_predy1_przyo2_retra1_ro1zo2_ro2z1p_roztr2_skąd4ż_so1bo1_spo2d2_spo3b2_spo3c2_spo3ć2_spo3f2_spo3g2_spo3h2_spo3k2_spo3l2_spo3ł2_spo3m2_spo3p2_spo3r2_spo3s2_spo3ś2_spo3t2_spo3w2_spo3z2_spo3ź2_spo3ż2_spó2ł3_sze2s3_sześ1c_śró2d5_śródr2_świ2a1_tró2j3_tróje1_u4m3br_ube2z3_ubezw2_u2m1k2_upc4h2_upo2d2_upo3b2_upo3c2_upo3ć2_upo3f2_upo3g2_upo3h2_upo3k2_upo3l2_upo3ł2_upo3m2_upo3p2_upo3r2_upo3s2_upo3ś2_upo3t2_upo3w2_upo3z2_upo3ź2_upo3ż2_uro2z3_u2r1ż2_usc4h2_u2t1k2_uze3w2_we4k3t_we4l3w_we4ł3n_we4n3d_we4n3t_we4r3b_we4r3d_we4r3n_we4r3s_we4r3t_wec4h2_wec4z2_wed4z2_wed4ź2_wed4ż2_we2p1c_wer4z2_wes4z2_we2w1n_wewną1_wielo1_wielu1_wi2l1c_wilc4z_wni2e1_wo1do1_wyc4z2_wy2ż1s_wyc4h2_wyd4z2_wyd4ź2_wyd4ż2_wy2p1c_wyr4z2_wys4z2_wy2t1c_za4k3t_za4l3g_za4l3k_za4l3t_za4m3k_za2r1c_zac4h2_zac4z2_zad4z2_zad4ź2_zad4ż2_zai2n3_zar4z2_zas4z2_zde2z3_zdeza1_ze4r3k_ze1te1_zetha1_zec4h2_zec4z2_zed4z2_zed4ź2_zed4ż2_ze2p1c_zer4z2_zes4z2_zi2m1n_zimno1_zło3w2_zni2e1_zro2z3_ź2d4ź82sz2l1n2t2rz1n3d2niow3m2nest3m2nezj3w2czas8b8r8z_8c8h8ł_8c8h8w_8c8z8t_8d8r8z_8k8s8t_8m8s8t_8p8r8z_8r8s8z_8r8z8ł_8s8c8h_8s8t8r_8s8t8w_sz2cz1b8s8z8k_8s8z8n_8s8z8t_8t8r8z_8z8d8r_be1khe1biszko1bi1rmi1blokha1bu2sz1mbusine1caldwe1deu2t1sduszpa1dże4z3bdże4z3me2r5zace3u2s4zgol2f3sgra2n1dgrandi1gro4t3rhu2cz1winn2s1binsbru1kar2l1skongre1luftwa1luk2s1fluksfe1mi2sz1mmiszma1montre1o2c2h1mó4w3c4zpaname1pa1sca1por2t1sportla1poli2e1poli2u1powsze1pr2chalroe2n1tro1kro1ro1sto1sowi3z2s4zas4zszezlo1szy2n1k_inac4z_ni2g1d_nigdy1_nigd4z_owsze1_skądi1_trója1", + 8 : "_a2b2s3t_ad5i2u1_a1eroa2_ae1roe2_aero1o2_a1ntya2_arcy3b2_arcy3k2_arcy3ł2_arcy3m2_a1rcya2_a1utoa2_auto1o2_au1tou2_be3z4an_be3z4ec_be3z4ik_bezc4h2_cało3k2_cało3ś2_cie2n1k_cienko1_ciepło1_cza2r1n_czarno1_2c2z1k8_cztero1_czwó2r3_daleko1_dezabi1_de3z4el_de3z4er_de3z4y1_dobr4z2_dogr4z2_dopc4h2_dopr4z2_do2r1ż2_dosc4h2_do2t1k2_dro1go1_dy3s4e1_dy3s4o1_dy3s4y1_dy3z4e1_e2s1ha1_ele2k1t_hipe2r3_hipera2_i4n5o2k_koło3w2_kontru2_kró2t1k_krótko1_ludo3w2_mili2a1_mo1żno1_na3d4ir_na2d3m2_na3dzi1_na3d4ź2_nadoki1_nadrze1_nabr4z2_na2d3b2_na2d3c2_na2d3ć2_na4d3d2_nade3t2_na2d3f2_na2d3g2_na2d3k2_na2d3n2_na2d3p2_na2d3s2_na2d3ś2_na2d3t2_na2dz1m_nadzmy1_nad5zo1_nad5zó1_nadzwy1_nadc4h2_nadc4z2_nadd4ź2_nade3b2_nade3c2_nade3ć2_nade3d2_nade3f2_nade3g2_nade3h2_nade3k2_nade3l2_nade3ł2_nade3m2_nade3p2_nade3r2_nade3s2_nade3ś2_nade3w2_nade3z2_nade3ź2_nade3ż2_nads4z2_nadśro1_nagr4z2_na2j3b2_na2j3c2_na2j3ć2_na2j3d2_na2j3f2_na2j3g2_na2j3h2_na2j3k2_na2j3l2_na2j3ł2_na2j3m2_na2j3p2_na2j3r2_na2j3s2_na2j3ś2_na2j3t2_na2j3w2_na2j3z2_na2j3ź2_na2j3ż2_najc4h2_najc4z2_najd4z2_najd4ź2_najd4ż2_najr4z2_najs4z2_napo2d2_napo3b2_napo3c2_napo3ć2_napo3f2_napo3g2_napo3h2_napo3k2_napo3l2_napo3ł2_napo3m2_napo3p2_napo3r2_napo3s2_napo3ś2_napo3t2_napo3w2_napo3z2_napo3ź2_napo3ż2_napr4z2_naro2z3_na2r1ż2_natc4h2_na2t1k2_nie4c3c_nie4c3k_nie4m3c_nie4m3k_niec4h2_niec4z2_nied4z2_nied4ż2_nieodw2_niepr4z_nier4z2_nies4z2_o3b4łą1_o3b4łę1_o3b4łoc_o3b4rać_o3b4ron_o3b4roń_o3b4ryz_o3b4ryź_o3d4rap_o3d4ręt_odrobi1_o3d4rut_ob3u2m2_obe3r3t_obe4c3n_obe4z3w_obec4h2_obec4z2_obed4z2_obed4ź2_obed4ż2_obe2r3m_ober4z2_obes4z2_ochr4z2_od3a2u1_od3u2m2_odbe2z3_odec4h2_odec4z2_oded4z2_oded4ź2_oded4ż2_ode2p1c_oder4z2_odes4z2_ode2t1c_odkr4z2_ogó2l1n_o1le2o3_osie2m3_pe3r4e1_pe3r4i1_pe3r4o1_pe3r4u1_pe3r4y1_pepee2r_pepee2s_pie2r1w_pierwo1_pi1ęci1_pię2ć1s_pięćse1_pio1no1_płasko1_po2d3m2_po2d3n2_pod2r1w_po1dro1_po1dwo1_po3d4z2_po3d4ź2_pode3k2_podobi1_podobó1_podoc4h_podoki1_podopi1_podory1_podosi1_po4d3ów_podura1_podus4z_po2dz1b_po4st3h_po4st3l_pobr4z2_poc2h2r_po2d3b2_po2d3c2_po2d3ć2_po4d3d2_po2d3f2_po2d3g2_pod3i2n_po2d3k2_po2d3p2_po2d3s2_po2d3ś2_podśró1_po2d3t2_podc4h2_podc4z2_podd4ź2_podd4ż2_pode3b2_pode3c2_pode3ć2_pode3d2_pode3f2_pode3g2_pode3h2_pode3l2_pode3ł2_pode3m2_pode3p2_pode3r2_pode3s2_pode3ś2_pode3t2_pode3w2_pode3z2_pode3ź2_pode3ż2_pods4z2_pogr4z2_po2ł1k2_pom4p1k_po2m1k2_pona2d2_pona3b2_pona3c2_pona3ć2_pona3f2_pona3g2_pona3h2_pona3k2_pona3l2_pona3ł2_pona3m2_pona3p2_pona3r2_pona3s2_pona3ś2_pona3t2_pona3w2_pona3z2_pona3ź2_pona3ż2_ponasm2_ponazw2_poni2e1_popc4h2_popo3w2_popr4z2_por4t1w_por4t1f_por4t1m_poro2z3_posc4h2_po2t1k2_poza3u2_pó3ł4ą1_pó3ł4ę1_pó3ł4y1_pó2ł1k2_pó2ł1m2_półob3r_półpr4z_pra2w1n_pra3w2z_prze2d2_prze3b2_prze3c2_prze3ć2_prze1e2_prze3f2_prze3g2_prze3h2_prze3k2_prze3l2_prze3ł2_prze3m2_prze3n2_prze3p2_prze3r2_prze3s2_prze3ś2_prze3t2_prze3u2_prze3w2_prze3z2_prze3ź2_prze3ż2_przebr2_przeci1_przeda1_przekl2_przekr2_przesm2_przetr2_przy3b2_przy3c2_przy3ć2_przy3d2_przy3f2_przy3g2_przy3h2_przy3k2_przy3l2_przy3ł2_przy3m2_przy3p2_przy3r2_przy3s2_przy3ś2_przy3t2_przy3w2_przy3z2_przy3ź2_przy3ż2_przybr2_przyoz2_ro3z4a1_ro3z4e1_ro3z4ej_ro3z4u1_rozani1_ro2z1d2_ro1zpo1_ro2z1ś2_ro2z1t2_samo3k2_samo3p2_samo3w2_sie1de1_sie2d1m_sobo3w2_spo4r3n_spo4r3t_spoc4h2_spoc4z2_spo4d3d_spod4ź2_spod4ż2_spor4z2_spos4z2_ste1re1_supe2r3_supera1_superi1_super4z_supero1_ta1rza1_transi1_transo2_tysi2ą1_u4k3lej_u4p3p2s_u4s2t3n_u4s2t1c_u4s2t1k_u4z3be1_upo3da1_upoc4h2_upoc4z2_upo4d3d_upod4ź2_upod4ż2_upor4z2_upos4z2_wes2t1c_we4z3br_we4z3gł_we2m1k2_wepc4h2_we2t1k2_wilczo1_wniebo1_wodo3w2_wspó2ł3_współi2_współo1_współu2_wybr4z2_wygr4z2_wyi2zo1_wykr4z2_wy2m1k2_wypc4h2_wypr4z2_wy2r1ż2_wysc4h2_wytc4h2_wy2t1k2_za4uto1_zabr4z2_zagr4z2_zai2zo1_zai1ni1_zain4ic_zakr4z2_zani2e1_za2r1ż2_zasc4h2_za2t1k2_zde1ze1_zdysko1_ze3t1k2_zepc4h2_ze2r1ż2_zesc4h2_zma2r1t_znie3b2_znie3c2_znie3ć2_znie3d2_znie3f2_znie3g2_znie3h2_znie3k2_znie3l2_znie3ł2_znie3m2_znie3n2_znie3ń2_znie3p2_znie3r2_znie3s2_znie3ś2_znie3t2_znie3w2_znie3z2_znie3ź2_znie3ż23k2s2z2t3m2s2k2n3p2ne2u18ch8r8z_8sk8r8z_8sz8c8z_8sz8t8r_bi2s2z1kbi2z3nesbo2s3ma1bu2k1s4zbukszpa1cu2r7zondeutsc4hdu2s2z1pfi1szbi1fo2k2s3tfo2r5zacfo1lklo1ga3d2getgado2p1tgolfs4z2hi2s2z3pinnsbru1in4sbrucja4z4z3bja4z4z3mkarlsru1kirc4h3hkirchho1ma2r5z1lma2r5z1łma2r5z1nmontrea2moza2i3kmurzasi1of2f3setpa2s3calpa2s3c4hpodni2e1po3m2ną1po3m2nę1po3m2ni1poli3e2tpołu2d1nroen2t1gse2t3le1sko1rzo1sy2s1temszynkwa1to3y2o3tturbo1o2tygo2d1nwe1e1ke1we4s2t3fwe4s2t3m_bezac4h_bezami1_gdzi2e1_inacze1_półac4h_półami1_przyna1", + 9 : "_ad5a2p1t_bezo2b1j_czte1re1_długo3w2_do5m4k2n_drogo3w2_dwó3j4a1_dwó3j4ą1_dwó3j4e1_dwó3j4ę1_dwó3j4o1_dy3s4ta1_dzi1esi1_dzi1ewi1_elektro1_grubo3w2_hipe1re2_in4f3lan_jadło3w2_kilkuse1_kon2t2r3_ko1ntro2_możno3w2_na3d4łub_na3d4r2w_na3d4ruk_na3d4r4z_nado1bo1_nado2l1b_nadzi2e1_na4j3e2f_na4j3e2g_na4j3e2n_na4j3e2r_na4j3e2s_na4j3e2w_na1deta1_nade4p3c_nade4p3n_nade4p3t_nadec4h2_nadec4z2_naded4z2_naded4ź2_naded4ż2_nader4z2_nades4z2_naj3a2u1_naj3o2b2_naj3o2c2_naj3o2ć2_naj3o2d2_naj3o2f2_naj3o2g2_naj3o2h2_naj3o2k2_naj3o2l2_naj3o2ł2_naj3o2m2_naj3o2p2_naj3o2r2_naj3o2s2_naj3o2ś2_naj3o2t2_naj3o2w2_naj3o2z2_naj3o2ź2_naj3o2ż2_najbe2z3_najbezw2_najdo3b2_najdo3c2_najdo3ć2_najdo3d2_najdo3f2_najdo3g2_najdo3h2_najdo3k2_najdo3l2_najdo3ł2_najdo3m2_najdo3p2_najdo3r2_najdo3s2_najdo3ś2_najdo3t2_najdo3w2_najdo3z2_najdo3ź2_najdo3ż2_najob3h2_najob3j2_najob3l2_najob3ł2_najob3w2_najoc4h2_najoc4z2_najod3h2_najod3j2_najod3l2_najod3w2_najod5ż2_najod4z2_najod4ź2_najor4z2_najos4z2_naj2t1k2_naj2t1r2_najuc4z2_napo4m3p_napoc4h2_napoc4z2_napo4d3d_napod4ź2_napod4ż2_napor4z2_napos4z2_nie4d4ź3_niedo3b2_niedo3c2_niedo3ć2_niedo3d2_niedo3f2_niedo3g2_niedo3h2_niedo3k2_niedo3l2_niedo3ł2_niedo3m2_niedo3p2_niedo3r2_niedo3s2_niedo3ś2_niedo3t2_niedo3w2_niedo3z2_niedo3ź2_niedo3ż2_niedokr2_nieob3h2_nieob3j2_nieob3w2_nieoc4h2_nieoc4z2_nieod3h2_nieod3j2_nieod3l2_nieod3ł2_nieod5ż2_nieod4z2_nieod4ź2_nieor4z2_nieos4z2_niepo2d2_niepo3b2_niepo3c2_niepo3ć2_niepo3f2_niepo3g2_niepo3h2_niepo3k2_niepo3l2_niepo3ł2_niepo3m2_niepo3p2_niepo3r2_niepo3s2_niepo3ś2_niepo3t2_niepo3w2_niepo3z2_niepo3ź2_niepo3ż2_niepod5ż_nieposm2_niero2z3_nierozm2_niesu2b3_nie2t1k2_nieuc4z2_niewy3b2_niewy3c2_niewy3ć2_niewy3d2_niewy3f2_niewy3g2_niewy3h2_niewy3k2_niewy3l2_niewy3ł2_niewy3m2_niewy3p2_niewy3r2_niewy3s2_niewy3ś2_niewy3t2_niewy3w2_niewy3z2_niewy3ź2_niewy3ż2_niewytr2_o3b4luzg_o3b4r4z2_o3d4i2u1_o3d4rwi1_o3d4rzeć_o3d4rz2w_o4b5rzą1_o4b5rzez_o4b5rzęd_o4b5rzuc_o4b5rzut_o4b5rzyn_o4d7ziar_o4d7ziem_obe2r1ż2_obesc4h2_obe2t1k2_od3u2c4z_ode3m1k2_odepc4h2_ode2r1ż2_odetc4h2_ode2t1k2_o1gni2o1_o1gólno1_osie2m1s_o1śmi2o1_ośmio3ś2_pe4r5i2n_pe1e1se1_pee2se2l_pe1pe1e2_peze2t1p_pięci2o1_piono3w2_po3d4łu1_po3d4naw_po3d4rap_po3d4raż_po3d4roż_po3d4róż_po3d4ryg_po3d4waj_po3d4woj_po3d4wór_po3di2u1_po4c2z3d_po4c2z3t_podobra1_po4d3o2f_po4d3o2g_podokre1_podokrę1_podo2b1s_podo2l1b_po4d5zam_po4d5ze1_podzi2e1_po4s2t3d_po4s2t3f_po4s2t3g_po4st3i2_po4s2t3k_po4s2t3m_po4s2t3p_po1stro1_po4s2t3s_po5r4tę1_pochr4z2_podec4h2_podec4z2_poded4z2_poded4ź2_poded4ż2_pode2p1c_poder4z2_podes4z2_podro2z3_pona4f3t_ponac4h2_pona4d3d_ponad3h2_ponad3j2_ponad3l2_ponad4z2_ponar4z2_ponas4z2_ponaz3m2_ponie3k2_ponie3w2_póło2m2d_półprzy1_pra1pra1_przed3ł2_przedłu1_przedmu1_przed3o2_przed3r2_przedra1_przedru1_przedry1_przed3u2_prze3dą1_prze3dę1_prze3dy1_przedzi1_przec4h2_przec4z2_prze1de1_przed3h2_przed3i2_przed3j2_przed3l2_przedsi1_przed3w2_prze2p1c_przes4z2_przetra1_przyc4h2_przyc4z2_przyd4z2_przyd4ź2_przyd4ż2_przy2p1c_przys4z2_rozbr4z2_rozec4h2_rozec4z2_rozed4z2_rozed4ź2_rozed4ż2_roze2p1c_rozer4z2_rozes4z2_rozpo3w2_samo1ro1_siede2m3_si1edmi1_spo3d4z2_stere2o3_stereoa2_stereoi2_stereou2_supe1re2_sze4ś2ć3_sześ2ć1s_światło1_ta2r7zan_tra2n2s3_tran3s4z_tra1nsa2_tró3j4ą1_tró3j4ę1_tysią2c3_wielo3d2_wielo3k2_wielo3ś2_wszecho2_wy3o2d3r_wy4ż3s4z_wye2k2s3_za3o2b3r_za3o2b3s_za4r3c4h_za5m4k2n_zado2ść3_zadośću4_zanie3d2_zde3z4el_zde3z4er_zde3z4y1_zdyskre1_zdyskwa1_ze4t3hap_zmartwy1_znie4m3c_zniec4h2_zniec4z2_znied4z2_znied4ż2_znier4z2_znies4z2_zro3z4u18s8t8r8z_8szc8z8b_8z8d8r8z_be2f3s4z2bi2sz3kopbirmi2n1gblokha2u1broa1dwa1bu2sz3me1buk2s2z1pfi2sz3binfol2k1lorfo1sfazo1karlskro1lu2ks1fermie2r5z1łpo1rtsmo1portsmou2pre2s2z1proe1ntge1skorzone1szto1kho1vo2l2k2s3_byna2j1m_n8i9gdy__ni1gdzi1_niechby1_trójac4h_trójami1_podó2w1c", + 10 : "_arcy3b1z2_auto3c4h2_a1utotra1_cienko3w2_czarno3k2_cztero3ś2_czwó3r4a1_czwó3r4ą1_czwó3r4e1_czwó3r4ę1_czwó3r4o1_ćwie2r2ć3_daleko3w2_długo3tr2_dziesi2ę1_dziewi2ę1_e1me1sze1_elektroa2_elektroi2_elektrou2_hipe3r4o1_kon3tr4a1_kon3tr4e1_kon3tr4y1_krótko3w2_nadre2p1c_na3ja2z1d_nado1bro1_nadoki2e1_na4d5rzą1_na4d5rzę1_na4d5rzy1_na4d5ziem_na4j3e2u1_nad3e2tat_nad5z2mys_nade2r1ż2_nadśrod4z_naj3a2k1t_naj3ro2z3_najdoc4h2_najdoc4z2_najdod4z2_najdod4ź2_najdod4ż2_najdor4z2_najdos4z2_najo2b3c2_najo2b3ć2_najo2b3d2_najo2b3f2_najo2b3g2_najo2b3k2_najo2b3m2_najo2b3n2_najo2b3p2_najo2b3s2_najo2b3ś2_najo2b3t2_najo2b3ź2_najo2b3ż2_najobc4h2_najobc4z2_najobd4z2_najobd4ź2_najobd4ż2_najobr4z2_najobs4z2_najo2d3c2_najo2d3ć2_najo4d3d2_najo2d3f2_najo2d3g2_najo2d3k2_najo2d3m2_najo2d3n2_najo2d3p2_najo2d3s2_najo2d3ś2_najo2d3t2_najodc4h2_najodc4z2_najodd4z2_najodd4ź2_najodd4ż2_najods4z2_napo2m1k2_niedoc4h2_niedoc4z2_niedod4z2_niedod4ź2_niedod4ż2_niedo2p1c_niedor4z2_niedos4z2_nieo2b3c2_nieo2b3ć2_nieo2b3d2_nieo2b3f2_nieo2b3g2_nieo2b3k2_nieo2b3m2_nieo2b3p2_nieo2b3s2_nieo2b3ś2_nieo2b3ź2_nieo2b3ż2_nieobc4h2_nieobc4z2_nieobd4z2_nieobd4ź2_nieobd4ż2_nieobs4z2_nieo2d3c2_nieo2d3ć2_nieo4d3d2_nieo2d3f2_nieo2d3g2_nieo2d3k2_nieo2d3n2_nieo2d3p2_nieo2d3s2_nieo2d3ś2_nieo2d3t2_nieod3w1r_nieodc4h2_nieodc4z2_nieodd4z2_nieodd4ź2_nieodd4ż2_nieods4z2_niepod3ł2_niepodmu1_niepod3r2_niepodra1_niepodrę1_niepod3w2_niepodwa1_niepo3do1_niepo3du1_niepoc4h2_niepoc4z2_niepod3h2_niepod3j2_niepod3l2_niepodsm2_niepor4z2_niepos4z2_nie1prze1_niero2z1t_nieroztr2_ni1esubi1_niewyc4h2_niewyc4z2_niewyd4z2_niewyd4ź2_niewyd4ż2_niewyr4z2_niewys4z2_o2t3c2h2ł_o3b4raso1_o3d4robin_o3d6zi2a1_o3d6zi2e1_o4b5łoc4z_o1d3i2zo1_ognio3tr2_ogólno3k2_osie1mse1_pełno3kr2_pierwo3w2_pięcio3ś2_pięćse2t3_płasko3w2_podre2p1c_po3d4rętw_po3d4ruzg_po3d4rze1_po3d4woi2_po3e2k2s3_podobi2a1_po1do1bo1_podoki2e1_podopi2e1_po4d5zakr_po4d5zast_po4d5zbi1_po4d5ziem_po1dzi2o1_po4d5ziom_po4st3rom_pod3a2l1p_pode3t1k2_podepc4h2_pode2r1ż2_podesc4h2_pona3c4z2_po1na3do1_pona3d4ź2_ponabr4z2_pona2d3c2_pona2d3ć2_pona2d3f2_pona2d3g2_pona2d3k2_pona2d3p2_pona2d3s2_pona2d3ś2_pona2d3t2_poro3z4u1_pó3ł4ec4z_pra3w2nu1_prze2d3m2_prze3d4um_prze3d4z2_prze3d4ź2_prze4d5zj_przedzwo1_prze4d5ż2_przec2h2r_przeci2w3_przeciwa2_przedago1_prze2d3b2_prze2d3c2_prze2d3ć2_prze4d3d2_prze2d3f2_prze2d3g2_prze2d3k2_prze2d3n2_prze2d3p2_prze2d3s2_prze2d3ś2_prze2d3t2_przedc4h2_przedc4z2_przedd4z2_przedd4ź2_przedd4ż2_prze2ł1k2_prze2m1k2_przepc4h2_pr4zer4z2_prze2r1ż2_przesc4h2_prze2t1k2_przy2m1k2_przypc4h2_pr4zyr4z2_przy2r1ż2_przysc4h2_przy2t1k2_ro3z4e3b2_ro3z4e3c2_ro3z4e3ć2_ro3z4e3d2_ro3z4e3f2_ro3z4e3g2_ro3z4e3h2_ro3z4e3k2_ro3z4e3l2_ro3z4e3ł2_ro3z4e3m2_ro3z4e3p2_ro3z4e3r2_ro3z4e3s2_ro3z4e3ś2_ro3z4e3t2_ro3z4e3w2_ro3z4e3z2_ro3z4e3ź2_ro3z4e3ż2_rozepc4h2_roze2r1ż2_rozesc4h2_samo3c4h2_samoro2z3_siede2m1s_siedmi2o1_ską2d5że1_stereo1o2_su3b4i2e1_supe3r4at_sze1ś2ci1_sześci2o1_sze1śćse1_tran3s4e1_tran3s4y1_trze2c4h3_tysią3c4z_we4s3pr4z_wie1luse1_wilczo3m2_wniebo3w2_wspó2ł1w2_wsze2c4h3_wy4cz3ha1_ze1te1me1_ze1te1se1_zimno3kr2_znie4d4ź3bi2n3o2ku1birmingha1blo2k1hauzbuk2sz3panbusine2s2sdeutsc2h2ldeutschla1du2sz3pasthu2x3le2y1kongre2s3mluftwa4f3fmi1e2r5zi1mon2t3realmurzasic4hpa2n3a2merpoli3u2re1połu3d2ni1powsze2d1npre2sz3pa1ro2k3roc4zsy2n3o2p1tsza2sz1ły1szyn2k1wasturboodr4ztygo3d2ni1_bynaj2m1n_bynajmni1_be9z8ami__gdzi1eni1_n8a9da8l__nigdzi2e1_nie2c2h1ż_nie1chże1_nie2c2h1b_ow9sze8m__pó9ł8ami__pó9ł8e8k__ską1diną1_podówcza1", + 11 : "_ciepło3kr2_de3z4a3bil_de3z4a3wu1_dziewię2ć3_elektro1o2_kilkuse2t3_kilkuseto2_kon3tr4o3l_kon3tr4o3w_krótko3tr2_mili3a2m1p_na3d4muc4h_na3d4ręc4z_na4d3o2b2ł_nadobo2j1c_na4j3e2k2s_na4j3e2ko1_na4j3e2m1f_nad5zwyc4z_nadśrodzi1_najdo2t1k2_najro3z4u1_niedobr4z2_niedo2m1k2_niedopc4h2_niedo2t1k2_niepo2d3m2_nie1podre1_niepo1dwo1_niepo3d4z2_niepo3d4ź2_niepodoc4h_niepo2d3b2_niepo2d3c2_niepo2d3ć2_niepo4d3d2_niepo2d3f2_niepo2d3g2_niepo2d3k2_niepo2d3n2_niepo2d3p2_niepo2d3s2_niepo2d3ś2_niepo2d3t2_niepodc4h2_niepodc4z2_niepodd4ź2_niepodd4ż2_niepods4z2_nieprze2d2_nieprze3b2_nieprze3c2_nieprze3ć2_nieprze3f2_nieprze3g2_nieprze3h2_nieprze3k2_nieprze3l2_nieprze3ł2_nieprze3m2_nieprze3n2_nieprze3p2_nieprze3r2_nieprze3s2_nieprze3ś2_nieprze3t2_nieprze3w2_nieprze3z2_nieprze3ź2_nieprze3ż2_nieprzekl2_nieprzekr2_nieprzesm2_nieprzetr2_niero3z4u1_nieroze3r2_niero2z1ś2_niewybr4z2_niewy2t1k2_ob3o2str4z_osiemse2t3_pe1ze1tpe1_po3d4muc4h_po3d4r2wi1_po3d4ręc4z_po3d4roba1_po3d4robó1_po3d4roby1_po3d4roc4z_po3d4wor4z_podobo2j1c_po4d3o2bóz_po1do1cho1_po4d3o2d1m_po4d3o2k1n_po4d3o2ryw_podosi1ni1_po4d3obs4z_po4d3o4d3d_po4d3u2c4z_po4d3u2d4z_po4d3u2pa1_po4d3u2ral_podu2s2z1c_podzie1le1_po4d5z2w2r_poduszczy1_pod3śró2d5_ponad3c4h2_ponad3c4z2_ponad3d4ź2_prapra2w1n_prze3d4łuż_prze3d4ruk_prze3d4ryl_przedłuży1_przedosta1_prze4d5za1_prze4d5zim_prze4d5z1l_pr4zebr4z2_przeci1wi1_przedsi2ę1_przed3s4z2_pr4zegr4z2_pr4zygr4z2_retra2n2s3_ro4z5a2gi1_ro4z5e2mo1_ro4z5e4g3z_ro4z5e4n3t_siedmio3ś2_ste1re1oe2_su3b4o2t1n_supe2r5z2b_superodr4z_sześcio3ś2_sześćse2t3_światło3w2_tró3j4ec4z_trze2c2h1s_trze1chse1_tysią3c4a1_tysią3c4e1_tysią4c5zł_we4s3tc4h2_wieluse2t3_współo2b3w_wszec2h2w2_zady2s3po1_zde3z4awu1_zdy2s3kred_zdy2s3kwal_ze4t3e2m1pbe2k1he2n1dbi2z3ne2s3mbusine2ss3mfi2s3ha2r1mfos2f1a2zotga1do3p2ta1gran2d1ilo1karl2s1kronna4ł3ko2w1soch3mistr4zro2e3nt2genro2s3to3c2ksko2r5zoner_n8i9gdzie__nie8ch9że__nie8ch9by__przyna2j1m_tró9j8ami__tró9j8e8k__podó4w3c4z", + 12 : "_cztere2c4h3_dziewię2ć1s_e2s1e2s1ma1_e1le1ktroe2_na3d4repc4z_na3d4re2p1t_na3d4wo2r1n_na4d3o2brot_na4d3o2dr4z_na4d3o2kien_na4d3olbr4z_na4d5rzec4z_niepo3d4łu1_niepo3d4rap_niepo3d4raż_niepo3d4waj_niepo3d4woj_nieprzed3ł2_nieprzedłu1_nieprzedmu1_nieprzed3r2_nieprzedra1_nieprzedru1_nieprzedry1_nieprzed3u2_nieprze3dy1_nie1prze1e2_nieprzec4h2_nieprzec4z2_nieprzed3h2_nieprzed3j2_nieprzed3l2_nieprzed3w2_nieprze2p1c_nieprzes4z2_nie1ro3z4e1_nierozbr4z2_po3d4repc4z_po3d4re2p1t_po3d4ro1bo1_po3d4wó2j1n_po4d3e4k2s3_po4d3o2biad_po4d3o2braz_po4d3o2choc_po4d3o2kien_po4d3o2kres_po4d3o2kręg_podosini2a1_po4d3olbr4z_po4d3u2sta1_półprzy3m2k_predy2s3po1_prze3d4o3br_prze3d4o3st_przedra1ma1_prze3e2k2s3_prze4d5z1g2_prze4d5zwoj_pr4zechr4z2_przeci4w3w2_przed3a2gon_przed3a2k1c_przed3a2l1p_przed3e2g1z_prze1de1me1_przed3e2mer_pr4zedgr4z2_sie1de1mse1_siedemse2t3_supe3r4i2o1_supe4r5a2tr_tran3s4i2e1_tran4s5e2u1_trzechse2t3_wewną2tr4z3birmin2g1hamcal2d1we4l3lin4nsbru2c1kkarl2s1ruhe1kir2chho4f3flu2ft3waffe1mi2s4z1mas4zpo3d4niepr4zpo4rt3la2n1dpowsze3d2ni1sze2z1lo2n1gtu1rboodrzu1we2e2k1e2n1d_bynajmni2e1_be9z8a8c8h__in8a9cze8j__pó9ł8a8c8h__przynaj2m1n_przynajmni1_podó3w2czas", + 13 : "_autotra2n2s3_cztere2c2h1s_dzi1esi1ęci1_dziesięci2o1_dzi1ewi1ęci1_dziewięci2o1_dzie1więćse1_e2m3e2s5ze2t_kon4tr5a2gi1_kon4tr5a2se1_kon4tr5a2sy1_kon4tr5a2ta1_kon4tr5a2d1m_kon4tr5a2k1c_kon4tr5a2l1t_kon4tr5a2r1g_na4d3o2bowi1_nadśrodzi2e1_nadśrod5ziem_niepodre2p1c_nieprze2d3m2_nieprze3d4um_nieprze3d4z2_nieprze3d4ź2_ni1eprzedzi1_nieprze4d5zj_nieprzedzwo1_nieprze4d5ż2_nieprze2d3c2_nieprze2d3ć2_nieprze4d3d2_nieprze2d3f2_nieprze2d3g2_ni1eprzed3i2_nieprze2d3k2_nieprze2d3n2_nieprze2d3p2_nieprze2d3s2_nieprze2d3ś2_nieprze2d3t2_nieprzedc4h2_nieprzedc4z2_nieprzedd4z2_nieprzedd4ź2_nieprzedd4ż2_nieprze2ł1k2_nieprzepc4h2_niepr4zer4z2_nieprze2r1ż2_nieprzesc4h2_nieprze2t1k2_pe1ze1tpe1e2_peze2t1pee2r_po4d3o2str4z_po4d3u2szc4z_po4d5rę2cz1n_podzi1eleni1_po5d4uszczyn_prapra3w2nu1_prze3d4muc4h_prze3d4o3zo1_prze3d4ramat_pr4ze3d4r4z2_prze4d5łużyc_prze4d5z2w2r_przed3się3w2_przedy2s3ku1_przetra2n2s3_ro4z5a2ni2e1_su1perodrzu1_zdy2s3ko2n1t_ze4t3e2m1e2s_ze4t3e2s1e2l_zmartwy2c4h3bro2a2d3wa2y1szto2k1ho2l1mturboo2d3rzut_gdzi2e1ni2e1_skąd9i8ną8d__tró9j8a8c8h_", + 14 : "_czte1re1chse1_czterechse2t3_dziesięcio3ś2_dziewięcio3ś2_dziewięćse2t3_na4d3o2bojc4z_niepo3d4muc4h_niepo3d4ręc4z_niepo1do1cho1_nieprze3d4łuż_nieprze3d4ruk_nieprze3d4ryl_nieprzedłuży1_nieprze4d5zim_nieprze4d5z1l_nieprzed3s4z2_niepr4zegr4z2_po4d3o2bojc4z_po4d3o2piec4z_po4d3o2siniak_po4d5zielenic_po4d5zielenić_po4d5zielenil_po4d5zielenił_po4d5zielenim_po4d5zielenis_prze4d5o4stat_supero2d1rzut_zmartwyc2h2w2mu2r7zasic2h3lpo4rt2s3mo2uth_gd4zieniegd4z_przynajmni2e1", + 15 : "_niepo3d4repc4z_niepo3d4re2p1t_niepo4d3o2choc_niepr4ze3br4z2_nieprzedra1ma1_nieprze3e2k2s3_nieprze4d5z2a1_nieprze4d5z1g2_nieprze4d5zwoj_ni2e1su3b4i2e1_po4d5zielenien_prze1ci3w4i2e1deut4sch3la2n1d_2g1dzienie2g1d", + 16 : "_niepo4d3o2str4z_nieprze3d4muc4h_nieprze3d4ramat_niepr4ze3d4r4z2_nieprze4d5łużyc_nieprze4d5z2w2r_po4d5zieleni2ą1_po4d5zieleni2ę1_po4d5zieleni2o1_by9naj9m8nie8j__gdzi1eni1egdzi1", + 17 : "_podzi2e1le1ni2e1_gdzienie9g8dzie__po8d9ó8w9cza8s_", + 18 : "_przy9naj9m8nie8j_", + 20 : "_gdzi2e1ni2e1gdzi2e1" } }; diff --git a/resources/viewer/hyphenate/patterns/pt.js b/resources/viewer/hyphenate/patterns/pt.js index d48d8bc561..b25014f461 100644 --- a/resources/viewer/hyphenate/patterns/pt.js +++ b/resources/viewer/hyphenate/patterns/pt.js @@ -1,16 +1,16 @@ -// For questions about the portuguese hyphenation patterns -// ask Lailson Bandeira (lailsonbm dot bloemen at gmail dot com) +// For questions about the portuguese hyphenation patterns +// ask Lailson Bandeira (lailsonbm at gmail dot com) // based on LaTeX patterns in Portuguese, by Pedro J. de Rezende and J.Joao Dias Almeida (http://www.ctan.org/tex-archive/language/hyph-utf8/tex/generic/hyph-utf8/patterns/) -Hyphenator.languages.pt = { - 'leftmin' : 2, - 'rightmin' : 4, - 'shortestPattern' : 1, - 'longestPattern' : 3, - 'specialChars' : 'áéíóúãõàçâêô', - 'patterns' : { - 2 : '1-', - 3 : '1ba1be1bi1bo1bu1bá1bâ1bã1bé1bí1bó1bú1bê1bõ1ca1ce1ci1co1cu1cá1câ1cã1cé1cí1có1cú1cê1cõ1ça1çe1çi1ço1çu1çá1çâ1çã1çé1çí1çó1çú1çê1çõ1da1de1di1do1du1dá1dâ1dã1dé1dí1dó1dú1dê1dõ1fa1fe1fi1fo1fu1fá1fâ1fã1fé1fí1fó1fú1fê1fõ1ga1ge1gi1go1gu1gá1gâ1gã1gé1gí1gó1gú1gê1gõ1ja1je1ji1jo1ju1já1jâ1jã1jé1jí1jó1jú1jê1jõ1ka1ke1ki1ko1ku1ká1kâ1kã1ké1kí1kó1kú1kê1kõ1la1le1li1lo1lu1lá1lâ1lã1lé1lí1ló1lú1lê1lõ1ma1me1mi1mo1mu1má1mâ1mã1mé1mí1mó1mú1mê1mõ1na1ne1ni1no1nu1ná1nâ1nã1né1ní1nó1nú1nê1nõ1pa1pe1pi1po1pu1pá1pâ1pã1pé1pí1pó1pú1pê1põ1ra1re1ri1ro1ru1rá1râ1rã1ré1rí1ró1rú1rê1rõ1sa1se1si1so1su1sá1sâ1sã1sé1sí1só1sú1sê1sõ1ta1te1ti1to1tu1tá1tâ1tã1té1tí1tó1tú1tê1tõ1va1ve1vi1vo1vu1vá1vâ1vã1vé1ví1vó1vú1vê1võ1xa1xe1xi1xo1xu1xá1xâ1xã1xé1xí1xó1xú1xê1xõ1za1ze1zi1zo1zu1zá1zâ1zã1zé1zí1zó1zú1zê1zõa3aa3ea3oc3ce3ae3ee3oi3ai3ei3ii3oi3âi3êi3ôo3ao3eo3or3rs3su3au3eu3ou3u', - 4 : '1b2l1b2r1c2h1c2l1c2r1d2l1d2r1f2l1f2r1g2l1g2r1k2l1k2r1l2h1n2h1p2l1p2r1t2l1t2r1v2l1v2r1w2l1w2r', - 5 : '1gu4a1gu4e1gu4i1gu4o1qu4a1qu4e1qu4i1qu4o' +Hyphenator.languages['pt'] = { + leftmin : 2, + rightmin : 4, + shortestPattern : 1, + longestPattern : 3, + specialChars : "áéíóúãõàçâêô", + patterns : { + 2 : "1-", + 3 : "1ba1be1bi1bo1bu1bá1bâ1bã1bé1bí1bó1bú1bê1bõ1ca1ce1ci1co1cu1cá1câ1cã1cé1cí1có1cú1cê1cõ1ça1çe1çi1ço1çu1çá1çâ1çã1çé1çí1çó1çú1çê1çõ1da1de1di1do1du1dá1dâ1dã1dé1dí1dó1dú1dê1dõ1fa1fe1fi1fo1fu1fá1fâ1fã1fé1fí1fó1fú1fê1fõ1ga1ge1gi1go1gu1gá1gâ1gã1gé1gí1gó1gú1gê1gõ1ja1je1ji1jo1ju1já1jâ1jã1jé1jí1jó1jú1jê1jõ1ka1ke1ki1ko1ku1ká1kâ1kã1ké1kí1kó1kú1kê1kõ1la1le1li1lo1lu1lá1lâ1lã1lé1lí1ló1lú1lê1lõ1ma1me1mi1mo1mu1má1mâ1mã1mé1mí1mó1mú1mê1mõ1na1ne1ni1no1nu1ná1nâ1nã1né1ní1nó1nú1nê1nõ1pa1pe1pi1po1pu1pá1pâ1pã1pé1pí1pó1pú1pê1põ1ra1re1ri1ro1ru1rá1râ1rã1ré1rí1ró1rú1rê1rõ1sa1se1si1so1su1sá1sâ1sã1sé1sí1só1sú1sê1sõ1ta1te1ti1to1tu1tá1tâ1tã1té1tí1tó1tú1tê1tõ1va1ve1vi1vo1vu1vá1vâ1vã1vé1ví1vó1vú1vê1võ1xa1xe1xi1xo1xu1xá1xâ1xã1xé1xí1xó1xú1xê1xõ1za1ze1zi1zo1zu1zá1zâ1zã1zé1zí1zó1zú1zê1zõa3aa3ea3oc3ce3ae3ee3oi3ai3ei3ii3oi3âi3êi3ôo3ao3eo3or3rs3su3au3eu3ou3u", + 4 : "1b2l1b2r1c2h1c2l1c2r1d2l1d2r1f2l1f2r1g2l1g2r1k2l1k2r1l2h1n2h1p2l1p2r1t2l1t2r1v2l1v2r1w2l1w2r", + 5 : "1gu4a1gu4e1gu4i1gu4o1qu4a1qu4e1qu4i1qu4o" } }; \ No newline at end of file diff --git a/resources/viewer/hyphenate/patterns/ru.js b/resources/viewer/hyphenate/patterns/ru.js index 23451dea67..e24addfee0 100644 --- a/resources/viewer/hyphenate/patterns/ru.js +++ b/resources/viewer/hyphenate/patterns/ru.js @@ -2,21 +2,21 @@ // crymos at yandex dot ru // Вопросы по русскоязычным таблицам переноса отправлять на адрес // crymos точка yandex собака ru -Hyphenator.languages.ru = { +Hyphenator.languages['ru'] = { leftmin : 2, rightmin : 2, shortestPattern : 1, longestPattern : 7, - specialChars : unescape('абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯਂ%u200D'), + specialChars : unescape("абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯਂ%u200D"), patterns : { - 2 : '1г1ж1м1п1ф1ц1ш1щъ1ы1ь11э1ю', - 3 : 'а1ба1да1еа1иа1ка1уа1ча1я1баб1вбг21бе2бжб1л1боб1т2бф2бц2бш2бщ1бы1бь1бя1вав1дв1л2вмвф22вц2вш2вщвъ21вы1вяг2а2ггг2и2гп2гф1дадв21де1дид1л1до2дп1ду2дфд1х2дщ2дъ1ды1дяе1а2ебе1ее1и2еоеэ2е1яжг2ж2м2жф2жц2жъ2зг1зе1зиз1лз1н2зт1зу2зцз1ч2зш1зы1зяи1аи1еи1ии1ки1л2ипи1ри1ти1чи1я2й1йд2йя12кг1ке2кмк2о2кп2кск2у2кф2кц2кш1кьк2ю2лб1ли2лм1ло2лпл1т2лцл1чл2ю1ля2мж2мм2мп2мф2мц2мщ2мэм2ю1на2нг1не1нин1л1но1нун1х2нц2нш2нщ1нын2э1няо1вог2о1ео3и2ойо1ко1т2оюо1япе1пх22пц2пш2пщ2рг2рз2рм2рп2рф2рх2рц2рш2рщ2рър2ю1сасг2с1зс2мс1н1сосп21ср1сусч2сш21сы1ся2тг2тжтм22тф4тц2тщ2тъ2ть2тэт2юу1ау1еу1иу1оу1у2уэу1я2фгф4и2фм2фф1ха2хг1хе1хи1хохп22хшца12цгци12цм3цу2цц3цыцю11чач1в1чеч2ж1чи1чм3чо1чуч2хш2в2шм2шфш1х2шц2шь2щмъю2ъя2ые2ыи2ыу2ьб2ь2еь2оь2юь2яэ1в2эгэ2мэ2нэ2пэс1э2фэх2э2цэя2ю1аю1бю1вю1ею1ию1к2юмю1хю1чю1яя1ея1ия1кя1ля1уа1ё1бё1дёе1ё2ёб1зёи1ё1кё1нёо1ёпё1у1ё1чёь2ёю1ё', - 4 : '_аи2_ау2_ии2_ио2_ис3_ль2_оз4_ск2_ст2_уб2_уд2_уе2_ук2_уо3_уп2_ус2_ую2_юс14а3ааа2паа2раа2ца3буав1ва1веа1виа1воа2вта1вуа2вх2агаа2гд2агоа3гу2адва2длад2цае2ла2епае2сазв2азг2аз1ра2ихак1в1аккак2лак1са1лаа1леа3лиа1луа1лыа1лю2амаамб42амоа2мчан1ра1нь2а1оао2дао2као2рао2с2апоа1раа1реа1риа1роа1руар1ха1рыа1рюа1ряа1таа1тиа1тоа1туат2ха1тыа1тюа1тяа2убау2дау2хау2чауэ1ах2аах3с2ачаа2члач1та2шла2эрая2бая2вая2зба1зба2о2б1ббвы22б1д3бев3бее3бец2бещб1з21б2и3биаби2б2биж3бик3биоби1х2б3к2блы2бля2б3н3бот2бр_2брсб1ру2брьб1ряб3скбс4л1б2убу1с2б1х2б1чбы2с2бь_2бьс2бьтбэ1р3б2ю3вагва1звах13вац3вая2в1бв1вив1вр2вг21вев3вег1вее1вез1вес1вец1вею1веявзг2взд2взъ21визви1овиу3ви2ф2в1квк2лв2ла2вли2влю2вля1вме2в1нвно1в3нывов21вод1воквоп21вох1вою2вп22вр_1врюв1ряв1т21вуаву3г2вуиву3п1вхо2в1чвып2вых22вь_1вье2вьс2вьт1вью1вья1в2юга1зга2у2г3бгба2г1ви3ге_2г3ж2г1з2г1кг1ле2г3мг3няго1з3гойг2ол3гою2гр_2грюг4саг4сб2г3тгу1вгу1с2г1ч2г3ш2г3эда1зда2о2д1бд1ве1двид3вкд1вл2двя2дг23дез2дж_2джсдип2диу3ди1х2д1к2д1нд3надо1здоп2до1с2др_д1ред1рид1рыд1рядск22д1тду3гду2оду1х2дцу2дцы2д1ч2дыг2дыд2дыт2дыщ2дь_1дье2дьк2дьт1дью1дья1д2юеа2деа2зе1вее1вие1вое2вте1вуе1вхе1вьег2дед2жее2хе2жг2ежее3зее3зяеи2деи2меи2ое1каек2зе1кие1куе1лае1лее1луе1лые1люе3ляе2мче3наенс2е1нэе1оде2оие2омеоп2еос22епее2пле4пн2епое4пте1рае2рве1рее1рие1рое1руе1рые1рюе1ряе1сге1ск2есле3со2еспе1сте1тае1тие1тоет1ре1туе1тые1тюе1тяе1у22еубеуз2еф2л2ецве1чле2шлею2гея2зжа1з2ж1в2жгаж2гиж2гу2ж1дж2диждо3жду14ждь3жев2жжаж2жежи1о2ж1к2ж1лж3ма2ж1нжно1жоу32жп2жпо1ж2ру2ж1с2ж1ч2жь_2жьс2жьт1за1заа2заб2заг4зап2зас2зат2зау2зах2зая2з1б2з1вез1виз1воз1вр1звуз1вьз3га2зж2з3з23зи_3зис3зич2з1кзко12зм2з3мн2зне2зно2зну1зов1зое1зои1зон1зоозос21зохзош21зоэ1зоюз1раз1роз1руз2рюз1ря2з1сз1ти3зу_зу1в3зуе2зупзы2з2зыщ1зье1зьи1зью3зья1з2юи2аби2авиаг2иао2и2апи2аф2и1би1вии1ву2ивыиг2ди3ге2игли2гни1двид1ри1дьие2гие2дие2ри1зоиз1рийс2и3кои3куилп2и2ль2имаи3мии2мчинд21инжинс21инф1инъи1оби2оги1оди1ози1они1ори1ошип3ни2рви2рж1ирри2сби2сдис1ки4сси1сти2тми1у2иу3пиф1ли2фри1хуи2штию4лию2нию2тия2дйно1йп2лй2сбй2снй2сшй2тмй2хм1кавк2ад1кае1кай1кам1кан1кат1ках1каю2к1бк1вик1ву2к1дкда22кеа2к1з1кивки1о1киткк3ск3лы2кль1клю2к1н1ков1код1коз1кос1кош2кр_кс3гкс3мк3сок3су2к1ткт2р3куе1куй3кум1кур1кут2к1ч1ла_1лаел2аклау11лаял1брл1вел1вил1вол1вул2гллго11ле_1лен1лехл1зо2л1клк2в2л1лл2льллю12л1нлс3б1лу_лу1влу3г1луе1лунлу1с1лую1лы_1лые1лыж1лый1лым4ль_2льд3лье3льи2льк2льм2льн3льо2льт2льц2льч3лью3лья1лю_1люж3ля_2ляд3лям3лях3магма2умаф23мач4м1бм3бимб2л2мг22м1д3мкн2м1л2м1н3мод3мон3моп3мофмп2л2мрим1ры2м1смс2кмс2н2м1тмфи32м1х2мш2мым1мы2с2мь_2мьсмью1мэ1рмя1р2нач2нащ3ная2н1внг4лнг2р2н1днд2жн2длн2дцнег23недне3енеи23неунея23нийниу3ни1х3ниц3нищ2н1кнк2внк2лнк1с2н1нноб2ноэ2н3п2н1ро2н1сн2сгн2слн2сн2н1тн2тмну1х3ную2нф2нхо12н1чн2члнш2т3ны_2нь_1нье1ньи2ньк1ньо2ньс2ньт2ньч1нью1нья1н2юо3авоап12оба1обмоб1р1объ2обьов2то2вхо1дьое1бое2дое1оое2цо1зооие3ои2зои2мои2оойс2ок2в1окто3лао1лео3лоо1луо1лыо1люо3ляо3ма2омеом2чо2мьо3наонд2о1нронс2о1о2о2оло2офо1рао1рео1рио1ро2орцо1рыо1рюо1ряос2бо1ст2осхотв21отг1отдо3тио2тм1отхо1у2оуп2о3фе2охио1хро1хуо2цооч2ло1чтош2тоя2воя2доя2зпа3ф2п1дпе2з4п3к2пл_2п1нп3нап3ны3пой2пп22пр_при12прсп2руп3со2п1тп3ту3пуб2пф24п3ч2пь_2пьтп2ю11ра_раа21раю1рая2р1бр1вир1вор1вьр2гвр2гнрг2р2р1дрд2жр2длр2дц1ре_р1зори3ариб2р2ин1риу1риц1риш2р1кр2кврк1ср2льрлю1р3ляр2мч2р1н1ро_1роу2р1р4р1срс2кр2снрс2п2р1тр2тм1ру_1рулрф2лр2хврх1лрх1рр2цв2р1чр2члр2чмрш2т1ры_1рыб2рыз1рым2рь_1рье1рьи2рьк2рьс2рьт1рью1рьярэ1л1рю_1рюс1ряю1сб2с2бы2сбю1с2вс2гис2гнс2го1сд2с2дас2дес3дис2до1с2е1с2ж1с2и3сизси1х4ск_ск2л2скнск2рск1с2сль2снос2овсо1дс3пн2спь2ср_2с1сс2сбсс2лс2снсс2псст2сс2ч2ст_2стбс2те1сти2стк2стм2стн2стп2стс2стф2стц1стыс4тьсу2бсу1всу2зсу1хс1х22сца2сцо1счас1чл2счос3шн1съ2сы2зсы2с2сь_1сье2ськ2сьт1сью1сьясэ1рс2эс1с2юсю1с2сяз1тагт2ан1тас1тащ2тв_2тви2тву2твы2твя2т1д1т2ете1д2т1зтии2тик23ткн2т1лт2льт3мщ2т1нто1д1тощ2тп22трб2трв2трг2трд2трм2трн2трп2трр2трф2трщ2трът1рыт2сб2т1тт2тм1тущ2т1х2т1ч2тш24ть_3тье3тьить2м4тьттью1тю1т1тяг1тяж1тяпу2асуб1ру1виув2лу1воу1вуу2гву2глу2гнуд2ву3дууе2дуе2луе1суе2ху2жжу1зоу1каук1ву1киу1коу1лау1леу1луу1люу2мчу3нау1ньуо2буо2вуо2куо2пуо2суо2фу2плу1рау1реу1риу1роу3руу1рыу1рюу1ряу1сгус2лу1сму2снус2пус3су1сф2усцу2счу2сьу1тау1тиу1тоу1туу1ты1утюу1тяууг2уу2су3фиуф1лу2фру2хвух1лух1р1учру1чьу3шеу3шиу2шлу2шпуя2зфа2х3фашфаэ12ф1б2ф1в2ф1дфи2жфи1о3фит2ф1кф2лаф2лиф2ло2ф1н3фон3фотф1риф1роф1ру2ф3с2ф1тф2тм2фуф2ф1ч2фш22фь_ф2ю1ха2дхао32х1б1х2вх3вых3д2хео3х1з2хие2х1к2х1лу2х1нхоп2хоф2хоя2х1рых1ря2х1т1ху_2хуе2хуй1хун1хус1хуш2хуюх1х2хью13ца_3цам3цах2ц1бц2ве2цвы2ц1дце1зце1кце1т2ц1зцип2циу32ц1л2ц1н2цп22ц1р2ц1с2ц1тцы2п2ч1б2ч1дче1очжо23чик3чиц2ч1кч2ле2чли2чма2чмеч2мо2ч1н2ч1сч2те2чтм3чук2ч1ч2чь_1чье1чьи2чьс2чьт1чью1чья2ш1бше1кш1лыш2лю2ш1н4шниш2п2ш3пр2ш1р2ш1сш1ти2штс2ш1ч4шь_3шье3шьи3шью3шьяш2ю1щеи2ще1сще1хщеш22щ1н2щ1р2щь_ъе2гъе2дъе2лъе2съя3ны2блы3гаы3гиыг2лы2гны2длыз2ды2злы2зныиг1ык2лык1сы2льы2мчы3поыр2вы3саы3сеы2сны3соыс2пы2схыс2чы2сшыт2ры3шьь2вяь2дцье1кь2знь2и1ь2кльмо1ьс2кь2снь2тмьхо2ь2щаь2щеь2щуья1вэв1рэд1рэк1лэкс1э3маэ3ньэо2зэ1реэ1риэ1руэ1рыэск2эс3мэ2соэ2теэхо3ю2бвю2блю1дьюз2гю1зою1лаю1лею2лию1люю2мчю2нью1о1ю1раю1рею1рию1рою1рую1рыю1тию1тою1тую1тыю2щья2бря1воя1вуя2гняд1вяд1ря1зояк1ся2лья2мья3наянс2я1рая1рия1роя1рьяс1кяс1ляс2тя1таят3вя3тия1тоя1туя1тыя1тяях1ля1хуяце1я2шл2яю_2я1я6зь_й2кь6тр_а1вёа1лёа1рё1веё1вёз1вёс1вмё1вьёг1лёд1вёд1рё1дьёе1вё2ежёе3зёе1лё2епёе1рёё1веё1воё1ву2ёжеё3зеё1каё1киё1куё1лаё1леё1луё1лыё2мчё3наёнс22ёпеё2плё4пн2ёпоё4птё1раё1реё1риё1роё1руё1рыё1ск2ёслё3соё1стё1таё1тиё1тоёт1рё1туё1тыё1тюё1тя3жёвж2жёз1вё2знё3зуё1каё3куё1лён1лёх1луё3льёне3ё1ньёо1лё2омёо1рёо3фё1рьёс2дё1с2ёс2тё1сьё1т2ё3тьё_уё2у1лёу1рёу3шёц2вёч2тё1чьё3шьёы3сёь2щё_не88не_8бъ_8въ_8гъ_8дъ_8жъ_8зъ_8къ_8лъ_8мъ_8нъ_8пъ_8ръ_8съ_8тъ_8фъ_8хъ_8цъ_8чъ_8шъ_8щъ_', - 5 : '_аб1р_ади2_ак1р_би2о_го2ф_дек2_ди1о_до3п_епи3_за3п_иг1р_изг2_из3н_ик1р_ле2о_на1в_на3т_не3т_ово1_ог3н_ос2п_от1в_ри2ч_ро2х_су2ж_тиа3_ти2г_ти2о_ум2ч_ур2в_ут2ра3блааб2люаб1риав3зоави2ааво1са2вотав1раав2сеа2глеаг2лиа2двеад2жиад1роаду3ча2дынае2гоае2диае2реаз1влаз1драз1обаи2г1аи3глако3т2акриа3лаг2алекало1залу2ша2льщ2аметамои2а2нафан2спанс1уаост1а3плаап2ра1аргуар2жа2ас1кас3миас3ноа1сьи1атакат3ваат1виат1ву2атезато2шат1риа1тьеа3тьюа3тьяау3доа2улеаут1рау3чьа2ф1лахми2аэ2лиаю1таба2бвба2дрба3зубалю1бас3мба1стба1трбе2глбе2гн3бе2збе3зибез3нбез1рбес3пби2обби2одби2онби2орби2тв1благб2ланб3ленб2луд2б2льб2людб2люеб2люлбо3вшбо2гдбо1з2бо2мчбо3мшбону1бо1рубо2сабо1скбо2твбот2рбоя2рб3рабб2равб2ран1брасб1рахб1рейб1рекб2ремб2рехб2ридб1рол1б2рю2б1с2бук1лбы2г1быс1кбыст1бю1тава2брвадь2ванс2ва1ства1трв2дохвед1рве3ду3везе3везлвез2у1вей_ве2п12вердвет3р1в2з2взо1бви2азви2акви2арвиа1тви3афви2гвви2гл1винт1винчв2левв2лекв2летв2лечв2лияв2люб4в3нав2несв3ну_во1б2во3вкво1двво1дрво2ерво2жжво3м2во1ру2ворц2ворьвос1кво1смво1снвот2рво1хл2вра_в2равв1рас2врац2вре_1вридв1риив1рикв1рилв1рисв1рит2в1ро2в1ры2в1с23все33в2сп3в2сювто3ш1ву1з2ву1кву1с2вух3вву1члвы3г2вы3знвы3т21вьин1в2э1г3дан2г3диге2б1гено1ге2обге2одге1орги2блги3брги2грги1слгист22гла_г2лавг1лай2глаяг2лет2гли_г2лин2гло_2глов2глог2глое2глой2глою2глую2г1лыг2ляж2глякг2навг2нанг3не_г2невг3ненг3непг3несг2нирг2ноег2ноиг2носго1б2го2влго2злгоз2нгоиг2гоми2го2сдго1сн2готдгоу3тго1члг1раег1райг1рарг1регг1рекг1рецг1рикг1рилг1ринг1рисг1ричг1ровг2розг1рокг1ронг1ропг1ротг1рофгру2пг1рывг1ряег1рялг1рят2г3с2да2б1да2грдат1р2двиз2дводд1воз2д1д23деврде2зиде2зудеио2де1кл3демеде2оддео3пде3плдес2кде2срде1хлд2жамд2ж3м2д1з2ди2аддиа2зди2арди2асди2обди2ордио1сди2пиди3птди3фрд2лев2д3м2днеа2днос24д3ныдо2блдов2лдо1д2до3дндоз2ндои2р2доктдо3плдос2п2дотд2дотл2дотъдо3ть3дохлдо2щуд1рабд1рард1рахд1рачд2раюд2реб2дрезд2релд2ремд2рий2дринд2рипд2рихд1родд1роед1ройд1ролд1ронд1росд1ротд1роюд1руб1друг1дружд1румд1рую2дрывд2рябд2рях2д1с2дс3кндуб3р2д1удду2дадуп1лдус1кд1услду1стду2чидуэ1т2д3це2д3ш2дъе2м2дымедь3яреади3еа3доеат1реба2се1браеб1рие1броеб1ры2евер2еволев1риев2хое2глее2глие2глоег2наег2но2ег2ред1вое1джее2дохе1друе2дуге2дусе2дынее2гиее1с2ее2стеж3дие2ж1резау3езд1реззу3е3зитез1обе1зомез1опез1отез1ошез2ряез1упез1усеи2г1еис1лека2б2е1ко2е1крек2роек1скеми3кемо1с2емуж2емыс2е1нрен3ш2е1о2бео3даео2деео2дое1о2жео3кле1ол_е1олаео3лие1олке1олые1олье1он_е2онае2ониео3ное1онсе1опеео2прео4пуео1ске1осме1оснео3схе1отле1о2че1о2щепат2е3плаеп1луе3плые4п3сер1вее3ре_ере3перо2б2еролер3ске3с2аес2бае2скее1слуе1слые1с4ме2спуе2стле3стует1веет1вие1тво2етечето1сет2ряе1тьее3тьюе3тьяеуб3реф1рееха2тех1обех1реех1ружа2блжа2бржат1в2ж1б23ж2глж2дакж2дачж2деп4ж2дл3ж2дяже3д2же1клже1о2же3п2же1с2же3ск2жжев2ж1з22жирр2ж3мо2ж1обжоу1сз1авуз1адрзае2дзае2хза3з2з1акт3з2анза3назанс2зар2взар2жзаст2за3ткзач2тза3ш2з2вавз2ван2зваяз2везз3в2кз1вла2зволз2глизг2наз2гнуз1д2вз2дешздож3зе2б1зе2евзе2од3зий_з1интзи2оззи1опзиу3мз2лащз2лобз2лопз2лорз2лющ2зна_з2навз2наез2найз2накз2нанз2натз2наю2зная2з3ни2з3ныз2обезо2бизо2глзо1дрзо1з21зой_1зок_з1окс1зол2зо1лгзо1лжзо3м21зом_2зомн2зонрзо2осзо2паз2оплз2опрз1оргз1оснзо1спзо2твз2отез1откз2отозо2шиз2ракзра2сз2рачз2ренз1ресз2риш2зуве2зу2г2зу1к3зумезу2прз1урбзъе2м2зыме2зымчи2агри2адеи2адииа2муи3анаианд2и3атуи2а1хиа2цеи2б1р2иваж2и1веи2в3з2и1вои1в2ри3в2сив2хои2глеи2глиигни3иг1роиг1руиг1рыи2дейи1д2жие3деие2зуи3ениие1о2иепи1и3ж2диз1в21из1дизо2ои3к2аик2ваи2квии2кляик1роик1скильт2имои2им3пли2м1рим2чаино1с1инсп1инсуио2боио2врио2деио3зои1окси1олеи1опти3ораио1руио2саи1отаи1отки1отсиоуг2ио2хоипат2ип2ляириу3ис3кеис3киис1лыис3меис3муис3нои2стли1сьиита2вит3ваит1виит1вуи2т1ри3тьюи3тьяиф2люиха3ди3х2оихо3ких1реих1рииш2лии2шлыию3тай2д3вй2о1сйо2трй3скайс2кейс4мой2с3фйх2с3ка2блказ3нка1зо1кал_1кало1калс3к2аска1стк2вакк2васк2вашк2возке2глкед1ркиос1ки2пл2к1к22клемк3ленк1леок2ликк2линк3лияк2лозк3ломкло3т1клук2кля_2клям2кляхк2ноп3ковако1др3конскоп2рко1руко1сккос3мко1сп1котнко2фрк1релкре1ок1реч1крибк1ридк2ризк2ритк1рихк1роак1робк2роек1рокк1роок1рорк1роск1рофк1рохк1роэкру1ск1рядк2с3вк2с3дк2сибк1скикс1клк1скокс3тек1стокс1трк1стукта2ккто1ску1ве1кулякуп1лку3рокус1кку1стку3ть1куче1куют3кующ2к1х22лабела2бл2лагола2грла1золак2р1лам_ла2усла2фр1ла1х2л3д2ле1влле1джле3доле1зрлек1л2лемнле2сбле2скле1твле1хрлиа2м3ливо3ливылиг2ллие3рли2кв2лимплио1сли2пллис3мли2твлиу3мли1хлли1хрл2к1ллни2ело2блло2влло1др2лоенло1звло2клло2рвло1рулос1к2лотдлот2рло2шл2л1с2лу1брлу1знлу1крлуо2длу3ть2л3ф22л1х2л2х3в1лых_2льск1льща1льще1льщу1люсьлю1таля1ви3ляво3лявыля1реля1рума2взма2гнма2дрма2дьма1зомас3лма2чтм3бля2м3в23м2глмеан2ме2егме2елме1зомеч1т2м1з2ми1зв2миздми1знми2крми2озми2ор2м1к2м2леем2лел4м3намне1д4мноем2нож4мной4мномм2нор4мноюм2нут4м3нымо1б2мо3влмо1дрмо2жжмо1звмо1зрмо3м2мо1румо1сммо1сн3мотим1раб2м1рому1стмут1рму3тьм2чавм2чалм2читм2чиш3м2щемы2мрмя1стнаб2рнаг2нна3ждна1з2на2илна2ин4наккнап2лна1с2на1твна1х2наэ1р2н1б2н2г1внги2онго1сн2дакн2д1внде3знде2сн3д2знд2рен2дрянд2спне1б22невннед2оне3дунее2дне1звне1знне1зоне1зрне1клне2олне3п2нес2кнест2не2фрне1хрне3шк2н1з2нзо1сни3б2ни2енни2клнила2ни1слнис3пнкоб2но1брно2влно1двно1дрно2ерно1звно2здно1зрно3кн3номеном3шно2рвно1руно2сч2нотдно3ф22н1ре2н1рин2с3внс2кен3слан2с3мнст2рнсу2рн2с3фн2съ3н2т1внт2рант2рент2рунт2рынут1рня1ви2о1а22обиоо1блюобо2с2обото3влаов3ноов2се2о3гео3гря2одано3де_о2дыно2дьбое2жиое1с2ое2сто2етоо3жди2озавоз2вио1здрозе1ооз3но2озоно2зопоз1уго2зымо3зысои2г1оиг2нои3мо2ок2ло3клюоко1бок1ск2окти2окумом2блом1риом2шео3мьяоно1боо3псоос3мо2отио3пако3паро2плиоп2лоо2пляоп2риоп2тоо1р2вор2тро1руео1руко1русо3садо2скеос1кио1с2лос3миос2пяос2свос2тао2сучо1с2чот3ваот1веот1виот1вло3терот1риот3смоту2ао3тьюо3тьяоус2коу3таоу3то2офаш2офит2офон2офото2фриох1лыо2хляох2ме2охороча1соч1лео3члиош3ваош2лаоэ1тиоя2рипави3пав3лпа2вьпа2дрпа2енпа1зопас1лпа2унпа1хупа2шт2п1в2пе2двпе3запе3зопе2льпе4плпе2снпе2сцпе2счпе2трпе2шт3пинк3пися4пла_пла1с2пленп1лею2плив2пло_2плов2плог2плый2плымп1лынп1лых2плю_п1лютп2лясп2ляшп3но1по1б2по3влпое2лпое2хпо1знпои2щ3полкп1оргпор2жпо1рупо1с43послпо3сспот2впот2рпо1х2поэ3мппо1д3превпре1зпрей2пре1л3претпри3вприг2при3кпри3лприп2п2риц3проипро3п2п1с2п3синп2т3впуг3нпу1стпу3тьпэ1рара2бл1рабора2гвра2глрад2жра2дцрак2в1ралг1рамк1рамн1раслрас3прас1трат1в2рахи1ращи2раятрб2лар2блерб2лорб2люрбо3ср3вакр3варр3вежр2вео1рветр3винр2витр2г1лрда1ср2д1врди2ардос2ре1вррег2нрее2врее2дрее2л1резкре1зррез2у1рейш1рекш3ремо1ренк1реньре1онре1опре1ох1репьре3р2ре1слре1счре1твре1чтре3шлр3жа_р3жамр3жанр3ж2др1з2ври3бр2риги2риджрие2лрие3рриз2врик2р1ринсрио2зрио2сри1отри3р2ри1с2ри3сб2риспри2флри3фрри1хлр2к1л2р1л2рнас4рне3оро2влро1двро1длро1др1родьрое2лрое2мрое2хро1зр1рокрро3псро1руро1ск1рослро1смрос2ф1росш1росю1роткроуг2ро2фрро1хлрош2лро3шн1роязрп2лор2плюрств2р2т1врт3варт2влрт1рарт1рерт1риртус1р3тьюрт1яч1рубаруг3н2руксрус1крус3лру3ть1руха1рухо1ручнр3ш2мры2двры2клры2х1ря1виса2блса2дьса2квса2клс1аппса1трса2унса1х22с3бусег2нсе1з2се1квсек1лсекс4семи1се2сксе2стси1омси1опси2пл2скам2скахск2вас2квис2кляс1кон2скошс1кра2скуе1слав1сладс1ламс3левс3леес1лейслео2с1летс3лею2слицс2ложс1люс2с3ля1смесс4меяс3мурс2нас2сная2сную2с3нысов2рсо1з2со3м2со1русо1сксо2сьсот2рсо1члсош2лс2павс2пеес2пелс2пенс2пехс2пешс2пеюс2пим2сполс2посс2рабсра2сс1ратсс3во4с5сис3с2к1ста_4ств_2ствлст2вя1стей1стелсте3хс3тешс2тиес2тиис2тичс2тиюст2ла2стли2стля1сто_1стов1стог1стод1стое1сток1стом1стон1стос1стотс2тоц1стою2стр_с1тут1стуюс2тыв2сть_2стьс3стью1стья1стям1стяхсуб1осу3глсу2евсу1крсума1супе2сус3лсус3псу1стсут1рсу2ф31с2фе1с2хе2с3цис2часс3чив2счикс2читсъе3дсъе3лсы2г1ся3тьта2блтаб2рта2гнта1з2та2плта1стта1тр2т1б22т2ват1вейт1велт1ветт1воет1вос2твою2т1врте2гнте1зо3текатек1л3текште1ох3терзтер3к3терятест2те2хотиа2мти2блти3д2тиис1т1импт1инд2тинж2тинфти1хр2т1к2тло2бтми2с2тобъто2влто1з2ток2р2томс2тонг1торг1торж1торсто1ру1торш2тотдто3тктпа1ттрдо2т1реат1регт1редт1реет1рецт1рею1трибт1ривт1рилт1римтри1от1риттри3фт1рищ2тройт1рортро3т2трою1трубт2руд2трукт2румт2рутт1ря_т1рявт1ряет1ряжт1ряйт3рякт1рятт1рящт1ряя4т1с2т2с3дтсеп2т2с3мт2с3пту2грту1слту1стту2фл1туша1тушо1тушьты2г12тя2чу2алеу3белубо1дубос21убрауб3рюу1ве_уг2науг2неуг1реуг1ряуда1суд1роуес2лу1з2вузо3пуко1бу1ку1у1лыху2озауост1уо2т1уп1люу3проурке3у2родурт2ру2садус1каус1киуск3лу1скрус3лиу1стеу1стяу3сьяу3терут2ляут1риу1тьеу3тьюуф2ляух1адуха2тух3ляу2чебуш1лафа2б1фа2гнфа1зофан2дфа1трфев1рфед1рфе1о3фи2глфи2зо2фобъфо2рвфо1руфос1кф1рабфра1зфра1сф1ратф2ренфре2сф2рижф2ризф2ронф2торфу3тлха2бл2х1акхан2дх1арш2х3ве2х3вихиат1хи1с2х1лавх1ласх1латх1лац1хлебх2лесх1летх3ло_х2лоп1х2му3х2ныхо2пехо1рух1осмхох1лх1раз1хранх1рейх2рисх1ров1хром2х1с2х1у2гх1у2рху3ра2х1ч2ца2плце1отцеп1лцес2лци2к1цик3лци2олци2скциф1р2ц1к2ц1о2б2ц1от2ц3ш2цып3лча2дрча2дцча2ер3чато3чатыче1влче2глчер2сче1сл1ч2лач3легч3лежч2ли_1ч2ло2ч1таша2блша2гнша2дрша1стш3венше2глше1о2ше3плше1с2ши2блши2плшиф1р2ш1к22шленш2ли_2шлив2шлилш2линш2лисш2лифш2ло_2шловш2лог2шляе2шлякш2ляп2шлят2шляч2шляю3ш2мыш2нуршу2евшуст12щ3в2ще2глщед1рщеис1ще3шкъе3доъ2е2ръе2хиыд2реы2дряы3ж2дыз2ваыз2наы2к1выко1зыре2хыс1киыс1куыт1виы3тьюы3тьяы2ш1лье1зоьми3дьми3кьне2оь2п1ль2стиь2стяьти3мь2тотьт2реьт2руьт2рыьхоз1ь3ягсэк2стэле1оэпи3кэс3теэт1раюзи2кю2к1вюре4мю2с1кю1стаю1стею1стою1стяюха1сяб1раяб3реяб1рияб3рюя1в2хя2г1ляз2гня2к1вя2к1ляст3вя1стояст1ряти1зя3тьюя3тьяа2ньшгст4ре2мьдзаи2лзао2ззаю2лз2рятзу2мьпое2ж2стьт6хуя_ы2рьмыя2вяьбат2а2двё2алёк2амёта1тьёб3лёнб2люёб1рёкб2рёмб2рёх3везёвёд1р2вёрдв2лёкв2лётв2нёс3всё3г2лётг2нёвг3нёнг2ноёд2рёбд2рёмдъё2м2евёре2глёер1вёет1вёе1тьёё1браёб1рыё1друё1зом2ё1ко2ё1крёк2ро2ёмужёпат2ё3плаёп1луё3плыё3ре_ёр3скё3с2аё2скеё3сту2ётечёто1сёха2тёх1ружё1с2з2вёзз2наёз2отёзъё2м2зымё2и1вёих1рёк3лёнк2роёлё3долёк1ллё2ск2лоён1льщё3м2щёнд2рёнё1б23номёоё2жио2скёот1вёо3тёрпё2тр2плёнп1лёюпоё2ж3прётр2блё1рвёт1рёзкрёз2у1рёкш3рёмо1рёнкроё2мсёкс4сё2ст2скуёс1лёт1стёлстё3хс3тёшт1вёлт1воётё2гнтё1зо3тёкатёк1л3тёкштёр3ктё2хоуг2нёуг1рёу1стёу3тёру1тьёу2чёб2х3вё1хлёбх2лёсчёр2с2шлёнъ2ё2рыд2рёырё2хьё1зояб3рё', - 6 : '_аг1ро_аль3я_ас1то_аст1р_де1кв_ди2ак_до3т2_зав2р_ио4на_лес1к_люст1_ми1ом_мо2к1_на3ш2_не3вн_не1др_не1з2_не1сл_нос1к_нук1л_ос2ка_ос3пи_от1ро_от1ру_от1уж_по3в2_по3ж2_поз2н_прос2_ре2бр_ри2ск_септ2_те2о3_тиг1р_уз2наабе3ста3в2чеага1с2а2гитиа2глосаг2лотади2ода2д1руаза4ш3аз3веза2зовьа2зольа1зориаз2о1сак3лемако1б22аконсалуш1та2минтам2нетамо1з2ана2дцан2драан2сура2н1узап2ломапо4всап1релара2стар2бокар2валаре1дваре1олар2торар2т1р1ассигаст1вуас3темас2тинас2тияас1тооас1туха1стьеас2шедас2шесат1обеа2томнат1рахба2г1рбе2д1рбез1а2без5д4без1о2бе2с1кбе2с1тбес3тебес3ти1б2лазб3лази1б2лее1б2лея1б2луж2б3лю_бо1брабо1драбо1л2жбо1льсбо3м2лбо3скобо3стибра1зо1б2рал2б1рамб2рать1б2рач2б3рая1б2редб2ритоб2ритыб1ром_3брукс2б3рю_бу2г1рва2д1рва3ж2два2стрве2с1квзъе3д3в2кус2в3лаб3в2нук3в2нучвои2с1вос3пево2стрво3х2т2в1рам2в1рах2в1рен1в2ризвро3т2в3ская4в3ски4в3скувто1б2ву2х1а3в2шиввы3ш2лга1ст2г1лами2глась3г2лифг3лоблгнит2рго3ж2дго2с1аго1склго1спагу2с1кда2гендаст1р2д1вид2двинт2двинч2д1вис2д1вит1дворьде1б2лде1б2рдез1о2дерас2де2с3вди2алиди2алодио3деди1отиди3фто3дневн4д3но1дно3д23д2няшдо3в2мдо3ж2д2долимдо2м1р2допледо2предо2рубдот2ридо2ш3вдо3ш2кдо2шлы1дравш2дразвд1ране2д3реж1дрема1дремлдрем3н1дремы2д3рендре2скд2ресс1д2рож2д3роз1д2рыг1д2рягду2ста2дут1рды2г1р2ды2с1еб1ренеб1рове2б3рюе3в2меев2нимев2нятевра1с2е1вреев1рееев1рейев1реяега1с2е2гланедноу3ед1опре2дотве2д1още2дру_е2ду2бед1убое2дувеед1уст2е3душе2евидее2в1реест1ре4ждевеза2вре1з2ваез1о2гез1о2рез1у2дез1у2кезу2соезу2сыез1у2хез1учаеис1трек1стееле3скеле1сцеми3д2ен2д1реоб2рое2о3глео2гроеоде3зе2о3роеост1реот2руепа1трепис2кеп1лешеп1лющер1актере3доере1дрере1к2ере1х4ерио3зер1обл2ерови2ерокреро3ф2ес1кале2сковес1ласес2линес2ловес2ломес2пекес3полес2танес2четеук2лоефи3б2ех1атоех3валех3лопех1опоех1у2ч3ж2дел4ждемеже1к2вза2вруза3ж2дза3мнеза3р2д2з3ва_з3валь1з2вон2з1вуюзи2онози3т2рзко3п2зо3в2мзо2о3пзот2резот2ризро2с3зу2б3р2з1уз3з1у2моз1у2тезу2час2зы2г12зы2с1иа2зовиа2налиа1с2киа1стаиа1стоиат1роиг1рени2г1ряиди1омиди1оти2еводиз2гнеиз2налика1с2ик2с1тило1ски2менои2мену2имень1инстии3оновио3склио1с2пио2т1випа1трипо3к2ира2сти2р1ауири2скиро1з2ис3ка_ис3камис3кахис3ковис3ку_и2сламисо2ски2с3при2ст1вис1тязи2т1веит2ресит3роми2т1учи2х1асих2ло2ихлор1й2с3мука2брика3днека2д1рка2п1лка2прекар3трка1т2рка2ш1тке2с1кке2ст12к3ла_2к3ле_к3лем_2к3ли_2к3лив2к3лис2к3ло_2к3лос2к3лю_3к2ниж3к2няж1кольс2коминко2р3вкре2слкри2о3ксанд2к1стамк1стан3к2то_ку2п1рла3ж2д1лами_ла1сталаст1вла1стела1стола1стула1стяла1т2р1л2галлев1рале2г1лле1онтле1о2сле4скале1с2лле1спеле1т2рли2гро2л1испли2х3вло1б2р2ловия3ловодло2г3длого1слок3ла3лопас2л1оргло1с2плу1д4р1льсти1льстяма2к1р2м1аллма1с4тма2тобма2т1рме2с1кми2гремик1рими1опими1с2л3м2нешмоис1тмо2к3вмос1камо1с2пмо2т1рм2с1ор3м2стиму1с2кму1с4лнаби1она1в2рна3м2нна1рвана1т2рн1а2фрна3ш2лнд1рагнд1ражнд2риане1в2дне3вняне1д2лне2дране1дроне3ж2дне1з2лне1к2вне3м2н3не1о2не2одане1р2жне3с2нне1с2пне1с2хне1с2чне1т2вне3т2лне1т2р2нинспнист2рнко3п2н2к1ронно3п2но3з2оно1склно2слино1с2пн2сконн2с1окн3с2пентр1ажн2трарнтрас2н2тривн2трокнтр1удн2т1ря2н3ю2роб2левоб2лемобо3м2о2бра_о1браво1брано3в2лоо2в1риов3скоог3ла_ог3ли_ог3ло_од1вое2оди3а2о3димод2литодо3про2досио1драгод1ражод1разод1рако1дралод3ребо1дробод1рово2дымао2дымуо2е1вло3ежеко3ж2дуо1з2ваоз2вено1з2вяоз2глооз2доро2з1обозо1ру2о3кан2о3колол2ган1олимполу3д2о3множоне3ф2он2труоост1ро2пле_оп2литоп3лю_о3плясопо4всопоз2но3п2теора2с3ор2б3л2о3регоре2скор1испор1уксоса3ж2о2с3баос3кароск1воо2ски_о2сковос1койос1комос1коюос1куюос3лейос3логос3лыхос3мосос2нялос2пасо1с2пуос2с3мо3страос2цен2о3тек2о3техо3ткалот1работ1радот1разотра2сот1режот1рекот1речот1решот1родот1роеот1рокот1росот1рочот1ругот1у2чо2форио2ч1топас1тапа1степас1топас1тупа1тропери1опе2с1кпиаст1пи2ж3мпи2к1рп1лем_п1лемсп2ленкп1ле2оплес1к3п2ликпо3в2спод1вопо1звепо1здопо1з2лпо3мнопо3мну3по3п2по2шлопо2шлыпо2шляпре1огпри3д2приль2про1блпрод2лпро3ж2про1з2п1розопрофо23п2сал3п2сих3п2тихпус1кура2б1р1равняра2журра2зийра2зуб1ракизра2к3лра2нохран2сцра2п1лрас3к21растара2такра1т2р1р2вавр3ватарег2ляре2досре3ж2дре1з2лре1зна1ре1зоре1к2лре3мноре1о2рре1о2фре1о2црес1кире1с2пре3старе3сторе1т2рреуч3три3в2нри2глори3г2нри1д2рри3м2нри3м2чри3стври3т2рриэти2рне1с2рно3слро2блюро1б2р1рогол1рогруро3д2зрод2ле1розарро1з2в3розысрои2с31рокон1ролис1ролиц1ромор1ронаж1ронап1роносрооп1рро2плю2р1оргро1р2жро2скиро2скуро1с2п1рот2врот2рир3ствлр2таккр2т1обрт1оргрт2ранру2дар1ружейру1старуст1рр2х1инр1х2лор2х1опры2с1к2с1арк2с1атлса2ф1рсбезо3сбе3с22с3венсе2к1рсере2бсе3стасе3стесест1рс2канд1с2каф3скиноск3ляв2сконас2копс2скриб2с3ла_2с3лая2с3ли_2с3ло_с3лому2с3лос2с3лую2с3лые2с3лый2с3лым1с2наб1с2неж2с3никсно1з2со1б2рсо1л2гсо2риесо1с2п1с2пец2списяспо1з2сре2б1сре3доссанд2с3с2нес2сорист1верст2вол1с4те_1стен_с3тет_с3тете2стимп2стинд2стинф2стинъс2тишкс3т2лест2лилст2литс2то1б3с2тои2сторг2сторж2сторсстрас24страя2стредст1рей2стривст1риз2стрил2стрищст1роаст1родст1рохст2рубст1рушсуб1а2с2ценасы2п1лсыс1ката1вритак3лет1во1з2т1войтеле1отем2б1те2о3дте4п1лте2рактере2оте2скате2скути1знатила2м2т1инвти1с2лти3ствти3ф2р3т2кав3т2кан3т2кеттмист1то2бесто1б2лто3д2р2т1оммто1с2нто1с2пто1с2цт1рага2т1раж1требо1требут1ребьт1ревет1ревшт1резат1резнтреп1л3тре2стрес1кт1рестт1ретут2решь4тринст1роглт1роидтро3плт1росо4т3роц2т1рядту2жинты2с1к1у2бытуд1рамуе2с1кун2д1руро2длус1комус1ку_у3х4вофанд1рфе2с1кфиа2к1фи2нин2ф1оргфор3трфото3п2ф1у2п2х1изы1х2лор2х1о2кхо2пор2х1оснхри2плхро2мч2цетат2ц1о2дча2евоча2евычаст1вча1стеча1стуча1стячерст1ша2г1ршан2кршар3т2ша1тро3ш2кол2ш1лейш2лите4ш3мы_ще1б2лщи2п1лы2д1роы2к3лоынос3лыра2с3ье2с1кь3п2тоь2трабэри4трэро1с2эс2т1рэтил1аю2б1рею2идалюри2ск3явиксям2б3л_вст2р_реа2нбезу2свиз2гнвыб2редос2ня4ж3дик4ж3дичла2б1рлу3с4нни4сь_о2плюсоти4днпти4днреж4ди2стче_сы2мит2сься_аз3вёзам2нётас3тёмбё2д1р2в1рён2доплёдо2прё2д3рёж1дрёма1дрёмы2д3рёнеб1рён2е1врёерё3доерё1к2ес2чёт2ё1вре2ё3душёз1о2гён2д1рёс2танёх1атоёх3валёх3лопёх1опоза3мнёзот2рёиг1рёнла1стёлё4ска3м2нёшод3рёб2о3тёкот1рёкот1рёшп2лёнкплёс1к_рё2бррё1зна1рё1зорё3старё3стород2лёсе3стёсёст1р1стён_с3тёт_с3тётес3т2лётё4п1лтё2скатё2ску3т2кётт1ревёт2рёшьчёрст1', - 7 : '_во2б3л_во3ж2д_за3м2н_ле2п3р_му2шт1_не1с2ц_обо3ж2_ра2с3т_ре2з3в_ро2з3в_ро2с3л_хо2р3в_че2с1ка2д1облаз2о1бра2н1о2бан1о2храпо3ч2тбили3т2б2лес1к2б3люсь1б2роди1б2росибро2с1кве2ст1вви2а1с2ви1с2ниво2б3лагри4в3нде2з1а2ди2с1тр2д1обладо1б2рад1о2сенд1о2син2д1осно2д1отря1д2разнд1ра2с3дро2г3неан2д1ре1д2лине1о2свие3п2лодере3м2не2р1у2пе2с1ка_е4с1ку_2ж1о2т1за2в1ри1з2о3ре2з1у2беи2л1а2ци2л1у2пино2к3лино3п2лисан2д1ки1с2ни2к3ласько1б2рикохо2р3ла2д1аглан2д1рла2ст1рле1з2о3лу3п2ломан2д1рме2ж1атме2ст1рна2и1с2на1р2вине2р1отни2л1ални2л1ам2н1инстнти1о2кобо1л2го3в2нуш1о2деяло2д1отчо2д1у2чоза2б3воко3п2ло3м2немо3м2нето2п1лейопо2ш3лоро2с3ло2с1ка_о1с2копо2с1ку_о1с2нимо1с2шивошпа2к3па2с1тыпе2д1инпе2к1лапе2ст1рподо3м2радо1б2рас3т2лрво1з2дремо2г3рес2с3мро2д1отро2ф1акр2т1акт2с1альп2сбе3з2сто2г3нс4т1ровсче2с1кте2с1ките2с1ко3т2ре2хтри2г1л2т1у2пруре2т3русла4ж3уто3п2сх1ра1с2ь2т1амп_бо2дра_об2люю_об2рее_об2рей_об2рею_об2рив_об2рил_об2рит_пом2ну_со2плаатро2скбино2скдро2ж3ж2дружейилло3к2ме2динсмис4с3ннар2ватне2о3рен2трассо4ж3девойс4ково2м3че_он2тратосо4м3нпо2додепо2стинпрем2норедо4плроб2лею2сбрук1б2лёс1кё2с1ка_ё4с1ку_1з2о3рёлё1з2о3о3м2нёмо3м2нёто2п1лёйпё2ст1рсчё2с1ктё2с1китё2с1ко3т2рё2х_чё2с1к', - 8 : '_ар2т1о2_ме2ж1у2а2н1а2ме2д1о2бедло2к1а2ун2тр1а2го2д1о2пео2д1о2пыпо2д1о2кре2д1о2пр2т1у2чи_доб2рел_до1б2ри_па2н1ис_ро2с3пиди1с2лове2о3позиере3с2со2з1а2хавни1с2коло1и2с1трони3л2ампере1с2нсо2стритсо3т2калтро2етес_доб2рёлтро2етёс', - 9 : 'е2о3платои2л1а2минме2д1о2сммети2л1амо2д1о2болпо2д1у2роприче2с1крни3л2а3мпричё2с1к', - 10 : 'но4л1а2мин' + 2 : "1г1ж1м1п1ф1ц1ш1щъ1ы1ь11э1ю", + 3 : "а1ба1да1еа1иа1ка1уа1ча1я1баб1вбг21бе2бжб1л1боб1т2бф2бц2бш2бщ1бы1бь1бя1вав1дв1л2вмвф22вц2вш2вщвъ21вы1вяг2а2ггг2и2гп2гф1дадв21де1дид1л1до2дп1ду2дфд1х2дщ2дъ1ды1дяе1а2ебе1ее1и2еоеэ2е1яжг2ж2м2жф2жц2жъ2зг1зе1зиз1лз1н2зт1зу2зцз1ч2зш1зы1зяи1аи1еи1ии1ки1л2ипи1ри1ти1чи1я2й1йд2йя12кг1ке2кмк2о2кп2кск2у2кф2кц2кш1кьк2ю2лб1ли2лм1ло2лпл1т2лцл1чл2ю1ля2мж2мм2мп2мф2мц2мщ2мэм2ю1на2нг1не1нин1л1но1нун1х2нц2нш2нщ1нын2э1няо1вог2о1ео3и2ойо1ко1т2оюо1япе1пх22пц2пш2пщ2рг2рз2рм2рп2рф2рх2рц2рш2рщ2рър2ю1сасг2с1зс2мс1н1сосп21ср1сусч2сш21сы1ся2тг2тжтм22тф4тц2тщ2тъ2ть2тэт2юу1ау1еу1иу1оу1у2уэу1я2фгф4и2фм2фф1ха2хг1хе1хи1хохп22хшца12цгци12цм3цу2цц3цыцю11чач1в1чеч2ж1чи1чм3чо1чуч2хш2в2шм2шфш1х2шц2шь2щмъю2ъя2ые2ыи2ыу2ьб2ь2еь2оь2юь2яэ1в2эгэ2мэ2нэ2пэс1э2фэх2э2цэя2ю1аю1бю1вю1ею1ию1к2юмю1хю1чю1яя1ея1ия1кя1ля1уа1ё1бё1дёе1ё2ёб1зёи1ё1кё1нёо1ёпё1у1ё1чёь2ёю1ё", + 4 : "_аи2_ау2_ии2_ио2_ис3_ль2_оз4_ск2_ст2_уб2_уд2_уе2_ук2_уо3_уп2_ус2_ую2_юс14а3ааа2паа2раа2ца3буав1ва1веа1виа1воа2вта1вуа2вх2агаа2гд2агоа3гу2адва2длад2цае2ла2епае2сазв2азг2аз1ра2ихак1в1аккак2лак1са1лаа1леа3лиа1луа1лыа1лю2амаамб42амоа2мчан1ра1нь2а1оао2дао2као2рао2с2апоа1раа1реа1риа1роа1руар1ха1рыа1рюа1ряа1таа1тиа1тоа1туат2ха1тыа1тюа1тяа2убау2дау2хау2чауэ1ах2аах3с2ачаа2члач1та2шла2эрая2бая2вая2зба1зба2о2б1ббвы22б1д3бев3бее3бец2бещб1з21б2и3биаби2б2биж3бик3биоби1х2б3к2блы2бля2б3н3бот2бр_2брсб1ру2брьб1ряб3скбс4л1б2убу1с2б1х2б1чбы2с2бь_2бьс2бьтбэ1р3б2ю3вагва1звах13вац3вая2в1бв1вив1вр2вг21вев3вег1вее1вез1вес1вец1вею1веявзг2взд2взъ21визви1овиу3ви2ф2в1квк2лв2ла2вли2влю2вля1вме2в1нвно1в3нывов21вод1воквоп21вох1вою2вп22вр_1врюв1ряв1т21вуаву3г2вуиву3п1вхо2в1чвып2вых22вь_1вье2вьс2вьт1вью1вья1в2юга1зга2у2г3бгба2г1ви3ге_2г3ж2г1з2г1кг1ле2г3мг3няго1з3гойг2ол3гою2гр_2грюг4саг4сб2г3тгу1вгу1с2г1ч2г3ш2г3эда1зда2о2д1бд1ве1двид3вкд1вл2двя2дг23дез2дж_2джсдип2диу3ди1х2д1к2д1нд3надо1здоп2до1с2др_д1ред1рид1рыд1рядск22д1тду3гду2оду1х2дцу2дцы2д1ч2дыг2дыд2дыт2дыщ2дь_1дье2дьк2дьт1дью1дья1д2юеа2деа2зе1вее1вие1вое2вте1вуе1вхе1вьег2дед2жее2хе2жг2ежее3зее3зяеи2деи2меи2ое1каек2зе1кие1куе1лае1лее1луе1лые1люе3ляе2мче3наенс2е1нэе1оде2оие2омеоп2еос22епее2пле4пн2епое4пте1рае2рве1рее1рие1рое1руе1рые1рюе1ряе1сге1ск2есле3со2еспе1сте1тае1тие1тоет1ре1туе1тые1тюе1тяе1у22еубеуз2еф2л2ецве1чле2шлею2гея2зжа1з2ж1в2жгаж2гиж2гу2ж1дж2диждо3жду14ждь3жев2жжаж2жежи1о2ж1к2ж1лж3ма2ж1нжно1жоу32жп2жпо1ж2ру2ж1с2ж1ч2жь_2жьс2жьт1за1заа2заб2заг4зап2зас2зат2зау2зах2зая2з1б2з1вез1виз1воз1вр1звуз1вьз3га2зж2з3з23зи_3зис3зич2з1кзко12зм2з3мн2зне2зно2зну1зов1зое1зои1зон1зоозос21зохзош21зоэ1зоюз1раз1роз1руз2рюз1ря2з1сз1ти3зу_зу1в3зуе2зупзы2з2зыщ1зье1зьи1зью3зья1з2юи2аби2авиаг2иао2и2апи2аф2и1би1вии1ву2ивыиг2ди3ге2игли2гни1двид1ри1дьие2гие2дие2ри1зоиз1рийс2и3кои3куилп2и2ль2имаи3мии2мчинд21инжинс21инф1инъи1оби2оги1оди1ози1они1ори1ошип3ни2рви2рж1ирри2сби2сдис1ки4сси1сти2тми1у2иу3пиф1ли2фри1хуи2штию4лию2нию2тия2дйно1йп2лй2сбй2снй2сшй2тмй2хм1кавк2ад1кае1кай1кам1кан1кат1ках1каю2к1бк1вик1ву2к1дкда22кеа2к1з1кивки1о1киткк3ск3лы2кль1клю2к1н1ков1код1коз1кос1кош2кр_кс3гкс3мк3сок3су2к1ткт2р3куе1куй3кум1кур1кут2к1ч1ла_1лаел2аклау11лаял1брл1вел1вил1вол1вул2гллго11ле_1лен1лехл1зо2л1клк2в2л1лл2льллю12л1нлс3б1лу_лу1влу3г1луе1лунлу1с1лую1лы_1лые1лыж1лый1лым4ль_2льд3лье3льи2льк2льм2льн3льо2льт2льц2льч3лью3лья1лю_1люж3ля_2ляд3лям3лях3магма2умаф23мач4м1бм3бимб2л2мг22м1д3мкн2м1л2м1н3мод3мон3моп3мофмп2л2мрим1ры2м1смс2кмс2н2м1тмфи32м1х2мш2мым1мы2с2мь_2мьсмью1мэ1рмя1р2нач2нащ3ная2н1внг4лнг2р2н1днд2жн2длн2дцнег23недне3енеи23неунея23нийниу3ни1х3ниц3нищ2н1кнк2внк2лнк1с2н1нноб2ноэ2н3п2н1ро2н1сн2сгн2слн2сн2н1тн2тмну1х3ную2нф2нхо12н1чн2члнш2т3ны_2нь_1нье1ньи2ньк1ньо2ньс2ньт2ньч1нью1нья1н2юо3авоап12оба1обмоб1р1объ2обьов2то2вхо1дьое1бое2дое1оое2цо1зооие3ои2зои2мои2оойс2ок2в1окто3лао1лео3лоо1луо1лыо1люо3ляо3ма2омеом2чо2мьо3наонд2о1нронс2о1о2о2оло2офо1рао1рео1рио1ро2орцо1рыо1рюо1ряос2бо1ст2осхотв21отг1отдо3тио2тм1отхо1у2оуп2о3фе2охио1хро1хуо2цооч2ло1чтош2тоя2воя2доя2зпа3ф2п1дпе2з4п3к2пл_2п1нп3нап3ны3пой2пп22пр_при12прсп2руп3со2п1тп3ту3пуб2пф24п3ч2пь_2пьтп2ю11ра_раа21раю1рая2р1бр1вир1вор1вьр2гвр2гнрг2р2р1дрд2жр2длр2дц1ре_р1зори3ариб2р2ин1риу1риц1риш2р1кр2кврк1ср2льрлю1р3ляр2мч2р1н1ро_1роу2р1р4р1срс2кр2снрс2п2р1тр2тм1ру_1рулрф2лр2хврх1лрх1рр2цв2р1чр2члр2чмрш2т1ры_1рыб2рыз1рым2рь_1рье1рьи2рьк2рьс2рьт1рью1рьярэ1л1рю_1рюс1ряю1сб2с2бы2сбю1с2вс2гис2гнс2го1сд2с2дас2дес3дис2до1с2е1с2ж1с2и3сизси1х4ск_ск2л2скнск2рск1с2сль2снос2овсо1дс3пн2спь2ср_2с1сс2сбсс2лс2снсс2псст2сс2ч2ст_2стбс2те1сти2стк2стм2стн2стп2стс2стф2стц1стыс4тьсу2бсу1всу2зсу1хс1х22сца2сцо1счас1чл2счос3шн1съ2сы2зсы2с2сь_1сье2ськ2сьт1сью1сьясэ1рс2эс1с2юсю1с2сяз1тагт2ан1тас1тащ2тв_2тви2тву2твы2твя2т1д1т2ете1д2т1зтии2тик23ткн2т1лт2льт3мщ2т1нто1д1тощ2тп22трб2трв2трг2трд2трм2трн2трп2трр2трф2трщ2трът1рыт2сб2т1тт2тм1тущ2т1х2т1ч2тш24ть_3тье3тьить2м4тьттью1тю1т1тяг1тяж1тяпу2асуб1ру1виув2лу1воу1вуу2гву2глу2гнуд2ву3дууе2дуе2луе1суе2ху2жжу1зоу1каук1ву1киу1коу1лау1леу1луу1люу2мчу3нау1ньуо2буо2вуо2куо2пуо2суо2фу2плу1рау1реу1риу1роу3руу1рыу1рюу1ряу1сгус2лу1сму2снус2пус3су1сф2усцу2счу2сьу1тау1тиу1тоу1туу1ты1утюу1тяууг2уу2су3фиуф1лу2фру2хвух1лух1р1учру1чьу3шеу3шиу2шлу2шпуя2зфа2х3фашфаэ12ф1б2ф1в2ф1дфи2жфи1о3фит2ф1кф2лаф2лиф2ло2ф1н3фон3фотф1риф1роф1ру2ф3с2ф1тф2тм2фуф2ф1ч2фш22фь_ф2ю1ха2дхао32х1б1х2вх3вых3д2хео3х1з2хие2х1к2х1лу2х1нхоп2хоф2хоя2х1рых1ря2х1т1ху_2хуе2хуй1хун1хус1хуш2хуюх1х2хью13ца_3цам3цах2ц1бц2ве2цвы2ц1дце1зце1кце1т2ц1зцип2циу32ц1л2ц1н2цп22ц1р2ц1с2ц1тцы2п2ч1б2ч1дче1очжо23чик3чиц2ч1кч2ле2чли2чма2чмеч2мо2ч1н2ч1сч2те2чтм3чук2ч1ч2чь_1чье1чьи2чьс2чьт1чью1чья2ш1бше1кш1лыш2лю2ш1н4шниш2п2ш3пр2ш1р2ш1сш1ти2штс2ш1ч4шь_3шье3шьи3шью3шьяш2ю1щеи2ще1сще1хщеш22щ1н2щ1р2щь_ъе2гъе2дъе2лъе2съя3ны2блы3гаы3гиыг2лы2гны2длыз2ды2злы2зныиг1ык2лык1сы2льы2мчы3поыр2вы3саы3сеы2сны3соыс2пы2схыс2чы2сшыт2ры3шьь2вяь2дцье1кь2знь2и1ь2кльмо1ьс2кь2снь2тмьхо2ь2щаь2щеь2щуья1вэв1рэд1рэк1лэкс1э3маэ3ньэо2зэ1реэ1риэ1руэ1рыэск2эс3мэ2соэ2теэхо3ю2бвю2блю1дьюз2гю1зою1лаю1лею2лию1люю2мчю2нью1о1ю1раю1рею1рию1рою1рую1рыю1тию1тою1тую1тыю2щья2бря1воя1вуя2гняд1вяд1ря1зояк1ся2лья2мья3наянс2я1рая1рия1роя1рьяс1кяс1ляс2тя1таят3вя3тия1тоя1туя1тыя1тяях1ля1хуяце1я2шл2яю_2я1я6зь_й2кь6тр_а1вёа1лёа1рё1веё1вёз1вёс1вмё1вьёг1лёд1вёд1рё1дьёе1вё2ежёе3зёе1лё2епёе1рёё1веё1воё1ву2ёжеё3зеё1каё1киё1куё1лаё1леё1луё1лыё2мчё3наёнс22ёпеё2плё4пн2ёпоё4птё1раё1реё1риё1роё1руё1рыё1ск2ёслё3соё1стё1таё1тиё1тоёт1рё1туё1тыё1тюё1тя3жёвж2жёз1вё2знё3зуё1каё3куё1лён1лёх1луё3льёне3ё1ньёо1лё2омёо1рёо3фё1рьёс2дё1с2ёс2тё1сьё1т2ё3тьё_уё2у1лёу1рёу3шёц2вёч2тё1чьё3шьёы3сёь2щё_не88не_8бъ_8въ_8гъ_8дъ_8жъ_8зъ_8къ_8лъ_8мъ_8нъ_8пъ_8ръ_8съ_8тъ_8фъ_8хъ_8цъ_8чъ_8шъ_8щъ_", + 5 : "_аб1р_ади2_ак1р_би2о_го2ф_дек2_ди1о_до3п_епи3_за3п_иг1р_изг2_из3н_ик1р_ле2о_на1в_на3т_не3т_ово1_ог3н_ос2п_от1в_ри2ч_ро2х_су2ж_тиа3_ти2г_ти2о_ум2ч_ур2в_ут2ра3блааб2люаб1риав3зоави2ааво1са2вотав1раав2сеа2глеаг2лиа2двеад2жиад1роаду3ча2дынае2гоае2диае2реаз1влаз1драз1обаи2г1аи3глако3т2акриа3лаг2алекало1залу2ша2льщ2аметамои2а2нафан2спанс1уаост1а3плаап2ра1аргуар2жа2ас1кас3миас3ноа1сьи1атакат3ваат1виат1ву2атезато2шат1риа1тьеа3тьюа3тьяау3доа2улеаут1рау3чьа2ф1лахми2аэ2лиаю1таба2бвба2дрба3зубалю1бас3мба1стба1трбе2глбе2гн3бе2збе3зибез3нбез1рбес3пби2обби2одби2онби2орби2тв1благб2ланб3ленб2луд2б2льб2людб2люеб2люлбо3вшбо2гдбо1з2бо2мчбо3мшбону1бо1рубо2сабо1скбо2твбот2рбоя2рб3рабб2равб2ран1брасб1рахб1рейб1рекб2ремб2рехб2ридб1рол1б2рю2б1с2бук1лбы2г1быс1кбыст1бю1тава2брвадь2ванс2ва1ства1трв2дохвед1рве3ду3везе3везлвез2у1вей_ве2п12вердвет3р1в2з2взо1бви2азви2акви2арвиа1тви3афви2гвви2гл1винт1винчв2левв2лекв2летв2лечв2лияв2люб4в3нав2несв3ну_во1б2во3вкво1двво1дрво2ерво2жжво3м2во1ру2ворц2ворьвос1кво1смво1снвот2рво1хл2вра_в2равв1рас2врац2вре_1вридв1риив1рикв1рилв1рисв1рит2в1ро2в1ры2в1с23все33в2сп3в2сювто3ш1ву1з2ву1кву1с2вух3вву1члвы3г2вы3знвы3т21вьин1в2э1г3дан2г3диге2б1гено1ге2обге2одге1орги2блги3брги2грги1слгист22гла_г2лавг1лай2глаяг2лет2гли_г2лин2гло_2глов2глог2глое2глой2глою2глую2г1лыг2ляж2глякг2навг2нанг3не_г2невг3ненг3непг3несг2нирг2ноег2ноиг2носго1б2го2влго2злгоз2нгоиг2гоми2го2сдго1сн2готдгоу3тго1члг1раег1райг1рарг1регг1рекг1рецг1рикг1рилг1ринг1рисг1ричг1ровг2розг1рокг1ронг1ропг1ротг1рофгру2пг1рывг1ряег1рялг1рят2г3с2да2б1да2грдат1р2двиз2дводд1воз2д1д23деврде2зиде2зудеио2де1кл3демеде2оддео3пде3плдес2кде2срде1хлд2жамд2ж3м2д1з2ди2аддиа2зди2арди2асди2обди2ордио1сди2пиди3птди3фрд2лев2д3м2днеа2днос24д3ныдо2блдов2лдо1д2до3дндоз2ндои2р2доктдо3плдос2п2дотд2дотл2дотъдо3ть3дохлдо2щуд1рабд1рард1рахд1рачд2раюд2реб2дрезд2релд2ремд2рий2дринд2рипд2рихд1родд1роед1ройд1ролд1ронд1росд1ротд1роюд1руб1друг1дружд1румд1рую2дрывд2рябд2рях2д1с2дс3кндуб3р2д1удду2дадуп1лдус1кд1услду1стду2чидуэ1т2д3це2д3ш2дъе2м2дымедь3яреади3еа3доеат1реба2се1браеб1рие1броеб1ры2евер2еволев1риев2хое2глее2глие2глоег2наег2но2ег2ред1вое1джее2дохе1друе2дуге2дусе2дынее2гиее1с2ее2стеж3дие2ж1резау3езд1реззу3е3зитез1обе1зомез1опез1отез1ошез2ряез1упез1усеи2г1еис1лека2б2е1ко2е1крек2роек1скеми3кемо1с2емуж2емыс2е1нрен3ш2е1о2бео3даео2деео2дое1о2жео3кле1ол_е1олаео3лие1олке1олые1олье1он_е2онае2ониео3ное1онсе1опеео2прео4пуео1ске1осме1оснео3схе1отле1о2че1о2щепат2е3плаеп1луе3плые4п3сер1вее3ре_ере3перо2б2еролер3ске3с2аес2бае2скее1слуе1слые1с4ме2спуе2стле3стует1веет1вие1тво2етечето1сет2ряе1тьее3тьюе3тьяеуб3реф1рееха2тех1обех1реех1ружа2блжа2бржат1в2ж1б23ж2глж2дакж2дачж2деп4ж2дл3ж2дяже3д2же1клже1о2же3п2же1с2же3ск2жжев2ж1з22жирр2ж3мо2ж1обжоу1сз1авуз1адрзае2дзае2хза3з2з1акт3з2анза3назанс2зар2взар2жзаст2за3ткзач2тза3ш2з2вавз2ван2зваяз2везз3в2кз1вла2зволз2глизг2наз2гнуз1д2вз2дешздож3зе2б1зе2евзе2од3зий_з1интзи2оззи1опзиу3мз2лащз2лобз2лопз2лорз2лющ2зна_з2навз2наез2найз2накз2нанз2натз2наю2зная2з3ни2з3ныз2обезо2бизо2глзо1дрзо1з21зой_1зок_з1окс1зол2зо1лгзо1лжзо3м21зом_2зомн2зонрзо2осзо2паз2оплз2опрз1оргз1оснзо1спзо2твз2отез1откз2отозо2шиз2ракзра2сз2рачз2ренз1ресз2риш2зуве2зу2г2зу1к3зумезу2прз1урбзъе2м2зыме2зымчи2агри2адеи2адииа2муи3анаианд2и3атуи2а1хиа2цеи2б1р2иваж2и1веи2в3з2и1вои1в2ри3в2сив2хои2глеи2глиигни3иг1роиг1руиг1рыи2дейи1д2жие3деие2зуи3ениие1о2иепи1и3ж2диз1в21из1дизо2ои3к2аик2ваи2квии2кляик1роик1скильт2имои2им3пли2м1рим2чаино1с1инсп1инсуио2боио2врио2деио3зои1окси1олеи1опти3ораио1руио2саи1отаи1отки1отсиоуг2ио2хоипат2ип2ляириу3ис3кеис3киис1лыис3меис3муис3нои2стли1сьиита2вит3ваит1виит1вуи2т1ри3тьюи3тьяиф2люиха3ди3х2оихо3ких1реих1рииш2лии2шлыию3тай2д3вй2о1сйо2трй3скайс2кейс4мой2с3фйх2с3ка2блказ3нка1зо1кал_1кало1калс3к2аска1стк2вакк2васк2вашк2возке2глкед1ркиос1ки2пл2к1к22клемк3ленк1леок2ликк2линк3лияк2лозк3ломкло3т1клук2кля_2клям2кляхк2ноп3ковако1др3конскоп2рко1руко1сккос3мко1сп1котнко2фрк1релкре1ок1реч1крибк1ридк2ризк2ритк1рихк1роак1робк2роек1рокк1роок1рорк1роск1рофк1рохк1роэкру1ск1рядк2с3вк2с3дк2сибк1скикс1клк1скокс3тек1стокс1трк1стукта2ккто1ску1ве1кулякуп1лку3рокус1кку1стку3ть1куче1куют3кующ2к1х22лабела2бл2лагола2грла1золак2р1лам_ла2усла2фр1ла1х2л3д2ле1влле1джле3доле1зрлек1л2лемнле2сбле2скле1твле1хрлиа2м3ливо3ливылиг2ллие3рли2кв2лимплио1сли2пллис3мли2твлиу3мли1хлли1хрл2к1ллни2ело2блло2влло1др2лоенло1звло2клло2рвло1рулос1к2лотдлот2рло2шл2л1с2лу1брлу1знлу1крлуо2длу3ть2л3ф22л1х2л2х3в1лых_2льск1льща1льще1льщу1люсьлю1таля1ви3ляво3лявыля1реля1рума2взма2гнма2дрма2дьма1зомас3лма2чтм3бля2м3в23м2глмеан2ме2егме2елме1зомеч1т2м1з2ми1зв2миздми1знми2крми2озми2ор2м1к2м2леем2лел4м3намне1д4мноем2нож4мной4мномм2нор4мноюм2нут4м3нымо1б2мо3влмо1дрмо2жжмо1звмо1зрмо3м2мо1румо1сммо1сн3мотим1раб2м1рому1стмут1рму3тьм2чавм2чалм2читм2чиш3м2щемы2мрмя1стнаб2рнаг2нна3ждна1з2на2илна2ин4наккнап2лна1с2на1твна1х2наэ1р2н1б2н2г1внги2онго1сн2дакн2д1внде3знде2сн3д2знд2рен2дрянд2спне1б22невннед2оне3дунее2дне1звне1знне1зоне1зрне1клне2олне3п2нес2кнест2не2фрне1хрне3шк2н1з2нзо1сни3б2ни2енни2клнила2ни1слнис3пнкоб2но1брно2влно1двно1дрно2ерно1звно2здно1зрно3кн3номеном3шно2рвно1руно2сч2нотдно3ф22н1ре2н1рин2с3внс2кен3слан2с3мнст2рнсу2рн2с3фн2съ3н2т1внт2рант2рент2рунт2рынут1рня1ви2о1а22обиоо1блюобо2с2обото3влаов3ноов2се2о3гео3гря2одано3де_о2дыно2дьбое2жиое1с2ое2сто2етоо3жди2озавоз2вио1здрозе1ооз3но2озоно2зопоз1уго2зымо3зысои2г1оиг2нои3мо2ок2ло3клюоко1бок1ск2окти2окумом2блом1риом2шео3мьяоно1боо3псоос3мо2отио3пако3паро2плиоп2лоо2пляоп2риоп2тоо1р2вор2тро1руео1руко1русо3садо2скеос1кио1с2лос3миос2пяос2свос2тао2сучо1с2чот3ваот1веот1виот1вло3терот1риот3смоту2ао3тьюо3тьяоус2коу3таоу3то2офаш2офит2офон2офото2фриох1лыо2хляох2ме2охороча1соч1лео3члиош3ваош2лаоэ1тиоя2рипави3пав3лпа2вьпа2дрпа2енпа1зопас1лпа2унпа1хупа2шт2п1в2пе2двпе3запе3зопе2льпе4плпе2снпе2сцпе2счпе2трпе2шт3пинк3пися4пла_пла1с2пленп1лею2плив2пло_2плов2плог2плый2плымп1лынп1лых2плю_п1лютп2лясп2ляшп3но1по1б2по3влпое2лпое2хпо1знпои2щ3полкп1оргпор2жпо1рупо1с43послпо3сспот2впот2рпо1х2поэ3мппо1д3превпре1зпрей2пре1л3претпри3вприг2при3кпри3лприп2п2риц3проипро3п2п1с2п3синп2т3впуг3нпу1стпу3тьпэ1рара2бл1рабора2гвра2глрад2жра2дцрак2в1ралг1рамк1рамн1раслрас3прас1трат1в2рахи1ращи2раятрб2лар2блерб2лорб2люрбо3ср3вакр3варр3вежр2вео1рветр3винр2витр2г1лрда1ср2д1врди2ардос2ре1вррег2нрее2врее2дрее2л1резкре1зррез2у1рейш1рекш3ремо1ренк1реньре1онре1опре1ох1репьре3р2ре1слре1счре1твре1чтре3шлр3жа_р3жамр3жанр3ж2др1з2ври3бр2риги2риджрие2лрие3рриз2врик2р1ринсрио2зрио2сри1отри3р2ри1с2ри3сб2риспри2флри3фрри1хлр2к1л2р1л2рнас4рне3оро2влро1двро1длро1др1родьрое2лрое2мрое2хро1зр1рокрро3псро1руро1ск1рослро1смрос2ф1росш1росю1роткроуг2ро2фрро1хлрош2лро3шн1роязрп2лор2плюрств2р2т1врт3варт2влрт1рарт1рерт1риртус1р3тьюрт1яч1рубаруг3н2руксрус1крус3лру3ть1руха1рухо1ручнр3ш2мры2двры2клры2х1ря1виса2блса2дьса2квса2клс1аппса1трса2унса1х22с3бусег2нсе1з2се1квсек1лсекс4семи1се2сксе2стси1омси1опси2пл2скам2скахск2вас2квис2кляс1кон2скошс1кра2скуе1слав1сладс1ламс3левс3леес1лейслео2с1летс3лею2слицс2ложс1люс2с3ля1смесс4меяс3мурс2нас2сная2сную2с3нысов2рсо1з2со3м2со1русо1сксо2сьсот2рсо1члсош2лс2павс2пеес2пелс2пенс2пехс2пешс2пеюс2пим2сполс2посс2рабсра2сс1ратсс3во4с5сис3с2к1ста_4ств_2ствлст2вя1стей1стелсте3хс3тешс2тиес2тиис2тичс2тиюст2ла2стли2стля1сто_1стов1стог1стод1стое1сток1стом1стон1стос1стотс2тоц1стою2стр_с1тут1стуюс2тыв2сть_2стьс3стью1стья1стям1стяхсуб1осу3глсу2евсу1крсума1супе2сус3лсус3псу1стсут1рсу2ф31с2фе1с2хе2с3цис2часс3чив2счикс2читсъе3дсъе3лсы2г1ся3тьта2блтаб2рта2гнта1з2та2плта1стта1тр2т1б22т2ват1вейт1велт1ветт1воет1вос2твою2т1врте2гнте1зо3текатек1л3текште1ох3терзтер3к3терятест2те2хотиа2мти2блти3д2тиис1т1импт1инд2тинж2тинфти1хр2т1к2тло2бтми2с2тобъто2влто1з2ток2р2томс2тонг1торг1торж1торсто1ру1торш2тотдто3тктпа1ттрдо2т1реат1регт1редт1реет1рецт1рею1трибт1ривт1рилт1римтри1от1риттри3фт1рищ2тройт1рортро3т2трою1трубт2руд2трукт2румт2рутт1ря_т1рявт1ряет1ряжт1ряйт3рякт1рятт1рящт1ряя4т1с2т2с3дтсеп2т2с3мт2с3пту2грту1слту1стту2фл1туша1тушо1тушьты2г12тя2чу2алеу3белубо1дубос21убрауб3рюу1ве_уг2науг2неуг1реуг1ряуда1суд1роуес2лу1з2вузо3пуко1бу1ку1у1лыху2озауост1уо2т1уп1люу3проурке3у2родурт2ру2садус1каус1киуск3лу1скрус3лиу1стеу1стяу3сьяу3терут2ляут1риу1тьеу3тьюуф2ляух1адуха2тух3ляу2чебуш1лафа2б1фа2гнфа1зофан2дфа1трфев1рфед1рфе1о3фи2глфи2зо2фобъфо2рвфо1руфос1кф1рабфра1зфра1сф1ратф2ренфре2сф2рижф2ризф2ронф2торфу3тлха2бл2х1акхан2дх1арш2х3ве2х3вихиат1хи1с2х1лавх1ласх1латх1лац1хлебх2лесх1летх3ло_х2лоп1х2му3х2ныхо2пехо1рух1осмхох1лх1раз1хранх1рейх2рисх1ров1хром2х1с2х1у2гх1у2рху3ра2х1ч2ца2плце1отцеп1лцес2лци2к1цик3лци2олци2скциф1р2ц1к2ц1о2б2ц1от2ц3ш2цып3лча2дрча2дцча2ер3чато3чатыче1влче2глчер2сче1сл1ч2лач3легч3лежч2ли_1ч2ло2ч1таша2блша2гнша2дрша1стш3венше2глше1о2ше3плше1с2ши2блши2плшиф1р2ш1к22шленш2ли_2шлив2шлилш2линш2лисш2лифш2ло_2шловш2лог2шляе2шлякш2ляп2шлят2шляч2шляю3ш2мыш2нуршу2евшуст12щ3в2ще2глщед1рщеис1ще3шкъе3доъ2е2ръе2хиыд2реы2дряы3ж2дыз2ваыз2наы2к1выко1зыре2хыс1киыс1куыт1виы3тьюы3тьяы2ш1лье1зоьми3дьми3кьне2оь2п1ль2стиь2стяьти3мь2тотьт2реьт2руьт2рыьхоз1ь3ягсэк2стэле1оэпи3кэс3теэт1раюзи2кю2к1вюре4мю2с1кю1стаю1стею1стою1стяюха1сяб1раяб3реяб1рияб3рюя1в2хя2г1ляз2гня2к1вя2к1ляст3вя1стояст1ряти1зя3тьюя3тьяа2ньшгст4ре2мьдзаи2лзао2ззаю2лз2рятзу2мьпое2ж2стьт6хуя_ы2рьмыя2вяьбат2а2двё2алёк2амёта1тьёб3лёнб2люёб1рёкб2рёмб2рёх3везёвёд1р2вёрдв2лёкв2лётв2нёс3всё3г2лётг2нёвг3нёнг2ноёд2рёбд2рёмдъё2м2евёре2глёер1вёет1вёе1тьёё1браёб1рыё1друё1зом2ё1ко2ё1крёк2ро2ёмужёпат2ё3плаёп1луё3плыё3ре_ёр3скё3с2аё2скеё3сту2ётечёто1сёха2тёх1ружё1с2з2вёзз2наёз2отёзъё2м2зымё2и1вёих1рёк3лёнк2роёлё3долёк1ллё2ск2лоён1льщё3м2щёнд2рёнё1б23номёоё2жио2скёот1вёо3тёрпё2тр2плёнп1лёюпоё2ж3прётр2блё1рвёт1рёзкрёз2у1рёкш3рёмо1рёнкроё2мсёкс4сё2ст2скуёс1лёт1стёлстё3хс3тёшт1вёлт1воётё2гнтё1зо3тёкатёк1л3тёкштёр3ктё2хоуг2нёуг1рёу1стёу3тёру1тьёу2чёб2х3вё1хлёбх2лёсчёр2с2шлёнъ2ё2рыд2рёырё2хьё1зояб3рё", + 6 : "_аг1ро_аль3я_ас1то_аст1р_де1кв_ди2ак_до3т2_зав2р_ио4на_лес1к_люст1_ми1ом_мо2к1_на3ш2_не3вн_не1др_не1з2_не1сл_нос1к_нук1л_ос2ка_ос3пи_от1ро_от1ру_от1уж_по3в2_по3ж2_поз2н_прос2_ре2бр_ри2ск_септ2_те2о3_тиг1р_уз2наабе3ста3в2чеага1с2а2гитиа2глосаг2лотади2ода2д1руаза4ш3аз3веза2зовьа2зольа1зориаз2о1сак3лемако1б22аконсалуш1та2минтам2нетамо1з2ана2дцан2драан2сура2н1узап2ломапо4всап1релара2стар2бокар2валаре1дваре1олар2торар2т1р1ассигаст1вуас3темас2тинас2тияас1тооас1туха1стьеас2шедас2шесат1обеа2томнат1рахба2г1рбе2д1рбез1а2без5д4без1о2бе2с1кбе2с1тбес3тебес3ти1б2лазб3лази1б2лее1б2лея1б2луж2б3лю_бо1брабо1драбо1л2жбо1льсбо3м2лбо3скобо3стибра1зо1б2рал2б1рамб2рать1б2рач2б3рая1б2редб2ритоб2ритыб1ром_3брукс2б3рю_бу2г1рва2д1рва3ж2два2стрве2с1квзъе3д3в2кус2в3лаб3в2нук3в2нучвои2с1вос3пево2стрво3х2т2в1рам2в1рах2в1рен1в2ризвро3т2в3ская4в3ски4в3скувто1б2ву2х1а3в2шиввы3ш2лга1ст2г1лами2глась3г2лифг3лоблгнит2рго3ж2дго2с1аго1склго1спагу2с1кда2гендаст1р2д1вид2двинт2двинч2д1вис2д1вит1дворьде1б2лде1б2рдез1о2дерас2де2с3вди2алиди2алодио3деди1отиди3фто3дневн4д3но1дно3д23д2няшдо3в2мдо3ж2д2долимдо2м1р2допледо2предо2рубдот2ридо2ш3вдо3ш2кдо2шлы1дравш2дразвд1ране2д3реж1дрема1дремлдрем3н1дремы2д3рендре2скд2ресс1д2рож2д3роз1д2рыг1д2рягду2ста2дут1рды2г1р2ды2с1еб1ренеб1рове2б3рюе3в2меев2нимев2нятевра1с2е1вреев1рееев1рейев1реяега1с2е2гланедноу3ед1опре2дотве2д1още2дру_е2ду2бед1убое2дувеед1уст2е3душе2евидее2в1реест1ре4ждевеза2вре1з2ваез1о2гез1о2рез1у2дез1у2кезу2соезу2сыез1у2хез1учаеис1трек1стееле3скеле1сцеми3д2ен2д1реоб2рое2о3глео2гроеоде3зе2о3роеост1реот2руепа1трепис2кеп1лешеп1лющер1актере3доере1дрере1к2ере1х4ерио3зер1обл2ерови2ерокреро3ф2ес1кале2сковес1ласес2линес2ловес2ломес2пекес3полес2танес2четеук2лоефи3б2ех1атоех3валех3лопех1опоех1у2ч3ж2дел4ждемеже1к2вза2вруза3ж2дза3мнеза3р2д2з3ва_з3валь1з2вон2з1вуюзи2онози3т2рзко3п2зо3в2мзо2о3пзот2резот2ризро2с3зу2б3р2з1уз3з1у2моз1у2тезу2час2зы2г12зы2с1иа2зовиа2налиа1с2киа1стаиа1стоиат1роиг1рени2г1ряиди1омиди1оти2еводиз2гнеиз2налика1с2ик2с1тило1ски2менои2мену2имень1инстии3оновио3склио1с2пио2т1випа1трипо3к2ира2сти2р1ауири2скиро1з2ис3ка_ис3камис3кахис3ковис3ку_и2сламисо2ски2с3при2ст1вис1тязи2т1веит2ресит3роми2т1учи2х1асих2ло2ихлор1й2с3мука2брика3днека2д1рка2п1лка2прекар3трка1т2рка2ш1тке2с1кке2ст12к3ла_2к3ле_к3лем_2к3ли_2к3лив2к3лис2к3ло_2к3лос2к3лю_3к2ниж3к2няж1кольс2коминко2р3вкре2слкри2о3ксанд2к1стамк1стан3к2то_ку2п1рла3ж2д1лами_ла1сталаст1вла1стела1стола1стула1стяла1т2р1л2галлев1рале2г1лле1онтле1о2сле4скале1с2лле1спеле1т2рли2гро2л1испли2х3вло1б2р2ловия3ловодло2г3длого1слок3ла3лопас2л1оргло1с2плу1д4р1льсти1льстяма2к1р2м1аллма1с4тма2тобма2т1рме2с1кми2гремик1рими1опими1с2л3м2нешмоис1тмо2к3вмос1камо1с2пмо2т1рм2с1ор3м2стиму1с2кму1с4лнаби1она1в2рна3м2нна1рвана1т2рн1а2фрна3ш2лнд1рагнд1ражнд2риане1в2дне3вняне1д2лне2дране1дроне3ж2дне1з2лне1к2вне3м2н3не1о2не2одане1р2жне3с2нне1с2пне1с2хне1с2чне1т2вне3т2лне1т2р2нинспнист2рнко3п2н2к1ронно3п2но3з2оно1склно2слино1с2пн2сконн2с1окн3с2пентр1ажн2трарнтрас2н2тривн2трокнтр1удн2т1ря2н3ю2роб2левоб2лемобо3м2о2бра_о1браво1брано3в2лоо2в1риов3скоог3ла_ог3ли_ог3ло_од1вое2оди3а2о3димод2литодо3про2досио1драгод1ражод1разод1рако1дралод3ребо1дробод1рово2дымао2дымуо2е1вло3ежеко3ж2дуо1з2ваоз2вено1з2вяоз2глооз2доро2з1обозо1ру2о3кан2о3колол2ган1олимполу3д2о3множоне3ф2он2труоост1ро2пле_оп2литоп3лю_о3плясопо4всопоз2но3п2теора2с3ор2б3л2о3регоре2скор1испор1уксоса3ж2о2с3баос3кароск1воо2ски_о2сковос1койос1комос1коюос1куюос3лейос3логос3лыхос3мосос2нялос2пасо1с2пуос2с3мо3страос2цен2о3тек2о3техо3ткалот1работ1радот1разотра2сот1режот1рекот1речот1решот1родот1роеот1рокот1росот1рочот1ругот1у2чо2форио2ч1топас1тапа1степас1топас1тупа1тропери1опе2с1кпиаст1пи2ж3мпи2к1рп1лем_п1лемсп2ленкп1ле2оплес1к3п2ликпо3в2спод1вопо1звепо1здопо1з2лпо3мнопо3мну3по3п2по2шлопо2шлыпо2шляпре1огпри3д2приль2про1блпрод2лпро3ж2про1з2п1розопрофо23п2сал3п2сих3п2тихпус1кура2б1р1равняра2журра2зийра2зуб1ракизра2к3лра2нохран2сцра2п1лрас3к21растара2такра1т2р1р2вавр3ватарег2ляре2досре3ж2дре1з2лре1зна1ре1зоре1к2лре3мноре1о2рре1о2фре1о2црес1кире1с2пре3старе3сторе1т2рреуч3три3в2нри2глори3г2нри1д2рри3м2нри3м2чри3стври3т2рриэти2рне1с2рно3слро2блюро1б2р1рогол1рогруро3д2зрод2ле1розарро1з2в3розысрои2с31рокон1ролис1ролиц1ромор1ронаж1ронап1роносрооп1рро2плю2р1оргро1р2жро2скиро2скуро1с2п1рот2врот2рир3ствлр2таккр2т1обрт1оргрт2ранру2дар1ружейру1старуст1рр2х1инр1х2лор2х1опры2с1к2с1арк2с1атлса2ф1рсбезо3сбе3с22с3венсе2к1рсере2бсе3стасе3стесест1рс2канд1с2каф3скиноск3ляв2сконас2копс2скриб2с3ла_2с3лая2с3ли_2с3ло_с3лому2с3лос2с3лую2с3лые2с3лый2с3лым1с2наб1с2неж2с3никсно1з2со1б2рсо1л2гсо2риесо1с2п1с2пец2списяспо1з2сре2б1сре3доссанд2с3с2нес2сорист1верст2вол1с4те_1стен_с3тет_с3тете2стимп2стинд2стинф2стинъс2тишкс3т2лест2лилст2литс2то1б3с2тои2сторг2сторж2сторсстрас24страя2стредст1рей2стривст1риз2стрил2стрищст1роаст1родст1рохст2рубст1рушсуб1а2с2ценасы2п1лсыс1ката1вритак3лет1во1з2т1войтеле1отем2б1те2о3дте4п1лте2рактере2оте2скате2скути1знатила2м2т1инвти1с2лти3ствти3ф2р3т2кав3т2кан3т2кеттмист1то2бесто1б2лто3д2р2т1оммто1с2нто1с2пто1с2цт1рага2т1раж1требо1требут1ребьт1ревет1ревшт1резат1резнтреп1л3тре2стрес1кт1рестт1ретут2решь4тринст1роглт1роидтро3плт1росо4т3роц2т1рядту2жинты2с1к1у2бытуд1рамуе2с1кун2д1руро2длус1комус1ку_у3х4вофанд1рфе2с1кфиа2к1фи2нин2ф1оргфор3трфото3п2ф1у2п2х1изы1х2лор2х1о2кхо2пор2х1оснхри2плхро2мч2цетат2ц1о2дча2евоча2евычаст1вча1стеча1стуча1стячерст1ша2г1ршан2кршар3т2ша1тро3ш2кол2ш1лейш2лите4ш3мы_ще1б2лщи2п1лы2д1роы2к3лоынос3лыра2с3ье2с1кь3п2тоь2трабэри4трэро1с2эс2т1рэтил1аю2б1рею2идалюри2ск3явиксям2б3л_вст2р_реа2нбезу2свиз2гнвыб2редос2ня4ж3дик4ж3дичла2б1рлу3с4нни4сь_о2плюсоти4днпти4днреж4ди2стче_сы2мит2сься_аз3вёзам2нётас3тёмбё2д1р2в1рён2доплёдо2прё2д3рёж1дрёма1дрёмы2д3рёнеб1рён2е1врёерё3доерё1к2ес2чёт2ё1вре2ё3душёз1о2гён2д1рёс2танёх1атоёх3валёх3лопёх1опоза3мнёзот2рёиг1рёнла1стёлё4ска3м2нёшод3рёб2о3тёкот1рёкот1рёшп2лёнкплёс1к_рё2бррё1зна1рё1зорё3старё3стород2лёсе3стёсёст1р1стён_с3тёт_с3тётес3т2лётё4п1лтё2скатё2ску3т2кётт1ревёт2рёшьчёрст1", + 7 : "_во2б3л_во3ж2д_за3м2н_ле2п3р_му2шт1_не1с2ц_обо3ж2_ра2с3т_ре2з3в_ро2з3в_ро2с3л_хо2р3в_че2с1ка2д1облаз2о1бра2н1о2бан1о2храпо3ч2тбили3т2б2лес1к2б3люсь1б2роди1б2росибро2с1кве2ст1вви2а1с2ви1с2ниво2б3лагри4в3нде2з1а2ди2с1тр2д1обладо1б2рад1о2сенд1о2син2д1осно2д1отря1д2разнд1ра2с3дро2г3неан2д1ре1д2лине1о2свие3п2лодере3м2не2р1у2пе2с1ка_е4с1ку_2ж1о2т1за2в1ри1з2о3ре2з1у2беи2л1а2ци2л1у2пино2к3лино3п2лисан2д1ки1с2ни2к3ласько1б2рикохо2р3ла2д1аглан2д1рла2ст1рле1з2о3лу3п2ломан2д1рме2ж1атме2ст1рна2и1с2на1р2вине2р1отни2л1ални2л1ам2н1инстнти1о2кобо1л2го3в2нуш1о2деяло2д1отчо2д1у2чоза2б3воко3п2ло3м2немо3м2нето2п1лейопо2ш3лоро2с3ло2с1ка_о1с2копо2с1ку_о1с2нимо1с2шивошпа2к3па2с1тыпе2д1инпе2к1лапе2ст1рподо3м2радо1б2рас3т2лрво1з2дремо2г3рес2с3мро2д1отро2ф1акр2т1акт2с1альп2сбе3з2сто2г3нс4т1ровсче2с1кте2с1ките2с1ко3т2ре2хтри2г1л2т1у2пруре2т3русла4ж3уто3п2сх1ра1с2ь2т1амп_бо2дра_об2люю_об2рее_об2рей_об2рею_об2рив_об2рил_об2рит_пом2ну_со2плаатро2скбино2скдро2ж3ж2дружейилло3к2ме2динсмис4с3ннар2ватне2о3рен2трассо4ж3девойс4ково2м3че_он2тратосо4м3нпо2додепо2стинпрем2норедо4плроб2лею2сбрук1б2лёс1кё2с1ка_ё4с1ку_1з2о3рёлё1з2о3о3м2нёмо3м2нёто2п1лёйпё2ст1рсчё2с1ктё2с1китё2с1ко3т2рё2х_чё2с1к", + 8 : "_ар2т1о2_ме2ж1у2а2н1а2ме2д1о2бедло2к1а2ун2тр1а2го2д1о2пео2д1о2пыпо2д1о2кре2д1о2пр2т1у2чи_доб2рел_до1б2ри_па2н1ис_ро2с3пиди1с2лове2о3позиере3с2со2з1а2хавни1с2коло1и2с1трони3л2ампере1с2нсо2стритсо3т2калтро2етес_доб2рёлтро2етёс", + 9 : "е2о3платои2л1а2минме2д1о2сммети2л1амо2д1о2болпо2д1у2роприче2с1крни3л2а3мпричё2с1к", + 10 : "но4л1а2мин" } }; \ No newline at end of file diff --git a/resources/viewer/hyphenate/patterns/sl.js b/resources/viewer/hyphenate/patterns/sl.js new file mode 100644 index 0000000000..5418c1c722 --- /dev/null +++ b/resources/viewer/hyphenate/patterns/sl.js @@ -0,0 +1,17 @@ +// For questions about the Slovenian hyphenation patterns +// ask Mojca Miklavec (mojca dot miklavec dot lists at gmail dot com) +Hyphenator.languages['sl'] = { + leftmin : 2, + rightmin : 2, + shortestPattern : 2, + longestPattern : 6, + specialChars : "čšž", + patterns : { + 3 : "_č8_š8_ž81fa1hu1kn1sc1sp1wa1ye1zi1zn1zo1zu1čj1čl2cc2ck2ew2ft2jh2nč2vč8č_8š_8ž_a1aa1ba1ca1da1fa1ga1ha1ia1ja1ka1la1ma1na1oa1pa1sa1ta1va1ča1ša1žb1hb1mb1zb1žbe1bi1bo1d2ed2oe1ae1be1ce1de1ee1fe1ge1he1ie1je1ke1le1me1ne1pe1se1te1ve1ze1če1še1žfe1fu1go1gu1i1ai1bi1ci1di1fi1gi1hi1ii1ji1ki1li1mi1ni1pi1ri1si1ti1ui1vi1xi1zi1ši1žju1ki1ko1le1lo1na1ne1nu1o1ao1bo1co1do1eo1fo1go1ho1io1jo1ko1lo1mo1no1oo1po1so1to1uo1vo1yo1zo1čo1šo1žpe1po1qu2r1fr1rr1žre1ri1ro1si1su1t1ftu1u1bu1cu1du1eu1fu1gu1hu1iu1ju1lu1mu1nu1pu1su1tu1vu1zu1ču1šu1žv1fv1gvz2wo2x1fy1jy1ly1wz1cz1gz1tz1šz1žči1š2č", + 4 : "_is1_iz1_od1_st41ind1inp1inš1kre1liz1loč1naj1nas1naz1neh1peč1str1usp1viv1z1r1z2a1zlj2b1c2b1d2b1k2b1n2b1s2b1t2b1v2b1č2b1š2c1n2c1t2ch_2d1b2d1c2d1d2d1g2d1h2d1j2d1k2d1p2d1s2d1t2d1v2d1č2d1š2d3m2f1n2f1s2g1d2g1t2h1k2h1n2h1t2h1č2h1š2ine2iss2j1b2j1c2j1d2j1g2j1k2j1l2j1m2j1n2j1p2j1r2j1s2j1t2j1v2j1z2j1č2j1š2jos2jus2juč2k1c2k1d2k1m2k1t2ks_2l1b2l1c2l1d2l1f2l1g2l1h2l1k2l1l2l1m2l1n2l1p2l1s2l1t2l1v2l1z2l1č2l1š2l1ž2lj_2ljk2ljn2ljs2ljč2ljš2m1b2m1c2m1d2m1f2m1k2m1m2m1p2m1s2m1t2m1v2m1č2m1š2m1ž2n1b2n1c2n1f2n1g2n1h2n1k2n1l2n1n2n1p2n1s2n1t2n1v2n1z2n1š2n1ž2nj_2njc2njk2njs2njš2p1c2p1k2p1s2p1t2p1š2r1b2r1c2r1d2r1g2r1h2r1j2r1k2r1l2r1m2r1n2r1p2r1s2r1t2r1v2r1z2r1č2r1š2rae2s1b2s1f2s1j2s1s2sk_2st_2stk2stm2t1b2t1c2t1d2t1k2t1m2t1s2t1t2u1a2v1b2v1c2v1d2v1j2v1k2v1m2v1n2v1p2v1t2vzo2y1f2z1b2z1h2z1j2z1k2z1m2z1p2z1s2z1č2č1b2č1g2č1k2č1n2č1p2č1s2š1j2šč_2ščk2ščn2ž1b2ž1c2ž1j2ž1k2ž1č3ktr3ste4bmi4eth4hl_4igh4ile4ilo4ire4job4jož4ljc4njv4ogl4opy4phs4sc_4stf4tz_4urg4vjo4všk4zri4zru4čop4čup4žmia1e1a1raa1rea1ria1roa1rua1u1a1zea2uka4hma4jfa4mza4nma4pha4sša4tfa4ufa4ula4vžad2laf1tak4sat4ib1jaba4ube4vc1kack1sd1lod2lid4urdis1e1o1e1rae1ree1rie1roe1rue1u1e4dfe4epe4ffe4rfe4rre4wte4ywe4zte4zže4čde4čte4špeb4jed2lei2zez2gez4lh4loha4uhe4ii1e1i1o1i1čai1čei1čii1čui2zri4csi4kči4mhis4aiz1liz1uj1hijra1kok4ks1cks1pks1tl2i1le4en1čan1čen1čin1čun4dmn4ghn4gvn4tgn4tvnz4io1rao1reo1rio1roo1ruo2olo4aso4bzo4cro4kbo4kto4lro4omo4pmoiz2oz2noz2ooz2roz2voz4boz4gr4inr4thrz2ls2cis2kns4ids4onsis1taz4u1kau1keu1kou1rau1reu1riu4bpu4thub4jv1čav1čev1čiv2zav2zuv3zpve4ivt4kz1igz1liz1luz1obz1ogz1v2z2olz3dvz3kuz3vnz4omz4ujše2s", + 5 : "_av5r_ek3s_ek5v_si4s2d1z22j1od2n3d22p3č22v3zk2z1d22z1is2z1od2z1up2z1uz2z1z23inse3intr3razl3raču3real3rodi3v2pa3v2zg3zbir3zlil3zlog3zlož4d3vi4dind4dnas4dobč4idor4inšk4jime4kst_4ktra4mind4minp4minš4ploz4skre4tind4tinp4tnaj4zrez4zreš4zrež5dlet5obla5obro5oseb5redč5stim5tema5zlit5zliva4ksta4ziga4zoba4zraa5ju_ab5baac5ciad5uraf5gaah5miah5moai2n1aj3osaj3ugaj3učaj5fiaj5foaj5haaj5heaj5imaj5žnan5mian5ziao2b1ar5xaar5xoar5xuas5ščav5šiav5žaay5toaz3laaz3leaz5foaz5vpaž5mib3jemb3lepb3rabb3rašb3rezb3robb4ja_b5jelb5jetb5lilb5litb5livb5ordb5rasbo5vpbu5kibu5kubu5kvbu5ryc5ko_ch5mack1o2ck5weckov3d3repd4revd5litd5livd5nivd5razde4mndi5ckdo5rddo5včdu5rodu5ume2č1ve4zobe5stae5zije5zised5iged5obed5včed5zbef5feef5taeiz5eeo4dleob4jeob4res5daev5haew5leew5toez4moez4reez5djez5glez5izeč3leeč5deeč5dieč5doeč5opeč5tieč5toeč5treč5upeš5poff5mafre4uft5vego5vzh5reni4skvii2n1ik5čaim5hiisis4it5priv5joiz4laiz5meiz5moiz5poič5raič5vrj5aktjod4ljraz4ju2ž1ju5dmk5satk5vipke5tiko5kdks4poks5teku5rola4irle5melg5čalu5kilu5kum5nivm5urnme4drmy5hin4ostnad5rnaj3ond5gand5hine3d2ne3zmnez4vng5hang5vino5rdnsis4nt5gant5gent5viny5quo2d1žo2v1zo5vzaob5glob5jooc5keoc5kiod5dvod5zdoele4ok5baok5beol5reood4lop5meou5kiou5kuov3zdov5škoz5loozd5jož5mipe4ktpet3lph5sopi5zoprez4pč5kar3v2jrav5zre5jore5kmre5čvriz4griz4lriz4nro5zort5haru5klrv5jory5anrž5das4lavs4tens4tirs4tičse5mase5vpsoni5su4bosve5tta5witch5ote5xatrt5uub5pouth5oux5emuše3sv4pijv4pilv4červ5sknv5šekve4člve4čmvi5dvvo5rdz4gniz4venz4vokz5gotz5lasz5lomza1z2za3vpza5ukza5zdzd5juzliz5č5mes", + 6 : "_ob5it_obi4d_voz5l_voz5n_zliz62d3o2f3z4voj4d3nac4d3nar4d3nož4d5nap4d5nač4d5neb4d5niz4d5obd4j5int4l5izd4t3int4tinos4tinse4z5išč4zredč4č3let5načela4j5eka4z3oča6doblab6rodad6rl_ad6rlaad6robaj6imoaj6stban6dgaan6dhiar6dwaaz4lilaz4litaz4livaz4redaz5oraaz5orob5letab5režeba6bbaban3č4bo6chmbr6ždabre4zgbre4zibre4zrd4i5nodd6vojde4minde4z3idi4skrdi6sprdo5v4zdre6pndteks6e3z4dre4d3oče4dobse4tinše4z5ore5sti_e5stihe5stileb6lized6obeed6obrei6pziek6malek6treeo4z5nep5nikev5stvev6preev6steew6indez5imnez6ijoez6istez6lomez6maneč6vrsfe6ljtfi6zljfo6urige6igege6njčgel5č4gi6tprhu6ffmil5č4kis6ertiz6odeiz6ureizli4zje4ks4jsis6tjz6vesko6všekoz6loks6tazla6vz_le6ipzli6dž_me4d5nme6dosmi6th_mo6vš_mo6št_na4drena4j3una4v3zna6drana6durna6jakna6jočnavze6naz6ornteks4o6drepob5ideod5nalol6gčaor4dečose4m5ov5semoz5nicoz5nišoz6ložpe4tlepe4v5spev5t4po4d3lpo4dnapo6dfapo6lobpo6stdpz6ig_ra6jžnra6vzare6chtre6digre6ibare6sdare6zusre6zverev6skri5n4orob6ids4plods4tra_sek5sisi6gn_sonič4spod4ltek6stto6vž_tr6turud6mi_up6čkave4tinvi6žg_vid6vavoz5lez6ane_", + 7 : "_di6spo_po4d5n_po4v5s_se4k5s3i4n3os4d5njač6d5elem6tletnoera5z4rera5z4vera6z5leve6t5llju5d6jna4d5njna4j5ennje4v5so6l5avtpo4d5očra4z5idra4z5orre6dnjure6značse4k5savetle6t", + 8 : "_pre6d7ne4z5u4m5" + } +}; diff --git a/resources/viewer/hyphenate/patterns/sv.js b/resources/viewer/hyphenate/patterns/sv.js index fc8f8fc435..59b086f1e3 100644 --- a/resources/viewer/hyphenate/patterns/sv.js +++ b/resources/viewer/hyphenate/patterns/sv.js @@ -1,19 +1,19 @@ -// Swedish hyphenation patterns by Jan Michael Rynning, jmr@nada.kth.se +// Swedish hyphenation patterns by Jan Michael Rynning, jmr@nada.kth.se // Patterns modified for Hyphenator by Andreas Johansson, andreas@ibuypink.com -Hyphenator.languages.sv = { +Hyphenator.languages['sv'] = { leftmin : 2, rightmin : 2, shortestPattern : 1, longestPattern : 8, - specialChars : 'åäöé', + specialChars : "åäöé", patterns : { - 2 : 'c21df21hx12y', - 3 : '_b4_d4_f4_g2_k4_l2_m2_n4_p4_r2_s4_t4_v2_x2a2ba1ja1oa1t2aua5å1b23ba4bb3be3bib3k3bo3bub3v3by3bå3bä3böc3c1ci4ck4cr4cs1cy3da2db4dc2dd3di2dj3do4ds3du3dy4dz3dödé4e1a4eb4ece2de1ee1fe1ge1me1o2epe1v4eä3faf3d3fef5h3fi1fl1fo2ft3fu4fv5fy1fä3fö2gb2gd2gg2gh2gl4gw3gyh5c4hdh3gh2ih1k2hl2hm4hnh3ph1s2hth2öi1ai2di1gi3ii1ti1ö1ja2jb2jd1je4jh1ji4jk2jmj2o4jp2jt5jé2kb4kc4kjkl2k2o2kskv41le2lh1lil1n2lv3lé1ma2mb2mc2md1me2mh1mi1mo4ms1na2nd1ne2nh2nk1no4nsn5zo1ao2bo2do1eo1go1io1jo1ko5qox5oy2o3åo3ö1pa2pc2php2jp2l1po2pp2ps1pu3péqu41ra2rb1re2rh4rj2rk2rsr3w1sa4sbs2c1se2sh1si2sm1sos2t1su1så1sä1sö1ta2tc2th1tit2j2ts2tt2tv2tz5téu1au2bu2du1eu3ju1ou5uu5åu3ö1ve2vhv4i1vo2vs3vy1wawe2w2hxk2xs4y1ay2dy1ey1iy5wy5å1za1ze1zi1zo4zpz5s3zuå1aå1eå1få3iå1må3oå1på1vä1aä2b2äcä2dä3eä3i4äk4äs2ätö1aö2dö1eö1iö1vé3e', - 4 : '_a4b_ac3_a4d_e2s_ex3_ib4_ik4_o3o_o1u_sk4_st4_u3k_up2_y2a_y4ea5beab1la5buad3jad2sa5eda1gaa1geag1la4hjaib4a3iva3kaa5kea1kiak3na1koa1ku4aköa1laa4lja1loa1lua1lyam4iam1sa3möan3ca1nua5nya3nöa1pea1piap2sa5pya5pä2ara1arb2arha1ri4arla1ro4arp4arua3rya3rä2asaa1scas2has5la3suas3va1sya2söa5tea4tja2trau5b1avgav3rbbb4bb3l4b3dbe5ebe1kbe1sbe3u4bex2b3f2b5hb3je4b3m2b3n5bonbo1sboy54b3p3bry3brö4b3sb4spbst44b3tby5r5cap1c4e4ch_4chtcim2c3kac3kec3kick5jck1lck3nc3kock3rck5äck3öco2aco4m5da_2dak5dam4daxddd4d3djdd2s3d2ed4en5derde2sd4et4dex2d1f2d1gd3gl2d5hdi1o4d5l2d1m2d1nd2ol5dondo3y2d1pd2sed4sfd2sid2sjdsk2ds1ld2sod2suds1vd2sö2d3t4dupdu1s4dut2d1vd3vr2d3w5dåg2dås4dåt4dägdä2r4dög4döpe4ame2bre3che3coed3je3dåe2ede4eief4se3gae3geeg1legs3e5gåeig2e3ike1ine1joe3jue3jäe5jöe3kae1kie1klek3ne1koe1kue1kye1käe1lae1loel3p2enj2enye2ogeo4ie5ore1pee1pie1prep3se3påe1rie1roerp4e1rue3rye1räe1sc2esees2ke1sle1spes2ue1sye5tie1toet2se1tue1ty2etze1täeuk44eure4vjev3r3expfac44fav4f3b4feffe2l4fex2f1ffff4ff3lff3nf3foff3rffs4f3fäf3g22f3k4f3mfma44foffol24f3p2f3sfs2kf4slf4smf4snf4spf4stf4svf3taf3tif3toft5tft1vg4av4gaxge2a2gefg4emge2o2g1fg1gag1gegg5ggg1lg4gu1g2igi1o3givgi2ög2jog3jä4glj2g1m2g1ng2no1g2o3go_3gol2g1pg2r4g4rå2g2sg4sfgs1lgs1mgs3ngs3sgs1vgs1ä2g1tg3tr1g2u4gug4gup2gut2g1v1g2åg4älg2ärgä4s1g2ö4göghav24hirhi4th4leh2na4howh5ruhu2shä4shö2ghö4sia3gi3cai5coid1rid2si3dåi4dö2i1ei5fni1frig1li1kiik3ni1koik1vi3kyi3kåi3köi1lail5ki1loi3lui5läi1mui5måi3mäi5möi3niin5ji1nui1näi5oci1ogi3oki1oli5omion2i1opi1ori1osi1oti1pei1pii3rai1rii1roi1ruis2hi2skis3mis3nis5vi3syi4såit5ci4tj4i1ui1vai1viiv3riv2si1våix2tjd3rj4duje2a5jef2j1f4j3g4jinj4klj3kojk3v2j1l2j1n3job3jouj5pl2j3r2j1sj5saj4skjts42j2u4jur1k2a3ka_2kafka3i2kak2kap3kas4kau1k2e3ke_2kepke2s4kex2k1fkfö22kh44kif1kigk3jä2k3k2kle2k1m2k2nk4ny4koc1kom1kon1kor2k1pk2r4k2sok2su4k1tk2tr4kug3kusk2vek4vok1vå4kög3la_2laf2lak2lau2lav2lb44l1c2l2dl3dj3le_2lex2l1f2l1gl2gjlgs43lif3ligli1o2lip1ljul5jål1jä2l1kl3kel2kll2krlk3tl1lalld4ll3kll1ll1loll3pl1lull5vl5ly4l1m2loml1pel1pi4l3r2l1sl2scl2skl4sml2spls5sl2stl2sul2svl4så4l1tltu4lu5i2lunl1val1vil1vä2lå_4läc4löl4löm3lön1lösm4dim4domeu42mex2m1fm4fnmis22m1k2m3l2m1nm4odmo4i2m1pm2plm4på2m1rms2m2m1t4mud5mum3mur2m3v1mynmåg44mårmå1s4mägmäk31män1mäs1mät3möj3mös4möv3na_3nad2naf2nak2nb42n1cn2chn5de3ne_2nex2ng1n2gin2go1n2i4nid3ninni1o4nip2n1jn3jän1kin1kon1kun1kö2n1l2n1m2n1nnn3dn3nenn3k2n1p2n1rns2ins2k2n1t4nug3nui3num2nup2n1v4når4nä_4näc3näm3nät3nöj4nölnös4oby4o3däo4flo3fro4gjo4gäo4ilok3no2kvo1la1oljo1loo1luo1lyo1lä1omron3con3jo1nyon5åo1näo3nöoo4do3oro1peo1pio3på4orao1ri4orko1roo1ruo3ryo1räo1röo1too1tuo1tyo5tåo3täoun4oup44ourou4so1vao1viov3ro1väo3weo3än4pafpag43pappa3u2pb44pem4pex2p1f4p3g1pigpi1o3pipp3lj2p1m4p1np3ni5poa2poc2pofpo2i3pos4povp3pep1pipp3jpp1lpp1rp2pup5pypp3åp2r22pra3pro4prå4psop2sö2p1t4pug2p1v3päl4pör3que3ra_2rak3rarr4as2rav2r1c2r2dr3djr3dår3dä3re_re3b4recre3o4rex2r1f2r1g4ribri1or3jor5jur5jör1kirk3nr1kor1kur1kä2r1lrld22r1m2r1nrn1krn3tro3b2r1pr4pö4r1rrrd4rr1sr1spr1svr1sy2r1trt3t2rut5ruö2r1vry5o4rål4räm4räs2rögr3öi4röp3rör3sa_2safsa3i2sap2sau4s3dse2gsem22s1fsfö2s5hö5sie3sik3siosiu41s2j4sjn4sjts4ju3sjö4sk_4skhsk4i4skl4sknsk3s2skt2skv1skå2sl2s2lus3mjs4nå3soc2sod5soi2som3son3sots2p21spe4spls3ps3spö4s1r4s1sss2kss1lsss4s2sv2st_st3c2stj2stmst3t4stv1sty1stå1stä1stösu4b3sugsu3i3sum2sun2sup5suss2v24syk5syl3syn3syssyt25såg4såks4äds4äl2säp5säs3sät4söd2sög4söl4söp3ta_tat22tav3tax2tb43t2e5tec4tegte3i4tej5tib3tidt2il3tisti2ö4tje2t3l2t1m3tokt2opt4ov2t1pt2r42tra2tri5trét3sets2kt2sotss4t1stt2sut5syt1tot3tutt1vt3tyt3tä5tuöt1va4tve3typ5tys3tågtås44tåt4täm4tög4töpu4bou5clu5deud3ru4duu4dyu2esu1geugn4u5ieu1inu3isu5kiu4kluk3nu1kouk2su3kuuk3vu1lau1lou3luu1läu1löu1muu5nuu1peu1piu2plu3reu1riu1rou5ryu3seus3nu2spus3vu4såu4säu2sö1utbut3ju1tout3r2uttut1vu5ty2u1vu4vju4vä5vap4vau4vav2vb42v1c5vecve2k4vepves42v1f2v1gvi4c4vjo2v1l2v1m2vomvos42v1p2v2rv3ruv4scv2sov1stv2sö2v1t4vut2v1v3vägvä4l2vät3väx4vög4vöp3vörwhi2wi2ew4naxis4xli4xti2x4tåyb4sy4day4doyd3ryds4y4duy4döy1gay1gey1kiyk3ny1koy1lay3liyl5ky1loy3måy3ory5ouy1pey5poy1riy1roy1toyt5vy3vay3viy3väå3djå1gaå1geåg3lågå4å1kiå1laål3kå1läå2plå4pöå1riår5öås3nåss4ås4tåte2äd3rä1gaä1geäg1läg3rä5joä1kiäk3näk3rä1laä4noä3peä4prä1riä4såä3toä1vaä3viä5vuöd2sö4duö4döö1ga1ögdö1geögg4ög1lög2n1ögoö3joö1kiök3nök2sö1laöl2pö5läö3peö3piö4prörb4ör3gö1riör1uör3yör1äös3növe4ö2vj', - 5 : '_ab5i_ab3r_a3dr_ad3s_a5kl_a5le_a3lu_a5mu_an5s_ap1p_as2k_as4t_a5ta_at3t_bo2k_cis4_där3_ek1v_e4nä_es4t_e3tr_gus3_he2m_im3p_i2n1_i4na_in3d_ink2_in3t_i3so_ner1_no4n_ok3t_o3kv_o2ma_o2mo_o3mu_on4k_o5sc_o3sl_o3sv_o3tr_sa2k_si5o_sjö1_ta4k_ti3o_u4ra_ur3s_u2t1_u4ta_ut5s_vä2g_ång3_å3st_ä3ro_ö3roab4buabe2sab3laab4scab4ska5daga5deka5delad5epad3opa3dread3ruaf4fo3affäa2ge_ag1grag3roa4gurak3vea5kårak5åta2linal2kval4käal3låal3tral4tual4täalu5salv3sa4mafam4pram3åtanci5a4nefan3gian1graniu4ank3rano2ia4noka4nopan4sjan1stan4tja2pe_ap3seaps5laps3papu5s4arbi2arbo4arbrar3drar3kaar5kr4arn_a2robar2saar2sva4rura5rusasbe4a2skoa4skras3kuas3paas2skas2spas2stas3taas3toas4tra4sulas2uta2s5åati5öat4tjatt3saut5s2a1va2a1vi4a3väba4diba4dobak5lba4koba4kub4bakb4b3rbb4so4beldbe5lube3lybe3låbe5löbeng4be3nåbe1röbe3slbes5sbe5sube3trbe3tvbi3d44binvb5larb5latb5len3bles5blidbo4grbo2klbo1mubo4sc4brarb5scebs3chb4sofb4stjbång3båt2sbör2sceu4s3chau3chef5chocchäs3chör4ci4lucipp4ck4reckus2ck3vack3veck3väcle2acros24dadrdags35dakoda3lida3må4d1ap4darb4dartda4trdat5tdcen3ddi4sd4dosdd3radd3redd3rid3drädds3vde1k44deko4deldde3prder1kde2rode4rude3sede3spde3trdias4di5eldi2grdi3kadi5ku4dinf4dinr4dins4dintdi4oddi3scdi4sjdis1pd3jor3djur2d3k2do5lo4domr4dori4dortd5ost2d2r2d3rad3drejd3ren5dresd3retd4ric3drifd3rigd3rind5rocd3ror4drot5dränd3rätd5rödd3skids3klds5knds4mod4småds5nåds3plds3s4ds4tedu2scdu5södu4vudy4rodöds1d5öste2akeecis4edd4redi4ued1skedso4ee2k5e4en_e4ene3efteege2le5gruei5gnei5she1iskek4leek5roe1kve3eld_el3k4el3liell3sel3läe4lobel2siel5uge5luv2e1läe5mate5mise2naven4cee4nede4neken3knen5kren5käeno2men3siens2men2spen4såe5nus2e1näe3plaep5leep4trepu3ber1ak4eraser3d4erg4ler4gue5riberlä4er5nae3robe2romer3raer5scer3sler3sve5rume5råde2sales4hiesi4ues2mies3ples2skes2stes4tre3ståeta3beti3öe5träets1lets3met4svett3ret4vaet5vuetäc4e5um_e5up4ext4r4fans4farbfa3shfa4stfa4töfi2brfi3lifi2tifolk12f5omfo2nafra2mf4rerfre4sf4ri_5fritfrån5f4taff4takf4tapfte4rf4texf4tinf4t3rft2saft4sjfts4tfu5rufu3tufy4mafå3töfö2rafö2riför3kfört4för1öga5br3g2ag4gakt3g2alga5läga4no2garb4garmga2ro4gartga4stga4sugaus4g3d4rge5b42ge4jg2eligel5y3gelägen5g3genj4genm4genvge5ny3genä5gesege4toget5sg4gapg4gosggs4mgh4tegi5sn3gjor2g3k2g1larg2lasg4lidg4lög5glömg4nag4gont2gord4gorm4gortgo3sl3graf5gral4gras5grecg3rig5grip3grisg5roigro2v4grum5grå_grä4ngs1ang3selgsi4dg3sjugs4kigs3kng3skyg4smegs4nigs4nögs1orgs3plgs3pogs3pugs3tjg4suggs3vigs3vågs3ytguld34gulägu2magu5rugus4kg3utbgö5roha3blha5geha4liha5raha4scha4sphas3thavs3he4athe4frhe4lähets1h2nitho5nuhop3shos3phyg5rhys4thäll2hä4rihög5ria3fria4luia4skia3tri2b3li4ce_i5chaid4gei4domid3roids3vi4dunifes44igani2gebig5ejig3noi3kloik3rei3kuli3kumi2linil1jö3illuil2tji4lupim5smim4soi4nau1induin4gai4nif5inre1inri3inräin3slins4min3snin5te1intrint3si4nunin3ymio4krio5lii3onoions3ipos4ip5pii4resirk5liro3pi5sceisel4is3kuis3kyi2s3pis3sais3seiss5nistå4i4teii4texit4tui2t5åi2vaki4vinix5tu4jarbjas5pjo4kr4joljjo5löjs4mejs4tejuk3sjul3kjuss4jus4tjä5lojär5sjör2sjös4t3kad_ka4dr5kafäka5ju4kalf4kalg3kamp3kamr3kan_5kano3kapi3kar_ka3ra4karbka5ri4kark4karp4karvka4sk3kat_2k3d4kdom42ked_2kedake3drked4ske4er2kefu4keldkels4ke5nå3kernkes3s2k5g4kid3skik4skilt45kimå4kins2kintki4nuki4trkiv3s5kjol1klag2klat5klavk2lej2kligk2lim3klipk2lis3klos1klub4kluk1klädk4nal5knip3k4nuk5nykko5dek5odlkog3nko4gr4kola4kolj3komm5kompkom4s3konf3kontko3nu3korgko3ri2korrko3sl3kost4k3ou3kraf1krig4krivk3ryg4krälk3rätks3chk4serks2k4ks3klks5kvk3skäk3sköks2lik5slyks3plk1s4tk4texk2todk2tomkt3rekt2stkt5t4k4tugk2tutk4tälk5ugnku5la4kuld3kulö5kunnku4ro3kursk1vär3kyrkkäl4m5kämp5känn3käns3kärl5köp_kör4l2ladm4ladr5lagmlag3r5lakila5lo2larb1larnlar5s4lartlas3h4laskla4st1lat_la5trla5vuld3ral5dryle5igle2klle4kv3ler_ler5k3lernle5tåle3umle4vul3g2llg5stli5chli4golig3slik2llik3s2lind2lini5linj2lintlis3cli4volivs1l2jak4l1jol3jörl5kjul5kläll3drlle5bll2sell2soll3trll5unl5lödllör4l4mollm3stlo2af4lodllo4do2lolj4lord2lorglor4slo4vol4pakl5plalp5lölp4stl4sjol4själ3skilsk3nl3skyl3skål3skäl3sluls4mol3spels3pll3stals4tel3stol3styl3stål3stäl5stöl5surl4svil4tefl4tifl4tihl4tosl4trölt5sklung32lupplu4pu4lutb4lutsl4voslv3rilv3splväv4lyg3rlåg3s1långlå4skläg5rlä4splö4väma5frmag5nmag5sma5jumak3rma3limand4ma5nimash5mas4vmb4skm4datm3d4r2medsme4dume4klme4ko4meldmelo5me5lumen5kme5nume5nyme4somes4t2metam4fes2m1g4mid3smi4lu2mind4mink4minvmi3nömi5sfmi4spmi4tr2m1m2mme5dmm3s4m4mulm2namm4navmn5drmn3g4mn5stmn5tum2n3å2momrmo3namos3kmo2tamo4tumot3vm2pakmpos4mp5p4mps4kmp5spm4salm4skems3lämste2m1stom2strms5äp3musi1mål_5mån_mäns43märkmö4blnads3na5gr3nako3nakrn1akt2nalf4nalgnal3sna2lun5amb5namn4nanv2narb2nark4narm2nartn3chan3chen3chincis4n4dakn4davnd3d4nde3sn4dilnd3rind3snnd5åsne4di5nedlned3sne4döne2gr4nek_ne5ly4nenlne1ut2n1f4nfis3n4garn4getng3igngi4sng4lyng5omng3orn4gröngs1kn4gödni5ecni4kini5lin4jarn3junnju4sn3knynk3rin1kronk5slnk3spnnis42nodlno4kl2nolj2nomr2nord2norgno5sano5scno4tun1skin4socn1spins3plns3pons3s4n1svans3vin4trönts3cnt4sen4tutn3tvån5ugnnums5n3upp2nutbny5gr4nög4nö2janö5kro2ard5o4bjo4blioc3kuode4kodi4a1odlio3droods4kod2sto4gavog3gro5gloo5glyo4grio4gröog3seo4kliok3slok4suo5lakol5auolfö4ol3kaolk3rol4kuol4käol3läolm4soln3sol4saol4tåo4lugo4lurol5åro3menom5paom3pl4omraom1skom4trom3tvon5gion1gron1k4ons3cons3mont4soom5sop4plop4prop4puo3priop4sto3rako2rap1ordno4reh1orgaor4gror4gåor4möor4nuor4näor4plor5pror5teor2trosk4lo3somos4skos4tr4oti_4otie4otino5troot3svot5tiott2so5tunou3röova4nov4siov3slpaki3pa5lapals5pa5lä2parb4parmpar3s2paskpa2st3patr2p3d44peld5peng3penn3perspi4elpi5so3pjäs4p3k2p4lacp3lev3plex3plic1plik4plit1plomp3lop4poljpoly32porgpo4väp4paxpp3lapp5lupp3lypp3läpp3löpp5ocpp3ofpp3p4pp3rapp3ripp3rupp3rypp3räpp3tr5prax1presp3rigp3rik5prilpro3gp3ror3präs3prövp2salps2lip3snap3sodp1s4tp3tri5pung3punkpus3tpå3drpä5ro4radrra4du5ra1era3frra5isra2lora3plr4ar_4rarbr4are4rargr4ark4rarmr4arnr4ars4rartra5röras3hra2stra5yor4dafr4dosr4dulr4dös5recore5du4reft4reggre1kr4reldre3lurem5p3remsr4en_2reni2renk2renlre3nö3rer_3rern3reso3ret_4retyre5tårg3g23rial3rifi2rifr3rifu3rigtrik2sri4mo2rind2rinr2rins2rint3riotriv3sr4jisr4kekrkes3rk2ler4klörk4ner4kodrk3trr4kupr5körr5lavrlds3rl5spr4milrm5trrnal4rn3g4r2nomrns4krns4tro2kr2roljrom4aron4vro3plro4ra2rord2rorg3rornro4snros3vro5ter4plörra4nrres4r5ribrr5k4r4robr4romrrs2kr4rurr4sexr2sinr1skir2skur3skör4sler4slors4mors5när2splr2spors3s4rs4ter1storst4rr3stur2svär2tafrt4anr4tomr3trär4tutru3brruks13rum_runn24rupprus2hru4virv4sjrå5rarå3st4räkträs3sräv5sröd5rröd3srök3srör4srö4str1övr3sad_3sade4sadjsad5ssa5lo3s2amsa2ma4sang2sanl2sarb2sarm3sarn2sart4sarv4sass5sat_sa4tus3auk2s1av2sch_1scha4schb1schi4schk4schm4schp3schy3schösci3p3seglsek3r3sel_se5ly3sen_3set_2sexp4s3g2shi1ssid5s3s2ig4sinrsis4t2sjak5sjuk4sjur2ska_s4kags2kal1skap4skar4skass2kats4kav4ske_3skif5skin5skiv3skju1skol1skot1skris4krus3kups4kve1s2kys4kyns4kål4skår4sla_4slass1lats2levs4lic4sliss2lits5lors3lucs3luf4slus3slut3slå_s4läks5läms2läts2maks2mals2mids2mit5smug5smygsmå5gsmå3ksmå3s3smäd3smäl4smäs3smör2s2n43snabs3nams5ner3snib3snil3snits3niv3snut5snår5snäcs4när3snö_snö5g3snörsnö3s5sock2solj5sommso4pu3sor_2sord2sorg3sorn4sott4spas4sped2spen2sper3spirs1plaspli4s5plä4spre2spros3pry3språ1s4på3spån3spår5späns5sads5silss5klss2läss2löss3nass3vi4sta_5stacs4taf1stau4stea2stia2stib2stid2stil1stits5tju5stoc1stol4stom1stru2styp4ståg5stål3stäl5sun_5sunes5ung5supasu2pu2s1utsu4tosu4tr5svam4svap4svass3vat4svec3sven5sveps5ves4sviss5våds3väss3vätsyn3ks3yrksys4tsy5thsång34sätas5ögasö4kosör2sta1ch4tadi2taff3taga5tak_4talf4talv3tame3tami3tan_4tanl3tar_4tarb3tarntars44tart4tarv4task3tasttats32tatt4tavetav2st3chat3che2t3d4te4aste3b4tej2ste4kl4teld5tema4temote4mute4nä5ter_5term5terster3tte4ru5tes_5testtets34texa2texp2t1f42t3g4t4hen3tial5tici5tideti4du4tidöti4ed3tighti4goti2gr3tigttik3l3tiks5tilj5time2tind2tinr2tintti4od3tionti2os4tisc5tisk3tiva4tjob2tjou4tjäl4tjäm3tjän2t3k22t5n4tne4r4todl4tol_4tolj2tomr4toms4torm3torntos4kt4raf4trar4treg4tren2troct4rogt4rup1tryc4tråk5trä_3träd3träf3träg4träkt4ränt4rött4segts4ent4sext1skits3klts3nät3snöts3plts4tets3tjt3sudt3tact4taut4tedt4temtte2nttes4t4text4tiptt3jatt3rett3ritt4rytt4sett2sit4tugtt4våt3tör2tund5tunn2tupptu5re2tutbt3utvt3utötu4vut3vigt3vit3tvivt3våg3tvånt3vänty5da5tyg_ty3pi4t5äg4tärm3tävl4tö4dtö5detö4piub5alu3chau4dakuds4auf4fäuf4to4u1gaugg3sugns5ug3s4u2kebuk5laukos4ukt5suk4täul4diul4duul4döul2trum4fäum4soums4tu3mörund3run4dåung3r3unifunk3lunk3nun4krun1skun4tr1uppgupp3sup5utur5aku4robu4romu2sakusen3u2s1kus3kaus4kru5skyus4kåus5läu4ståu4stäu4taku4tefute3sutik2u5tiluti3öu3toputo5sut4ro1utruut3slutt4jut3övu2vak1vagnval3k5valv5vama4vanp2varb4varkvar2sva1ru5vavi2v3d4ve3ke4veldve3nyve5növer5g3verkve1st3veta3vetevid3svil4tvi2novi5ny3vis_vi5savis5hvi4stvi2tr2v3k22v1n44vok_4vord2vorg5vrakv1s2kvs4miv3snivs4tevs3våvu4d1v1und4v5up5våld3vård4vårivå3ru3vänl4värj5värky5danygg3ryg4gåygs4pyl4gjyl5läyl4trym2flyng3rynk5lyn4sayns4typ3riyre4syr4kuyrk5vyrs4kyr5styr5tuy1rå3ys2stys3tays3tiy2taky4te_y4teaytt3rze4roz4zinåds4låge2låg3stå2linål3stånd4rån4duåns4tåns4vå5plaår4doård2så4relå5rorår2svås4keåt3riå3trååt2sjått5säck5vädd3säd4duäde4säd5seäd3stäg4goäg4reäg3seäl2tuämp3länd3räng5ränn3säns1län4stän4sväpp3läp4stä4rapärg5lär4grärib4är4käär2nåär4nöär5obä5rolä3ropä5rorä5rosär2siär2soär4spär2svär2trärt3säs3paäs5piäs4skäs4späs3taäst3rä4stää5treät5teätt3rät4tuät4tvä2vakö4dakö4dalö4disöd3raöd3seög5akö5garö5gerögn3eög3siög3sköj4svök3slöl4kvöl4kööman4öm2klö4nalö2nomön4soö4pelöp5liö5plo1öppnö3rasö3resö3retö5rigör5irör5ivör3olör1orör3slör5teört5sör3vrörö4dö2sakös4sjös2skös4spös3taöst3vö2taköt4stöver1öv3raöv3riöv4sk', - 6 : '_ab5ol_a5gre_al4pr_am4br_amp3l_an5go_a3sti_au3st_a4val_av3s4_bak5s_ben5s_bort1_e3l4a_en5st_e2r3i_evan5_feb3r_fram3_fres5_för1a_gu4lä_hu5sa_in3s2_is5ka_ko5li_köp5s_lak5r_lu2st_me4re_mon2s_mån3s_må4st_nöd5r_oc1ku_om3s4_ord3s_o1s4k_re4gr_runs4_rym2d_röve5_seg3r_sta2m_sup3p_ta3bl_tak5l_tig3r_til4l_tre3s_trä5k_ult5r_ung2e_var4t_ved5s_väg3s_år4s5_åter1abel4sab3ortab5ricab3rioac4kesac4kisack3ska5dran1adresad3ril1af3riaf4toraga4raag5orda4kartak5ramakri5sak3robak4sta1aktigak3trial5admali2bra5lin_a3lineal3insalk3akall3stalms4kal5ortals5paana4boan3alfan3arkan5dakan4dunan4dänang4esan5sceans5kuans3lian4stoan4styan4treape4n3ap4lanapps4kap3ricap3rifa5prisa4ranna4rarvard5sta4rendarg5siar4nalarsk5lar4troarts5par4turar4vägasis5tas3kisas3pigass5upas5terasti5oas5töra4sundata5raa3tral4atrara4t3reat3riaa3tricat3riea5trika3trisa3t4roa4tro_at4ska1attacat2takat4tosa4tungau2t5a3automa4vartbad3s4bank5lbas4taba5stub4battbb4lerbe3d4rbe4stabe4stebis3kobi5skvble4mo5blera3blikr3bliksbor4tibort3rborts22b5raf3brik_b3rika3brike3briksb5riköbru4stb4slanbund4sbus2stcens3t3centrck5lisck3orgc4kortck3sla4dand_del2sade5lutden2tode5roldes3tidfö3ra2dinspdis3kodis1krdis5todi4tredjup5pdom2skdo4pak4d5ord3d4ragd3randd5rarbd5ratu4d5rik3d4riv3droppd3räkn3dräktd2s1ands5enhds3insd3skefds4kends4lotds3tald5statdste4ad5stigds3tinds5trodu4stedy4kaneb3rile4danse5draled2skoed3s2leg2lere4graneg5rateg3rinek3latek3orrek5visel1aktel4arbeleb3rel4fraeli5kuemon1sem5ortemp5leen5artene3röen5kloens5keens4teent4haen2t1rent3rient5ruepp2s3epps5ter4gåse4rinfers4leer4staer2steer3stres5alles3arme4skanes5kares3keres5kule5slagess5läe3stales3tine3struest4röe5tri_et3risets2adets3krets5paetu4rieu4se_eu5troe4varmfac5kefes5tafe3stoffö5refin5smfisk3rflo4dafor4mofost3rfram5p5frerifri5spf4tarmft4setft2s5ifts5väfäs5tifö2renför3smför3sugall3s5g2atig5avsn3gelisgel5stgel5änge4nap3g2enigenom5gen4sag4ense1g2ent1g2era3g2erigers5n5g2ettggs4lagg3s4tgg3s4vgi4stegis4trg4lans5glaseglas5k5glasögon3s4gra2m55grans5grett4g5rikgrus5t5gränsg5sattg5skafgs4kotgs4porgs5pregs3takgs3talgs4teng3stifg3stolgs3tragst4reg3stämg4s3vegul4dagytt3jgårds52g5åri2g5örthal4sohalv3åham4sthasp5lhets3thets3vhis2skhjäl3shos5tihust5rhys5tahälls1hälso3hä4varhö5genhörn5shöst5ri5brilick3u4iden3s3ifråni4kartik5läni5krobik5rofik5rosik5s2hik5u4til4danil5lakil4likill3s2il5läril2minim2b3rin4ge_ing5isin5kve1innehin4sem1inspein5sprin4ståin4trais5kepisk5nais4kuni5slamis3länis4priiss3täi1stalis4tesis3tigist5roit5rani5trini3trisit4t3r3jakt_jd4styje5staju4kosjus5krjus5tajäl4sa3kade_k3aktikal4lokall3s4kand_ka5plakap4prkaps5t3karnakarp5s4kart_4kartekas3ti3kats_4kensekfö3riking3r4kinnek2lamakla4mi3klass2k3läg3k4nap3k4nivkog4s3ko2linkol5tr5kolv_2k3omr3konstko5s4kko4str4krang5krerakrigs33kroppkråk5skrå4pakräk5lksaks5k2s5asks5kraks5tidkti5gek4tinnk2tinskt3rink5trodkt5rogkt3rolkt5rätkum5plkungs5ku4penkust3a3kvalik5vare3kvarnkvar3s3kvartk4vato1kvinn5kvire3kvällkydds3ky4linköks5tkör4sl1lade_3lagd_la4ginlan4dilder4slds4anle4ge_lem4sö2l5enlle5s2lli5kli5limerling5o4lingrli4stalk5lagl3k4rallok5vll4sanll3skall4svall4tigll5örtloc4kulod3stlo2ge_l5skotl3skrälskå4pls5nytls3poll4stakls5terl4stygls5vidlta2tul4tretluk4to4lull_5lust_l4varmlvers4ly4gatlyg3s23lyste5lystnly4strlång3slås5telå4stå1ländslä4sanlätt3s3lörermang2amani1k5ma3rimas3koma5skömas3time3stimet3roming4omin4krmiss3tmi4te_mitt3smnas3tmo4tinm4partmp3ladmp3latmp3linm3slagmulls3mult5rmun4komu3stamut4slmys4temäs5tamör4klna3kro5nalfl4nand_na4rapnast3rncyk3lnd5raknd5rasnd3ratn5driln3dropnd5rosnds3ornds5väne4d3rner5smnes3s4ne4stane3tren4gen_n4gendn4gensn4germng3radng4serngs3panings1nip4prni3t4rniv5skniv5stn4kartn4kis_nkrus4nk4tinnn3s4tnom3s4n4sintn4sis_n4sisens3kanns3korns5lasns5mitn3stapns4teln3stifns3tigns4transt5upn3s4tyns3värn4tarkn4tinfnt3radn3trahn3trakn5tramnt3repn3trernt3riant3rinnt3risn4trornt4strnufts4nös5keoc4k5rock3sko5dralods4tiod5stuoffs5tognos4og4s3toll4siolo5kvom4bräo4mordom4ste3omsätongs4lo4ninsonsi3son4treopp3leor4d5äor4spaort3reort3roo3s2fäo1skopos5pigos4s4tos3tigost5röos3tulot5runot4träotvin4o3ut3tovs4mepakis44pand_pan4trpa5skipent5rper4bl3perioper4slpe5tropi5stapi5sto5plan_p4lanep3larn3politp4partpp5askp4pinspp3linpp5lispp3lånpp3låtpres4t3princpring3p5riol3psalmp5s2hops4kenp4stakp4stävpul5trraci4t3rade_2raffär4anderand3s2ransvr3arta3rativra3trirda5grrd3ranrd3rat4reausre3d4r3regn_ress5kre1sti4retetret3ro2revigrfö3rir3ifrå3riktnrind3sring3rri5pleri2stäri4tutri4visrk3aktr3klasr5lakar4marbrm2s5jro4grorol4li5roman5ronau5rond_ropp2s2roriero4sinr4seldr4skidrsk3nars4kosr4s5lörs5natrs5takr5stekr4stonr3strörs4vagr4tinsr5tritrubb5lru4danruks3vrunns5ru5sha5rutigrut4rarydd5sråge5lrång3sräck5sräng3sräns5trä4sanrä5stiröd5elröns4tröst3r2sa3drsak5ri2s1aktsa2morsand3ss3anlä3s4ar_s5arm_2schau1schen1scher1schetse4at_2s3eggseg3rasek5lesek5trs5ersäs4fär_5s2hawsi4erisi4esksi2ettsikts35sill_silv3r2s1ind2s1inf3sinni2sin1ss1inst5sint_2sintrs3jaktsjäls3s2kado1skaft3skal_5skap_4skapiskaps1s4kara5skarv3sked_s4kene3skepp4skis_5skjorsk5laps3klas3s4ko_1s4kog3skolas4kolos4korp3skratsk4ret3skrev3skrifs3krig5skrin3skrips5kris3skrivs5kron5skrub3skruv5skräc3skulp2skyrk5skåp_5skänk3skärvs5lad_s3lands4lants3lar_3slev_slins3s3lustslu4to5s4lårs5länn3s4läp4s3lär3s2löj3smak_s3makts2met_3s4nacs5nares3nast1snittsol3s2son4stso5pras5ord_s4park5sparvs3passspa5tr3s4pek3s4pel5spets3spills3plans4plin5splits3pres3sprit5spränss3kunss3unn3stadi5stam_5stamm1stant1state3statl2s5te_5steg_s4tek_2stekn5stekts4tell3stem_3steme1stera3stick3stil_3stink3stisc3stjäl3stjär4stolkstor3s3strec3strejst3ren1strer2stria1stridst4rif3struks3tryc5stryk5stråk3strål3sträc4sträd5sträv3ström2st3s4s3tvis5svag_s3vagn4s3vaksvars33svart4s3ver4s3vils4vines5vitt3svåri3sväng2sålde2s5ägg2s3ört3tade_4tads5ta5kretak4totall5sta4nabt4ap3ltar4mita1strta4tan3tavlote2g1rte3grete4int5te5löten3g45tensiten3trte5nör5teriöter3k45ternates4tete5stu5tetiktifts5ti2gel5tikul3tillv3tilläti4van5torapt5ord_torm3stor1st4tort_t5ost_3trafit4rala5tralo3tralst4ralt3transt3ras_t3rat_t4rato4trer_4trern3tribu5tricktrids3t5rielt1ringt3rockt3rono5tross5trotnt4rump3truppträds4t3räkn5träni5tröjats5artt3s4att5slotts5läkts3ordts5tert3stolt4stont2strat4stryt4sturt5styrtte5g4t4tinstt3radtt3rattt4sta4t5ugn3tungatung3s3tvingtvär3s3tvätt3tyngdtäc4ko3törertörs3ttö4vasubb4leub3licud4retuf4tanu3itetuks5koulds2mull3änuls5tiun4domung5itungs4pu4pernu3pletup3lik3uppfaup4pin1uppla5uppläup4p3rupp5spur5arvur4stäus5anlu3schaus4klaus3penus5tatus3tigu3stikus5tinust5ro3utjämut4rerut5rop2utsid3utslä3utvecva5droval4lival4st4vand_van4stvan5trva4resva4ri_vart5rvas5ti5vattnve2s5pvet5savett5svild3s3vind_3vinklvis5kovis3tavi4varvmörk43vrerav2skrivs5tråv5stycvångs3vägg5s3värdevä4ril3världxan5d4y4brisyk5lonym4fory5schoyst3razo4nalåg3s4k5åklag1ålderåll4spål2s5eåman4sård4ra5årsavås4skräl4papäl4segäl4sluäl2t3räl4vinänd1stänni3säns5teän2t3rär2breär4nisärn3stär4skoät4s3kät4topö4darvöde4s5ö4karmöns3keönst3rö4raskör3d4rör1eniö3ringör3intör4kalör1k2lör5kliör4nisör1s2kör4släöts5ko5övere', - 7 : '_a5g4ra_a2n5es_ang4er_a3sket_a5sten_bild3s_e2l5in_e5skad_es3kal_es5kap_fågel3_för1en_in4ger_kans4k_kort5s_kring3_lek5tr_mas2ke_minis4_mörk5r_o3stra_papp5s_pa3ste_pa5sti_pi5sti_pres2s_re2ste_slut3s_sten3s_tes3ta_topp5s_tred2s_u5trerack3u4pa5kvariandel2sansis3tans3par1ansvarapo3str1apparaa4rigenark3lanar5skalas2s5opa5stardast5raka5stralast3rolbors5tebort3sl2b5ratic4kordndels5tidenti5öder5stidin3g4odis3tradrotts3dub3bleechiff5e3glerae5gleriekord5sek4ret_enning5ens4vinerings3erk4liners4kene4s3kenes5ten_esti2gees5tor_est5rerfib5rigfi3skalfros5tafru5strfurs5te4gerarbg3starkgs3tillhands4lhan5g2ahop5plohy3sterhård5s4ic4kordik5skorilufts5ind5skäind5stiing4es_in5glasings5tein3skrä3instruis3kopais4s3tri1stansist5attis5ten_i1stentis5tingis5tor_is5toreit2t5opjor4dinjord3s4jut4stajäl4p5rjärn3sk5kaptenk5arbet3klang_k5lock_5klocka3korres5kra3gek4retenkrid5s2kropps5k5rädd_k5slag_kstavs32kvente5lakan_3laktis3lande_5laste_lat4tisler3ste2linga_lings5tli3strölläggs5lt5ratilus2s5plycks5tman5g4omask3romer2skome5trinm5planemst3rin4mun3g45målet_mö4gen_nd5skalne5gresne5s4tinfalls5n4gentings5timngs3valnings3knings5vnist3ranslags5n3stansn2striknst5vilnter5s4n2t5ombn5tralant3ralints5koroförmå4ogno5stoll5släon5stelons4teron3traso5plineoran3g45organi3orientors5tigo5stillost5ronota2lanpek5tripekt3ropel3s4ipos4terpre3stapres5to3rande_3raste_rek5trirgs5toprhands5rs5kollrs5tendr5stenirs5tillr2taktirv2s5käsamman3san3slasilver33s2kada3skaffn5skapet4skogsgskor1sts5kran_3s2langslotts33smitta5spann_4spelsls3plats4s3prissse4linss2lag_3stalla2stalli5stark_5stenar3s4tene3stense5stensms4teriu3sterne5stetiss4tiken5storis3straff3strato5stride2striel1striktst5risk2strumm3strängs1under5svärm_sys5ter2taktig3tande_2t3anfa2tappar5tavla_3tavlan5teknik5tekniste5stik3tillst5tivite3t4ral_3t4ralet3rets_t3ring_t5ronik4tropi_trus5ta5tryck_5trygght5s4andt5skallt3skatttt3randuk3trisull3ste5underl1undervun5g2efurs5tin2v1aktivensk3äving3s45vinst_5vinsteväll4s3xem3play5klistys4tik_åk4sträård4s3tår5s2liäls5kogär4tandö3randeö4reströr5evigör2p5la', - 8 : '_and4rar_cy5klop_e5strad_krings2_mjölk5s_män5sko_skott3s_string4_vatten3ali5stikas5tikerelekt3riennings2ent4rat_ent3ratieri5stikgi5stralhandels35inspeln3instink5klist3r5korterakrings2kkru5stad2lapparallust3ral4skensv5längderni5sterinkrafts5n4tropinos5tikerpul2l5ov4ran4d3r5ringen_rreligi5rskotts3rslags4v5rullerasinne2s35stalgis5startad1steringstori4eu4strativ5tallise5tartavl5torietttran2s5atskotts5ts5tillf1undersöun3gerskun5tratiutlands35ventera4ändligh', - 9 : '_ma5skeri_pub3likad5rasseragi5st4rat' + 2 : "c21df21hx12y", + 3 : "_b4_d4_f4_g2_k4_l2_m2_n4_p4_r2_s4_t4_v2_x2a2ba1ja1oa1t2aua5å1b23ba4bb3be3bib3k3bo3bub3v3by3bå3bä3böc3c1ci4ck4cr4cs1cy3da2db4dc2dd3di2dj3do4ds3du3dy4dz3dödé4e1a4eb4ece2de1ee1fe1ge1me1o2epe1v4eä3faf3d3fef5h3fi1fl1fo2ft3fu4fv5fy1fä3fö2gb2gd2gg2gh2gl4gw3gyh5c4hdh3gh2ih1k2hl2hm4hnh3ph1s2hth2öi1ai2di1gi3ii1ti1ö1ja2jb2jd1je4jh1ji4jk2jmj2o4jp2jt5jé2kb4kc4kjkl2k2o2kskv41le2lh1lil1n2lv3lé1ma2mb2mc2md1me2mh1mi1mo4ms1na2nd1ne2nh2nk1no4nsn5zo1ao2bo2do1eo1go1io1jo1ko5qox5oy2o3åo3ö1pa2pc2php2jp2l1po2pp2ps1pu3péqu41ra2rb1re2rh4rj2rk2rsr3w1sa4sbs2c1se2sh1si2sm1sos2t1su1så1sä1sö1ta2tc2th1tit2j2ts2tt2tv2tz5téu1au2bu2du1eu3ju1ou5uu5åu3ö1ve2vhv4i1vo2vs3vy1wawe2w2hxk2xs4y1ay2dy1ey1iy5wy5å1za1ze1zi1zo4zpz5s3zuå1aå1eå1få3iå1må3oå1på1vä1aä2b2äcä2dä3eä3i4äk4äs2ätö1aö2dö1eö1iö1vé3e", + 4 : "_a4b_ac3_a4d_e2s_ex3_ib4_ik4_o3o_o1u_sk4_st4_u3k_up2_y2a_y4ea5beab1la5buad3jad2sa5eda1gaa1geag1la4hjaib4a3iva3kaa5kea1kiak3na1koa1ku4aköa1laa4lja1loa1lua1lyam4iam1sa3möan3ca1nua5nya3nöa1pea1piap2sa5pya5pä2ara1arb2arha1ri4arla1ro4arp4arua3rya3rä2asaa1scas2has5la3suas3va1sya2söa5tea4tja2trau5b1avgav3rbbb4bb3l4b3dbe5ebe1kbe1sbe3u4bex2b3f2b5hb3je4b3m2b3n5bonbo1sboy54b3p3bry3brö4b3sb4spbst44b3tby5r5cap1c4e4ch_4chtcim2c3kac3kec3kick5jck1lck3nc3kock3rck5äck3öco2aco4m5da_2dak5dam4daxddd4d3djdd2s3d2ed4en5derde2sd4et4dex2d1f2d1gd3gl2d5hdi1o4d5l2d1m2d1nd2ol5dondo3y2d1pd2sed4sfd2sid2sjdsk2ds1ld2sod2suds1vd2sö2d3t4dupdu1s4dut2d1vd3vr2d3w5dåg2dås4dåt4dägdä2r4dög4döpe4ame2bre3che3coed3je3dåe2ede4eief4se3gae3geeg1legs3e5gåeig2e3ike1ine1joe3jue3jäe5jöe3kae1kie1klek3ne1koe1kue1kye1käe1lae1loel3p2enj2enye2ogeo4ie5ore1pee1pie1prep3se3påe1rie1roerp4e1rue3rye1räe1sc2esees2ke1sle1spes2ue1sye5tie1toet2se1tue1ty2etze1täeuk44eure4vjev3r3expfac44fav4f3b4feffe2l4fex2f1ffff4ff3lff3nf3foff3rffs4f3fäf3g22f3k4f3mfma44foffol24f3p2f3sfs2kf4slf4smf4snf4spf4stf4svf3taf3tif3toft5tft1vg4av4gaxge2a2gefg4emge2o2g1fg1gag1gegg5ggg1lg4gu1g2igi1o3givgi2ög2jog3jä4glj2g1m2g1ng2no1g2o3go_3gol2g1pg2r4g4rå2g2sg4sfgs1lgs1mgs3ngs3sgs1vgs1ä2g1tg3tr1g2u4gug4gup2gut2g1v1g2åg4älg2ärgä4s1g2ö4göghav24hirhi4th4leh2na4howh5ruhu2shä4shö2ghö4sia3gi3cai5coid1rid2si3dåi4dö2i1ei5fni1frig1li1kiik3ni1koik1vi3kyi3kåi3köi1lail5ki1loi3lui5läi1mui5måi3mäi5möi3niin5ji1nui1näi5oci1ogi3oki1oli5omion2i1opi1ori1osi1oti1pei1pii3rai1rii1roi1ruis2hi2skis3mis3nis5vi3syi4såit5ci4tj4i1ui1vai1viiv3riv2si1våix2tjd3rj4duje2a5jef2j1f4j3g4jinj4klj3kojk3v2j1l2j1n3job3jouj5pl2j3r2j1sj5saj4skjts42j2u4jur1k2a3ka_2kafka3i2kak2kap3kas4kau1k2e3ke_2kepke2s4kex2k1fkfö22kh44kif1kigk3jä2k3k2kle2k1m2k2nk4ny4koc1kom1kon1kor2k1pk2r4k2sok2su4k1tk2tr4kug3kusk2vek4vok1vå4kög3la_2laf2lak2lau2lav2lb44l1c2l2dl3dj3le_2lex2l1f2l1gl2gjlgs43lif3ligli1o2lip1ljul5jål1jä2l1kl3kel2kll2krlk3tl1lalld4ll3kll1ll1loll3pl1lull5vl5ly4l1m2loml1pel1pi4l3r2l1sl2scl2skl4sml2spls5sl2stl2sul2svl4så4l1tltu4lu5i2lunl1val1vil1vä2lå_4läc4löl4löm3lön1lösm4dim4domeu42mex2m1fm4fnmis22m1k2m3l2m1nm4odmo4i2m1pm2plm4på2m1rms2m2m1t4mud5mum3mur2m3v1mynmåg44mårmå1s4mägmäk31män1mäs1mät3möj3mös4möv3na_3nad2naf2nak2nb42n1cn2chn5de3ne_2nex2ng1n2gin2go1n2i4nid3ninni1o4nip2n1jn3jän1kin1kon1kun1kö2n1l2n1m2n1nnn3dn3nenn3k2n1p2n1rns2ins2k2n1t4nug3nui3num2nup2n1v4når4nä_4näc3näm3nät3nöj4nölnös4oby4o3däo4flo3fro4gjo4gäo4ilok3no2kvo1la1oljo1loo1luo1lyo1lä1omron3con3jo1nyon5åo1näo3nöoo4do3oro1peo1pio3på4orao1ri4orko1roo1ruo3ryo1räo1röo1too1tuo1tyo5tåo3täoun4oup44ourou4so1vao1viov3ro1väo3weo3än4pafpag43pappa3u2pb44pem4pex2p1f4p3g1pigpi1o3pipp3lj2p1m4p1np3ni5poa2poc2pofpo2i3pos4povp3pep1pipp3jpp1lpp1rp2pup5pypp3åp2r22pra3pro4prå4psop2sö2p1t4pug2p1v3päl4pör3que3ra_2rak3rarr4as2rav2r1c2r2dr3djr3dår3dä3re_re3b4recre3o4rex2r1f2r1g4ribri1or3jor5jur5jör1kirk3nr1kor1kur1kä2r1lrld22r1m2r1nrn1krn3tro3b2r1pr4pö4r1rrrd4rr1sr1spr1svr1sy2r1trt3t2rut5ruö2r1vry5o4rål4räm4räs2rögr3öi4röp3rör3sa_2safsa3i2sap2sau4s3dse2gsem22s1fsfö2s5hö5sie3sik3siosiu41s2j4sjn4sjts4ju3sjö4sk_4skhsk4i4skl4sknsk3s2skt2skv1skå2sl2s2lus3mjs4nå3soc2sod5soi2som3son3sots2p21spe4spls3ps3spö4s1r4s1sss2kss1lsss4s2sv2st_st3c2stj2stmst3t4stv1sty1stå1stä1stösu4b3sugsu3i3sum2sun2sup5suss2v24syk5syl3syn3syssyt25såg4såks4äds4äl2säp5säs3sät4söd2sög4söl4söp3ta_tat22tav3tax2tb43t2e5tec4tegte3i4tej5tib3tidt2il3tisti2ö4tje2t3l2t1m3tokt2opt4ov2t1pt2r42tra2tri5trét3sets2kt2sotss4t1stt2sut5syt1tot3tutt1vt3tyt3tä5tuöt1va4tve3typ5tys3tågtås44tåt4täm4tög4töpu4bou5clu5deud3ru4duu4dyu2esu1geugn4u5ieu1inu3isu5kiu4kluk3nu1kouk2su3kuuk3vu1lau1lou3luu1läu1löu1muu5nuu1peu1piu2plu3reu1riu1rou5ryu3seus3nu2spus3vu4såu4säu2sö1utbut3ju1tout3r2uttut1vu5ty2u1vu4vju4vä5vap4vau4vav2vb42v1c5vecve2k4vepves42v1f2v1gvi4c4vjo2v1l2v1m2vomvos42v1p2v2rv3ruv4scv2sov1stv2sö2v1t4vut2v1v3vägvä4l2vät3väx4vög4vöp3vörwhi2wi2ew4naxis4xli4xti2x4tåyb4sy4day4doyd3ryds4y4duy4döy1gay1gey1kiyk3ny1koy1lay3liyl5ky1loy3måy3ory5ouy1pey5poy1riy1roy1toyt5vy3vay3viy3väå3djå1gaå1geåg3lågå4å1kiå1laål3kå1läå2plå4pöå1riår5öås3nåss4ås4tåte2äd3rä1gaä1geäg1läg3rä5joä1kiäk3näk3rä1laä4noä3peä4prä1riä4såä3toä1vaä3viä5vuöd2sö4duö4döö1ga1ögdö1geögg4ög1lög2n1ögoö3joö1kiök3nök2sö1laöl2pö5läö3peö3piö4prörb4ör3gö1riör1uör3yör1äös3növe4ö2vj", + 5 : "_ab5i_ab3r_a3dr_ad3s_a5kl_a5le_a3lu_a5mu_an5s_ap1p_as2k_as4t_a5ta_at3t_bo2k_cis4_där3_ek1v_e4nä_es4t_e3tr_gus3_he2m_im3p_i2n1_i4na_in3d_ink2_in3t_i3so_ner1_no4n_ok3t_o3kv_o2ma_o2mo_o3mu_on4k_o5sc_o3sl_o3sv_o3tr_sa2k_si5o_sjö1_ta4k_ti3o_u4ra_ur3s_u2t1_u4ta_ut5s_vä2g_ång3_å3st_ä3ro_ö3roab4buabe2sab3laab4scab4ska5daga5deka5delad5epad3opa3dread3ruaf4fo3affäa2ge_ag1grag3roa4gurak3vea5kårak5åta2linal2kval4käal3låal3tral4tual4täalu5salv3sa4mafam4pram3åtanci5a4nefan3gian1graniu4ank3rano2ia4noka4nopan4sjan1stan4tja2pe_ap3seaps5laps3papu5s4arbi2arbo4arbrar3drar3kaar5kr4arn_a2robar2saar2sva4rura5rusasbe4a2skoa4skras3kuas3paas2skas2spas2stas3taas3toas4tra4sulas2uta2s5åati5öat4tjatt3saut5s2a1va2a1vi4a3väba4diba4dobak5lba4koba4kub4bakb4b3rbb4so4beldbe5lube3lybe3låbe5löbeng4be3nåbe1röbe3slbes5sbe5sube3trbe3tvbi3d44binvb5larb5latb5len3bles5blidbo4grbo2klbo1mubo4sc4brarb5scebs3chb4sofb4stjbång3båt2sbör2sceu4s3chau3chef5chocchäs3chör4ci4lucipp4ck4reckus2ck3vack3veck3väcle2acros24dadrdags35dakoda3lida3må4d1ap4darb4dartda4trdat5tdcen3ddi4sd4dosdd3radd3redd3rid3drädds3vde1k44deko4deldde3prder1kde2rode4rude3sede3spde3trdias4di5eldi2grdi3kadi5ku4dinf4dinr4dins4dintdi4oddi3scdi4sjdis1pd3jor3djur2d3k2do5lo4domr4dori4dortd5ost2d2r2d3rad3drejd3ren5dresd3retd4ric3drifd3rigd3rind5rocd3ror4drot5dränd3rätd5rödd3skids3klds5knds4mod4småds5nåds3plds3s4ds4tedu2scdu5södu4vudy4rodöds1d5öste2akeecis4edd4redi4ued1skedso4ee2k5e4en_e4ene3efteege2le5gruei5gnei5she1iskek4leek5roe1kve3eld_el3k4el3liell3sel3läe4lobel2siel5uge5luv2e1läe5mate5mise2naven4cee4nede4neken3knen5kren5käeno2men3siens2men2spen4såe5nus2e1näe3plaep5leep4trepu3ber1ak4eraser3d4erg4ler4gue5riberlä4er5nae3robe2romer3raer5scer3sler3sve5rume5råde2sales4hiesi4ues2mies3ples2skes2stes4tre3ståeta3beti3öe5träets1lets3met4svett3ret4vaet5vuetäc4e5um_e5up4ext4r4fans4farbfa3shfa4stfa4töfi2brfi3lifi2tifolk12f5omfo2nafra2mf4rerfre4sf4ri_5fritfrån5f4taff4takf4tapfte4rf4texf4tinf4t3rft2saft4sjfts4tfu5rufu3tufy4mafå3töfö2rafö2riför3kfört4för1öga5br3g2ag4gakt3g2alga5läga4no2garb4garmga2ro4gartga4stga4sugaus4g3d4rge5b42ge4jg2eligel5y3gelägen5g3genj4genm4genvge5ny3genä5gesege4toget5sg4gapg4gosggs4mgh4tegi5sn3gjor2g3k2g1larg2lasg4lidg4lög5glömg4nag4gont2gord4gorm4gortgo3sl3graf5gral4gras5grecg3rig5grip3grisg5roigro2v4grum5grå_grä4ngs1ang3selgsi4dg3sjugs4kigs3kng3skyg4smegs4nigs4nögs1orgs3plgs3pogs3pugs3tjg4suggs3vigs3vågs3ytguld34gulägu2magu5rugus4kg3utbgö5roha3blha5geha4liha5raha4scha4sphas3thavs3he4athe4frhe4lähets1h2nitho5nuhop3shos3phyg5rhys4thäll2hä4rihög5ria3fria4luia4skia3tri2b3li4ce_i5chaid4gei4domid3roids3vi4dunifes44igani2gebig5ejig3noi3kloik3rei3kuli3kumi2linil1jö3illuil2tji4lupim5smim4soi4nau1induin4gai4nif5inre1inri3inräin3slins4min3snin5te1intrint3si4nunin3ymio4krio5lii3onoions3ipos4ip5pii4resirk5liro3pi5sceisel4is3kuis3kyi2s3pis3sais3seiss5nistå4i4teii4texit4tui2t5åi2vaki4vinix5tu4jarbjas5pjo4kr4joljjo5löjs4mejs4tejuk3sjul3kjuss4jus4tjä5lojär5sjör2sjös4t3kad_ka4dr5kafäka5ju4kalf4kalg3kamp3kamr3kan_5kano3kapi3kar_ka3ra4karbka5ri4kark4karp4karvka4sk3kat_2k3d4kdom42ked_2kedake3drked4ske4er2kefu4keldkels4ke5nå3kernkes3s2k5g4kid3skik4skilt45kimå4kins2kintki4nuki4trkiv3s5kjol1klag2klat5klavk2lej2kligk2lim3klipk2lis3klos1klub4kluk1klädk4nal5knip3k4nuk5nykko5dek5odlkog3nko4gr4kola4kolj3komm5kompkom4s3konf3kontko3nu3korgko3ri2korrko3sl3kost4k3ou3kraf1krig4krivk3ryg4krälk3rätks3chk4serks2k4ks3klks5kvk3skäk3sköks2lik5slyks3plk1s4tk4texk2todk2tomkt3rekt2stkt5t4k4tugk2tutk4tälk5ugnku5la4kuld3kulö5kunnku4ro3kursk1vär3kyrkkäl4m5kämp5känn3käns3kärl5köp_kör4l2ladm4ladr5lagmlag3r5lakila5lo2larb1larnlar5s4lartlas3h4laskla4st1lat_la5trla5vuld3ral5dryle5igle2klle4kv3ler_ler5k3lernle5tåle3umle4vul3g2llg5stli5chli4golig3slik2llik3s2lind2lini5linj2lintlis3cli4volivs1l2jak4l1jol3jörl5kjul5kläll3drlle5bll2sell2soll3trll5unl5lödllör4l4mollm3stlo2af4lodllo4do2lolj4lord2lorglor4slo4vol4pakl5plalp5lölp4stl4sjol4själ3skilsk3nl3skyl3skål3skäl3sluls4mol3spels3pll3stals4tel3stol3styl3stål3stäl5stöl5surl4svil4tefl4tifl4tihl4tosl4trölt5sklung32lupplu4pu4lutb4lutsl4voslv3rilv3splväv4lyg3rlåg3s1långlå4skläg5rlä4splö4väma5frmag5nmag5sma5jumak3rma3limand4ma5nimash5mas4vmb4skm4datm3d4r2medsme4dume4klme4ko4meldmelo5me5lumen5kme5nume5nyme4somes4t2metam4fes2m1g4mid3smi4lu2mind4mink4minvmi3nömi5sfmi4spmi4tr2m1m2mme5dmm3s4m4mulm2namm4navmn5drmn3g4mn5stmn5tum2n3å2momrmo3namos3kmo2tamo4tumot3vm2pakmpos4mp5p4mps4kmp5spm4salm4skems3lämste2m1stom2strms5äp3musi1mål_5mån_mäns43märkmö4blnads3na5gr3nako3nakrn1akt2nalf4nalgnal3sna2lun5amb5namn4nanv2narb2nark4narm2nartn3chan3chen3chincis4n4dakn4davnd3d4nde3sn4dilnd3rind3snnd5åsne4di5nedlned3sne4döne2gr4nek_ne5ly4nenlne1ut2n1f4nfis3n4garn4getng3igngi4sng4lyng5omng3orn4gröngs1kn4gödni5ecni4kini5lin4jarn3junnju4sn3knynk3rin1kronk5slnk3spnnis42nodlno4kl2nolj2nomr2nord2norgno5sano5scno4tun1skin4socn1spins3plns3pons3s4n1svans3vin4trönts3cnt4sen4tutn3tvån5ugnnums5n3upp2nutbny5gr4nög4nö2janö5kro2ard5o4bjo4blioc3kuode4kodi4a1odlio3droods4kod2sto4gavog3gro5gloo5glyo4grio4gröog3seo4kliok3slok4suo5lakol5auolfö4ol3kaolk3rol4kuol4käol3läolm4soln3sol4saol4tåo4lugo4lurol5åro3menom5paom3pl4omraom1skom4trom3tvon5gion1gron1k4ons3cons3mont4soom5sop4plop4prop4puo3priop4sto3rako2rap1ordno4reh1orgaor4gror4gåor4möor4nuor4näor4plor5pror5teor2trosk4lo3somos4skos4tr4oti_4otie4otino5troot3svot5tiott2so5tunou3röova4nov4siov3slpaki3pa5lapals5pa5lä2parb4parmpar3s2paskpa2st3patr2p3d44peld5peng3penn3perspi4elpi5so3pjäs4p3k2p4lacp3lev3plex3plic1plik4plit1plomp3lop4poljpoly32porgpo4väp4paxpp3lapp5lupp3lypp3läpp3löpp5ocpp3ofpp3p4pp3rapp3ripp3rupp3rypp3räpp3tr5prax1presp3rigp3rik5prilpro3gp3ror3präs3prövp2salps2lip3snap3sodp1s4tp3tri5pung3punkpus3tpå3drpä5ro4radrra4du5ra1era3frra5isra2lora3plr4ar_4rarbr4are4rargr4ark4rarmr4arnr4ars4rartra5röras3hra2stra5yor4dafr4dosr4dulr4dös5recore5du4reft4reggre1kr4reldre3lurem5p3remsr4en_2reni2renk2renlre3nö3rer_3rern3reso3ret_4retyre5tårg3g23rial3rifi2rifr3rifu3rigtrik2sri4mo2rind2rinr2rins2rint3riotriv3sr4jisr4kekrkes3rk2ler4klörk4ner4kodrk3trr4kupr5körr5lavrlds3rl5spr4milrm5trrnal4rn3g4r2nomrns4krns4tro2kr2roljrom4aron4vro3plro4ra2rord2rorg3rornro4snros3vro5ter4plörra4nrres4r5ribrr5k4r4robr4romrrs2kr4rurr4sexr2sinr1skir2skur3skör4sler4slors4mors5när2splr2spors3s4rs4ter1storst4rr3stur2svär2tafrt4anr4tomr3trär4tutru3brruks13rum_runn24rupprus2hru4virv4sjrå5rarå3st4räkträs3sräv5sröd5rröd3srök3srör4srö4str1övr3sad_3sade4sadjsad5ssa5lo3s2amsa2ma4sang2sanl2sarb2sarm3sarn2sart4sarv4sass5sat_sa4tus3auk2s1av2sch_1scha4schb1schi4schk4schm4schp3schy3schösci3p3seglsek3r3sel_se5ly3sen_3set_2sexp4s3g2shi1ssid5s3s2ig4sinrsis4t2sjak5sjuk4sjur2ska_s4kags2kal1skap4skar4skass2kats4kav4ske_3skif5skin5skiv3skju1skol1skot1skris4krus3kups4kve1s2kys4kyns4kål4skår4sla_4slass1lats2levs4lic4sliss2lits5lors3lucs3luf4slus3slut3slå_s4läks5läms2läts2maks2mals2mids2mit5smug5smygsmå5gsmå3ksmå3s3smäd3smäl4smäs3smör2s2n43snabs3nams5ner3snib3snil3snits3niv3snut5snår5snäcs4när3snö_snö5g3snörsnö3s5sock2solj5sommso4pu3sor_2sord2sorg3sorn4sott4spas4sped2spen2sper3spirs1plaspli4s5plä4spre2spros3pry3språ1s4på3spån3spår5späns5sads5silss5klss2läss2löss3nass3vi4sta_5stacs4taf1stau4stea2stia2stib2stid2stil1stits5tju5stoc1stol4stom1stru2styp4ståg5stål3stäl5sun_5sunes5ung5supasu2pu2s1utsu4tosu4tr5svam4svap4svass3vat4svec3sven5sveps5ves4sviss5våds3väss3vätsyn3ks3yrksys4tsy5thsång34sätas5ögasö4kosör2sta1ch4tadi2taff3taga5tak_4talf4talv3tame3tami3tan_4tanl3tar_4tarb3tarntars44tart4tarv4task3tasttats32tatt4tavetav2st3chat3che2t3d4te4aste3b4tej2ste4kl4teld5tema4temote4mute4nä5ter_5term5terster3tte4ru5tes_5testtets34texa2texp2t1f42t3g4t4hen3tial5tici5tideti4du4tidöti4ed3tighti4goti2gr3tigttik3l3tiks5tilj5time2tind2tinr2tintti4od3tionti2os4tisc5tisk3tiva4tjob2tjou4tjäl4tjäm3tjän2t3k22t5n4tne4r4todl4tol_4tolj2tomr4toms4torm3torntos4kt4raf4trar4treg4tren2troct4rogt4rup1tryc4tråk5trä_3träd3träf3träg4träkt4ränt4rött4segts4ent4sext1skits3klts3nät3snöts3plts4tets3tjt3sudt3tact4taut4tedt4temtte2nttes4t4text4tiptt3jatt3rett3ritt4rytt4sett2sit4tugtt4våt3tör2tund5tunn2tupptu5re2tutbt3utvt3utötu4vut3vigt3vit3tvivt3våg3tvånt3vänty5da5tyg_ty3pi4t5äg4tärm3tävl4tö4dtö5detö4piub5alu3chau4dakuds4auf4fäuf4to4u1gaugg3sugns5ug3s4u2kebuk5laukos4ukt5suk4täul4diul4duul4döul2trum4fäum4soums4tu3mörund3run4dåung3r3unifunk3lunk3nun4krun1skun4tr1uppgupp3sup5utur5aku4robu4romu2sakusen3u2s1kus3kaus4kru5skyus4kåus5läu4ståu4stäu4taku4tefute3sutik2u5tiluti3öu3toputo5sut4ro1utruut3slutt4jut3övu2vak1vagnval3k5valv5vama4vanp2varb4varkvar2sva1ru5vavi2v3d4ve3ke4veldve3nyve5növer5g3verkve1st3veta3vetevid3svil4tvi2novi5ny3vis_vi5savis5hvi4stvi2tr2v3k22v1n44vok_4vord2vorg5vrakv1s2kvs4miv3snivs4tevs3våvu4d1v1und4v5up5våld3vård4vårivå3ru3vänl4värj5värky5danygg3ryg4gåygs4pyl4gjyl5läyl4trym2flyng3rynk5lyn4sayns4typ3riyre4syr4kuyrk5vyrs4kyr5styr5tuy1rå3ys2stys3tays3tiy2taky4te_y4teaytt3rze4roz4zinåds4låge2låg3stå2linål3stånd4rån4duåns4tåns4vå5plaår4doård2så4relå5rorår2svås4keåt3riå3trååt2sjått5säck5vädd3säd4duäde4säd5seäd3stäg4goäg4reäg3seäl2tuämp3länd3räng5ränn3säns1län4stän4sväpp3läp4stä4rapärg5lär4grärib4är4käär2nåär4nöär5obä5rolä3ropä5rorä5rosär2siär2soär4spär2svär2trärt3säs3paäs5piäs4skäs4späs3taäst3rä4stää5treät5teätt3rät4tuät4tvä2vakö4dakö4dalö4disöd3raöd3seög5akö5garö5gerögn3eög3siög3sköj4svök3slöl4kvöl4kööman4öm2klö4nalö2nomön4soö4pelöp5liö5plo1öppnö3rasö3resö3retö5rigör5irör5ivör3olör1orör3slör5teört5sör3vrörö4dö2sakös4sjös2skös4spös3taöst3vö2taköt4stöver1öv3raöv3riöv4sk", + 6 : "_ab5ol_a5gre_al4pr_am4br_amp3l_an5go_a3sti_au3st_a4val_av3s4_bak5s_ben5s_bort1_e3l4a_en5st_e2r3i_evan5_feb3r_fram3_fres5_för1a_gu4lä_hu5sa_in3s2_is5ka_ko5li_köp5s_lak5r_lu2st_me4re_mon2s_mån3s_må4st_nöd5r_oc1ku_om3s4_ord3s_o1s4k_re4gr_runs4_rym2d_röve5_seg3r_sta2m_sup3p_ta3bl_tak5l_tig3r_til4l_tre3s_trä5k_ult5r_ung2e_var4t_ved5s_väg3s_år4s5_åter1abel4sab3ortab5ricab3rioac4kesac4kisack3ska5dran1adresad3ril1af3riaf4toraga4raag5orda4kartak5ramakri5sak3robak4sta1aktigak3trial5admali2bra5lin_a3lineal3insalk3akall3stalms4kal5ortals5paana4boan3alfan3arkan5dakan4dunan4dänang4esan5sceans5kuans3lian4stoan4styan4treape4n3ap4lanapps4kap3ricap3rifa5prisa4ranna4rarvard5sta4rendarg5siar4nalarsk5lar4troarts5par4turar4vägasis5tas3kisas3pigass5upas5terasti5oas5töra4sundata5raa3tral4atrara4t3reat3riaa3tricat3riea5trika3trisa3t4roa4tro_at4ska1attacat2takat4tosa4tungau2t5a3automa4vartbad3s4bank5lbas4taba5stub4battbb4lerbe3d4rbe4stabe4stebis3kobi5skvble4mo5blera3blikr3bliksbor4tibort3rborts22b5raf3brik_b3rika3brike3briksb5riköbru4stb4slanbund4sbus2stcens3t3centrck5lisck3orgc4kortck3sla4dand_del2sade5lutden2tode5roldes3tidfö3ra2dinspdis3kodis1krdis5todi4tredjup5pdom2skdo4pak4d5ord3d4ragd3randd5rarbd5ratu4d5rik3d4riv3droppd3räkn3dräktd2s1ands5enhds3insd3skefds4kends4lotds3tald5statdste4ad5stigds3tinds5trodu4stedy4kaneb3rile4danse5draled2skoed3s2leg2lere4graneg5rateg3rinek3latek3orrek5visel1aktel4arbeleb3rel4fraeli5kuemon1sem5ortemp5leen5artene3röen5kloens5keens4teent4haen2t1rent3rient5ruepp2s3epps5ter4gåse4rinfers4leer4staer2steer3stres5alles3arme4skanes5kares3keres5kule5slagess5läe3stales3tine3struest4röe5tri_et3risets2adets3krets5paetu4rieu4se_eu5troe4varmfac5kefes5tafe3stoffö5refin5smfisk3rflo4dafor4mofost3rfram5p5frerifri5spf4tarmft4setft2s5ifts5väfäs5tifö2renför3smför3sugall3s5g2atig5avsn3gelisgel5stgel5änge4nap3g2enigenom5gen4sag4ense1g2ent1g2era3g2erigers5n5g2ettggs4lagg3s4tgg3s4vgi4stegis4trg4lans5glaseglas5k5glasögon3s4gra2m55grans5grett4g5rikgrus5t5gränsg5sattg5skafgs4kotgs4porgs5pregs3takgs3talgs4teng3stifg3stolgs3tragst4reg3stämg4s3vegul4dagytt3jgårds52g5åri2g5örthal4sohalv3åham4sthasp5lhets3thets3vhis2skhjäl3shos5tihust5rhys5tahälls1hälso3hä4varhö5genhörn5shöst5ri5brilick3u4iden3s3ifråni4kartik5läni5krobik5rofik5rosik5s2hik5u4til4danil5lakil4likill3s2il5läril2minim2b3rin4ge_ing5isin5kve1innehin4sem1inspein5sprin4ståin4trais5kepisk5nais4kuni5slamis3länis4priiss3täi1stalis4tesis3tigist5roit5rani5trini3trisit4t3r3jakt_jd4styje5staju4kosjus5krjus5tajäl4sa3kade_k3aktikal4lokall3s4kand_ka5plakap4prkaps5t3karnakarp5s4kart_4kartekas3ti3kats_4kensekfö3riking3r4kinnek2lamakla4mi3klass2k3läg3k4nap3k4nivkog4s3ko2linkol5tr5kolv_2k3omr3konstko5s4kko4str4krang5krerakrigs33kroppkråk5skrå4pakräk5lksaks5k2s5asks5kraks5tidkti5gek4tinnk2tinskt3rink5trodkt5rogkt3rolkt5rätkum5plkungs5ku4penkust3a3kvalik5vare3kvarnkvar3s3kvartk4vato1kvinn5kvire3kvällkydds3ky4linköks5tkör4sl1lade_3lagd_la4ginlan4dilder4slds4anle4ge_lem4sö2l5enlle5s2lli5kli5limerling5o4lingrli4stalk5lagl3k4rallok5vll4sanll3skall4svall4tigll5örtloc4kulod3stlo2ge_l5skotl3skrälskå4pls5nytls3poll4stakls5terl4stygls5vidlta2tul4tretluk4to4lull_5lust_l4varmlvers4ly4gatlyg3s23lyste5lystnly4strlång3slås5telå4stå1ländslä4sanlätt3s3lörermang2amani1k5ma3rimas3koma5skömas3time3stimet3roming4omin4krmiss3tmi4te_mitt3smnas3tmo4tinm4partmp3ladmp3latmp3linm3slagmulls3mult5rmun4komu3stamut4slmys4temäs5tamör4klna3kro5nalfl4nand_na4rapnast3rncyk3lnd5raknd5rasnd3ratn5driln3dropnd5rosnds3ornds5väne4d3rner5smnes3s4ne4stane3tren4gen_n4gendn4gensn4germng3radng4serngs3panings1nip4prni3t4rniv5skniv5stn4kartn4kis_nkrus4nk4tinnn3s4tnom3s4n4sintn4sis_n4sisens3kanns3korns5lasns5mitn3stapns4teln3stifns3tigns4transt5upn3s4tyns3värn4tarkn4tinfnt3radn3trahn3trakn5tramnt3repn3trernt3riant3rinnt3risn4trornt4strnufts4nös5keoc4k5rock3sko5dralods4tiod5stuoffs5tognos4og4s3toll4siolo5kvom4bräo4mordom4ste3omsätongs4lo4ninsonsi3son4treopp3leor4d5äor4spaort3reort3roo3s2fäo1skopos5pigos4s4tos3tigost5röos3tulot5runot4träotvin4o3ut3tovs4mepakis44pand_pan4trpa5skipent5rper4bl3perioper4slpe5tropi5stapi5sto5plan_p4lanep3larn3politp4partpp5askp4pinspp3linpp5lispp3lånpp3låtpres4t3princpring3p5riol3psalmp5s2hops4kenp4stakp4stävpul5trraci4t3rade_2raffär4anderand3s2ransvr3arta3rativra3trirda5grrd3ranrd3rat4reausre3d4r3regn_ress5kre1sti4retetret3ro2revigrfö3rir3ifrå3riktnrind3sring3rri5pleri2stäri4tutri4visrk3aktr3klasr5lakar4marbrm2s5jro4grorol4li5roman5ronau5rond_ropp2s2roriero4sinr4seldr4skidrsk3nars4kosr4s5lörs5natrs5takr5stekr4stonr3strörs4vagr4tinsr5tritrubb5lru4danruks3vrunns5ru5sha5rutigrut4rarydd5sråge5lrång3sräck5sräng3sräns5trä4sanrä5stiröd5elröns4tröst3r2sa3drsak5ri2s1aktsa2morsand3ss3anlä3s4ar_s5arm_2schau1schen1scher1schetse4at_2s3eggseg3rasek5lesek5trs5ersäs4fär_5s2hawsi4erisi4esksi2ettsikts35sill_silv3r2s1ind2s1inf3sinni2sin1ss1inst5sint_2sintrs3jaktsjäls3s2kado1skaft3skal_5skap_4skapiskaps1s4kara5skarv3sked_s4kene3skepp4skis_5skjorsk5laps3klas3s4ko_1s4kog3skolas4kolos4korp3skratsk4ret3skrev3skrifs3krig5skrin3skrips5kris3skrivs5kron5skrub3skruv5skräc3skulp2skyrk5skåp_5skänk3skärvs5lad_s3lands4lants3lar_3slev_slins3s3lustslu4to5s4lårs5länn3s4läp4s3lär3s2löj3smak_s3makts2met_3s4nacs5nares3nast1snittsol3s2son4stso5pras5ord_s4park5sparvs3passspa5tr3s4pek3s4pel5spets3spills3plans4plin5splits3pres3sprit5spränss3kunss3unn3stadi5stam_5stamm1stant1state3statl2s5te_5steg_s4tek_2stekn5stekts4tell3stem_3steme1stera3stick3stil_3stink3stisc3stjäl3stjär4stolkstor3s3strec3strejst3ren1strer2stria1stridst4rif3struks3tryc5stryk5stråk3strål3sträc4sträd5sträv3ström2st3s4s3tvis5svag_s3vagn4s3vaksvars33svart4s3ver4s3vils4vines5vitt3svåri3sväng2sålde2s5ägg2s3ört3tade_4tads5ta5kretak4totall5sta4nabt4ap3ltar4mita1strta4tan3tavlote2g1rte3grete4int5te5löten3g45tensiten3trte5nör5teriöter3k45ternates4tete5stu5tetiktifts5ti2gel5tikul3tillv3tilläti4van5torapt5ord_torm3stor1st4tort_t5ost_3trafit4rala5tralo3tralst4ralt3transt3ras_t3rat_t4rato4trer_4trern3tribu5tricktrids3t5rielt1ringt3rockt3rono5tross5trotnt4rump3truppträds4t3räkn5träni5tröjats5artt3s4att5slotts5läkts3ordts5tert3stolt4stont2strat4stryt4sturt5styrtte5g4t4tinstt3radtt3rattt4sta4t5ugn3tungatung3s3tvingtvär3s3tvätt3tyngdtäc4ko3törertörs3ttö4vasubb4leub3licud4retuf4tanu3itetuks5koulds2mull3änuls5tiun4domung5itungs4pu4pernu3pletup3lik3uppfaup4pin1uppla5uppläup4p3rupp5spur5arvur4stäus5anlu3schaus4klaus3penus5tatus3tigu3stikus5tinust5ro3utjämut4rerut5rop2utsid3utslä3utvecva5droval4lival4st4vand_van4stvan5trva4resva4ri_vart5rvas5ti5vattnve2s5pvet5savett5svild3s3vind_3vinklvis5kovis3tavi4varvmörk43vrerav2skrivs5tråv5stycvångs3vägg5s3värdevä4ril3världxan5d4y4brisyk5lonym4fory5schoyst3razo4nalåg3s4k5åklag1ålderåll4spål2s5eåman4sård4ra5årsavås4skräl4papäl4segäl4sluäl2t3räl4vinänd1stänni3säns5teän2t3rär2breär4nisärn3stär4skoät4s3kät4topö4darvöde4s5ö4karmöns3keönst3rö4raskör3d4rör1eniö3ringör3intör4kalör1k2lör5kliör4nisör1s2kör4släöts5ko5övere", + 7 : "_a5g4ra_a2n5es_ang4er_a3sket_a5sten_bild3s_e2l5in_e5skad_es3kal_es5kap_fågel3_för1en_in4ger_kans4k_kort5s_kring3_lek5tr_mas2ke_minis4_mörk5r_o3stra_papp5s_pa3ste_pa5sti_pi5sti_pres2s_re2ste_slut3s_sten3s_tes3ta_topp5s_tred2s_u5trerack3u4pa5kvariandel2sansis3tans3par1ansvarapo3str1apparaa4rigenark3lanar5skalas2s5opa5stardast5raka5stralast3rolbors5tebort3sl2b5ratic4kordndels5tidenti5öder5stidin3g4odis3tradrotts3dub3bleechiff5e3glerae5gleriekord5sek4ret_enning5ens4vinerings3erk4liners4kene4s3kenes5ten_esti2gees5tor_est5rerfib5rigfi3skalfros5tafru5strfurs5te4gerarbg3starkgs3tillhands4lhan5g2ahop5plohy3sterhård5s4ic4kordik5skorilufts5ind5skäind5stiing4es_in5glasings5tein3skrä3instruis3kopais4s3tri1stansist5attis5ten_i1stentis5tingis5tor_is5toreit2t5opjor4dinjord3s4jut4stajäl4p5rjärn3sk5kaptenk5arbet3klang_k5lock_5klocka3korres5kra3gek4retenkrid5s2kropps5k5rädd_k5slag_kstavs32kvente5lakan_3laktis3lande_5laste_lat4tisler3ste2linga_lings5tli3strölläggs5lt5ratilus2s5plycks5tman5g4omask3romer2skome5trinm5planemst3rin4mun3g45målet_mö4gen_nd5skalne5gresne5s4tinfalls5n4gentings5timngs3valnings3knings5vnist3ranslags5n3stansn2striknst5vilnter5s4n2t5ombn5tralant3ralints5koroförmå4ogno5stoll5släon5stelons4teron3traso5plineoran3g45organi3orientors5tigo5stillost5ronota2lanpek5tripekt3ropel3s4ipos4terpre3stapres5to3rande_3raste_rek5trirgs5toprhands5rs5kollrs5tendr5stenirs5tillr2taktirv2s5käsamman3san3slasilver33s2kada3skaffn5skapet4skogsgskor1sts5kran_3s2langslotts33smitta5spann_4spelsls3plats4s3prissse4linss2lag_3stalla2stalli5stark_5stenar3s4tene3stense5stensms4teriu3sterne5stetiss4tiken5storis3straff3strato5stride2striel1striktst5risk2strumm3strängs1under5svärm_sys5ter2taktig3tande_2t3anfa2tappar5tavla_3tavlan5teknik5tekniste5stik3tillst5tivite3t4ral_3t4ralet3rets_t3ring_t5ronik4tropi_trus5ta5tryck_5trygght5s4andt5skallt3skatttt3randuk3trisull3ste5underl1undervun5g2efurs5tin2v1aktivensk3äving3s45vinst_5vinsteväll4s3xem3play5klistys4tik_åk4sträård4s3tår5s2liäls5kogär4tandö3randeö4reströr5evigör2p5la", + 8 : "_and4rar_cy5klop_e5strad_krings2_mjölk5s_män5sko_skott3s_string4_vatten3ali5stikas5tikerelekt3riennings2ent4rat_ent3ratieri5stikgi5stralhandels35inspeln3instink5klist3r5korterakrings2kkru5stad2lapparallust3ral4skensv5längderni5sterinkrafts5n4tropinos5tikerpul2l5ov4ran4d3r5ringen_rreligi5rskotts3rslags4v5rullerasinne2s35stalgis5startad1steringstori4eu4strativ5tallise5tartavl5torietttran2s5atskotts5ts5tillf1undersöun3gerskun5tratiutlands35ventera4ändligh", + 9 : "_ma5skeri_pub3likad5rasseragi5st4rat" } }; \ No newline at end of file diff --git a/resources/viewer/hyphenate/patterns/ta.js b/resources/viewer/hyphenate/patterns/ta.js index a7919c2e58..96413cc0e0 100644 --- a/resources/viewer/hyphenate/patterns/ta.js +++ b/resources/viewer/hyphenate/patterns/ta.js @@ -1,12 +1,14 @@ -// For questions about the Tamil hyphenation patterns +// For questions about the Tamil hyphenation patterns // ask Santhosh Thottingal (santhosh dot thottingal at gmail dot com) -Hyphenator.languages.ta = { +Hyphenator.languages['ta'] = { leftmin : 2, rightmin : 2, shortestPattern : 1, - longestPattern : 1, - specialChars : 'ஆஅஇஈஉஊஎஏஐஒஔகஙசஜஞடணதநபமயரலவஶஷஸஹளழறிீாுூெேொாோைௌௗ்ஃஂ', + longestPattern : 2, + specialChars : "அஆஇஈஉஊஎஏஐஒஓஔாிீுூெேைொோௌகஙசஜஞடணதநபமயரறலளழவஷஸஹ்னஂஃௗ", patterns : { - 2 : 'அ1ஆ1இ1ஈ1உ1ஊ1எ1ஏ1ஐ1ஒ1ஔ1ி1ா1ீ1ு1ூ1ெ1ே1ொ1ோ1ௌ1ௗ1்2ஃ1ஂ11க1ங1ச1ஜ1ஞ1ட1ண1த1ந1ப1ம1ய1ர1ல1வ1ஶ1ஷ1ஸ1ஹ1ள1ழ1ற' + 2 : "ா1ி1ீ1ு1ூ1ெ1ே1ை1ொ1ோ1ௌ11க1ங1ச1ஜ1ஞ1ட1ண1த1ந1ப1ம1ய1ர1ற1ல1ள1ழ1வ1ஷ1ஸ1ஹ", + 3 : "1அ11ஆ11இ11ஈ11உ11ஊ11எ11ஏ11ஐ11ஒ11ஓ11ஔ12ஂ12ஃ12ௗ12்1", + 4 : "2க்12ங்12ச்12ஞ்12ட்12ண்12த்12ன்12ந்12ப்12ம்12ய்12ர்12ற்12ல்12ள்12ழ்12வ்12ஷ்12ஸ்12ஹ்1" } -}; \ No newline at end of file +}; diff --git a/resources/viewer/hyphenate/patterns/te.js b/resources/viewer/hyphenate/patterns/te.js index 1aa47a074f..94d062deb0 100644 --- a/resources/viewer/hyphenate/patterns/te.js +++ b/resources/viewer/hyphenate/patterns/te.js @@ -1,12 +1,12 @@ -// For questions about the Telugu hyphenation patterns +// For questions about the Telugu hyphenation patterns // ask Santhosh Thottingal (santhosh dot thottingal at gmail dot com) -Hyphenator.languages.te = { +Hyphenator.languages['te'] = { leftmin : 2, rightmin : 2, shortestPattern : 1, longestPattern : 1, - specialChars : 'ఆఅఇఈఉఊఋఎఏఐఒఔకగఖఘఙచఛజఝఞటఠడఢణతథదధనపఫబభమయరలవశషసహళఱిీాుూృెేొాోైౌ్ఃం', + specialChars : "ఆఅఇఈఉఊఋఎఏఐఒఔకగఖఘఙచఛజఝఞటఠడఢణతథదధనపఫబభమయరలవశషసహళఱిీాుూృెేొాోైౌ్ఃం", patterns : { - 2 : 'అ1ఆ1ఇ1ఈ1ఉ1ఊ1ఋ1ఎ1ఏ1ఐ1ఒ1ఔ1ి1ా1ీ1ు1ూ1ృ1ె1ే1ొ1ో1ౌ1్2ః1ం11క1గ1ఖ1ఘ1ఙ1చ1ఛ1జ1ఝ1ఞ1ట1ఠ1డ1ఢ1ణ1త1థ1ద1ధ1న1ప1ఫ1బ1భ1మ1య1ర1ల1వ1శ1ష1స1హ1ళ1ఱ' + 2 : "అ1ఆ1ఇ1ఈ1ఉ1ఊ1ఋ1ఎ1ఏ1ఐ1ఒ1ఔ1ి1ా1ీ1ు1ూ1ృ1ె1ే1ొ1ో1ౌ1్2ః1ం11క1గ1ఖ1ఘ1ఙ1చ1ఛ1జ1ఝ1ఞ1ట1ఠ1డ1ఢ1ణ1త1థ1ద1ధ1న1ప1ఫ1బ1భ1మ1య1ర1ల1వ1శ1ష1స1హ1ళ1ఱ" } }; diff --git a/resources/viewer/hyphenate/patterns/tr.js b/resources/viewer/hyphenate/patterns/tr.js new file mode 100644 index 0000000000..88c938a25c --- /dev/null +++ b/resources/viewer/hyphenate/patterns/tr.js @@ -0,0 +1,15 @@ +// For questions about the turkish hyphenation patterns ask +// Andreas Lappe nd at off-pist dot de +Hyphenator.languages['tr'] = { + leftmin : 2, + rightmin : 2, + shortestPattern : 1, + longestPattern : 5, + specialChars : "âıîöüûçğş", + patterns : { + 3 : "2a12â12e12ı12i12î12o12ö12u12ü12û11b11c11ç11d11f11g11ğ11h11j11k11l11m11n11p11r11s11ş11t11v11y11z12bb2bc2bç2bd2bf2bg2bğ2bh2bj2bk2bl2bm2bn2bp2br2bs2bş2bt2bv2by2bz2cb2cc2cç2cd2cf2cg2cğ2ch2cj2ck2cl2cm2cn2cp2cr2cs2cş2ct2cv2cy2cz2çb2çc2çç2çd2çf2çg2çğ2çh2çj2çk2çl2çm2çn2çp2çr2çs2çş2çt2çv2çy2çz2db2dc2dç2dd2df2dg2dğ2dh2dj2dk2dl2dm2dn2dp2dr2ds2dş2dt2dv2dy2dz2fb2fc2fç2fd2ff2fg2fğ2fh2fj2fk2fl2fm2fn2fp2fr2fs2fş2ft2fv2fy2fz2gb2gc2gç2gd2gf2gg2gğ2gh2gj2gk2gl2gm2gn2gp2gr2gs2gş2gt2gv2gy2gz2ğb2ğc2ğç2ğd2ğf2ğg2ğğ2ğh2ğj2ğk2ğl2ğm2ğn2ğp2ğr2ğs2ğş2ğt2ğv2ğy2ğz2hb2hc2hç2hd2hf2hg2hğ2hh2hj2hk2hl2hm2hn2hp2hr2hs2hş2ht2hv2hy2hz2jb2jc2jç2jd2jf2jg2jğ2jh2jj2jk2jl2jm2jn2jp2jr2js2jş2jt2jv2jy2jz2kb2kc2kç2kd2kf2kg2kğ2kh2kj2kk2kl2km2kn2kp2kr2ks2kş2kt2kv2ky2kz2lb2lc2lç2ld2lf2lg2lğ2lh2lj2lk2ll2lm2ln2lp2lr2ls2lş2lt2lv2ly2lz2mb2mc2mç2md2mf2mg2mğ2mh2mj2mk2ml2mm2mn2mp2mr2ms2mş2mt2mv2my2mz2nb2nc2nç2nd2nf2ng2nğ2nh2nj2nk2nl2nm2nn2np2nr2ns2nş2nt2nv2ny2nz2pb2pc2pç2pd2pf2pg2pğ2ph2pj2pk2pl2pm2pn2pp2pr2ps2pş2pt2pv2py2pz2rb2rc2rç2rd2rf2rg2rğ2rh2rj2rk2rl2rm2rn2rp2rr2rs2rş2rt2rv2ry2rz2sb2sc2sç2sd2sf2sg2sğ2sh2sj2sk2sl2sm2sn2sp2sr2ss2sş2st2sv2sy2sz2şb2şc2şç2şd2şf2şg2şğ2şh2şj2şk2şl2şm2şn2şp2şr2şs2şş2şt2şv2şy2şz2tb2tc2tç2td2tf2tg2tğ2th2tj2tk2tl2tm2tn2tp2tr2ts2tş2tt2tv2ty2tz2vb2vc2vç2vd2vf2vg2vğ2vh2vj2vk2vl2vm2vn2vp2vr2vs2vş2vt2vv2vy2vz2yb2yc2yç2yd2yf2yg2yğ2yh2yj2yk2yl2ym2yn2yp2yr2ys2yş2yt2yv2yy2yz2zb2zc2zç2zd2zf2zg2zğ2zh2zj2zk2zl2zm2zn2zp2zr2zs2zş2zt2zv2zy2zz", + 4 : "a3a2a3â2a3e2a3ı2a3i2a3î2a3o2a3ö2a3u2a3ü2a3û2â3a2â3â2â3e2â3ı2â3i2â3î2â3o2â3ö2â3u2â3ü2â3û2e3a2e3â2e3e2e3ı2e3i2e3î2e3o2e3ö2e3u2e3ü2e3û2ı3a2ı3â2ı3e2ı3ı2ı3i2ı3î2ı3o2ı3ö2ı3u2ı3ü2ı3û2i3a2i3â2i3e2i3ı2i3i2i3î2i3o2i3ö2i3u2i3ü2i3û2î3a2î3â2î3e2î3ı2î3i2î3î2î3o2î3ö2î3u2î3ü2î3û2o3a2o3â2o3e2o3ı2o3i2o3î2o3o2o3ö2o3u2o3ü2o3û2ö3a2ö3â2ö3e2ö3ı2ö3i2ö3î2ö3o2ö3ö2ö3u2ö3ü2ö3û2u3a2u3â2u3e2u3ı2u3i2u3î2u3o2u3ö2u3u2u3ü2u3û2ü3a2ü3â2ü3e2ü3ı2ü3i2ü3î2ü3o2ü3ö2ü3u2ü3ü2ü3û2û3a2û3â2û3e2û3ı2û3i2û3î2û3o2û3ö2û3u2û3ü2û3û2", + 6 : "tu4r4k", + 7 : "2e2cek_m1t4rak" + } +}; diff --git a/resources/viewer/hyphenate/patterns/uk.js b/resources/viewer/hyphenate/patterns/uk.js index 7a10ee5ec3..095f94dbe0 100644 --- a/resources/viewer/hyphenate/patterns/uk.js +++ b/resources/viewer/hyphenate/patterns/uk.js @@ -1,21 +1,21 @@ -// For questions about the Ukrainian hyphenation patterns +// For questions about the Ukrainian hyphenation patterns // ask Alexey Grekov (athens at ukr dot net) -Hyphenator.languages.uk = { +Hyphenator.languages['uk'] = { leftmin : 2, rightmin : 2, shortestPattern : 1, longestPattern : 12, - specialChars : "аеіоуюяєїибкпстфхцчшщвгджзлмнрй'ґь", + specialChars : "аеіоуюяєїибкпстфхцчшщвгджзлмнрй’'ґь", patterns : { - 2 : "6'6ь", + 2 : "6’6ь", 3 : "2а1а3аа3еа3іа3оа3уа3юа3яа3єа3ї2е1е3ае3ее3іе3ое3уе3юе3яе3єе3ї2и1и3аи3еи3іи3ои3уи3юи3яи3єи3ї2і1і3аі3еі3иі3оі3уі3юі3яі3єі3ї2о1о3ао3ео3іо3оо3уо3юо3яо3єо3ї2у1у3ау3еу3іу3оу3уу3юу3яу3єу3ї2ю1ю3аю3ею3ію3ою3ую3юю3яю3єю3ї2я1я3ая3ея3оя3уя3юя3яя3єя3ї2є1є3ує3ює3єє3ї2ї1ї3еї3ої3юд4жд4за2йе2йи2йі2йо2йу2йю2йя2йє2йї2йь6о", - 4 : "2б1к2б1п2б1с2б1т2б1ф2б1х2б1ц2б1ч2б1ш2б1щ2в1б2в1г2в1д2в1ж2в1з2в1к2в1л2в1м2в1н2в1п2в1р2в1с2в1т2в1ф2в1х2в1ц2в1ч2в1ш2в1щ2в1й2в'32г1к2г1п2г1с2г1т2г1ф2г1ц2г1ч2г1ш2д1к2д1п2д1с2д1т2д1ф2д1х2д1ц2д1ч2д1ш2д1щ2ж1к2ж1п2ж1с2ж1т2ж1ф2ж1х2ж1ц2ж1ч2ж1ш2з1к2з1п2з1с2з1т2з1ф2з1х2з1ц2з1ч2з1ш2з1щ2к1б2к1г2к1д2к1з2л1б2л1в2л1г2л1ґ2л1д2л1ж2л1з2л1к2л1м2л1н2л1п2л1р2л1с2л1т2л1ф2л1х2л1ц2л1ч2м1б2м1в2м1г2м1д2м1ж2м1з2м1к2м1л2м1н2м1п2м1р2м1с2м1т2м1ф2м1х2м1ц2м1ч2м1ш2м1щ2м'32н1б2н1в2н1г2н1д2н1ж2н1з2н1к2н1л2н1м2н1п2н1р2н1с2н1т2н1ф2н1х2н1ц2н1ч2н1ш2н1щ2н'32п1б2п1д2п1з2р1б2р1в2р1г2р1ґ2р1д2р1ж2р1з2р1к2р1л2р1м2р1н2р1п2р1с2р1т2р1ф2р1х2р1ц2р1ч2р1ш2р1щ2р1й2р'32с1б2с1г2с1д2т1б2т1г2т1д2т1ж2т1з2ф1б2ф1г2ф1з2х1г2х1д2ц1б2ц1г2ц1д2ц1з2ч1б2ч1д2ч1ж2ш1б2ш1г2й1б2й1в2й1г2й1д2й1ж2й1з2й1к2й1л2й1м2й1н2й1п2й1р2й1с2й1т2й1ф2й1х2й1ц2й1ч2й1ш2й1щ2б1б2в1в2г1г2ґ1ґ2д1д2ж1ж2з1з2к1к2л1л2м1м2н1н2п1п2р1р2с1с2т1т2ф1ф2х1х2ц1ц2ч1ч2ш1ш2щ1щ2й1й3ння3ття3ттю3лля3ллє3ллю3ддя3й6о_б'8_в'8_д'8_з'8_м'8_н'8_п'8_р'8_т'8_ф'8_ш'8_бд6_бр6_вб6_вг6_вд6_вж6_вз6_вк6_вл6_вм6_вп6_вс6_вт6_дж6_дз6_дл6_дс6_зб6_зг6_зд6_зл6_зс6_зч6_зш6_зґ6_йш6_кл6_кп6_кс6_кх6_кш6_лс6_ль6_мс6_мф6_нб6_пр6_пс6_пх6_рт6_ск6_сл6_сп6_ст6_сх6_тк6_тр6_тх6_ть6_фл6_хл6_ць6_чх6_шк6_шл6_шп6_шт66бв_6бз_6бй_6бл_6бн_6бр_6бс_6вб_6вв_6вд_6вж_6вз_6вй_6вк_6вл_6вм_6вн_6вп_6вр_6вс_6вт_6вх_6вч_6вш_6вщ_6гв_6гг_6гд_6гл_6гм_6гн_6гр_6гс_6гт_6дж_6дз_6дл_6дм_6дн_6др_6дт_6дь_6жб_6жв_6зв_6зг_6зд_6зк_6зл_6зм_6зн_6зр_6зь_6йб_6йв_6йг_6йд_6йз_6йк_6йл_6йм_6йн_6йп_6йр_6йс_6йт_6йф_6йх_6йц_6йч_6йш_6кв_6кк_6кл_6кр_6кс_6кт_6кх_6кш_6лб_6лг_6лд_6лк_6лл_6лм_6лн_6лп_6лс_6лт_6ль_6мб_6мг_6мж_6мк_6мл_6мм_6мн_6мп_6мр_6мс_6мт_6мф_6мх_6мш_6нв_6нг_6нд_6нж_6нз_6нк_6нм_6нн_6нр_6нс_6нт_6нф_6нх_6нц_6нч_6нш_6нь_6пд_6пл_6пр_6пс_6пт_6пф_6пц_6рб_6рв_6рг_6рд_6рж_6рз_6рк_6рл_6рм_6рн_6рп_6рр_6рс_6рт_6рф_6рх_6рц_6рч_6рш_6рщ_6рь_6ск_6сл_6см_6сн_6сп_6сс_6ст_6сь_6тв_6тл_6тм_6тр_6тс_6тт_6тц_6тч_6ть_6фм_6фр_6фт_6фф_6фь_6хв_6хм_6хн_6хр_6хт_6хш_6ць_6чб_6чм_6чн_6чт_6шв_6шм_6шн_6шт_виї4оо4боб'3од'3'ї4в'ї4з'ї4д'ї4ж'ї4л'ї4м'ї4с'ї4хге4ооо4куя4вді4омі4оі4онзо6ооу4с", - 5 : "2дь1к2дь1с2дь1т2дь1ц2зь1к2зь1с2зь1т2ль1б2ль1в2ль1г2ль1д2ль1ж2ль1з2ль1к2ль1м2ль1н2ль1п2ль1р2ль1с2ль1т2ль1ф2ль1х2ль1ц2ль1ч2ль1ш2ль1щ2ль1й2нь1б2нь1г2нь1з2нь1к2нь1л2нь1м2нь1с2нь1т2нь1х2нь1ц2нь1ч2нь1ш2нь1й2рь1к2рь1ц2сь1б2сь1д2ть1б2к1сп2к1ст2п1сп2п1ст2с1пк2с1пп2с1пс2с1пт2с1пх2с1пч2с1тк2с1тп2с1тс2с1тт2с1тф2с1тц2с1шт2т1ск2т1сп2т1ст2т1шк2ф1сп2ф1ст2ф1шт2х1ст2ц1ст2ц1шк2ш1тк3п4ре3п4риприї43п4ро3п4ріооб'3ооб3мнао4рнеу4к3блаж3ближ3близ3блок3бран3бруд3глад3глиб3глин3глоб3глуз3глуш3гляд3глян3гнан3гнил3гноз3грав3град3грай3грам3гран3граф3граш3граю3грає3грес3гроб3грож3гроз3груп3грів3гріт3гріш3д4ан3двиг3двою3двоє3двій3двір3драж3дром3друж3друк3дряп3дріб3жвав3зваж3зван3звед3звел3звич3звищ3звук3звуч3звіт3змін3зйом3зміш3знав3знай3знак3знал3знан3знат3знач3знаю3знає3зниж3знім3зрюв3зрів3зріл3зрін3й4ма3с4пі3х4то3ї4зд3ї4ставі4абі4о3дої4ддої4мдої4хдої4жзаї4дзаї4жзаї4ззаї4лзаї4мзаї4хзо4казо4кезо4кизо4кузо4кіий4тиій4тинаї4жнаї4знаї4лнаї4мнаї4снаї4хпоя4в_пої4пої4дпрої4сеї4ду4к4рвия4вз'я4взая4вная4веті4одея4као4хаео4ханія4кдоу4кдоу4мнею4ннея4кое4копоя4соа4ктеа4ктий4няпій4мвий4мзай4моа4на", - 6 : "2к1ськ2п1ськ2с1ськ2с1тсь2сь1кк2сь1кс2сь1кт2т1ськ2ф1ськ2х1ськ2ш1тсь_вб6'6_вв6'6_вз6д6_вм6'6_вп6'6_вп6х6_вс6т6_вш6к6_зв6'6_зд6з6_зм6'6_зс6к6_зс6т6_зш6к6_лк6с6_ск6л6_сп6'6_сп6л6_сп6х6_сх6л66б6ль_6б6ст_6б6ць_6в6др_6в6дь_6в6зь_6в6ль_6в6сь_6в6ць_6г6ль_6г6сь_6д6зь_6ж6дь_6ж6сь_6з6дв_6з6дн_6з6дь_6з6нь_6з6сь_6з6ьб_6з6ьк_6й6кл_6й6ль_6й6мс_6й6нс_6й6ст_6й6сь_6й6тс_6к6ль_6к6ст_6к6сь_6к6тр_6л6ль_6л6мс_6л6хв_6л6ьб_6л6ьв_6л6ьг_6л6ьд_6л6ьз_6л6ьк_6л6ьм_6л6ьн_6л6ьп_6л6ьс_6л6ьт_6л6ьф_6л6ьх_6л6ьц_6л6ьч_6л6ьш_6л6ьщ_6м6бр_6м6ль_6м6сь_6н6гл_6н6гр_6н6гс_6н6дж_6н6дз_6н6дп_6н6др_6н6кс_6н6кт_6н6ск_6н6ст_6н6тк_6н6тр_6н6ть_6н6ць_6н6ьб_6н6ьг_6н6ьк_6п6сь_6п6тр_6р6дв_6р6дж_6р6дь_6р6зн_6р6зь_6р6кс_6р6кт_6р6ль_6р6нс_6р6нь_6р6ср_6р6ст_6р6сь_6р6тв_6р6тр_6р6ть_6р6ць_6с6дп_6с6ль_6с6тв_6с6тй_6с6тм_6с6тр_6с6ть_6с6ць_6с6ьб_6с6ьк_6с6ьм_6т6вт_6т6зт_6т6ль_6т6мр_6ф6ть_6ц6тв_6ц6ьк_6ш6ль_6ш6нл_6ш6сь_6ш6тв_6щ6сь__бе4з3_безу4віду4ч_ві4д3_від'3_мі4ж3ові4д3_пере3_під'3_пі4д3_пі4в3_ро4з3ооб3рона4д'3за5о4рдо5о4рпо5о4рз3в'4яза3ю4шу3в'4яз3м'4яу3м'4яв3м'4язу4рочприо4р3й4ш4л3блиск3блоці3брати3брест3бризк3в4бив3в4дал3в4лад3в4лов3в4сюд3в4тіл3гнучк3грати3грець3грунт3д4бав3д4бал3д4бан3д4бат3д4бає3двічі3дріма3жміть3жріть3з4був3з4бут3звест3звись3з4год3з4дат3з4чеп3й4мищ3й4му_3й4шов3м4нож3м4щен3п4сов3п4сон3п4сув3р4вав3с4кид3с4кок3с4коп3с4кор3с4коч3с4пад3с4пин3с4піш3с4тав3с4тад3с4таз3с4тал3с4тан3с4тар3с4тат3с4тач3с4тає3с4теп3с4тиг3с4тиж3с4той3с4тою3с4туп3с4тяг3с4тіб3с4тій3с4тір3с4фер3с4хил3с4хов3с4хід3т4кан3ш4код3ш4кол3ш4кіл3ш4кір3ш4таб3ш4туч3ґрунт3е4тап3о4бід3о4біц3о4дяг3о4соб3о4хоч3о4чищ3у4ваг3у4важ3у4гав3у4мит3у4міл3у4ряд3я4зик3я4кіс3я4рус3є4д3н3є4дин3є4рей3ї4ждж3ї4хав3ї4хат_заї4к_заї4ц_заї4ч_наї4давої4дае4тилахої4дауді4обе5конб'4єтьбран4дви3й4дви3й4т3в'4яз4д7земді3й4тді3й4д_дої4в_дої4лдої4стеу4стрео4свіек2с1кек2с1пек2с1тек2с1цигої4діе4тилйо4свіквої4д3м'4ятна3з4внаї4вснаї4вшна4й3ана4й3енедої4неї4стоної4доо4палео4палонаї4доо4свіоу4строа4томпоч4непоч4нипоч4нупої4здраді4оз'4єднрмої4дсор4тнцук3роубої4дясої4дви3у4чза3у4чна3у4чне3у4чгелі4ополі4осоці4офізі4охімі4огоме4оао4пікка5налоі4золмете4оабия4квия4сннея4снпоя4сннеа4биео4ціноо4цінео4бурео4зорпіво4спале4оао4хотео4хотео4щадао4щадоо4чищоо4бігоу4суноу4комз3а4ктеу4богзай4нянай4няприй4мдій4манай4маобой4мпрой4мобій4моу4годау4годеу4годео4писоо4писао4пис_ом4рі_ум4ри_ум4рі_ум4ру_ум4ревиу4ди", - 7 : "_бе4з'3_ві5д4а_ві5д4іневі4д3_пі5д4о_пі5д4і_пі5д4е_пі5д4и_пі5д4у_спі4в3_ро5з4і_ро5з4е_ро5з4а_ро4з'3до3в'4єза3в'4єзі3в'4єпо3в'4єуі3в'4єпо3в'4яза3в'4язі3в'4яна3в'4яоб3в'4язі3м'4яно3м'4яза3м'4яна3м'4яоб3м'4япо3м'4ясу3м'4ядо3в'4юза3в'4юзі3в'4юна3в'4юпо3в'4юуі3в'4юза3я4локоу4рочпоу4роч3м4к4не3м4к4ну3м4к4ні3с4к4ле3с4к4ло3британ3в4довз3в4ласн3в4лашт3в4певн3громад3груван3г4ідро3з4бага3зворуш3з4довж3знаход3зрозум3й4менн3й4муть3й4міть3м4ріть3р4вати3р4віть3с4кіль3с4кіпл3с4пект3с4перм3с4піть3с4тайн3с4тара3с4тисл3с4титу3с4товб3с4тосо3с4тосу3с4тоян3с4тіль3ш4кідл3а4гент3а4грес3а4зарт3а4ктив3а4куст3а4кциз3а4птеч3а4соці3а4тлет3а4халі3е4моці3е4мігр3е4нерг3е4стет3о4бира3о4даль3о4збро3о4крем3о4плат3о4птим3о4пуст3о4пуше3о4пуще3о4ренд3о4сяжн3о4холо3о4чисн3у4згод3у4клад3у4рбан3у4спіш3у4твор3я4дерн3є4писк3і4снув_бе5зе_бйор4нсвер4х3нвід7знаві5д4енві5д4омво4с5ко_дої5ль3з'4ясозна3й4дзна3й4ткорої4д3м'4якшна3в4чанео4палобі3й4добі3й4тпереї4дпереї4жпереї4зпереї4лпереї4спереї4хпре4й4спо3д4вопри3й4тпро4ф3спор4т3нпри3й4дроз5винроз5витро5з4умспе4цпрспе4ц3ссь4квугтран4с3під3у4чво4єводво4єначді4алогді4огенпроя4снрозо4рарозо4рерозо4рннапоу4мне4олітне4ологне4онацне4офітнея4рок_пе4ом_д3у4сімроз'я4рте4ологте4ософа3у4даро3у4дарз3у4дарв3у4дареі4стотоі4стотоо4чистнайа4ктпіва4ктао4бразео4бразоо4бразиа4варіяа4варіоа4варіеа4варіаа4дресеа4дресоа4дресіа4дресае4фектее4фектое4фектое4місіие4місіяе4місіее4місій3у4богздій4няобій4няд4о3й4мперей4мбезу4глоа4каціоо4держбіблі4о_на3в4ч_ви3в4ч_до3в4ч_за3в4ч_по3в4чана3в4чена3в4чови3в4чеви3в4чедо3в4чоза3в4чпо3в4чае3м4рій_ви3м4р_за3м4р_зі3м4р_на3м4р_по3м4рие4стетое4стетее4стетоо4ктаніо4ктано3в4казе3в4каз", - 8 : "6б6с6тв_6б6с6тр_6б6с6ьк_6в6с6тв_6в6с6ть_6в6с6ьк_6г6с6тв_6д6с6тв_6д6с6ьк_6д6ь6сь_6й6с6тв_6й6с6тр_6й6с6ьк_6л6ь6дс_6л6ь6сь_6л6ь6тр_6м6б6ль_6м6с6тв_6м6с6ьк_6н6г6ль_6н6с6тв_6н6с6тр_6н6с6ьк_6н6ь6сь_6п6с6тв_6р6л6ьз_6р6н6ст_6р6с6тв_6р6с6ть_6р6с6ьк_6р6щ6сь_6с6д6рп_6с6т6рь_6т6с6тв_6т6с6ьк_6т6ь6сь_6ф6с6тв__ві5д4ом_ві5д4ун_ві5д4ербезві4д3неві4д'3_пона4д3_напі4в3ро5з4йом_чере4з3пере5о4рпі6д5о4робі3в'4євід3в'4япри3в'4япід3в'4япри3м'4янаду4рочприу4роч3в4б4лаг3в4к4лад3в4п4лив3в4т4рут3в4т4руч3з4б4рой3з4б4рою3з4б4роє3з4в4'яз3п4с4ков3с4к4лад3с4к4лит3с4п4лав3с4п4лат3с4п4лач3с4п4рав3с4т4вор3с4т4рах3с4т4риб3с4т4риж3с4т4рой3с4т4рок3с4т4ром3с4т4роф3с4т4роч3с4т4рою3с4т4роя3с4т4роє3с4т4рої3с4т4рій3с4т4ріл3с4т4річ3т4к4нен3т4ь4мар3у4п4рав3в4веден3в4довол3в4живан3в4поряд3в4рожай3з4доров3з4дійсн3с4короч3с4повід3с4пожив3с4табіл3с4тереж3с4теріг3с4торон3с4торін3а4дитив3а4ктуал3а4курат3а4кцепт3а4лергі3а4матор3а4наліз3а4натом3а4парат3а4пеляц3а4ромат3а4спект3е4колог3е4коном3е4лектр3о4б'єдн3о4б'єкт3о4береж3о4борон3о4перат3о4хорон3у4компл3у4крупн3у4перед3у4рядов3у4стпіш3у4тробн3я4скрав3і4зотоп3і4люстр3і4мовір3і4нтенс3і4нформальбі5онбей4сболбо4г3данбо4є3голбо4є3готбо4є3запбори4с5пвина3й4двина3й4тві5д4е4оджен4тльди4с3локди4с3пледи4с3путди4с3тилд4ні3п4рдо3з4волдо3з4вілкон4трремо4к5рийна3б4лизна3в4рядна4д7з4вна3в4ченне3в4томне3д4банна3д4банне3з4вичне3з4важна5п4ливні4т5ратоб5у4мовпере3й4дпере3й4тпі5в4еньпо3в4торпо3в4ченпо3д4робпо3д4разпо5з4бавпри4нципрай3в4нороз5вантро4з5ділро4з5горро4з5верро4з5чепро4з3ливсан4к4т3серцеї4дстат5упрукр3а4втукр3а4грукр3е4кснедо3у4чпед3у4чипере3у4чсамо3у4чсво4єчассво4єрідоо4динокміжу4собнай3я4снроз'я4снро5з4ориро5з4ороро5з4оруро5з4оряро5з4орюро5з4орірозо4решео4голошбальне4оне4окласпі5в4оніп4о5берео3о4кисли3о4кисле3о4кислх3о4кисли3і4сторо3і4сторі3і4стора3і4сторя3і4сторе3і4сторар4т3мінар4т3підар4т3ринар4т3хімперей4няпідій4нябезу4пин_при3в4чмона3в4чжона3в4чіона3в4ч_зав3м4р_при3м4р_роз3м4рй3е4стет", - 9 : "6л6ь6ств_6л6ь6ськ_6н6с6ькй_6н6т6ств__бе5з4о3д_безві4д3_ві5д4озвді4єві4д3за4вві4д3співві4д3_пере4д3г_пере4д3д_пере4д3м_пере4д3р_пере4д3ч_пере4д'3_пона5д4і_пона5д4и_пона5д4я_чере4з'3непо3в'4япере3м'4япіді3м'4япозау4роч3в4п4равн3с4к4рипт3с4п4ритн3с4п4рият3с4п4ромо3с4т4ражд3с4т4рукт3с4т4рукц3т4ь4мяні3в4разлив3з4баланс3й4мовірн3с4постер3а4вторит3а4декват3а4постол3а4ргумен3е4легант3е4лемент3е4стакад3о4рдинац3у4люблен3у4разлив3у4рочист3у4станов3у4сувати3і4ніціатай4с3бергбактері4оба4с3енербез5і4менбо4є3здатбо4є3компбо4є3постбо4є3прип4в3антрацге2ть3мандер4ж5виддер4ж5думдер4ж5комдер4ж3бездер4ж5стрдисбалансди4с3гармди4с3квалди4с3комфди4с3контди4с3кредди4с3кретди4с3крецди4с3кримди4с3кусіди4с3кутуди4с3персди4с3петчди4с3плейди4с3позиди4с3пропди4с3трибди4с3трофєв4р3атомєпі4с5копєпи4с5копза4п3часті4л3е4тилкиї4венермі4н5е4кона4й3маслна4й3сприна4й3якісна3в4чітьобі3д4раноб4лдер4жперег4нійпере4д5смпід5о4динпо3б4лизупо3в4чітьпо5ж4нітьпос4т3каппос4т3компос4т3натпос4т3соцпор4т3ретпор4т3фелпро4ект3нпро3б4лемпро4м3майпр4о5платро4з5д4вороз5у4ченроз5і4менро4з'5єднро4з3громспе4ц3курспе4ц3мон3с4проможтур4к3менро5з4ора_ро5з4орахне4омальтне4окомунне4оландшне4оліберно4к3а4утте4одолітпів3о4валнаді4сторар4т3афішар4т3кафеар4т3майсар4т3мейсар4т3фактнаді4стотнайі4стотау4т3еколбеза4варібезе4місіо3а4налізц3а4налізз3а4налізм3а4налізпів3у4годроз3у4год_віді3м4р_пере3м4рво4станнєоо4плачувео4плачув", - 10 : "_без5о4соб_без3ро4з3те4х3ві4д3_пере4д3св_пере4д3фрбе4з5і4дейінтер3в'4юна4й3у4бог3в4р4одливба4с3антравід5о4бражвід5о4бразводо5с4токводо5з4бірго4с4п5роздер4ж5а4дмдер4ж5бюдждер4ж5нафтдер4ж5реєсдер4ж5служдвох4а5томди4с3паритди4с3функцкон4тр3аргмі4н5е4нерна4й7о4берна4й7о4гидна4й7о4голна4й7о4пукна4й7о4хайпере5п4ливпере3в4томпів5о4с4трпос4т3процпос4т3фіксспор4т3вирспор4т3залспор4т3комспор4т3майтор4г3предсво4єкорисро5з4о5рамро6з5о4ри_ень7о4кислнай3і4сторпів3і4сторар4т3взводар4т3медіаар4т3о4динар4т3о4збрар4т3центргіпер3а4ктнай3о4бразар4т3мейстго4ф3мейстдо4к3мейстхо4р3мейстміж3а4варінад3а4варібез3а4дреснай3е4фектбло4к3пост_блі4ц3ана_блі4ц3турнт3а4налізре3а4налізбо4р4т3мехбо4р4т3пробо4р4т3радпан3е4стетпар3е4стет", + 4 : "2б1к2б1п2б1с2б1т2б1ф2б1х2б1ц2б1ч2б1ш2б1щ2в1б2в1г2в1д2в1ж2в1з2в1к2в1л2в1м2в1н2в1п2в1р2в1с2в1т2в1ф2в1х2в1ц2в1ч2в1ш2в1щ2в1й2в’32г1к2г1п2г1с2г1т2г1ф2г1ц2г1ч2г1ш2д1к2д1п2д1с2д1т2д1ф2д1х2д1ц2д1ч2д1ш2д1щ2ж1к2ж1п2ж1с2ж1т2ж1ф2ж1х2ж1ц2ж1ч2ж1ш2з1к2з1п2з1с2з1т2з1ф2з1х2з1ц2з1ч2з1ш2з1щ2к1б2к1г2к1д2к1з2л1б2л1в2л1г2л1ґ2л1д2л1ж2л1з2л1к2л1м2л1н2л1п2л1р2л1с2л1т2л1ф2л1х2л1ц2л1ч2м1б2м1в2м1г2м1д2м1ж2м1з2м1к2м1л2м1н2м1п2м1р2м1с2м1т2м1ф2м1х2м1ц2м1ч2м1ш2м1щ2м’32н1б2н1в2н1г2н1д2н1ж2н1з2н1к2н1л2н1м2н1п2н1р2н1с2н1т2н1ф2н1х2н1ц2н1ч2н1ш2н1щ2н’32п1б2п1д2п1з2р1б2р1в2р1г2р1ґ2р1д2р1ж2р1з2р1к2р1л2р1м2р1н2р1п2р1с2р1т2р1ф2р1х2р1ц2р1ч2р1ш2р1щ2р1й2р’32с1б2с1г2с1д2т1б2т1г2т1д2т1ж2т1з2ф1б2ф1г2ф1з2х1г2х1д2ц1б2ц1г2ц1д2ц1з2ч1б2ч1д2ч1ж2ш1б2ш1г2й1б2й1в2й1г2й1д2й1ж2й1з2й1к2й1л2й1м2й1н2й1п2й1р2й1с2й1т2й1ф2й1х2й1ц2й1ч2й1ш2й1щ2б1б2в1в2г1г2ґ1ґ2д1д2ж1ж2з1з2к1к2л1л2м1м2н1н2п1п2р1р2с1с2т1т2ф1ф2х1х2ц1ц2ч1ч2ш1ш2щ1щ2й1й3ння3ття3ттю3лля3ллє3ллю3ддя3й6о_б’8_в’8_д’8_з’8_м’8_н’8_п’8_р’8_т’8_ф’8_ш’8_бд6_бр6_вб6_вг6_вд6_вж6_вз6_вк6_вл6_вм6_вп6_вс6_вт6_дж6_дз6_дл6_дс6_зб6_зг6_зд6_зл6_зс6_зч6_зш6_зґ6_йш6_кл6_кп6_кс6_кх6_кш6_лс6_ль6_мс6_мф6_нб6_пр6_пс6_пх6_рт6_ск6_сл6_сп6_ст6_сх6_тк6_тр6_тх6_ть6_фл6_хл6_ць6_чх6_шк6_шл6_шп6_шт66бв_6бз_6бй_6бл_6бн_6бр_6бс_6вб_6вв_6вд_6вж_6вз_6вй_6вк_6вл_6вм_6вн_6вп_6вр_6вс_6вт_6вх_6вч_6вш_6вщ_6гв_6гг_6гд_6гл_6гм_6гн_6гр_6гс_6гт_6дж_6дз_6дл_6дм_6дн_6др_6дт_6дь_6жб_6жв_6зв_6зг_6зд_6зк_6зл_6зм_6зн_6зр_6зь_6йб_6йв_6йг_6йд_6йз_6йк_6йл_6йм_6йн_6йп_6йр_6йс_6йт_6йф_6йх_6йц_6йч_6йш_6кв_6кк_6кл_6кр_6кс_6кт_6кх_6кш_6лб_6лг_6лд_6лк_6лл_6лм_6лн_6лп_6лс_6лт_6ль_6мб_6мг_6мж_6мк_6мл_6мм_6мн_6мп_6мр_6мс_6мт_6мф_6мх_6мш_6нв_6нг_6нд_6нж_6нз_6нк_6нм_6нн_6нр_6нс_6нт_6нф_6нх_6нц_6нч_6нш_6нь_6пд_6пл_6пр_6пс_6пт_6пф_6пц_6рб_6рв_6рг_6рд_6рж_6рз_6рк_6рл_6рм_6рн_6рп_6рр_6рс_6рт_6рф_6рх_6рц_6рч_6рш_6рщ_6рь_6ск_6сл_6см_6сн_6сп_6сс_6ст_6сь_6тв_6тл_6тм_6тр_6тс_6тт_6тц_6тч_6ть_6фм_6фр_6фт_6фф_6фь_6хв_6хм_6хн_6хр_6хт_6хш_6ць_6чб_6чм_6чн_6чт_6шв_6шм_6шн_6шт_виї4оо4боб’3од’3’ї4в’ї4з’ї4д’ї4ж’ї4л’ї4м’ї4с’ї4хге4ооо4куя4вді4омі4оі4онзо6ооу4с", + 5 : "2дь1к2дь1с2дь1т2дь1ц2зь1к2зь1с2зь1т2ль1б2ль1в2ль1г2ль1д2ль1ж2ль1з2ль1к2ль1м2ль1н2ль1п2ль1р2ль1с2ль1т2ль1ф2ль1х2ль1ц2ль1ч2ль1ш2ль1щ2ль1й2нь1б2нь1г2нь1з2нь1к2нь1л2нь1м2нь1с2нь1т2нь1х2нь1ц2нь1ч2нь1ш2нь1й2рь1к2рь1ц2сь1б2сь1д2ть1б2к1сп2к1ст2п1сп2п1ст2с1пк2с1пп2с1пс2с1пт2с1пх2с1пч2с1тк2с1тп2с1тс2с1тт2с1тф2с1тц2с1шт2т1ск2т1сп2т1ст2т1шк2ф1сп2ф1ст2ф1шт2х1ст2ц1ст2ц1шк2ш1тк3п4ре3п4риприї43п4ро3п4ріооб’3ооб3мнао4рнеу4к3блаж3ближ3близ3блок3бран3бруд3глад3глиб3глин3глоб3глуз3глуш3гляд3глян3гнан3гнил3гноз3грав3град3грай3грам3гран3граф3граш3граю3грає3грес3гроб3грож3гроз3груп3грів3гріт3гріш3д4ан3двиг3двою3двоє3двій3двір3драж3дром3друж3друк3дряп3дріб3жвав3зваж3зван3звед3звел3звич3звищ3звук3звуч3звіт3змін3зйом3зміш3знав3знай3знак3знал3знан3знат3знач3знаю3знає3зниж3знім3зрюв3зрів3зріл3зрін3й4ма3с4пі3х4то3ї4зд3ї4ставі4абі4о3дої4ддої4мдої4хдої4жзаї4дзаї4жзаї4ззаї4лзаї4мзаї4хзо4казо4кезо4кизо4кузо4кіий4тиій4тинаї4жнаї4знаї4лнаї4мнаї4снаї4хпоя4в_пої4пої4дпрої4сеї4ду4к4рвия4вз’я4взая4вная4веті4одея4као4хаео4ханія4кдоу4кдоу4мнею4ннея4кое4копоя4соа4ктеа4ктий4няпій4мвий4мзай4моа4на", + 6 : "2к1ськ2п1ськ2с1ськ2с1тсь2сь1кк2сь1кс2сь1кт2т1ськ2ф1ськ2х1ськ2ш1тсь_вб6’6_вв6’6_вз6д6_вм6’6_вп6’6_вп6х6_вс6т6_вш6к6_зв6’6_зд6з6_зм6’6_зс6к6_зс6т6_зш6к6_лк6с6_ск6л6_сп6’6_сп6л6_сп6х6_сх6л66б6ль_6б6ст_6б6ць_6в6др_6в6дь_6в6зь_6в6ль_6в6сь_6в6ць_6г6ль_6г6сь_6д6зь_6ж6дь_6ж6сь_6з6дв_6з6дн_6з6дь_6з6нь_6з6сь_6з6ьб_6з6ьк_6й6кл_6й6ль_6й6мс_6й6нс_6й6ст_6й6сь_6й6тс_6к6ль_6к6ст_6к6сь_6к6тр_6л6ль_6л6мс_6л6хв_6л6ьб_6л6ьв_6л6ьг_6л6ьд_6л6ьз_6л6ьк_6л6ьм_6л6ьн_6л6ьп_6л6ьс_6л6ьт_6л6ьф_6л6ьх_6л6ьц_6л6ьч_6л6ьш_6л6ьщ_6м6бр_6м6ль_6м6сь_6н6гл_6н6гр_6н6гс_6н6дж_6н6дз_6н6дп_6н6др_6н6кс_6н6кт_6н6ск_6н6ст_6н6тк_6н6тр_6н6ть_6н6ць_6н6ьб_6н6ьг_6н6ьк_6п6сь_6п6тр_6р6дв_6р6дж_6р6дь_6р6зн_6р6зь_6р6кс_6р6кт_6р6ль_6р6нс_6р6нь_6р6ср_6р6ст_6р6сь_6р6тв_6р6тр_6р6ть_6р6ць_6с6дп_6с6ль_6с6тв_6с6тй_6с6тм_6с6тр_6с6ть_6с6ць_6с6ьб_6с6ьк_6с6ьм_6т6вт_6т6зт_6т6ль_6т6мр_6ф6ть_6ц6тв_6ц6ьк_6ш6ль_6ш6нл_6ш6сь_6ш6тв_6щ6сь__бе4з3_безу4віду4ч_ві4д3_від’3_мі4ж3ові4д3_пере3_під’3_пі4д3_пі4в3_ро4з3ооб3рона4д’3за5о4рдо5о4рпо5о4рз3в’4яза3ю4шу3в’4яз3м’4яу3м’4яв3м’4язу4рочприо4р3й4ш4л3блиск3блоці3брати3брест3бризк3в4бив3в4дал3в4лад3в4лов3в4сюд3в4тіл3гнучк3грати3грець3грунт3д4бав3д4бал3д4бан3д4бат3д4бає3двічі3дріма3жміть3жріть3з4був3з4бут3звест3звись3з4год3з4дат3з4чеп3й4мищ3й4му_3й4шов3м4нож3м4щен3п4сов3п4сон3п4сув3р4вав3с4кид3с4кок3с4коп3с4кор3с4коч3с4пад3с4пин3с4піш3с4тав3с4тад3с4таз3с4тал3с4тан3с4тар3с4тат3с4тач3с4тає3с4теп3с4тиг3с4тиж3с4той3с4тою3с4туп3с4тяг3с4тіб3с4тій3с4тір3с4фер3с4хил3с4хов3с4хід3т4кан3ш4код3ш4кол3ш4кіл3ш4кір3ш4таб3ш4туч3ґрунт3е4тап3о4бід3о4біц3о4дяг3о4соб3о4хоч3о4чищ3у4ваг3у4важ3у4гав3у4мит3у4міл3у4ряд3я4зик3я4кіс3я4рус3є4д3н3є4дин3є4рей3ї4ждж3ї4хав3ї4хат_заї4к_заї4ц_заї4ч_наї4давої4дае4тилахої4дауді4обе5конб’4єтьбран4дви3й4дви3й4т3в’4яз4д7земді3й4тді3й4д_дої4в_дої4лдої4стеу4стрео4свіек2с1кек2с1пек2с1тек2с1цигої4діе4тилйо4свіквої4д3м’4ятна3з4внаї4вснаї4вшна4й3ана4й3енедої4неї4стоної4доо4палео4палонаї4доо4свіоу4строа4томпоч4непоч4нипоч4нупої4здраді4оз’4єднрмої4дсор4тнцук3роубої4дясої4дви3у4чза3у4чна3у4чне3у4чгелі4ополі4осоці4офізі4охімі4огоме4оао4пікка5налоі4золмете4оабия4квия4сннея4снпоя4сннеа4биео4ціноо4цінео4бурео4зорпіво4спале4оао4хотео4хотео4щадао4щадоо4чищоо4бігоу4суноу4комз3а4ктеу4богзай4нянай4няприй4мдій4манай4маобой4мпрой4мобій4моу4годау4годеу4годео4писоо4писао4пис_ом4рі_ум4ри_ум4рі_ум4ру_ум4ревиу4ди", + 7 : "_бе4з’3_ві5д4а_ві5д4іневі4д3_пі5д4о_пі5д4і_пі5д4е_пі5д4и_пі5д4у_спі4в3_ро5з4і_ро5з4е_ро5з4а_ро4з’3до3в’4єза3в’4єзі3в’4єпо3в’4єуі3в’4єпо3в’4яза3в’4язі3в’4яна3в’4яоб3в’4язі3м’4яно3м’4яза3м’4яна3м’4яоб3м’4япо3м’4ясу3м’4ядо3в’4юза3в’4юзі3в’4юна3в’4юпо3в’4юуі3в’4юза3я4локоу4рочпоу4роч3м4к4не3м4к4ну3м4к4ні3с4к4ле3с4к4ло3британ3в4довз3в4ласн3в4лашт3в4певн3громад3груван3г4ідро3з4бага3зворуш3з4довж3знаход3зрозум3й4менн3й4муть3й4міть3м4ріть3р4вати3р4віть3с4кіль3с4кіпл3с4пект3с4перм3с4піть3с4тайн3с4тара3с4тисл3с4титу3с4товб3с4тосо3с4тосу3с4тоян3с4тіль3ш4кідл3а4гент3а4грес3а4зарт3а4ктив3а4куст3а4кциз3а4птеч3а4соці3а4тлет3а4халі3е4моці3е4мігр3е4нерг3е4стет3о4бира3о4даль3о4збро3о4крем3о4плат3о4птим3о4пуст3о4пуше3о4пуще3о4ренд3о4сяжн3о4холо3о4чисн3у4згод3у4клад3у4рбан3у4спіш3у4твор3я4дерн3є4писк3і4снув_бе5зе_бйор4нсвер4х3нвід7знаві5д4енві5д4омво4с5ко_дої5ль3з’4ясозна3й4дзна3й4ткорої4д3м’4якшна3в4чанео4палобі3й4добі3й4тпереї4дпереї4жпереї4зпереї4лпереї4спереї4хпре4й4спо3д4вопри3й4тпро4ф3спор4т3нпри3й4дроз5винроз5витро5з4умспе4цпрспе4ц3ссь4квугтран4с3під3у4чво4єводво4єначді4алогді4огенпроя4снрозо4рарозо4рерозо4рннапоу4мне4олітне4ологне4онацне4офітнея4рок_пе4ом_д3у4сімроз’я4рте4ологте4ософа3у4даро3у4дарз3у4дарв3у4дареі4стотоі4стотоо4чистнайа4ктпіва4ктао4бразео4бразоо4бразиа4варіяа4варіоа4варіеа4варіаа4дресеа4дресоа4дресіа4дресае4фектее4фектое4фектое4місіие4місіяе4місіее4місій3у4богздій4няобій4няд4о3й4мперей4мбезу4глоа4каціоо4держбіблі4о_на3в4ч_ви3в4ч_до3в4ч_за3в4ч_по3в4чана3в4чена3в4чови3в4чеви3в4чедо3в4чоза3в4чпо3в4чае3м4рій_ви3м4р_за3м4р_зі3м4р_на3м4р_по3м4рие4стетое4стетее4стетоо4ктаніо4ктано3в4казе3в4каз", + 8 : "6б6с6тв_6б6с6тр_6б6с6ьк_6в6с6тв_6в6с6ть_6в6с6ьк_6г6с6тв_6д6с6тв_6д6с6ьк_6д6ь6сь_6й6с6тв_6й6с6тр_6й6с6ьк_6л6ь6дс_6л6ь6сь_6л6ь6тр_6м6б6ль_6м6с6тв_6м6с6ьк_6н6г6ль_6н6с6тв_6н6с6тр_6н6с6ьк_6н6ь6сь_6п6с6тв_6р6л6ьз_6р6н6ст_6р6с6тв_6р6с6ть_6р6с6ьк_6р6щ6сь_6с6д6рп_6с6т6рь_6т6с6тв_6т6с6ьк_6т6ь6сь_6ф6с6тв__ві5д4ом_ві5д4ун_ві5д4ербезві4д3неві4д’3_пона4д3_напі4в3ро5з4йом_чере4з3пере5о4рпі6д5о4робі3в’4євід3в’4япри3в’4япід3в’4япри3м’4янаду4рочприу4роч3в4б4лаг3в4к4лад3в4п4лив3в4т4рут3в4т4руч3з4б4рой3з4б4рою3з4б4роє3з4в4’яз3п4с4ков3с4к4лад3с4к4лит3с4п4лав3с4п4лат3с4п4лач3с4п4рав3с4т4вор3с4т4рах3с4т4риб3с4т4риж3с4т4рой3с4т4рок3с4т4ром3с4т4роф3с4т4роч3с4т4рою3с4т4роя3с4т4роє3с4т4рої3с4т4рій3с4т4ріл3с4т4річ3т4к4нен3т4ь4мар3у4п4рав3в4веден3в4довол3в4живан3в4поряд3в4рожай3з4доров3з4дійсн3с4короч3с4повід3с4пожив3с4табіл3с4тереж3с4теріг3с4торон3с4торін3а4дитив3а4ктуал3а4курат3а4кцепт3а4лергі3а4матор3а4наліз3а4натом3а4парат3а4пеляц3а4ромат3а4спект3е4колог3е4коном3е4лектр3о4б’єдн3о4б’єкт3о4береж3о4борон3о4перат3о4хорон3у4компл3у4крупн3у4перед3у4рядов3у4стпіш3у4тробн3я4скрав3і4зотоп3і4люстр3і4мовір3і4нтенс3і4нформальбі5онбей4сболбо4г3данбо4є3голбо4є3готбо4є3запбори4с5пвина3й4двина3й4тві5д4е4оджен4тльди4с3локди4с3пледи4с3путди4с3тилд4ні3п4рдо3з4волдо3з4вілкон4трремо4к5рийна3б4лизна3в4рядна4д7з4вна3в4ченне3в4томне3д4банна3д4банне3з4вичне3з4важна5п4ливні4т5ратоб5у4мовпере3й4дпере3й4тпі5в4еньпо3в4торпо3в4ченпо3д4робпо3д4разпо5з4бавпри4нципрай3в4нороз5вантро4з5ділро4з5горро4з5верро4з5чепро4з3ливсан4к4т3серцеї4дстат5упрукр3а4втукр3а4грукр3е4кснедо3у4чпед3у4чипере3у4чсамо3у4чсво4єчассво4єрідоо4динокміжу4собнай3я4снроз’я4снро5з4ориро5з4ороро5з4оруро5з4оряро5з4орюро5з4орірозо4решео4голошбальне4оне4окласпі5в4оніп4о5берео3о4кисли3о4кисле3о4кислх3о4кисли3і4сторо3і4сторі3і4стора3і4сторя3і4сторе3і4сторар4т3мінар4т3підар4т3ринар4т3хімперей4няпідій4нябезу4пин_при3в4чмона3в4чжона3в4чіона3в4ч_зав3м4р_при3м4р_роз3м4рй3е4стет", + 9 : "6л6ь6ств_6л6ь6ськ_6н6с6ькй_6н6т6ств__бе5з4о3д_безві4д3_ві5д4озвді4єві4д3за4вві4д3співві4д3_пере4д3г_пере4д3д_пере4д3м_пере4д3р_пере4д3ч_пере4д’3_пона5д4і_пона5д4и_пона5д4я_чере4з’3непо3в’4япере3м’4япіді3м’4япозау4роч3в4п4равн3с4к4рипт3с4п4ритн3с4п4рият3с4п4ромо3с4т4ражд3с4т4рукт3с4т4рукц3т4ь4мяні3в4разлив3з4баланс3й4мовірн3с4постер3а4вторит3а4декват3а4постол3а4ргумен3е4легант3е4лемент3е4стакад3о4рдинац3у4люблен3у4разлив3у4рочист3у4станов3у4сувати3і4ніціатай4с3бергбактері4оба4с3енербез5і4менбо4є3здатбо4є3компбо4є3постбо4є3прип4в3антрацге2ть3мандер4ж5виддер4ж5думдер4ж5комдер4ж3бездер4ж5стрдисбалансди4с3гармди4с3квалди4с3комфди4с3контди4с3кредди4с3кретди4с3крецди4с3кримди4с3кусіди4с3кутуди4с3персди4с3петчди4с3плейди4с3позиди4с3пропди4с3трибди4с3трофєв4р3атомєпі4с5копєпи4с5копза4п3часті4л3е4тилкиї4венермі4н5е4кона4й3маслна4й3сприна4й3якісна3в4чітьобі3д4раноб4лдер4жперег4нійпере4д5смпід5о4динпо3б4лизупо3в4чітьпо5ж4нітьпос4т3каппос4т3компос4т3натпос4т3соцпор4т3ретпор4т3фелпро4ект3нпро3б4лемпро4м3майпр4о5платро4з5д4вороз5у4ченроз5і4менро4з’5єднро4з3громспе4ц3курспе4ц3мон3с4проможтур4к3менро5з4ора_ро5з4орахне4омальтне4окомунне4оландшне4оліберно4к3а4утте4одолітпів3о4валнаді4сторар4т3афішар4т3кафеар4т3майсар4т3мейсар4т3фактнаді4стотнайі4стотау4т3еколбеза4варібезе4місіо3а4налізц3а4налізз3а4налізм3а4налізпів3у4годроз3у4год_віді3м4р_пере3м4рво4станнєоо4плачувео4плачув", + 10 : "_без5о4соб_без3ро4з3те4х3ві4д3_пере4д3св_пере4д3фрбе4з5і4дейінтер3в’4юна4й3у4бог3в4р4одливба4с3антравід5о4бражвід5о4бразводо5с4токводо5з4бірго4с4п5роздер4ж5а4дмдер4ж5бюдждер4ж5нафтдер4ж5реєсдер4ж5служдвох4а5томди4с3паритди4с3функцкон4тр3аргмі4н5е4нерна4й7о4берна4й7о4гидна4й7о4голна4й7о4пукна4й7о4хайпере5п4ливпере3в4томпів5о4с4трпос4т3процпос4т3фіксспор4т3вирспор4т3залспор4т3комспор4т3майтор4г3предсво4єкорисро5з4о5рамро6з5о4ри_ень7о4кислнай3і4сторпів3і4сторар4т3взводар4т3медіаар4т3о4динар4т3о4збрар4т3центргіпер3а4ктнай3о4бразар4т3мейстго4ф3мейстдо4к3мейстхо4р3мейстміж3а4варінад3а4варібез3а4дреснай3е4фектбло4к3пост_блі4ц3ана_блі4ц3турнт3а4налізре3а4налізбо4р4т3мехбо4р4т3пробо4р4т3радпан3е4стетпар3е4стет", 11 : "про4ф3ві4д3спе4ц3ві4д3_пере4д3бач_пере4д3виб_пере4д3ост_пере4д3пла_пере4д3пок_пере4д3усібрі4дж3портволь4т3метргі4д5ро5метдер4ж5а4томдер4ж5замовзе4кономитиказа4х3станквар4т3платжко4м5а4томкому4ненергна4й3обережна4й7о4грядоб4л3а4дмінперед5о4бідперед5у4мовпо4с4т5комупо4с4т3декрпо4с4т3радіпо4с4т5соціпро3с4тирадполі4т5еконро4з5міннийруко5с4тискспор4т3клубспор4т4с3мечорно3б4ривхво4є3г4ризпа4н3о4тецьконтр3у4дарпост3і4сторар4т3десантар4т3о4бстрар4т3у4станграф3о4бразгро4с3мейсткра4н3мейстшта4л3мейстєге4р3мейстпост3а4варі_блі4ц3криг_блі4ц3опит_блі4ц3торгбак3а4налізген3а4налізміж3а4налізгос4п3у4годбо4р4т3і4нжнай3о4станнперед3о4пла", 12 : "_пере4д3умовволь4т3ампердер4ж3резервдорого5в4казінфор4м3агенпо4с4т5радянпо4с4тприватукр3і4н4банкперед3і4сторсупер3о4бразбаге4р3мейстбале4т3мейстбран4д3мейстполі4ц3мейстпо4ш4т3мейстшапі4т3мейстнапів3а4варіперед3а4варісупер3а4варісупер3е4фектгіпер3е4місіполі3а4налізбо4р4т3о4пер", 13 : "по4с4т3контрацен4т4р3енергва4ль4д3мействе4ль4т3мейстдекре4т3мейсткапе4ль3мейст_блі4ц3і4спитперед3о4станн", diff --git a/resources/viewer/hyphenation.js b/resources/viewer/hyphenation.js index a0ba6d1f34..3853eb95be 100644 --- a/resources/viewer/hyphenation.js +++ b/resources/viewer/hyphenation.js @@ -1,15 +1,9 @@ /* - * bookmarks management + * Hyphenation * Copyright 2008 Kovid Goyal * License: GNU GPL v3 */ -function init_hyphenate() { - window.py_bridge.init_hyphenate(); -} - -document.addEventListener("DOMContentLoaded", init_hyphenate, false); - function do_hyphenation(lang) { Hyphenator.config( { @@ -17,6 +11,9 @@ function do_hyphenation(lang) { //'hyphenchar' : '|', 'displaytogglebox' : false, 'remoteloading' : false, + 'doframes' : true, + 'defaultlanguage' : 'en', + 'storagetype' : 'session', 'onerrorhandler' : function (e) { window.py_bridge.debug(e); } diff --git a/src/calibre/gui2/viewer/documentview.py b/src/calibre/gui2/viewer/documentview.py index 93e19c38e1..f92faf7187 100644 --- a/src/calibre/gui2/viewer/documentview.py +++ b/src/calibre/gui2/viewer/documentview.py @@ -80,7 +80,7 @@ class ConfigDialog(QDialog, Ui_Dialog): self.css.setPlainText(opts.user_css) self.css.setToolTip(_('Set the user CSS stylesheet. This can be used to customize the look of all books.')) self.max_view_width.setValue(opts.max_view_width) - pats = [os.path.basename(x).split('.')[0] for x in + pats = [os.path.basename(x).split('.')[0].replace('-', '_') for x in glob.glob(P('viewer/hyphenate/patterns/*.js', allow_user_override=False))] names = list(map(get_language, pats)) @@ -92,7 +92,7 @@ class ConfigDialog(QDialog, Ui_Dialog): try: idx = pats.index(opts.hyphenate_default_lang) except ValueError: - idx = pats.index('en') + idx = pats.index('en_us') idx = self.hyphenate_default_lang.findText(names[idx]) self.hyphenate_default_lang.setCurrentIndex(idx) self.hyphenate.setChecked(opts.hyphenate) @@ -143,7 +143,7 @@ class Document(QWebPage): self.set_font_settings() self.set_user_stylesheet() self.misc_config() - self.triggerAction(QWebPage.Reload) + self.after_load() def __init__(self, shortcuts, parent=None): QWebPage.__init__(self, parent) @@ -228,14 +228,17 @@ class Document(QWebPage): lang = self.current_language if not lang: lang = default_lang - lang = lang.lower()[:2] + def lang_name(l): + if l == 'en': + l = 'en-us' + return l.lower().replace('_', '-') if hyphenator is None: hyphenator = P('viewer/hyphenate/Hyphenator.js', data=True).decode('utf-8') self.javascript(hyphenator) - p = P('viewer/hyphenate/patterns/%s.js'%lang) + p = P('viewer/hyphenate/patterns/%s.js'%lang_name(lang)) if not os.path.exists(p): lang = default_lang - p = P('viewer/hyphenate/patterns/%s.js'%lang) + p = P('viewer/hyphenate/patterns/%s.js'%lang_name(lang)) self.javascript(open(p, 'rb').read().decode('utf-8')) self.loaded_lang = lang @@ -249,6 +252,11 @@ class Document(QWebPage): if self.hyphenate: self.javascript('do_hyphenation("%s")'%self.loaded_lang) + def after_load(self): + self.set_bottom_padding(0) + self.fit_images() + self.init_hyphenate() + @pyqtSignature("QString") def debug(self, msg): prints(msg) @@ -652,8 +660,7 @@ class DocumentView(QWebView): return self.loading_url = None self.document.load_javascript_libraries() - self.document.set_bottom_padding(0) - self.document.fit_images() + self.document.after_load() self._size_hint = self.document.mainFrame().contentsSize() scrolled = False if self.to_bottom: diff --git a/src/calibre/utils/localization.py b/src/calibre/utils/localization.py index 2532962bf6..d452721113 100644 --- a/src/calibre/utils/localization.py +++ b/src/calibre/utils/localization.py @@ -118,8 +118,13 @@ _extra_lang_codes = { 'und' : _('Unknown') } +_lcase_map = {} +for k in _extra_lang_codes: + _lcase_map[k.lower()] = k + def get_language(lang): global _iso639 + lang = _lcase_map.get(lang, lang) if lang in _extra_lang_codes: return _extra_lang_codes[lang] ip = P('localization/iso639.pickle') From b0a35fa3fdc662223bcb7d92bc15c883ccc7994f Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 16 Nov 2010 18:40:06 -0700 Subject: [PATCH 028/377] ... --- setup/installer/osx/app/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup/installer/osx/app/main.py b/setup/installer/osx/app/main.py index 0c46994262..140f58a6b7 100644 --- a/setup/installer/osx/app/main.py +++ b/setup/installer/osx/app/main.py @@ -356,7 +356,7 @@ class Py2App(object): CFBundleSignature='????', CFBundleExecutable='calibre', CFBundleDocumentTypes=docs, - LSMinimumSystemVersion='10.4.2', + LSMinimumSystemVersion='10.5.2', LSRequiresNativeExecution=True, NSAppleScriptEnabled=False, NSHumanReadableCopyright='Copyright 2010, Kovid Goyal', From 26ba75f76cc1db12439fb6f3a7c6bc9fbd049507 Mon Sep 17 00:00:00 2001 From: ldolse Date: Wed, 17 Nov 2010 10:25:51 +0800 Subject: [PATCH 029/377] added a search for emphasized lines during chapter markup --- src/calibre/ebooks/conversion/utils.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/calibre/ebooks/conversion/utils.py b/src/calibre/ebooks/conversion/utils.py index 51139d3a18..bec15924d6 100644 --- a/src/calibre/ebooks/conversion/utils.py +++ b/src/calibre/ebooks/conversion/utils.py @@ -177,9 +177,10 @@ class PreProcessor(object): numeric_chapters = r".?(\d+\.?|(CHAPTER\s*([\dA-Z\-\'\"\?\.!#,]+\s*){1,10}))\s*" uppercase_chapters = r"\s*.?([A-Z#]+(\s|-){0,3}){1,5}\s*" numeric_titles = r".?(\d+\.?\s+([\d\w-]+\:?\'?-?\s?){0,5})\s*" + emphasized_lines = r"]*>\s*(]*>)?\s*(\s*(?=[\w#\-*\s]+<)([\w#-*]+\s*){1,5}\s*)()?\s*
    " full_chapter_line = chapter_line_open+chapter_header_open+typical_chapters+chapter_header_close+chapter_line_close - n_lookahead = re.sub("(out|inn|cha)", "l", full_chapter_line) + n_lookahead = re.sub("(ou|in|cha)", "lookahead_", full_chapter_line) print "n_lookahead is " + n_lookahead print "Chapter line is " + full_chapter_line + "\n\n" chapter_marker = lookahead+full_chapter_line+blank_lines+n_lookahead_open+n_lookahead+n_lookahead_close+opt_title_open+title_line_open+title_header_open+default_title+title_header_close+title_line_close+opt_title_close @@ -195,7 +196,7 @@ class PreProcessor(object): if self.html_preprocess_sections < 10: self.log("not enough chapters, only " + unicode(self.html_preprocess_sections) + ", trying numeric chapters") full_chapter_line = chapter_line_open+chapter_header_open+numeric_chapters+chapter_header_close+chapter_line_close - n_lookahead = re.sub("(out|inn|cha)", "l", full_chapter_line) + n_lookahead = re.sub("(ou|in|cha)", "lookahead_", full_chapter_line) print "n_lookahead is " + n_lookahead print "Chapter line is " + full_chapter_line + "\n\n" chapter_marker = lookahead+full_chapter_line+blank_lines+n_lookahead_open+n_lookahead+n_lookahead_close+opt_title_open+title_line_open+title_header_open+default_title+title_header_close+title_line_close+opt_title_close @@ -203,10 +204,21 @@ class PreProcessor(object): chapdetect2 = re.compile(r'%s' % chapter_marker, re.IGNORECASE) html = chapdetect2.sub(self.chapter_head, html) + if self.html_preprocess_sections < 10: + self.log("not enough chapters, only " + unicode(self.html_preprocess_sections) + ", trying emphazised lines") + full_chapter_line = chapter_line_open+chapter_header_open+emphasized_lines+chapter_header_close+chapter_line_close + n_lookahead = re.sub("(ou|in|cha)", "lookahead_", full_chapter_line) + print "n_lookahead is " + n_lookahead + print "Chapter line is " + full_chapter_line + "\n\n" + chapter_marker = lookahead+full_chapter_line+blank_lines+n_lookahead_open+n_lookahead+n_lookahead_close+opt_title_open+title_line_open+title_header_open+default_title+title_header_close+title_line_close+opt_title_close + print chapter_marker + chapdetect2 = re.compile(r'%s' % chapter_marker, re.IGNORECASE) + html = chapdetect2.sub(self.chapter_head, html) + if self.html_preprocess_sections < 10: self.log("not enough chapters, only " + unicode(self.html_preprocess_sections) + ", trying with uppercase words") full_chapter_line = chapter_line_open+chapter_header_open+uppercase_chapters+chapter_header_close+chapter_line_close - n_lookahead = re.sub("(out|inn|cha)", "l", full_chapter_line) + n_lookahead = re.sub("(ou|in|cha)", "lookahead_", full_chapter_line) print "n_lookahead is " + n_lookahead print "Chapter line is " + full_chapter_line + "\n\n" chapter_marker = lookahead+full_chapter_line+blank_lines+n_lookahead_open+n_lookahead+n_lookahead_close+opt_title_open+title_line_open+title_header_open+default_title+title_header_close+title_line_close+opt_title_close @@ -217,7 +229,7 @@ class PreProcessor(object): if self.html_preprocess_sections < 10: self.log("not enough chapters, only " + unicode(self.html_preprocess_sections) + ", trying numeric chapters with titles") full_chapter_line = chapter_line_open+chapter_header_open+numeric_titles+chapter_header_close+chapter_line_close - n_lookahead = re.sub("(out|inn|cha)", "l", full_chapter_line) + n_lookahead = re.sub("(ou|in|cha)", "lookahead_", full_chapter_line) print "n_lookahead is " + n_lookahead print "Chapter line is " + full_chapter_line + "\n\n" chapter_marker = lookahead+full_chapter_line+blank_lines+n_lookahead_open+n_lookahead+n_lookahead_close+opt_title_open+title_line_open+title_header_open+default_title+title_header_close+title_line_close+opt_title_close From 13449934996a99453129f391512f412fa880f7fd Mon Sep 17 00:00:00 2001 From: Translators <> Date: Wed, 17 Nov 2010 04:49:34 +0000 Subject: [PATCH 030/377] Launchpad automatic translations update. --- src/calibre/translations/cs.po | 14 +- src/calibre/translations/nb.po | 656 +++++++++++++++++++-------------- 2 files changed, 386 insertions(+), 284 deletions(-) diff --git a/src/calibre/translations/cs.po b/src/calibre/translations/cs.po index 972625bad5..0697578190 100644 --- a/src/calibre/translations/cs.po +++ b/src/calibre/translations/cs.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-11-12 23:11+0000\n" -"PO-Revision-Date: 2010-11-13 20:32+0000\n" -"Last-Translator: Aleš Bajtalon \n" +"PO-Revision-Date: 2010-11-16 19:32+0000\n" +"Last-Translator: Marek Sušický \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-14 05:04+0000\n" +"X-Launchpad-Export-Date: 2010-11-17 04:49+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -4784,16 +4784,16 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:25 msgid "Bold" -msgstr "" +msgstr "Tlustě" #: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:26 msgid "Italic" -msgstr "" +msgstr "Italic" #: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:27 #: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:28 msgid "Underline" -msgstr "" +msgstr "Podtrženo" #: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:36 msgid "" @@ -4897,7 +4897,7 @@ msgstr "Debuguj konverzní proces" #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:39 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:56 msgid "Choose debug folder" -msgstr "" +msgstr "Zvolit ladicí složku" #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:58 msgid "Invalid debug directory" diff --git a/src/calibre/translations/nb.po b/src/calibre/translations/nb.po index b36b35dbc8..6afd6ed742 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-11-06 15:45+0000\n" -"PO-Revision-Date: 2010-11-06 01:42+0000\n" -"Last-Translator: Kovid Goyal \n" +"POT-Creation-Date: 2010-11-12 23:11+0000\n" +"PO-Revision-Date: 2010-11-16 08:41+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-11-07 04:45+0000\n" +"X-Launchpad-Export-Date: 2010-11-17 04:49+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -31,7 +31,7 @@ msgstr "Gjør absolutt ingenting" #: /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/sony_cache.py:643 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:650 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 @@ -74,14 +74,14 @@ msgstr "Gjør absolutt ingenting" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:78 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:119 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:153 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:611 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:817 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:819 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:620 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:826 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:828 #: /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:911 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:916 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:982 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:913 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:918 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:984 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:143 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:150 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:64 @@ -123,8 +123,8 @@ msgstr "Gjør absolutt ingenting" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:141 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:927 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:936 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1243 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1249 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1252 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 @@ -192,7 +192,7 @@ msgstr "Handlinger for brukergrensesnitt" msgid "Preferences" msgstr "Innstillinger" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:17 +#: /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 " @@ -202,7 +202,7 @@ msgstr "" "lenkede filer. Dette programtillegget kjører hver gang du legger til en HTML " "fil til biblioteket." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:53 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:51 msgid "" "Character encoding for the input HTML files. Common choices include: cp1252, " "latin1, iso-8859-1 and utf-8." @@ -210,7 +210,7 @@ msgstr "" "Skrifttegnkoding for inndata av HTML filer. Vanlige valg inkluderer: cp1252, " "latin1, iso-8859-1 og utf-8." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:60 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:58 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 " @@ -220,7 +220,7 @@ msgstr "" "pmlname_img eller images. Dette programtillegget kjører hver gang du legger " "til en PML-fil til biblioteket." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:94 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:92 msgid "Extract cover from comic files" msgstr "Ekstrakter omslagside fra tegneseriefiler" @@ -267,43 +267,43 @@ msgstr "Set metadata i %s filer" msgid "Set metadata from %s files" msgstr "Set metadata fra %s filer" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:711 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:712 msgid "Look and Feel" msgstr "Utseende" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:713 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:725 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:736 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:747 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:714 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:726 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:737 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:748 msgid "Interface" msgstr "Brukergrensesnitt" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:717 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:718 msgid "Adjust the look and feel of the calibre interface to suit your tastes" msgstr "Juster utseende for calibres brukergrensesnitt etter ditt ønske" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:723 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:724 msgid "Behavior" msgstr "Atferd" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:729 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:730 msgid "Change the way calibre behaves" msgstr "Endrer måten calibre oppfører seg" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:734 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:206 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:209 msgid "Add your own columns" msgstr "Legg til dine egne kolonner" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:740 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:741 msgid "Add/remove your own columns to the calibre book list" msgstr "Legg til /fjern dine egne kolonner i calibres bokliste" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:745 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746 msgid "Customize the toolbar" msgstr "Tilpass verktøylinjen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:751 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:752 msgid "" "Customize the toolbars and context menus, changing which actions are " "available in each" @@ -311,58 +311,58 @@ msgstr "" "Tilpass verktøylinjen og kontekstmenyer. Endringer med handlinger er " "tilgjengelig i hver" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:757 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:758 msgid "Input Options" msgstr "Valg for inndata" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:759 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:770 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:781 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:760 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:771 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:782 msgid "Conversion" msgstr "konvertering" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:763 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:764 msgid "Set conversion options specific to each input format" msgstr "Angi spesifikke konverteringsalternativer for hvert inndata-format" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:768 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769 msgid "Common Options" msgstr "Vanlige valg" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:774 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:775 msgid "Set conversion options common to all formats" msgstr "Angi felles konverteringsalternativer for alle formater" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:779 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780 msgid "Output Options" msgstr "Valg for utdata" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:785 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:786 msgid "Set conversion options specific to each output format" msgstr "Angi spesifikke konverteringsalternativer for hvert utdata-format" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:790 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791 msgid "Adding books" msgstr "Legger til bøker" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:792 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:804 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:816 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:828 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:793 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:805 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:817 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:829 msgid "Import/Export" msgstr "Improter/Exporter" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:796 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:797 msgid "Control how calibre reads metadata from files when adding books" msgstr "" "Kontrollerer hvordan calibre leser metadata fra filer når den legger til " "bøker" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:802 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:803 msgid "Saving books to disk" msgstr "Lagrer bøker til disk" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:808 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:809 msgid "" "Control how calibre exports files from its database to disk when using Save " "to disk" @@ -370,32 +370,32 @@ msgstr "" "Kontrollerer hvordan calibre eksporterer filer fra dens database til disken " "når \"lagre til disk\" benyttes" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:814 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:815 msgid "Sending books to devices" msgstr "Sender bøker til enheter" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:820 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:821 msgid "Control how calibre transfers files to your ebook reader" msgstr "Kontrollerer hvordan calibre overfører filer til din e-bokleser" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:826 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:827 msgid "Metadata plugboards" msgstr "Instrumenttavle for metadata" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:832 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:833 msgid "Change metadata fields before saving/sending" msgstr "Endre felt for metadata før lagring/sending" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:837 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838 msgid "Sharing books by email" msgstr "Dele bøker ved e-post" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:839 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:851 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:840 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:852 msgid "Sharing" msgstr "Deling" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:843 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:844 msgid "" "Setup sharing of books via email. Can be used for automatic sending of " "downloaded news to your devices" @@ -403,11 +403,11 @@ msgstr "" "Klargjør for deling av bøker via e-post. Kan brukes til automatisk sending " "av nedlastede nyheter til enhetene" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:849 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:850 msgid "Sharing over the net" msgstr "Deling over nettet" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:855 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:856 msgid "" "Setup the calibre Content Server which will give you access to your calibre " "library from anywhere, on any device, over the internet" @@ -415,33 +415,33 @@ msgstr "" "Klargjør calibre Innholdsserver som vil gi deg tilgang til calibres " "biblioteket fra hvor som helst, på enhver enhet, over Internett" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:862 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863 msgid "Plugins" msgstr "Programtillegg" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:864 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:876 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:887 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:865 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:877 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:888 msgid "Advanced" msgstr "Avansert" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:868 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:869 msgid "Add/remove/customize various bits of calibre functionality" msgstr "Legg til/fjern/tilpass varierende deler av calibres funksjonalitet" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:874 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:875 msgid "Tweaks" msgstr "Tilpassning" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:880 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:881 msgid "Fine tune how calibre behaves in various contexts" msgstr "Finjuster hvordan calibre oppfører seg under varierende situasjoner" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:885 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886 msgid "Miscellaneous" msgstr "Diverse" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:891 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:892 msgid "Miscellaneous advanced configuration" msgstr "Diverse avanserte konfigurasjoner" @@ -486,7 +486,7 @@ msgstr "" "vet noe om dokumentets inndata." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:59 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:436 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:444 msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "" @@ -498,62 +498,62 @@ msgid "This profile is intended for the SONY PRS 300." msgstr "Denne profilen er ment for SONY PRS 300" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:80 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:476 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:484 msgid "This profile is intended for the SONY PRS-900." msgstr "Denne profilen er ment for SONY PRS-900" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:88 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:506 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:513 msgid "This profile is intended for the Microsoft Reader." msgstr "Denne profilen er ment for Microsoft Reader." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:99 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:517 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:524 msgid "This profile is intended for the Mobipocket books." msgstr "Denne profilen er ment for Mobipocket bøker." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:112 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:530 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:537 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "Denne profilen er ment for Hanlin V3 og kloner av denne." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:124 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:542 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:549 msgid "This profile is intended for the Hanlin V5 and its clones." msgstr "Denne profilen er ment for HAnlin V5 og dens kloner" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:134 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:550 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:557 msgid "This profile is intended for the Cybook G3." msgstr "Denne profilen er ment for Cybook G3." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:147 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:563 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:570 msgid "This profile is intended for the Cybook Opus." msgstr "Denne profilen er ment for Cybook Opus." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:159 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:576 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:583 msgid "This profile is intended for the Amazon Kindle." msgstr "Denne profilen er ment for Amazon Kindle." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:171 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:617 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:631 msgid "This profile is intended for the Irex Illiad." msgstr "Denne profilen er ment for Irex Illiad." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:183 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:630 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "Denne profilen er ment for IRex Digital Reader 1000." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:196 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 msgid "This profile is intended for the IRex Digital Reader 800." msgstr "Denne profilen er ment for IRex Digital Reader 800" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:208 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 msgid "This profile is intended for the B&N Nook." msgstr "Denne profilen er ment for B&N Nook." @@ -571,28 +571,28 @@ msgstr "" "å lage et dokument som er ment til å bli lest på en datamaskin eller andre " "dataprodukter." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:273 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:276 msgid "" "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "Benyttes for iPad og liknende enheter med en oppløsning på 768x1024" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:427 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:435 msgid "Intended for generic tablet devices, does no resizing of images" msgstr "Ment for generiske tablet enheter, endrer ikke billedstørrelser" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:454 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:462 msgid "This profile is intended for the Kobo Reader." msgstr "Denne profilen er tiltenkt Kobo Reader" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:467 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:475 msgid "This profile is intended for the SONY PRS-300." msgstr "Denne profilen er ment for SONY PRS-300" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:485 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:493 msgid "This profile is intended for the 5-inch JetBook." msgstr "Denne profilen er ment for 5-inch JetBook." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:494 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:502 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." @@ -600,11 +600,11 @@ msgstr "" "Denne profilen er ment for SONY PRS serien. 500/505/700 osv, i " "landskapsmodus. Dette er hovedsakelig anvendelig for tegneserier." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:597 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:609 msgid "This profile is intended for the Amazon Kindle DX." msgstr "Denne profilen er ment for Amazon Kindle DX." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:686 msgid "This profile is intended for the Sanda Bambook." msgstr "Denne profilen er ment for Sandra Bambook." @@ -684,7 +684,7 @@ msgstr "Slå av navngitte programtillegg" msgid "Communicate with Android phones." msgstr "Kommuniser med Android-telefoner." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:53 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:56 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" @@ -692,7 +692,7 @@ msgstr "" "Komma-delt liste av foldere som av e-bøker som sendes til enheten. Den " "første som eksisterer vil bli benyttet" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:95 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:98 msgid "Communicate with S60 phones." msgstr "Kommuniser med S60 telefoner." @@ -1009,7 +1009,7 @@ msgstr "Kommuniser med Sweex MM300" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:79 msgid "Communicate with the Digma Q600" -msgstr "" +msgstr "Kommuniser med Digma Q600" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:88 msgid "Communicate with the Kogan" @@ -1048,6 +1048,14 @@ msgstr "Nook" msgid "Communicate with the Nook eBook reader." msgstr "Kommuniser med Nook eBook leser" +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 +msgid "Nook Color" +msgstr "Nook Color" + +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 +msgid "Communicate with the Nook Color eBook reader." +msgstr "Kommuniser med Nook Color eBook leser." + #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." msgstr "Kommuniser med Nuut2 eBook-reader" @@ -2105,25 +2113,27 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/html/output.py:33 msgid "CSS file used for the output instead of the default file" -msgstr "" +msgstr "CSS fil brukt til utdata fremfor standardfil" #: /home/kovid/work/calibre/src/calibre/ebooks/html/output.py:36 msgid "" "Template used for generation of the html index file instead of the default " "file" -msgstr "" +msgstr "Mal brukt til generering av html indekseringsfil fremfor standardfil" #: /home/kovid/work/calibre/src/calibre/ebooks/html/output.py:39 msgid "" "Template used for the generation of the html contents of the book instead of " "the default file" -msgstr "" +msgstr "Mal brukt til generering av html-innhold i boken, fremfor sandardfil" #: /home/kovid/work/calibre/src/calibre/ebooks/html/output.py:42 msgid "" "Extract the contents of the generated ZIP file to the specified directory. " "WARNING: The contents of the directory will be deleted." msgstr "" +"Ekstraherer innholdet av en generert ZIP-fil til den spesifiserte mappen. " +"ADVARSEL: Innholdet i mappen vil bli slettet." #: /home/kovid/work/calibre/src/calibre/ebooks/lit/from_any.py:47 msgid "Creating LIT file from EPUB..." @@ -2443,8 +2453,8 @@ msgstr "Ja" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:605 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:45 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:102 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:65 @@ -2478,8 +2488,8 @@ msgstr "Produsent" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:39 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:206 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:189 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:104 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:79 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:325 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1131 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:178 @@ -2717,7 +2727,7 @@ msgstr "Last ned %s fra %s" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:149 msgid "Convert comments downloaded from %s to plain text" -msgstr "" +msgstr "Konverter kommentarer lasted ned fra %s til ordinær tekst" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:175 msgid "Downloads metadata from Google Books" @@ -2805,7 +2815,7 @@ msgstr "" "i oversettelsen.\n" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1399 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 msgid "Cover" msgstr "Omslagside" @@ -2844,74 +2854,74 @@ msgstr "Gi emneord til merket bok som skal lagres i Personlige Dokumenter" msgid "All articles" msgstr "Alle artikler" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:259 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:262 msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "Dette er en Amazon Topaz-bok. Den kan ikke koverteres." -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1400 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 msgid "Title Page" msgstr "Tittelside" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 #: /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:199 msgid "Table of Contents" msgstr "Innholdsfortegnelse" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 msgid "Index" msgstr "Innhold" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 msgid "Glossary" msgstr "Ordliste" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 msgid "Acknowledgements" msgstr "Påskjønnelse" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 msgid "Bibliography" msgstr "Litteraturliste" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 msgid "Colophon" msgstr "Kolofon" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 msgid "Copyright" msgstr "Opphavsrettighet" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 msgid "Dedication" msgstr "Tilegnet" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 msgid "Epigraph" msgstr "Epigraf" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 msgid "Foreword" msgstr "Forord" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 msgid "List of Illustrations" msgstr "Illustrasjonsliste" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 msgid "List of Tables" msgstr "Tabell-liste" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 msgid "Notes" msgstr "Merknader" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1416 msgid "Preface" msgstr "Forord" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1417 msgid "Main Text" msgstr "Hovedtekst" @@ -3959,7 +3969,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:391 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:739 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 msgid "Not allowed" msgstr "Ikke tillatt" @@ -4026,7 +4036,7 @@ msgstr "Kunne ikke kopiere bøker: " #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:720 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:683 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:685 #: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:189 msgid "Failed" msgstr "Mislykket" @@ -4268,6 +4278,10 @@ msgid "" "second and subsequently selected books will not be deleted or " "changed.

    Please confirm you want to proceed." msgstr "" +"Bokformat og metadata fra de valgte bøkene vil bli lagt til den første " +"valgte boken (%s). ISBN vil ikke bli lagt til.

    Den andre " +"og deretter valgte bøker vil ikke bli slettet eller " +"forandret..

    Vennligst bekreft at du ønsker å fortsette." #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:209 msgid "" @@ -4279,6 +4293,13 @@ msgid "" "books will be permanently deleted from your computer.

    Are " "you sure you want to proceed?" msgstr "" +"Bokformater og metadata fra de valgte bøkene vil bli slått sammen med " +"første valgte bok (%s). ISBN vil ikke bli slått " +"sammen.

    Etter å ha slått sammen, vil den andre og de deretter valgte " +"bøker bli slettet.

    Alle bokformater fra den første valgte " +"boken vil bli beholdt og alle duplikatformater i den andre og de deretter " +"valgte bøker vil bli permanent slettet fra datamaskinen din.

    " +"Er du sikker på at du ønsker å fortsette?" #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:222 msgid "" @@ -4473,24 +4494,24 @@ msgstr "Bøker med de samme taggene" #: /home/kovid/work/calibre/src/calibre/gui2/actions/tweak_epub.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tweak_epub_ui.py:54 msgid "Tweak ePub" -msgstr "" +msgstr "Juster ePub" #: /home/kovid/work/calibre/src/calibre/gui2/actions/tweak_epub.py:16 msgid "Make small changes to ePub format books" -msgstr "" +msgstr "Gjør mindre endringer i ePub-formaterte bøker" #: /home/kovid/work/calibre/src/calibre/gui2/actions/tweak_epub.py:17 msgid "T" -msgstr "" +msgstr "T" #: /home/kovid/work/calibre/src/calibre/gui2/actions/tweak_epub.py:27 #: /home/kovid/work/calibre/src/calibre/gui2/actions/tweak_epub.py:39 msgid "Cannot tweak ePub" -msgstr "" +msgstr "Kan ikke justere ePub" #: /home/kovid/work/calibre/src/calibre/gui2/actions/tweak_epub.py:40 msgid "No ePub available. First convert the book to ePub." -msgstr "" +msgstr "Ingen ePub tilgjengelig. Konverter boken til ePub først." #: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:24 msgid "V" @@ -4766,11 +4787,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:25 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:49 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:403 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:119 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:120 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:121 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:137 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:320 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1117 @@ -4779,10 +4800,10 @@ msgstr "Bane" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:26 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:123 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:124 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:319 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:24 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:117 @@ -4813,9 +4834,9 @@ msgstr "Klikk for å åpne" msgid "None" msgstr "Ingen" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:404 msgid "Double-click to open Book Details window" -msgstr "" +msgstr "Dobbeltklikk for å åpne vinduet for bokdetaljer" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:16 msgid "BibTeX Options" @@ -5032,12 +5053,27 @@ msgstr "Sorter tall som tekst" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:87 msgid "Include 'Series' Section" -msgstr "" +msgstr "Inkluder 'Serier' seksjon" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:33 msgid "Tab template for catalog.ui" msgstr "Tab mal for katalog.ui" +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:25 +msgid "Bold" +msgstr "" +"Lokalisert i " +"/home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:87" + +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:26 +msgid "Italic" +msgstr "Kursiv" + +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:28 +msgid "Underline" +msgstr "Understrek" + #: /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 " @@ -5048,11 +5084,11 @@ msgstr "" "verdiene som er lagret i en tidligere konvertering (om de finnes) i stedet " "for å benytte standardspesifikasjonen under innstillinger." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:70 msgid "Bulk Convert" msgstr "Samlet konvertering" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 msgid "Options specific to the output format." msgstr "Valg spesifikt til utdataformatet." @@ -5398,7 +5434,7 @@ msgstr "Behold &bindinger" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:147 msgid "Smarten &punctuation" -msgstr "" +msgstr "Forbedre & pynte" #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:19 msgid "LRF Output" @@ -5567,6 +5603,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:185 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:353 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 msgid "&Series:" msgstr "&Serier:" @@ -5752,7 +5789,7 @@ msgid "Options specific to the input format." msgstr "Valg spesifisert til inndataformat." #: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:117 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:53 msgid "Dialog" @@ -5768,19 +5805,19 @@ msgstr "Bruk &lagrede konverteringsinnstillinger for individuelle bøker" #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output.py:14 msgid "SNB Output" -msgstr "" +msgstr "SNB Utdata" #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:40 msgid "Hide chapter name" -msgstr "" +msgstr "Skjul kapittelnavn" #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:41 msgid "Insert space before the first line for each paragraph" -msgstr "" +msgstr "Legg inn mellomrom før den første linjen av hvert avsnitt" #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:42 msgid "Insert empty line between paragraphs" -msgstr "" +msgstr "Legg inn en tom linje mellom avsnitt" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17 msgid "" @@ -5854,7 +5891,7 @@ msgstr "Fjern T&opptekst" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:86 msgid "Line &un-wrap factor during preprocess:" -msgstr "" +msgstr "Linje &utpakkingsfaktor under forprosesser:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:87 msgid "&Preprocess input file to possibly improve structure detection" @@ -5946,8 +5983,8 @@ msgid "Force maximum line length" msgstr "Fremdriv maksimum linjelengde" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:72 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:62 @@ -6082,16 +6119,16 @@ msgstr " indeks:" #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:493 msgid "Remove series" -msgstr "" +msgstr "Fjern serier" #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:496 msgid "Automatically number books" -msgstr "" +msgstr "Nummerer bøker automatisk" #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:499 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:366 msgid "Force numbers to start with " -msgstr "" +msgstr "Tving tall til å starte med " #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:562 msgid "Remove all tags" @@ -6173,7 +6210,7 @@ msgstr "Hovedminne" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:492 msgid "Send specific format to" -msgstr "" +msgstr "Send spesifisert format til" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:493 msgid "Send and delete from library" @@ -6260,10 +6297,10 @@ msgstr "Sender e-post til" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:982 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:990 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1083 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1168 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1287 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1295 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1089 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1174 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1293 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1301 msgid "No suitable formats" msgstr "Ingen passende formater" @@ -6290,37 +6327,37 @@ msgstr "Kunne ikke sende de følgende bøkene via e-post:" msgid "Sent by email:" msgstr "Sent som e-post:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1042 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1048 msgid "News:" msgstr "Nyheter:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1049 msgid "Attached is the" msgstr "Vedlagt følger" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1054 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1060 msgid "Sent news to" msgstr "Sent nyheter til" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1084 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1169 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1288 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1090 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1175 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1294 msgid "Auto convert the following books before uploading to the device?" msgstr "Autokonverter følgende bøker før du laster dem opp til enheten?" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1114 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1120 msgid "Sending catalogs to device." msgstr "Sender kataloger til enheten." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1201 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1207 msgid "Sending news to device." msgstr "Sender nyheter til enheten" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1254 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1260 msgid "Sending books to device." msgstr "Sender bøker til enheten." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1296 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1302 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." @@ -6329,11 +6366,11 @@ msgstr "" "ble funnet. Konverter boken/bøkene til et format som er støttet av din enhet " "først." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1360 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1366 msgid "No space on device" msgstr "Ikke plass på enheten" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1367 msgid "" "

    Cannot upload books to device there is no more free space available " msgstr "" @@ -6390,15 +6427,15 @@ msgstr "" msgid "&Paste from clipboard" msgstr "&Lim inn fra utkippstavlen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:80 msgid "Fit &cover within view" msgstr "Tilpass &omslagsbilde innenfor synsfelt" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:81 msgid "&Previous" msgstr "&Forrige" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:82 msgid "&Next" msgstr "&Neste" @@ -6435,38 +6472,41 @@ msgstr "katalogvalg" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:26 msgid "Check Library" -msgstr "" +msgstr "Undersøk bibliotek" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:35 msgid "&Run the check" -msgstr "" +msgstr "&Kjør undersøkelsen" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:38 msgid "Copy &to clipboard" -msgstr "" +msgstr "Kopier &til utklippstavlen" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:54 msgid "Names to ignore:" -msgstr "" +msgstr "Navn som skal ignoreres:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:59 msgid "" "Enter comma-separated standard file name wildcards, such as synctoy*.dat" msgstr "" +"Legg inn kommaseparert standard filnavn med stjernetegn, som synctoy*.dat" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:62 msgid "Extensions to ignore" -msgstr "" +msgstr "Utvidelser som skal ignoreres" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:67 msgid "" "Enter comma-separated extensions without a leading dot. Used only in book " "folders" msgstr "" +"Legg inn kommaseparert utvidelser uten et etterfølgende punktum. Benyttes " +"kun i bokmapper" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:119 msgid "Path from library" -msgstr "" +msgstr "Sti fra biblioteket" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:119 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:89 @@ -6479,6 +6519,7 @@ msgid "" "The marked files and folders will be permanently deleted. Are you " "sure?" msgstr "" +"De merkede filene og mappene vil bli slettet permanent. Er du sikker?" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:45 msgid "Choose Format" @@ -6562,6 +6603,7 @@ msgid "Set options for converting %s" msgstr "Sett valg for konvertering %s" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:211 msgid "&Title:" msgstr "&Tittel:" @@ -6622,12 +6664,12 @@ msgstr "Sortering blant forfattere" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:115 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:590 msgid "Invalid author name" -msgstr "" +msgstr "Feil ved forfatternavn" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:116 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:591 msgid "Author names cannot contain & characters." -msgstr "" +msgstr "Forfatternavn kan ikke inneholde & tegn" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:71 msgid "Manage authors" @@ -6693,6 +6735,8 @@ msgid "" "No metadata found, try adjusting the title and author and/or removing the " "ISBN." msgstr "" +"Ingen metadata ble funnet. Forsøk å justere tittel og forfatter og/eller " +"fjerne ISBN." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:90 msgid "Fetch metadata" @@ -6758,19 +6802,19 @@ msgstr "Stopp &alle arbeidsoppgaver for ikkeenheter" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:26 msgid "Title/Author" -msgstr "" +msgstr "Tittel/Forfatter" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:27 msgid "Standard metadata" -msgstr "" +msgstr "Standard metadata" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:28 msgid "Custom metadata" -msgstr "" +msgstr "Egendefinerte metadata" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:29 msgid "Search/Replace" -msgstr "" +msgstr "Søk/Erstatt" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:33 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress.py:76 @@ -6794,23 +6838,23 @@ msgstr "Store eller små bokstaver i tittelen" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:189 msgid "Character match" -msgstr "" +msgstr "Karaktertreff" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:190 msgid "Regular Expression" -msgstr "" +msgstr "Vanlig uttrykk" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:193 msgid "Replace field" -msgstr "" +msgstr "Erstatt felt" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:194 msgid "Prepend to field" -msgstr "" +msgstr "Flyttes til felt" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:195 msgid "Append to field" -msgstr "" +msgstr "Legges til felt" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:206 msgid "Editing meta information for %d books" @@ -6818,18 +6862,22 @@ msgstr "Rediger metainformasjon for %d bøker" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:259 msgid "Book %d:" -msgstr "" +msgstr "Bok %d:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:274 msgid "" "You can destroy your library using this feature. Changes are " -"permanent. There is no undo function. This feature is experimental, and " -"there may be bugs. You are strongly encouraged to back up your library " -"before proceeding.

    Search and replace in text fields using character " -"matching or regular expressions. " +"permanent. There is no undo function. You are strongly encouraged to back up " +"your library before proceeding.

    Search and replace in text fields using " +"character matching or regular expressions. " msgstr "" +"Biblioteket ditt kan ødelegges dersom du bruker denne egenskapen. " +"Endringen er permanent. Det finnes ingen metode for å gjøre om dette valget. " +"Du anbefales å ta en sikkerhetskopi av biblioteket før du fortsetter.

    Søk " +"og erstatt i tekstfelter benytter tegnsett som samsvarer med vanlige " +"uttrykk. " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:282 msgid "" "In character mode, the field is searched for the entered search text. The " "text is replaced by the specified replacement text everywhere it is found in " @@ -6839,7 +6887,7 @@ msgid "" "text will match both upper- and lower-case letters" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:293 msgid "" "In regular expression mode, the search text is an arbitrary python-" "compatible regular expression. The replacement text can contain " @@ -6854,30 +6902,30 @@ msgid "" "function." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:436 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:438 msgid "You must specify a destination when source is a composite field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:528 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:536 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:631 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:633 msgid "Search/replace invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:531 msgid "" "Authors cannot be set to the empty string. Book title %s not processed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:537 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:539 msgid "Title cannot be set to the empty string. Book title %s not processed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:632 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:634 msgid "Search pattern is invalid: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:669 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:671 msgid "" "Applying changes to %d books.\n" "Phase {0} {1}%%." @@ -7123,7 +7171,7 @@ msgid "Your test:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:401 -msgid "&Search and replace (experimental)" +msgid "&Search and replace" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:91 @@ -7645,57 +7693,52 @@ msgstr "" msgid "Negate" msgstr "Opphev" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 msgid "Advanced Search" msgstr "Avansert søk" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:119 -msgid "Find entries that have..." -msgstr "Finn oppføringer som har..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:120 -msgid "&All these words:" -msgstr "&Alle disse ordene:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:121 -msgid "This exact &phrase:" -msgstr "Denne eksakte &frasen:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:122 -msgid "&One or more of these words:" -msgstr "&En eller flere av disse ordene:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:123 -msgid "But dont show entries that have..." -msgstr "Men vis ikke oppføringer som har..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:124 -msgid "Any of these &unwanted words:" -msgstr "Noen av disse &uønskede ordene:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 msgid "What kind of match to use:" msgstr "Hva slags samsvarstreff som skal benyttes:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:126 -msgid "Contains: the word or phrase matches anywhere in the metadata" -msgstr "Inneholder: ord eller frase som samsvarer alle steder i metadata" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:127 -msgid "Equals: the word or phrase must match an entire metadata field" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "" -"Samsvarer med: ordet eller frasen må samsvare med hele metadatafeltet" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +msgid "Equals: the word or phrase must match the entire metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 msgid "" -"Regular expression: the expression must match anywhere in the metadata" -msgstr "Vanlig uttrykk: utrykket må samsvare alle steder i metadata" +"Regular expression: the expression must match anywhere in the metadata field" +msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:129 -msgid " " -msgstr " " +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +msgid "Find entries that have..." +msgstr "Finn oppføringer som har..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +msgid "&All these words:" +msgstr "&Alle disse ordene:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +msgid "This exact &phrase:" +msgstr "Denne eksakte &frasen:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +msgid "&One or more of these words:" +msgstr "&En eller flere av disse ordene:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 +msgid "But dont show entries that have..." +msgstr "Men vis ikke oppføringer som har..." + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 +msgid "Any of these &unwanted words:" +msgstr "Noen av disse &uønskede ordene:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 msgid "" "See the User Manual for more help" @@ -7703,6 +7746,47 @@ msgstr "" "Se Brukermanual for mer hjelp" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:210 +msgid "A&dvanced Search" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:212 +msgid "Enter the title." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:213 +msgid "&Author:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 +msgid "Ta&gs:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:216 +msgid "Enter an author's name. Only one author can be used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:217 +msgid "" +"Enter a series name, without an index. Only one series name can be used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:218 +msgid "Enter tags separated by spaces" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:219 +msgid "&Clear" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:220 +msgid "Search only in specific fields:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:221 +msgid "Titl&e/Author/Series ..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/select_formats.py:45 msgid "Choose formats" msgstr "Velg formater" @@ -8394,11 +8478,15 @@ msgid "" msgstr "" "Bokvisning vil begrenses til dem som samsvarer med de valgte lagrede søkene" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:170 +msgid "Shift+Ctrl+F" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:173 msgid "Advanced search" msgstr "Avansert søk" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:178 msgid "" "

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

    Words separated by spaces are ANDed" @@ -8406,27 +8494,27 @@ msgstr "" "

    Søk i listen over bøker etter tittel, forfatter, forlegger, emneord, " "kommentarer osv.

    Ord delt med mellomrom forstås som OG" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:181 msgid "&Go!" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:187 msgid "Do Quick Search (you can also press the Enter key)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:193 msgid "Reset Quick Search" msgstr "Tilbakestill hurtigsøk" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:205 msgid "Copy current search text (instead of search name)" msgstr "Kopier gjeldende søketekst (istedet for søkenavn)" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:211 msgid "Save current search under the name shown in the box" msgstr "Lagre gjledende søk under navnet som viser i boksen" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:217 msgid "Delete current saved search" msgstr "Slett gjeldende lagrete søk" @@ -8483,47 +8571,47 @@ msgstr "Merket for sletting" msgid "Double click to edit me

    " msgstr "Dobbelklikk til rediger me

    " -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:147 msgid "Hide column %s" msgstr "Skjul kolonne %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 msgid "Sort on %s" msgstr "Sorter blant %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 msgid "Ascending" msgstr "Stigende" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:156 msgid "Descending" msgstr "Synkende" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 msgid "Change text alignment for %s" msgstr "Forandre tekstjustering for %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Left" msgstr "Venstre" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Right" msgstr "Høyre" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:171 msgid "Center" msgstr "Senter" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:190 msgid "Show column" msgstr "Vis kolonne" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202 msgid "Restore default layout" msgstr "Gjenopprett standard visning" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:740 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:743 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -10404,7 +10492,7 @@ msgid "Options to customize the ebook viewer" msgstr "Valgmuligheter for å egendefinere e-bokleseren" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:704 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:708 msgid "Remember last used window size" msgstr "Husk sist brukte vindustørrelse" @@ -10580,66 +10668,66 @@ msgstr "E-bøker" msgid "No matches found for: %s" msgstr "Ingen treff ble funnet for: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:481 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:485 msgid "Loading flow..." msgstr "Lastingsflyt..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:517 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:521 msgid "Laying out %s" msgstr "Legger ut %s" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:552 msgid "Bookmark #%d" msgstr "Bokmerke #%d" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:556 msgid "Add bookmark" msgstr "Legg til bokmerke" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:557 msgid "Enter title for bookmark:" msgstr "Legg inn tittel for bokmerke:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:563 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:567 msgid "Manage Bookmarks" msgstr "Behandle bokmerker" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:600 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:604 msgid "Loading ebook..." msgstr "Laster e-bok..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:612 msgid "DRM Error" msgstr "DRM Feil" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:609 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:613 msgid "

    This book is protected by DRM" msgstr "

    Denne boken er beskyttet av DRM" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:613 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:617 msgid "Could not open ebook" msgstr "Kunne ikke åpne e-boken" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:691 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:695 msgid "Options to control the ebook viewer" msgstr "Valgmuligheter for å kontrollere e-bokleseren" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:698 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:702 msgid "" "If specified, viewer window will try to come to the front when started." msgstr "" "Om spesifisert, vil leservinduet forsøke å legge seg foran når den starter." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:701 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:705 msgid "" "If specified, viewer window will try to open full screen when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:710 msgid "Print javascript alert and console messages to the console" msgstr "Skriv ut javascriptadvarsel og konsollmeldinger til konsollen" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:716 msgid "" "%prog [options] file\n" "\n" @@ -14213,6 +14301,9 @@ msgstr "Ikke last ned CSS stilsett" #~ "Standard: %default\n" #~ "Gjelder: CSV, XML utdataformater" +#~ msgid " " +#~ msgstr " " + #~ msgid "Set font delta" #~ msgstr "Sett tegnsett delta" @@ -14244,6 +14335,17 @@ msgstr "Ikke last ned CSS stilsett" #~ "- Et regex-mønster av et enslig punktum ekskluderer alle genre av emneord, " #~ "ved å utelate Genre Område" +#~ msgid "" +#~ "Regular expression: the expression must match anywhere in the metadata" +#~ msgstr "Vanlig uttrykk: utrykket må samsvare alle steder i metadata" + +#~ msgid "Contains: the word or phrase matches anywhere in the metadata" +#~ msgstr "Inneholder: ord eller frase som samsvarer alle steder i metadata" + +#~ msgid "Equals: the word or phrase must match an entire metadata field" +#~ msgstr "" +#~ "Samsvarer med: ordet eller frasen må samsvare med hele metadatafeltet" + #~ msgid "Communicate with the Teclast K3 reader." #~ msgstr "Kommuniser med Teclast K3 leser" From a55b4dbbac65ef083d3af4943243f9b6e092d227 Mon Sep 17 00:00:00 2001 From: ldolse Date: Wed, 17 Nov 2010 13:49:12 +0800 Subject: [PATCH 031/377] remove extra line feeds from html comments when sanitizing --- src/calibre/library/comments.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/calibre/library/comments.py b/src/calibre/library/comments.py index 83eec89abe..00a6ef55ae 100644 --- a/src/calibre/library/comments.py +++ b/src/calibre/library/comments.py @@ -131,7 +131,8 @@ def comments_to_html(comments): def sanitize_comments_html(html): text = html2text(html) md = markdown.Markdown(safe_mode=True) - return md.convert(text) + cleansed = re.sub('\n+', '', md.convert(text)) + return cleansed def test(): for pat, val in [ From b03b8023943417dc544f70bd470ba5f61c59d848 Mon Sep 17 00:00:00 2001 From: ldolse Date: Wed, 17 Nov 2010 14:12:14 +0800 Subject: [PATCH 032/377] adjusted css to compact the comments display --- src/calibre/gui2/book_details.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/calibre/gui2/book_details.py b/src/calibre/gui2/book_details.py index e193fe10b2..8cc2965171 100644 --- a/src/calibre/gui2/book_details.py +++ b/src/calibre/gui2/book_details.py @@ -221,6 +221,8 @@ class BookInfo(QWebView): From fb124c50a767956abcadec577fe10ad1e0e4ae80 Mon Sep 17 00:00:00 2001 From: ldolse Date: Wed, 17 Nov 2010 17:55:50 +0800 Subject: [PATCH 033/377] added negative lookahead to reduce false positive matches during chapter marking --- src/calibre/ebooks/conversion/utils.py | 54 +++++++++++++++++--------- 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/src/calibre/ebooks/conversion/utils.py b/src/calibre/ebooks/conversion/utils.py index bec15924d6..ac38a0097d 100644 --- a/src/calibre/ebooks/conversion/utils.py +++ b/src/calibre/ebooks/conversion/utils.py @@ -83,6 +83,24 @@ class PreProcessor(object): if min_lns > tot_htm_ends: return True + def dump(self, raw, where): + import os + dp = getattr(self.extra_opts, 'debug_pipeline', None) + if dp and os.path.exists(dp): + odir = os.path.join(dp, 'preprocess') + if not os.path.exists(odir): + os.makedirs(odir) + if os.path.exists(odir): + odir = os.path.join(odir, where) + if not os.path.exists(odir): + os.makedirs(odir) + name, i = None, 0 + while not name or os.path.exists(os.path.join(odir, name)): + i += 1 + name = '%04d.html'%i + with open(os.path.join(odir, name), 'wb') as f: + f.write(raw.encode('utf-8')) + def __call__(self, html): self.log("********* Preprocessing HTML *********") @@ -150,7 +168,7 @@ class PreProcessor(object): #print "blanks between paragraphs is marked True" else: blanks_between_paragraphs = False - #self.log("\n\n\n\n\n\n\n\n\n\n\n"+html+"\n\n\n\n\n\n\n\n\n\n\n\n\n") + #self.dump(html, 'before_chapter_markup') # detect chapters/sections to match xpath or splitting logic # # Build the Regular Expressions in pieces @@ -158,7 +176,7 @@ class PreProcessor(object): chapter_line_open = "<(?Pp|div)[^>]*>\s*(<(?Pfont|span|[ibu])[^>]*>)?\s*(<(?Pfont|span|[ibu])[^>]*>)?\s*(<(?Pfont|span|[ibu])[^>]*>)?\s*" chapter_header_open = r"(?P" chapter_header_close = ")\s*" - chapter_line_close = "()?\s*()?\s*()?\s*\s*" + chapter_line_close = "()?\s*()?\s*()?\s*" if blanks_between_paragraphs: blank_lines = "(\s*]*>\s*

    ){0,2}\s*" else: @@ -169,7 +187,7 @@ class PreProcessor(object): title_header_close = ")\s*" title_line_close = "()?\s*()?\s*(]*>)?\s*" opt_title_close = ")?" - n_lookahead_open = "(?!=" + n_lookahead_open = "\s+(?!" n_lookahead_close = ")" default_title = r"(\s*[\w\'\"-]+){1,5}?(?=<)" @@ -181,10 +199,10 @@ class PreProcessor(object): full_chapter_line = chapter_line_open+chapter_header_open+typical_chapters+chapter_header_close+chapter_line_close n_lookahead = re.sub("(ou|in|cha)", "lookahead_", full_chapter_line) - print "n_lookahead is " + n_lookahead - print "Chapter line is " + full_chapter_line + "\n\n" + #print "n_lookahead is:\n" + n_lookahead + "\n\n" + #print "'normal' Chapter line - no title - is:\n" + full_chapter_line + "\n\n" chapter_marker = lookahead+full_chapter_line+blank_lines+n_lookahead_open+n_lookahead+n_lookahead_close+opt_title_open+title_line_open+title_header_open+default_title+title_header_close+title_line_close+opt_title_close - print chapter_marker + #print "full chapter regex with lookahead is:\n" + chapter_marker + "\n\n" heading = re.compile(']*>', re.IGNORECASE) self.html_preprocess_sections = len(heading.findall(html)) self.log("found " + unicode(self.html_preprocess_sections) + " pre-existing headings") @@ -197,10 +215,10 @@ class PreProcessor(object): self.log("not enough chapters, only " + unicode(self.html_preprocess_sections) + ", trying numeric chapters") full_chapter_line = chapter_line_open+chapter_header_open+numeric_chapters+chapter_header_close+chapter_line_close n_lookahead = re.sub("(ou|in|cha)", "lookahead_", full_chapter_line) - print "n_lookahead is " + n_lookahead - print "Chapter line is " + full_chapter_line + "\n\n" + #print "n_lookahead is " + n_lookahead + #print "Chapter line is " + full_chapter_line + "\n\n" chapter_marker = lookahead+full_chapter_line+blank_lines+n_lookahead_open+n_lookahead+n_lookahead_close+opt_title_open+title_line_open+title_header_open+default_title+title_header_close+title_line_close+opt_title_close - print chapter_marker + #print chapter_marker chapdetect2 = re.compile(r'%s' % chapter_marker, re.IGNORECASE) html = chapdetect2.sub(self.chapter_head, html) @@ -208,10 +226,10 @@ class PreProcessor(object): self.log("not enough chapters, only " + unicode(self.html_preprocess_sections) + ", trying emphazised lines") full_chapter_line = chapter_line_open+chapter_header_open+emphasized_lines+chapter_header_close+chapter_line_close n_lookahead = re.sub("(ou|in|cha)", "lookahead_", full_chapter_line) - print "n_lookahead is " + n_lookahead - print "Chapter line is " + full_chapter_line + "\n\n" + #print "n_lookahead is " + n_lookahead + #print "Chapter line is " + full_chapter_line + "\n\n" chapter_marker = lookahead+full_chapter_line+blank_lines+n_lookahead_open+n_lookahead+n_lookahead_close+opt_title_open+title_line_open+title_header_open+default_title+title_header_close+title_line_close+opt_title_close - print chapter_marker + #print chapter_marker chapdetect2 = re.compile(r'%s' % chapter_marker, re.IGNORECASE) html = chapdetect2.sub(self.chapter_head, html) @@ -219,10 +237,10 @@ class PreProcessor(object): self.log("not enough chapters, only " + unicode(self.html_preprocess_sections) + ", trying with uppercase words") full_chapter_line = chapter_line_open+chapter_header_open+uppercase_chapters+chapter_header_close+chapter_line_close n_lookahead = re.sub("(ou|in|cha)", "lookahead_", full_chapter_line) - print "n_lookahead is " + n_lookahead - print "Chapter line is " + full_chapter_line + "\n\n" + #print "n_lookahead is " + n_lookahead + #print "Chapter line is " + full_chapter_line + "\n\n" chapter_marker = lookahead+full_chapter_line+blank_lines+n_lookahead_open+n_lookahead+n_lookahead_close+opt_title_open+title_line_open+title_header_open+default_title+title_header_close+title_line_close+opt_title_close - print chapter_marker + #print chapter_marker chapdetect2 = re.compile(r'%s' % chapter_marker, re.UNICODE) html = chapdetect2.sub(self.chapter_head, html) @@ -230,10 +248,10 @@ class PreProcessor(object): self.log("not enough chapters, only " + unicode(self.html_preprocess_sections) + ", trying numeric chapters with titles") full_chapter_line = chapter_line_open+chapter_header_open+numeric_titles+chapter_header_close+chapter_line_close n_lookahead = re.sub("(ou|in|cha)", "lookahead_", full_chapter_line) - print "n_lookahead is " + n_lookahead - print "Chapter line is " + full_chapter_line + "\n\n" + #print "n_lookahead is " + n_lookahead + #print "Chapter line is " + full_chapter_line + "\n\n" chapter_marker = lookahead+full_chapter_line+blank_lines+n_lookahead_open+n_lookahead+n_lookahead_close+opt_title_open+title_line_open+title_header_open+default_title+title_header_close+title_line_close+opt_title_close - print chapter_marker + #print chapter_marker chapdetect2 = re.compile(r'%s' % chapter_marker, re.IGNORECASE) html = chapdetect2.sub(self.chapter_head, html) From 6cca4b4d97d2afb2e91d368faaacb7ec79740c6a Mon Sep 17 00:00:00 2001 From: GRiker Date: Wed, 17 Nov 2010 03:58:40 -0700 Subject: [PATCH 034/377] GwR updates to catalog --- resources/catalog/stylesheet.css | 5 ++--- src/calibre/library/catalog.py | 29 +++++++++++++++-------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/resources/catalog/stylesheet.css b/resources/catalog/stylesheet.css index d3d093743a..057c6c9f42 100644 --- a/resources/catalog/stylesheet.css +++ b/resources/catalog/stylesheet.css @@ -41,12 +41,11 @@ p.formats { text-indent: 0.0in; } -/* div.description > p:first-child { margin: 0 0 0 0; text-indent: 0em; } -*/ + div.description { margin: 0 0 0 0; text-indent: 1em; @@ -133,5 +132,5 @@ td.rating { text-align: center; } td.thumbnail img { - -webkit-box-shadow: 6px 6px 6px #888; + -webkit-box-shadow: 4px 4px 12px #999; } \ No newline at end of file diff --git a/src/calibre/library/catalog.py b/src/calibre/library/catalog.py index 2008d20c8f..1734e14d1d 100644 --- a/src/calibre/library/catalog.py +++ b/src/calibre/library/catalog.py @@ -1870,7 +1870,7 @@ class EPUB_MOBI(CatalogPlugin): ptc = 0 # book with read|reading|unread symbol or wishlist item - if self.opts.wishlist_tag in book['tags']: + if self.opts.wishlist_tag in book.get('tags', []): pBookTag['class'] = "wishlist_item" pBookTag.insert(ptc,NavigableString(self.MISSING_SYMBOL)) ptc += 1 @@ -2177,7 +2177,7 @@ class EPUB_MOBI(CatalogPlugin): ptc = 0 # book with read|reading|unread symbol or wishlist item - if self.opts.wishlist_tag in new_entry['tags']: + if self.opts.wishlist_tag in new_entry.get('tags', []): pBookTag['class'] = "wishlist_item" pBookTag.insert(ptc,NavigableString(self.MISSING_SYMBOL)) ptc += 1 @@ -2228,7 +2228,7 @@ class EPUB_MOBI(CatalogPlugin): ptc = 0 # book with read|reading|unread symbol or wishlist item - if self.opts.wishlist_tag in new_entry['tags']: + if self.opts.wishlist_tag in new_entry.get('tags', []): pBookTag['class'] = "wishlist_item" pBookTag.insert(ptc,NavigableString(self.MISSING_SYMBOL)) ptc += 1 @@ -2682,7 +2682,7 @@ class EPUB_MOBI(CatalogPlugin): book['read'] = False # book with read|reading|unread symbol or wishlist item - if self.opts.wishlist_tag in book['tags']: + if self.opts.wishlist_tag in book.get('tags', []): pBookTag['class'] = "wishlist_item" pBookTag.insert(ptc,NavigableString(self.MISSING_SYMBOL)) ptc += 1 @@ -3975,7 +3975,7 @@ class EPUB_MOBI(CatalogPlugin): for x in output_profiles(): if x.short_name == self.opts.output_profile: # .9" width aspect ratio: 3:4 - self.thumbWidth = int(x.dpi * .9) + self.thumbWidth = int(x.dpi * 1) self.thumbHeight = int(self.thumbWidth * 1.33) if 'kindle' in x.short_name and self.opts.fmt == 'mobi': # Kindle DPI appears to be off by a factor of 2 @@ -4180,7 +4180,8 @@ class EPUB_MOBI(CatalogPlugin): pBookTag = Tag(soup, "p") ptc = 0 - # book with read|reading|unread symbol or wishlist item + ''' + # This if clause does not display MISSING_SYMBOL for wishlist items # If this is the wishlist_tag genre, don't show missing symbols # normalized_wishlist_tag = self.genre_tags_dict[self.opts.wishlist_tag] if self.opts.wishlist_tag in book['tags'] and \ @@ -4188,6 +4189,13 @@ class EPUB_MOBI(CatalogPlugin): pBookTag['class'] = "wishlist_item" pBookTag.insert(ptc,NavigableString(self.MISSING_SYMBOL)) ptc += 1 + ''' + + # book with read|reading|unread symbol or wishlist item + if self.opts.wishlist_tag in book.get('tags', []): + pBookTag['class'] = "wishlist_item" + pBookTag.insert(ptc,NavigableString(self.MISSING_SYMBOL)) + ptc += 1 else: if book['read']: # check mark @@ -4252,32 +4260,25 @@ class EPUB_MOBI(CatalogPlugin):

     

    - - + - - - - - -
     
     
     
    From b238903ba81af83b3a7246cdf5d4d839a48f0d9b Mon Sep 17 00:00:00 2001 From: ldolse Date: Wed, 17 Nov 2010 19:27:51 +0800 Subject: [PATCH 035/377] minor tweaks to chapter marking --- src/calibre/ebooks/conversion/utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/calibre/ebooks/conversion/utils.py b/src/calibre/ebooks/conversion/utils.py index ac38a0097d..fffb0d75d4 100644 --- a/src/calibre/ebooks/conversion/utils.py +++ b/src/calibre/ebooks/conversion/utils.py @@ -195,7 +195,7 @@ class PreProcessor(object): numeric_chapters = r".?(\d+\.?|(CHAPTER\s*([\dA-Z\-\'\"\?\.!#,]+\s*){1,10}))\s*" uppercase_chapters = r"\s*.?([A-Z#]+(\s|-){0,3}){1,5}\s*" numeric_titles = r".?(\d+\.?\s+([\d\w-]+\:?\'?-?\s?){0,5})\s*" - emphasized_lines = r"]*>\s*(]*>)?\s*(\s*(?=[\w#\-*\s]+<)([\w#-*]+\s*){1,5}\s*)()?\s*
    " + emphasized_lines = r"]*>\s*(]*>)?\s*(?!([*#•]+\s*)+)(\s*(?=[\w#\-*\s]+<)([\w#-*]+\s*){1,5}\s*)()?\s*" full_chapter_line = chapter_line_open+chapter_header_open+typical_chapters+chapter_header_close+chapter_line_close n_lookahead = re.sub("(ou|in|cha)", "lookahead_", full_chapter_line) @@ -308,10 +308,10 @@ class PreProcessor(object): html = re.sub(u'\xad\s*(\s*(\s*<[iubp][^>]*>\s*)?]*>|\s*<[iubp][^>]*>)?\s*', '', html) # If still no sections after unwrapping mark split points on lines with no punctuation - if self.html_preprocess_sections < 10: + if self.html_preprocess_sections < 5: self.log("Looking for more split points based on punctuation," " currently have " + unicode(self.html_preprocess_sections)) - chapdetect3 = re.compile(r'<(?P(p|div)[^>]*)>\s*(?P
    (]*>)?\s*(<[ibu][^>]*>){0,2}\s*(]*>)?\s*(<[ibu][^>]*>){0,2}\s*(]*>)?\s*.?(?=[a-z#\-*\s]+<)([a-z#-*]+\s*){1,5}\s*\s*()?(){0,2}\s*()?\s*(){0,2}\s*()?\s*)', re.IGNORECASE) + chapdetect3 = re.compile(r'<(?P(p|div)[^>]*)>\s*(?P
    (]*>)?\s*(?!([*#•]+\s*)+)(<[ibu][^>]*>){0,2}\s*(]*>)?\s*(<[ibu][^>]*>){0,2}\s*(]*>)?\s*.?(?=[a-z#\-*\s]+<)([a-z#-*]+\s*){1,5}\s*\s*()?(){0,2}\s*()?\s*(){0,2}\s*()?\s*)', re.IGNORECASE) html = chapdetect3.sub(self.chapter_break, html) # search for places where a first or second level heading is immediately followed by another # top level heading. demote the second heading to h3 to prevent splitting between chapter From d18cf9a25b2f844a433d70f444d50d6908e27586 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 17 Nov 2010 08:25:55 -0700 Subject: [PATCH 036/377] ... --- src/calibre/library/catalog.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/library/catalog.py b/src/calibre/library/catalog.py index 1734e14d1d..19519d6d71 100644 --- a/src/calibre/library/catalog.py +++ b/src/calibre/library/catalog.py @@ -1707,7 +1707,7 @@ class EPUB_MOBI(CatalogPlugin): ttc += 1 ''' - for tag in title['tags']: + for tag in title.get('tags', []): aTag = Tag(soup,'a') #print "aTag: %s" % "Genre_%s.html" % re.sub("\W","",tag.lower()) aTag['href'] = "Genre_%s.html" % re.sub("\W","",tag.lower()) From 1a3f4fd5d87631e1065e3b637a3d22e36343844e Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 17 Nov 2010 09:29:35 -0700 Subject: [PATCH 037/377] RTF Input: Improved conversion of tables, with support for border styles --- resources/templates/rtf.xsl | 7 +++- src/calibre/ebooks/rtf/input.py | 65 ++++++++++++++++++++++++++++++++- 2 files changed, 68 insertions(+), 4 deletions(-) diff --git a/resources/templates/rtf.xsl b/resources/templates/rtf.xsl index bf016efaaf..ea1fc71172 100644 --- a/resources/templates/rtf.xsl +++ b/resources/templates/rtf.xsl @@ -363,13 +363,16 @@ - + - + + + + diff --git a/src/calibre/ebooks/rtf/input.py b/src/calibre/ebooks/rtf/input.py index 078b30627f..32de91c011 100644 --- a/src/calibre/ebooks/rtf/input.py +++ b/src/calibre/ebooks/rtf/input.py @@ -9,6 +9,36 @@ from lxml import etree from calibre.customize.conversion import InputFormatPlugin from calibre.ebooks.conversion.utils import PreProcessor +border_style_map = { + 'single' : 'solid', + 'double-thickness-border' : 'double', + 'shadowed-border': 'outset', + 'double-border': 'double', + 'dotted-border': 'dotted', + 'dashed': 'dashed', + 'hairline': 'solid', + 'inset': 'inset', + 'dash-small': 'dashed', + 'dot-dash': 'dotted', + 'dot-dot-dash': 'dotted', + 'outset': 'outset', + 'tripple': 'double', + 'thick-thin-small': 'solid', + 'thin-thick-small': 'solid', + 'thin-thick-thin-small': 'solid', + 'thick-thin-medium': 'solid', + 'thin-thick-medium': 'solid', + 'thin-thick-thin-medium': 'solid', + 'thick-thin-large': 'solid', + 'thin-thick-thin-large': 'solid', + 'wavy': 'ridge', + 'double-wavy': 'ridge', + 'striped': 'ridge', + 'emboss': 'inset', + 'engrave': 'inset', + 'frame': 'ridge', +} + class InlineClass(etree.XSLTExtension): FMTS = ('italics', 'bold', 'underlined', 'strike-through', 'small-caps') @@ -137,7 +167,7 @@ class RTFInput(InputFormatPlugin): return name - def write_inline_css(self, ic): + def write_inline_css(self, ic, border_styles): font_size_classes = ['span.fs%d { font-size: %spt }'%(i, x) for i, x in enumerate(ic.font_sizes)] color_classes = ['span.col%d { color: %s }'%(i, x) for i, x in @@ -161,6 +191,10 @@ class RTFInput(InputFormatPlugin): ''') css += '\n'+'\n'.join(font_size_classes) css += '\n' +'\n'.join(color_classes) + + for cls, val in border_styles.items(): + css += '\n\n.%s {\n%s\n}'%(cls, val) + with open('styles.css', 'ab') as f: f.write(css) @@ -180,6 +214,32 @@ class RTFInput(InputFormatPlugin): 'Failed to preprocess RTF to convert unicode sequences, ignoring...') return fname + def convert_borders(self, doc): + border_styles = [] + style_map = {} + for elem in doc.xpath(r'//*[local-name()="cell"]'): + style = ['border-style: hidden', 'border-width: 1px', + 'border-color: black'] + for x in ('bottom', 'top', 'left', 'right'): + bs = elem.get('border-cell-%s-style'%x, None) + if bs: + cbs = border_style_map.get(bs, 'solid') + style.append('border-%s-style: %s'%(x, cbs)) + bw = elem.get('border-cell-%s-line-width'%x, None) + if bw: + style.append('border-%s-width: %spt'%(x, bw)) + bc = elem.get('border-cell-%s-color'%x, None) + if bc: + style.append('border-%s-color: %s'%(x, bc)) + style = ';\n'.join(style) + if style not in border_styles: + border_styles.append(style) + idx = border_styles.index(style) + cls = 'border_style%d'%idx + style_map[cls] = style + elem.set('class', cls) + return style_map + def convert(self, stream, options, file_ext, log, accelerators): from calibre.ebooks.metadata.meta import get_metadata @@ -211,6 +271,7 @@ class RTFInput(InputFormatPlugin): self.log('Parsing XML...') parser = etree.XMLParser(recover=True, no_network=True) doc = etree.fromstring(xml, parser=parser) + border_styles = self.convert_borders(doc) for pict in doc.xpath('//rtf:pict[@num]', namespaces={'rtf':'http://rtf2xml.sourceforge.net/'}): num = int(pict.get('num')) @@ -232,7 +293,7 @@ class RTFInput(InputFormatPlugin): preprocessor = PreProcessor(self.options, log=getattr(self, 'log', None)) res = preprocessor(res) f.write(res) - self.write_inline_css(inline_class) + self.write_inline_css(inline_class, border_styles) stream.seek(0) mi = get_metadata(stream, 'rtf') if not mi.title: From 9b7f64d3c8eb7f35e4e2ecd18b12606cfadf2ac1 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 17 Nov 2010 09:35:57 -0700 Subject: [PATCH 038/377] EPUB Output: Do not raise an error for invalid embedded fonts in the input document. Fixes #7567 (operation failed) --- src/calibre/ebooks/epub/output.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/calibre/ebooks/epub/output.py b/src/calibre/ebooks/epub/output.py index 952559a9e2..17f6eb9f46 100644 --- a/src/calibre/ebooks/epub/output.py +++ b/src/calibre/ebooks/epub/output.py @@ -241,9 +241,12 @@ class EPUBOutput(OutputFormatPlugin): self.log.debug('Encrypting font:', uri) with open(path, 'r+b') as f: data = f.read(1024) - f.seek(0) - for i in range(1024): - f.write(chr(ord(data[i]) ^ key[i%16])) + if len(data) >= 1024: + f.seek(0) + for i in range(1024): + f.write(chr(ord(data[i]) ^ key[i%16])) + else: + self.log.warn('Font', path, 'is invalid, ignoring') if not isinstance(uri, unicode): uri = uri.decode('utf-8') fonts.append(u''' From 506a225530f4730615dc8350a74313d7652b7241 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 17 Nov 2010 10:34:35 -0700 Subject: [PATCH 039/377] ... --- resources/recipes/irish_times.recipe | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/resources/recipes/irish_times.recipe b/resources/recipes/irish_times.recipe index 14f31cf45f..0ac130ed7a 100644 --- a/resources/recipes/irish_times.recipe +++ b/resources/recipes/irish_times.recipe @@ -13,7 +13,6 @@ class IrishTimes(BasicNewsRecipe): language = 'en_IE' timefmt = ' (%A, %B %d, %Y)' - oldest_article = 3 no_stylesheets = True simultaneous_downloads= 1 @@ -35,12 +34,11 @@ class IrishTimes(BasicNewsRecipe): def print_version(self, url): if url.count('rss.feedsportal.com'): - u = 'http://www.irishtimes.com' + \ - (((url[69:].replace('0C','/')).replace('0A','0'))).replace('0Bhtml/story01..htm','_pf.html') + u = 'http://www.irishtimes.com' + \ + (((url[69:].replace('0C','/')).replace('0A','0'))).replace('0Bhtml/story01.htm','_pf.html') else: u = url.replace('.html','_pf.html') return u - def get_article_url(self, article): return article.link From 05fb9ee82657bf281215f8eb30f7f042b44c6d93 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 17 Nov 2010 11:14:02 -0700 Subject: [PATCH 040/377] Content server: Allow direct navigation to a set of books in the book list. Fixes #7453 (Paginating of Content Server) --- resources/content_server/browse/browse.css | 19 ++++++++++++ resources/content_server/browse/browse.html | 1 + resources/content_server/browse/browse.js | 23 ++++++++++++++ src/calibre/library/server/browse.py | 34 +++++++++++++++++---- 4 files changed, 71 insertions(+), 6 deletions(-) diff --git a/resources/content_server/browse/browse.css b/resources/content_server/browse/browse.css index 1243795e55..75832e47f9 100644 --- a/resources/content_server/browse/browse.css +++ b/resources/content_server/browse/browse.css @@ -355,6 +355,25 @@ h2.library_name { color: red; } +#booklist > #pagelist { display: none; } + +#goto_page_dialog ul { + list-style-type: none; + font-size: medium; +} + +#goto_page_dialog li { + margin-bottom: 1.5ex; +} + +#goto_page_dialog a { + text-decoration: none; + color: blue; +} + +#goto_page_dialog a:hover { + color: red; +} #booklist .left .ui-button-text { font-size: medium; diff --git a/resources/content_server/browse/browse.html b/resources/content_server/browse/browse.html index 6d4c79c4c9..de78e432d7 100644 --- a/resources/content_server/browse/browse.html +++ b/resources/content_server/browse/browse.html @@ -96,5 +96,6 @@
    +
    diff --git a/resources/content_server/browse/browse.js b/resources/content_server/browse/browse.js index e0585a9afd..2d9bc01082 100644 --- a/resources/content_server/browse/browse.js +++ b/resources/content_server/browse/browse.js @@ -202,6 +202,23 @@ function previous_page() { else last_page(); } +function gp_internal(id) { + var gp = $('#goto_page_dialog'); + gp.dialog('close'); + var elem = $("#booklist #" + id); + load_page(elem); +} + +function goto_page() { + var gp = $('#goto_page_dialog'); + var pl = $('#booklist > #pagelist'); + gp.html(pl.html()); + gp.dialog('option', 'title', pl.attr('title')); + gp.dialog('option', 'height', $(window).height() - 100); + gp.dialog('open'); + +} + function load_page(elem) { if (elem.is(":visible")) return; var ld = elem.find('.load_data'); @@ -251,6 +268,12 @@ function booklist(hide_sort) { modal: true, show: 'slide' }); + $("#goto_page_dialog").dialog({ + autoOpen: false, + modal: true, + show: 'slide' + }); + first_page(); } diff --git a/src/calibre/library/server/browse.py b/src/calibre/library/server/browse.py index 5609416273..db5c83689b 100644 --- a/src/calibre/library/server/browse.py +++ b/src/calibre/library/server/browse.py @@ -43,18 +43,33 @@ def render_book_list(ids, prefix, suffix=''): # {{{
    ''' - rpages = [] + pagelist_template = u'''\ +
    +
      + {pages} +
    +
    + ''' + rpages, lpages = [], [] for i, x in enumerate(pages): pg, pos = x ld = xml(json.dumps(pg), True) + start, end = pos+1, pos+len(pg) rpages.append(page_template.format(i, ld, xml(_('Loading, please wait')) + '…', - start=pos+1, end=pos+len(pg), prefix=prefix)) + start=start, end=end, prefix=prefix)) + lpages.append(' '*20 + (u'
  • ' + '{start} to {end}
  • ').format(start=start, end=end, + id='page%d'%i)) rpages = u'\n\n'.join(rpages) + lpages = u'\n'.join(lpages) + pagelist = pagelist_template.format(pages=lpages) templ = u'''\

    {0} {suffix}

    +
    {pagelist}
    {navbar}
    @@ -64,24 +79,31 @@ def render_book_list(ids, prefix, suffix=''): # {{{
    ''' - + gp_start = gp_end = '' + if len(pages) > 1: + gp_start = '' % \ + (_('Go to') + '…') + gp_end = '' navbar = u'''\ '''.format(first=_('First'), last=_('Last'), previous=_('Previous'), - next=_('Next'), num=num) + next=_('Next'), num=num, gp_start=gp_start, gp_end=gp_end) return templ.format(_('Browsing %d books')%num, suffix=suffix, - pages=rpages, navbar=navbar) + pages=rpages, navbar=navbar, pagelist=pagelist, + goto=xml(_('Go to'), True) + '…') # }}} From 0e715238c706131ebb4996dd6454402a33e50352 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 17 Nov 2010 12:42:48 -0700 Subject: [PATCH 041/377] Fix #7385 (Calibre-Server does not work with userid/password) --- src/calibre/library/server/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/library/server/base.py b/src/calibre/library/server/base.py index 29636c5659..711fcf03d8 100644 --- a/src/calibre/library/server/base.py +++ b/src/calibre/library/server/base.py @@ -147,7 +147,7 @@ class LibraryServer(ContentServer, MobileServer, XMLServer, OPDSServer, Cache, self.config['/'] = { 'tools.digest_auth.on' : True, 'tools.digest_auth.realm' : ( - _('Password to access your calibre library. Username is ') + 'Password to access your calibre library. Username is ' + opts.username.strip()), 'tools.digest_auth.users' : {opts.username.strip():opts.password.strip()}, } From 67cd41100310bddff74d02faf6e1d394430ccfe5 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 17 Nov 2010 12:51:52 -0700 Subject: [PATCH 042/377] Tweak formatting of comments downloaded from Amazon --- src/calibre/library/comments.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/calibre/library/comments.py b/src/calibre/library/comments.py index 83eec89abe..00a6ef55ae 100644 --- a/src/calibre/library/comments.py +++ b/src/calibre/library/comments.py @@ -131,7 +131,8 @@ def comments_to_html(comments): def sanitize_comments_html(html): text = html2text(html) md = markdown.Markdown(safe_mode=True) - return md.convert(text) + cleansed = re.sub('\n+', '', md.convert(text)) + return cleansed def test(): for pat, val in [ From 967152e5d8f26863b6125dc64d8485bff00ca3f5 Mon Sep 17 00:00:00 2001 From: Translators <> Date: Thu, 18 Nov 2010 04:45:08 +0000 Subject: [PATCH 043/377] Launchpad automatic translations update. --- src/calibre/translations/cs.po | 18 +- src/calibre/translations/gl.po | 1269 ++++++++++++++++++-------------- 2 files changed, 740 insertions(+), 547 deletions(-) diff --git a/src/calibre/translations/cs.po b/src/calibre/translations/cs.po index 0697578190..17629ff04e 100644 --- a/src/calibre/translations/cs.po +++ b/src/calibre/translations/cs.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-11-12 23:11+0000\n" -"PO-Revision-Date: 2010-11-16 19:32+0000\n" -"Last-Translator: Marek Sušický \n" +"PO-Revision-Date: 2010-11-17 17:23+0000\n" +"Last-Translator: Aleš Bajtalon \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-17 04:49+0000\n" +"X-Launchpad-Export-Date: 2010-11-18 04:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -11392,7 +11392,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/database2.py:2350 msgid "Copying %s" -msgstr "" +msgstr "Kopírování %s" #: /home/kovid/work/calibre/src/calibre/library/database2.py:2367 msgid "Compacting database" @@ -11645,7 +11645,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:226 msgid "Popularity" -msgstr "" +msgstr "Oblíbenost" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:245 msgid "Sort by" @@ -11712,7 +11712,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:630 msgid "A permanent link to this book" -msgstr "" +msgstr "Trvalý odkaz k této knize" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:641 msgid "This book has been deleted" @@ -11745,7 +11745,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/server/main.py:54 msgid "Write process PID to the specified file" -msgstr "" +msgstr "Zapsat proces PID do zadaného souboru" #: /home/kovid/work/calibre/src/calibre/library/server/main.py:58 msgid "" @@ -11758,6 +11758,8 @@ msgid "" "Auto reload server when source code changes. May not work in all " "environments." msgstr "" +"Automaticky znovu načíst server při změně zdrojového kódu. Nemusí fungovat " +"ve všech prostředích." #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:112 msgid "%d book" @@ -11819,7 +11821,7 @@ msgstr "Přístupový klíč pro isbndb.com" #: /home/kovid/work/calibre/src/calibre/utils/config.py:703 msgid "Default timeout for network operations (seconds)" -msgstr "" +msgstr "Výchozí hodnota časového limitu pro síťové operace (v sekundách)" #: /home/kovid/work/calibre/src/calibre/utils/config.py:705 msgid "Path to directory in which your library of books is stored" diff --git a/src/calibre/translations/gl.po b/src/calibre/translations/gl.po index 276041a1da..f98da72b60 100644 --- a/src/calibre/translations/gl.po +++ b/src/calibre/translations/gl.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2010-10-29 19:59+0000\n" -"PO-Revision-Date: 2010-10-29 19:53+0000\n" +"POT-Creation-Date: 2010-11-12 23:11+0000\n" +"PO-Revision-Date: 2010-11-17 13:47+0000\n" "Last-Translator: Antón Méixome \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-10-30 05:03+0000\n" +"X-Launchpad-Export-Date: 2010-11-18 04:45+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -31,7 +31,7 @@ msgstr "Non facer nada" #: /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/sony_cache.py:643 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:650 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 @@ -40,8 +40,8 @@ msgstr "Non facer nada" #: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:124 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:93 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:95 -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:336 -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:339 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:343 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:346 #: /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 @@ -55,7 +55,7 @@ msgstr "Non facer nada" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:36 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:61 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:50 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:333 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:354 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:36 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 @@ -74,14 +74,14 @@ msgstr "Non facer nada" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:78 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:119 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:153 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:611 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:817 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:819 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:620 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:826 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:828 #: /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:911 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:916 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:982 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:913 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:918 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:984 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:143 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:150 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:64 @@ -113,27 +113,27 @@ msgstr "Non facer nada" #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:241 #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:356 #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:363 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:277 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:280 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:279 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:282 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:137 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:144 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:114 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:141 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:915 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:924 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1231 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1234 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:927 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:936 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1249 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1252 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:571 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:383 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:402 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:925 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1119 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:395 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:918 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1112 #: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:112 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:189 #: /home/kovid/work/calibre/src/calibre/library/cli.py:215 @@ -145,7 +145,7 @@ msgstr "Non facer nada" #: /home/kovid/work/calibre/src/calibre/library/database2.py:2161 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2163 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2295 -#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:228 +#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:229 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:139 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:142 #: /home/kovid/work/calibre/src/calibre/library/server/xml.py:78 @@ -192,7 +192,7 @@ msgstr "Acción da interface de usuario" msgid "Preferences" msgstr "Preferencias" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:17 +#: /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 " @@ -202,7 +202,7 @@ msgstr "" "todos os ficheiros ligados. Este engadido execútase cada vez que se engade " "un ficheiro HTML á biblioteca." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:53 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:51 msgid "" "Character encoding for the input HTML files. Common choices include: cp1252, " "latin1, iso-8859-1 and utf-8." @@ -210,7 +210,7 @@ msgstr "" "Codificación de caracteres para os ficheiros HTML de orixe. As opcións " "comúns inclúen: cp1252, latin1, iso-8859-1 e utf-8." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:60 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:58 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 " @@ -220,7 +220,7 @@ msgstr "" "cartafol pmlname_img ou imaxes. Este engadido execútase cada vez que engade " "un ficheiro PML á biblioteca." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:94 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:92 msgid "Extract cover from comic files" msgstr "Extrae a portada dos ficheiros de banda deseñada" @@ -267,45 +267,45 @@ msgstr "Define os metadatos nos ficheiros %s" msgid "Set metadata from %s files" msgstr "Define os metadatos desde os ficheiros %s" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:708 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:712 msgid "Look and Feel" msgstr "Aparencia e comportamento" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:710 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:722 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:733 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:744 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:714 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:726 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:737 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:748 msgid "Interface" msgstr "Interface" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:714 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:718 msgid "Adjust the look and feel of the calibre interface to suit your tastes" msgstr "" "Axuste a aparencia e comportamento da interface do Calibre para que se " "adapte aos seus gustos" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:720 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:724 msgid "Behavior" msgstr "Comportamento" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:726 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:730 msgid "Change the way calibre behaves" msgstr "Cambiar o modo en que se comporta o Calibre" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:731 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:209 msgid "Add your own columns" msgstr "Engadir as súas propias columnas" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:737 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:741 msgid "Add/remove your own columns to the calibre book list" msgstr "Engadir/retirar as columnas propias da lista de libros do Calibre" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:742 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746 msgid "Customize the toolbar" msgstr "Personalizar a barra de ferramentas" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:748 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:752 msgid "" "Customize the toolbars and context menus, changing which actions are " "available in each" @@ -313,60 +313,60 @@ msgstr "" "Personalizar as barras de ferramentas e os menús de contexto, cambiando as " "accións que estarán dispoñíbeis en cada un" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:754 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:758 msgid "Input Options" msgstr "Opcións de entrada" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:756 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:767 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:778 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:760 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:771 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:782 msgid "Conversion" msgstr "Conversión" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:760 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:764 msgid "Set conversion options specific to each input format" msgstr "" "Estabelecer as opcións de conversión específicas para cada formato de entrada" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:765 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769 msgid "Common Options" msgstr "Opcións comúns" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:771 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:775 msgid "Set conversion options common to all formats" msgstr "Estabelecer as opcións de conversión comúns para todos os formatos" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:776 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780 msgid "Output Options" msgstr "Opcións de saída" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:782 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:786 msgid "Set conversion options specific to each output format" msgstr "" "Estabelece as opcións específicas de conversión para cada formato de saída" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:787 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791 msgid "Adding books" msgstr "Adición de libros" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:789 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:801 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:813 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:825 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:793 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:805 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:817 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:829 msgid "Import/Export" msgstr "Importar/exportar" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:793 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:797 msgid "Control how calibre reads metadata from files when adding books" msgstr "" "Controla o modo como Calibre le os metadatos dos ficheiros na proceso de " "adición de libros" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:799 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:803 msgid "Saving books to disk" msgstr "Gardado de libros no disco" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:805 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:809 msgid "" "Control how calibre exports files from its database to disk when using Save " "to disk" @@ -374,33 +374,33 @@ msgstr "" "Controla o modo como Calibre exporta ficheiros da súa base de datos no " "disco no proceso de Gardado no disco" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:811 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:815 msgid "Sending books to devices" msgstr "Envío de libros a dispositivos" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:817 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:821 msgid "Control how calibre transfers files to your ebook reader" msgstr "" "Controla cando Calibre transfere os ficheiros ao seu lector de libros" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:823 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:827 msgid "Metadata plugboards" msgstr "Plugboards de metadatos" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:829 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:833 msgid "Change metadata fields before saving/sending" msgstr "Cambiar campos de metadatos antes do gardado/envío" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:834 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838 msgid "Sharing books by email" msgstr "Compartición de libros por correo" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:836 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:848 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:840 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:852 msgid "Sharing" msgstr "Compartición" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:840 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:844 msgid "" "Setup sharing of books via email. Can be used for automatic sending of " "downloaded news to your devices" @@ -408,11 +408,11 @@ msgstr "" "Configura a compartición de libros por correo electrónico. Pódese usar para " "enviar automticamente as noticias descargadas aos seus dispositivos" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:846 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:850 msgid "Sharing over the net" msgstr "Compartición na rede" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:852 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:856 msgid "" "Setup the calibre Content Server which will give you access to your calibre " "library from anywhere, on any device, over the internet" @@ -421,33 +421,33 @@ msgstr "" "biblioteca do Calibre en calquera lugar, con calquera dispositivo, a través " "da Internet." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:859 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863 msgid "Plugins" msgstr "Complementos" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:861 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:873 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:884 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:865 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:877 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:888 msgid "Advanced" msgstr "Avanzado" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:865 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:869 msgid "Add/remove/customize various bits of calibre functionality" msgstr "Engadir/eliminar/configurar diversas funcións do Calibre" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:871 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:875 msgid "Tweaks" msgstr "Axustes" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:877 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:881 msgid "Fine tune how calibre behaves in various contexts" msgstr "Axuste fino de como se comporta o Calibre en diversos contextos" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:882 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886 msgid "Miscellaneous" msgstr "Miscelánea" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:888 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:892 msgid "Miscellaneous advanced configuration" msgstr "Configuración miscelánea avanzada" @@ -492,7 +492,7 @@ msgstr "" "non sabe nada sobre o documento de entrada." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:59 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:433 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:444 msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "" @@ -503,62 +503,62 @@ msgid "This profile is intended for the SONY PRS 300." msgstr "Este perfil é o propio para o SONY PRS 300." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:80 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:470 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:484 msgid "This profile is intended for the SONY PRS-900." msgstr "Este perfil é o propio para o SONY PRS-900." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:88 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:500 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:513 msgid "This profile is intended for the Microsoft Reader." msgstr "Este perfil é o propio para o Microsoft Reader." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:99 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:511 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:524 msgid "This profile is intended for the Mobipocket books." msgstr "Este perfil é o propio para os libros Mobipocket." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:112 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:524 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:537 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "Este perfil é o propio para o Hanlin V3 e os seus clones." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:124 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:536 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:549 msgid "This profile is intended for the Hanlin V5 and its clones." msgstr "Este perfil é o propio para o Hanlin V5 e os seus clones." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:134 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:544 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:557 msgid "This profile is intended for the Cybook G3." msgstr "Este perfil é o propio para o Cybook G3." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:147 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:557 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:570 msgid "This profile is intended for the Cybook Opus." msgstr "Este perfil é o propio para o Cybook Opus." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:159 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:568 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:583 msgid "This profile is intended for the Amazon Kindle." msgstr "Este perfil é o propio para o Kindle de Amazon." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:171 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:609 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:631 msgid "This profile is intended for the Irex Illiad." msgstr "Este perfil é o propio para o rex Illiad." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:183 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:622 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "Este peril é o propio para o IRex Digital Reader 1000." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:196 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:636 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 msgid "This profile is intended for the IRex Digital Reader 800." msgstr "Este perfil é o propio para o IRex Digital Reader 800." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:208 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:650 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 msgid "This profile is intended for the B&N Nook." msgstr "Este perfil é o propio para o B&N Nook." @@ -576,30 +576,30 @@ msgstr "" "quere producir un documento apropiado para ser lido nun computador ou noutro " "tipo de dispositivos." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:270 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:276 msgid "" "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "" "Sangrado para o iPad ou dispositivos semellantes cunha resolución de 768x1024" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:424 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:435 msgid "Intended for generic tablet devices, does no resizing of images" msgstr "" "Orientado dispositivos de tableta xenéricos, sen redimensionado de imaxes" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:448 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:462 msgid "This profile is intended for the Kobo Reader." msgstr "Este perfil está sangrado para o Kobo Reader." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:461 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:475 msgid "This profile is intended for the SONY PRS-300." msgstr "Este perfil é o propio para o SONY PRS-300." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:479 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:493 msgid "This profile is intended for the 5-inch JetBook." msgstr "Este perfil é o propio para o JetBook de cinco polgadas." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:488 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:502 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." @@ -607,11 +607,11 @@ msgstr "" "Este perfl é o propio para os da liña SONY PRS. Os 00/505/700 etc en modo " "apaisado. Usados sobre todo para cómics." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:589 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:609 msgid "This profile is intended for the Amazon Kindle DX." msgstr "Este perfil é o propio o Amazon Kindle DX." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:664 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:686 msgid "This profile is intended for the Sanda Bambook." msgstr "Este perfil está pensado para o Sandra Bambook." @@ -690,7 +690,7 @@ msgstr "Desactivar o complemento sinalado" msgid "Communicate with Android phones." msgstr "Comunicar con teléfonos Android." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:53 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:56 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" @@ -698,7 +698,7 @@ msgstr "" "Lista de cartafoles, separados por comas, onde almacenar os libros no " "dispositivo. Usarase o primeiro que exista" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:95 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:98 msgid "Communicate with S60 phones." msgstr "Comunicar con teléfonos S60" @@ -733,14 +733,14 @@ msgstr "Actualizando a relación de metadatos..." #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:378 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:947 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:987 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2949 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2989 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2956 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2996 msgid "%d of %d" msgstr "%d de %d" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:385 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:992 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2995 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3002 msgid "finished" msgstr "ramtouse" @@ -770,7 +770,7 @@ msgstr "" "Algunhas portadas non se converteron. \n" "Prema \"Amosar detalles\" para relacionalas." -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2546 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2553 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:444 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:467 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:882 @@ -784,7 +784,7 @@ msgstr "" msgid "News" msgstr "Noticias" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2547 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2554 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:556 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1984 @@ -792,7 +792,7 @@ msgstr "Noticias" msgid "Catalog" msgstr "Catálogo" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2853 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2860 msgid "Communicate with iTunes." msgstr "Conectar con iTunes." @@ -1016,19 +1016,23 @@ msgid "Communicate with the Sweex MM300" msgstr "Conectar co Sweex MM300" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:79 +msgid "Communicate with the Digma Q600" +msgstr "Comunicar co Digma Q600" + +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:88 msgid "Communicate with the Kogan" msgstr "Comunicar co Kogan" -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:87 -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:114 +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:96 +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:123 msgid "Communicate with the Pandigital Novel" msgstr "Conectar co Pandigital Novel" -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:130 +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:142 msgid "Communicate with the VelocityMicro" msgstr "Comunicar con VelocityMono" -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:148 +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:160 msgid "Communicate with the GM2000" msgstr "Comunicar co GM2000" @@ -1052,6 +1056,14 @@ msgstr "O Nook" msgid "Communicate with the Nook eBook reader." msgstr "Comunicar co lector de libro electrónico Nook." +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 +msgid "Nook Color" +msgstr "Nook Color" + +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 +msgid "Communicate with the Nook Color eBook reader." +msgstr "Comunicar co lector de libros electrónicos Nook Color" + #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." msgstr "Comunicar co lector Nuut2." @@ -1091,7 +1103,7 @@ msgstr "Comunicar co lector de Newsmy" #: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:47 msgid "Communicate with the Pico reader." -msgstr "" +msgstr "Comunicar co lector Pico." #: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:57 msgid "Communicate with the iPapyrus reader." @@ -2115,6 +2127,34 @@ msgstr "" "conversión parcial previa dun ficheiro PDF. O valor predefinido é %default, " "que desactiva esta opción." +#: /home/kovid/work/calibre/src/calibre/ebooks/html/output.py:33 +msgid "CSS file used for the output instead of the default file" +msgstr "CSS utilizado para a saída en vez do arquivo predeterminado" + +#: /home/kovid/work/calibre/src/calibre/ebooks/html/output.py:36 +msgid "" +"Template used for generation of the html index file instead of the default " +"file" +msgstr "" +"Modelo usado para a xeración do ficheiro de html index en lugar do ficheiro " +"predeterminado" + +#: /home/kovid/work/calibre/src/calibre/ebooks/html/output.py:39 +msgid "" +"Template used for the generation of the html contents of the book instead of " +"the default file" +msgstr "" +"Modelo usado para a xeración dos contidos de html do libro en lugar do " +"predeterminado" + +#: /home/kovid/work/calibre/src/calibre/ebooks/html/output.py:42 +msgid "" +"Extract the contents of the generated ZIP file to the specified directory. " +"WARNING: The contents of the directory will be deleted." +msgstr "" +"Extraer o contido do arquivo ZIP no cartafol correspondente. AVISO: " +"Borrarase o contido do cartafol." + #: /home/kovid/work/calibre/src/calibre/ebooks/lit/from_any.py:47 msgid "Creating LIT file from EPUB..." msgstr "Creando un ficheiro LIT a partir de EPUB..." @@ -2431,13 +2471,13 @@ msgstr "Si" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:605 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:45 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:102 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:65 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:380 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:930 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:373 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:923 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:303 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:570 msgid "Title" @@ -2446,8 +2486,8 @@ msgstr "Título" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:606 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:67 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:385 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:931 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:924 msgid "Author(s)" msgstr "Autores/as" @@ -2463,37 +2503,36 @@ msgid "Producer" msgstr "Produtor" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:609 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:37 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:212 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:206 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:189 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:104 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:72 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:332 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1138 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1131 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:178 msgid "Comments" msgstr "Comentarios" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:611 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:154 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:27 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:29 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:73 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:320 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1134 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:313 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1127 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:160 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:618 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:623 msgid "Tags" msgstr "Etiquetas" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:613 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:152 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:26 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:337 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1143 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1136 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:108 msgid "Series" msgstr "Series" @@ -2503,12 +2542,12 @@ msgid "Language" msgstr "Idioma" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:616 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1126 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1119 msgid "Timestamp" msgstr "Marca temporal" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:618 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:151 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:157 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:70 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:258 @@ -2683,35 +2722,39 @@ msgstr "" msgid "Downloads metadata from Douban.com" msgstr "Descargar os metadatos de Douban.com" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:51 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:57 msgid "Metadata download" msgstr "Descarga de metadatos" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:128 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:141 msgid "ratings" msgstr "puntuacións" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:128 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:141 msgid "tags" msgstr "etiquetas" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:129 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:142 msgid "description/reviews" msgstr "descrición/críticas" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:130 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:143 msgid "Download %s from %s" msgstr "Descargar %s desde %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:156 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:149 +msgid "Convert comments downloaded from %s to plain text" +msgstr "Coverter os comentarios descargados de %s a texto simple" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:175 msgid "Downloads metadata from Google Books" msgstr "Descarga os metadatos do Google Books" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:173 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:192 msgid "Downloads metadata from isbndb.com" msgstr "Descara os metadatos de isbndb.com" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:201 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:220 msgid "" "To use isbndb.com you must sign up for a %sfree account%s and enter your " "access key below." @@ -2719,11 +2762,11 @@ msgstr "" "Para empregar o isbndb.com, é preciso ter unha %sconta gratuíta%s e escribir " "a súa chave de acceso abaixo." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:211 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:230 msgid "Downloads social metadata from amazon.com" msgstr "Descarga os metadatos de amazon.com" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:230 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:251 msgid "Downloads series/tags/rating information from librarything.com" msgstr "" "Descargar a información de series, etiquetas e puntuación de librarything.com" @@ -2787,7 +2830,7 @@ msgstr "" "través de LibraryThing.com\n" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1399 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 msgid "Cover" msgstr "Capa" @@ -2827,74 +2870,74 @@ msgstr "" msgid "All articles" msgstr "Todos os artigos" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:259 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:262 msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "Este é un libro Topaz de Amazon. Por tanto, non se pode procesar." -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1400 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 msgid "Title Page" msgstr "Páxina de título" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 #: /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:199 msgid "Table of Contents" msgstr "Índice" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 msgid "Index" msgstr "Índice" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 msgid "Glossary" msgstr "Glosario" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 msgid "Acknowledgements" msgstr "Agradecementos" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 msgid "Bibliography" msgstr "Bibliografia" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 msgid "Colophon" msgstr "Colofón" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 msgid "Copyright" msgstr "Dereitos de copia" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 msgid "Dedication" msgstr "Dedicatoria" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 msgid "Epigraph" msgstr "Epígrafe" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 msgid "Foreword" msgstr "Prólogo" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 msgid "List of Illustrations" msgstr "Lista de ilustracións" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 msgid "List of Tables" msgstr "Lista de táboas" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 msgid "Notes" msgstr "Notas" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1416 msgid "Preface" msgstr "Prefacio" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1417 msgid "Main Text" msgstr "Texto principal" @@ -2911,9 +2954,9 @@ msgstr "Libro %s de %s" msgid "HTML TOC generation options." msgstr "Opcións da xeración HTM TOC" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:153 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:71 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:616 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:621 msgid "Rating" msgstr "Avaliación" @@ -3309,18 +3352,23 @@ msgstr "" msgid "" "Specify whether or not to insert an empty line between two paragraphs." msgstr "" +"Especificar se inserimos ou non unha liña baleira entre dous parágrafos." #: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:40 msgid "" "Specify whether or not to insert two space characters to indent the first " "line of each paragraph." msgstr "" +"Especificar se inserir ou non dous caracteres de espazo para identar a " +"primeira liña de cada parágrafo." #: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:44 msgid "" "Specify whether or not to hide the chapter title for each chapter. Useful " "for image-only output (eg. comics)." msgstr "" +"Especificar se agochar ou non o título do capítulo para cada capítulo. " +"Práctico no caso de saída soamente para imaxes (ex. cómics)" #: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:122 msgid "Start Page" @@ -3666,8 +3714,8 @@ msgstr "Engadir á biblioteca" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:246 #: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:56 #: /home/kovid/work/calibre/src/calibre/gui2/actions/tweak_epub.py:28 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:95 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:119 msgid "No book selected" msgstr "Non se seleccionou ningún libro" @@ -3691,7 +3739,7 @@ msgid "Add books to your calibre library from the connected device" msgstr "Engadir libros á biblioteca do Calibre desde o dispositivo conectado" #: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:20 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:536 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:548 msgid "Fetch annotations (experimental)" msgstr "Obter anotacións (experimental)" @@ -3788,7 +3836,7 @@ msgid "Checking database integrity" msgstr "A comprobar a integridade da base de datos" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:128 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:645 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:657 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc.py:41 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:54 msgid "Error" @@ -3816,7 +3864,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:51 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:139 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:140 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:112 msgid "%d books" msgstr "%d libros" @@ -3963,7 +4011,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:391 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:734 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 msgid "Not allowed" msgstr "Non permitido" @@ -4029,8 +4077,8 @@ msgid "Could not copy books: " msgstr "No se puideron copiar estes libros: " #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:147 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:708 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:679 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:720 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:685 #: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:189 msgid "Failed" msgstr "Fallou" @@ -4266,36 +4314,37 @@ msgstr "Non se poden unir os libros" msgid "At least two books must be selected for merging" msgstr "Precísase seleccionar, cando menos, dous libros para os unir" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:197 msgid "" "Book formats and metadata from the selected books will be added to the " -"first selected book. ISBN will not be merged.

    The " +"first selected book (%s). ISBN will not be merged.

    The " "second and subsequently selected books will not be deleted or " "changed.

    Please confirm you want to proceed." msgstr "" -"Os formatos e metadatos dos libros seleccionados engadiranse ao primeir " -"libro seleccionado. O ISBN non se engadirá.

    O segundo " -"libro e os seguintes non se borrarán nin se alterarán.

    Confirme que " -"desexa continuar." +"Os formatos de libro e os metadatos dos libros seleccionado serán engadidos " +"ao primeiro libro seleccionado (%s). O ISBN non se combinará. " +"

    O segundo e subsecuentes libros seleccionados non serán eliminados " +"nin cambiados.

    Confirme por favor que quere proceder." -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:208 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:209 msgid "" "Book formats and metadata from the selected books will be merged into the " -"first selected book. ISBN will not be merged.

    After " -"merger the second and subsequently selected books will be deleted. " -"

    All book formats of the first selected book will be kept and any " -"duplicate formats in the second and subsequently selected books will be " -"permanently deleted from your computer.

    Are you sure " -"you want to proceed?" +"first selected book (%s). ISBN will not be " +"merged.

    After merger the second and subsequently selected books will " +"be deleted.

    All book formats of the first selected book will " +"be kept and any duplicate formats in the second and subsequently selected " +"books will be permanently deleted from your computer.

    Are " +"you sure you want to proceed?" msgstr "" -"Os formatos e metadatos dos libros seleccionados engadiranse ao primeiro " -"libro seleccionado. O ISBN non se engadirá.

    Despois da " -"unión, o segundo libro e os seguintes borraranse.

    Todos os " -"formatos do primeiro libro seleccionado manteranse e se hai formatos " -"duplicados nos restantes libros, borraranse permanentemente do seu " -"computador.

    Está seguro de querer continuar?" +"Os formatos de libro e os metadatos dos libros seleccionados combinaranse no " +"primeiro libro seleccionado (%s). O ISBN non non será " +"combinado.

    Despois de combinar o seguindo e subsecuentes libros " +"seleccionados, eliminaranse.

    Todos os formatos do primeiro " +"libro seleccionado gardaranse e calquera formato duplicado no segundo e " +"subsecuentes libros seleccionados eliminaranse do seu computador. " +"

    Está seguro de querer proceder?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:222 msgid "" "You are about to merge more than 5 books. Are you sure you want to " "proceed?" @@ -4431,7 +4480,7 @@ msgid "Click the show details button to see which ones." msgstr "Prema o botón de amosar detalles para os ver." #: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:16 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:623 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:628 msgid "Show book details" msgstr "Amosar os detalles do libro" @@ -4518,21 +4567,21 @@ msgstr "Ver" msgid "View specific format" msgstr "Ver o formato específico" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:95 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:158 msgid "Cannot view" msgstr "Non se pode ver" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:100 #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77 msgid "Choose the format to view" msgstr "Escoller o formato de visualización" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:108 msgid "Multiple Books Selected" msgstr "Seleccionou múltiplos libros" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:109 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 " @@ -4544,11 +4593,11 @@ msgstr "" "computador. Ademais, unha vez comezado o proceso, non o pode deter até que " "rematar. Desexa, con todo, continuar?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:118 msgid "Cannot open folder" msgstr "Non se pode abrir o ficheiro" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:159 msgid "%s has no available formats." msgstr "%s non ten formatos dispoíbeis" @@ -4573,7 +4622,7 @@ msgid "The specified directory could not be processed." msgstr "Non se puido procesar o directorio especificado." #: /home/kovid/work/calibre/src/calibre/gui2/add.py:229 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:857 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:869 msgid "No books" msgstr "Sen libros" @@ -4777,49 +4826,49 @@ msgstr "" "&Múltiplos libros por cartafol interpreta que cada ficheiro de ebook é un " "libro diferente" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:23 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:47 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:313 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:119 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:120 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:121 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:137 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:327 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1124 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1117 msgid "Path" msgstr "Camiño" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:24 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:50 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:123 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:124 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:127 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:319 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:24 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:117 msgid "Formats" msgstr "Formatos" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:25 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:934 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1127 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:927 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1120 msgid "Collections" msgstr "Coleccións" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:49 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:60 msgid "Click to open" msgstr "Prema para abrir" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:50 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:319 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:325 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:331 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1133 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1137 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:324 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1126 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1130 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:83 @@ -4827,9 +4876,9 @@ msgstr "Prema para abrir" msgid "None" msgstr "Ningún" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:312 -msgid "Click to open Book Details window" -msgstr "Prema para abrir a xanela de detalles do libro" +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:404 +msgid "Double-click to open Book Details window" +msgstr "Facer doble clic para abrir a ventá Detalles do Libro" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:16 msgid "BibTeX Options" @@ -5053,6 +5102,19 @@ msgstr "Incluír a sección \"Serie\"" msgid "Tab template for catalog.ui" msgstr "Modelo para catalog.ui" +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:25 +msgid "Bold" +msgstr "Negra" + +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:26 +msgid "Italic" +msgstr "Cursiva" + +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:28 +msgid "Underline" +msgstr "Subliñado" + #: /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 " @@ -5063,11 +5125,11 @@ msgstr "" "empregar os valores gardados na conversión anterior (se existir) no canto de " "as especificadas nas Preferencias." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:70 msgid "Bulk Convert" msgstr "Conversión por Petición" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 msgid "Options specific to the output format." msgstr "Opcións específicas do formato de saida." @@ -5541,7 +5603,7 @@ msgid "Change the title of this book" msgstr "Mudar o título deste libro" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:179 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:333 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:335 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:377 msgid "&Author(s): " msgstr "&Autores/as: " @@ -5559,7 +5621,7 @@ msgstr "" "vírgulas" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:182 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:342 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:344 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:388 msgid "&Publisher: " msgstr "&Editorial: " @@ -5570,7 +5632,7 @@ msgid "Ta&gs: " msgstr "&Etiquetas " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:184 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:346 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:390 msgid "" "Tags categorize the book. This is particularly useful while searching. " @@ -5581,15 +5643,16 @@ msgstr "" "estar separadas por vírgula." #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:185 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:353 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 msgid "&Series:" msgstr "&Serie:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:352 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:355 #: /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 "List of known series. You can add new series." @@ -5770,7 +5833,7 @@ msgid "Options specific to the input format." msgstr "Opcións específicas do formato de entrada." #: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:117 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:53 msgid "Dialog" @@ -5791,7 +5854,7 @@ msgstr "Saída SNB" #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:40 msgid "Hide chapter name" -msgstr "" +msgstr "Non amosar o número de capítulo" #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:41 msgid "Insert space before the first line for each paragraph" @@ -5968,8 +6031,8 @@ msgid "Force maximum line length" msgstr "Forzar a lonxitude máxima da liña" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:70 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:62 @@ -6112,7 +6175,7 @@ msgid "Automatically number books" msgstr "Numerar automaticamente os libros" #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:499 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:366 msgid "Force numbers to start with " msgstr "Forzar números para comezar con " @@ -6194,31 +6257,31 @@ msgstr "Enviar á tarxeta de almacenaxe B" msgid "Main Memory" msgstr "Memoria principal" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:491 -msgid "Send and delete from library" -msgstr "Enviar e borrar da biblioteca" - #: /home/kovid/work/calibre/src/calibre/gui2/device.py:492 msgid "Send specific format to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:528 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:493 +msgid "Send and delete from library" +msgstr "Enviar e borrar da biblioteca" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:536 msgid "Eject device" msgstr "Extraer dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:646 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:658 msgid "Error communicating with device" msgstr "Erro ao conectar co dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:667 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:679 msgid "Select folder to open as device" msgstr "Escoller o cartafol para abrir co como dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:714 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:726 msgid "Error talking to device" msgstr "Erro ao conectar co dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:715 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:727 msgid "" "There was a temporary error talking to the device. Please unplug and " "reconnect the device and or reboot." @@ -6226,127 +6289,127 @@ msgstr "" "Produciuse un erro temporal na comunicación co dispositivo. Desconecte e " "volva conectar o dispositovo e/ou reinícieo." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:758 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:770 msgid "Device: " msgstr "Dispositivo: " -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:760 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:772 msgid " detected." msgstr " detectado" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:858 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:870 msgid "selected to send" msgstr "seleccionado para enviar" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:863 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:875 msgid "Choose format to send to device" msgstr "Elixa formato para enviar ao dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:872 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:884 msgid "No device" msgstr "Sen dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:873 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:885 msgid "Cannot send: No device is connected" msgstr "Non se pode enviar: non hai ningún dispositivo conectado" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:876 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:880 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:888 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:892 msgid "No card" msgstr "Sen tarxeta" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:877 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:889 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:893 msgid "Cannot send: Device has no storage card" msgstr "Non de pode enviar: o dispositivo non ten tarxeta de memoria" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:922 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:934 msgid "E-book:" msgstr "Libro electrónico:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:925 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:937 msgid "Attached, you will find the e-book" msgstr "O libro electrónico está anexo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:926 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:938 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:107 msgid "by" msgstr "por" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:927 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:939 msgid "in the %s format." msgstr "no formato %s." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:940 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:952 msgid "Sending email to" msgstr "Enviando correo a" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:970 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:978 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1071 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1156 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1275 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1283 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:982 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:990 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1089 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1174 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1293 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1301 msgid "No suitable formats" msgstr "Non hai formatos axeitados" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:971 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:983 msgid "Auto convert the following books before sending via email?" msgstr "" "Desexa converter automaticamente os seguintes libros antes de os enviar por " "correo?" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:979 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:991 msgid "" "Could not email the following books as no suitable formats were found:" msgstr "" "Non se puideron enviar por correo os libros seguintes xa que non se achou ou " "formato correcto." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:997 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1009 msgid "Failed to email books" msgstr "Fallou ao enviar por correo os libros" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:998 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1010 msgid "Failed to email the following books:" msgstr "Fallou ao enviar por correo os libros seguintes:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1002 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1014 msgid "Sent by email:" msgstr "Enviar por correo:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1030 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1048 msgid "News:" msgstr "Novas:" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1031 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1049 msgid "Attached is the" msgstr "Anexo está o" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1042 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1060 msgid "Sent news to" msgstr "Enviar novas a" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1072 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1157 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1276 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1090 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1175 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1294 msgid "Auto convert the following books before uploading to the device?" msgstr "" "Desexa converter os libros seguintes antes de os enviar ao dispositivo?" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1102 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1120 msgid "Sending catalogs to device." msgstr "A enviar catálogos ao dispositivo." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1189 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1207 msgid "Sending news to device." msgstr "A enviar novas ao dispositivo." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1242 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1260 msgid "Sending books to device." msgstr "A enviar libros ao dispositivo." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1284 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1302 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." @@ -6355,11 +6418,11 @@ msgstr "" "atoparon formatos compatíbeis. Converta o ou os libros a un formato " "compatíbel co dispositivo." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1348 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1366 msgid "No space on device" msgstr "Non hai espazo no dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1349 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1367 msgid "" "

    Cannot upload books to device there is no more free space available " msgstr "" @@ -6416,15 +6479,15 @@ msgstr "" msgid "&Paste from clipboard" msgstr "&Pegar do portapapeis" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:80 msgid "Fit &cover within view" msgstr "Axustar a &capa dentro da visualización" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:81 msgid "&Previous" msgstr "&Anterior" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:82 msgid "&Next" msgstr "&Seguinte" @@ -6475,21 +6538,32 @@ msgstr "Copiar no por&tapapeis" msgid "Names to ignore:" msgstr "Nombres para ignorar:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:59 +msgid "" +"Enter comma-separated standard file name wildcards, such as synctoy*.dat" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:62 msgid "Extensions to ignore" msgstr "Extensiones para ignorar" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:67 +msgid "" +"Enter comma-separated extensions without a leading dot. Used only in book " +"folders" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:119 msgid "Path from library" msgstr "Camiño da biblioteca" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:119 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:89 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:225 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:226 msgid "Name" msgstr "Nome" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:136 msgid "" "The marked files and folders will be permanently deleted. Are you " "sure?" @@ -6579,6 +6653,7 @@ msgid "Set options for converting %s" msgstr "Establecer as opcións para converter %s" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:211 msgid "&Title:" msgstr "&Título:" @@ -6616,7 +6691,7 @@ msgstr "Localización" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:69 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:932 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:925 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:31 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:294 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569 @@ -6624,7 +6699,7 @@ msgid "Date" msgstr "Data" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1123 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1116 msgid "Format" msgstr "Formato" @@ -6844,18 +6919,12 @@ msgstr "Libro %d:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:274 msgid "" "You can destroy your library using this feature. Changes are " -"permanent. There is no undo function. This feature is experimental, and " -"there may be bugs. You are strongly encouraged to back up your library " -"before proceeding.

    Search and replace in text fields using character " -"matching or regular expressions. " +"permanent. There is no undo function. You are strongly encouraged to back up " +"your library before proceeding.

    Search and replace in text fields using " +"character matching or regular expressions. " msgstr "" -"Pode destruír a súa biblioteca con esta característica. Os cambios " -"son permanentes. Non existe unha función para desfacer. Esta característica " -"é experimental e pode haber erros. Recoméndaselle facer unha copia de " -"seguranza da biblioteca antes de continuar.

    Busque e substitúa nos campos " -"de texto utilizando un carácter coincidente ou expresións regulares. " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:282 msgid "" "In character mode, the field is searched for the entered search text. The " "text is replaced by the specified replacement text everywhere it is found in " @@ -6872,7 +6941,7 @@ msgstr "" "exactamente. Se está desactivada, encontraranse coincidencias tanto con " "maiúsculas coma con minúsculas" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:293 msgid "" "In regular expression mode, the search text is an arbitrary python-" "compatible regular expression. The replacement text can contain " @@ -6898,34 +6967,34 @@ msgstr "" "información sobre as expresións regulares de Python, e en particular sobre a " "función \"sub\"." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:436 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:438 msgid "You must specify a destination when source is a composite field" msgstr "Debe especificar un destino cando a orixe é un campo de composición" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:528 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:536 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:627 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:633 msgid "Search/replace invalid" msgstr "Buscar/substituir no vé correcto" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:531 msgid "" "Authors cannot be set to the empty string. Book title %s not processed" msgstr "" "A cadea Autores non se pode deixar en branco. O libro co título %s non foi " "procesado" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:537 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:539 msgid "Title cannot be set to the empty string. Book title %s not processed" msgstr "" "O título non se pode deixar en branco. O libro co título %s non foi " "procesado" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:628 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:634 msgid "Search pattern is invalid: %s" msgstr "O patrón de busca non é correcto: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:665 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:671 msgid "" "Applying changes to %d books.\n" "Phase {0} {1}%%." @@ -6933,19 +7002,19 @@ msgstr "" "Aplicando cambios a %d libros.\n" "Fase {0} {1}%%." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:332 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:334 msgid "Edit Meta information" msgstr "Editar metainformación" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:336 msgid "A&utomatically set author sort" msgstr "Estabelecer a&utomaticamente a orde por autor" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:335 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:337 msgid "Author s&ort: " msgstr "Orde por aut&oría: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:336 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:338 msgid "" "Specify how the author(s) of this book should be sorted. For example Charles " "Dickens should be sorted as Dickens, Charles." @@ -6953,64 +7022,64 @@ msgstr "" "Especificar como ordenar a autoría deste libro. Por exemplo, Rosalía de " "Castro pode ordenarse como Castro, Rosalía de." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:337 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:339 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:384 msgid "&Rating:" msgstr "&Valoración" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:338 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:339 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:341 #: /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 "Rating of this book. 0-5 stars" msgstr "Valoración deste libro. 0-5 estrelas" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:342 msgid "No change" msgstr "Sen mudanzas" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:341 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:343 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:387 msgid " stars" msgstr " estrelas" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:343 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:345 msgid "Add ta&gs: " msgstr "Engadir esti&quetas " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:345 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:346 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:348 #: /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 "Open Tag Editor" msgstr "Abrir o editor de etiquetas" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:349 msgid "&Remove tags:" msgstr "&Quitar etiquetas:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:350 msgid "Comma separated list of tags to remove from the books. " msgstr "" "Listaxe de etiquetas, separadas por vírgula, para eliminar dos libros. " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:349 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:351 msgid "Check this box to remove all tags from the books." msgstr "Marque esta caixa para eliminar todas as etiquetas dos libros." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:352 msgid "Remove all" msgstr "Eliminar todo" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:356 msgid "If checked, the series will be cleared" msgstr "Se está marcado, as series serán desbotadas" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:357 msgid "Clear series" msgstr "Desbotar series" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:358 msgid "" "If not checked, the series number for the books will be set to 1.\n" "If checked, selected books will be automatically numbered, in the order\n" @@ -7023,11 +7092,11 @@ msgstr "" "o libro A e logo o B, o libro A será o número 1 na serie e o libro\n" "B será o número 2." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:362 msgid "Automatically number books in this series" msgstr "Numerar automaticamente os libros nesta serie" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:363 msgid "" "Series will normally be renumbered from the highest number in the database\n" "for that series. Checking this box will tell calibre to start numbering\n" @@ -7038,26 +7107,26 @@ msgstr "" "a serie. Se marca esta caixa Calibre comezará a numeración a partir do valor " "do cadro." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:365 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:367 msgid "Remove &format:" msgstr "Quitar &formato:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:366 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:368 msgid "&Swap title and author" msgstr "&Intercambiar título e autoría" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:367 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:369 msgid "" "Force the title to be in title case. If both this and swap authors are " "checked,\n" "title and author are swapped before the title case is set" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:369 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:371 msgid "Change title to title case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:370 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:372 msgid "" "Remove stored conversion settings for the selected books.\n" "\n" @@ -7068,73 +7137,73 @@ msgstr "" "\n" "A conversión futura destes libros empregará a preestablecida." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:373 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:375 msgid "Remove &stored conversion settings for the selected books" msgstr "Borrar a configuración de conversión para os libros &seleccionados" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:376 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:424 msgid "&Basic metadata" msgstr "Metadatos &básicos" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:375 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:377 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:425 msgid "&Custom metadata" msgstr "Metadatos &personalizados" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:378 msgid "Search &field:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:377 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:379 msgid "The name of the field that you want to search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:380 msgid "Search mode:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:379 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:381 msgid "" "Choose whether to use basic text matching or advanced regular expression " "matching" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:380 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:382 msgid "&Search for:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:381 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:383 msgid "" "Enter the what you are looking for, either plain text or a regular " "expression, depending on the mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:384 msgid "" "Check this box if the search string must match exactly upper and lower case. " "Uncheck it if case is to be ignored" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:383 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:385 msgid "Case sensitive" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:386 msgid "&Replace with:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:387 msgid "" "The replacement text. The matched search text will be replaced with this " "string" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:386 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:388 msgid "Apply function after replace:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:387 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:389 msgid "" "Specify how the text is to be processed after matching and replacement. In " "character mode, the entire\n" @@ -7142,49 +7211,49 @@ msgid "" "processed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:391 msgid "&Destination field:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:390 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:392 msgid "" "The field that the text will be put into after all replacements. If blank, " "the source field is used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:391 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:393 msgid "Mode:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:392 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:394 msgid "Specify how the text should be copied into the destination." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:395 msgid "" "If the replace mode is prepend or append, then this box indicates whether a " "comma or\n" "nothing should be put between the original text and the inserted text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:395 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:397 msgid "use comma" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:396 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:398 msgid "Test &text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:397 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:399 msgid "Test re&sult" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:398 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:400 msgid "Your test:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:399 -msgid "&Search and replace (experimental)" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:401 +msgid "&Search and replace" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:91 @@ -7710,58 +7779,52 @@ msgstr "" msgid "Negate" msgstr "Negar" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 msgid "Advanced Search" msgstr "Procura avanzada" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:119 -msgid "Find entries that have..." -msgstr "Achar entradas que teñan..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:120 -msgid "&All these words:" -msgstr "&Todas estas palabras:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:121 -msgid "This exact &phrase:" -msgstr "Esta &frase exacta:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:122 -msgid "&One or more of these words:" -msgstr "&Unha ou máis destas palabras" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:123 -msgid "But dont show entries that have..." -msgstr "Mais non buscar entradas que teñan..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:124 -msgid "Any of these &unwanted words:" -msgstr "Algunha destas palabras &non desexadas:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 msgid "What kind of match to use:" msgstr "Que tipo de coincidencia para empregar:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:126 -msgid "Contains: the word or phrase matches anywhere in the metadata" -msgstr "Contén: búscase a palabra ou a frase en calquera parte dos metadatos" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:127 -msgid "Equals: the word or phrase must match an entire metadata field" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "" -"Igual: a palabra ou a frase debe coincidir cun campo completo de metadatos" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +msgid "Equals: the word or phrase must match the entire metadata field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 msgid "" -"Regular expression: the expression must match anywhere in the metadata" +"Regular expression: the expression must match anywhere in the metadata field" msgstr "" -"Expresión regular: búscase a expresión en calquera parte dos metadatos" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:129 -msgid " " -msgstr " " +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +msgid "Find entries that have..." +msgstr "Achar entradas que teñan..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +msgid "&All these words:" +msgstr "&Todas estas palabras:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +msgid "This exact &phrase:" +msgstr "Esta &frase exacta:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +msgid "&One or more of these words:" +msgstr "&Unha ou máis destas palabras" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 +msgid "But dont show entries that have..." +msgstr "Mais non buscar entradas que teñan..." + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 +msgid "Any of these &unwanted words:" +msgstr "Algunha destas palabras &non desexadas:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 msgid "" "See the User Manual for more help" @@ -7769,6 +7832,47 @@ msgstr "" "Vexa o Manual de usuario para máis axuda" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:210 +msgid "A&dvanced Search" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:212 +msgid "Enter the title." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:213 +msgid "&Author:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 +msgid "Ta&gs:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:216 +msgid "Enter an author's name. Only one author can be used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:217 +msgid "" +"Enter a series name, without an index. Only one series name can be used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:218 +msgid "Enter tags separated by spaces" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:219 +msgid "&Clear" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:220 +msgid "Search only in specific fields:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:221 +msgid "Titl&e/Author/Series ..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/select_formats.py:45 msgid "Choose formats" msgstr "Escoller formatos" @@ -8451,21 +8555,21 @@ msgstr "Amosar os libros almacenados na tarxeta B" msgid "available" msgstr "dispoñíbel" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:159 msgid "" "Books display will be restricted to those matching the selected saved search" msgstr "" "Só se amosarán os libros que coincidan coa busca gardada seleccionada" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:170 +msgid "Shift+Ctrl+F" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:173 msgid "Advanced search" msgstr "Procura avanzada" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:173 -msgid "&Search:" -msgstr "&Buscar:" - -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:178 msgid "" "

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

    Words separated by spaces are ANDed" @@ -8474,19 +8578,27 @@ msgstr "" "comentarios etc.

    Búscanse os libros que conteñan todas as palabras " "separadas por espazos" +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:181 +msgid "&Go!" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:187 +msgid "Do Quick Search (you can also press the Enter key)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:193 msgid "Reset Quick Search" msgstr "Reiniciar a procura rápida" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:205 msgid "Copy current search text (instead of search name)" msgstr "Copiar o texto de procura actual (no canto do nome da procura)" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:211 msgid "Save current search under the name shown in the box" msgstr "Gardar a procura actual baixo o nome amosado na caixa" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:217 msgid "Delete current saved search" msgstr "Borrar a actual procura gardada" @@ -8508,79 +8620,82 @@ msgstr "No dispositivo" msgid "Size (MB)" msgstr "Tamaño (MB)" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:338 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1143 -msgid "Book %s of %s." -msgstr "Libro %s de %s" +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:331 +msgid "Book %s of %s." +msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:700 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1243 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:693 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1236 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:407 msgid "The lookup/search name is \"{0}\"" msgstr "O nome de busca é \"{0}\"" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:706 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1245 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:699 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1238 msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:929 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:922 msgid "In Library" msgstr "Na biblioteca" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:933 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:926 msgid "Size" msgstr "Tamaño" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1223 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1136 +msgid "Book %s of %s." +msgstr "Libro %s de %s" + +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1216 msgid "Marked for deletion" msgstr "Marcado para borrar" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1226 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1219 msgid "Double click to edit me

    " msgstr "Prema dúas veces para editar

    " -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:147 msgid "Hide column %s" msgstr "Ocultar a columna %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 msgid "Sort on %s" msgstr "Ordenar en %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 msgid "Ascending" msgstr "Ascendente" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:156 msgid "Descending" msgstr "Descendente" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 msgid "Change text alignment for %s" msgstr "Mudar o aliñamento do texto a %s" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Left" msgstr "Esquerda" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Right" msgstr "Dereita" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:171 msgid "Center" msgstr "Centrado" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:183 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:190 msgid "Show column" msgstr "Amosar columna" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202 msgid "Restore default layout" msgstr "Restaurar a disposición por defecto" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:735 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:743 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -8613,7 +8728,7 @@ msgid "No matches for the search phrase %s were found." msgstr "Sen coincidencias para a frase de busca %s." #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:442 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:443 msgid "No matches found" msgstr "Non se atopou ningunha coincidencia" @@ -8847,7 +8962,7 @@ msgid "Successfully downloaded metadata for %d out of %d books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:287 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:622 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:627 msgid "Details" msgstr "" @@ -9940,25 +10055,26 @@ msgid "&Current tweaks" msgstr "Axustes a&ctuais" #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:270 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:574 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:250 msgid "Search" msgstr "Buscar" -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:315 +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:322 msgid "The selected search will be permanently deleted. Are you sure?" msgstr "" "A busca seleccionada será eliminada permanentemente. Está seguro?" -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:364 msgid "Search (For Advanced Search click the button to the left)" msgstr "Busca (para buscas avanzadas faga clic no botón da esquerda)" -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:399 +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:406 msgid "Saved Searches" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:407 +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:414 msgid "Choose saved search or enter name for new saved search" msgstr "" @@ -10096,40 +10212,40 @@ msgstr "" msgid "The saved search name %s is already used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:870 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:871 msgid "Sort by name" msgstr "Ordenar polo nome" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:870 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:871 msgid "Sort by popularity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:871 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:872 msgid "Sort by average rating" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:874 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:875 msgid "Set the sort order for entries in the Tag Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:880 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:881 msgid "Match all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:880 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:881 msgid "Match any" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:885 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:886 msgid "" "When selecting multiple entries in the Tag Browser match any or all of them" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:889 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:890 msgid "Manage &user categories" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:892 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:893 msgid "Add your own categories to the Tag Browser" msgstr "" @@ -10415,7 +10531,7 @@ msgid "Options to customize the ebook viewer" msgstr "Opcións para personalizar o visualizador de libros" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:703 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:708 msgid "Remember last used window size" msgstr "Lembrar o tamaño da última xanela usada" @@ -10575,77 +10691,77 @@ msgstr "Previsualización da impresión" msgid "Connecting to dict.org to lookup: %s…" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:409 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:410 msgid "Choose ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:410 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:411 msgid "Ebooks" msgstr "Libros electrónicos" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:444 msgid "No matches found for: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:480 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:485 msgid "Loading flow..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:521 msgid "Laying out %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:552 msgid "Bookmark #%d" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:556 msgid "Add bookmark" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:557 msgid "Enter title for bookmark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:567 msgid "Manage Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:599 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:604 msgid "Loading ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:612 msgid "DRM Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:613 msgid "

    This book is protected by DRM" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:612 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:617 msgid "Could not open ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:690 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:695 msgid "Options to control the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:697 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:702 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:700 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:705 msgid "" "If specified, viewer window will try to open full screen when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:705 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:710 msgid "Print javascript alert and console messages to the console" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:711 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:716 msgid "" "%prog [options] file\n" "\n" @@ -11548,7 +11664,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/cli.py:665 -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:505 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:499 msgid "Show detailed output information. Useful for debugging" msgstr "" @@ -11996,12 +12112,12 @@ msgid "" "from Apache/nginx/etc." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/base.py:149 +#: /home/kovid/work/calibre/src/calibre/library/server/base.py:150 msgid "Password to access your calibre library. Username is " msgstr "" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:51 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:401 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:405 msgid "Loading, please wait" msgstr "" @@ -12026,7 +12142,7 @@ msgid "Browsing %d books" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:99 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:224 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:225 msgid "Average rating" msgstr "" @@ -12034,82 +12150,90 @@ msgstr "" msgid "%s: %.1f stars" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:132 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:133 msgid "%d stars" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:225 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:226 msgid "Popularity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:244 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:245 msgid "Sort by" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:308 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:512 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:248 +msgid "library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:249 +msgid "home" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:310 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:516 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569 msgid "Newest" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:309 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:513 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:311 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:517 msgid "All books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:341 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:344 msgid "Browse books by" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:346 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:349 msgid "Choose a category to browse by:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:421 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:425 msgid "Browsing by" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:422 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:426 msgid "Up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:543 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:547 msgid "in" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:546 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:550 msgid "Books in" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:597 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:602 msgid "Other formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:604 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:609 msgid "Read %s in the %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:609 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:614 msgid "Get" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:624 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:629 msgid "Permalink" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:625 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:630 msgid "A permanent link to this book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:636 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:641 msgid "This book has been deleted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:720 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:725 msgid "in search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:722 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:727 msgid "Matching books" msgstr "" @@ -12140,6 +12264,12 @@ msgid "" "overrides any per-library settings specified in the GUI" msgstr "" +#: /home/kovid/work/calibre/src/calibre/library/server/main.py:62 +msgid "" +"Auto reload server when source code changes. May not work in all " +"environments." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:112 msgid "%d book" msgstr "" @@ -12464,93 +12594,93 @@ msgstr "" msgid "Unknown News Source" msgstr "Fonte de Novas Descoñecida" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:614 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:628 msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:713 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:727 msgid "Download finished" msgstr "Rematou a descarga" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:715 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:729 msgid "Failed to download the following articles:" msgstr "Produciuse un fallo na descarga dos seguintes artigos:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:721 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:735 msgid "Failed to download parts of the following articles:" msgstr "Produciuse un fallo na descarga de partes do seguintes artigos:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:723 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:737 msgid " from " msgstr " desde " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:725 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:739 msgid "\tFailed links:" msgstr "\tLigazóns erradas:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:814 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:834 msgid "Could not fetch article. Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:835 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:855 msgid "Fetching feeds..." msgstr "A obter os fluxos..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:840 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:860 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:849 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:869 msgid "Trying to download cover..." msgstr "Tratando de descargar a capa..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:851 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:871 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:932 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:952 msgid "Starting download [%d thread(s)]..." msgstr "A comezar a descarga [%d fío(s)]..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:948 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:968 msgid "Feeds downloaded to %s" msgstr "Fluxos descargados en %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:957 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:977 msgid "Could not download cover: %s" msgstr "Non se puido descargar a capa: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:964 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:986 msgid "Downloading cover from %s" msgstr "A descargar a capa desde %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1009 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1032 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1177 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1200 msgid "Untitled Article" msgstr "Artigo sen Título" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1248 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1271 msgid "Article downloaded: %s" msgstr "Artigo descargado: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1259 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1282 msgid "Article download failed: %s" msgstr "Erro ao descargar o artigo: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1276 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1299 msgid "Fetching feed" msgstr "A obter o fluxo" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1423 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1446 msgid "" "Failed to log in, check your username and password for the calibre " "Periodicals service." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1438 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1461 msgid "" "You do not have permission to download this issue. Either your subscription " "has expired or you have exceeded the maximum allowed downloads for today." @@ -12571,18 +12701,18 @@ msgstr "Programado" msgid "Custom" msgstr "Personalizado" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:482 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:476 msgid "" "%prog URL\n" "\n" "Where URL is for example http://google.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:485 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:479 msgid "Base directory into which URL is saved. Default is %default" msgstr "Directorio base onde se gardan os URL. O predefinido é %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:488 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:482 msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " "s" @@ -12590,38 +12720,38 @@ msgstr "" "Tempo máximo en segundos para esperar a resposta do servidor. Predefinido: " "%default s" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:491 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:485 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:494 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:488 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:496 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:490 msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:498 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:492 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:500 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:494 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:502 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:496 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 " @@ -12630,7 +12760,7 @@ msgid "" "applied first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:504 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:498 msgid "Do not download CSS stylesheets." msgstr "Non descargar follas de estilo CSS" @@ -12671,6 +12801,9 @@ msgstr "Non descargar follas de estilo CSS" #~ msgid "General" #~ msgstr "Xeral" +#~ msgid " " +#~ msgstr " " + #~ msgid "Path to a txt file containing a comment." #~ msgstr "Camiño a un ficheiro txt que contén un comentario." @@ -12698,6 +12831,9 @@ msgstr "Non descargar follas de estilo CSS" #~ msgid "Stop &all jobs" #~ msgstr "Parar &todos os traballos" +#~ msgid "&Search:" +#~ msgstr "&Buscar:" + #~ msgid "Communicate with the Kindle 2 eBook reader." #~ msgstr "Comunicar co lector Kindle 2" @@ -12803,6 +12939,9 @@ msgstr "Non descargar follas de estilo CSS" #~ "segundo e seguinte borrarase permanentemente do computador.

    " #~ "Ten certeza de que desexa continuar?" +#~ msgid "Click to open Book Details window" +#~ msgstr "Prema para abrir a xanela de detalles do libro" + #~ msgid "" #~ "Regex tips:\n" #~ "- The default regex - \\[[\\w ]*\\] - excludes genre tags of the form [tag], " @@ -13002,6 +13141,18 @@ msgstr "Non descargar follas de estilo CSS" #~ msgid "Download &cover" #~ msgstr "Descargar &capa" +#~ msgid "Contains: the word or phrase matches anywhere in the metadata" +#~ msgstr "Contén: búscase a palabra ou a frase en calquera parte dos metadatos" + +#~ msgid "Equals: the word or phrase must match an entire metadata field" +#~ msgstr "" +#~ "Igual: a palabra ou a frase debe coincidir cun campo completo de metadatos" + +#~ msgid "" +#~ "Regular expression: the expression must match anywhere in the metadata" +#~ msgstr "" +#~ "Expresión regular: búscase a expresión en calquera parte dos metadatos" + #~ msgid "" #~ "For help with writing advanced news recipes, please visit
    User Recipes" @@ -13041,8 +13192,48 @@ msgstr "Non descargar follas de estilo CSS" #~ msgid "&Tweaks" #~ msgstr "Axus&tes" +#~ msgid "" +#~ "Book formats and metadata from the selected books will be merged into the " +#~ "first selected book. ISBN will not be merged.

    After " +#~ "merger the second and subsequently selected books will be deleted. " +#~ "

    All book formats of the first selected book will be kept and any " +#~ "duplicate formats in the second and subsequently selected books will be " +#~ "permanently deleted from your computer.

    Are you sure " +#~ "you want to proceed?" +#~ msgstr "" +#~ "Os formatos e metadatos dos libros seleccionados engadiranse ao primeiro " +#~ "libro seleccionado. O ISBN non se engadirá.

    Despois da " +#~ "unión, o segundo libro e os seguintes borraranse.

    Todos os " +#~ "formatos do primeiro libro seleccionado manteranse e se hai formatos " +#~ "duplicados nos restantes libros, borraranse permanentemente do seu " +#~ "computador.

    Está seguro de querer continuar?" + +#~ msgid "" +#~ "Book formats and metadata from the selected books will be added to the " +#~ "first selected book. ISBN will not be merged.

    The " +#~ "second and subsequently selected books will not be deleted or " +#~ "changed.

    Please confirm you want to proceed." +#~ msgstr "" +#~ "Os formatos e metadatos dos libros seleccionados engadiranse ao primeir " +#~ "libro seleccionado. O ISBN non se engadirá.

    O segundo " +#~ "libro e os seguintes non se borrarán nin se alterarán.

    Confirme que " +#~ "desexa continuar." + #~ msgid "Run the check" #~ msgstr "Excutar a comprobación" #~ msgid "Additional Information" #~ msgstr "Información adicional" + +#~ msgid "" +#~ "You can destroy your library using this feature. Changes are " +#~ "permanent. There is no undo function. This feature is experimental, and " +#~ "there may be bugs. You are strongly encouraged to back up your library " +#~ "before proceeding.

    Search and replace in text fields using character " +#~ "matching or regular expressions. " +#~ msgstr "" +#~ "Pode destruír a súa biblioteca con esta característica. Os cambios " +#~ "son permanentes. Non existe unha función para desfacer. Esta característica " +#~ "é experimental e pode haber erros. Recoméndaselle facer unha copia de " +#~ "seguranza da biblioteca antes de continuar.

    Busque e substitúa nos campos " +#~ "de texto utilizando un carácter coincidente ou expresións regulares. " From bd444c6d4590e33a55cee3bfa0525de9d8b7f153 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 18 Nov 2010 10:02:40 -0700 Subject: [PATCH 044/377] Fix first button not clickable in main toolbar on OS X with Qt 4.7 --- src/calibre/gui2/layout.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/calibre/gui2/layout.py b/src/calibre/gui2/layout.py index c6177ed882..aa4b9b30e4 100644 --- a/src/calibre/gui2/layout.py +++ b/src/calibre/gui2/layout.py @@ -316,6 +316,10 @@ class ToolBar(QToolBar): # {{{ if gprefs['show_child_bar']: self.addWidget(self.spacers[3]) + if not gprefs['show_child_bar']: + for s in self.spacers[2:]: + s.setVisible(False) + def setup_tool_button(self, ac, menu_mode=None): ch = self.widgetForAction(ac) if ch is None: From 8e69c62d0508fc584667e4b635d6998b3cfc58f2 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 18 Nov 2010 10:03:36 -0700 Subject: [PATCH 045/377] ... --- src/calibre/gui2/layout.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/calibre/gui2/layout.py b/src/calibre/gui2/layout.py index aa4b9b30e4..fd42bfe671 100644 --- a/src/calibre/gui2/layout.py +++ b/src/calibre/gui2/layout.py @@ -315,8 +315,7 @@ class ToolBar(QToolBar): # {{{ self.child_bar.addWidget(self.spacers[1]) if gprefs['show_child_bar']: self.addWidget(self.spacers[3]) - - if not gprefs['show_child_bar']: + else: for s in self.spacers[2:]: s.setVisible(False) From 290bef435033e5f933e19bcacd201584fe4c5fb9 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 18 Nov 2010 10:15:15 -0700 Subject: [PATCH 046/377] THN and RDS by Nexus --- resources/recipes/rds.recipe | 18 ++++++++++++++++++ resources/recipes/thn.recipe | 19 +++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 resources/recipes/rds.recipe create mode 100644 resources/recipes/thn.recipe diff --git a/resources/recipes/rds.recipe b/resources/recipes/rds.recipe new file mode 100644 index 0000000000..b77e4804a1 --- /dev/null +++ b/resources/recipes/rds.recipe @@ -0,0 +1,18 @@ +from calibre.web.feeds.news import BasicNewsRecipe + +class AdvancedUserRecipe1290013720(BasicNewsRecipe): + title = u'RDS' + __author__ = 'Nexus' + language = 'en_CA' + description = 'Hockey News' + oldest_article = 7 + max_articles_per_feed = 25 + no_stylesheets = True + remove_tags = [dict(name='div', attrs={'id':'rdsWrap'}), + dict(name='table', attrs={'id':'aVoir'}), + dict(name='div', attrs={'id':'imageChronique'})] + keep_only_tags = [dict(name='div', attrs={'id':['enteteChronique']}), + dict(name='div', attrs={'id':['contenuChronique']})] + + + feeds = [(u'RDS', u'http://www.rds.ca/hockey/fildepresse_rds.xml')] diff --git a/resources/recipes/thn.recipe b/resources/recipes/thn.recipe new file mode 100644 index 0000000000..5e812fbbdf --- /dev/null +++ b/resources/recipes/thn.recipe @@ -0,0 +1,19 @@ +from calibre.web.feeds.news import BasicNewsRecipe + +class AdvancedUserRecipe1289990851(BasicNewsRecipe): + title = u'The Hockey News' + language = 'en_CA' + __author__ = 'Nexus' + oldest_article = 7 + max_articles_per_feed = 25 + no_stylesheets = True + remove_tags = [dict(name='div', attrs={'class':'article_info'}), + dict(name='div', attrs={'class':'photo_details'}), + dict(name='div', attrs={'class':'tool_menu'}), + dict(name='div', attrs={'id':'comments_container'}), + dict(name='div', attrs={'id':'wrapper'})] + keep_only_tags = [dict(name='h1', attrs={'class':['headline']}), + dict(name='div', attrs={'class':['box_container']})] + + feeds = [(u'THN', u'http://www.thehockeynews.com/rss/all_categories.xml')] + From 23d82b406bf923fd42290871fde1a061bca4914d Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 18 Nov 2010 11:10:47 -0700 Subject: [PATCH 047/377] globes.co.il by marbs --- resources/recipes/globes_co_il.recipe | 46 +++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 resources/recipes/globes_co_il.recipe diff --git a/resources/recipes/globes_co_il.recipe b/resources/recipes/globes_co_il.recipe new file mode 100644 index 0000000000..d82049dcdc --- /dev/null +++ b/resources/recipes/globes_co_il.recipe @@ -0,0 +1,46 @@ +from calibre.web.feeds.news import BasicNewsRecipe +from calibre.ebooks.BeautifulSoup import re + +class AdvancedUserRecipe1283848012(BasicNewsRecipe): + description = 'This is Globes.co.il.' + cover_url = 'http://www.the7eye.org.il/SiteCollectionImages/BAKTANA/arye_avnery_010709_377.jpg' + title = u'Globes' + language = 'he' + __author__ = 'marbs' + extra_css='img {max-width:100%;} body{direction: rtl;max-width:100%;}title{direction: rtl; } article_description{direction: rtl; }, a.article{direction: rtl;max-width:100%;} calibre_feed_description{direction: rtl; }' + simultaneous_downloads = 5 + remove_javascript = True + timefmt = '[%a, %d %b, %Y]' + oldest_article = 1 + max_articles_per_feed = 100 + remove_attributes = ['width','style'] + + + feeds = [(u'\u05e9\u05d5\u05e7 \u05d4\u05d4\u05d5\u05df', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=585'), + (u'\u05e0\u05d3\u05dc"\u05df', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=607'), + (u'\u05d5\u05d5\u05dc \u05e1\u05d8\u05e8\u05d9\u05d8 \u05d5\u05e9\u05d5\u05d5\u05e7\u05d9 \u05d4\u05e2\u05d5\u05dc\u05dd', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=1225'), + (u'\u05e0\u05d9\u05ea\u05d5\u05d7 \u05d8\u05db\u05e0\u05d9', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=1294'), + (u'\u05d4\u05d9\u05d9 \u05d8\u05e7', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=594'), + (u'\u05e0\u05ea\u05d7 \u05e9\u05d5\u05e7 \u05d5\u05e6\u05e8\u05db\u05e0\u05d5\u05ea', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=821'), + (u'\u05d3\u05d9\u05df \u05d5\u05d7\u05e9\u05d1\u05d5\u05df', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=829'), + (u'\u05e8\u05db\u05d1', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=3220'), + (u'\u05d3\u05e2\u05d5\u05ea', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=845'), + (u'\u05e7\u05e0\u05d9\u05d5\u05df \u05d4\u05de\u05e0\u05d9\u05d5\u05ea - \u05d8\u05d5\u05e8 \u05e9\u05d1\u05d5\u05e2\u05d9', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=3175'), + (u'\u05e1\u05d1\u05d9\u05d1\u05d4', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=3221')] + + def print_version(self, url): + split1 = url.split("=") + print_url = 'http://www.globes.co.il/serve/globes/printwindow.asp?did=' + split1[1] + return print_url + + + def preprocess_html(self, soup): + soup.find('tr',attrs={'bgcolor':'black'}).findPrevious('tr').extract() + soup.find('tr',attrs={'bgcolor':'black'}).extract() + return soup + + def fixChars(self,string): + # Replace lsquo (\x91) + fixed = re.sub("\u25a0","\u25a0",string) + return fixed + From 005d39ca45516869b44f303341e8b81026b11773 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 18 Nov 2010 11:13:45 -0700 Subject: [PATCH 048/377] ... --- resources/recipes/globes_co_il.recipe | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/resources/recipes/globes_co_il.recipe b/resources/recipes/globes_co_il.recipe index d82049dcdc..fdbf79f80d 100644 --- a/resources/recipes/globes_co_il.recipe +++ b/resources/recipes/globes_co_il.recipe @@ -16,17 +16,17 @@ class AdvancedUserRecipe1283848012(BasicNewsRecipe): remove_attributes = ['width','style'] - feeds = [(u'\u05e9\u05d5\u05e7 \u05d4\u05d4\u05d5\u05df', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=585'), - (u'\u05e0\u05d3\u05dc"\u05df', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=607'), - (u'\u05d5\u05d5\u05dc \u05e1\u05d8\u05e8\u05d9\u05d8 \u05d5\u05e9\u05d5\u05d5\u05e7\u05d9 \u05d4\u05e2\u05d5\u05dc\u05dd', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=1225'), - (u'\u05e0\u05d9\u05ea\u05d5\u05d7 \u05d8\u05db\u05e0\u05d9', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=1294'), - (u'\u05d4\u05d9\u05d9 \u05d8\u05e7', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=594'), - (u'\u05e0\u05ea\u05d7 \u05e9\u05d5\u05e7 \u05d5\u05e6\u05e8\u05db\u05e0\u05d5\u05ea', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=821'), - (u'\u05d3\u05d9\u05df \u05d5\u05d7\u05e9\u05d1\u05d5\u05df', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=829'), - (u'\u05e8\u05db\u05d1', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=3220'), - (u'\u05d3\u05e2\u05d5\u05ea', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=845'), - (u'\u05e7\u05e0\u05d9\u05d5\u05df \u05d4\u05de\u05e0\u05d9\u05d5\u05ea - \u05d8\u05d5\u05e8 \u05e9\u05d1\u05d5\u05e2\u05d9', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=3175'), - (u'\u05e1\u05d1\u05d9\u05d1\u05d4', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=3221')] + feeds = [(u'שוק ההון', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=585'), + (u'נדל"ן', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=607'), + (u'וול סטריט ושווקי העולם', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=1225'), + (u'ניתוח טכני', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=1294'), + (u'היי טק', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=594'), + (u'נתח שוק וצרכנות', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=821'), + (u'דין וחשבון', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=829'), + (u'רכב', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=3220'), + (u'דעות', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=845'), + (u'קניון המניות - טור שבועי', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=3175'), + (u'סביבה', u'http://www.globes.co.il/webservice/rss/rssfeeder.asmx/FeederNode?iID=3221')] def print_version(self, url): split1 = url.split("=") @@ -41,6 +41,7 @@ class AdvancedUserRecipe1283848012(BasicNewsRecipe): def fixChars(self,string): # Replace lsquo (\x91) - fixed = re.sub("\u25a0","\u25a0",string) + fixed = re.sub("■","■",string) return fixed + From c4e64445c1d8b0421dcf572de873e1812912790a Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 18 Nov 2010 13:31:37 -0700 Subject: [PATCH 049/377] Fix #7549 (Crash after prompt to convert news before uploading to Android phone) --- src/calibre/gui2/device.py | 37 +++++++++++++++++++------------------ src/calibre/gui2/ui.py | 19 ++++++++++++++----- 2 files changed, 33 insertions(+), 23 deletions(-) diff --git a/src/calibre/gui2/device.py b/src/calibre/gui2/device.py index 8d84f69249..048b6e6235 100644 --- a/src/calibre/gui2/device.py +++ b/src/calibre/gui2/device.py @@ -20,8 +20,7 @@ from calibre.gui2.dialogs.choose_format import ChooseFormatDialog from calibre.utils.ipc.job import BaseJob from calibre.devices.scanner import DeviceScanner from calibre.gui2 import config, error_dialog, Dispatcher, dynamic, \ - warning_dialog, \ - question_dialog, info_dialog, choose_dir + warning_dialog, info_dialog, choose_dir from calibre.ebooks.metadata import authors_to_string from calibre import preferred_encoding, prints, force_unicode from calibre.utils.filenames import ascii_filename @@ -665,6 +664,16 @@ class DeviceMixin(object): # {{{ if tweaks['auto_connect_to_folder']: self.connect_to_folder_named(tweaks['auto_connect_to_folder']) + def auto_convert_question(self, msg, autos): + autos = u'\n'.join(map(unicode, map(force_unicode, autos))) + return self.ask_a_yes_no_question( + _('No suitable formats'), msg, + buttons=QMessageBox.Yes|QMessageBox.Cancel, + ans_when_user_unavailable=True, + det_msg=autos, + show_copy_button=False + ) + def set_default_thumbnail(self, height): img = I('book.png', data=True) self.default_thumbnail = thumbnail(img, height, height) @@ -978,11 +987,9 @@ class DeviceMixin(object): # {{{ bad += auto else: autos = [self.library_view.model().db.title(id, index_is_id=True) for id in auto] - autos = '\n'.join('%s'%i for i in autos) - if question_dialog(self, _('No suitable formats'), + if self.auto_convert_question( _('Auto convert the following books before sending via ' - 'email?'), det_msg=autos, - buttons=QMessageBox.Yes|QMessageBox.Cancel): + 'email?'), autos): self.iactions['Convert Books'].auto_convert_mail(to, fmts, delete_from_library, auto, format) if bad: @@ -1085,11 +1092,9 @@ class DeviceMixin(object): # {{{ break if format is not None: autos = [self.library_view.model().db.title(id, index_is_id=True) for id in auto] - autos = '\n'.join('%s'%i for i in autos) - if question_dialog(self, _('No suitable formats'), + if self.auto_convert_question( _('Auto convert the following books before uploading to ' - 'the device?'), det_msg=autos, - buttons=QMessageBox.Yes|QMessageBox.Cancel): + 'the device?'), autos): self.iactions['Convert Books'].auto_convert_catalogs(auto, format) files = [f for f in files if f is not None] if not files: @@ -1170,11 +1175,9 @@ class DeviceMixin(object): # {{{ break if format is not None: autos = [self.library_view.model().db.title(id, index_is_id=True) for id in auto] - autos = '\n'.join('%s'%i for i in autos) - if question_dialog(self, _('No suitable formats'), + if self.auto_convert_question( _('Auto convert the following books before uploading to ' - 'the device?'), det_msg=autos, - buttons=QMessageBox.Yes|QMessageBox.Cancel): + 'the device?'), autos): self.iactions['Convert Books'].auto_convert_news(auto, format) files = [f for f in files if f is not None] for f in files: @@ -1289,11 +1292,9 @@ class DeviceMixin(object): # {{{ bad += auto else: autos = [self.library_view.model().db.title(id, index_is_id=True) for id in auto] - autos = '\n'.join('%s'%i for i in autos) - if question_dialog(self, _('No suitable formats'), + if self.auto_convert_question( _('Auto convert the following books before uploading to ' - 'the device?'), det_msg=autos, - buttons=QMessageBox.Yes|QMessageBox.Cancel): + 'the device?'), autos): self.iactions['Convert Books'].auto_convert(auto, on_card, format) if bad: diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index 0ae15b0caa..d6d534dd40 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -26,7 +26,8 @@ from calibre.utils.ipc.server import Server from calibre.library.database2 import LibraryDatabase2 from calibre.customize.ui import interface_actions from calibre.gui2 import error_dialog, GetMetadata, open_local_file, \ - gprefs, max_available_height, config, info_dialog, Dispatcher + gprefs, max_available_height, config, info_dialog, Dispatcher, \ + question_dialog from calibre.gui2.cover_flow import CoverFlowMixin from calibre.gui2.widgets import ProgressIndicator from calibre.gui2.update import UpdateMixin @@ -181,9 +182,8 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, # {{{ self.connect(self.donate_action, SIGNAL('triggered(bool)'), self.donate) self.connect(self.restore_action, SIGNAL('triggered()'), self.show_windows) - self.connect(self.system_tray_icon, - SIGNAL('activated(QSystemTrayIcon::ActivationReason)'), - self.system_tray_icon_activated) + self.system_tray_icon.activated.connect( + self.system_tray_icon_activated) ####################### Start spare job server ######################## @@ -250,7 +250,6 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, # {{{ self.keyboard_interrupt.connect(self.quit, type=Qt.QueuedConnection) - self.read_settings() self.finalize_layout() if self.tool_bar.showing_donate: @@ -301,6 +300,16 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, # {{{ else: self.show_windows() + @property + def is_minimized_to_tray(self): + return getattr(self, '__systray_minimized', False) + + def ask_a_yes_no_question(self, title, msg, **kwargs): + awu = kwargs.pop('ans_when_user_unavailable', True) + if self.is_minimized_to_tray: + return awu + return question_dialog(self, title, msg, **kwargs) + def hide_windows(self): for window in QApplication.topLevelWidgets(): if isinstance(window, (MainWindow, QDialog)) and \ From b1785e31d2dfea776b6bda973c89f31d9995f36d Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 18 Nov 2010 15:29:21 -0700 Subject: [PATCH 050/377] Hannoversche Allgemeine Zeitung by Artemis --- resources/recipes/hannoversche_zeitung.recipe | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 resources/recipes/hannoversche_zeitung.recipe diff --git a/resources/recipes/hannoversche_zeitung.recipe b/resources/recipes/hannoversche_zeitung.recipe new file mode 100644 index 0000000000..8c0da596e5 --- /dev/null +++ b/resources/recipes/hannoversche_zeitung.recipe @@ -0,0 +1,38 @@ +from calibre.web.feeds.news import BasicNewsRecipe + +class AdvancedUserRecipe1287519083(BasicNewsRecipe): + title = u'Hannoversche Allgemeine Zeitung' + oldest_article = 1 + __author__ = 'Artemis' + max_articles_per_feed = 30 + language = 'de' + no_stylesheets = True + + feeds = [ + #(u'Schlagzeilen', u'http://www.haz.de/rss/feed/haz_schlagzeilen'), + (u'Politik', u'http://www.haz.de/rss/feed/haz_politik'), + (u'Wirtschaft', u'http://www.haz.de/rss/feed/haz_wirtschaft'), + (u'Panorama', u'http://www.haz.de/rss/feed/haz_panorama'), + (u'Wissen', u'http://www.haz.de/rss/feed/haz_wissen'), + (u'Kultur', u'http://www.haz.de/rss/feed/haz_kultur'), + (u'Sp\xe4tvorstellung', u'http://www.haz.de/rss/feed/haz_spaetvorstellung'), + (u'Hannover & Region', u'http://www.haz.de/rss/feed/haz_hannoverregion'), + (u'Netzgefl\xfcster', u'http://www.haz.de/rss/feed/haz_netzgefluester'), + (u'Meinung', u'http://www.haz.de/rss/feed/haz_meinung'), + (u'ZiSH', u'http://www.haz.de/rss/feed/haz_zish'), + (u'Medien', u'http://www.haz.de/rss/feed/haz_medien'), + #(u'Sport', u'http://www.haz.de/rss/feed/haz_sport'), + #(u'Hannover 96', u'http://www.haz.de/rss/feed/haz_hannover96') + ] + + remove_tags_before =dict(id='modul_artikel') + remove_tags_after =dict(id='articlecontent') + + remove_tags = dict(id='articlesidebar') + + remove_tags = [ + dict(name='div', attrs={'class':['articlecomment', + 'articlebookmark', 'teaser_anzeige', 'teaser_umfrage', + 'navigation', 'subnavigation']}) + ] + From 573bd095553989708dee40d7d1b274f4c402f9ac Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 18 Nov 2010 15:55:27 -0700 Subject: [PATCH 051/377] Do not display conversion error messages when minimized to tray --- src/calibre/gui2/ui.py | 50 +++++++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index d6d534dd40..13bba4f27c 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -437,31 +437,34 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, # {{{ def job_exception(self, job): if not hasattr(self, '_modeless_dialogs'): self._modeless_dialogs = [] + minz = self.is_minimized_to_tray if self.isVisible(): for x in list(self._modeless_dialogs): if not x.isVisible(): self._modeless_dialogs.remove(x) try: if 'calibre.ebooks.DRMError' in job.details: - d = error_dialog(self, _('Conversion Error'), - _('

    Could not convert: %s

    It is a ' - 'DRMed book. You must first remove the ' - 'DRM using third party tools.')%\ - (job.description.split(':')[-1], - 'http://bugs.calibre-ebook.com/wiki/DRM')) - d.setModal(False) - d.show() - self._modeless_dialogs.append(d) + if not minz: + d = error_dialog(self, _('Conversion Error'), + _('

    Could not convert: %s

    It is a ' + 'DRMed book. You must first remove the ' + 'DRM using third party tools.')%\ + (job.description.split(':')[-1], + 'http://bugs.calibre-ebook.com/wiki/DRM')) + d.setModal(False) + d.show() + self._modeless_dialogs.append(d) return if 'calibre.web.feeds.input.RecipeDisabled' in job.details: - msg = job.details - msg = msg[msg.find('calibre.web.feeds.input.RecipeDisabled:'):] - msg = msg.partition(':')[-1] - d = error_dialog(self, _('Recipe Disabled'), - '

    %s

    '%msg) - d.setModal(False) - d.show() - self._modeless_dialogs.append(d) + if not minz: + msg = job.details + msg = msg[msg.find('calibre.web.feeds.input.RecipeDisabled:'):] + msg = msg.partition(':')[-1] + d = error_dialog(self, _('Recipe Disabled'), + '

    %s

    '%msg) + d.setModal(False) + d.show() + self._modeless_dialogs.append(d) return except: pass @@ -471,12 +474,13 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, # {{{ prints(job.details, file=sys.stderr) except: pass - d = error_dialog(self, _('Conversion Error'), - _('Failed')+': '+unicode(job.description), - det_msg=job.details) - d.setModal(False) - d.show() - self._modeless_dialogs.append(d) + if not minz: + d = error_dialog(self, _('Conversion Error'), + _('Failed')+': '+unicode(job.description), + det_msg=job.details) + d.setModal(False) + d.show() + self._modeless_dialogs.append(d) def read_settings(self): geometry = config['main_window_geometry'] From 2b888a4add647821774fbf92ea7807bbdf435af9 Mon Sep 17 00:00:00 2001 From: ldolse Date: Fri, 19 Nov 2010 10:03:56 +0800 Subject: [PATCH 052/377] fix a problem with pdf unwrap_factor getting set to 0.0 --- src/calibre/gui2/convert/pdf_input.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/gui2/convert/pdf_input.py b/src/calibre/gui2/convert/pdf_input.py index 967a0fe234..f1ef7d24ee 100644 --- a/src/calibre/gui2/convert/pdf_input.py +++ b/src/calibre/gui2/convert/pdf_input.py @@ -22,5 +22,5 @@ class PluginWidget(Widget, Ui_Form): def set_value_handler(self, g, val): if val is None and isinstance(g, QDoubleSpinBox): - g.setValue(0.0) + g.setValue(0.45) return True From b8b336d8b65b5958d6425f84cb18e5f8eb21a1d5 Mon Sep 17 00:00:00 2001 From: Translators <> Date: Fri, 19 Nov 2010 04:48:01 +0000 Subject: [PATCH 053/377] Launchpad automatic translations update. --- src/calibre/translations/cs.po | 67 +- src/calibre/translations/el.po | 7843 +++++++++++++++++++------------- 2 files changed, 4639 insertions(+), 3271 deletions(-) diff --git a/src/calibre/translations/cs.po b/src/calibre/translations/cs.po index 17629ff04e..7c810a50c3 100644 --- a/src/calibre/translations/cs.po +++ b/src/calibre/translations/cs.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-11-12 23:11+0000\n" -"PO-Revision-Date: 2010-11-17 17:23+0000\n" -"Last-Translator: Aleš Bajtalon \n" +"PO-Revision-Date: 2010-11-18 20:58+0000\n" +"Last-Translator: Marek Sušický \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-18 04:44+0000\n" +"X-Launchpad-Export-Date: 2010-11-19 04:47+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -423,7 +423,7 @@ msgstr "Rozšířené" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:869 msgid "Add/remove/customize various bits of calibre functionality" -msgstr "" +msgstr "Přidat/odebrat/nastavit různé funkce calibre." #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:875 msgid "Tweaks" @@ -431,7 +431,7 @@ msgstr "Vylepšení" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:881 msgid "Fine tune how calibre behaves in various contexts" -msgstr "" +msgstr "Doladit chování calibre v různých situacích" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886 msgid "Miscellaneous" @@ -975,6 +975,8 @@ msgid "" "\".kobo\" files do not exist on the device as books instead, they are rows " "in the sqlite database. Currently they cannot be exported or viewed." msgstr "" +"\".kobo\" soubory neexistují na zařízení jako knihy, jsou to řádky v sqlite " +"databázi. V současnosti nemohou být exportovány ani prohlíženy." #: /home/kovid/work/calibre/src/calibre/devices/misc.py:17 msgid "Communicate with the Palm Pre" @@ -3212,7 +3214,7 @@ msgstr "číslování knih v sérii římskými číslicemi" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:77 msgid "Sort tags list by name, popularity, or rating" -msgstr "" +msgstr "Seřadit tagy podle jména, popularity, nebo hodnocení" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:79 msgid "Number of covers to show in the cover browsing mode" @@ -3296,7 +3298,7 @@ msgstr "Rozvržení uživatelského rozhraní" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 msgid "Show the average rating per item indication in the tag browser" -msgstr "" +msgstr "Ukaž průměrné hodnocení na položku v tag prohlížeči" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:135 msgid "Disable UI animations" @@ -3401,7 +3403,7 @@ msgstr "MOBI knihy" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 msgid "Topaz books" -msgstr "" +msgstr "Topaz knihy" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:167 msgid "Text books" @@ -3506,7 +3508,7 @@ msgstr "Nejsou označeny žádné knihy" #: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:65 msgid "No books selected to fetch annotations from" -msgstr "" +msgstr "Nevybrané žádné knihy pro načtení anotací" #: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:90 msgid "Merging user annotations into database" @@ -3712,6 +3714,8 @@ msgid "" "Metadata will be backed up while calibre is running, at the rate of " "approximately 1 book per second." msgstr "" +"Metadata budou zazálohována během běhu calibre rychlostí zhruba 1kniha za " +"sekundu." #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:344 msgid "" @@ -4506,18 +4510,20 @@ msgstr "..." #: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:72 msgid "Handle multiple files per book" -msgstr "" +msgstr "Pracovat s více soubory ke knize" #: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:73 msgid "" "&One book per folder, assumes every ebook file in a folder is the same book " "in a different format" msgstr "" +"&Jedna kniha na složku znamená, že každý ebook soubor ve složce je ta samá " +"kniha v jiném formátu" #: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:74 msgid "" "&Multiple books per folder, assumes every ebook file is a different book" -msgstr "" +msgstr "&Více knih ve složce znamené, že každý ebook soubor je různá kniha" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:25 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:49 @@ -4595,7 +4601,7 @@ msgstr "BibTeX volby" #: /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 "Možnosti specifické pro" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 @@ -4700,7 +4706,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:96 msgid "mixed" -msgstr "" +msgstr "smíšený" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:97 msgid "misc" @@ -4768,7 +4774,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:85 msgid "Include 'Recently Added' Section" -msgstr "" +msgstr "Zahrň sekci Nedávno přidané" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:86 msgid "Sort numbers as text" @@ -4776,7 +4782,7 @@ msgstr "Řadit čísla jako text" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:87 msgid "Include 'Series' Section" -msgstr "" +msgstr "Zahrň sekci Série" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:33 msgid "Tab template for catalog.ui" @@ -4905,7 +4911,7 @@ msgstr "Neplatný debug adresář" #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:59 msgid "Failed to create debug directory" -msgstr "" +msgstr "Nepodařilo se vytvořit ladící adresář" #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:55 msgid "" @@ -4967,7 +4973,7 @@ msgstr "FB2 Výstup" #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:34 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:52 msgid "&Inline TOC" -msgstr "" +msgstr "&Inline TOC" #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:38 msgid "Sectionize Chapters (Use with care!)" @@ -6814,7 +6820,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:398 msgid "Test &text" -msgstr "" +msgstr "Testovací &text" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:399 msgid "Test re&sult" @@ -6826,7 +6832,7 @@ msgstr "Váš test:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:401 msgid "&Search and replace" -msgstr "" +msgstr "Najít a nahradit" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:91 msgid "Last modified: %s" @@ -6838,11 +6844,11 @@ msgstr "Není platný obrázek" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:150 msgid "Specify title and author" -msgstr "" +msgstr "Vybrat název a autora" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:151 msgid "You must specify a title and author before generating a cover" -msgstr "" +msgstr "Před generováním obálky musíte určit název a autora" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:169 msgid "Choose formats for " @@ -6850,7 +6856,7 @@ msgstr "Zvolte formát pro " #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:200 msgid "No permission" -msgstr "" +msgstr "Nedostatečná práva" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:201 msgid "You do not have permission to read the following files:" @@ -6893,6 +6899,8 @@ msgid "" " The red color indicates that the current author sort does not match the " "current author" msgstr "" +" Červená barva znamená, že současné třídění podle autora se neshoduje se " +"současným autorem" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:359 msgid "Abort the editing of all remaining books" @@ -6928,13 +6936,13 @@ msgstr "Stáhnout obálku..." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:662 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:667 msgid "Cannot fetch cover" -msgstr "" +msgstr "Nemohu stáhnout obálku" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:652 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:663 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:668 msgid "Could not fetch cover.
    " -msgstr "" +msgstr "Nemohu stáhnout obálku.
    " #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:653 msgid "The download timed out." @@ -6948,6 +6956,7 @@ msgstr "Nemohu najít obal pro tuto knihu. Zkuste nejdříve zadat ISBN." msgid "" "For the error message from each cover source, click Show details below." msgstr "" +"Pro chybu z každého obálkového zdroje klikněte na Zobrazit detaily. (dole)" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:676 msgid "Bad cover" @@ -6963,7 +6972,7 @@ msgstr "Nastaly chyby" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:711 msgid "There were errors downloading social metadata" -msgstr "" +msgstr "Během stahování sociálních metadat došlo k chybám" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:742 msgid "Cannot fetch metadata" @@ -6989,7 +6998,7 @@ msgstr "Edituj metainformace" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:372 msgid "Meta information" -msgstr "" +msgstr "Meta informace" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375 msgid "Swap the author and title" @@ -6997,7 +7006,7 @@ msgstr "Prohodit autora a název" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:378 msgid "Author S&ort: " -msgstr "" +msgstr "Řazení dle autora: " #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:379 msgid "" @@ -7069,11 +7078,11 @@ msgstr "&Listovat" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:417 msgid "Remove border (if any) from cover" -msgstr "" +msgstr "Odstranit pozadí z obálky" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:418 msgid "T&rim" -msgstr "" +msgstr "Oříznout" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:419 msgid "Reset cover to default" diff --git a/src/calibre/translations/el.po b/src/calibre/translations/el.po index 65824c5de8..fc37eecd60 100644 --- a/src/calibre/translations/el.po +++ b/src/calibre/translations/el.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2010-08-27 18:12+0000\n" -"PO-Revision-Date: 2010-08-27 20:29+0000\n" -"Last-Translator: Kovid Goyal \n" +"POT-Creation-Date: 2010-11-12 23:11+0000\n" +"PO-Revision-Date: 2010-11-18 10:45+0000\n" +"Last-Translator: MasterCom7 \n" "Language-Team: Greek \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-08-28 03:37+0000\n" +"X-Launchpad-Export-Date: 2010-11-19 04:48+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -22,62 +22,71 @@ 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/hanvon/driver.py:87 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:88 +#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:74 #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:76 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/books.py:24 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:444 #: /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/sony_cache.py:522 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:405 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:650 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:56 #: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:407 -#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:70 -#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:72 -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:336 -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:339 +#: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:124 +#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:93 +#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:95 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:343 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:346 #: /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:240 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:283 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:286 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:402 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:20 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:21 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:231 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:30 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:31 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:71 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:373 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:378 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:606 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:36 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:61 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:46 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:333 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:50 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:354 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:36 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:123 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:125 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:945 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1057 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:124 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:126 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1022 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134 #: /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/snb.py:16 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/txt.py:14 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:39 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:65 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:78 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:119 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:153 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:611 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:817 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:819 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:620 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:826 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:828 #: /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:911 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:916 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:982 -#: /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:108 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:913 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:918 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:984 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:143 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:150 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:64 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:112 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:118 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:173 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:174 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:39 @@ -100,53 +109,52 @@ msgstr "Δεν κάνει τίποτα" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:98 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:247 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:249 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:323 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:330 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:289 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:292 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:179 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:41 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:111 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:136 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:138 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:869 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:878 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1163 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1166 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:239 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:279 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:282 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:927 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:936 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1249 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1252 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:513 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:173 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:362 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:382 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1060 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:96 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:186 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:571 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:395 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:918 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1112 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:189 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:215 #: /home/kovid/work/calibre/src/calibre/library/database.py:913 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:362 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:374 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1007 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1076 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1760 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1762 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1889 -#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:201 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:136 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:399 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:411 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1283 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1387 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2161 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2163 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2295 +#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:229 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:139 -#: /home/kovid/work/calibre/src/calibre/library/server/xml.py:70 -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:117 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:142 +#: /home/kovid/work/calibre/src/calibre/library/server/xml.py:78 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:118 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:46 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:64 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:78 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:47 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:50 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:55 msgid "Unknown" msgstr "Άγνωστο" @@ -170,19 +178,21 @@ msgstr "Εγγραφέας metadata" msgid "Catalog generator" msgstr "Δημιουργία καταλόγου" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:366 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:369 msgid "User Interface Action" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:376 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:386 #: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:22 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:605 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:206 msgid "Preferences" msgstr "Προτιμήσεις" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:17 +#: /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 " @@ -192,7 +202,7 @@ msgstr "" "ένα αρχείο ZIP που περιέχει όλα τα συνδεδεμένα αρχεία. Το plugin τρέχει κάθε " "φορά που προσθέτετε ένα αρχείο HTML στην βιβλιοθήκη." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:53 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:51 msgid "" "Character encoding for the input HTML files. Common choices include: cp1252, " "latin1, iso-8859-1 and utf-8." @@ -200,7 +210,7 @@ msgstr "" "Κωδικοποίηση χαρακτήρων για τα εισαγόμενα αρχεία HTML. Συνήθεις επιλογές " "συμπεριλαμβάνουν : cp1252, latin1, iso-8859-1 και utf-8" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:60 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:58 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 " @@ -209,7 +219,7 @@ msgstr "" "Δημιουργία μιας αρχειοθήκης PMLZ που περιέχει το αρχείο PML και όλες τις " "εικόνες στον κατάλογο pmlname_img ή images" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:94 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:92 msgid "Extract cover from comic files" msgstr "Εξαγωγή εξωφύλλου από αρχεία κόμικς" @@ -224,51 +234,211 @@ msgstr "Εξαγωγή εξωφύλλου από αρχεία κόμικς" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:205 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:215 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:225 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:236 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:247 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:259 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:280 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:291 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:301 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:235 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:246 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:258 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:279 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:290 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:300 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:311 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:321 msgid "Read metadata from %s files" msgstr "Ανάγνωση συνδεδομένων από αρχεία %s" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:270 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:269 msgid "Read metadata from ebooks in RAR archives" msgstr "Ανάγνωση συνδεδομένων από ηλεκτρονικά βιβλία μέσα σε αρχειοθήκες RAR" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:322 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:332 msgid "Read metadata from ebooks in ZIP archives" msgstr "Ανάγνωση συνδεδομένων από ηλεκτρονικά βιβλία μέσα σε αρχειοθήκες ZIP" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:335 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:345 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:355 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:377 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:388 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:365 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:387 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:398 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:408 msgid "Set metadata in %s files" msgstr "Καθορισμός συνδεδομένων σε αρχεία %s" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:366 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:376 msgid "Set metadata from %s files" msgstr "Καθορισμός συνδεδομένων από αρχεία %s" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:681 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:712 msgid "Look and Feel" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:682 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:199 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:714 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:726 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:737 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:748 msgid "Interface" msgstr "Διεπαφή" +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:718 +msgid "Adjust the look and feel of the calibre interface to suit your tastes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:724 +msgid "Behavior" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:730 +msgid "Change the way calibre behaves" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:209 +msgid "Add your own columns" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:741 +msgid "Add/remove your own columns to the calibre book list" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746 +msgid "Customize the toolbar" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:752 +msgid "" +"Customize the toolbars and context menus, changing which actions are " +"available in each" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:758 +msgid "Input Options" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:760 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:771 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:782 +msgid "Conversion" +msgstr "Μετατροπή" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:764 +msgid "Set conversion options specific to each input format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769 +msgid "Common Options" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:775 +msgid "Set conversion options common to all formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780 +msgid "Output Options" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:786 +msgid "Set conversion options specific to each output format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791 +msgid "Adding books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:793 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:805 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:817 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:829 +msgid "Import/Export" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:797 +msgid "Control how calibre reads metadata from files when adding books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:803 +msgid "Saving books to disk" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:809 +msgid "" +"Control how calibre exports files from its database to disk when using Save " +"to disk" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:815 +msgid "Sending books to devices" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:821 +msgid "Control how calibre transfers files to your ebook reader" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:827 +msgid "Metadata plugboards" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:833 +msgid "Change metadata fields before saving/sending" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838 +msgid "Sharing books by email" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:840 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:852 +msgid "Sharing" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:844 +msgid "" +"Setup sharing of books via email. Can be used for automatic sending of " +"downloaded news to your devices" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:850 +msgid "Sharing over the net" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:856 +msgid "" +"Setup the calibre Content Server which will give you access to your calibre " +"library from anywhere, on any device, over the internet" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863 +msgid "Plugins" +msgstr "Πρόσθετα" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:865 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:877 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:888 +msgid "Advanced" +msgstr "Για προχωρημένους" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:869 +msgid "Add/remove/customize various bits of calibre functionality" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:875 +msgid "Tweaks" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:881 +msgid "Fine tune how calibre behaves in various contexts" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886 +msgid "Miscellaneous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:892 +msgid "Miscellaneous advanced configuration" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/customize/conversion.py:102 msgid "Conversion Input" msgstr "Εισαγωγή (δεδομένων) προς μετατροπή" -#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:129 +#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:134 msgid "" "Specify the character encoding of the input document. If set this option " "will override any encoding declared by the document itself. Particularly " @@ -281,11 +451,11 @@ msgstr "" "για έγγραφα που δεν δηλώνουν κωδικοποίηση ή διαθέτουν εσφαλμένη δήλωση " "κωδικοποίησης." -#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:241 +#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:246 msgid "Conversion Output" msgstr "Εξαγωγή (δεδομένων) από μετατροπή" -#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:255 +#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:260 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." @@ -294,11 +464,11 @@ msgstr "" "εξαγόμενα όσο το δυνατόν ανθρωπίνως αναγνώσιμα. Για ορισμένα πρόσθετα εξόδου " "μπορεί να μην έχει κανένα αποτέλεσμα." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:45 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:47 msgid "Input profile" msgstr "Περίγραμμα εισόδου" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:49 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:51 msgid "" "This profile tries to provide sane defaults and is useful if you know " "nothing about the input document." @@ -306,84 +476,84 @@ msgstr "" "Αυτό το περίγραμμα προσπαθεί να παρέχει λογικά προτερόθετα (αρχικές τιμές) " "και είναι χρήσιμο αν δε γνωρίζετε τίποτα για το εισαγόμενο έγγραφο." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:57 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:414 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:59 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:444 msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "" "Αυτό το περίγραμμα προορίζεται για τη σειρά SONY PRS. Τα 500/505/600/700 κλπ." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:69 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:71 msgid "This profile is intended for the SONY PRS 300." msgstr "Αυτό το περίγραμμα προορίζεται για το SONY PRS 300." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:78 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:449 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:80 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:484 msgid "This profile is intended for the SONY PRS-900." msgstr "Αυτό το περίγραμμα προορίζεται για το SONY PRS-900." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:86 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:479 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:88 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:513 msgid "This profile is intended for the Microsoft Reader." msgstr "Αυτό το περίγραμμα προορίζεται για το Microsoft Reader." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:97 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:490 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:99 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:524 msgid "This profile is intended for the Mobipocket books." msgstr "Αυτό το περίγραμμα προορίζεται για τα βιβλία Mobipocket." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:110 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:503 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:112 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:537 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "" "Αυτό το περίγραμμα προορίζεται για το Hanlin V3 και τους κλώνους του." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:122 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:515 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:124 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:549 msgid "This profile is intended for the Hanlin V5 and its clones." msgstr "" "Αυτό το περίγραμμα προορίζεται για το Hanlin V5 και τους κλώνους του." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:132 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:523 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:134 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:557 msgid "This profile is intended for the Cybook G3." msgstr "Αυτό το περίγραμμα προορίζεται για το Cybook G3." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:145 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:536 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:147 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:570 msgid "This profile is intended for the Cybook Opus." msgstr "Αυτό το περίγραμμα προορίζεται για το Cybook Opus." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:157 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:547 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:159 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:583 msgid "This profile is intended for the Amazon Kindle." msgstr "Αυτό το περίγραμμα προορίζεται για το Amazon Kindle." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:169 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:584 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:171 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:631 msgid "This profile is intended for the Irex Illiad." msgstr "Αυτό το περίγραμμα προορίζεται για το Irex Illiad." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:181 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:597 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:183 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "Αυτό το περίγραμμα προορίζεται για το IRex Digital Reader 1000." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:194 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:611 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:196 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 msgid "This profile is intended for the IRex Digital Reader 800." msgstr "Αυτό το περίγραμμα προορίζεται για το IRex Digital Reader 800." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:206 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:625 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:208 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 msgid "This profile is intended for the B&N Nook." msgstr "Αυτό το περίγραμμα προορίζεται για το B&N Nook." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:228 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:230 msgid "Output profile" msgstr "Περίγραμμα εξαγομένων" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:232 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:234 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 " @@ -393,24 +563,28 @@ msgstr "" "και είναι χρήσιμο για την παραγωγή εγγράφων που προορίζονται να διαβαστούν " "σε Η/Υ ή σε μια ποικιλία συσκευών." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:259 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:276 msgid "" "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "Προορίζεται για το iPad και παρόμοιες συσκευές με ανάλυση 768x1024" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:427 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:435 +msgid "Intended for generic tablet devices, does no resizing of images" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:462 msgid "This profile is intended for the Kobo Reader." msgstr "Αυτό το περίγραμμα προορίζεται για το Kobo Reader." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:440 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:475 msgid "This profile is intended for the SONY PRS-300." msgstr "Αυτό το περίγραμμα προορίζεται για το SONY PRS-300." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:458 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:493 msgid "This profile is intended for the 5-inch JetBook." msgstr "Αυτό το περίγραμμα προορίζεται για το JetBook 5 ιντσών." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:467 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:502 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." @@ -418,10 +592,14 @@ msgstr "" "Αυτό το περίγραμμα προορίζεται για τη σειρά SONY PRS. Τα 500/505/700 κλπ., " "σε οριζόντια διάταξη (landscape). Χρήσιμο κυρίως για κόμικς." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:566 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:609 msgid "This profile is intended for the Amazon Kindle DX." msgstr "Αυτό το περίγραμμα προορίζεται για το Amazon Kindle DX." +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:686 +msgid "This profile is intended for the Sanda Bambook." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/customize/ui.py:34 msgid "Installed plugins" msgstr "Εγκατεστημένα πρόσθετα" @@ -442,15 +620,15 @@ msgstr "Απενεργοποιημένα πρόσθετα" msgid "Enabled plugins" msgstr "Ενεργοποιημένα πρόσθετα" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:86 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:93 msgid "No valid plugin found in " msgstr "Δεν βρέθηκε έγκυρο πρόσθετο " -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:501 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:508 msgid "Initialization of plugin %s failed with traceback:" msgstr "Η αρχικοποίηση του πρόσθετου %s απέτυχε με traceback:" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:534 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:541 msgid "" " %prog options\n" "\n" @@ -462,19 +640,19 @@ msgstr "" " Εξατομίκευση του calibre με φόρτωση εξωτερικών προσθέτων.\n" " " -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:540 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:547 msgid "Add a plugin by specifying the path to the zip file containing it." msgstr "" "Προσθήκη ενός προσθέτου με προσδιορισμό της διεύθυνσης (path) του αρχείου " "zip που το περιέχει." -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:542 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:549 msgid "Remove a custom plugin by name. Has no effect on builtin plugins" msgstr "" "Αφαίρεση εξατομικευμένων προσθέτων, ονομαστικά. Δεν επηρεάζει τα " "ενσωματωμένα πρόσθετα" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:544 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:551 msgid "" "Customize plugin. Specify name of plugin and customization string separated " "by a comma." @@ -482,15 +660,15 @@ msgstr "" "Εξατομίκευση προσθέτου. Προσδιόρισε όνομα προσθέτου και στοιχειοσειρά " "εξατομίκευσης χωρισμένα με κόμμα." -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:546 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:553 msgid "List all installed plugins" msgstr "Εμφάνιση όλων των εγκατεστημένων πρόσθετων" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:548 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:555 msgid "Enable the named plugin" msgstr "Ενεργοποίηση του ονομαζόμενου προσθέτου" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:550 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:557 msgid "Disable the named plugin" msgstr "Απενεργοποίηση του ονομαζόμενου προσθέτου" @@ -498,7 +676,7 @@ msgstr "Απενεργοποίηση του ονομαζόμενου προσθ msgid "Communicate with Android phones." msgstr "Επικοινωνία με τηλέφωνα Android." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:50 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:56 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" @@ -506,72 +684,92 @@ msgstr "" "Σειρά καταλόγων στη συσκευή, χωρισμένων με κόμμα, προς αποστολή ηλεκτρονικών " "βιβλίων. Ο πρώτος στη σειρά θα χρησιμοποιηθεί." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:92 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:98 msgid "Communicate with S60 phones." msgstr "Επικοινωνία με τηλέφωνα S60." -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:87 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:90 +msgid "Apple device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:92 msgid "Communicate with iTunes/iBooks." msgstr "Επικοινωνία με iTunes/iBook" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:93 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:98 msgid "Apple device detected, launching iTunes, please wait ..." msgstr "Συσκευή της Apple εντοπίστηκε, έναρξη iTunes, παρακαλώ περιμένετε..." -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:246 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:249 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:100 +msgid "" +"Cannot copy books directly from iDevice. Drag from iTunes Library to " +"desktop, then add to calibre's Library window." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:260 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:263 msgid "Updating device metadata listing..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:323 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:362 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:921 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:957 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2822 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2861 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:339 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:378 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:947 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:987 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2956 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2996 msgid "%d of %d" msgstr "%d από %d" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:369 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:962 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2867 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:385 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:992 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3002 msgid "finished" msgstr "ολοκληρώθηκε" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:544 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:560 msgid "Use Series as Category in iTunes/iBooks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:546 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:562 msgid "Cache covers from iTunes/iBooks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:558 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:574 msgid "" "Some books not found in iTunes database.\n" "Delete using the iBooks app.\n" "Click 'Show Details' for a list." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:886 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:911 msgid "" "Some cover art could not be converted.\n" "Click 'Show Details' for a list." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2491 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:817 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:823 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:851 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:244 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:190 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:203 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1644 -#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:132 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2553 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:444 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:467 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:882 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:888 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:918 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:257 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:212 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:225 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2021 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:149 msgid "News" msgstr "Νέα" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2729 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2554 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:556 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1984 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2002 +msgid "Catalog" +msgstr "Κατάλογος" + +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2860 msgid "Communicate with iTunes." msgstr "Επικοινωνία με το iTunes" @@ -622,11 +820,11 @@ msgid "Communicate with the Sigmatek eBook reader." msgstr "Επικοινωνία με το Sigmatek eBook reader." #: /home/kovid/work/calibre/src/calibre/devices/folder_device/driver.py:16 -#: /home/kovid/work/calibre/src/calibre/devices/folder_device/driver.py:30 +#: /home/kovid/work/calibre/src/calibre/devices/folder_device/driver.py:32 msgid "Use an arbitrary folder as a device." msgstr "Επιλογή τυχαίου φακέλου ως συσκευή" -#: /home/kovid/work/calibre/src/calibre/devices/folder_device/driver.py:26 +#: /home/kovid/work/calibre/src/calibre/devices/folder_device/driver.py:28 #: /home/kovid/work/calibre/src/calibre/devices/interface.py:14 msgid "Device Interface" msgstr "Διεπαφή συσκευής" @@ -649,23 +847,32 @@ msgid "" "first one that exists will be used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:18 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:22 msgid "Communicate with the Hanvon N520 eBook reader." msgstr "Επικοινωνία με το ηλ.αναγνωστήριο Hanvon N520." -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:40 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:47 msgid "Communicate with The Book reader." msgstr "Επικοινωνία με το ηλ.αναγνωστήριο." -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:52 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:59 msgid "Communicate with the SpringDesign Alex eBook reader." msgstr "Επικοινωνία με το ηλ.αναγνωστήριο SpringDesign Alex." -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:68 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:102 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:113 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:264 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:296 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:256 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:274 +msgid "Removing books from device..." +msgstr "Αφαίρεση βιβλίων από τη συσκευή..." + +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:119 msgid "Communicate with the Azbooka" msgstr "Επικοινωνία με το Azbooka" -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:81 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:138 msgid "Communicate with the Elonex EB 511 eBook reader." msgstr "Επικοινωνία με το ηλ.αναγνωστήριο Elonex EB 511." @@ -679,6 +886,10 @@ msgstr "Επικοινωνία με το ηλ.αναγνωστήριο IRex Ilia msgid "John Schember" msgstr "John Schember" +#: /home/kovid/work/calibre/src/calibre/devices/interface.py:44 +msgid "Cannot get files from this device" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/irexdr/driver.py:16 msgid "Communicate with the IRex Digital Reader 1000 eBook reader." msgstr "Επικοινωνία με το ηλ.αναγνωστήριο IRex Digital Reader 1000." @@ -695,10 +906,14 @@ msgstr "Επικοινωνία με το Iriver Story reader." msgid "Communicate with the JetBook eBook reader." msgstr "Επικοινωνία με το ηλ.αναγνωστήριο JetBook." -#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:86 +#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:88 msgid "Communicate with the MiBuk Wolder reader." msgstr "Επικοινωνία με το MiBuk Wolder reader." +#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:116 +msgid "Communicate with the JetBook Mini reader." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:43 msgid "Communicate with the Kindle eBook reader." msgstr "Επικοινωνία με το ηλ.αναγνωστήριο Kindle." @@ -711,14 +926,20 @@ msgstr "" msgid "Communicate with the Kindle DX eBook reader." msgstr "Επικοινωνία με το ηλ.αναγνωστήριο Kindle DX." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:22 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:23 msgid "Communicate with the Kobo Reader" msgstr "Επικοινωνία με το Kobo Reader" -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:53 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:56 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:59 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:170 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:49 +msgid "" +"The Kobo supports only one collection currently: the \"Im_Reading\" list. " +"Create a tag called \"Im_Reading\" " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:65 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:68 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:71 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:204 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:68 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:71 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:74 @@ -728,33 +949,26 @@ msgstr "Επικοινωνία με το Kobo Reader" msgid "Getting list of books on device..." msgstr "Λήψη καταλόγου των βιβλίων στη συσκευή..." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:230 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:274 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:253 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:271 -msgid "Removing books from device..." -msgstr "Αφαίρεση βιβλίων από τη συσκευή..." - -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:278 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:285 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:278 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:283 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:300 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:307 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:281 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:286 msgid "Removing books from device metadata listing..." msgstr "Αφαίρεση βιβλίων από τον κατάλογο συνδεδομένων της συσκευής..." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:290 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:324 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:217 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:247 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:312 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:347 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:219 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:250 msgid "Adding books to device metadata listing..." msgstr "Προσθήκη βιβλίων στον κατάλογο συνδεδομένων της συσκευής..." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:375 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:251 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:424 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:258 msgid "Not Implemented" msgstr "Δεν έχει υλοποιηθεί" -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:376 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:425 msgid "" "\".kobo\" files do not exist on the device as books instead, they are rows " "in the sqlite database. Currently they cannot be exported or viewed." @@ -773,20 +987,33 @@ msgid "Communicate with the Sweex MM300" msgstr "Επικοινωνία με το Sweex MM300" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:79 +msgid "Communicate with the Digma Q600" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:88 msgid "Communicate with the Kogan" msgstr "Επικοινωνία με το Kogan" -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:87 +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:96 +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:123 msgid "Communicate with the Pandigital Novel" msgstr "Επικοινωνία με το Pandigital Novel" +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:142 +msgid "Communicate with the VelocityMicro" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:160 +msgid "Communicate with the GM2000" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:17 msgid "Communicate with the Nokia 770 internet tablet." msgstr "Επικοινωνία με το Nokia 770 internet tablet." #: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:40 -msgid "Communicate with the Nokia 810 internet tablet." -msgstr "Επικοινωνία με το Nokia 810 internet tablet." +msgid "Communicate with the Nokia 810/900 internet tablet." +msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:74 msgid "Communicate with the Nokia E52" @@ -800,6 +1027,14 @@ msgstr "Το Nook" msgid "Communicate with the Nook eBook reader." msgstr "Επικοινωνία με το ηλ.αναγνωστήριο Nook." +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 +msgid "Nook Color" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 +msgid "Communicate with the Nook Color eBook reader." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." msgstr "Επικοινωνία με το ηλ.αναγνωστήριο Nuut2." @@ -820,7 +1055,7 @@ msgstr "" "Κατάλογος πεδίων συνδεδομένων, χωρισμένων με κόμμα, στη συσκευή, προς " "μετατροπή σε συλλογές. Οι πιθανότητες συμπεριλαμβάνουν: " -#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:145 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:190 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:68 msgid "Unnamed" msgstr "Χωρίς όνομα" @@ -837,28 +1072,36 @@ msgstr "Επικοινωνία με το Teclast K3/K5 reader." msgid "Communicate with the Newsmy reader." msgstr "Επικοινωνία με το Newsmy reader." -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:48 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:47 +msgid "Communicate with the Pico reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:57 msgid "Communicate with the iPapyrus reader." msgstr "Επικοινωνία με το iPapyrus reader." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:255 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:68 +msgid "Communicate with the Sovos reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:258 msgid "Unable to detect the %s disk drive. Try rebooting." msgstr "Αδύνατον να εντοπιστεί ο σκληρός δίσκος %s. Δοκιμάστε επανεκκίνηση." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:435 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:438 msgid "Unable to detect the %s mount point. Try rebooting." msgstr "" "Αδύνατον να εντοπιστεί το σημείο εφαρμογής %s. Δοκιμάστε επανεκκίνηση." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:500 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:503 msgid "Unable to detect the %s disk drive." msgstr "Αδύνατον να εντοπιστεί ο σκληρός δίσκος %s." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:593 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:596 msgid "Could not find mount helper: %s." msgstr "Δεν βρέθηκε ο βοηθός εφαρμογής: %s." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:605 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:608 msgid "" "Unable to detect the %s disk drive. Your kernel is probably exporting a " "deprecated version of SYSFS." @@ -866,25 +1109,31 @@ msgstr "" "Αδύνατον να εντοπιστεί ο σκληρός δίσκος %s. Είναι πιθανό ο πυρήνας σας " "(kernel) να εξαγάγει μια παρωχημένη έκδοση του SYSFS." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:613 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:616 msgid "Unable to mount main memory (Error code: %d)" msgstr "Αδύνατον να εφαρμοστεί η κύρια μνήμη (Κώδικας σφάλματος : %d)" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:750 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:752 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:667 +msgid "" +"The main memory of %s is read only. This usually happens because of file " +"system errors." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:815 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:817 msgid "The reader has no storage card in this slot." msgstr "Δεν υπάρχει κάρτα αποθήκευσης στην υποδοχή του ηλ.αναγνωστηρίου." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:754 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:819 msgid "Selected slot: %s is not supported." msgstr "Η επιλεγμένη υποδοχή: %s δεν υποστηρίζεται." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:783 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:848 msgid "There is insufficient free space in main memory" msgstr "Δεν υπάρχει αρκετός χώρος στην κύρια μνήμη." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:785 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:787 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:850 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:852 msgid "There is insufficient free space on the storage card" msgstr "Δεν υπάρχει αρκετός χώρος στην κάρτα αποθήκευσης" @@ -906,7 +1155,7 @@ msgid "Place files in sub directories if the device supports them" msgstr "Βάλε τα αρχεία σε υποφακέλους, αν υποστηρίζονται από τη συσκευή" #: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:43 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:86 msgid "Read metadata from files on device" msgstr "Ανάγνωση συνδεδομένων από τα αρχεία της συσκευής" @@ -919,7 +1168,7 @@ msgid "Template to control how books are saved" msgstr "Σχεδιότυπο που ελέγχει πως αποθηκεύονται τα βιβλία" #: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:50 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:89 msgid "Extra customization" msgstr "Πρόσθετη εξατομίκευση" @@ -931,102 +1180,15 @@ msgstr "Επικοινωνία με ένα ηλ.αναγνωστήριο." msgid "Get device information..." msgstr "Λήψη των στοιχείων της συσκευής" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:194 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:196 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:195 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:197 msgid "Transferring books to device..." msgstr "Μεταφορά βιβλίων στη συσκευή..." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:314 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:316 msgid "Sending metadata to device..." msgstr "Αποστολή συνδεδομένων στη συσκευή..." -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:41 -msgid "%prog [options] mybook.chm" -msgstr "%prog [παράμετροι] mybook.chm" - -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:42 -msgid "Output directory. Defaults to current directory" -msgstr "Φάκελλος εξαγωγής. Αρχικά έχει καθοριστεί ο τρέχων φάκελλος" - -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:45 -#: /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/reader.py:47 -#: /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/reader.py:49 -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:593 -msgid "Set the author" -msgstr "Καθορισμός συγγραφέα" - -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:51 -#: /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/reader.py:53 -#: /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/reader.py:56 -#: /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/reader.py:59 -msgid "Path to a txt file containing a comment." -msgstr "Διεύθυνση ενός αρχείου txt που περιέχει κάποιο σχόλιο" - -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:62 -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:607 -msgid "Extract thumbnail from LRF file" -msgstr "Εξαγωγή εικονιδίου από αρχείο LRF" - -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:63 -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:608 -msgid "Set the publisher" -msgstr "Καθορισμός εκδότη" - -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:64 -#: /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/reader.py:65 -#: /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/reader.py:66 -#: /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/reader.py:68 -#: /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 "" -"Εξαγωγή εξωφύλλου από αρχείο LRF. Σημειώστε ότι τα αρχεία LRF δεν έχουν " -"προκαθορισμένο εξώφυλλο, γι'αυτό χρησιμοποιούμε ευρετικές μεθόδους " -"(heuristics) για να μαντέψουμε το εξώφυλλο." - -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:70 -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:615 -msgid "Set book ID" -msgstr "Καθορισμός ταυτότητας (ID) του βιβλίου" - -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:72 -msgid "Set font delta" -msgstr "Καθορισμός του δέλτα της γραμματοσειράς" - #: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:182 msgid "Rendered %s" msgstr "Ο/Η/Το %s επεξεργάσθηκε" @@ -1245,12 +1407,12 @@ msgstr "Κατάλογος ενσωματωμένων συνταγών" msgid "Output saved to" msgstr "Τα εξαγόμενα αποθηκεύτηκαν στον/στην" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:95 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:99 msgid "Level of verbosity. Specify multiple times for greater verbosity." msgstr "" "Επίπεδο πολυλογίας. Προσδιορίστε πολλές φορές για μεγαλύτερη πολυλογία." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:102 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:106 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 " @@ -1260,7 +1422,7 @@ msgstr "" "στον φάκελο που έχει προσδιοριστεί. Χρήσιμο όταν δε γνωρίζετε το ακριβές " "στάδιο της διαδικασίας μετατροπής όπου εμφανίζεται κάποιο σφάλμα." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:111 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:115 msgid "" "Specify the input profile. The input profile gives the conversion system " "information on how to interpret various information in the input document. " @@ -1272,7 +1434,7 @@ msgstr "" "στο εισαγόμενο έγγραφο. Π.χ. αποστάσεις που εξαρτώνται από την ανάλυση " "(αποστάσεις σε pixels). Οι επιλογές είναι:" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:122 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:126 msgid "" "Specify the output profile. The output profile tells the conversion system " "how to optimize the created document for the specified device. In some " @@ -1286,7 +1448,7 @@ msgstr "" "να λειτουργούν σε μια συσκευή. Π.χ. το EPUB στο ηλ.αναγνωστήριο SONY. Οι " "επιλογές είναι:" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:133 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:137 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 " @@ -1299,7 +1461,7 @@ msgstr "" "εξαγόμενα κείμενα και αντίστροφα. Αρχικά, το μέγεθος αναφοράς επιλέγεται " "βάσει του περιγράμματος εξαγωγής που επιλέξατε." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:143 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:147 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-" @@ -1315,11 +1477,11 @@ msgstr "" "τρόπο, τις γραμματοσειρές. Η αρχική αντιστοίχιση που χρησιμοποιείται " "εξαρτάται από το περίγραμμα εξαγωγής που επιλέξατε." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:155 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:159 msgid "Disable all rescaling of font sizes." msgstr "Απενεργοποίηση της επανακλιμάκωσης των μεγεθών των γραμματοσειρών." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:162 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:166 msgid "" "The line height in pts. Controls spacing between consecutive lines of text. " "By default no line height manipulation is performed." @@ -1327,7 +1489,7 @@ msgstr "" "Το ύψος γραμμής, σε σημεία (pts). Ελέγχει το διάστημα μεταξύ διαδοχικών " "γραμμών κειμένου. Αρχικά, δε γίνεται καμία αλλαγή στο ύψος γραμμής." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:170 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:174 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 " @@ -1340,7 +1502,7 @@ msgstr "" "παράμετρος εξαγάγει το περιεχόμενο απ'αυτούς τους πίνακες και το παρουσιάζει " "με γραμμικό τρόπο." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:180 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:184 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 " @@ -1350,7 +1512,7 @@ msgstr "" "προστεθούν στον Πίνακα Περιεχομένων στο πρώτο επίπεδο. Αν προσδιοριστεί, " "έχει προτεραιότητα έναντι άλλων μορφών αυτόματου εντοπισμού." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:189 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:193 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 " @@ -1360,7 +1522,7 @@ msgstr "" "προστεθούν στον Πίνακα Περιεχομένων στο δεύτερο επίπεδο. Κάθε καταχώρηση " "προστίθεται κάτω από την προηγούμενη καταχώρηση του πρώτου επιπέδου." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:197 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:201 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 " @@ -1370,7 +1532,7 @@ msgstr "" "προστεθούν στον Πίνακα Περιεχομένων στο τρίτο επίπεδο. Κάθε καταχώρηση " "προστίθεται κάτω από την προηγούμενη καταχώρηση του δεύτερου επιπέδου." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:205 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:209 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 " @@ -1380,13 +1542,13 @@ msgstr "" "χρησιμοποιείται αντί εκείνου που παράγεται αυτόματα. Μ'αυτή εδώ την " "παράμετρο, χρησιμοποιείται πάντα ο αυτόματα παραγόμενος." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:213 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:217 msgid "Don't add auto-detected chapters to the Table of Contents." msgstr "" "Να μην προστεθούν κεφάλαια, που έχουν εντοπιστεί αυτόματα, στον Πίνακα " "Περιεχομένων" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:220 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:224 msgid "" "If fewer than this number of chapters is detected, then links are added to " "the Table of Contents. Default: %default" @@ -1394,7 +1556,7 @@ msgstr "" "Αν εντοπιστούν κεφάλαια λιγότερα απ'αυτόν εδώ τον αριθμό, να προστεθούν " "σύνδεσμοι στον Πίνακα Περιεχομένων. Αρχική τιμή : %default" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:227 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:231 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 " @@ -1405,7 +1567,7 @@ msgstr "" "λιγότερα κεφάλαια από την τιμή-όριο θα προστεθούν σύνδεσμοι στον Πίνακα " "Περιεχομένων." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:235 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:239 msgid "" "Remove entries from the Table of Contents whose titles match the specified " "regular expression. Matching entries and all their children are removed." @@ -1414,7 +1576,7 @@ msgstr "" "ταιριάζουν σε μια προσδιορισμένη κανονική έκφραση. Οι καταχωρήσεις που " "ταιριάζουν και τα παιδιά τους αφαιρούνται." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:246 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:250 msgid "" "An XPath expression to detect chapter titles. The default is to consider " "

    or

    tags that contain the words \"chapter\",\"book\",\"section\" or " @@ -1424,7 +1586,7 @@ msgid "" "User Manual for further help on using this feature." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:260 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:264 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 " @@ -1432,39 +1594,39 @@ msgid "" "\"both\" will use both page breaks and lines to mark chapters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:270 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:274 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:279 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:283 msgid "" "An XPath expression. Page breaks are inserted before the specified elements." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:285 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:289 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:290 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:294 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:295 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:299 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:300 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:304 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:306 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:310 msgid "" "Change text justification. A value of \"left\" converts all justified text " "in the source to left aligned (i.e. unjustified) text. A value of " @@ -1473,74 +1635,89 @@ msgid "" "Note that only some output formats support justification." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:320 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:323 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:327 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:330 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:334 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:336 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:340 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:343 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:347 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:351 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:355 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:359 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:363 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:367 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:371 +msgid "" +"Scale used to determine the length at which a line should be unwrapped if " +"preprocess is enabled. Valid values are a decimal between 0 and 1. The " +"default is 0.40, just below the median line length. This will unwrap typical " +"books with hard line breaks, but should be reduced if the line length is " +"variable." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:380 +msgid "" +"Convert plain quotes, dashes and ellipsis to their typographically correct " +"equivalents. For details, see http://daringfireball.net/projects/smartypants" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:388 msgid "Use a regular expression to try and remove the header." msgstr "Χρήση τυπικής εκφράσης για να αφαιρεθεί η κεφαλίδα." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:374 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:395 msgid "The regular expression to use to remove the header." msgstr "Η τυπική έκφραση που θα χρησιμοποιηθεί για να αφαιρεθεί η κεφαλίδα." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:380 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:401 msgid "Use a regular expression to try and 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:408 msgid "The regular expression to use to remove the footer." msgstr "" "Η τυπική έκφραση που θα χρησιμοποιηθεί για να αφαιρεθεί το υποσέλιδο." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:394 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:415 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:401 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:422 msgid "" "Transliterate unicode characters to an ASCII representation. Use with care " "because this will replace unicode characters with ASCII. For instance it " @@ -1550,7 +1727,7 @@ msgid "" "number of people will be used (Chinese in the previous example)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:416 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:437 msgid "" "Preserve ligatures present in the input document. A ligature is a special " "rendering of a pair of characters like ff, fi, fl et cetera. Most readers do " @@ -1560,103 +1737,105 @@ msgid "" "instead." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:428 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:449 #: /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:432 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:453 msgid "Set the authors. Multiple authors should be separated by ampersands." msgstr "" +"Εισαγωγή συγγραφέων. Για εισαγωγή πολλαπλών συγγραφέων χρησιμοποιείται το " +"διαχωριστικό σύμβολο ^ ." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:437 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:458 msgid "The version of the title to be used for sorting. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:441 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:462 msgid "String to be used when sorting by author. " msgstr "" "Η συμβολοσειρά που θα χρησιμοποιηθεί κατά την ταξινόμηση κατά όνομα " "συγγραφέα. " -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:445 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:466 msgid "Set the cover to the specified file or URL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:449 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:470 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:54 msgid "Set the ebook description." -msgstr "" +msgstr "Εισαγωγή περιγραφής του ηλεκτρονικού βιβλίου." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:453 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:474 #: /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:457 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:478 #: /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:461 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:482 #: /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:465 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:486 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:64 msgid "Set the rating. Should be a number between 1 and 5." msgstr "Καταχώρηση βαθμολογίας. Επιλέξτε ένα νούμερο από 1 έως και 5." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:469 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:490 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:66 msgid "Set the ISBN of the book." msgstr "Εισαγωγή του κωδικού ISBN του βιβλίου" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:473 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:494 #: /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:477 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:498 #: /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:481 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:502 #: /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:485 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:506 msgid "Set the publication date." msgstr "Εισαγωγή της ημερομηνίας έκδοσης." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:489 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:510 msgid "Set the book timestamp (used by the date column in calibre)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:589 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:610 msgid "Could not find an ebook inside the archive" msgstr "Δε βρέθηκε ηλεκτρονικό βιβλίο στο αρχείο." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:647 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:668 msgid "Values of series index and rating must be numbers. Ignoring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:654 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:675 msgid "Failed to parse date/time" msgstr "Αποτυχία ανάγνωσης ημερομηνίας/ώρας" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:809 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:830 msgid "Converting input to HTML..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:836 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:858 msgid "Running transforms on ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:923 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:945 msgid "Creating" msgstr "Δημιουργία" @@ -1755,7 +1934,8 @@ msgid "" "option the image may be slightly distorted, but there will be no borders." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:169 +#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:170 +#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:203 msgid "Start" msgstr "Έναρξη" @@ -1811,6 +1991,28 @@ msgid "" "conversion of a PDF file. Default is %default which disables this." msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/html/output.py:33 +msgid "CSS file used for the output instead of the default file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/html/output.py:36 +msgid "" +"Template used for generation of the html index file instead of the default " +"file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/html/output.py:39 +msgid "" +"Template used for the generation of the html contents of the book instead of " +"the default file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/html/output.py:42 +msgid "" +"Extract the contents of the generated ZIP file to the specified directory. " +"WARNING: The contents of the directory will be deleted." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/lit/from_any.py:47 msgid "Creating LIT file from EPUB..." msgstr "" @@ -1938,7 +2140,7 @@ 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:114 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:128 msgid "Verbose processing" msgstr "" @@ -1959,11 +2161,69 @@ 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 "Εξαγωγή εικονιδίου από αρχείο LRF" + +#: /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 "" +"Εξαγωγή εξωφύλλου από αρχείο LRF. Σημειώστε ότι τα αρχεία LRF δεν έχουν " +"προκαθορισμένο εξώφυλλο, γι'αυτό χρησιμοποιούμε ευρετικές μεθόδους " +"(heuristics) για να μαντέψουμε το εξώφυλλο." + +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:615 +msgid "Set book ID" +msgstr "Καθορισμός ταυτότητας (ID) του βιβλίου" + #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:90 msgid "Enable autorotation of images that are wider than the screen width." msgstr "" @@ -2020,99 +2280,117 @@ msgstr "" msgid "Comic" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:401 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:45 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:98 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:65 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:359 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:887 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569 -msgid "Title" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:402 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:59 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:67 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:364 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:888 -msgid "Author(s)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:403 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:61 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:72 -msgid "Publisher" -msgstr "Εκδότης" - -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:404 -#: /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:405 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:35 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:210 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:184 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:99 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:67 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:318 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1079 -msgid "Comments" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:413 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:27 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:73 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:306 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1075 -#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:143 -msgid "Tags" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:415 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:26 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:323 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1084 -#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:91 -msgid "Series" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:416 -msgid "Language" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:418 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 -msgid "Timestamp" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:420 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:63 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:70 -msgid "Published" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:422 -msgid "Rights" -msgstr "Δικαιώματα" - -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/amazon.py:85 -msgid "EDITORIAL REVIEW" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/archive.py:41 msgid "" "Extract common e-book formats from archives (zip/rar) files. Also try to " "autodetect if they are actually cbz/cbr files." msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:114 +msgid "TEMPLATE ERROR" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:448 +msgid "No" +msgstr "Όχι" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:448 +msgid "Yes" +msgstr "Ναι" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:605 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:373 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:923 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:303 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:570 +msgid "Title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:606 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:924 +msgid "Author(s)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:72 +msgid "Publisher" +msgstr "Εκδότης" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:608 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:49 +msgid "Producer" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:609 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1131 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:178 +msgid "Comments" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:611 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:29 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:313 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1127 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:160 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:623 +msgid "Tags" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:613 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1136 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:108 +msgid "Series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:614 +msgid "Language" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:616 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1119 +msgid "Timestamp" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:618 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:70 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:258 +msgid "Published" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:620 +msgid "Rights" +msgstr "Δικαιώματα" + #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:20 msgid "options" msgstr "επιλογές" @@ -2206,87 +2484,99 @@ msgstr "" msgid "No cover found" msgstr "Δε βρέθηκε εξώφυλλο" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:27 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:28 msgid "Cover download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:79 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:80 msgid "Download covers from openlibrary.org" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:107 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:136 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:108 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:137 msgid "ISBN: %s not found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:117 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:118 msgid "Download covers from librarything.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:128 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:68 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:129 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:69 msgid "LibraryThing.com timed out. Try again later." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:135 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:75 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:136 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:76 msgid "" "Could not fetch cover as server is experiencing high load. Please try again " "later." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:139 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:79 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:140 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:80 msgid "LibraryThing.com server error. Try again later." msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:226 +msgid "Download covers from Douban.com" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:235 +msgid "Douban.com API timed out. Try again later." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/douban.py:42 msgid "Downloads metadata from Douban.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:51 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:57 msgid "Metadata download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:128 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:141 msgid "ratings" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:128 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:141 msgid "tags" msgstr "ετικέτες" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:129 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:142 msgid "description/reviews" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:130 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:143 msgid "Download %s from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:156 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:149 +msgid "Convert comments downloaded from %s to plain text" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:175 msgid "Downloads metadata from Google Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:173 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:192 msgid "Downloads metadata from isbndb.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:201 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:220 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:211 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:230 msgid "Downloads social metadata from amazon.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:230 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:251 msgid "Downloads series/tags/rating information from librarything.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:95 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:109 msgid "" "\n" "%prog [options] key\n" @@ -2300,27 +2590,27 @@ msgid "" "\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:106 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:120 msgid "The ISBN ID of the book you want metadata for." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:108 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:122 msgid "The author whose book to search for." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:110 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:124 msgid "The title of the book to search for." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:112 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:126 msgid "The publisher of the book to search for." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:76 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:77 msgid " not found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:86 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:87 msgid "" "\n" "%prog [options] ISBN\n" @@ -2329,8 +2619,8 @@ msgid "" "LibraryThing.com\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1226 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1399 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 msgid "Cover" msgstr "Εξώφυλλο" @@ -2361,78 +2651,78 @@ msgstr "" msgid "Tag marking book to be filed with Personal Docs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:108 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:107 msgid "All articles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:259 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:262 msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1400 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 msgid "Title Page" msgstr "Σελίδα τίτλου" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 #: /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:194 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:199 msgid "Table of Contents" msgstr "Πίνακας Περιεχομένων" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 msgid "Index" msgstr "Ευρετήριο" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 msgid "Glossary" msgstr "Γλωσσάρι" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 msgid "Acknowledgements" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 msgid "Bibliography" msgstr "Βιβλιογραφία" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 msgid "Colophon" msgstr "Κολοφώνας" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 msgid "Copyright" msgstr "Πνευματικά Δικαιώματα" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 msgid "Dedication" msgstr "Αφιέρωση" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 msgid "Epigraph" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 msgid "Foreword" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 msgid "List of Illustrations" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 msgid "List of Tables" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 msgid "Notes" msgstr "Σημειώσεις" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1416 msgid "Preface" msgstr "Πρόλογος" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1417 msgid "Main Text" msgstr "" @@ -2440,13 +2730,20 @@ msgstr "" msgid "%s format books are not supported" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:156 +msgid "Book %s of %s" +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:113 -msgid "Book Jacket" -msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:159 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:71 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:621 +msgid "Rating" +msgstr "Αξιολόγηση" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/split.py:34 msgid "" @@ -2509,8 +2806,8 @@ 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." +"Valid values are a decimal between 0 and 1. The default is 0.45, just below " +"the median line length." msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:30 @@ -2614,7 +2911,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:33 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:34 msgid "Author" msgstr "Συγγραφέας" @@ -2736,11 +3033,52 @@ msgid "" "%s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:25 #: /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/snb/output.py:29 +#: /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/snb/output.py:36 +msgid "" +"Specify whether or not to insert an empty line between two paragraphs." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:40 +msgid "" +"Specify whether or not to insert two space characters to indent the first " +"line of each paragraph." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:44 +msgid "" +"Specify whether or not to hide the chapter title for each chapter. Useful " +"for image-only output (eg. comics)." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:122 +msgid "Start Page" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:132 +#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:134 +msgid "Cover Pages" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:147 +#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:150 +msgid " (Preface)" +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 " @@ -2777,144 +3115,136 @@ msgid "" "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:65 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:67 msgid "Send file to storage card instead of main memory by default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:69 msgid "Confirm before deleting" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:71 msgid "Main window geometry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:73 msgid "Notify when a new version is available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:75 msgid "Use Roman numerals for series number" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:77 msgid "Sort tags list by name, popularity, or rating" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:79 msgid "Number of covers to show in the cover browsing mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:81 msgid "Defaults for conversion to LRF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:83 msgid "Options for the LRF ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:86 msgid "Formats that are viewed using the internal viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:88 msgid "Columns to be displayed in the book list" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:89 msgid "Automatically launch content server on application startup" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:90 msgid "Oldest news kept in database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:91 msgid "Show system tray icon" msgstr "Εμφάνιση εικονιδίου πλαισίου συστήματος" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:93 msgid "Upload downloaded news to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:95 msgid "Delete books from library after uploading to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:95 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:97 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:97 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:99 msgid "Disable notifications from the system tray icon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:101 msgid "Default action to perform when send to device button is clicked" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:121 msgid "Maximum number of waiting worker processes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:123 msgid "Download social metadata (tags/rating/etc.)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:125 msgid "Overwrite author and title with new metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:127 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:129 msgid "tag browser categories not to display" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:131 msgid "The layout of the user interface" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 msgid "Show the average rating per item indication in the tag browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:135 msgid "Disable UI animations" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:181 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:479 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:183 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:494 msgid "Copied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:217 msgid "Copy" msgstr "Αντιγραφή" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:217 msgid "Copy to Clipboard" msgstr "Αντιγραφή στο Πρόχειρο" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:433 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:467 msgid "Choose Files" msgstr "" @@ -2930,127 +3260,133 @@ msgstr "" msgid "A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:33 msgid "Add books from a single directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:34 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:35 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/actions/add.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:39 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/actions/add.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:43 msgid "Add Empty book. (Book entry with no formats)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:44 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:45 msgid "Add from ISBN" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:84 msgid "How many empty books?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:85 msgid "How many empty books should be added?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:142 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:202 msgid "Uploading books to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:159 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:170 msgid "Books" msgstr "Βιβλία" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:161 msgid "EPUB Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:162 msgid "LRF Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:163 msgid "HTML Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:164 msgid "LIT Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:165 msgid "MOBI Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 msgid "Topaz books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:167 msgid "Text books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:168 msgid "PDF Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:169 +msgid "SNB Books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:170 msgid "Comics" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:171 msgid "Archives" msgstr "Αρχεία" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:175 msgid "Supported books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:211 msgid "Merged some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:212 msgid "" "Some duplicates were found and merged into the following existing books:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:221 msgid "Failed to read metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:222 msgid "Failed to read metadata from the following" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:239 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:258 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:246 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:265 msgid "Add to library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:239 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:246 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/tweak_epub.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:94 #: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:119 msgid "No book selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:252 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:259 msgid "" "The following books are virtual and cannot be added to the calibre library:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:258 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:265 msgid "No book files found" msgstr "" @@ -3063,136 +3399,266 @@ msgid "Add books to your calibre library from the connected device" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:20 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:499 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:548 msgid "Fetch annotations (experimental)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:55 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:235 -msgid "Use library only" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:56 #: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:236 +msgid "Use library only" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:237 msgid "User annotations generated from main library only" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:63 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:31 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:99 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:140 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:203 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:30 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:92 msgid "No books selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:65 msgid "No books selected to fetch annotations from" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:90 msgid "Merging user annotations into database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:118 msgid "%s
    Last Page Read: %d (%d%%)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:124 msgid "%s
    Last Page Read: Location %d (%d%%)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:143 msgid "Location %d • %s
    %s
    " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:152 msgid "Page %d • %s
    " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:157 msgid "Location %d • %s
    " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:20 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:33 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:34 msgid "Create catalog of books in your calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:31 msgid "No books selected to generate catalog for" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:53 msgid "Generating %s catalog..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:54 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:230 msgid "No books found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:59 msgid "" "No books to catalog\n" "Check exclude tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:69 msgid "Catalog generated." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:72 msgid "Export Catalog Directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:73 msgid "Select destination for %s.%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:73 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:50 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:112 +msgid "Checking database integrity" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:657 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc.py:41 +#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:54 +msgid "Error" +msgstr "Σφάλμα" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:129 +msgid "Failed to check database integrity" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:134 +msgid "Some inconsistencies found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:135 +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/actions/choose_library.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:51 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:140 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:112 msgid "%d books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:149 msgid "Choose calibre library to work with" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:83 -msgid "Switch to library..." +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:158 +msgid "Switch/create library..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:77 msgid "Quick switch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:78 +msgid "Rename library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:79 +msgid "Delete library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:187 +msgid "Library Maintenance" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:188 +msgid "Library metadata backup status" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:192 +msgid "Start backing up metadata of all books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:196 +msgid "Check library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:200 +msgid "Check database integrity" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:343 +msgid "Recover database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:269 +msgid "Rename" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:270 +msgid "Choose a new name for the library %s. " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:271 +msgid "Note that the actual library folder will be renamed." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190 +msgid "Already exists" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:279 +msgid "The folder %s already exists. Delete it first." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:285 +msgid "Rename failed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:286 +msgid "" +"Failed to rename the library at %s. The most common cause for this is if one " +"of the files in the library is open in another program." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:296 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102 +msgid "Are you sure?" +msgstr "Είστε σίγουροι;" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:297 +msgid "All files from %s will be permanently deleted. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:316 +msgid "none" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:317 +msgid "Backup status" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:318 +msgid "Book metadata files remaining to be written: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:324 +msgid "Backup metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:325 +msgid "" +"Metadata will be backed up while calibre is running, at the rate of " +"approximately 1 book per second." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:344 +msgid "" +"This command rebuilds your calibre database from the information stored by " +"calibre in the OPF files.

    This function is not currently available in the " +"GUI. You can recover your database using the 'calibredb restore_database' " +"command line function." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:358 msgid "No library found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:359 msgid "" "No existing calibre library was found at %s. It will be removed from the " "list of known libraries." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:182 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:540 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:391 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 msgid "Not allowed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:183 -msgid "You cannot change libraries when a device is connected." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:392 msgid "You cannot change libraries while jobs are running." msgstr "" @@ -3204,58 +3670,63 @@ msgstr "" msgid "Convert books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:28 msgid "Convert individually" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:29 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:30 msgid "Bulk convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:86 msgid "Cannot convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:115 msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:83 msgid "Copy to library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:84 msgid "Copy selected books to the specified library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:114 +msgid "(delete after copy)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:123 msgid "Cannot copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:128 msgid "No library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:129 msgid "No library found at %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:107 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:136 msgid "Copying" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:147 msgid "Could not copy books: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:121 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:678 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:234 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:720 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:685 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:189 msgid "Failed" msgstr "Απέτυχε" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:150 msgid "Copied %d books to %s" msgstr "" @@ -3267,82 +3738,82 @@ msgstr "Διαγραφή" msgid "Remove books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:23 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:24 msgid "Remove selected books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:26 msgid "Remove files of a specific format from selected books.." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:29 msgid "Remove all formats from selected books, except..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:31 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:32 msgid "Remove covers from selected books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:34 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:35 msgid "Remove matching books from device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:53 msgid "Cannot delete" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:66 msgid "Choose formats to be deleted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:84 msgid "Choose formats not to be deleted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:104 msgid "Cannot delete books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:105 msgid "No device is connected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:115 msgid "Main memory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:115 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:436 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:445 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:473 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:482 msgid "Storage Card A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:438 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:447 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:475 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:484 msgid "Storage Card B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:122 msgid "No books to delete" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:123 msgid "None of the selected books are on the device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:139 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:200 msgid "Deleting books from device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:173 msgid "" "The selected books will be permanently deleted and the files removed " -"from your computer. Are you sure?" +"from your calibre library. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:185 msgid "" "The selected books will be permanently deleted from your device. Are " "you sure?" @@ -3399,11 +3870,11 @@ msgstr "" msgid "Manage the collections on this device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:24 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:23 msgid "E" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:24 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:23 msgid "Edit metadata" msgstr "" @@ -3447,97 +3918,79 @@ msgstr "" msgid "Merge into first selected book - keep others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:74 msgid "Cannot download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:94 msgid "social metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:96 msgid "covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:223 msgid "metadata" msgstr "μεταδεδομένα" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:97 msgid "Downloading %s for %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:124 -msgid "Failed to download some metadata" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:125 -msgid "Failed to download metadata for the following:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:128 -msgid "Failed to download metadata:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:129 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:608 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:569 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:1001 -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:54 -msgid "Error" -msgstr "Σφάλμα" - -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:139 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:159 msgid "Cannot edit metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:202 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:191 msgid "Cannot merge books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:192 msgid "At least two books must be selected for merging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:197 msgid "" -"All book formats and metadata from the selected books will be added to the " -"first selected book.

    The second and subsequently selected " -"books will not be deleted or changed.

    Please confirm you want to " -"proceed." +"Book formats and metadata from the selected books will be added to the " +"first selected book (%s). ISBN will not be merged.

    The " +"second and subsequently selected books will not be deleted or " +"changed.

    Please confirm you want to proceed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:209 msgid "" -"All book formats and metadata from the selected books will be merged into " -"the first selected book.

    After merger the second and " -"subsequently selected books will be deleted.

    All book formats " -"of the first selected book will be kept and any duplicate formats in the " -"second and subsequently selected books will be permanently deleted " -"from your computer.

    Are you sure you want to proceed?" +"Book formats and metadata from the selected books will be merged into the " +"first selected book (%s). ISBN will not be " +"merged.

    After merger the second and subsequently selected books will " +"be deleted.

    All book formats of the first selected book will " +"be kept and any duplicate formats in the second and subsequently selected " +"books will be permanently deleted from your computer.

    Are " +"you sure you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:222 msgid "" "You are about to merge more than 5 books. Are you sure you want to " "proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:18 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:17 msgid "F" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:18 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:17 msgid "Fetch news" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:52 msgid "Fetching news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:66 msgid " fetched." msgstr "" @@ -3587,6 +4040,7 @@ msgid "&Restart" msgstr "&Επανεκκίνηση" #: /home/kovid/work/calibre/src/calibre/gui2/actions/restart.py:14 +#: /home/kovid/work/calibre/src/calibre/utils/pyconsole/main.py:59 msgid "Ctrl+R" msgstr "" @@ -3599,57 +4053,58 @@ msgid "S" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:40 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:46 msgid "Save to disk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:48 msgid "Save to disk in a single directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:49 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:69 msgid "Save only %s format to disk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:53 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:72 msgid "Save only %s format to disk in a single directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:91 msgid "Cannot save to disk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:94 msgid "Choose destination directory" msgstr "Επιλογή καταλόγου προορισμού" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:102 msgid "" "You are trying to save files into the calibre library. This can cause " "corruption of your library. Save to disk is meant to export files from your " "calibre library elsewhere." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:136 msgid "Error while saving" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:137 msgid "There was an error while saving." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:143 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:145 msgid "Could not save some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:146 msgid "Click the show details button to see which ones." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:16 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:628 msgid "Show book details" msgstr "" @@ -3657,11 +4112,11 @@ msgstr "" msgid "I" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:26 msgid "No detailed info available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:27 msgid "No detailed information is available for books on the device." msgstr "" @@ -3669,53 +4124,75 @@ msgstr "" msgid "Similar books..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24 msgid "Alt+A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24 msgid "Books by same author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24 -msgid "Alt+S" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25 msgid "Books in this series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:26 +msgid "Alt+Shift+S" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:27 msgid "Alt+P" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:27 msgid "Books by this publisher" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:28 msgid "Alt+T" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:28 msgid "Books with the same tags" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/tweak_epub.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tweak_epub_ui.py:54 +msgid "Tweak ePub" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/tweak_epub.py:16 +msgid "Make small changes to ePub format books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/tweak_epub.py:17 +msgid "T" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/tweak_epub.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/tweak_epub.py:39 +msgid "Cannot tweak ePub" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/tweak_epub.py:40 +msgid "No ePub available. First convert the book to ePub." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:24 msgid "V" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:24 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:31 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:32 msgid "View" msgstr "Προβολή" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:33 msgid "View specific format" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:94 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:158 msgid "Cannot view" msgstr "" @@ -3740,7 +4217,7 @@ msgstr "" msgid "Cannot open folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:159 msgid "%s has no available formats." msgstr "" @@ -3748,60 +4225,60 @@ msgstr "" msgid "Searching in" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:232 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:198 msgid "Adding..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:211 msgid "Searching in all sub-directories..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:258 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:224 msgid "Path error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:259 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:225 msgid "The specified directory could not be processed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:263 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:811 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:869 msgid "No books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:294 msgid "Added" msgstr "Προστέθηκε" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:341 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:307 msgid "Adding failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:342 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:308 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:357 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:323 msgid "Duplicates found!" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:324 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:361 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:327 msgid "Adding duplicates..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:428 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:390 msgid "Saving..." msgstr "Αποθήκευση..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:481 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:443 msgid "Saved" msgstr "Αποθηκεύτηκε" @@ -3818,7 +4295,7 @@ msgid "Looking for duplicates based on file hash" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:109 -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:70 msgid "Choose root folder" msgstr "" @@ -3834,32 +4311,32 @@ msgstr "" msgid "Add books to calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/scan_ui.py:21 -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:57 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:41 -#: /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 +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/scan_ui.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46 msgid "WizardPage" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/scan_ui.py:22 +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/scan_ui.py:27 msgid "Scanning root folder for books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/scan_ui.py:23 +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/scan_ui.py:28 msgid "This may take a few minutes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:63 msgid "Choose the location to add books from" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:64 msgid "Select a folder on your hard disk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:65 msgid "" "

    calibre can scan your computer for existing books automatically. These " "books will then be copied into the calibre library. This wizard will " @@ -3871,139 +4348,137 @@ msgid "" "not under the root folder you choose.

    " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:68 msgid "&Root folder:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:69 msgid "" "This folder and its sub-folders will be scanned for books to import into " "calibre's library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:66 -#: /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:125 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:171 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:53 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:79 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:80 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:72 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:620 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:621 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:633 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:635 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:637 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:639 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:640 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:693 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:106 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:108 -#: /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:369 +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:77 +#: /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:383 -#: /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:396 -#: /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:404 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:87 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:90 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:156 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:159 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:163 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:166 -#: /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/metadata_single_ui.py:397 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:408 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:410 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:412 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:420 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:95 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:171 #: /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/tag_list_editor_ui.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:77 -#: /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/preferences/behavior_ui.py:143 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:144 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:78 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:80 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:82 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:272 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:85 -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar_ui.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar_ui.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar_ui.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar_ui.py:110 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:80 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:191 msgid "..." msgstr "..." -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:72 msgid "Handle multiple files per book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:73 msgid "" "&One book per folder, assumes every ebook file in a folder is the same book " "in a different format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:74 msgid "" "&Multiple books per folder, assumes every ebook file is a different book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:23 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:45 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:54 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:311 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:114 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:115 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:125 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:137 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:313 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1117 msgid "Path" msgstr "Διαδρομή" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:24 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:48 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:118 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:119 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:229 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:312 -#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:24 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:117 msgid "Formats" msgstr "Λίστα φορμάτ" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:25 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:891 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:927 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1120 msgid "Collections" msgstr "Συλλογές" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:47 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:60 msgid "Click to open" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:48 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:305 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:311 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:317 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1074 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1078 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:324 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1126 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1130 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:47 -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:73 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:78 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:282 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:293 msgid "None" msgstr "Κανένα" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:310 -msgid "Click to open Book Details window" +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:404 +msgid "Double-click to open Book Details window" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:16 @@ -4024,6 +4499,7 @@ msgstr "" #: /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/snb_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" @@ -4039,105 +4515,118 @@ msgstr "" #: /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/snb_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_bibtex_ui.py:81 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:37 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:68 -#: /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:88 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:49 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:48 -#: /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:31 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:119 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:115 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:66 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:115 -#: /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:42 -#: /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:60 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:46 -#: /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:50 -#: /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:77 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template_ui.py:41 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:96 -#: /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/preferences/behavior_ui.py:125 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:76 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:33 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:36 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input_ui.py:36 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:40 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:33 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:40 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/conversion_ui.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/email_ui.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc_ui.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard_ui.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template_ui.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/saving_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar_ui.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/tweaks_ui.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:112 msgid "Form" msgstr "Φόρμα" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:87 msgid "Bib file encoding:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:83 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:43 msgid "Fields to include in output:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:89 msgid "ascii/LaTeX" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:90 msgid "Encoding configuration (change if you have errors) :" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:91 msgid "strict" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:92 msgid "replace" msgstr "αντικατάσταση" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:93 msgid "ignore" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:94 msgid "backslashreplace" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:95 msgid "BibTeX entry type:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:96 msgid "mixed" msgstr "Μικτό" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:97 msgid "misc" msgstr "διάφορα" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:98 msgid "book" msgstr "βιβλίο" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:99 msgid "Create a citation tag?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:95 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:100 msgid "Expression to form the BibTeX citation tag:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:101 msgid "" "Some explanation about this template:\n" " -The fields availables are 'author_sort', 'authors', 'id',\n" @@ -4156,30 +4645,23 @@ msgstr "" 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:550 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1607 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1625 -msgid "Catalog" -msgstr "Κατάλογος" - -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:77 msgid "'Don't include this book' tag:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:78 msgid "'Mark this book as read' tag:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:79 msgid "Additional note tag prefix:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:80 msgid "Regex pattern describing tags to exclude as genres:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:81 msgid "" "Regex tips:\n" "- The default regex - \\[.+\\] - excludes genre tags of the form [tag], " @@ -4188,22 +4670,39 @@ msgid "" "Genre Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:84 msgid "Include 'Titles' Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:85 msgid "Include 'Recently Added' Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:86 msgid "Sort numbers as text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:87 +msgid "Include 'Series' Section" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:33 msgid "Tab template for catalog.ui" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:25 +msgid "Bold" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:26 +msgid "Italic" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:28 +msgid "Underline" +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 " @@ -4211,11 +4710,11 @@ msgid "" "specified in the Preferences" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:70 msgid "Bulk Convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 msgid "Options specific to the output format." msgstr "" @@ -4232,66 +4731,66 @@ msgstr "" msgid "input" 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:94 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:99 msgid "&Number of Colors:" 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:96 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:95 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:101 msgid "Disable &normalize" 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:97 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:102 msgid "Keep &aspect ratio" 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:98 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:103 msgid "Disable &Sharpening" 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:104 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:109 msgid "Disable &Trimming" 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:103 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:108 msgid "&Wide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:95 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:104 msgid "&Landscape" msgstr "&Οριζόντια" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:96 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:106 msgid "&Right to left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:105 msgid "Don't so&rt" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:98 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:107 msgid "De&speckle" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:104 msgid "&Disable comic processing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:120 msgid "&Output format:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:106 msgid "Disable conversion of images to &black and white" msgstr "" @@ -4304,7 +4803,7 @@ msgid "Debug the conversion process." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:39 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:56 msgid "Choose debug folder" msgstr "" @@ -4316,7 +4815,7 @@ msgstr "" msgid "Failed to create debug directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:55 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 " @@ -4324,7 +4823,7 @@ msgid "" "conversion parameters like Table of Contents and Chapter Detection." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:59 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 " @@ -4335,27 +4834,27 @@ msgstr "" msgid "EPUB Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:54 msgid "Do not &split on page breaks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:55 msgid "No default &cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:56 msgid "No &SVG cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:57 msgid "Preserve cover &aspect ratio" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:58 msgid "Split files &larger than:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:59 msgid " KB" msgstr " KB" @@ -4363,7 +4862,7 @@ msgstr " KB" msgid "FB2 Input" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:29 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:34 msgid "Do not insert a &Table of Contents at the beginning of the book." msgstr "" @@ -4371,22 +4870,22 @@ msgstr "" msgid "FB2 Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:32 -#: /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 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:37 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:34 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:52 msgid "&Inline TOC" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:33 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:38 msgid "Sectionize Chapters (Use with care!)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:104 msgid "Font rescaling wizard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:105 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 " @@ -4402,52 +4901,52 @@ msgid "" "for a discussion of how font size rescaling works.

    " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:108 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 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:114 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:123 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:131 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:122 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:127 -#: /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/font_key_ui.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:125 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:121 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:123 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:125 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:132 msgid " pt" msgstr " σημ" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:112 msgid "Use &default values" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:113 msgid "&Input document" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:116 msgid "&Font size: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:118 msgid " will map to size: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:119 msgid "0.0 pt" msgstr "" @@ -4471,244 +4970,249 @@ msgstr "Αριστερή στοίχιση" msgid "Justify text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:128 msgid "&Disable font size rescaling" msgstr "" -#: /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:129 msgid "Base &font size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:132 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:126 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:134 msgid "Line &height:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:136 msgid "Input character &encoding:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:137 msgid "Remove &spacing between paragraphs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:138 msgid "Indent size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:139 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:132 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:140 msgid " em" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:141 msgid "Text justification:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:142 msgid "&Linearize tables" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:143 msgid "Extra &CSS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:144 msgid "&Transliterate unicode characters to ASCII" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:145 msgid "Insert &blank line" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:146 msgid "Keep &ligatures" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:147 +msgid "Smarten &punctuation" +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 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:121 msgid "Enable &autorotation of wide images" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:122 msgid "&Wordspace:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:124 msgid "Minimum para. &indent:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:126 msgid "Render &tables as images" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:127 msgid "Text size multiplier for text in rendered tables:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:128 msgid "Add &header" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:129 msgid "Header &separation:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:131 msgid "Header &format:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:132 msgid "&Embed fonts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:133 msgid "&Serif font family:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:134 msgid "S&ans-serif font family:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:135 msgid "&Monospaced font family:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:41 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:44 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:114 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:200 msgid "Metadata" msgstr "Μεταδεδομένα" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:46 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:165 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:109 msgid "Choose cover for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:116 msgid "Cannot read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:173 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:117 msgid "You do not have permission to read the file: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:181 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:188 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:184 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:125 msgid "Error reading file" msgstr "Σφάλμα ανάγνωσης αρχείου" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:182 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:126 msgid "

    There was an error reading from file:
    " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:189 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:134 msgid " is not a valid picture" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:167 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:400 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:414 msgid "Book Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:173 msgid "Use cover from &source file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:169 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:401 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:415 msgid "Change &cover image:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:175 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:172 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:373 msgid "&Title: " msgstr "&Τίτλος: " -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:173 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374 msgid "Change the title of this book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:174 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:161 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:365 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:335 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:377 msgid "&Author(s): " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:180 msgid "Author So&rt:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:181 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:177 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:170 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:388 msgid "&Publisher: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:178 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:183 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:389 msgid "Ta&gs: " 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:172 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:184 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:346 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:390 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:180 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:179 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:379 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 msgid "&Series:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:181 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:182 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:180 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:181 -#: /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 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:355 +#: /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 "List of known series. You can add new series." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:386 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:400 msgid "Book " msgstr "" @@ -4716,39 +5220,39 @@ msgstr "" msgid "MOBI Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:43 msgid "Default" msgstr "Προκαθορισμένο" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:72 msgid "&Title for Table of Contents:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:73 msgid "Rescale images for &Palm devices" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:74 msgid "Use author &sort for author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:75 msgid "Disable compression of the file contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:76 msgid "Do not add Table of Contents to book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:77 msgid "Kindle options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:78 msgid "Periodical masthead font:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:79 msgid "Personal Doc tag:" msgstr "" @@ -4756,35 +5260,35 @@ msgstr "" msgid "Page Setup" msgstr "Διαμόρφωση σελίδας" -#: /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:121 msgid "&Output profile:" msgstr "" -#: /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:122 msgid "Profile description" msgstr "" -#: /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:123 msgid "&Input profile:" msgstr "" -#: /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:124 msgid "Margins" msgstr "Περιθώρια" -#: /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:125 msgid "&Left:" msgstr "&Αριστερά:" -#: /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:127 msgid "&Top:" msgstr "&Πάνω:" -#: /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:129 msgid "&Right:" msgstr "&Δεξιά:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:131 msgid "&Bottom:" msgstr "&Κάτω:" @@ -4792,13 +5296,13 @@ msgstr "&Κάτω:" 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:47 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input_ui.py:37 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:52 msgid "Treat each &line as a paragraph" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input_ui.py:33 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input_ui.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:53 msgid "Assume print formatting" msgstr "" @@ -4806,7 +5310,7 @@ msgstr "" msgid "PDB Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:36 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:41 msgid "&Format:" msgstr "&Μορφή:" @@ -4814,11 +5318,11 @@ msgstr "&Μορφή:" msgid "PDF Input" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:44 msgid "Line &Un-Wrapping Factor:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:40 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:45 msgid "No &Images" msgstr "" @@ -4826,15 +5330,15 @@ msgstr "" msgid "PDF Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:48 msgid "&Paper Size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:44 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:49 msgid "&Orientation:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:50 msgid "Preserve &aspect ratio of cover" msgstr "" @@ -4854,20 +5358,20 @@ msgstr "" msgid "Open book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:57 msgid "Regex Builder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:58 msgid "Preview" msgstr "Προεπισκόπηση" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:59 msgid "Regex:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:55 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:122 msgid "Test" msgstr "Έλεγχος" @@ -4879,21 +5383,37 @@ msgstr "Μετατροπή" msgid "Options specific to the input format." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:112 -#: /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 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:53 msgid "Dialog" msgstr "Διάλογος" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:118 msgid "&Input format:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:119 msgid "Use &saved conversion settings for individual books" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output.py:14 +msgid "SNB Output" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:40 +msgid "Hide chapter name" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:41 +msgid "Insert space before the first line for each paragraph" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:42 +msgid "Insert empty line between paragraphs" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17 msgid "" "Structure\n" @@ -4905,66 +5425,70 @@ msgid "" "Fine tune the detection of chapter headings and other document structure." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:37 msgid "Detect chapters at (XPath expression):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:36 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:38 msgid "Insert page breaks before (XPath expression):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:40 msgid "Header regular expression:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:41 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:43 msgid "Footer regular expression:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:57 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:87 msgid "Invalid regular expression" msgstr "Άκυρη κανονική έκφραση" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:88 msgid "Invalid regular expression: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39 msgid "Invalid XPath" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:66 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:40 msgid "The XPath expression %s is invalid." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:81 msgid "Chapter &mark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:82 msgid "Remove first &image" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:83 msgid "Insert &metadata as page at start of book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:64 -msgid "&Preprocess input file to possibly improve structure detection" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:84 msgid "Remove F&ooter" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:85 msgid "Remove H&eader" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:86 +msgid "Line &un-wrap factor during preprocess:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:87 +msgid "&Preprocess input file to possibly improve structure detection" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:16 msgid "" "Table of\n" @@ -4987,23 +5511,23 @@ msgstr "" msgid "Level &3 TOC (XPath expression):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:68 msgid "Do not add &detected chapters to the Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:69 msgid "Number of &links to add to Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 msgid "Chapter &threshold" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:71 msgid "&Force use of auto-generated Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:72 msgid "TOC &Filter:" msgstr "" @@ -5011,22 +5535,22 @@ msgstr "" msgid "TXT Input" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:54 msgid "Process using markdown" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:55 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:51 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:56 msgid "Do not insert Table of Contents into output text when using markdown" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:57 msgid "Preserve &spaces" msgstr "" @@ -5034,98 +5558,98 @@ msgstr "" msgid "TXT Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:51 msgid "&Line ending style:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:53 msgid "&Maximum line length:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:54 msgid "Force maximum line length" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:51 -#: /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 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:55 msgid "TextLabel" msgstr "Ετικέτα κειμένου" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:57 msgid "Use a wizard to help construct the XPath expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:73 msgid "Match HTML &tags with tag name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:74 msgid "*" msgstr "*" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:75 msgid "a" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:76 msgid "br" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:77 msgid "div" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:78 msgid "h1" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:79 msgid "h2" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:80 msgid "h3" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:81 msgid "h4" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:82 msgid "h5" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:83 msgid "h6" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:84 msgid "hr" msgstr "Κροατία" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:85 msgid "span" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:86 msgid "Having the &attribute:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:87 msgid "With &value:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:88 msgid "(A regular expression)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:89 msgid "" "

    For example, to match all h2 tags that have class=\"chapter\", set tag to " "h2, attribute to class and value to " @@ -5149,26 +5673,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:145 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:270 -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:110 -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:130 -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:205 -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:238 -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:448 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:239 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:243 msgid "Undefined" msgstr "Μη ορισμένο" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:59 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:133 -msgid "Yes" -msgstr "Ναι" - -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:59 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:134 -msgid "No" -msgstr "Όχι" - #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:122 msgid "star(s)" msgstr "" @@ -5185,270 +5698,292 @@ msgstr "" msgid " index:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:451 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:188 -msgid "Automatically number books in this series" +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:493 +msgid "Remove series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:498 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:496 +msgid "Automatically number books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:499 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:366 +msgid "Force numbers to start with " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:562 msgid "Remove all tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:519 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:583 msgid "tags to add" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:588 msgid "tags to remove" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:50 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:136 msgid "No details available." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:189 msgid "Device no longer connected." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:284 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:307 msgid "Get device information" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:318 msgid "Get list of books on device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:305 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:328 msgid "Get annotations from device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:314 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:340 msgid "Send metadata to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:345 msgid "Send collections to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:343 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:380 msgid "Upload %d books to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:395 msgid "Delete books from device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:375 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:412 msgid "Download books from device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:422 msgid "View book on device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:419 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:456 msgid "Set default send to device action" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:425 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:462 msgid "Send to main memory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:427 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:464 msgid "Send to storage card A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:429 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:466 msgid "Send to storage card B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:434 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:471 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:480 msgid "Main Memory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:454 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:492 +msgid "Send specific format to" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:493 msgid "Send and delete from library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:455 -msgid "Send specific format" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:491 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:536 msgid "Eject device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:609 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:658 msgid "Error communicating with device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:636 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:679 msgid "Select folder to open as device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:684 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:726 msgid "Error talking to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:685 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:727 msgid "" "There was a temporary error talking to the device. Please unplug and " "reconnect the device and or reboot." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:724 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:770 msgid "Device: " msgstr "Συσκευή: " -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:726 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:772 msgid " detected." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:870 msgid "selected to send" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:817 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:875 msgid "Choose format to send to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:826 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:884 msgid "No device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:827 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:885 msgid "Cannot send: No device is connected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:830 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:834 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:888 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:892 msgid "No card" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:831 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:835 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:889 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:893 msgid "Cannot send: Device has no storage card" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:876 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:934 msgid "E-book:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:879 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:937 msgid "Attached, you will find the e-book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:880 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:938 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:107 msgid "by" msgstr "από" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:939 msgid "in the %s format." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:894 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:952 msgid "Sending email to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:924 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:932 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1026 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1088 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1207 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1215 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:982 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:990 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1089 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1174 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1293 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1301 msgid "No suitable formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:925 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:983 msgid "Auto convert the following books before sending via email?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:933 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:991 msgid "" "Could not email the following books as no suitable formats were found:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:951 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1009 msgid "Failed to email books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:952 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1010 msgid "Failed to email the following books:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:956 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1014 msgid "Sent by email:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:985 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1048 msgid "News:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:986 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1049 msgid "Attached is the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:997 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1060 msgid "Sent news to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1027 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1089 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1208 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1090 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1175 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1294 msgid "Auto convert the following books before uploading to the device?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1057 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1120 msgid "Sending catalogs to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1121 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1207 msgid "Sending news to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1174 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1260 msgid "Sending books to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1216 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1302 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:1278 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1366 msgid "No space on device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1279 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1367 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:78 -msgid "Select available formats and their order for this device" +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:324 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:234 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:57 +msgid "Invalid template" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:82 -msgid "Use sub directories" +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:58 +msgid "The template %s is invalid:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:83 +msgid "Select available formats and their order for this device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:87 +msgid "Use sub directories" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:88 msgid "Use author sort for author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:90 msgid "Save &template:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:48 msgid "Add books by ISBN" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:44 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:49 msgid "" "

    Enter a list of ISBNs in the box to the left, one per line. calibre will " "automatically create entries for books based on the ISBN and download " @@ -5456,19 +5991,19 @@ msgid "" "ignored." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:50 msgid "&Paste from clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:80 msgid "Fit &cover within view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:81 msgid "&Previous" msgstr "Προηγού&μενο" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:82 msgid "&Next" msgstr "Επόμε&νο" @@ -5476,33 +6011,80 @@ msgstr "Επόμε&νο" msgid "My Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:69 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:304 msgid "Generate catalog" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:75 msgid "Generate catalog for {0} books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:76 msgid "Catalog &format:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:77 msgid "" "Catalog &title (existing catalog with the same title will be replaced):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:78 msgid "&Send catalog to device automatically" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:79 msgid "Catalog options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:40 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:26 +msgid "Check Library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:35 +msgid "&Run the check" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:38 +msgid "Copy &to clipboard" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:54 +msgid "Names to ignore:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:59 +msgid "" +"Enter comma-separated standard file name wildcards, such as synctoy*.dat" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:62 +msgid "Extensions to ignore" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:67 +msgid "" +"Enter comma-separated extensions without a leading dot. Used only in book " +"folders" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:119 +msgid "Path from library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:89 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:226 +msgid "Name" +msgstr "Όνομα" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:136 +msgid "" +"The marked files and folders will be permanently deleted. Are you " +"sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:45 msgid "Choose Format" msgstr "" @@ -5543,6 +6125,7 @@ msgid "No location selected" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:635 msgid "Bad location" msgstr "" @@ -5550,27 +6133,27 @@ msgstr "" msgid "%s is not an existing folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:71 msgid "Choose your calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:72 msgid "Your calibre library is currently located at {0}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:73 msgid "New &Location:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:74 msgid "Use &existing library at the new location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:75 msgid "&Create an empty library at the new location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:76 msgid "&Move current library to new location" msgstr "" @@ -5582,1108 +6165,28 @@ msgstr "" msgid "Set options for converting %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:211 msgid "&Title:" msgstr "&Τίτλος:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:98 msgid "&Author(s):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:95 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:100 msgid "&Profile:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comments_dialog_ui.py:41 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comments_dialog_ui.py:46 msgid "Edit Comments" msgstr "Επεξεργασία Σχολίων" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:173 -msgid "%(plugin_type)s %(plugins)s" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:174 -msgid "plugins" -msgstr "πρόσθετα" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:183 -msgid "" -"\n" -"Customization: " -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:198 -msgid "General" -msgstr "Γενικά" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:200 -msgid "Conversion" -msgstr "Μετατροπή" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:201 -msgid "" -"Email\n" -"Delivery" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:202 -msgid "Add/Save" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:203 -msgid "Advanced" -msgstr "Για προχωρημένους" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:204 -msgid "" -"Content\n" -"Server" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:205 -msgid "Plugins" -msgstr "Πρόσθετα" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:229 -msgid "Auto send" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:229 -msgid "Email" -msgstr "Ηλεκ. αλληλογραφία" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:234 -msgid "Formats to email. The first matching format will be sent." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:235 -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:309 -msgid "new email address" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:491 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:24 -msgid "Wide" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:492 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:24 -msgid "Narrow" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:508 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:50 -msgid "Medium" -msgstr "Μεσαίο" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:508 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:50 -msgid "Small" -msgstr "Μικρό" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:509 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:51 -msgid "Large" -msgstr "Μεγάλο" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:515 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:54 -msgid "Always" -msgstr "Πάντα" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:515 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:54 -msgid "Automatic" -msgstr "Αυτόματο" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:516 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:55 -msgid "Never" -msgstr "Ποτέ" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:529 -msgid "Toolbars/Context menus" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:543 -msgid "Done" -msgstr "Ολοκληρώθηκε" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:544 -msgid "Confirmation dialogs have all been reset" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:549 -msgid "System port selected" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:550 -msgid "" -"The value %d you have chosen for the content server port is a system " -"port. Your operating system may not allow the server to run on this " -"port. To be safe choose a port number larger than 1024." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:570 -msgid "Failed to install command line tools." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:573 -msgid "Command line tools installed" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:574 -msgid "Command line tools installed in" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:575 -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:626 -msgid "No valid plugin path" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:627 -msgid "%s is not a valid plugin path" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:630 -msgid "Choose plugin" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:642 -msgid "Plugin cannot be disabled" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:643 -msgid "The plugin: %s cannot be disabled" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:652 -msgid "Plugin not customizable" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:653 -msgid "Plugin: %s does not need customization" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:661 -msgid "Customize" -msgstr "Προσαρμογή" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:699 -msgid "Cannot remove builtin plugin" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:700 -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:715 -msgid "Invalid tweaks" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:716 -msgid "" -"The tweaks you entered are invalid, try resetting the tweaks to default and " -"changing them one by one until you find the invalid setting." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:746 -msgid "You must select a column to delete it" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:751 -msgid "The selected column is not a custom column" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:752 -#: /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/config/__init__.py:753 -msgid "Do you really want to delete column %s and all its data?" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:820 -msgid "Error log:" -msgstr "Αρχείο καταγραφής σφαλμάτων:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:827 -msgid "Access log:" -msgstr "Αρχείο καταγραφής προσβάσεων:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:855 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:319 -msgid "Failed to start content server" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:880 -msgid "Invalid size" -msgstr "Μη έγκυρο μέγεθος" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:881 -msgid "The size %s is invalid. must be of the form widthxheight" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:947 -msgid "Must restart" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:948 -msgid "" -"The changes you made require that Calibre be restarted. Please restart as " -"soon as practical." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:982 -msgid "Checking database integrity" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:1002 -msgid "Failed to check database integrity" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:1007 -msgid "Some inconsistencies found" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:1008 -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:133 -msgid "TabWidget" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:134 -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:135 -msgid "Read metadata only from &file name" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:136 -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:137 -msgid "&Swap author firstname and lastname" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:138 -msgid "" -"If an existing book with a similar title and author is found that does not " -"have the format being added, the format is added\n" -"to the existing book, instead of creating a new entry. If the existing book " -"already has the format, then it is silently ignored.\n" -"\n" -"Title match ignores leading indefinite articles (\"the\", \"a\", \"an\"), " -"punctuation, case, etc. Author match is exact." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:142 -msgid "" -"If books with similar titles and authors found, &merge the new files " -"automatically" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:143 -msgid "&Configure metadata from file name" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:144 -msgid "&Adding books" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:145 -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:146 -msgid "Save &cover separately" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:147 -msgid "Update &metadata in saved copies" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:148 -msgid "Save metadata in &OPF file" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:149 -msgid "Convert non-English characters to &English equivalents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:150 -msgid "Format &dates as:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:151 -msgid "File &formats to save:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:152 -msgid "Replace space with &underscores" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:153 -msgid "Change paths to &lowercase" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:154 -msgid "&Saving books" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:155 -msgid "Metadata &management:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:156 -msgid "Manual management" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:157 -msgid "Only on send" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:158 -msgid "Automatic management" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:159 -msgid "" -"

  • Manual Management: Calibre updates the metadata and adds " -"collections only when a book is sent. With this option, calibre will never " -"remove a collection.
  • \n" -"
  • Only on send: Calibre updates metadata and adds/removes " -"collections for a book only when it is sent to the device.
  • \n" -"
  • Automatic management: Calibre automatically keeps metadata on the " -"device in sync with the calibre library, on every connect
  • " -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:162 -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:163 -msgid "Sending to &device" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:606 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:128 -msgid "Show notification when &new version is available" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:607 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:127 -msgid "Download &social metadata (tags/ratings/etc.) by default" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:608 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:126 -msgid "&Overwrite author and title by default when fetching metadata" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:609 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:131 -msgid "Default network &timeout:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:610 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:132 -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:611 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:133 -msgid " seconds" -msgstr " δευτερόλεπτα" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:612 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:100 -msgid "Choose &language (requires restart):" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:613 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:134 -msgid "Normal" -msgstr "Κανονικό" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:614 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:135 -msgid "High" -msgstr "Υψηλή" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:615 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:136 -msgid "Low" -msgstr "Χαμηλή" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:616 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:137 -msgid "Job &priority:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:617 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:138 -msgid "Preferred &output format:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:618 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:141 -msgid "Reset all disabled &confirmation dialogs" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:619 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:142 -msgid "Preferred &input format order:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:622 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:98 -msgid "User Interface &layout (needs restart):" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:623 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:99 -msgid "&Number of covers to show in browse mode (needs restart):" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:624 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:139 -msgid "Restriction to apply when the current library is opened:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:625 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:140 -msgid "" -"Apply this restriction on calibre startup if the current library is being " -"used. Also applied when switching to this library. Note that this setting is " -"per library. " -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:626 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:102 -msgid "Disable all animations. Useful if you have a slow/old computer." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:627 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:103 -msgid "Disable &animations" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:628 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:110 -msgid "&Toolbar" -msgstr "Γραμμή &εργαλείων" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:629 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:111 -msgid "&Icon size:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:630 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:112 -msgid "Show &text under icons:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:631 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:130 -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:632 -msgid "Select visible &columns in library view" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:634 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:79 -msgid "Remove a user-defined column" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:636 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:81 -msgid "Add a user-defined column" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:638 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:83 -msgid "Edit settings of a user-defined column" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:641 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:145 -msgid "Use internal &viewer for:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:642 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:109 -msgid "Search as you type" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:643 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:107 -msgid "Use &Roman numerals for series" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:644 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:104 -msgid "Enable system &tray icon (needs restart)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:645 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:101 -msgid "Show &average ratings in the tags browser" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:646 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:129 -msgid "Automatically send downloaded &news to ebook reader" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:647 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:105 -msgid "Show &splash screen at startup" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:648 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:108 -msgid "Show cover &browser in a separate window (needs restart)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:649 -msgid "Show ¬ifications in system tray" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:650 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:662 -msgid "&Miscellaneous" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:651 -msgid "Add an email address to which to send books" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:652 -msgid "&Add email" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:653 -msgid "Make &default" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:654 -msgid "&Remove email" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:655 -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:656 -msgid "&Maximum number of waiting worker processes (needs restart):" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:657 -msgid "Limit the max. simultaneous jobs to the available CPU &cores" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:658 -msgid "Debug &device detection" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:659 -msgid "&Check database integrity" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:660 -msgid "Open calibre &configuration directory" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:661 -msgid "&Install command line tools" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:663 -msgid "" -"Values for the tweaks are shown below. Edit them to change the behavior of " -"calibre" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:664 -msgid "All available tweaks" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:665 -msgid "&Current tweaks" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:666 -msgid "&Restore to defaults" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:667 -msgid "&Tweaks" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:668 -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:669 -msgid "Server &port:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:670 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212 -#: /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:671 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:59 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213 -#: /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:672 -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:673 -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:674 -msgid "Max. &cover size:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:675 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:60 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:214 -msgid "&Show password" -msgstr "&Εμφάνιση κωδικού πρόσβασης" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:676 -msgid "Max. &OPDS items per query:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:677 -msgid "Max. OPDS &ungrouped items:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:678 -msgid "Restriction (saved search) to apply:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:679 -msgid "" -"This restriction (based on a saved search) will restrict the books the " -"content server makes available to those matching the search. This setting is " -"per library (i.e. you can have a different restriction per library)." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:680 -msgid "&Start Server" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:681 -msgid "St&op Server" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:682 -msgid "&Test Server" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:683 -msgid "Run server &automatically on startup" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:684 -msgid "View &server logs" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:685 -#: /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:687 -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:688 -msgid "Enable/&Disable plugin" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:689 -msgid "&Customize plugin" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:690 -msgid "&Remove plugin" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:691 -msgid "Add new plugin" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:692 -msgid "Plugin &file:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:694 -msgid "&Add" -msgstr "&Προσθήκη" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:125 -msgid "Create Tag-based Column" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:126 -msgid "Lookup name" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:127 -msgid "Column heading" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:128 -msgid "Column type" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:129 -msgid "Use brackets" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:130 -msgid "Values can be edited" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:135 -msgid "Text" -msgstr "Κείμενο" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:136 -msgid "Number" -msgstr "Αριθμός" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:137 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:31 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:69 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:889 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:568 -msgid "Date" -msgstr "Ημερομηνία" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:138 -msgid "Tag on book" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:139 -msgid "Explanation text added in create_ct_column.py" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:140 -msgid "Create and edit tag-based columns" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:19 -msgid "Text, column shown in the tag browser" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:22 -msgid "Comma separated text, like tags, shown in the tag browser" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:25 -msgid "Long text, like comments, not shown in the tag browser" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:28 -msgid "Text column for keeping series-like information" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:33 -msgid "Floating point numbers" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:35 -msgid "Integers" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:37 -msgid "Ratings, shown with stars" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:40 -msgid "Yes/No" -msgstr "Ναι/Όχι" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:69 -msgid "No column selected" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:70 -msgid "No column has been selected" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:74 -msgid "Selected column is not a user-defined column" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:105 -msgid "No lookup name was provided" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:107 -msgid "" -"The lookup name must contain only lower case letters, digits and " -"underscores, and start with a letter" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:116 -msgid "No column heading was provided" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:122 -msgid "The lookup name %s is already used" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:132 -msgid "The heading %s is already used" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:117 -msgid "Create or edit custom columns" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:102 -msgid "&Lookup name" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:103 -msgid "Column &heading" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:104 -msgid "" -"Used for searching the column. Must contain only digits and lower case " -"letters." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:105 -msgid "" -"Column heading in the library view and category name in the tag browser" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:106 -msgid "Column &type" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:107 -msgid "What kind of information will be kept in the column." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:108 -msgid "" -"

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

    \n" -"

    For example:\n" -"

      \n" -"
    • ddd, d MMM yyyy gives Mon, 5 Jan 2010
    • \n" -"
    • dd MMMM yy gives 05 January 10
    • \n" -"
    " -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:114 -msgid "Use MMM yyyy for month + year, yyyy for year only" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:115 -msgid "Default: dd MMM yyyy." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:116 -msgid "Format for &dates" -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/config/toolbar.py:35 -msgid "Switch between library and device views" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:38 -msgid "Separator" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:51 -msgid "Choose library" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:201 -msgid "The main toolbar" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:202 -msgid "The main toolbar when a device is connected" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:203 -msgid "The context menu for the books in the calibre library" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:205 -msgid "The context menu for the books on the device" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:243 -msgid "Cannot add" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:244 -msgid "Cannot add the actions %s to this location" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:261 -msgid "Cannot remove" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:262 -msgid "Cannot remove the actions %s from this location" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:97 -msgid "Customize the actions in:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:98 -msgid "A&vailable actions" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:99 -msgid "&Current actions" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:100 -msgid "Move selected action up" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:102 -msgid "Move selected action down" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:104 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:78 -msgid "Ctrl+S" -msgstr "Ctrl+Ε" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:105 -msgid "Add selected actions to toolbar" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:107 -msgid "Remove selected actions from toolbar" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:109 -msgid "Restore to &default" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:55 msgid "&Show this warning again" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/conversion_error_ui.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/conversion_error_ui.py:47 msgid "ERROR" msgstr "ΣΦΑΛΜΑ" @@ -6698,38 +6201,57 @@ msgid "Location" msgstr "Τοποθεσία" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:925 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:31 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:294 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569 +msgid "Date" +msgstr "Ημερομηνία" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1116 msgid "Format" msgstr "Μορφοποίηση" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device_ui.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device_ui.py:55 msgid "Delete from device" msgstr "Διαγραφή από τη συσκευή" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:33 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:34 msgid "Author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:590 +msgid "Invalid author name" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:591 +msgid "Author names cannot contain & characters." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:71 msgid "Manage authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:72 msgid "Sort by author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:73 msgid "Sort by author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:74 msgid "" "Reset all the author sort values to a value automatically generated from the " "author. Exactly how this value is automatically generated can be controlled " "via Preferences->Advanced->Tweaks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:75 msgid "Recalculate all author sort values" msgstr "" @@ -6767,14 +6289,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:192 msgid "" -"No metadata found, try adjusting the title and author or the ISBN key." +"No metadata found, try adjusting the title and author and/or removing the " +"ISBN." 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:90 msgid "Fetch metadata" 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:91 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 " @@ -6782,675 +6305,1025 @@ msgid "" "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:92 msgid "&Access Key:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:93 msgid "Fetch" msgstr "Ανάκτηση" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:94 msgid "Matches" msgstr "Ταιριάσματα" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:95 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:91 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:96 msgid "Download &social metadata (tags/rating/etc.) for the selected book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:97 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 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/job_view_ui.py:42 msgid "Details of job" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:44 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:49 msgid "Active Jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:50 msgid "&Stop selected job" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:51 msgid "Show job &details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:52 msgid "Stop &all non device jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:26 +msgid "Title/Author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:27 +msgid "Standard metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:28 +msgid "Custom metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:29 +msgid "Search/Replace" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:33 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress.py:76 +msgid "Working" +msgstr "Σε εργασία" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:184 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:386 +msgid "Lower Case" +msgstr "Πεζά" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:385 +msgid "Upper Case" +msgstr "Κεφαλαία" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:388 +msgid "Title Case" +msgstr "Κεφαλαία/Πεζά Τίτλου" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:189 +msgid "Character match" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:190 +msgid "Regular Expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:193 +msgid "Replace field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:194 +msgid "Prepend to field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:195 +msgid "Append to field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:206 msgid "Editing meta information for %d books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:225 -msgid "Applying changes to %d books. This may take a while." +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:259 +msgid "Book %d:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:274 +msgid "" +"You can destroy your library using this feature. Changes are " +"permanent. There is no undo function. You are strongly encouraged to back up " +"your library before proceeding.

    Search and replace in text fields using " +"character matching or regular expressions. " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:282 +msgid "" +"In character mode, the field is searched for the entered search text. The " +"text is replaced by the specified replacement text everywhere it is found in " +"the specified field. After replacement is finished, the text can be changed " +"to upper-case, lower-case, or title-case. If the case-sensitive check box is " +"checked, the search text must match exactly. If it is unchecked, the search " +"text will match both upper- and lower-case letters" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:293 +msgid "" +"In regular expression mode, the search text is an arbitrary python-" +"compatible regular expression. The replacement text can contain " +"backreferences to parenthesized expressions in the pattern. The search is " +"not anchored, and can match and replace multiple times on the same string. " +"The modification functions (lower-case etc) are applied to the matched text, " +"not to the field as a whole. The destination box specifies the field where " +"the result after matching and replacement is to be assigned. You can replace " +"the text in the field, or prepend or append the matched text. See this reference for more " +"information on python's regular expressions, and in particular the 'sub' " +"function." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:438 +msgid "You must specify a destination when source is a composite field" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:633 +msgid "Search/replace invalid" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:531 +msgid "" +"Authors cannot be set to the empty string. Book title %s not processed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:539 +msgid "Title cannot be set to the empty string. Book title %s not processed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:634 +msgid "Search pattern is invalid: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:671 +msgid "" +"Applying changes to %d books.\n" +"Phase {0} {1}%%." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:334 msgid "Edit Meta information" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:336 msgid "A&utomatically set author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:337 msgid "Author s&ort: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:164 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:338 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:165 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:370 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:339 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:384 msgid "&Rating:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:167 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371 -#: /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:340 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:341 +#: /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 "Rating of this book. 0-5 stars" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:342 msgid "No change" msgstr "Καμία αλλαγή" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:169 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:373 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:343 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:387 msgid " stars" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:345 msgid "Add ta&gs: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:173 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:174 -#: /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 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:348 +#: /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 "Open Tag Editor" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:349 msgid "&Remove tags:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:350 msgid "Comma separated list of tags to remove from the books. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:177 -msgid "Remove all" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:351 msgid "Check this box to remove all tags from the books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:182 -msgid "Remove &format:" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:352 +msgid "Remove all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:183 -msgid "&Swap title and author" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:356 +msgid "If checked, the series will be cleared" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:184 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:357 +msgid "Clear series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:358 msgid "" -"Selected books will be automatically numbered,\n" -"in the order you selected them.\n" -"So if you selected Book A and then Book B,\n" +"If not checked, the series number for the books will be set to 1.\n" +"If checked, selected books will be automatically numbered, in the order\n" +"you selected them. So if you selected Book A and then Book B,\n" "Book A will have series number 1 and Book B series number 2." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:362 +msgid "Automatically number books in this series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:363 +msgid "" +"Series will normally be renumbered from the highest number in the database\n" +"for that series. Checking this box will tell calibre to start numbering\n" +"from the value in the box" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:367 +msgid "Remove &format:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:368 +msgid "&Swap title and author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:369 +msgid "" +"Force the title to be in title case. If both this and swap authors are " +"checked,\n" +"title and author are swapped before the title case is set" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:371 +msgid "Change title to title case" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:372 msgid "" "Remove stored conversion settings for the selected books.\n" "\n" "Future conversion of these books will use the default settings." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:375 msgid "Remove &stored conversion settings for the selected books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:193 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:408 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:424 msgid "&Basic metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:194 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:409 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:377 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:425 msgid "&Custom metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:378 +msgid "Search &field:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:379 +msgid "The name of the field that you want to search" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:380 +msgid "Search mode:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:381 +msgid "" +"Choose whether to use basic text matching or advanced regular expression " +"matching" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:382 +msgid "&Search for:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:383 +msgid "" +"Enter the what you are looking for, either plain text or a regular " +"expression, depending on the mode" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:384 +msgid "" +"Check this box if the search string must match exactly upper and lower case. " +"Uncheck it if case is to be ignored" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:385 +msgid "Case sensitive" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:386 +msgid "&Replace with:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:387 +msgid "" +"The replacement text. The matched search text will be replaced with this " +"string" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:388 +msgid "Apply function after replace:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:389 +msgid "" +"Specify how the text is to be processed after matching and replacement. In " +"character mode, the entire\n" +"field is processed. In regular expression mode, only the matched text is " +"processed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:391 +msgid "&Destination field:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:392 +msgid "" +"The field that the text will be put into after all replacements. If blank, " +"the source field is used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:393 +msgid "Mode:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:394 +msgid "Specify how the text should be copied into the destination." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:395 +msgid "" +"If the replace mode is prepend or append, then this box indicates whether a " +"comma or\n" +"nothing should be put between the original text and the inserted text" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:397 +msgid "use comma" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:398 +msgid "Test &text" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:399 +msgid "Test re&sult" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:400 +msgid "Your test:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:401 +msgid "&Search and replace" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:91 msgid "Last modified: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:133 msgid "Not a valid picture" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:150 msgid "Specify title and author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:151 msgid "You must specify a title and author before generating a cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:169 msgid "Choose formats for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:200 msgid "No permission" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:201 msgid "You do not have permission to read the following files:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:229 msgid "No format selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:240 msgid "Could not read metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:236 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:241 msgid "Could not read metadata from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:284 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:295 msgid "Could not read cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:290 msgid "Could not read cover from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:296 msgid "The cover in the %s format is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:351 +msgid "" +" The green color indicates that the current author sort matches the current " +"author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:354 +msgid "" +" The red color indicates that the current author sort does not match the " +"current author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:359 msgid "Abort the editing of all remaining books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:466 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:471 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:529 msgid "This ISBN number is valid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:474 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:532 msgid "This ISBN number is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:553 -msgid "Cannot use tag editor" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:611 +msgid "Tags changed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:554 -msgid "The tags editor cannot be used if you have modified the tags" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:612 +msgid "" +"You have changed the tags. In order to use the tags editor, you must either " +"discard or apply these changes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:574 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:639 msgid "Downloading cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:586 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:591 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:597 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:602 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:651 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:656 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:662 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:667 msgid "Cannot fetch cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:587 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:598 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:603 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:652 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:663 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:668 msgid "Could not fetch cover.
    " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:588 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:653 msgid "The download timed out." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:592 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:657 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:604 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:669 msgid "" "For the error message from each cover source, click Show details below." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:611 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:676 msgid "Bad cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:612 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:677 msgid "The cover is not a valid picture" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:645 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:710 msgid "There were errors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:646 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:711 msgid "There were errors downloading social metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:675 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:742 msgid "Cannot fetch metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:676 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:743 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:759 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:833 msgid "Permission denied" msgstr "Άρνηση πρόσβασης" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:760 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:834 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:359 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371 msgid "Edit Meta Information" msgstr "" -#: /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:372 msgid "Meta information" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375 msgid "Swap the author and title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:366 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:378 msgid "Author S&ort: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:368 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:379 msgid "" -"Automatically create the author sort entry based on the current author entry" +"Specify how the author(s) of this book should be sorted. For example Charles " +"Dickens should be sorted as Dickens, Charles.\n" +"If the box is colored green, then text matches the individual author's sort " +"strings. If it is colored red, then the authors and this text do not match." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:381 +msgid "" +"Automatically create the author sort entry based on the current author " +"entry.\n" +"Using this button to create author sort will change author sort from red to " +"green." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:396 msgid "Remove unused series (Series that have no books)" msgstr "" -#: /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:398 msgid "IS&BN:" msgstr "" -#: /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:399 msgid "Publishe&d:" msgstr "" -#: /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:402 msgid "dd MMM yyyy" msgstr "" -#: /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:403 msgid "&Date:" msgstr "Η&μερομηνία:" -#: /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:404 msgid "&Comments" msgstr "" -#: /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:405 msgid "&Fetch metadata from server" msgstr "" -#: /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:406 msgid "Available Formats" msgstr "Διαθέσιμες Μορφές" -#: /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:407 msgid "Add a new format for this book to the database" msgstr "" -#: /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:409 msgid "Remove the selected formats for this book from the database." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:397 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:411 msgid "Set the cover for the book from the selected format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:399 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:413 msgid "Update metadata from the metadata in the selected format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:416 msgid "&Browse" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:403 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:417 +msgid "Remove border (if any) from cover" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:418 +msgid "T&rim" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:419 msgid "Reset cover to default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:405 -msgid "Download &cover" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:421 +msgid "Download co&ver" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:406 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:422 msgid "Generate a default cover based on the title and author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:407 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:423 msgid "&Generate cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:61 msgid "Password needed" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:122 +msgid "&Username:" +msgstr "Όν&ομα χρήστη:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:124 +msgid "&Password:" +msgstr "&Κωδικός πρόσβασης:" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:130 +msgid "&Show password" +msgstr "&Εμφάνιση κωδικού πρόσβασης" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress.py:59 msgid "Aborting..." msgstr "Εγκατάλειψη..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress.py:76 -msgid "Working" -msgstr "Σε εργασία" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor.py:54 msgid "" "The current saved search will be permanently deleted. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:88 msgid "Saved Search Editor" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:89 msgid "Saved Search: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:90 msgid "Select a saved search to edit" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:91 msgid "Delete this selected saved search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:93 msgid "Enter a new saved search name." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:94 msgid "Add the new saved search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:96 msgid "Change the contents of the saved search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:126 msgid "Need username and password" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:127 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:172 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:166 +msgid "Account" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:167 +msgid "(optional)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:168 +msgid "(required)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:185 msgid "Created by: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:192 msgid "Last downloaded: never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:207 msgid "%d days, %d hours and %d minutes ago" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:209 msgid "Last downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:220 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:197 msgid "Schedule news download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:236 msgid "Add a custom news source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:241 msgid "Download all scheduled new sources" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:341 msgid "No internet connection" msgstr "Δεν υπάρχει ενεργή σύνδεση Internet" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:342 msgid "Cannot download news as no internet connection is active" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:193 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:283 msgid "Recipes" msgstr "Συνταγές" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:199 msgid "Download all scheduled recipes at once" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:200 msgid "Download &all scheduled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:201 msgid "blurb" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:202 msgid "&Schedule for download:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:198 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:208 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213 msgid "Every " msgstr "Κάθε " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:204 msgid "day" msgstr "ημέρα" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:205 msgid "Monday" msgstr "Δευτέρα" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:206 msgid "Tuesday" msgstr "Τρίτη" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:207 msgid "Wednesday" msgstr "Τετάρτη" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:208 msgid "Thursday" msgstr "Πέμπτη" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:209 msgid "Friday" msgstr "Παρασκευή" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210 msgid "Saturday" msgstr "Σάββατο" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 msgid "Sunday" msgstr "Κυριακή" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:207 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212 msgid "at" msgstr "σε" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:214 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:210 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:222 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:268 msgid " days" msgstr " ημέρες" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:216 msgid "&Account" msgstr "&Λογαριασμός" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:220 msgid "For the scheduling to work, you must leave calibre running." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:221 msgid "&Schedule" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:222 msgid "Add &title as tag" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:223 msgid "&Extra tags:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:224 msgid "&Advanced" msgstr "&Για προχωρημένους" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:225 msgid "&Download now" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:226 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:223 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:228 msgid "Delete downloaded news older than " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:36 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:41 msgid "contains" msgstr "περιέχει" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:37 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:42 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 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:43 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 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:44 msgid "Negate" msgstr "Αρνητικό" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 msgid "Advanced Search" msgstr "Προχωρημένη αναζήτηση" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:114 -msgid "Find entries that have..." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:115 -msgid "&All these words:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:116 -msgid "This exact &phrase:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:117 -msgid "&One or more of these words:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:118 -msgid "But dont show entries that have..." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:119 -msgid "Any of these &unwanted words:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 msgid "What kind of match to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:121 -msgid "Contains: the word or phrase matches anywhere in the metadata" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +msgid "Contains: the word or phrase matches anywhere in the metadata field" 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" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +msgid "Equals: the word or phrase must match the entire metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 msgid "" -"Regular expression: the expression must match anywhere in the metadata" +"Regular expression: the expression must match anywhere in the metadata field" 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:203 +msgid "Find entries that have..." +msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +msgid "&All these words:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +msgid "This exact &phrase:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +msgid "&One or more of these words:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 +msgid "But dont show entries that have..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 +msgid "Any of these &unwanted words:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 msgid "" "See the User Manual for more help" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:210 +msgid "A&dvanced Search" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:212 +msgid "Enter the title." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:213 +msgid "&Author:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 +msgid "Ta&gs:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:216 +msgid "Enter an author's name. Only one author can be used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:217 +msgid "" +"Enter a series name, without an index. Only one series name can be used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:218 +msgid "Enter tags separated by spaces" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:219 +msgid "&Clear" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:220 +msgid "Search only in specific fields:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:221 +msgid "Titl&e/Author/Series ..." +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_categories.py:50 -#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:80 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:97 msgid "Authors" msgstr "Συγγραφείς" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 -#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:111 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:128 msgid "Publishers" msgstr "" @@ -7463,51 +7336,51 @@ msgid "" "The current tag category will be permanently deleted. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:158 msgid "User Categories Editor" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:159 msgid "A&vailable items" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:160 msgid "Apply tags to current tag category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:162 msgid "A&pplied items" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:163 msgid "Unapply (remove) tag from current tag category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:165 msgid "Category name: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:166 msgid "Select a category to edit" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:167 msgid "Delete this selected tag category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:169 msgid "Enter a new category name. Select the kind before adding it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:170 msgid "Add the new category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:172 msgid "Category filter: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:173 msgid "Select the content kind of the new category" msgstr "" @@ -7522,43 +7395,43 @@ msgid "" "to delete them?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:128 msgid "Tag Editor" msgstr "Επεξεργαστής Ετικετών" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:129 msgid "A&vailable tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:130 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 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:132 msgid "Apply tag to current book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:134 msgid "A&pplied tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:135 msgid "Unapply (remove) tag from current book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:137 msgid "&Add tag:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:138 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 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:139 msgid "Add tag to available tags and apply it to current book" msgstr "" @@ -7567,12 +7440,12 @@ msgid "%s (was %s)" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:503 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:580 msgid "Item is blank" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:504 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:581 msgid "An item cannot be set to nothing. Delete it instead." msgstr "" @@ -7596,149 +7469,184 @@ msgstr "" msgid "Are you certain you want to delete the following items?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:77 msgid "Category Editor" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:78 msgid "Items in use" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:79 msgid "" "Delete item from database. This will unapply the item from all books and " "then remove it from the database." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:81 msgid "Rename the item in every book where it is used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar_ui.py:106 +msgid "Ctrl+S" +msgstr "Ctrl+Ε" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:56 msgid "Test email settings" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:57 msgid "Send test mail from %s to:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:53 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:120 msgid "&Test" msgstr "&Δοκιμή" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:127 -msgid "No recipe selected" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tweak_epub_ui.py:55 +msgid "Display contents of exploded ePub" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tweak_epub_ui.py:56 +msgid "&Explode ePub" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tweak_epub_ui.py:57 +msgid "Rebuild ePub from exploded contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tweak_epub_ui.py:58 +msgid "&Rebuild ePub" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tweak_epub_ui.py:59 +msgid "Discard changes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tweak_epub_ui.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:218 +msgid "&Cancel" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tweak_epub_ui.py:61 +msgid "" +"

    Explode the ePub to display contents in a file browser window. To tweak " +"individual files, right-click, then 'Open with...' your editor of choice. " +"When tweaks are complete, close the file browser window and the editor " +"windows you used to edit files in the epub.

    Rebuild the ePub, " +"updating your calibre library.

    " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:132 +msgid "No recipe selected" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:137 msgid "The attached file: %s is a recipe to download %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:138 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 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:260 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 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:169 msgid "Switch to Basic mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:179 msgid "Feed must have a title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180 msgid "The feed must have a title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:184 msgid "Feed must have a URL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:185 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 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191 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 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:232 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:291 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 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:292 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 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:246 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:268 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:295 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 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:269 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:296 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 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262 msgid "Pick recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262 msgid "Pick the recipe to customize" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:277 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:282 msgid "Choose a recipe file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:253 msgid "Add custom news source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:249 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:254 msgid "Available user recipes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:250 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:255 msgid "Add/Update &recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:256 msgid "&Remove recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:252 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:257 msgid "&Share recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:253 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:258 msgid "Customize &builtin recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:254 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:259 msgid "&Load recipe from file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:256 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:261 msgid "" " @@ -227,7 +227,7 @@ class BookInfo(QWebView): %%s - '''%(p, f, c) + '''%(f, c) if self.vertical: if comments: rows += u'%s'%comments diff --git a/src/calibre/translations/calibre.pot b/src/calibre/translations/calibre.pot index 262d5915ec..c513e267e3 100644 --- a/src/calibre/translations/calibre.pot +++ b/src/calibre/translations/calibre.pot @@ -4,9 +4,9 @@ # msgid "" msgstr "" -"Project-Id-Version: calibre 0.7.30\n" -"POT-Creation-Date: 2010-11-26 10:43+MST\n" -"PO-Revision-Date: 2010-11-26 10:43+MST\n" +"Project-Id-Version: calibre 0.7.31\n" +"POT-Creation-Date: 2010-11-27 11:31+MST\n" +"PO-Revision-Date: 2010-11-27 11:31+MST\n" "Last-Translator: Automatically generated\n" "Language-Team: LANGUAGE\n" "MIME-Version: 1.0\n" From 664266577d2c29e0622037f25c53c6615778ceaf Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 27 Nov 2010 13:00:00 -0700 Subject: [PATCH 190/377] ... --- src/calibre/gui2/book_details.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/book_details.py b/src/calibre/gui2/book_details.py index c6fa4ddc27..7e9d048e66 100644 --- a/src/calibre/gui2/book_details.py +++ b/src/calibre/gui2/book_details.py @@ -219,7 +219,7 @@ class BookInfo(QWebView): @@ -227,7 +227,7 @@ class BookInfo(QWebView): %%s - '''%(f, c) + '''%(p, f, c) if self.vertical: if comments: rows += u'%s'%comments From f1b2a23dac1bad4173448873c1d67a4fd16e4dda Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 27 Nov 2010 13:21:07 -0700 Subject: [PATCH 191/377] More robust technique to make the background of the details panel transparent --- src/calibre/gui2/book_details.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/calibre/gui2/book_details.py b/src/calibre/gui2/book_details.py index 7e9d048e66..28ca06b352 100644 --- a/src/calibre/gui2/book_details.py +++ b/src/calibre/gui2/book_details.py @@ -190,6 +190,10 @@ class BookInfo(QWebView): self.page().setLinkDelegationPolicy(self.page().DelegateAllLinks) self.linkClicked.connect(self.link_activated) self._link_clicked = False + self.setAttribute(Qt.WA_OpaquePaintEvent, False) + palette = self.palette() + palette.setBrush(QPalette.Base, Qt.transparent) + self.page().setPalette(palette) def link_activated(self, link): self._link_clicked = True @@ -211,8 +215,6 @@ class BookInfo(QWebView): def _show_data(self, rows, comments): f = QFontInfo(QApplication.font(self.parent())).pixelSize() - p = unicode(QApplication.palette().color(QPalette.Normal, - QPalette.Window).name()) c = unicode(QApplication.palette().color(QPalette.Normal, QPalette.WindowText).name()) templ = u'''\ @@ -227,7 +229,7 @@ class BookInfo(QWebView): %%s - '''%(p, f, c) + '''%(f, c) if self.vertical: if comments: rows += u'%s'%comments From 711112d1a492cbcacf4610dd07d38b7c1f8052b8 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 27 Nov 2010 13:59:25 -0700 Subject: [PATCH 192/377] Enable SQLite C extension to speed up large library initialization --- src/calibre/library/sqlite.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/library/sqlite.py b/src/calibre/library/sqlite.py index 94338433a5..8aa76b2643 100644 --- a/src/calibre/library/sqlite.py +++ b/src/calibre/library/sqlite.py @@ -150,7 +150,7 @@ class DBThread(Thread): detect_types=sqlite.PARSE_DECLTYPES|sqlite.PARSE_COLNAMES) self.conn.execute('pragma cache_size=5000') encoding = self.conn.execute('pragma encoding').fetchone()[0] - c_ext_loaded = False #load_c_extensions(self.conn) + c_ext_loaded = load_c_extensions(self.conn) self.conn.row_factory = sqlite.Row if self.row_factory else lambda cursor, row : list(row) self.conn.create_aggregate('concat', 1, Concatenate) if not c_ext_loaded: From 19f12f8a5d59f07cc450011f4914460671db2938 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 27 Nov 2010 15:17:29 -0700 Subject: [PATCH 193/377] ... --- src/calibre/gui2/book_details.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/book_details.py b/src/calibre/gui2/book_details.py index 28ca06b352..4ffc8da650 100644 --- a/src/calibre/gui2/book_details.py +++ b/src/calibre/gui2/book_details.py @@ -214,9 +214,18 @@ class BookInfo(QWebView): def _show_data(self, rows, comments): + + def color_to_string(col): + ans = '#000000' + if col.isValid(): + col = col.toRgb() + if col.isValid(): + ans = unicode(col.name()) + return ans + f = QFontInfo(QApplication.font(self.parent())).pixelSize() - c = unicode(QApplication.palette().color(QPalette.Normal, - QPalette.WindowText).name()) + c = color_to_string(QApplication.palette().color(QPalette.Normal, + QPalette.WindowText)) templ = u'''\ From 90462414850f558638db5e644271df043c5b9b35 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 27 Nov 2010 15:40:59 -0700 Subject: [PATCH 194/377] Make InterfaceAction plugins loadable from zip files --- src/calibre/customize/__init__.py | 9 +++++++++ src/calibre/gui2/ui.py | 4 +--- src/calibre/manual/plugins.rst | 9 +++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/calibre/customize/__init__.py b/src/calibre/customize/__init__.py index 523fc51d92..251f527bb6 100644 --- a/src/calibre/customize/__init__.py +++ b/src/calibre/customize/__init__.py @@ -370,6 +370,15 @@ class InterfaceActionBase(Plugin): # {{{ can_be_disabled = False actual_plugin = None + + def load_actual_plugin(self, gui): + ''' + This method should must the actual interface action plugin object. + ''' + mod, cls = self.actual_plugin.split(':') + return getattr(__import__(mod, fromlist=['1'], level=0), cls)(gui, + self.site_customization) + # }}} class PreferencesPlugin(Plugin): # {{{ diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index bd0743e819..00bba2b491 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -102,9 +102,7 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{ self.device_connected = None acmap = OrderedDict() for action in interface_actions(): - mod, cls = action.actual_plugin.split(':') - ac = getattr(__import__(mod, fromlist=['1'], level=0), cls)(self, - action.site_customization) + ac = action.load_actual_plugin(self) if ac.name in acmap: if ac.priority >= acmap[ac.name].priority: acmap[ac.name] = ac diff --git a/src/calibre/manual/plugins.rst b/src/calibre/manual/plugins.rst index eb955aebee..0a62218fb9 100644 --- a/src/calibre/manual/plugins.rst +++ b/src/calibre/manual/plugins.rst @@ -161,11 +161,20 @@ The base class for such devices is :class:`calibre.devices.usbms.driver.USBMS`. User Interface Actions -------------------------- +If you are adding your own plugin in a zip file, you should subclass both InterfaceActionBase and InterfaceAction. The :meth:`load_actual_plugin` method of you InterfaceActionBase subclass must return an instantiated object of your InterfaceBase subclass. + + .. autoclass:: calibre.gui2.actions.InterfaceAction :show-inheritance: :members: :member-order: bysource +.. autoclass:: calibre.customize.InterfaceActionBase + :show-inheritance: + :members: + :member-order: bysource + + Preferences Plugins -------------------------- From b3c6bb4cb1e938176150d12429ab0c55748baab0 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 27 Nov 2010 15:45:15 -0700 Subject: [PATCH 195/377] ... --- src/calibre/customize/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/customize/__init__.py b/src/calibre/customize/__init__.py index 251f527bb6..b4e9b6c448 100644 --- a/src/calibre/customize/__init__.py +++ b/src/calibre/customize/__init__.py @@ -373,7 +373,7 @@ class InterfaceActionBase(Plugin): # {{{ def load_actual_plugin(self, gui): ''' - This method should must the actual interface action plugin object. + This method must return the actual interface action plugin object. ''' mod, cls = self.actual_plugin.split(':') return getattr(__import__(mod, fromlist=['1'], level=0), cls)(gui, From 3ac65b82c08c63f2ec799540cc63f0f3bf2b3411 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 27 Nov 2010 17:45:48 -0700 Subject: [PATCH 196/377] A Hello World GUI plugin --- src/calibre/manual/customize.rst | 38 ++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/calibre/manual/customize.rst b/src/calibre/manual/customize.rst index e0f799f572..5272a88f53 100644 --- a/src/calibre/manual/customize.rst +++ b/src/calibre/manual/customize.rst @@ -98,6 +98,44 @@ Every time you use calibre to convert a book, the plugin's :meth:`run` method wi converted book will have its publisher set to "Hello World". For more information about |app|'s plugin system, read on... + +A Hello World GUI plugin +--------------------------- + +Here's a simple Hello World plugin for the |app| GUI. It will cause a box to popup with the message "Hellooo World!" when you press Ctrl+Shift+H + +.. code-block:: python + + from calibre.customize import InterfaceActionBase + + class HelloWorldBase(InterfaceActionBase): + + name = 'Hello World GUI' + author = 'The little green man' + + def load_actual_plugin(self, gui): + from calibre.gui2.actions import InterfaceAction + + class HelloWorld(InterfaceAction): + name = 'Hello World GUI' + action_spec = ('Hello World!', 'add_book.png', None, + _('Ctrl+Shift+H')) + + def genesis(self): + self.qaction.triggered.connect(self.hello_world) + + def hello_world(self, *args): + from calibre.gui2 import info_dialog + info_dialog(self.gui, 'Hello World!', 'Hellooo World!', + show=True) + + return HelloWorld(gui, None) + +You can also have it show up in the toolbars/context menu by going to Preferences->Toolbars and adding this plugin to the locations you want it to be in. + +While this plugin is utterly useless, note that all calibre GUI actions like adding/saving/removing/viewing/etc. are implemented as plugins, so there is no limit to what you can acheive. The key thing to remember is that the plugin has access to the full |app| GUI via ``self.gui``. + + The Plugin base class ------------------------ From 3c01ad453a8c0659bdee160d1742da478b940d54 Mon Sep 17 00:00:00 2001 From: Sengian Date: Sun, 28 Nov 2010 01:51:33 +0100 Subject: [PATCH 197/377] First draft of amazon plugin --- src/calibre/ebooks/metadata/amazonfr.py | 457 ++++++++++++++++++++++++ 1 file changed, 457 insertions(+) create mode 100644 src/calibre/ebooks/metadata/amazonfr.py diff --git a/src/calibre/ebooks/metadata/amazonfr.py b/src/calibre/ebooks/metadata/amazonfr.py new file mode 100644 index 0000000000..7091719f30 --- /dev/null +++ b/src/calibre/ebooks/metadata/amazonfr.py @@ -0,0 +1,457 @@ +from __future__ import with_statement +__license__ = 'GPL 3' +__copyright__ = '2010, sengian ' + +import sys, textwrap, re, traceback +from urllib import urlencode +from math import ceil + +from lxml import html +from lxml.html import soupparser + +from calibre.utils.date import parse_date, utcnow +from calibre import browser, preferred_encoding +from calibre.ebooks.chardet import xml_to_unicode +from calibre.ebooks.metadata import MetaInformation, check_isbn, \ + authors_to_sort_string +from calibre.ebooks.metadata.fetch import MetadataSource +from calibre.utils.config import OptionParser +from calibre.library.comments import sanitize_comments_html + + +class AmazonFr(MetadataSource): + + name = 'Amazon french' + description = _('Downloads social metadata from amazon.fr') + supported_platforms = ['windows', 'osx', 'linux'] + author = 'Sengian' + version = (1, 0, 0) + has_html_comments = True + + def fetch(self): + try: + self.results = search(self.title, self.book_author, self.publisher, + self.isbn, max_results=10, verbose=self.verbose, lang='fr') + except Exception, e: + self.exception = e + self.tb = traceback.format_exc() + +class Amazon(MetadataSource): + + name = 'Amazon' + description = _('Downloads social metadata from amazon.com') + supported_platforms = ['windows', 'osx', 'linux'] + author = 'Kovid Goyal & Sengian' + version = (1, 1, 0) + has_html_comments = True + + def fetch(self): + try: + self.results = search(self.title, self.book_author, self.publisher, + self.isbn, max_results=10, verbose=self.verbose, lang='en') + except Exception, e: + self.exception = e + self.tb = traceback.format_exc() + + +def report(verbose): + if verbose: + import traceback + traceback.print_exc() + +def replace_monthsfr(datefr): + # Replace french months by english equivalent for parse_date + frtoen = { + u'[jJ]anvier': u'jan', + u'[fF].vrier': u'feb', + u'[mM]ars': u'mar', + u'[aA]vril': u'apr', + u'[mM]ai': u'may', + u'[jJ]uin': u'jun', + u'[jJ]uillet': u'jul', + u'[aA]o.t': u'aug', + u'[sS]eptembre': u'sep', + u'[Oo]ctobre': u'oct', + u'[nN]ovembre': u'nov', + u'[dD].cembre': u'dec' } + for k in frtoen.iterkeys(): + tmp = re.sub(k, frtoen[k], datefr) + if tmp <> datefr: break + return tmp + +class Query(object): + + BASE_URL_FR = 'http://www.amazon.fr' + BASE_URL_EN = 'http://www.amazon.com' + + def __init__(self, title=None, author=None, publisher=None, isbn=None, keywords=None, + max_results=20, rlang='en'): + assert not(title is None and author is None and publisher is None \ + and isbn is None and keywords is None) + assert (max_results < 21) + + self.max_results = int(max_results) + self.renbres = re.compile(u'\s*(\d+)\s*') + + q = { 'search-alias' : 'stripbooks' , + 'unfiltered' : '1', + 'field-keywords' : '', + 'field-author' : '', + 'field-title' : '', + 'field-isbn' : '', + 'field-publisher' : '' + #get to amazon detailed search page to get all options + # 'node' : '', + # 'field-binding' : '', + #before, during, after + # 'field-dateop' : '', + #month as number + # 'field-datemod' : '', + # 'field-dateyear' : '', + #french only + # 'field-collection' : '', + #many options available + } + + if rlang =='en': + q['sort'] = 'relevanceexprank' + self.urldata = self.BASE_URL_EN + elif rlang =='fr': + q['sort'] = 'relevancerank' + self.urldata = self.BASE_URL_FR + self.baseurl = self.urldata + + if isbn is not None: + q['field-isbn'] = isbn.replace('-', '') + else: + if title is not None: + q['field-title'] = title + if author is not None: + q['field-author'] = author + if publisher is not None: + q['field-publisher'] = publisher + if keywords is not None: + q['field-keywords'] = keywords + + if isinstance(q, unicode): + q = q.encode('utf-8') + self.urldata += '/gp/search/ref=sr_adv_b/?' + urlencode(q) + + def __call__(self, browser, verbose, timeout = 5.): + if verbose: + print 'Query:', self.urldata + + try: + raw = browser.open_novisit(self.urldata, timeout=timeout).read() + except Exception, e: + report(verbose) + if callable(getattr(e, 'getcode', None)) and \ + e.getcode() == 404: + return + raise + if '404 - ' in raw: + return + raw = xml_to_unicode(raw, strip_encoding_pats=True, + resolve_entities=True)[0] + try: + feed = soupparser.fromstring(raw) + except: + return None, self.urldata + + #nb of page + try: + nbresults = self.renbres.findall(feed.xpath("//*[@class='resultCount']")[0].text) + rpp = 0 + if len(nbresults) > 1: + rpp = int(nbresults[1]) + nbresults = int(nbresults[2]) + except: + return None, self.urldata + + pages =[feed] + if rpp: + nbpagetoquery = int(ceil(float(min(nbresults, self.max_results))/ rpp)) + for i in xrange(2, nbpagetoquery + 1): + try: + urldata = self.urldata + '&page=' + str(i) + raw = browser.open_novisit(urldata, timeout=timeout).read() + except Exception, e: + continue + if '<title>404 - ' in raw: + continue + raw = xml_to_unicode(raw, strip_encoding_pats=True, + resolve_entities=True)[0] + try: + feed = soupparser.fromstring(raw) + except: + continue + pages.append(feed) + + results = [] + for x in pages: + results.extend([i.getparent().get('href') \ + for i in x.xpath("//a/span[@class='srTitle']")]) + return results[:self.max_results], self.baseurl + +class ResultList(list): + + def __init__(self, baseurl, lang = 'en'): + self.baseurl = baseurl + self.lang = lang + self.repub = re.compile(u'\((.*)\)') + self.rerat = re.compile(u'([0-9.]+)') + self.reattr = re.compile(r'<([a-zA-Z0-9]+)\s[^>]+>') + self.reoutp = re.compile(r'(?s)<em>--This text ref.*?</em>') + self.recom = re.compile(r'(?s)<!--.*?-->') + self.republi = re.compile(u'(Editeur|Publisher)', re.I) + self.reisbn = re.compile(u'(ISBN-10|ISBN-10|ASIN)', re.I) + self.relang = re.compile(u'(Language|Langue)', re.I) + self.reratelt = re.compile(u'(Average\s*Customer\s*Review|Moyenne\s*des\s*commentaires\s*client)', re.I) + self.reprod = re.compile(u'(Product\s*Details|D.tails\s*sur\s*le\s*produit)', re.I) + + def strip_tags_etree(self, etreeobj, invalid_tags): + for (itag, rmv) in invalid_tags.iteritems(): + if rmv: + for elts in etreeobj.getiterator(itag): + elts.drop_tree() + else: + for elts in etreeobj.getiterator(itag): + elts.drop_tag() + + def clean_entry(self, entry, invalid_tags = {'script': True}, + invalid_id = (), invalid_class=()): + #invalid_tags: remove tag and keep content if False else remove + #remove tags + if invalid_tags: + self.strip_tags_etree(entry, invalid_tags) + #remove id + if invalid_id: + for eltid in invalid_id: + elt = entry.get_element_by_id(eltid) + if elt is not None: + elt.drop_tree() + #remove class + if invalid_class: + for eltclass in invalid_class: + elts = entry.find_class(eltclass) + if elts is not None: + for elt in elts: + elt.drop_tree() + + def get_title(self, entry): + title = entry.get_element_by_id('btAsinTitle') + if title is not None: + title = title.text + return unicode(title.replace('\n', '').strip()) + + def get_authors(self, entry): + author = entry.get_element_by_id('btAsinTitle') + while author.getparent().tag != 'div': + author = author.getparent() + author = author.getparent() + authortext = [] + for x in author.getiterator('a'): + authortext.append(unicode(x.text_content().strip())) + return authortext + + def get_description(self, entry, verbose): + try: + description = entry.get_element_by_id("productDescription").find("div[@class='content']") + inv_class = ('seeAll', 'emptyClear') + inv_tags ={'img': True, 'a': False} + self.clean_entry(description, invalid_tags=inv_tags, invalid_class=inv_class) + description = html.tostring(description, method='html', encoding=unicode).strip() + # remove all attributes from tags + description = self.reattr.sub(r'<\1>', description) + # Remove the notice about text referring to out of print editions + description = self.reoutp.sub('', description) + # Remove comments + description = self.recom.sub('', description) + return unicode(sanitize_comments_html(description)) + except: + report(verbose) + return None + + def get_tags(self, entry, browser, verbose): + try: + tags = entry.get_element_by_id('tagContentHolder') + testptag = tags.find_class('see-all') + if testptag: + for x in testptag: + alink = x.xpath('descendant-or-self::a') + if alink: + if alink[0].get('class') == 'tgJsActive': + continue + link = self.baseurl + alink[0].get('href') + entry = self.get_individual_metadata(browser, link, verbose) + tags = entry.get_element_by_id('tagContentHolder') + break + tags = [a.text for a in tags.getiterator('a') if a.get('rel') == 'tag'] + except: + report(verbose) + tags = [] + return tags + + def get_book_info(self, entry, mi, verbose): + try: + entry = entry.get_element_by_id('SalesRank').getparent() + except: + try: + for z in entry.getiterator('h2'): + if self.reprod.search(z.text_content()): + entry = z.getparent().find("div[@class='content']/ul") + break + except: + report(verbose) + return mi + elts = entry.findall('li') + #pub & date + elt = filter(lambda x: self.republi.search(x.find('b').text), elts) + if elt: + pub = elt[0].find('b').tail + mi.publisher = unicode(self.repub.sub('', pub).strip()) + d = self.repub.search(pub) + if d is not None: + d = d.group(1) + try: + default = utcnow().replace(day=15) + if self.lang == 'fr': + d = replace_monthsfr(d) + d = parse_date(d, assume_utc=True, default=default) + mi.pubdate = d + except: + report(verbose) + #ISBN + elt = filter(lambda x: self.reisbn.search(x.find('b').text), elts) + if elt: + isbn = elt[0].find('b').tail.replace('-', '').strip() + if check_isbn(isbn): + mi.isbn = unicode(isbn) + elif len(elt) > 1: + isbn = elt[1].find('b').tail.replace('-', '').strip() + if check_isbn(isbn): + mi.isbn = unicode(isbn) + #Langue + elt = filter(lambda x: self.relang.search(x.find('b').text), elts) + if elt: + langue = elt[0].find('b').tail.strip() + if langue: + mi.language = unicode(langue) + #ratings + elt = filter(lambda x: self.reratelt.search(x.find('b').text), elts) + if elt: + ratings = elt[0].find_class('swSprite') + if ratings: + ratings = self.rerat.findall(ratings[0].get('title')) + if len(ratings) == 2: + mi.rating = float(ratings[0])/float(ratings[1]) * 5 + return mi + + def fill_MI(self, entry, title, authors, browser, verbose): + mi = MetaInformation(title, authors) + mi.author_sort = authors_to_sort_string(authors) + mi.comments = self.get_description(entry, verbose) + mi = self.get_book_info(entry, mi, verbose) + mi.tags = self.get_tags(entry, browser, verbose) + return mi + + def get_individual_metadata(self, browser, linkdata, verbose): + try: + raw = browser.open_novisit(linkdata).read() + except Exception, e: + report(verbose) + if callable(getattr(e, 'getcode', None)) and \ + e.getcode() == 404: + return + raise + if '<title>404 - ' in raw: + report(verbose) + return + raw = xml_to_unicode(raw, strip_encoding_pats=True, + resolve_entities=True)[0] + try: + return soupparser.fromstring(raw) + except: + return + + def populate(self, entries, browser, verbose=False): + for x in entries: + try: + entry = self.get_individual_metadata(browser, x, verbose) + # clean results + # inv_ids = ('divsinglecolumnminwidth', 'sims.purchase', 'AutoBuyXGetY', 'A9AdsMiddleBoxTop') + # inv_class = ('buyingDetailsGrid', 'productImageGrid') + # inv_tags ={'script': True, 'style': True, 'form': False} + # self.clean_entry(entry, invalid_id=inv_ids) + title = self.get_title(entry) + authors = self.get_authors(entry) + except Exception, e: + if verbose: + print 'Failed to get all details for an entry' + print e + continue + self.append(self.fill_MI(entry, title, authors, browser, verbose)) + + +def search(title=None, author=None, publisher=None, isbn=None, + max_results=5, verbose=False, keywords=None, lang='en'): + br = browser() + entries, baseurl = Query(title=title, author=author, isbn=isbn, publisher=publisher, + keywords=keywords, max_results=max_results,rlang=lang)(br, verbose) + + if entries is None or len(entries) == 0: + return + + #List of entry + ans = ResultList(baseurl, lang) + ans.populate(entries, br, verbose) + return ans + +def option_parser(): + parser = OptionParser(textwrap.dedent(\ + '''\ + %prog [options] + + Fetch book metadata from Amazon. You must specify one of title, author, + ISBN, publisher or keywords. Will fetch a maximum of 10 matches, + so you should make your query as specific as possible. + You can chose the language for metadata retrieval (french & american). + ''' + )) + parser.add_option('-t', '--title', help='Book title') + parser.add_option('-a', '--author', help='Book author(s)') + parser.add_option('-p', '--publisher', help='Book publisher') + parser.add_option('-i', '--isbn', help='Book ISBN') + parser.add_option('-k', '--keywords', help='Keywords') + parser.add_option('-c', '--covers', default=0, + help='Covers: 1-Check/ 2-Download') + parser.add_option('-p', '--coverspath', default='', + help='Covers files path') + parser.add_option('-m', '--max-results', default=10, + help='Maximum number of results to fetch') + parser.add_option('-l', '--lang', default='en', + help='Chosen language for metadata search') + parser.add_option('-v', '--verbose', default=0, action='count', + help='Be more verbose about errors') + return parser + +def main(args=sys.argv): + parser = option_parser() + opts, args = parser.parse_args(args) + try: + results = search(opts.title, opts.author, isbn=opts.isbn, publisher=opts.publisher, + keywords=opts.keywords, verbose=opts.verbose, max_results=opts.max_results, + lang=opts.lang) + except AssertionError: + report(True) + parser.print_help() + return 1 + if results is None or len(results) == 0: + print 'No result found for this search!' + return 0 + for result in results: + print unicode(result).encode(preferred_encoding, 'replace') + print + +if __name__ == '__main__': + sys.exit(main()) \ No newline at end of file From fa4986e6c897f8c32208308aa488f455ee3337de Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Sat, 27 Nov 2010 19:05:13 -0700 Subject: [PATCH 198/377] Improve Revista Muy Intersante --- resources/recipes/revista_muy.recipe | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/resources/recipes/revista_muy.recipe b/resources/recipes/revista_muy.recipe index b101fe97ce..c4516f718d 100644 --- a/resources/recipes/revista_muy.recipe +++ b/resources/recipes/revista_muy.recipe @@ -13,6 +13,8 @@ class RevistaMuyInteresante(BasicNewsRecipe): no_stylesheets = True remove_javascript = True + conversion_options = {'linearize_tables': True} + extra_css = ' .txt_articulo{ font-family: sans-serif; font-size: medium; text-align: justify } .contentheading{font-family: serif; font-size: large; font-weight: bold; color: #000000; text-align: center}' @@ -39,11 +41,12 @@ class RevistaMuyInteresante(BasicNewsRecipe): keep_only_tags = [dict(name='div', attrs={'class':['article']}),dict(name='td', attrs={'class':['txt_articulo']})] remove_tags = [ - dict(name=['object','link','script','ul']) + dict(name=['object','link','script','ul','iframe','ins']) ,dict(name='div', attrs={'id':['comment']}) ,dict(name='td', attrs={'class':['buttonheading']}) - ,dict(name='div', attrs={'class':['tags_articles']}) + ,dict(name='div', attrs={'class':['tags_articles','bajo_title']}) ,dict(name='table', attrs={'class':['pagenav']}) + ,dict(name='form', attrs={'class':['voteform']}) ] remove_tags_after = dict(name='div', attrs={'class':'tags_articles'}) @@ -115,3 +118,5 @@ class RevistaMuyInteresante(BasicNewsRecipe): if link_item: cover_url = "http://www.muyinteresante.es"+link_item['src'] return cover_url + + From 3a7da561cc69594b4a61306241e1ca330a17fbc6 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Sat, 27 Nov 2010 19:31:12 -0700 Subject: [PATCH 199/377] Fix regression taht broke RTF conversion on some linux systems --- src/calibre/ebooks/rtf/input.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/calibre/ebooks/rtf/input.py b/src/calibre/ebooks/rtf/input.py index 75c839eb83..57903a6711 100644 --- a/src/calibre/ebooks/rtf/input.py +++ b/src/calibre/ebooks/rtf/input.py @@ -292,7 +292,8 @@ class RTFInput(InputFormatPlugin): # Replace newlines inserted by the 'empty_paragraphs' option in rtf2xml with html blank lines if not getattr(self.options, 'remove_paragraph_spacing', False): res = re.sub('\s*<body>', '<body>', res) - res = re.sub('(?<=\n)\n{2}', u'<p>\u00a0</p>\n', res) + res = re.sub('(?<=\n)\n{2}', + u'<p>\u00a0</p>\n'.encode('utf-8'), res) if self.options.preprocess_html: preprocessor = PreProcessor(self.options, log=getattr(self, 'log', None)) res = preprocessor(res) From 3cea3ec006db7d81449a7ea3cfec7bf7b07d8253 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Sat, 27 Nov 2010 19:33:05 -0700 Subject: [PATCH 200/377] ... --- src/calibre/manual/customize.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/calibre/manual/customize.rst b/src/calibre/manual/customize.rst index 5272a88f53..0d6f75b9cf 100644 --- a/src/calibre/manual/customize.rst +++ b/src/calibre/manual/customize.rst @@ -129,11 +129,11 @@ Here's a simple Hello World plugin for the |app| GUI. It will cause a box to pop info_dialog(self.gui, 'Hello World!', 'Hellooo World!', show=True) - return HelloWorld(gui, None) + return HelloWorld(gui, self.site_customization) You can also have it show up in the toolbars/context menu by going to Preferences->Toolbars and adding this plugin to the locations you want it to be in. -While this plugin is utterly useless, note that all calibre GUI actions like adding/saving/removing/viewing/etc. are implemented as plugins, so there is no limit to what you can acheive. The key thing to remember is that the plugin has access to the full |app| GUI via ``self.gui``. +While this plugin is utterly useless, note that all calibre GUI actions like adding/saving/removing/viewing/etc. are implemented as plugins, so there is no limit to what you can achieve. The key thing to remember is that the plugin has access to the full |app| GUI via ``self.gui``. The Plugin base class From 0f1d3b1ca871e625181459f4295a6711a5149fc8 Mon Sep 17 00:00:00 2001 From: Translators <> Date: Sun, 28 Nov 2010 04:48:08 +0000 Subject: [PATCH 201/377] Launchpad automatic translations update. --- src/calibre/translations/ca.po | 63 +- src/calibre/translations/cs.po | 142 +- src/calibre/translations/en_GB.po | 29 +- src/calibre/translations/es.po | 29 +- src/calibre/translations/fr.po | 30 +- src/calibre/translations/it.po | 10 +- src/calibre/translations/sr.po | 30 +- src/calibre/translations/zh_CN.po | 2054 +++++++++++++++++------------ 8 files changed, 1417 insertions(+), 970 deletions(-) diff --git a/src/calibre/translations/ca.po b/src/calibre/translations/ca.po index a12bf0058b..a4dc332e77 100644 --- a/src/calibre/translations/ca.po +++ b/src/calibre/translations/ca.po @@ -10,14 +10,14 @@ msgid "" msgstr "" "Project-Id-Version: ca\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-11-26 19:04+0000\n" -"PO-Revision-Date: 2010-11-26 21:32+0000\n" +"POT-Creation-Date: 2010-11-27 20:21+0000\n" +"PO-Revision-Date: 2010-11-28 01:00+0000\n" "Last-Translator: FerranRius <frius64@hotmail.com>\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-27 04:47+0000\n" +"X-Launchpad-Export-Date: 2010-11-28 04:46+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -617,7 +617,7 @@ msgstr "Aquest perfil és adient per a l'Amazon Kindle DX." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:684 msgid "This profile is intended for the B&N Nook Color." -msgstr "" +msgstr "Aquest perfil és adient per al B&N Nook Color." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:695 msgid "This profile is intended for the Sanda Bambook." @@ -840,7 +840,7 @@ msgstr "Comunica't amb un lector PocketBook 301" #: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:233 msgid "Communicate with the PocketBook 602 reader." -msgstr "" +msgstr "Comunica't amb el PocketBook 602 reader." #: /home/kovid/work/calibre/src/calibre/devices/edge/driver.py:17 msgid "Entourage Edge" @@ -1054,7 +1054,7 @@ msgstr "Comunica't amb un GM2000" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:180 msgid "Communicate with the Acer Lumiread" -msgstr "" +msgstr "Comunica't amb l'Acer Lumiread." #: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:17 msgid "Communicate with the Nokia 770 internet tablet." @@ -2712,7 +2712,8 @@ msgstr "Descarrega portades des de librarything.com" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:129 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:69 msgid "LibraryThing.com timed out. Try again later." -msgstr "LibraryThing.com ha esgotat el temps. Provi-ho de nou més tard." +msgstr "" +"El temps d'espera per a LibraryThing.com s'ha esgotat. Intenteu-ho més tard." #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:136 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:76 @@ -2735,7 +2736,7 @@ msgstr "Descarrega portades de Douban.com" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:235 msgid "Douban.com API timed out. Try again later." msgstr "" -"El temps d'espera d l'API Douban.com s'ha esgotat. Intenteu-ho més tard." +"El temps d'espera de l'API Douban.com s'ha esgotat. Intenteu-ho més tard." #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/douban.py:42 msgid "Downloads metadata from Douban.com" @@ -2852,19 +2853,20 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:25 msgid "Downloads metadata from french Nicebooks" -msgstr "" +msgstr "Descarrega metadades del Nicebooks francès" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:41 msgid "Downloads covers from french Nicebooks" -msgstr "" +msgstr "Descarrega portades del Nicebooks francès" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:332 msgid "Nicebooks timed out. Try again later." msgstr "" +"El temps d'espera per a Nicebooks s'ha esgotat. Intenteu-ho més tard." #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:337 msgid "An errror occured with Nicebooks cover fetcher" -msgstr "" +msgstr "Hi ha hagut un error a la descàrrega de portades des de Nicebooks" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 @@ -3893,6 +3895,10 @@ msgid "" "removed. You should check them manually. This can happen if you manipulate " "the files in the library folder directly." msgstr "" +"Aquests llibres tenien formats o portades a la llista de la base de dades " +"que no estan disponibles. S'ha suprimit les entrades per als " +"formats/portades. Caldria comprovar-ho manualment. Pot passar en manipular " +"directament els fitxers a la carpeta de la biblioteca." #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:51 @@ -4079,6 +4085,7 @@ msgstr "S'està començant la conversió de %d llibre(s)" #: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:170 msgid "Empty output file, probably the conversion process crashed" msgstr "" +"Fitxer de sortida buit, probablement el procés de conversió ha fallat" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:83 msgid "Copy to library" @@ -4207,16 +4214,16 @@ msgid "" "The selected books will be <b>permanently deleted</b> and the files removed " "from your calibre library. Are you sure?" msgstr "" -"Els llibres que seleccionats s'eliminaran <b>permanentment</b> i els fitxers " -"es suprimiran de la vostra llibreria del calibre. N'esteu segur?" +"Els llibres seleccionats se suprimiran <b>permanentment</b> i els fitxers es " +"suprimiran de la vostra llibreria del calibre. N'esteu segur?" #: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:185 msgid "" "The selected books will be <b>permanently deleted</b> from your device. Are " "you sure?" msgstr "" -"Els llibres que seleccionats se suprimiran <b>permanentment</b> del " -"dispositiu. N'esteu segur?" +"Els llibres seleccionats se suprimiran <b>permanentment</b> del dispositiu. " +"N'esteu segur?" #: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:26 msgid "Connect to folder" @@ -4647,7 +4654,7 @@ msgstr "S'està cercant a" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:198 msgid "Adding..." -msgstr "Afegint..." +msgstr "S'està afegint..." #: /home/kovid/work/calibre/src/calibre/gui2/add.py:211 msgid "Searching in all sub-directories..." @@ -4668,7 +4675,7 @@ msgstr "Cap llibre" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:294 msgid "Added" -msgstr "Afegit" +msgstr "S'ha afegit" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:307 msgid "Adding failed" @@ -6455,6 +6462,13 @@ msgid "" "enter the full path to the file after a <code>>></code>. For example:</p>\n" "<p><code>9788842915232 >> %s</code></p>" msgstr "" +"<p>Introduïu una llista d'ISBNs al quadre de l'esquerra, un per línia. El " +"calibre crearà entrades per als llibres automàticament basant-se en l'ISBN i " +"en descarregarà les metadades i portades.</p>\n" +"<p>S'ignora qualsevol ISBN de la llista no vàlid.</p>\n" +"<p>També podeu indicar un fitxer per afegir amb cada ISBN. Introduïu el camí " +"complert del fitxer després de <code>>></code> per fer-ho. Exemple:</p>\n" +"<p><code>9788842915232 >> %s</code></p>" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:53 msgid "&Paste from clipboard" @@ -8339,7 +8353,7 @@ msgstr "Codi font de la recepta (python)" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:145 msgid "Email %s to %s" -msgstr "" +msgstr "Envia per correu electrònic %s a %s" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:187 msgid "News:" @@ -8347,7 +8361,7 @@ msgstr "Notícies:" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:189 msgid "Attached is the %s periodical downloaded by calibre." -msgstr "" +msgstr "S'adjunta el diari %s descarregat pel calibre." #: /home/kovid/work/calibre/src/calibre/gui2/email.py:242 msgid "E-book:" @@ -8385,11 +8399,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:303 msgid "Failed to email book" -msgstr "" +msgstr "No s'ha pogut enviar el llibre" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:306 msgid "sent" -msgstr "" +msgstr "s'ha enviat" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:329 msgid "Sent news to" @@ -11248,6 +11262,9 @@ msgid "" "<p>Choose a location for your books. When you add books to calibre, they " "will be copied here. Use an <b>empty folder</b> for a new calibre library:" msgstr "" +"<p>Trieu una localització per als llibres. Quan s'afegeixin llibres al " +"calibre es copiaran aquí. Utilitzeu una <b>carpeta buida</b> per a una nova " +"biblioteca del calibre:" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 msgid "&Change" @@ -11418,11 +11435,11 @@ msgstr "&SSL" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:143 msgid "WARNING: Using no encryption is highly insecure" -msgstr "" +msgstr "Avís: No fer servir encriptació és molt insegur" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:144 msgid "&None" -msgstr "" +msgstr "&Cap" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:145 msgid "Use Gmail" diff --git a/src/calibre/translations/cs.po b/src/calibre/translations/cs.po index de78b7d549..52e5d861dd 100644 --- a/src/calibre/translations/cs.po +++ b/src/calibre/translations/cs.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-11-26 19:04+0000\n" -"PO-Revision-Date: 2010-11-26 21:42+0000\n" -"Last-Translator: Kovid Goyal <Unknown>\n" +"POT-Creation-Date: 2010-11-27 20:21+0000\n" +"PO-Revision-Date: 2010-11-27 20:34+0000\n" +"Last-Translator: Aleš Bajtalon <Unknown>\n" "Language-Team: Czech <cs@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-27 04:47+0000\n" +"X-Launchpad-Export-Date: 2010-11-28 04:46+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -817,7 +817,7 @@ msgstr "Spojit se s PocketBook 301" #: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:233 msgid "Communicate with the PocketBook 602 reader." -msgstr "" +msgstr "Komunikovat se čtečkou PocketBook 602." #: /home/kovid/work/calibre/src/calibre/devices/edge/driver.py:17 msgid "Entourage Edge" @@ -1031,7 +1031,7 @@ msgstr "Spojit se s GM2000" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:180 msgid "Communicate with the Acer Lumiread" -msgstr "" +msgstr "Komunikovat s Acer Lumiread" #: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:17 msgid "Communicate with the Nokia 770 internet tablet." @@ -1768,6 +1768,11 @@ msgid "" "by Chinese and Japanese for instance) the representation used by the largest " "number of people will be used (Chinese in the previous example)." msgstr "" +"Přeložit unicode znaky do ASCII. Používat opatrně, protože nahradí znaky " +"Unicode za znaky ASCII. Například nahradí \"%s\" s \"Michail Gorbachiov\". " +"Také si všimněte, že v případech, kdy existuje více zastoupení znaku " +"(například znaky sdílené čínštinou a japonštinou) bude použité to " +"nejpoužívanější (čínština v předchozím příkladě)." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:437 msgid "" @@ -1997,6 +2002,11 @@ msgid "" "and bottom of the image, but the image will never be distorted. Without this " "option the image may be slightly distorted, but there will be no borders." msgstr "" +"Při použití obálky ve formátu SVG tato volba způsobí, že obálka pokryje " +"dostupné oblasti obrazovky, ale zachová poměr stran (poměr šířky k výšce). " +"To znamená, že mohou být vidět bílé okraje po stranách nebo v horní a dolní " +"části obrazovky, ale obraz již nikdy nebude zkřivený. Bez této volby může " +"být obraz mírně zkřivený, ale nebudou vidět žádné okraje." #: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:170 #: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:203 @@ -2706,6 +2716,15 @@ msgid "" "isbndb.com.\n" "\n" msgstr "" +"\n" +"%prog [options] key\n" +"\n" +"Získat metadata pro knihy z isndb.com. Můžete zadat buď ISBN ID\n" +"knihy nebo její název a autora. Pokud zadáte název knihy a autora,\n" +"potom může být nalezena více než jedna kniha.\n" +"\n" +"klíč je klíč k účtu, který vygenerujete po přihlášení k účtu na isbndb.com.\n" +"\n" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:118 msgid "The ISBN ID of the book you want metadata for." @@ -3234,6 +3253,10 @@ msgid "" "the space after and will exceed the specified value. Also, there is a " "minimum of 25 characters. Use 0 to disable line splitting." msgstr "" +"Maximální počet znaků na řádek. Rozdělení bude provedeno v první mezeře před " +"stanovenou hodnotu. Pokud není nalezena mezera, bude rozděleno až v další " +"mezeře a překročí tak stanovenou hodnotu. Minimum je 25 znaků. Použitím " +"hodnoty 0 lze rozdělení řádku vypnout." #: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:36 msgid "" @@ -3728,6 +3751,10 @@ msgid "" "removed. You should check them manually. This can happen if you manipulate " "the files in the library folder directly." msgstr "" +"Následující knihy mají formáty nebo obálky uvedené v databázi, které ve " +"skutečnosti nejsou k dispozici. Údaje pro formáty/obálky byly odstraněny. " +"Měli byste je zkontrolovat ručně. Tato situace může nastat v případě, pokud " +"budete manipulovat přímo se soubory ve složce knihovny." #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:51 @@ -3911,7 +3938,7 @@ msgstr "Zahajuji konverzi %d knih(y)" #: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:170 msgid "Empty output file, probably the conversion process crashed" -msgstr "" +msgstr "Výstupní soubor je prázdný, pravděpodobně proces převodu havaroval" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:83 msgid "Copy to library" @@ -6805,6 +6832,11 @@ msgid "" "you selected them. So if you selected Book A and then Book B,\n" "Book A will have series number 1 and Book B series number 2." msgstr "" +"Pokud není zaškrtnuto, bude pořadové číslo knihy nastaveno na 1.\n" +"Pokud je zaškrtnuto, budou vybrané knihy automaticky číslovány v pořadí,\n" +"ve kterém jste je vybrali. Takže pokud jste vybrali knihu A a potom knihu " +"B,\n" +"kniha A bude mít pořadové číslo 1 a kniha B pořadové číslo 2." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:363 msgid "Automatically number books in this series" @@ -6842,6 +6874,9 @@ msgid "" "\n" "Future conversion of these books will use the default settings." msgstr "" +"Smazat uložené nastavení konverze pro vybrané knihy.\n" +"\n" +"Pro budoucí konverzi těchto knih bude použito výchozí nastavení." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:376 msgid "Remove &stored conversion settings for the selected books" @@ -7624,7 +7659,7 @@ msgstr "Aplikované položky" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:163 msgid "Unapply (remove) tag from current tag category" -msgstr "" +msgstr "Nepoužívat (odebrat) tag z aktuální kategorie tagů" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:165 msgid "Category name: " @@ -8008,7 +8043,7 @@ msgstr "Kód zdroje (python)" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:145 msgid "Email %s to %s" -msgstr "" +msgstr "E-mail %s pro %s" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:187 msgid "News:" @@ -8051,11 +8086,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:303 msgid "Failed to email book" -msgstr "" +msgstr "Chyba při odeslání knihy" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:306 msgid "sent" -msgstr "" +msgstr "odesláno" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:329 msgid "Sent news to" @@ -8084,6 +8119,27 @@ msgid "" "expression on a few sample filenames. The group names for the various " "metadata entries are documented in tooltips.</p></body></html>" msgstr "" +"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" " +"\"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" +"<html><head><meta name=\"qrichtext\" content=\"1\" /><style " +"type=\"text/css\">\n" +"p, li { white-space: pre-wrap; }\n" +"</style></head><body style=\" font-family:'Candara'; font-size:10pt; font-" +"weight:400; font-style:normal;\">\n" +"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-" +"right:0px; -qt-block-indent:0; text-indent:0px;\">Nastavit vzor regulárního " +"výrazu k použití, pokud se snaží odhadnout ebook metadata z názvů souborů. " +"</p>\n" +"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-" +"right:0px; -qt-block-indent:0; text-indent:0px;\"><a " +"href=\"http://docs.python.org/lib/re-syntax.html\"><span style=\" text-" +"decoration: underline; color:#0000ff;\">Reference</span></a> o syntaxi " +"regulárních výrazů jsou k dispozici.</p>\n" +"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-" +"right:0px; -qt-block-indent:0; text-indent:0px;\">Použijte funkci <span " +"style=\" font-weight:600;\">TEST</span> uvedenou níže, která prověří Váš " +"regulární výraz na několika vzorových souborech. Názvy skupin pro různé " +"položky metadat jsou zdokumentovány ve vysvětlivkách.</p></body></html>" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:119 msgid "Regular &expression" @@ -8303,6 +8359,7 @@ msgstr "dostupné" msgid "" "Books display will be restricted to those matching the selected saved search" msgstr "" +"Zobrazení knih bude omezeno na ty, které odpovídají zvolenému uložené hledání" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:170 msgid "Shift+Ctrl+F" @@ -9009,6 +9066,8 @@ msgid "" "Used for searching the column. Must contain only digits and lower case " "letters." msgstr "" +"Používá se pro prohledávání sloupců. Musí obsahovat pouze číslice a malá " +"písmena." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:131 msgid "" @@ -9055,7 +9114,7 @@ msgstr "Formát &data" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:143 msgid "<p>Field template. Uses the same syntax as save templates." -msgstr "" +msgstr "<p>Pole šablony. Používá stejnou syntaxi jako ukládání šablon." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:144 msgid "Similar to save templates. For example, {title} {isbn}" @@ -9401,6 +9460,8 @@ msgid "" "\n" "Customization: " msgstr "" +"\n" +"Přizpůsobení: " #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:155 msgid "No valid plugin path" @@ -9577,6 +9638,10 @@ msgid "" "Send to Device button. This setting can be overriden for individual devices " "by customizing the device interface plugins in Preferences->Advanced->Plugins" msgstr "" +"Zde můžete nastavit, jakým způsobem Calibre uloží Vaše knihy, když kliknete " +"na tlačítko Odeslat do zařízení. Toto nastavení může být potlačeno pro " +"jednotlivá zařízení přizpůsobením pluginů rozhraní zařízení v Nastavení-> " +"Upřesnit-> Pluginy" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:331 @@ -9678,6 +9743,12 @@ msgid "" "on your iPhone. Here myhostname should be the fully qualified hostname or " "the IP address of the computer calibre is running on." msgstr "" +"<p>Nezapomeňte, že Calibre běží jako server tak dlouho, jak dlouho je " +"spuštěný program Calibre.\n" +"<p>Stanza by měla vidět Vaši Calibre sbírku automaticky. Pokud ne, zkuste " +"přidat ve Stanza čtečce v iPhonu nový katalog s URL http://myhostname:8080. " +"Myhostname označuje název hostitele nebo IP adresu počítače, kde Calibre " +"běží." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/social.py:34 msgid "Downloading social metadata, please wait..." @@ -9764,6 +9835,8 @@ msgid "" "The tweaks you entered are invalid, try resetting the tweaks to default and " "changing them one by one until you find the invalid setting." msgstr "" +"Vylepšení, která jste zadali, jsou neplatná, zkuste vylepšení vrátit do " +"výchozího nastavení a měnit je postupně, dokud nenajdete neplatné nastavení." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/tweaks_ui.py:50 msgid "" @@ -10031,7 +10104,7 @@ msgstr "&Vysunout připojené zařízení" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:218 msgid "Calibre Quick Start Guide" -msgstr "" +msgstr "Calibre příručka pro začínající uživatele" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:439 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:450 @@ -10638,6 +10711,9 @@ msgid "" "WordPlayer. Here myhostname should be the fully qualified hostname or the IP " "address of the computer calibre is running on." msgstr "" +"Musíte v aplikaci WordPlayer přidat Calibre knihovnu s URL " +"http://myhostname:8080. Myhostname označuje název hostitele nebo IP adresu " +"počítače, na kterém Calibre běží." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:483 msgid "Moving library..." @@ -10927,11 +11003,11 @@ msgstr "&SSL" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:143 msgid "WARNING: Using no encryption is highly insecure" -msgstr "" +msgstr "VAROVÁNÍ: Nepoužívání žádného šifrování je velice nebezpečné" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:144 msgid "&None" -msgstr "" +msgstr "Žádný" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:145 msgid "Use Gmail" @@ -10972,7 +11048,7 @@ msgstr "tentoměsíc" #: /home/kovid/work/calibre/src/calibre/library/caches.py:374 #: /home/kovid/work/calibre/src/calibre/library/caches.py:375 msgid "daysago" -msgstr "" +msgstr "dní zpět" #: /home/kovid/work/calibre/src/calibre/library/caches.py:539 #: /home/kovid/work/calibre/src/calibre/library/caches.py:549 @@ -11062,6 +11138,10 @@ msgid "" "Default: '%default'\n" "Applies to: BIBTEX output format" msgstr "" +"BibTeX kódování výstupního souboru.\n" +"Dostupné typy: utf8, cp1252, ascii.\n" +"Výchozí: '%default'\n" +"Platí pro: výstupní formát BIBTEX" #: /home/kovid/work/calibre/src/calibre/library/catalog.py:261 msgid "" @@ -11078,6 +11158,10 @@ msgid "" "Default: '%default'\n" "Applies to: BIBTEX output format" msgstr "" +"Typ záznamu pro katalog BibTeX.\n" +"Dostupné typy: kniha, různé, smíšené.\n" +"Výchozí: '%default'\n" +"Platí pro: výstupní formát BIBTEX" #: /home/kovid/work/calibre/src/calibre/library/catalog.py:540 msgid "" @@ -11085,6 +11169,9 @@ msgid "" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" +"Název vygenerovaného katalogu použit jako název v metadatech.\n" +"Výchozí: '%default'\n" +"Platí pro: výstupní formáty ePub a MOBI" #: /home/kovid/work/calibre/src/calibre/library/catalog.py:547 msgid "" @@ -11253,6 +11340,9 @@ msgid "" "Available fields: %s\n" "Default: %%default" msgstr "" +"Pole podle kterého třídit výsledky\n" +"Dostupná pole: %s\n" +"Výchozí: %%default" #: /home/kovid/work/calibre/src/calibre/library/cli.py:139 msgid "Sort results in ascending order" @@ -11318,6 +11408,8 @@ 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 "" +"Předpokládá se, že každý adresář obsahuje pouze jednu logickou knihu, a že " +"všechny soubory v něm jsou různé formáty této knihy" #: /home/kovid/work/calibre/src/calibre/library/cli.py:281 msgid "Process directories recursively" @@ -11359,6 +11451,11 @@ msgid "" "separated list of id numbers (you can get id numbers by using the list " "command). For example, 23,34,57-85\n" msgstr "" +"%prog remove ids\n" +"\n" +"Odstraní knihy označené podle ids z databáze. Ids by měl být seznam id čísel " +"oddělený čárkami (id čísla můžete získat pomocí seznamu příkazů). Například, " +"23,34,57-85\n" #: /home/kovid/work/calibre/src/calibre/library/cli.py:349 msgid "You must specify at least one book to remove" @@ -11565,6 +11662,11 @@ msgid "" " List available custom columns. Shows column labels and ids.\n" " " msgstr "" +"\n" +" %prog custom_columns [options]\n" +"\n" +" Seznam dostupných vlastních sloupců. Zobrazí popisky sloupců a ids.\n" +" " #: /home/kovid/work/calibre/src/calibre/library/cli.py:775 msgid "Show details for each column." @@ -11676,10 +11778,12 @@ msgid "" "Comma-separated list of names to ignore.\n" "Default: all" msgstr "" +"Čárkami oddělený seznam ignorovaných jmen.\n" +"Výchozí: all" #: /home/kovid/work/calibre/src/calibre/library/cli.py:927 msgid "Unknown report check" -msgstr "" +msgstr "Neznámé hlášení o kontrole" #: /home/kovid/work/calibre/src/calibre/library/cli.py:960 msgid "" @@ -11734,6 +11838,8 @@ msgid "" "Comma-separated list of category lookup names.\n" "Default: all" msgstr "" +"Čárkami oddělený seznam kategorií hledaných jmen.\n" +"Výchozí: all" #: /home/kovid/work/calibre/src/calibre/library/cli.py:1047 msgid "The string used to separate fields in CSV mode. Default is a comma." @@ -11797,7 +11903,7 @@ msgstr "Kontrola chybějících souborů." #: /home/kovid/work/calibre/src/calibre/library/database2.py:2516 msgid "Checked id" -msgstr "" +msgstr "Zkontrolované id" #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:139 msgid "Ratings" diff --git a/src/calibre/translations/en_GB.po b/src/calibre/translations/en_GB.po index 4fe876a7db..8a286ac249 100644 --- a/src/calibre/translations/en_GB.po +++ b/src/calibre/translations/en_GB.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-11-26 19:04+0000\n" -"PO-Revision-Date: 2010-11-26 21:48+0000\n" -"Last-Translator: Kovid Goyal <Unknown>\n" +"POT-Creation-Date: 2010-11-27 20:21+0000\n" +"PO-Revision-Date: 2010-11-27 10:19+0000\n" +"Last-Translator: Vladimir Oka <Unknown>\n" "Language-Team: English (United Kingdom) <en_GB@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-27 04:50+0000\n" +"X-Launchpad-Export-Date: 2010-11-28 04:47+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -823,7 +823,7 @@ msgstr "Communicate with the PocketBook 301 reader." #: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:233 msgid "Communicate with the PocketBook 602 reader." -msgstr "" +msgstr "Communicate with the PocketBook 602 reader." #: /home/kovid/work/calibre/src/calibre/devices/edge/driver.py:17 msgid "Entourage Edge" @@ -1037,7 +1037,7 @@ msgstr "Communicate with the GM2000" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:180 msgid "Communicate with the Acer Lumiread" -msgstr "" +msgstr "Communicate with the Acer Lumiread" #: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:17 msgid "Communicate with the Nokia 770 internet tablet." @@ -6361,6 +6361,13 @@ msgid "" "enter the full path to the file after a <code>>></code>. For example:</p>\n" "<p><code>9788842915232 >> %s</code></p>" msgstr "" +"<p>Enter a list of ISBNs in the box to the left, one per line. calibre will " +"automatically create entries for books based on the ISBN and download " +"metadata and covers for them.</p>\n" +"<p>Any invalid ISBNs in the list will be ignored.</p>\n" +"<p>You can also specify a file that will be added with each ISBN. To do this " +"enter the full path to the file after a <code>>></code>. For example:</p>\n" +"<p><code>9788842915232 >> %s</code></p>" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:53 msgid "&Paste from clipboard" @@ -8223,7 +8230,7 @@ msgstr "News:" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:189 msgid "Attached is the %s periodical downloaded by calibre." -msgstr "" +msgstr "Attached is the %s periodical downloaded by calibre." #: /home/kovid/work/calibre/src/calibre/gui2/email.py:242 msgid "E-book:" @@ -8258,11 +8265,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:303 msgid "Failed to email book" -msgstr "" +msgstr "Failed to email book" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:306 msgid "sent" -msgstr "" +msgstr "sent" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:329 msgid "Sent news to" @@ -11227,11 +11234,11 @@ msgstr "&SSL" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:143 msgid "WARNING: Using no encryption is highly insecure" -msgstr "" +msgstr "WARNING: Using no encryption is highly insecure" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:144 msgid "&None" -msgstr "" +msgstr "&None" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:145 msgid "Use Gmail" diff --git a/src/calibre/translations/es.po b/src/calibre/translations/es.po index 1291d31a6e..bf383dd5f5 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-11-26 19:04+0000\n" -"PO-Revision-Date: 2010-11-26 21:41+0000\n" -"Last-Translator: Kovid Goyal <Unknown>\n" +"POT-Creation-Date: 2010-11-27 20:21+0000\n" +"PO-Revision-Date: 2010-11-27 17:43+0000\n" +"Last-Translator: DiegoJ <diegojromerolopez@gmail.com>\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-11-27 04:49+0000\n" +"X-Launchpad-Export-Date: 2010-11-28 04:47+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:502 @@ -622,7 +622,7 @@ msgstr "Este perfil está pensado para el JetBook de 5 pulgadas." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:684 msgid "This profile is intended for the B&N Nook Color." -msgstr "" +msgstr "Este perfil está orientado al B&N Nook Color." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:695 msgid "This profile is intended for the Sanda Bambook." @@ -842,7 +842,7 @@ msgstr "Comunicarse con el lector PocketBook 301." #: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:233 msgid "Communicate with the PocketBook 602 reader." -msgstr "" +msgstr "Comunicarse con el lector PocketBook 602." #: /home/kovid/work/calibre/src/calibre/devices/edge/driver.py:17 msgid "Entourage Edge" @@ -1057,7 +1057,7 @@ msgstr "Comunicar con el GM2000" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:180 msgid "Communicate with the Acer Lumiread" -msgstr "" +msgstr "Comunicarse con el Acer Lumiread" #: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:17 msgid "Communicate with the Nokia 770 internet tablet." @@ -2855,19 +2855,21 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:25 msgid "Downloads metadata from french Nicebooks" -msgstr "" +msgstr "Descarga metadatos en francés de Nicebooks" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:41 msgid "Downloads covers from french Nicebooks" -msgstr "" +msgstr "Descarga portadas en francés de Nicebooks" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:332 msgid "Nicebooks timed out. Try again later." msgstr "" +"El tiempo de conexión con Nicebooks ha vencido. Inténtelo de nuevo más tarde." #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:337 msgid "An errror occured with Nicebooks cover fetcher" msgstr "" +"Ha ocurrido un error al intentar obtener las portadas desde Nicebooks" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 @@ -4087,6 +4089,7 @@ msgstr "Iniciando la conversión de %d libro(s)" #: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:170 msgid "Empty output file, probably the conversion process crashed" msgstr "" +"Archivo de salida vacío, probablemente el proceso de conversión ha reventado" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:83 msgid "Copy to library" @@ -8410,11 +8413,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:303 msgid "Failed to email book" -msgstr "" +msgstr "Falló al enviar por correo el libro" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:306 msgid "sent" -msgstr "" +msgstr "enviado" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:329 msgid "Sent news to" @@ -11441,11 +11444,11 @@ msgstr "&SSL" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:143 msgid "WARNING: Using no encryption is highly insecure" -msgstr "" +msgstr "Aviso: no usar cifrado es muy inseguro" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:144 msgid "&None" -msgstr "" +msgstr "&Ninguno" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:145 msgid "Use Gmail" diff --git a/src/calibre/translations/fr.po b/src/calibre/translations/fr.po index 844aa6eff6..fda8edd7c0 100644 --- a/src/calibre/translations/fr.po +++ b/src/calibre/translations/fr.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre 0.4.22\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-11-26 19:04+0000\n" -"PO-Revision-Date: 2010-11-26 21:38+0000\n" -"Last-Translator: Kovid Goyal <Unknown>\n" +"POT-Creation-Date: 2010-11-27 20:21+0000\n" +"PO-Revision-Date: 2010-11-27 11:43+0000\n" +"Last-Translator: sengian <Unknown>\n" "Language-Team: Français <kde-i18n-doc@kde.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-27 04:48+0000\n" +"X-Launchpad-Export-Date: 2010-11-28 04:47+0000\n" "X-Generator: Launchpad (build Unknown)\n" "X-Poedit-Bookmarks: 1177,1104,-1,-1,-1,-1,-1,-1,-1,-1\n" "Generated-By: pygettext.py 1.5\n" @@ -615,7 +615,7 @@ msgstr "Ce profil est prévu pour le Kindle DX d'Amazon." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:684 msgid "This profile is intended for the B&N Nook Color." -msgstr "" +msgstr "Ce profil est prévu pour le B&N Nook Color." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:695 msgid "This profile is intended for the Sanda Bambook." @@ -2887,19 +2887,21 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:25 msgid "Downloads metadata from french Nicebooks" -msgstr "" +msgstr "Télécharger les métadonnées depuis Nicebooks (français)" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:41 msgid "Downloads covers from french Nicebooks" -msgstr "" +msgstr "Télécharger les couvertures depuis Nicebooks (français)" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:332 msgid "Nicebooks timed out. Try again later." -msgstr "" +msgstr "Le délai d'attente de Nicebooks est dépassé. Essayez plus tard." #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:337 msgid "An errror occured with Nicebooks cover fetcher" msgstr "" +"Une erreur est survenue dans le processus de récupération des couvertures de " +"Nicebooks" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 @@ -3941,6 +3943,11 @@ msgid "" "removed. You should check them manually. This can happen if you manipulate " "the files in the library folder directly." msgstr "" +"Les livres suivants avaient des formats ou des couvertures répertoriés dans " +"la base de donnée qui ne sont pas actuellement disponibles. Les entrées pour " +"les formats/couvertures ont étés supprimées. Vous devriez les vérifiez " +"manuellement. Ceci peut arriver si vous manipulez directement les fichiers " +"dans le dossier de la bibliothèque." #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:51 @@ -4131,6 +4138,8 @@ msgstr "Démarrer la conversion de %d livre(s)" #: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:170 msgid "Empty output file, probably the conversion process crashed" msgstr "" +"Fichier de sortie vide, le processus de conversion a probablement cessé de " +"fonctionné" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:83 msgid "Copy to library" @@ -8434,7 +8443,7 @@ msgstr "Code source de la recette (python)" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:145 msgid "Email %s to %s" -msgstr "" +msgstr "Envoyer par mél % à %s" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:187 msgid "News:" @@ -11366,6 +11375,9 @@ msgid "" "<p>Choose a location for your books. When you add books to calibre, they " "will be copied here. Use an <b>empty folder</b> for a new calibre library:" msgstr "" +"<p>Choisissez un emplacement pour vos livres. Quand vous ajoutez des livres " +"à Calibre, ils seront copiés ici. Utilisez un <b>dossier vide</b> pour votre " +"nouvelle bibliothèque Calibre :" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 msgid "&Change" diff --git a/src/calibre/translations/it.po b/src/calibre/translations/it.po index 9cf0ee4610..5b939669a6 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-11-26 19:04+0000\n" -"PO-Revision-Date: 2010-11-26 21:54+0000\n" -"Last-Translator: Kovid Goyal <Unknown>\n" +"POT-Creation-Date: 2010-11-27 20:21+0000\n" +"PO-Revision-Date: 2010-11-27 14:56+0000\n" +"Last-Translator: Enrico Battocchi <Unknown>\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-11-27 04:49+0000\n" +"X-Launchpad-Export-Date: 2010-11-28 04:47+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" @@ -12616,7 +12616,7 @@ msgstr "Sto caricando, attendere" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:85 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:106 msgid "Go to" -msgstr "" +msgstr "Vai a" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:101 msgid "First" diff --git a/src/calibre/translations/sr.po b/src/calibre/translations/sr.po index 3a7c398e11..24eb885f14 100644 --- a/src/calibre/translations/sr.po +++ b/src/calibre/translations/sr.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-11-26 19:04+0000\n" -"PO-Revision-Date: 2010-11-26 21:50+0000\n" -"Last-Translator: Kovid Goyal <Unknown>\n" +"POT-Creation-Date: 2010-11-27 20:21+0000\n" +"PO-Revision-Date: 2010-11-27 10:24+0000\n" +"Last-Translator: Vladimir Oka <Unknown>\n" "Language-Team: Serbian <sr@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-27 04:49+0000\n" +"X-Launchpad-Export-Date: 2010-11-28 04:47+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -822,7 +822,7 @@ msgstr "Uspstavi vezu s PocketBook 301 čitačem." #: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:233 msgid "Communicate with the PocketBook 602 reader." -msgstr "" +msgstr "Uspostavi vezu s PocketBook 602 čitačem" #: /home/kovid/work/calibre/src/calibre/devices/edge/driver.py:17 msgid "Entourage Edge" @@ -1036,7 +1036,7 @@ msgstr "Uspostavi komunikaciju s GM2000" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:180 msgid "Communicate with the Acer Lumiread" -msgstr "" +msgstr "Uspostavi vezu sa Acer Lumiread čitačem" #: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:17 msgid "Communicate with the Nokia 770 internet tablet." @@ -6388,6 +6388,14 @@ msgid "" "enter the full path to the file after a <code>>></code>. For example:</p>\n" "<p><code>9788842915232 >> %s</code></p>" msgstr "" +"<p>Unesite listu ISBN brojeva u polje s leve strane, jedan broj po redu. " +"calibre će automatski napraviti stavke za knjige zasnovane na ovim ISBN " +"brojevima i za njih preuzeti metapodatke i naslovne strane.</p>\n" +"<p>Neispravni ISBN brojevi će biti ignorisani.</p>\n" +"<p>Možete navesti i fajl koji će se priključiti svakom ISBN broju. Da biste " +"ovo uradili dodajte punu putanju do fajla iza <code>>></code>. Na " +"primer:</p>\n" +"<p><code>9788842915232 >> %s</code></p>" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:53 msgid "&Paste from clipboard" @@ -8267,7 +8275,7 @@ msgstr "Vesti:" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:189 msgid "Attached is the %s periodical downloaded by calibre." -msgstr "" +msgstr "Priključen je magazin %s koji je calibre preuzeo za vas." #: /home/kovid/work/calibre/src/calibre/gui2/email.py:242 msgid "E-book:" @@ -8302,11 +8310,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:303 msgid "Failed to email book" -msgstr "" +msgstr "Nisam uspeo da pošaljem knjigu elektronskom poštom" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:306 msgid "sent" -msgstr "" +msgstr "poslato" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:329 msgid "Sent news to" @@ -11297,11 +11305,11 @@ msgstr "&SSL" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:143 msgid "WARNING: Using no encryption is highly insecure" -msgstr "" +msgstr "UPOZORENJE: Nekorišćenje enkripcije je veoma nebezbedno" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:144 msgid "&None" -msgstr "" +msgstr "&Nijedna" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:145 msgid "Use Gmail" diff --git a/src/calibre/translations/zh_CN.po b/src/calibre/translations/zh_CN.po index 4149726b30..0f64cb6def 100644 --- a/src/calibre/translations/zh_CN.po +++ b/src/calibre/translations/zh_CN.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-10-29 19:59+0000\n" -"PO-Revision-Date: 2010-10-29 19:52+0000\n" -"Last-Translator: Kovid Goyal <Unknown>\n" +"POT-Creation-Date: 2010-11-27 20:21+0000\n" +"PO-Revision-Date: 2010-11-28 00:33+0000\n" +"Last-Translator: Jimmie Lin <Unknown>\n" "Language-Team: Simplified Chinese <wanglihao@gmail.com>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-10-30 05:04+0000\n" +"X-Launchpad-Export-Date: 2010-11-28 04:48+0000\n" "X-Generator: Launchpad (build Unknown)\n" "X-Poedit-Country: CHINA\n" "X-Poedit-Language: Chinese\n" @@ -29,11 +29,11 @@ msgstr "不做任何处理" #: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:74 #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:76 #: /home/kovid/work/calibre/src/calibre/devices/kobo/books.py:24 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:444 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:448 #: /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/sony_cache.py:643 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:657 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 @@ -42,8 +42,8 @@ msgstr "不做任何处理" #: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:124 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:93 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:95 -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:336 -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:339 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:338 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:341 #: /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 @@ -57,7 +57,7 @@ msgstr "不做任何处理" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:36 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:61 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:50 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:333 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:357 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:36 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 @@ -76,14 +76,14 @@ msgstr "不做任何处理" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:78 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:119 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:153 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:611 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:817 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:819 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:627 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:833 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:835 #: /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:911 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:916 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:982 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:913 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:918 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:984 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:143 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:150 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:64 @@ -91,7 +91,7 @@ msgstr "不做任何处理" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:118 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:173 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:174 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:40 #: /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 @@ -111,43 +111,43 @@ msgstr "不做任何处理" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:98 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:239 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:241 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:356 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:363 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:277 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:280 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:304 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:279 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:282 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:137 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:144 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:114 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:141 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:915 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:924 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1231 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1234 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1039 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1042 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:571 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:383 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:402 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:925 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1119 +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:244 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:395 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:918 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1112 #: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:112 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:189 #: /home/kovid/work/calibre/src/calibre/library/cli.py:215 -#: /home/kovid/work/calibre/src/calibre/library/database.py:913 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:399 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:411 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1283 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1387 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2161 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2163 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2295 -#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:228 +#: /home/kovid/work/calibre/src/calibre/library/database.py:914 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:375 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:387 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1254 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1355 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2151 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2153 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2284 +#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:229 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:139 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:142 #: /home/kovid/work/calibre/src/calibre/library/server/xml.py:78 @@ -187,27 +187,27 @@ msgstr "用户界面行为" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:386 #: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:22 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:251 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:283 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:206 msgid "Preferences" msgstr "首选项" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:17 +#: /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 " "library." msgstr "保持所有的 HTML 文件中的超链接并将所有链接的文件放入一个压缩文件内。该插件此后将在添加 HTML 文件到书库时自动运行。" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:53 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:51 msgid "" "Character encoding for the input HTML files. Common choices include: cp1252, " "latin1, iso-8859-1 and utf-8." msgstr "输入 HTML 文件的字符编码。如常用编码:cp1252, latin1, iso-8859-1 和 utf-8。" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:60 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:58 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 " @@ -215,7 +215,7 @@ msgid "" msgstr "" "在 pmlname_img 或 images 目录下创建一个包含 PML 文件及所有图像的 PMLZ 归档。此插件在每次向书库添加 PML 文件时运行。" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:94 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:92 msgid "Extract cover from comic files" msgstr "从漫画文件中提取封面" @@ -262,171 +262,171 @@ msgstr "设置 %s 文件的元数据" msgid "Set metadata from %s files" msgstr "从 %s 文件设置元数据" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:708 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:717 msgid "Look and Feel" msgstr "外表和感受" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:710 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:722 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:733 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:744 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:719 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:731 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:742 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:753 msgid "Interface" msgstr "界面" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:714 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:723 msgid "Adjust the look and feel of the calibre interface to suit your tastes" msgstr "调整成你喜欢的外观" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:720 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:729 msgid "Behavior" msgstr "操作方式" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:726 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735 msgid "Change the way calibre behaves" msgstr "改变calibre的操作方式" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:731 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:740 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:209 msgid "Add your own columns" msgstr "增加栏目" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:737 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746 msgid "Add/remove your own columns to the calibre book list" msgstr "向calibre书籍列表中增加或删除你自定义的栏目" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:742 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:751 msgid "Customize the toolbar" msgstr "自定义工具栏" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:748 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:757 msgid "" "Customize the toolbars and context menus, changing which actions are " "available in each" msgstr "自定义工具栏和上下文菜单,设置它们所可以提供的功能" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:754 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:763 msgid "Input Options" msgstr "输入选项" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:756 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:767 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:778 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:765 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:776 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:787 msgid "Conversion" msgstr "转换" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:760 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769 msgid "Set conversion options specific to each input format" msgstr "设置针对特定输入格式的转换选项" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:765 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:774 msgid "Common Options" msgstr "常规选项" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:771 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780 msgid "Set conversion options common to all formats" msgstr "设置所有输入格式共有的转换选项" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:776 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:785 msgid "Output Options" msgstr "输出选项" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:782 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791 msgid "Set conversion options specific to each output format" msgstr "设置针对特定输出格式的转换选项" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:787 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:796 msgid "Adding books" msgstr "增加图书" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:789 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:801 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:813 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:825 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:798 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:810 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:822 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:834 msgid "Import/Export" msgstr "导入/导出" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:793 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:802 msgid "Control how calibre reads metadata from files when adding books" msgstr "控制向calibre添加书籍时读取元数据的方式" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:799 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:808 msgid "Saving books to disk" msgstr "保存图书到磁盘" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:805 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:814 msgid "" "Control how calibre exports files from its database to disk when using Save " "to disk" msgstr "控制使用“保存到磁盘”功能时calibre从数据库导出文件的方式" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:811 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:820 msgid "Sending books to devices" msgstr "发送图书到设备" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:817 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:826 msgid "Control how calibre transfers files to your ebook reader" msgstr "控制calibre将文件传输到电子阅读器的方式" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:823 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:832 msgid "Metadata plugboards" msgstr "元数据控制板" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:829 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838 msgid "Change metadata fields before saving/sending" msgstr "保存或发送前更改元数据域" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:834 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:843 msgid "Sharing books by email" msgstr "通过Email分享图书" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:836 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:848 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:845 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:857 msgid "Sharing" msgstr "分享" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:840 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:849 msgid "" "Setup sharing of books via email. Can be used for automatic sending of " "downloaded news to your devices" msgstr "设置通过电子邮件分享图书。可用于在向阅读器下载新内容时自动发送通知。" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:846 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:855 msgid "Sharing over the net" msgstr "通过网络分享" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:852 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:861 msgid "" "Setup the calibre Content Server which will give you access to your calibre " "library from anywhere, on any device, over the internet" msgstr "设置calibre内容服务器以便通过网络在任何设备和地点访问到calibre书库。" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:859 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:868 msgid "Plugins" msgstr "插件" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:861 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:873 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:884 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:870 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:882 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:893 msgid "Advanced" msgstr "高级" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:865 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:874 msgid "Add/remove/customize various bits of calibre functionality" msgstr "添回/删除/自定义各种calibre功能" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:871 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:880 msgid "Tweaks" msgstr "优化调整" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:877 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886 msgid "Fine tune how calibre behaves in various contexts" msgstr "微调calibre在各种情况下的行为" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:882 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:891 msgid "Miscellaneous" msgstr "杂项" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:888 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:897 msgid "Miscellaneous advanced configuration" msgstr "其它高级选项" @@ -463,7 +463,7 @@ msgid "" msgstr "如果您不了解输入文件的详情请使用本默认配置文件。" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:59 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:433 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:444 msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "该配置文件适用所拟 PRS 产品系列。如 500/505/600/700 等。" @@ -473,62 +473,62 @@ msgid "This profile is intended for the SONY PRS 300." msgstr "该配置文件适用索尼 PRS 300。" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:80 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:470 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:484 msgid "This profile is intended for the SONY PRS-900." msgstr "该配置文件适用索尼 PRS-900。" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:88 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:500 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:513 msgid "This profile is intended for the Microsoft Reader." msgstr "该配置文件适用 Microsoft Reader。" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:99 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:511 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:524 msgid "This profile is intended for the Mobipocket books." msgstr "该配置文件适用 Mobipocket 书籍。" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:112 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:524 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:537 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "该配置文件适用翰林 V3 和类似设备。" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:124 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:536 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:549 msgid "This profile is intended for the Hanlin V5 and its clones." msgstr "该配置文件适用翰林 V5 和类似设备。" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:134 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:544 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:557 msgid "This profile is intended for the Cybook G3." msgstr "该配置文件适用 Cybook G3 设备。" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:147 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:557 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:570 msgid "This profile is intended for the Cybook Opus." msgstr "该配置文件适用 Cybook Opus 设备。" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:159 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:568 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:583 msgid "This profile is intended for the Amazon Kindle." msgstr "该配置文件适用 Amazon Kindle。" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:171 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:609 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:631 msgid "This profile is intended for the Irex Illiad." msgstr "该配置文件适用 Irex Illiad 设备。" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:183 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:622 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "该配置文件适用 IRex Digital Reader 1000 设备。" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:196 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:636 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 msgid "This profile is intended for the IRex Digital Reader 800." msgstr "该配置文件适用 IRex Digital Reader 800。" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:208 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:650 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 msgid "This profile is intended for the B&N Nook." msgstr "该配置文件适用 B&N Nook。" @@ -543,38 +543,42 @@ msgid "" "devices." msgstr "若您希望在电脑和设备上阅读文档,请使用本默认配置文件" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:270 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:276 msgid "" "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "适用于iPad或屏幕分辨率为768x1024的类似设备。" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:424 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:435 msgid "Intended for generic tablet devices, does no resizing of images" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:448 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:462 msgid "This profile is intended for the Kobo Reader." msgstr "该配置文件适用 Kobo Reader。" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:461 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:475 msgid "This profile is intended for the SONY PRS-300." msgstr "该配置文件适用索尼 PRS-300。" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:479 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:493 msgid "This profile is intended for the 5-inch JetBook." msgstr "该配置文件适用 5 英寸 JetBook 设备。" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:488 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:502 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." msgstr "该配置文件适用 SONY PRS 产品线,如 500/505/700 型号等,使用横向页面,主要适用于漫画。" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:589 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:609 msgid "This profile is intended for the Amazon Kindle DX." msgstr "该配置文件适用 Amazon Kindle DX。" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:664 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:684 +msgid "This profile is intended for the B&N Nook Color." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:695 msgid "This profile is intended for the Sanda Bambook." msgstr "该配置文件适用于盛大锦书(Bambook)。" @@ -648,13 +652,13 @@ msgstr "禁用该名称插件" msgid "Communicate with Android phones." msgstr "与 Android 手机通信。" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:53 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:56 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" msgstr "逗号间隔的电子书发送到设备的目录列表。将使用第一个存在的目录。" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:95 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:98 msgid "Communicate with S60 phones." msgstr "与 S60 手机通信。" @@ -685,14 +689,14 @@ msgstr "更新设备元数据列表……" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:378 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:947 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:987 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2949 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2989 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2956 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2996 msgid "%d of %d" msgstr "第%d个(共%d个)" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:385 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:992 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2995 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3002 msgid "finished" msgstr "完成" @@ -722,29 +726,29 @@ msgstr "" "无法转换部分封面图像。\n" "点击“详细信息”查看列表。" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2546 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2553 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:444 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:467 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:882 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:888 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:918 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:257 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:212 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:225 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2021 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:187 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:200 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2015 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:149 msgid "News" msgstr "新闻" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2547 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2554 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:556 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1984 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2002 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:560 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1978 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1996 msgid "Catalog" msgstr "类目" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2853 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2860 msgid "Communicate with iTunes." msgstr "与iTunes通信。" @@ -766,6 +770,10 @@ msgstr "Kovid Goyal" msgid "Communicate with the Cybook Gen 3 / Opus eBook reader." msgstr "与 通信。" +#: /home/kovid/work/calibre/src/calibre/devices/cybook/driver.py:64 +msgid "Communicate with the Cybook Orizon eBook reader." +msgstr "和 CyBook Orizon eBook 阅读器进行交流" + #: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:24 msgid "Communicate with the EB600 eBook reader." msgstr "与 EB600 eBook reader 通信。" @@ -778,6 +786,10 @@ msgstr "与Astak Mentor EB600通信" msgid "Communicate with the PocketBook 301 reader." msgstr "与PocketBook 301阅读器通信。" +#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:233 +msgid "Communicate with the PocketBook 602 reader." +msgstr "和 PocketBook 602 阅读器进行交流" + #: /home/kovid/work/calibre/src/calibre/devices/edge/driver.py:17 msgid "Entourage Edge" msgstr "Entourage Edge" @@ -836,8 +848,8 @@ msgstr "与 SpringDesign Alex 通信。" #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:102 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:113 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:264 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:296 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:268 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:300 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:256 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:274 msgid "Removing books from device..." @@ -924,26 +936,26 @@ msgstr "Kobo目前仅支持一个集合:\"Im_Reading\" 列表。 请创建一 msgid "Getting list of books on device..." msgstr "从设备中获取书籍列表..." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:300 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:307 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:304 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:311 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:281 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:286 msgid "Removing books from device metadata listing..." msgstr "将书籍从设备的元数据列表移除中..." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:312 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:347 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:316 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:351 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:219 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:250 msgid "Adding books to device metadata listing..." msgstr "将书籍添加到设备的元数据列表中..." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:424 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:258 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:428 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:262 msgid "Not Implemented" msgstr "尚未实现" -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:425 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:429 msgid "" "\".kobo\" files do not exist on the device as books instead, they are rows " "in the sqlite database. Currently they cannot be exported or viewed." @@ -962,29 +974,37 @@ msgid "Communicate with the Sweex MM300" msgstr "与Sweex MM300通信" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:79 +msgid "Communicate with the Digma Q600" +msgstr "和 Digma Q600 阅读器进行交流" + +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:88 msgid "Communicate with the Kogan" msgstr "与 Kogan 通信" -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:87 -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:114 +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:96 +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:123 msgid "Communicate with the Pandigital Novel" msgstr "与Pandigital Novel通信" -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:130 +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:142 msgid "Communicate with the VelocityMicro" msgstr "与VelocityMicro进行通讯" -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:148 +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:160 msgid "Communicate with the GM2000" msgstr "与 GM2000 通信" +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:180 +msgid "Communicate with the Acer Lumiread" +msgstr "和 Acer Lumiread 阅读器进行交流" + #: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:17 msgid "Communicate with the Nokia 770 internet tablet." msgstr "与诺基亚 770 网络平板通信。" #: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:40 msgid "Communicate with the Nokia 810/900 internet tablet." -msgstr "" +msgstr "和 Nokia 810/900 平板电脑进行交流" #: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:74 msgid "Communicate with the Nokia E52" @@ -998,6 +1018,14 @@ msgstr "Nook" msgid "Communicate with the Nook eBook reader." msgstr "与 Nook 通信。" +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 +msgid "Nook Color" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 +msgid "Communicate with the Nook Color eBook reader." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." msgstr "与 Nuut2 电子书阅读器通信。" @@ -1883,11 +1911,27 @@ msgstr "" "通常该输入插件将重整源文件文件夹组织结构到标准文件夹组织结构. 如果您了解该如何手动完成此操作, 您可以打开本选项关闭自动文件结构重整, " "错误的操作将会导致整个转换操作队列失败." -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:273 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/output.py:33 +msgid "CSS file used for the output instead of the default file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/html/output.py:36 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 "PDF 文件部分转换为 HTML,在此设定平均换行行宽。默认为 %default  即已禁用。" +"Template used for generation of the html index file instead of the default " +"file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/html/output.py:39 +msgid "" +"Template used for the generation of the html contents of the book instead of " +"the default file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/html/output.py:42 +msgid "" +"Extract the contents of the generated ZIP file to the specified directory. " +"WARNING: The contents of the directory will be deleted." +msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/lit/from_any.py:47 msgid "Creating LIT file from EPUB..." @@ -2024,7 +2068,7 @@ 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:128 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:126 msgid "Verbose processing" msgstr "处理时打印信息" @@ -2189,13 +2233,13 @@ msgstr "是" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:605 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:45 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:102 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:65 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:380 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:930 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:373 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:923 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:303 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:570 msgid "Title" @@ -2204,8 +2248,8 @@ msgstr "标题" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:606 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:67 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:385 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:931 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:924 msgid "Author(s)" msgstr "作者" @@ -2221,37 +2265,36 @@ msgid "Producer" msgstr "出品人" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:609 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:37 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:212 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:206 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:189 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:104 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:72 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:332 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1138 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1131 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:178 msgid "Comments" msgstr "注释" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:611 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:154 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:27 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:29 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:73 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:320 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1134 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:313 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1127 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:160 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:618 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:655 msgid "Tags" msgstr "标签" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:613 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:152 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:26 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:337 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1143 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1136 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:108 msgid "Series" msgstr "系列" @@ -2261,12 +2304,12 @@ msgid "Language" msgstr "语言" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:616 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1126 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1119 msgid "Timestamp" msgstr "时间戳" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:618 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:151 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:157 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:70 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:258 @@ -2381,6 +2424,7 @@ msgid "No cover found" msgstr "没有找到封面" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:28 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:44 msgid "Cover download" msgstr "下载图书封面" @@ -2426,49 +2470,53 @@ msgstr "Douban.com API超时。请稍后重试。" msgid "Downloads metadata from Douban.com" msgstr "从豆瓣网(www.douban.com)下载元数据" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:51 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:57 msgid "Metadata download" msgstr "元数据下载" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:128 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:141 msgid "ratings" msgstr "评分" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:128 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:141 msgid "tags" msgstr "标签" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:129 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:142 msgid "description/reviews" msgstr "描述/评论" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:130 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:143 msgid "Download %s from %s" msgstr "下载 %s 来自 %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:156 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:150 +msgid "Convert comments downloaded from %s to plain text" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:178 msgid "Downloads metadata from Google Books" msgstr "从谷歌图书下载元数据" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:173 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:195 msgid "Downloads metadata from isbndb.com" msgstr "从 isbndb.com 下载元数据" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:201 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:223 msgid "" "To use isbndb.com you must sign up for a %sfree account%s and enter your " "access key below." msgstr "您需在 isbndb.com 注册%s免费帐户%s并在之下填写您的访问密钥才能访问。" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:211 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:233 msgid "Downloads social metadata from amazon.com" msgstr "从 amazon.com 下载社会性元数据" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:230 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:254 msgid "Downloads series/tags/rating information from librarything.com" msgstr "从librarything.com下载系列、标签、星级信息。" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:109 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:107 msgid "" "\n" "%prog [options] key\n" @@ -2491,23 +2539,24 @@ msgstr "" "密钥是您在 isbndb.com 注册免费账户时创建的账户密钥。\n" "\n" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:120 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:118 msgid "The ISBN ID of the book you want metadata for." msgstr "待查找书籍的 ISBN ID。" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:122 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:120 msgid "The author whose book to search for." msgstr "待查找书籍的作者。" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:124 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:122 msgid "The title of the book to search for." msgstr "待查找书籍的标题。" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:126 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:124 msgid "The publisher of the book to search for." msgstr "待查找书籍的出版商。" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:77 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:336 msgid " not found." msgstr " 无法找到。" @@ -2524,8 +2573,24 @@ msgstr "" "\n" "从LibraryThing.com为书籍标识符ISBN采集封面图像/社会元数据\n" +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:25 +msgid "Downloads metadata from french Nicebooks" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:41 +msgid "Downloads covers from french Nicebooks" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:332 +msgid "Nicebooks timed out. Try again later." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:337 +msgid "An errror occured with Nicebooks cover fetcher" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1399 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 msgid "Cover" msgstr "封面" @@ -2560,74 +2625,74 @@ msgstr "标记标签的书籍将被归档为个人文档" msgid "All articles" msgstr "所有文章" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:259 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:262 msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "这是一部 Amazon Topaz 书籍。无法处理。" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1400 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 msgid "Title Page" msgstr "标题页" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 #: /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:199 msgid "Table of Contents" msgstr "目录" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 msgid "Index" msgstr "索引" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 msgid "Glossary" msgstr "词汇表" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 msgid "Acknowledgements" msgstr "致谢" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 msgid "Bibliography" msgstr "参考文献" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 msgid "Colophon" msgstr "末页" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 msgid "Copyright" msgstr "版权" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 msgid "Dedication" msgstr "献辞" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 msgid "Epigraph" msgstr "题辞" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 msgid "Foreword" msgstr "前言" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 msgid "List of Illustrations" msgstr "插图列表" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 msgid "List of Tables" msgstr "表格列表" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 msgid "Notes" msgstr "注释" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1416 msgid "Preface" msgstr "序言" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1417 msgid "Main Text" msgstr "正文" @@ -2635,7 +2700,7 @@ msgstr "正文" msgid "%s format books are not supported" msgstr "不支持 %s 格式电子书" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:103 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:156 msgid "Book %s of %s" msgstr "书籍%s/%s" @@ -2644,9 +2709,9 @@ msgstr "书籍%s/%s" msgid "HTML TOC generation options." msgstr "HTML 目录生成选项。" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:153 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:71 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:616 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:653 msgid "Rating" msgstr "评分" @@ -2676,7 +2741,7 @@ msgstr "脚注" msgid "Sidebar" msgstr "侧边栏" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:22 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:23 #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/input.py:23 #: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:24 msgid "" @@ -2684,7 +2749,7 @@ msgid "" "it will assume that every line represents a paragraph instead." msgstr "一般情况下,Calibre 会将空行识别为段落分隔。而此选项将假定每个空行都代表一个段落。" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:26 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:28 msgid "" @@ -2976,7 +3041,7 @@ msgid "" "Specify the character encoding of the output document. The default is cp1252." msgstr "指定输出文档的字符编码。默认为 cp1252。" -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:196 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:256 msgid "" "This RTF file has a feature calibre does not support. Convert it to HTML " "first and then try it.\n" @@ -3187,7 +3252,7 @@ msgid "Disable UI animations" msgstr "禁用界面动画" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:494 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:509 msgid "Copied" msgstr "已复制" @@ -3199,7 +3264,7 @@ msgstr "复制" msgid "Copy to Clipboard" msgstr "复制到剪贴板" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:467 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:466 msgid "Choose Files" msgstr "选择文件" @@ -3247,101 +3312,101 @@ msgstr "多少空白书籍?" msgid "How many empty books should be added?" msgstr "应添加多少空白书籍?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:143 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:206 msgid "Uploading books to device." msgstr "正在上传书籍到设备。" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:170 msgid "Books" msgstr "书籍" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:165 msgid "EPUB Books" msgstr "EPUB 书籍" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 msgid "LRF Books" msgstr "LRF 书籍" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:167 msgid "HTML Books" msgstr "HTML 书籍" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:168 msgid "LIT Books" msgstr "LIT 书籍" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:169 msgid "MOBI Books" msgstr "MOBI 书籍" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:170 msgid "Topaz books" msgstr "Topaz 书籍" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:171 msgid "Text books" msgstr "文本书籍" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:172 msgid "PDF Books" msgstr "PDF 书籍" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:173 msgid "SNB Books" msgstr "SNB 书籍" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:174 msgid "Comics" msgstr "漫画" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:175 msgid "Archives" msgstr "归档" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:179 msgid "Supported books" msgstr "支持的书j" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:215 msgid "Merged some books" msgstr "合并一些书籍" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:216 msgid "" "Some duplicates were found and merged into the following existing books:" msgstr "找到一些重复内容,并入如下已有书籍:" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:225 msgid "Failed to read metadata" msgstr "无法读取元数据" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:226 msgid "Failed to read metadata from the following" msgstr "无法从下列项目读取元数据" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:241 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:246 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:265 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:250 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:269 msgid "Add to library" msgstr "添加到书库" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:246 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:250 #: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:56 #: /home/kovid/work/calibre/src/calibre/gui2/actions/tweak_epub.py:28 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:95 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:119 msgid "No book selected" msgstr "未选择书籍" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:259 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:263 msgid "" "The following books are virtual and cannot be added to the calibre library:" msgstr "下列书籍是虚拟的,不能添加到calibre书库中。" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:265 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:269 msgid "No book files found" msgstr "未找到书籍文件" @@ -3354,7 +3419,7 @@ msgid "Add books to your calibre library from the connected device" msgstr "从连接的设备添加书籍到你的calibre书库" #: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:20 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:536 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:542 msgid "Fetch annotations (experimental)" msgstr "抓取注释(实验功能)" @@ -3451,7 +3516,7 @@ msgid "Checking database integrity" msgstr "检查数据库完整性" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:128 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:645 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:593 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc.py:41 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:54 msgid "Error" @@ -3467,15 +3532,15 @@ msgstr "找到部分不一致" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:135 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 "下列书籍使用格式曾经在数据库中,现已不可用。格式项被移除。您需手动检查。这可能是由于您直接在 library 文件夹操作文件引起的。" +"The following books had formats or covers listed in the database that are " +"not actually available. The entries for the formats/covers 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/actions/choose_library.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:51 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:139 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:162 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:112 msgid "%d books" msgstr "%d本书" @@ -3613,7 +3678,7 @@ msgstr "在%s中无法找到现有的caliber书库。它将被从已知书库列 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:391 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:734 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 msgid "Not allowed" msgstr "不允许" @@ -3645,6 +3710,10 @@ msgstr "无法转换" msgid "Starting conversion of %d book(s)" msgstr "开始转换 %d 本书" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:170 +msgid "Empty output file, probably the conversion process crashed" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:83 msgid "Copy to library" msgstr "复制到书库" @@ -3679,9 +3748,9 @@ msgid "Could not copy books: " msgstr "无法复制书籍: " #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:147 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:708 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:679 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:664 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:687 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:190 msgid "Failed" msgstr "失败" @@ -3742,14 +3811,14 @@ msgid "Main memory" msgstr "主内存" #: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:473 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:482 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:467 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:476 msgid "Storage Card A" msgstr "存储卡A" #: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:117 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:475 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:484 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:478 msgid "Storage Card B" msgstr "存储卡B" @@ -3890,7 +3959,7 @@ msgid "covers" msgstr "封面" #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:96 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:224 msgid "metadata" msgstr "元数据" @@ -3912,31 +3981,26 @@ msgstr "无法合并书籍" msgid "At least two books must be selected for merging" msgstr "合并需要选定至少两本书籍" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:197 msgid "" "Book formats and metadata from the selected books will be added to the " -"<b>first selected book.</b> ISBN will <i>not</i> be merged.<br><br> The " +"<b>first selected book</b> (%s). ISBN will <i>not</i> be merged.<br><br> The " "second and subsequently selected books will not be deleted or " "changed.<br><br>Please confirm you want to proceed." msgstr "" -"选定书籍的格式和元数据将被添加到<b>第一本选定书籍。</b>ISBN<i>不会</i>被合并。<br><br> \r\n" -"第二本和随后的选定书籍将不会被删除或更改。 <br><br>如果要继续的话请先确认。" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:208 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:209 msgid "" "Book formats and metadata from the selected books will be merged into the " -"<b>first selected book</b>. ISBN will <i>not</i> be merged.<br><br>After " -"merger the second and subsequently selected books will be <b>deleted</b>. " -"<br><br>All book formats of the first selected book will be kept and any " -"duplicate formats in the second and subsequently selected books will be " -"permanently <b>deleted</b> from your computer.<br><br> Are you <b>sure</b> " -"you want to proceed?" +"<b>first selected book</b> (%s). ISBN will <i>not</i> be " +"merged.<br><br>After merger the second and subsequently selected books will " +"be <b>deleted</b>. <br><br>All book formats of the first selected book will " +"be kept and any duplicate formats in the second and subsequently selected " +"books will be permanently <b>deleted</b> from your computer.<br><br> Are " +"you <b>sure</b> you want to proceed?" msgstr "" -"选定书籍的格式和元数据将会被合并进<b>第一本选定书籍</b>中。ISBN<i>不会</i> " -"被合并。<br><br>合并后,选定的第二本书籍及随后的书籍将会被<b>删除</b>。<br><br>选定的第一本书籍的所有书籍格式都会被保留下来,而选定" -"书籍的第二本和随后的书籍的重复格式都将从你电脑上永久<b>删除</b>。<br><br>你<b>确定</b>要继续吗?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:222 msgid "" "You are about to merge more than 5 books. Are you <b>sure</b> you want to " "proceed?" @@ -3983,6 +4047,7 @@ msgid "Ctrl+P" msgstr "Ctrl+P" #: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:23 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:200 msgid "Run welcome wizard" msgstr "运行欢迎向导" @@ -4068,7 +4133,7 @@ msgid "Click the show details button to see which ones." msgstr "点击显示详情按钮查看具体哪些。" #: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:16 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:623 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:660 msgid "Show book details" msgstr "显示书籍详情" @@ -4155,21 +4220,21 @@ msgstr "查看" msgid "View specific format" msgstr "查看特定格式" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:95 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:158 msgid "Cannot view" msgstr "无法查看" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:100 #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77 msgid "Choose the format to view" msgstr "选择格式进行查看" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:108 msgid "Multiple Books Selected" msgstr "选定多本书籍" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:109 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 " @@ -4177,11 +4242,11 @@ msgid "" "continue?" msgstr "您正在试图打开 %d 本书籍。同时打开太多书籍可能会变慢,并对电脑响应速度有消极影响。一旦开始,需等待进程完成。是否继续?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:118 msgid "Cannot open folder" msgstr "无法打开文件夹" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:159 msgid "%s has no available formats." msgstr "%s 无可用格式。" @@ -4206,7 +4271,7 @@ msgid "The specified directory could not be processed." msgstr "无法处理指定目录。" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:229 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:857 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:813 msgid "No books" msgstr "没有书籍" @@ -4391,49 +4456,49 @@ msgid "" "&Multiple books per folder, assumes every ebook file is a different book" msgstr "每个文件夹中放多本书籍,假定个电子书文件是不同的书籍" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:23 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:47 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:313 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:119 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:120 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:121 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:137 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:327 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1124 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1117 msgid "Path" msgstr "路径" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:24 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:50 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:123 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:124 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:127 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:319 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:24 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:117 msgid "Formats" msgstr "格式" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:25 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:934 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1127 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:927 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1120 msgid "Collections" msgstr "集合" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:49 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:60 msgid "Click to open" msgstr "点击打开" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:50 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:319 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:325 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:331 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1133 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1137 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:324 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1126 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1130 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:83 @@ -4441,9 +4506,9 @@ msgstr "点击打开" msgid "None" msgstr "无" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:312 -msgid "Click to open Book Details window" -msgstr "点击打开书籍详情窗口" +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:404 +msgid "Double-click to open Book Details window" +msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:16 msgid "BibTeX Options" @@ -4486,7 +4551,7 @@ msgstr "输出" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:82 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:54 @@ -4529,7 +4594,7 @@ msgstr "输出" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar_ui.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/tweaks_ui.py:49 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:123 msgid "Form" msgstr "来自" @@ -4615,23 +4680,23 @@ msgstr "CSV/XML 选项" msgid "E-book options" msgstr "电子书选项" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:83 msgid "'Don't include this book' tag:" msgstr "\"不含此书\"标签:" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:84 msgid "'Mark this book as read' tag:" msgstr "\"标记已读\"标签:" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:85 msgid "Additional note tag prefix:" msgstr "附加笔记标签前缀:" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:86 msgid "Regex pattern describing tags to exclude as genres:" msgstr "正则表达式描述标签,以排除体裁:" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:87 msgid "" "Regex tips:\n" "- The default regex - \\[.+\\] - excludes genre tags of the form [tag], " @@ -4640,26 +4705,43 @@ msgid "" "Genre Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:90 msgid "Include 'Titles' Section" msgstr "包含\"标题\"部分" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:91 msgid "Include 'Recently Added' Section" msgstr "包含\"最近添加\"部分" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:92 msgid "Sort numbers as text" msgstr "将数字做文本处理" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:93 msgid "Include 'Series' Section" msgstr "包含'系列'节" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:94 +msgid "Wishlist tag:" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:33 msgid "Tab template for catalog.ui" msgstr "catalog.ui 的 Tab 模板" +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:25 +msgid "Bold" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:26 +msgid "Italic" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:28 +msgid "Underline" +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 " @@ -4667,11 +4749,11 @@ msgid "" "specified in the Preferences" msgstr "对于不能在此对话框中指定的选项,使用前一个转换(若存在)中存储的值,而非首选项中的默认设置。" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:70 msgid "Bulk Convert" msgstr "批量转换" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 msgid "Options specific to the output format." msgstr "设置输出格式选项" @@ -5118,7 +5200,7 @@ msgid "Change the title of this book" msgstr "改变该书籍标题" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:179 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:333 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:336 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:377 msgid "&Author(s): " msgstr "作者(&A): " @@ -5134,7 +5216,7 @@ msgid "" msgstr "修改书籍的作者。多作者可以用逗号分隔" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:182 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:342 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:345 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:388 msgid "&Publisher: " msgstr "出版商(&P): " @@ -5145,7 +5227,7 @@ msgid "Ta&gs: " msgstr "标签(&g): " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:184 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:347 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:390 msgid "" "Tags categorize the book. This is particularly useful while searching. " @@ -5153,15 +5235,16 @@ msgid "" msgstr "电子书籍的分类标签. 此标签对于数字搜索非常有用. <br><br>该标签可以是词语或短语, 使用逗号分隔." #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:185 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:354 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 msgid "&Series:" msgstr "系列(&S):" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:352 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:356 #: /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 "List of known series. You can add new series." @@ -5340,7 +5423,7 @@ msgid "Options specific to the input format." msgstr "仅针对特定输入格式的选项。" #: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:117 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:53 msgid "Dialog" @@ -5533,8 +5616,8 @@ msgid "Force maximum line length" msgstr "约束最大行长" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:70 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:62 @@ -5673,7 +5756,7 @@ msgid "Automatically number books" msgstr "为书籍自动编号" #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:499 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:367 msgid "Force numbers to start with " msgstr "从 强制开始编号 " @@ -5689,228 +5772,171 @@ msgstr "要添加的标签" msgid "tags to remove" msgstr "要移除的标签" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:44 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:136 msgid "No details available." msgstr "无详情可用。" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:183 msgid "Device no longer connected." msgstr "设备未连接。" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:301 msgid "Get device information" msgstr "获取设备信息" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:312 msgid "Get list of books on device" msgstr "获取设备书籍列表" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:322 msgid "Get annotations from device" msgstr "从设备抓取注释" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:334 msgid "Send metadata to device" msgstr "传输元数据到设备上" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:339 msgid "Send collections to device" msgstr "发送收藏品到设备" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:380 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:374 msgid "Upload %d books to device" msgstr "上传 %d 本书到设备" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:395 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:389 msgid "Delete books from device" msgstr "从设备上删除书籍" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:412 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:406 msgid "Download books from device" msgstr "从设备上下载书籍" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:422 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:416 msgid "View book on device" msgstr "查看设备上的书籍" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:456 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:450 msgid "Set default send to device action" msgstr "设置传送到设备的默认动作" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:462 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:456 msgid "Send to main memory" msgstr "传送到主内存" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:464 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:458 msgid "Send to storage card A" msgstr "发送到存储卡 A" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:460 msgid "Send to storage card B" msgstr "发送到存储卡 B" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:471 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:480 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:465 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:474 msgid "Main Memory" msgstr "主内存" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:491 -msgid "Send and delete from library" -msgstr "发送并从书库中删除" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:492 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:486 msgid "Send specific format to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:528 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:487 +msgid "Send and delete from library" +msgstr "发送并从书库中删除" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:530 msgid "Eject device" msgstr "安全移除设备" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:646 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:594 msgid "Error communicating with device" msgstr "与设备通信发生错误" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:667 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:605 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1089 +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:296 +msgid "No suitable formats" +msgstr "无合适格式" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:623 msgid "Select folder to open as device" msgstr "选择一个将做为设备打开的文件夹" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:714 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:670 msgid "Error talking to device" msgstr "设备通讯错误。" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:715 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:671 msgid "" "There was a temporary error talking to the device. Please unplug and " "reconnect the device and or reboot." msgstr "与设备通讯出现临时性错误。请拔下再重新连接设备,或可能需要重启。" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:758 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:714 msgid "Device: " msgstr "设备: " -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:760 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:716 msgid " detected." msgstr " 被检测到。" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:858 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:814 msgid "selected to send" msgstr "选择传送" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:863 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:819 msgid "Choose format to send to device" msgstr "选择传送到设备的格式" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:872 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:828 msgid "No device" msgstr "无设备" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:873 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:829 msgid "Cannot send: No device is connected" msgstr "无法传送:无连接设备" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:876 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:880 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:832 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:836 msgid "No card" msgstr "无卡" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:877 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:833 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:837 msgid "Cannot send: Device has no storage card" msgstr "无法传送:设备中无储存卡" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:922 -msgid "E-book:" -msgstr "电子书:" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:925 -msgid "Attached, you will find the e-book" -msgstr "已添加, 您可以从中获取电子书籍" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:926 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:107 -msgid "by" -msgstr "由" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:927 -msgid "in the %s format." -msgstr "使用 %s 格式." - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:940 -msgid "Sending email to" -msgstr "正在发送邮件至" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:970 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:978 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1071 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1156 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1275 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1283 -msgid "No suitable formats" -msgstr "无合适格式" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:971 -msgid "Auto convert the following books before sending via email?" -msgstr "在发送电子邮件之前自动转换下列书籍?" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:979 -msgid "" -"Could not email the following books as no suitable formats were found:" -msgstr "由于无法找到合适的文件格式无法通过电子邮件发送下列书籍:" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:997 -msgid "Failed to email books" -msgstr "发送电子书籍失败" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:998 -msgid "Failed to email the following books:" -msgstr "无法通过电子邮件发送以下书籍:" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1002 -msgid "Sent by email:" -msgstr "已通过邮件发送:" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1030 -msgid "News:" -msgstr "新闻:" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1031 -msgid "Attached is the" -msgstr "附加" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1042 -msgid "Sent news to" -msgstr "将新闻发送到" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1072 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1157 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1276 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:883 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:966 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1083 msgid "Auto convert the following books before uploading to the device?" msgstr "上传到设备之前自动转换如下书籍?" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1102 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:912 msgid "Sending catalogs to device." msgstr "正在发送类目到设备。" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1189 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:997 msgid "Sending news to device." msgstr "将新闻传送到设备." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1242 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1050 msgid "Sending books to device." msgstr "传送书籍到设备。" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1284 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1090 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:1348 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1154 msgid "No space on device" msgstr "设备存储空间不足" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1349 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1155 msgid "" "<p>Cannot upload books to device there is no more free space available " msgstr "<p>由于设备存储空间不足无法将书籍传送到设备上 " @@ -5953,25 +5979,26 @@ msgstr "按ISBN号添加书籍" msgid "" "<p>Enter a list of ISBNs in the box to the left, one per line. calibre will " "automatically create entries for books based on the ISBN and download " -"metadata and covers for them.<p>Any invalid ISBNs in the list will be " -"ignored." +"metadata and covers for them.</p>\n" +"<p>Any invalid ISBNs in the list will be ignored.</p>\n" +"<p>You can also specify a file that will be added with each ISBN. To do this " +"enter the full path to the file after a <code>>></code>. For example:</p>\n" +"<p><code>9788842915232 >> %s</code></p>" msgstr "" -"<p>在左边的文本框中输入一组ISBN号,每行一个。calibre将为他们自动创建相应的书籍项,并从网络下载书籍元数据和封面。<p>错误的ISBN号会被忽" -"略。" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:53 msgid "&Paste from clipboard" msgstr "从剪贴板粘贴(&P)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:80 msgid "Fit &cover within view" msgstr "封面以适合屏幕大小显示(&C)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:81 msgid "&Previous" msgstr "上一个(&P)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:82 msgid "&Next" msgstr "下一个(&N)" @@ -6021,21 +6048,32 @@ msgstr "复到到剪贴板(&T)" msgid "Names to ignore:" msgstr "要忽略的名称:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:59 +msgid "" +"Enter comma-separated standard file name wildcards, such as synctoy*.dat" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:62 msgid "Extensions to ignore" msgstr "要忽略的扩展名" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:67 +msgid "" +"Enter comma-separated extensions without a leading dot. Used only in book " +"folders" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:119 msgid "Path from library" msgstr "书库的路径" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:119 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:89 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:225 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:248 msgid "Name" msgstr "名称" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:136 msgid "" "The marked files and folders will be <b>permanently deleted</b>. Are you " "sure?" @@ -6082,7 +6120,7 @@ msgid "No location selected" msgstr "没有选择位置" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:635 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:654 msgid "Bad location" msgstr "错误的位置" @@ -6123,6 +6161,7 @@ msgid "Set options for converting %s" msgstr "设置转换 %s 的选项" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:211 msgid "&Title:" msgstr "标题(&T);" @@ -6158,7 +6197,7 @@ msgstr "位置" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:69 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:932 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:925 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:31 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:294 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569 @@ -6166,7 +6205,7 @@ msgid "Date" msgstr "日期" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1123 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1116 msgid "Format" msgstr "格式" @@ -6179,12 +6218,12 @@ msgid "Author sort" msgstr "按作者排序" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:115 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:590 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:597 msgid "Invalid author name" msgstr "无效的作者名" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:591 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:598 msgid "Author names cannot contain & characters." msgstr "作者名中不能包含&符号" @@ -6329,59 +6368,58 @@ msgstr "查找/替换" msgid "Working" msgstr "执行中" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:184 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:386 msgid "Lower Case" msgstr "小写" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:385 msgid "Upper Case" msgstr "大写" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:188 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:388 msgid "Title Case" msgstr "标题大写" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:191 msgid "Character match" msgstr "字符匹配" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:192 msgid "Regular Expression" msgstr "正则表达式" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:195 msgid "Replace field" msgstr "替换字段" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:196 msgid "Prepend to field" msgstr "前置到字段" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:197 msgid "Append to field" msgstr "追加到字段" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:208 msgid "Editing meta information for <b>%d books</b>" msgstr "正在为<b>%d本书</b>编辑元信息" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:259 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:261 msgid "Book %d:" msgstr "书籍%d:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:276 msgid "" "<b>You can destroy your library using this feature.</b> Changes are " -"permanent. There is no undo function. This feature is experimental, and " -"there may be bugs. You are strongly encouraged to back up your library " -"before proceeding.<p>Search and replace in text fields using character " -"matching or regular expressions. " +"permanent. There is no undo function. You are strongly encouraged to back up " +"your library before proceeding.<p>Search and replace in text fields using " +"character matching or regular expressions. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:284 msgid "" "In character mode, the field is searched for the entered search text. The " "text is replaced by the specified replacement text everywhere it is found in " @@ -6391,7 +6429,7 @@ msgid "" "text will match both upper- and lower-case letters" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:295 msgid "" "In regular expression mode, the search text is an arbitrary python-" "compatible regular expression. The replacement text can contain " @@ -6406,30 +6444,30 @@ msgid "" "function." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:436 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:440 msgid "You must specify a destination when source is a composite field" msgstr "当源是复合域时,你必须指定一个目标。" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:528 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:536 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:627 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:540 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:635 msgid "Search/replace invalid" msgstr "查找/替换无效" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:533 msgid "" "Authors cannot be set to the empty string. Book title %s not processed" msgstr "作者处不能设置为空字串。标题为%s的书籍未作处理" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:537 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:541 msgid "Title cannot be set to the empty string. Book title %s not processed" msgstr "标题不能设置为空字串。标题为%s的书籍未作处理" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:628 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:636 msgid "Search pattern is invalid: %s" msgstr "以下搜索模式是无效的:%s" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:665 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:673 msgid "" "Applying changes to %d books.\n" "Phase {0} {1}%%." @@ -6437,81 +6475,81 @@ msgstr "" "正在应用更改到%d本书籍。\n" "暂停{0} {1}%%。" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:332 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:335 msgid "Edit Meta information" msgstr "编辑元信息" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:337 msgid "A&utomatically set author sort" msgstr "自动设置作者排序(&u)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:335 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:338 msgid "Author s&ort: " msgstr "作者排序(&O): " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:336 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:339 msgid "" "Specify how the author(s) of this book should be sorted. For example Charles " "Dickens should be sorted as Dickens, Charles." msgstr "指定如何按书籍作者姓名排序。如 Charles Dickens 会被作为 Dickens, Charles 进行排序。" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:337 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:340 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:384 msgid "&Rating:" msgstr "星级(&R):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:338 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:339 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:341 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:342 #: /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 "Rating of this book. 0-5 stars" msgstr "为该书评分。0-5 星" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:343 msgid "No change" msgstr "无变更" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:341 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:344 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:387 msgid " stars" msgstr " 星" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:343 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:346 msgid "Add ta&gs: " msgstr "添加标签(&G): " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:345 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:346 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:349 #: /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 "Open Tag Editor" msgstr "打开标签编辑器" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:350 msgid "&Remove tags:" msgstr "移除标签(&R):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:351 msgid "Comma separated list of tags to remove from the books. " msgstr "删除多个标签, 标签列表由逗号分割. " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:349 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:352 msgid "Check this box to remove all tags from the books." msgstr "勾选此框将从书籍中移除所有标签。" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:353 msgid "Remove all" msgstr "全部移除" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:357 msgid "If checked, the series will be cleared" msgstr "如果勾选了,系列将被清除" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:358 msgid "Clear series" msgstr "清除系列" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:359 msgid "" "If not checked, the series number for the books will be set to 1.\n" "If checked, selected books will be automatically numbered, in the order\n" @@ -6519,110 +6557,110 @@ msgid "" "Book A will have series number 1 and Book B series number 2." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:363 msgid "Automatically number books in this series" msgstr "为此系列自动数字排序" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:364 msgid "" "Series will normally be renumbered from the highest number in the database\n" "for that series. Checking this box will tell calibre to start numbering\n" "from the value in the box" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:365 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:368 msgid "Remove &format:" msgstr "移除格式(&F):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:366 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:369 msgid "&Swap title and author" msgstr "对调作者和书名(&W)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:367 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:370 msgid "" "Force the title to be in title case. If both this and swap authors are " "checked,\n" "title and author are swapped before the title case is set" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:369 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:372 msgid "Change title to title case" msgstr "更改标题为大写标题" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:370 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:373 msgid "" "Remove stored conversion settings for the selected books.\n" "\n" "Future conversion of these books will use the default settings." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:373 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:376 msgid "Remove &stored conversion settings for the selected books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:377 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:424 msgid "&Basic metadata" msgstr "基本元数据(&B)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:375 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:378 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:425 msgid "&Custom metadata" msgstr "自定义元数据(&C)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:379 msgid "Search &field:" msgstr "查找范围(&F):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:377 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:380 msgid "The name of the field that you want to search" msgstr "你要进行查找的范围的名称" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:381 msgid "Search mode:" msgstr "查找模式:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:379 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:382 msgid "" "Choose whether to use basic text matching or advanced regular expression " "matching" msgstr "选择是否使用基本文本匹配或高级下面正则表达式匹配" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:380 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:383 msgid "&Search for:" msgstr "搜索(&S):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:381 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:384 msgid "" "Enter the what you are looking for, either plain text or a regular " "expression, depending on the mode" msgstr "输入你要查找的内容,可以是纯文本或正则表达式,取决于你所用的模式" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:385 msgid "" "Check this box if the search string must match exactly upper and lower case. " "Uncheck it if case is to be ignored" msgstr "请勾选此框,如果你查找的字串需要精确区分大小写的话。不勾选则表示忽略大小写" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:383 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:386 msgid "Case sensitive" msgstr "区分大小写" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:387 msgid "&Replace with:" msgstr "替换为(&R):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:388 msgid "" "The replacement text. The matched search text will be replaced with this " "string" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:386 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:389 msgid "Apply function after replace:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:387 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:390 msgid "" "Specify how the text is to be processed after matching and replacement. In " "character mode, the entire\n" @@ -6630,50 +6668,50 @@ msgid "" "processed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:392 msgid "&Destination field:" msgstr "目标区(&D):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:390 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:393 msgid "" "The field that the text will be put into after all replacements. If blank, " "the source field is used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:391 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:394 msgid "Mode:" msgstr "模式:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:392 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:395 msgid "Specify how the text should be copied into the destination." msgstr "指定文本要如何复制到目标。" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:396 msgid "" "If the replace mode is prepend or append, then this box indicates whether a " "comma or\n" "nothing should be put between the original text and the inserted text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:395 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:398 msgid "use comma" msgstr "使用逗号" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:396 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:399 msgid "Test &text" msgstr "测试文本(&T)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:397 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:400 msgid "Test re&sult" msgstr "测试结果(&S)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:398 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:401 msgid "Your test:" msgstr "测试内容:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:399 -msgid "&Search and replace (experimental)" -msgstr "查找和替换(&S)(实验功能)" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:402 +msgid "&Search and replace" +msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:91 msgid "Last modified: %s" @@ -6941,20 +6979,21 @@ msgstr "需要密码" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:217 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:125 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133 msgid "&Username:" msgstr "用户名(&U):" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:64 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:218 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:126 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:135 msgid "&Password:" msgstr "密码(&P):" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:219 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:167 msgid "&Show password" msgstr "显示密码(&S)" @@ -7182,56 +7221,52 @@ msgstr "<p>不符合此条件。即仅列出<b>不</b>符合该条件的项目 msgid "Negate" msgstr "条件否" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 msgid "Advanced Search" msgstr "高级搜索" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:119 -msgid "Find entries that have..." -msgstr "搜索包含..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:120 -msgid "&All these words:" -msgstr "所有下列关键字(&A):" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:121 -msgid "This exact &phrase:" -msgstr "精确匹配关键字(&P):" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:122 -msgid "&One or more of these words:" -msgstr "包含一个或多个下列关键字(&O):" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:123 -msgid "But dont show entries that have..." -msgstr "搜索结果不包含..." - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:124 -msgid "Any of these &unwanted words:" -msgstr "搜索结果不包含任何以下关键字(&U):" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 msgid "What kind of match to use:" msgstr "使用何种匹配:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:126 -msgid "Contains: the word or phrase matches anywhere in the metadata" -msgstr "包含:短语或文字与原数据中任意位置匹配" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +msgid "Contains: the word or phrase matches anywhere in the metadata field" +msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:127 -msgid "Equals: the word or phrase must match an entire metadata field" -msgstr "等于:短语必须和一个元数据项完全匹配" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +msgid "Equals: the word or phrase must match the entire metadata field" +msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 msgid "" -"Regular expression: the expression must match anywhere in the metadata" -msgstr "正则表达式:表达式必须与元数据中所有内容寻求匹配" +"Regular expression: the expression must match anywhere in the metadata field" +msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:129 -msgid " " -msgstr " " +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +msgid "Find entries that have..." +msgstr "搜索包含..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +msgid "&All these words:" +msgstr "所有下列关键字(&A):" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +msgid "This exact &phrase:" +msgstr "精确匹配关键字(&P):" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +msgid "&One or more of these words:" +msgstr "包含一个或多个下列关键字(&O):" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 +msgid "But dont show entries that have..." +msgstr "搜索结果不包含..." + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 +msgid "Any of these &unwanted words:" +msgstr "搜索结果不包含任何以下关键字(&U):" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 msgid "" "See the <a href=\"http://calibre-ebook.com/user_manual/gui.html#the-search-" "interface\">User Manual</a> for more help" @@ -7239,6 +7274,47 @@ msgstr "" "参见<a href=\"http://calibre-ebook.com/user_manual/gui.html#the-search-" "interface\">用户手册</a>获取更多帮助" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:210 +msgid "A&dvanced Search" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:212 +msgid "Enter the title." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:213 +msgid "&Author:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 +msgid "Ta&gs:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:216 +msgid "Enter an author's name. Only one author can be used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:217 +msgid "" +"Enter a series name, without an index. Only one series name can be used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:218 +msgid "Enter tags separated by spaces" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:219 +msgid "&Clear" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:220 +msgid "Search only in specific fields:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:221 +msgid "Titl&e/Author/Series ..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/select_formats.py:45 msgid "Choose formats" msgstr "选择格式" @@ -7366,12 +7442,12 @@ msgid "%s (was %s)" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:580 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:587 msgid "Item is blank" msgstr "项目为空" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:581 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:588 msgid "An item cannot be set to nothing. Delete it instead." msgstr "项目不能设置为什么也没有。请删除之。" @@ -7452,7 +7528,7 @@ msgid "Discard changes" msgstr "放弃更改" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tweak_epub_ui.py:60 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:225 msgid "&Cancel" msgstr "取消(&C)" @@ -7649,6 +7725,60 @@ msgstr "" msgid "Recipe source code (python)" msgstr "订阅清单源代码(python)" +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:145 +msgid "Email %s to %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:187 +msgid "News:" +msgstr "新闻:" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:189 +msgid "Attached is the %s periodical downloaded by calibre." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:242 +msgid "E-book:" +msgstr "电子书:" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:245 +msgid "Attached, you will find the e-book" +msgstr "已添加, 您可以从中获取电子书籍" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:246 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:107 +msgid "by" +msgstr "由" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:247 +msgid "in the %s format." +msgstr "使用 %s 格式." + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:260 +msgid "Sending email to" +msgstr "正在发送邮件至" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:290 +msgid "Auto convert the following books before sending via email?" +msgstr "在发送电子邮件之前自动转换下列书籍?" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:297 +msgid "" +"Could not email the following books as no suitable formats were found:" +msgstr "由于无法找到合适的文件格式无法通过电子邮件发送下列书籍:" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:303 +msgid "Failed to email book" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:306 +msgid "sent" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:329 +msgid "Sent news to" +msgstr "将新闻发送到" + #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:112 msgid "" "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" " @@ -7842,23 +7972,23 @@ msgstr "无法在与设备通信时中止任务" msgid "Job has already run" msgstr "任务已执行" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:262 msgid "Unavailable" msgstr "不可用" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:294 msgid "Jobs:" msgstr "任务:" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:296 msgid "Shift+Alt+J" msgstr "Shift+Alt+J" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:313 msgid "Click to see list of jobs" msgstr "点击查看任务列表" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:371 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:382 msgid " - Jobs" msgstr " - 任务" @@ -7884,7 +8014,7 @@ msgid "Show books in the main memory of the device" msgstr "显示设备主内存中的书籍" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:67 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:848 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:820 msgid "Card A" msgstr "存储卡A" @@ -7893,7 +8023,7 @@ msgid "Show books in storage card A" msgstr "显示存储卡A中的书籍" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:69 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:850 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:822 msgid "Card B" msgstr "存储卡B" @@ -7905,38 +8035,46 @@ msgstr "显示存储卡B中的书籍" msgid "available" msgstr "可用" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:159 msgid "" "Books display will be restricted to those matching the selected saved search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:170 +msgid "Shift+Ctrl+F" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:173 msgid "Advanced search" msgstr "高级搜索" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:173 -msgid "&Search:" -msgstr "搜索(&S):" - -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:178 msgid "" "<p>Search the list of books by title, author, publisher, tags, comments, " "etc.<br><br>Words separated by spaces are ANDed" msgstr "<p>用标题、作者、出版商、标签、注释等搜索书籍列表<br><br>空格间隔关键词视为且(AND)关系" +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:181 +msgid "&Go!" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:187 +msgid "Do Quick Search (you can also press the Enter key)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:193 msgid "Reset Quick Search" msgstr "重置快速搜索" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:205 msgid "Copy current search text (instead of search name)" msgstr "复制当前搜索结果列表项至搜索栏" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:211 msgid "Save current search under the name shown in the box" msgstr "保存当前搜索结果" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:217 msgid "Delete current saved search" msgstr "删除当前已存搜索" @@ -7958,79 +8096,82 @@ msgstr "" msgid "Size (MB)" msgstr "大小 (MB)" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:338 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1143 -msgid "Book <font face=\"serif\">%s</font> of %s." -msgstr "书籍 <font face=\"serif\">%s</font> 中 %s." +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:331 +msgid "Book %s of %s." +msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:700 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1243 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:407 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:693 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1236 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:414 msgid "The lookup/search name is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:706 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1245 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:699 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1238 msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:929 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:922 msgid "In Library" msgstr "在书库中" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:933 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:926 msgid "Size" msgstr "大小" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1223 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1136 +msgid "Book <font face=\"serif\">%s</font> of %s." +msgstr "书籍 <font face=\"serif\">%s</font> 中 %s." + +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1216 msgid "Marked for deletion" msgstr "为删除作的标记" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1226 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1219 msgid "Double click to <b>edit</b> me<br><br>" msgstr "双击<b>编辑</b>该项<br><br>" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:147 msgid "Hide column %s" msgstr "隐藏 %s 列" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 msgid "Sort on %s" msgstr "按%s排序" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 msgid "Ascending" msgstr "升序" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:156 msgid "Descending" msgstr "降序" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 msgid "Change text alignment for %s" msgstr "更改 %s 的文本对齐方式" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Left" msgstr "左对齐" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Right" msgstr "右键" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:171 msgid "Center" msgstr "居中" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:183 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:190 msgid "Show column" msgstr "显示列" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202 msgid "Restore default layout" msgstr "恢复默认布局" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:735 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:743 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -8061,7 +8202,7 @@ msgid "<b>No matches</b> for the search phrase <i>%s</i> were found." msgstr "<b>无结果项</b> 匹配关键词 <i>%s</i> 被找到." #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:442 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:446 msgid "No matches found" msgstr "无匹配项" @@ -8078,12 +8219,12 @@ msgid "LRF Viewer toolbar" msgstr "LRF 查看程序工具栏" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:487 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:503 msgid "Next Page" msgstr "下一页" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:488 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:504 msgid "Previous Page" msgstr "上一页" @@ -8127,7 +8268,7 @@ msgid "Do not check for updates" msgstr "不检测更新" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:643 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:662 msgid "Calibre Library" msgstr "Calibre 书库" @@ -8254,37 +8395,37 @@ msgstr "书籍既没有标题也没有 ISBN 编号" msgid "No matches found for this book" msgstr "未找到匹配此书信息" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:191 msgid "Failed to download metadata" msgstr "下载元数据失败" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:224 msgid "cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:225 msgid "Downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:225 msgid "Failed to get" msgstr "无法获取" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:225 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:229 msgid "%s %s for: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:284 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:288 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:162 msgid "Done" msgstr "完成" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:289 msgid "Successfully downloaded metadata for %d out of %d books" msgstr "成功下载%d本书的元数据(共%d本)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:287 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:622 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:291 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:659 msgid "Details" msgstr "" @@ -8780,39 +8921,39 @@ msgstr "在图标下显示文本(&T):" msgid "&Split the toolbar into two toolbars" msgstr "把工具栏分割成两栏(&S)" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:222 msgid "&Apply" msgstr "应用(&A)" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:229 msgid "Restore &defaults" msgstr "恢复默认值(&D)" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:230 msgid "Save changes" msgstr "保存改动" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:231 msgid "Cancel and return to overview" msgstr "取消并返回到上一页" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:259 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:269 msgid "Restoring to defaults not supported for" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:304 msgid "" "Some of the changes you made require a restart. Please restart calibre as " "soon as possible." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:307 msgid "" "The changes you have made require calibre be restarted immediately. You will " "not be allowed set any more preferences, until you restart." msgstr "您所做的改动要求立即重启calibre。在重启之前,您不能再做其它任何设置。" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:312 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:120 msgid "Restart needed" msgstr "需要重启" @@ -9122,7 +9263,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:331 msgid "Failed to start content server" msgstr "无法启动内容服务器" @@ -9320,24 +9461,25 @@ msgid "&Current tweaks" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:270 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:574 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:272 msgid "Search" msgstr "搜索" -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:315 +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:322 msgid "The selected search will be <b>permanently deleted</b>. Are you sure?" msgstr "选定的搜索结果将被<b>永久删除</b>,你确定吗?" -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:364 msgid "Search (For Advanced Search click the button to the left)" msgstr "搜索(点击左侧按钮进行高级搜索)" -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:399 +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:406 msgid "Saved Searches" msgstr "已存搜索" -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:407 +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:414 msgid "Choose saved search or enter name for new saved search" msgstr "选择已存搜索或输入新存入搜索名称" @@ -9418,26 +9560,22 @@ msgstr "清除" msgid "&Alternate shortcut:" msgstr "其它快捷键(&A):" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:202 msgid "Rename '%s'" msgstr "重命名'%s'" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:206 msgid "Edit sort for '%s'" msgstr "为 '%s'编辑排序" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:211 msgid "Hide category %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:214 msgid "Show category" msgstr "显示分类" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:216 -msgid "Show all categories" -msgstr "显示所有分类" - #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:223 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:227 msgid "Manage %s" @@ -9452,63 +9590,67 @@ msgstr "" msgid "Manage User Categories" msgstr "管理用户分类" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:248 +msgid "Show all categories" +msgstr "显示所有分类" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:458 msgid "" "Changing the authors for several books can take a while. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:456 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:463 msgid "" "Changing the metadata for that many books can take a while. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:512 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:519 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:296 msgid "Searches" msgstr "搜索" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:595 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:602 msgid "Duplicate search name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:596 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:603 msgid "The saved search name %s is already used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:870 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:878 msgid "Sort by name" msgstr "按名字排序" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:870 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:878 msgid "Sort by popularity" msgstr "按欢迎度排序" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:871 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:879 msgid "Sort by average rating" msgstr "按平均评分排序" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:874 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:882 msgid "Set the sort order for entries in the Tag Browser" msgstr "设置标签浏览器中内容的排序规则" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:880 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:888 msgid "Match all" msgstr "匹配所有" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:880 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:888 msgid "Match any" msgstr "匹配任一" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:885 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:893 msgid "" "When selecting multiple entries in the Tag Browser match any or all of them" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:889 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:897 msgid "Manage &user categories" msgstr "管理用户分类(&U)" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:892 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:900 msgid "Add your own categories to the Tag Browser" msgstr "把你自定义的分类添加到标签浏览器" @@ -9551,53 +9693,53 @@ msgid "" "reconvert them?" msgstr "下列书籍已经被转换为 %s 格式。您希望转换它们么?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:171 msgid "&Restore" msgstr "恢复(&R)" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:173 msgid "&Donate to support calibre" msgstr "捐款赞助 Calibre 项目(&D)" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:177 msgid "&Eject connected device" msgstr "弹出已连接设备(&E)" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:218 msgid "Calibre Quick Start Guide" msgstr "Calibre 快速上手指南" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:437 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:465 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:439 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:450 msgid "Conversion Error" msgstr "转换错误" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:438 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:451 msgid "" "<p>Could not convert: %s<p>It is a <a href=\"%s\">DRM</a>ed book. You must " "first remove the DRM using third party tools." msgstr "<p>无法转换:%s<p> 它是 <a href=\"%s\">DRM</a> 保护书籍。您需要首先使用第三方工具去除 DRM。" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:465 msgid "Recipe Disabled" msgstr "清单禁用" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:481 msgid "<b>Failed</b>" msgstr "<b>失败</b>" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:517 msgid "" "is the result of the efforts of many volunteers from all over the world. If " "you find it useful, please consider donating to support its development. " "Your donation helps keep calibre development going." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:528 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:543 msgid "There are active jobs. Are you sure you want to quit?" msgstr "仍有任务运行。您是否希望退出?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:546 msgid "" " is communicating with the device!<br>\n" " Quitting may cause corruption on the device.<br>\n" @@ -9607,11 +9749,11 @@ msgstr "" " 退出可能导致设备损坏。<br>\n" " 确定退出么?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:550 msgid "WARNING: Active jobs" msgstr "警告:正在运行任务" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:613 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:628 msgid "" "will keep running in the system tray. To close it, choose <b>Quit</b> in the " "context menu of the system tray." @@ -9783,96 +9925,96 @@ msgstr "键盘快捷键(&K)" msgid "No results found for:" msgstr "未找到结果:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:36 msgid "Options to customize the ebook viewer" msgstr "定制电子书查看器的选项" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:703 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:711 msgid "Remember last used window size" msgstr "记住上次使用窗口大小" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:44 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:82 msgid "" "Set the user CSS stylesheet. This can be used to customize the look of all " "books." msgstr "设定用户 CSS 样式表。它将可以定制所有书籍外观。" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 msgid "Maximum width of the viewer window, in pixels." msgstr "查看器最大窗口宽度像素数。" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 msgid "Resize images larger than the viewer window to fit inside it" msgstr "调整查看器窗口中较大图像大小,使其适合显示在窗口中" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:50 msgid "Hyphenate text" msgstr "断词分行文本" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:52 msgid "Default language for hyphenation rules" msgstr "默认使用断词分行规则的语言" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:54 msgid "Font options" msgstr "字体选项" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:56 msgid "The serif font family" msgstr "衬线字体" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:58 msgid "The sans-serif font family" msgstr "Sans-serif 字体" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 msgid "The monospaced font family" msgstr "等宽字体" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:61 msgid "The standard font size in px" msgstr "标准字体大小 px 值" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:62 msgid "The monospaced font size in px" msgstr "等宽字体大小 px 值" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:63 msgid "The standard font type" msgstr "标准字体类型" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:463 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:479 msgid "&Lookup in dictionary" msgstr "词典查询(&L)" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:482 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:138 msgid "Go to..." msgstr "转到..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:478 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:494 msgid "Next Section" msgstr "下一节" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:479 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:495 msgid "Previous Section" msgstr "上一节" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:481 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:497 msgid "Document Start" msgstr "文档起始" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:482 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:498 msgid "Document End" msgstr "文档结尾" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:484 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:500 msgid "Section Start" msgstr "节起始" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:485 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:501 msgid "Section End" msgstr "节末尾" @@ -9940,85 +10082,85 @@ msgstr "转到引用。要找到引用编号,请使用引用模式。" msgid "Search for text in book" msgstr "书内文本搜索" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:275 msgid "Print Preview" msgstr "打印预览" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:309 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:312 msgid "Connecting to dict.org to lookup: <b>%s</b>…" msgstr "正在链接 dict.org 查询:<b>%s</b>" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:409 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:413 msgid "Choose ebook" msgstr "选择电子书" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:410 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:414 msgid "Ebooks" msgstr "电子书" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:447 msgid "No matches found for: %s" msgstr "未找到 %s 的匹配" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:480 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:488 msgid "Loading flow..." msgstr "正在加载流..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:524 msgid "Laying out %s" msgstr "正在排布流 %s..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:555 msgid "Bookmark #%d" msgstr "书签#%d" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:559 msgid "Add bookmark" msgstr "添加书签" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:560 msgid "Enter title for bookmark:" msgstr "编辑书签标题:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:570 msgid "Manage Bookmarks" msgstr "管理书签" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:599 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 msgid "Loading ebook..." msgstr "正在加载电子书..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:615 msgid "DRM Error" msgstr "DRM 错误" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:616 msgid "<p>This book is protected by <a href=\"%s\">DRM</a>" msgstr "<p>此书被 <a href=\"%s\">DRM</a> 保护" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:612 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:620 msgid "Could not open ebook" msgstr "无法打开电子书" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:690 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:698 msgid "Options to control the ebook viewer" msgstr "电子书查看器控制选项" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:697 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:705 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:700 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:708 msgid "" "If specified, viewer window will try to open full screen when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:705 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:713 msgid "Print javascript alert and console messages to the console" msgstr "在控制台显示 javascript 警告以及控制台信息" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:711 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:719 msgid "" "%prog [options] file\n" "\n" @@ -10136,7 +10278,7 @@ msgstr "隐藏" msgid "Toggle" msgstr "触发器" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:400 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 " @@ -10144,13 +10286,13 @@ msgid "" msgstr "" "若您使用 Android 手机上的 WordPlayer 电子书程序,您可以用设备直接访问您的 Calibre 书库。这需要您打开内容服务器。" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:404 msgid "" "Remember to leave calibre running as the server only runs as long as calibre " "is running." msgstr "请记住保持 Calibre 运行,如此它才能一直提供服务。" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:391 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:406 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 " @@ -10159,39 +10301,39 @@ msgstr "" "您需要将 URL http://myhostname:8080 添加到您 WordPlayer 中的 Calibre 书库。此处 myhostname " "应为有效主机名或者您运行 Calibre 电脑的 IP 地址。" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:468 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:483 msgid "Moving library..." msgstr "正在移动书库..." -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:484 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:485 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:499 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:500 msgid "Failed to move library" msgstr "移动书库错误" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:554 msgid "Invalid database" msgstr "无效数据库" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:540 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:555 msgid "" "<p>An invalid library already exists at %s, delete it before trying to move " "the existing library.<br>Error: %s" msgstr "<p>在 %s 已有无效书库,在试图移动现有书库前删除它。<br>错误:%s" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:566 msgid "Could not move library" msgstr "无法移动书库" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:622 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:641 msgid "Select location for books" msgstr "选择书籍位置" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:636 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:655 msgid "" "You must choose an empty folder for the calibre library. %s is not empty." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:710 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:729 msgid "welcome wizard" msgstr "欢迎向导" @@ -10268,9 +10410,9 @@ msgstr "选择您的语言(&L):" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:58 msgid "" -"Choose a location for your books. When you add books to calibre, they will " -"be copied here:" -msgstr "为您的书籍选择位置。当您在 Calibre 中添加书籍,它们将被复制到这里:" +"<p>Choose a location for your books. When you add books to calibre, they " +"will be copied here. Use an <b>empty folder</b> for a new calibre library:" +msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 msgid "&Change" @@ -10283,121 +10425,158 @@ msgid "" "will switch to using it." msgstr "如果您已有 Calibre 书库,它将被复制到新位置。若 Calibre 书库在新位置已经存在,Calibre 将直接使用它。" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:34 msgid "Using: %s:%s@%s:%s and %s encryption" msgstr "使用:%s:%s@%s:%s 和 %s 加密" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:37 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:39 msgid "Sending..." msgstr "正在发送..." -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:44 msgid "Mail successfully sent" msgstr "邮件已发出" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:124 -msgid "Finish gmail setup" -msgstr "完成 gmail 设定" - -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:136 msgid "" -"Dont forget to enter your gmail username and password. You can sign up for a " -"free gmail account at http://gmail.com" -msgstr "请勿忘记输入您的 gmail 用户名密码。您可于 http://gmail.com 注册免费账号" +"If you are setting up a new hotmail account, you must log in to it once " +"before you will be able to send mails." +msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:147 +msgid "" +"You can sign up for a free {name} email account at <a " +"href=\"http://{url}\">http://{url}</a>. {extra}" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:154 +msgid "Your %s &email address:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:155 +msgid "Your %s &username:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:156 +msgid "Your %s &password:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:174 +msgid "" +"If you plan to use email to send books to your Kindle, remember to add the " +"your %s email address to the allowed email addresses in your Amazon.com " +"Kindle management page." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:181 +msgid "Setup" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:203 msgid "Bad configuration" msgstr "错误配置" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:197 msgid "You must set the From email address" msgstr "您需要设置发信人电子邮件地址" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:204 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:113 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:124 msgid "Send email &from:" msgstr "发信人地址(&f):" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:125 msgid "" "<p>This is what will be present in the From: field of emails sent by " "calibre.<br> Set it to your email address" msgstr "<p>邮件发件人栏中将填写:Calibre 发送的邮件。<br> 将其设为您的邮件地址" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:126 msgid "" "<p>A mail server is useful if the service you are sending mail to only " "accepts email from well know mail services." msgstr "<p>如果收件人的邮箱只能接收来自著名邮件服务的的邮件,使用邮件服务器则非常实用。" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:127 msgid "Mail &Server" msgstr "邮件服务器(&S)" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:128 msgid "calibre can <b>optionally</b> use a server to send mail" msgstr "Calibre 可<b>选择是否使用</b>邮件服务器以发送邮件" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:129 msgid "&Hostname:" msgstr "主机名(&H):" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:130 msgid "The hostname of your mail server. For e.g. smtp.gmail.com" msgstr "您的邮件服务器的主机名. 例如 smtp.gmail.com" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:131 msgid "&Port:" msgstr "端口(&P):" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:132 msgid "" "The port your mail server listens for connections on. The default is 25" msgstr "您的邮件服务器的侦听端口号。默认 25" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:134 msgid "Your username on the mail server" msgstr "您在邮件服务器上的用户名" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:136 msgid "Your password on the mail server" msgstr "您在邮件服务器上的密码" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:137 msgid "&Show" msgstr "显示(&S)" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:138 msgid "&Encryption:" msgstr "加密(&E):" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:139 msgid "" "Use TLS encryption when connecting to the mail server. This is the most " "common." msgstr "连接到邮件服务器时使用 TLS 加密,这是通常服务器使用的选项。" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:140 msgid "&TLS" msgstr "&TLS" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:141 msgid "Use SSL encryption when connecting to the mail server." msgstr "连接到邮件服务器时使用 SSL 加密。" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:142 msgid "&SSL" msgstr "&SSL" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:143 +msgid "WARNING: Using no encryption is highly insecure" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:144 +msgid "&None" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:145 msgid "Use Gmail" msgstr "使用 Gmail" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:146 +msgid "Use Hotmail" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:147 msgid "&Test email" msgstr "测试邮件发送(&T)" @@ -10463,7 +10642,7 @@ msgstr "空白" msgid "empty" msgstr "空的" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:48 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:50 msgid "" "The fields to output when cataloging books in the database. Should be a " "comma-separated list of fields.\n" @@ -10472,7 +10651,7 @@ msgid "" "Applies to: CSV, XML output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:58 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:60 msgid "" "Output field to sort on.\n" "Available fields: author_sort, id, rating, size, timestamp, title.\n" @@ -10480,7 +10659,7 @@ msgid "" "Applies to: CSV, XML output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:212 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:214 msgid "" "The fields to output when cataloging books in the database. Should be a " "comma-separated list of fields.\n" @@ -10489,7 +10668,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:222 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:224 msgid "" "Output field to sort on.\n" "Available fields: author_sort, id, rating, size, timestamp, title.\n" @@ -10497,7 +10676,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:231 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:233 msgid "" "Create a citation for BibTeX entries.\n" "Boolean value: True, False\n" @@ -10505,7 +10684,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:240 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:242 msgid "" "The template for citation creation from database fields.\n" " Should be a template with {} enclosed fields.\n" @@ -10514,7 +10693,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:250 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:252 msgid "" "BibTeX file encoding output.\n" "Available types: utf8, cp1252, ascii.\n" @@ -10522,7 +10701,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:259 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:261 msgid "" "BibTeX file encoding flag.\n" "Available types: strict, replace, ignore, backslashreplace.\n" @@ -10530,7 +10709,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:268 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:270 msgid "" "Entry type for BibTeX catalog.\n" "Available types: book, misc, mixed.\n" @@ -10538,14 +10717,14 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:536 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:540 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:543 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:547 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 " @@ -10554,14 +10733,14 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:553 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:557 msgid "" "Regex describing tags to exclude as genres.\n" "Default: '%default' excludes bracketed tags, e.g. '[<tag>]'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:559 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:563 msgid "" "Comma-separated list of tag words indicating book should be excluded from " "output. Case-insensitive.\n" @@ -10570,35 +10749,35 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:567 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:571 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:574 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:578 msgid "" "Include 'Series' section in catalog.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:581 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:585 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:588 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:592 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:595 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:599 msgid "" "Sort titles with leading numbers as text, e.g.,\n" "'2001: A Space Odyssey' sorts as \n" @@ -10607,7 +10786,7 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:602 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:606 msgid "" "Specifies the output profile. In some cases, an output profile is required " "to optimize the catalog for the device. For example, 'kindle' or " @@ -10617,13 +10796,20 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:609 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:613 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:619 +msgid "" +"Tag indicating book to be displayed as wishlist item.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/library/check_library.py:17 msgid "Invalid titles" msgstr "无效的标题" @@ -10981,7 +11167,7 @@ msgid "" msgstr "为搜索查询过滤结果。搜索查询格式请参见用户手册中搜索相关内容。默认:不过滤" #: /home/kovid/work/calibre/src/calibre/library/cli.py:665 -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:505 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:499 msgid "Show detailed output information. Useful for debugging" msgstr "显示详细输出信息。有利调试" @@ -11219,35 +11405,35 @@ msgid "" "start with a letter" msgstr "标签必须只包含小写字母,数字及下划线,并且以字母开头。" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:82 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:57 msgid "%sAverage rating is %3.1f" msgstr "%s的平均星级是%3.1f" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:846 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:818 msgid "Main" msgstr "主" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2321 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2310 msgid "<p>Migrating old database to ebook library in %s<br><center>" msgstr "<p>正在将旧数据库转移到位于 %s 的新数据库<br><center>" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2350 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2339 msgid "Copying <b>%s</b>" msgstr "正在复制<b>%s</b>" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2367 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2356 msgid "Compacting database" msgstr "正在压缩数据库" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2460 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2449 msgid "Checking SQL integrity..." msgstr "正在检查" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2499 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2488 msgid "Checking for missing files." msgstr "正在检查缺失文件。" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2521 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2516 msgid "Checked id" msgstr "已检查 id" @@ -11438,120 +11624,129 @@ msgid "" "from Apache/nginx/etc." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/base.py:149 -msgid "Password to access your calibre library. Username is " -msgstr "密码以访问您的 Calibre 书库。用户名为 " - -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:51 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:401 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:59 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:437 msgid "Loading, please wait" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:80 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:85 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:106 +msgid "Go to" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:101 msgid "First" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:80 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:101 msgid "Last" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:80 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:101 msgid "Previous" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:81 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:102 msgid "Next" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:83 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:104 msgid "Browsing %d books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:99 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:224 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:121 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:247 msgid "Average rating" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:100 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:122 msgid "%s: %.1f stars" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:132 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:155 msgid "%d stars" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:225 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:248 msgid "Popularity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:244 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:267 msgid "Sort by" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:308 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:512 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:270 +msgid "library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:271 +msgid "home" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:332 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:548 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569 msgid "Newest" msgstr "最新" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:309 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:513 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:333 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:549 msgid "All books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:341 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:366 msgid "Browse books by" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:346 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:371 msgid "Choose a category to browse by:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:421 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:457 msgid "Browsing by" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:422 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:458 msgid "Up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:543 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:579 msgid "in" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:546 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:582 msgid "Books in" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:597 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:634 msgid "Other formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:604 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:641 msgid "Read %s in the %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:609 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:646 msgid "Get" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:624 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:661 msgid "Permalink" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:625 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:662 msgid "A permanent link to this book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:636 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:673 msgid "This book has been deleted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:720 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:757 msgid "in search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:722 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:759 msgid "Matching books" msgstr "" @@ -11582,6 +11777,12 @@ msgid "" "overrides any per-library settings specified in the GUI" msgstr "" +#: /home/kovid/work/calibre/src/calibre/library/server/main.py:62 +msgid "" +"Auto reload server when source code changes. May not work in all " +"environments." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:112 msgid "%d book" msgstr "%d本书" @@ -11862,7 +12063,7 @@ msgstr "开启 SSH 会话失败: " msgid "Failed to authenticate with server: %s" msgstr "服务器认证失败:%s" -#: /home/kovid/work/calibre/src/calibre/utils/smtp.py:234 +#: /home/kovid/work/calibre/src/calibre/utils/smtp.py:249 msgid "Control email delivery" msgstr "控制邮件传递" @@ -11906,93 +12107,93 @@ msgstr "不从 calire 服务器下载最新订阅清单" msgid "Unknown News Source" msgstr "未知新闻来源" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:614 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:628 msgid "The \"%s\" recipe needs a username and password." msgstr "订阅清单“%s”需要用户名与密码。" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:713 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:727 msgid "Download finished" msgstr "下载完成" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:715 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:729 msgid "Failed to download the following articles:" msgstr "下载下列文章失败:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:721 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:735 msgid "Failed to download parts of the following articles:" msgstr "下载下列文章的某些部分失败:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:723 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:737 msgid " from " msgstr " 自 " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:725 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:739 msgid "\tFailed links:" msgstr "\t失败链接:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:814 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:834 msgid "Could not fetch article. Run with -vv to see the reason" msgstr "无法抓取文章。使用 -vv 选项运行察看原因。" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:835 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:855 msgid "Fetching feeds..." msgstr "正在抓取源..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:840 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:860 msgid "Got feeds from index page" msgstr "从索引页面获取了源" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:849 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:869 msgid "Trying to download cover..." msgstr "正在尝试下载封面..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:851 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:871 msgid "Generating masthead..." msgstr "正在生成刊头..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:932 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:952 msgid "Starting download [%d thread(s)]..." msgstr "开始下载 [ %d 线程数]..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:948 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:968 msgid "Feeds downloaded to %s" msgstr "新闻源下载到 %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:957 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:977 msgid "Could not download cover: %s" msgstr "无法下载封面:%s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:964 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:986 msgid "Downloading cover from %s" msgstr "正在从 %s 下载封面" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1009 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1032 msgid "Masthead image downloaded" msgstr "已下载刊头图像" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1177 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1200 msgid "Untitled Article" msgstr "无标题文章" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1248 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1271 msgid "Article downloaded: %s" msgstr "已下载文章:%s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1259 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1282 msgid "Article download failed: %s" msgstr "下载失败文章:%s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1276 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1299 msgid "Fetching feed" msgstr "抓取源" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1423 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1446 msgid "" "Failed to log in, check your username and password for the calibre " "Periodicals service." msgstr "登录失败,检查您 calibre 期刊服务的用户名密码。" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1438 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1461 msgid "" "You do not have permission to download this issue. Either your subscription " "has expired or you have exceeded the maximum allowed downloads for today." @@ -12013,7 +12214,7 @@ msgstr "已计划" msgid "Custom" msgstr "自定义" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:482 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:476 msgid "" "%prog URL\n" "\n" @@ -12023,48 +12224,48 @@ msgstr "" "\n" "URL 举例为 http://google.com" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:485 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:479 msgid "Base directory into which URL is saved. Default is %default" msgstr "URL 存储基目录。默认 %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:488 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:482 msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " "s" msgstr "的带服务器响应的超时秒数。默认:%default s" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:491 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:485 msgid "" "Maximum number of levels to recurse i.e. depth of links to follow. Default " "%default" msgstr "递归级别最大值。如链接跟踪深度。默认:%default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:494 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:488 msgid "" "The maximum number of files to download. This only applies to files from <a " "href> tags. Default is %default" msgstr "文件下载最大值。仅对来自于 <a href> 标签的文件有效。默认为 %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:496 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:490 msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" msgstr "连续抓取最小间隔秒数。默认为 %default s" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:498 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:492 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:500 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:494 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:502 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:496 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 " @@ -12075,7 +12276,7 @@ msgstr "" "任何匹配此正则表达式的链接都会被忽略。此选项可被多次使用,此时只要任一正则表达式有匹配链接,链接都被忽略。默认情况下,没有链接被忽略。如果 --" "filter-regexp 和 --match-regexp 均被使用,则优先应用 --filter-regexp。" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:504 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:498 msgid "Do not download CSS stylesheets." msgstr "不下载 CSS 样式表。" @@ -12148,6 +12349,18 @@ msgstr "不下载 CSS 样式表。" #~ msgid "Show ¬ifications in system tray" #~ msgstr "在系统托盘除显示和提醒" +#~ msgid "Failed to email books" +#~ msgstr "发送电子书籍失败" + +#~ msgid "Failed to email the following books:" +#~ msgstr "无法通过电子邮件发送以下书籍:" + +#~ msgid "Attached is the" +#~ msgstr "附加" + +#~ msgid "Sent by email:" +#~ msgstr "已通过邮件发送:" + #~ msgid "" #~ "Email\n" #~ "Delivery" @@ -12202,6 +12415,9 @@ msgstr "不下载 CSS 样式表。" #~ msgid "Alt+S" #~ msgstr "Alt+S" +#~ msgid "&Search:" +#~ msgstr "搜索(&S):" + #~ msgid "Sort by &popularity" #~ msgstr "按流行度排序(&P)" @@ -12214,6 +12430,9 @@ msgstr "不下载 CSS 样式表。" #~ msgid "Configure calibre" #~ msgstr "配置 Calibre" +#~ msgid "Finish gmail setup" +#~ msgstr "完成 gmail 设定" + #~ msgid "Send specific format to storage card A" #~ msgstr "发送指定格式到存储卡 A" @@ -12226,6 +12445,13 @@ msgstr "不下载 CSS 样式表。" #~ msgid "Read metadata only from &file name" #~ msgstr "从文件名读取元数据(&F)" +#~ 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 "下列书籍使用格式曾经在数据库中,现已不可用。格式项被移除。您需手动检查。这可能是由于您直接在 library 文件夹操作文件引起的。" + #~ msgid "&Check database integrity" #~ msgstr "检查数据库完整性(&C)" @@ -12313,6 +12539,16 @@ msgstr "不下载 CSS 样式表。" #~ msgid "Click to see the books available on your computer" #~ msgstr "点击查看电脑上可用书籍" +#~ msgid "" +#~ "Choose a location for your books. When you add books to calibre, they will " +#~ "be copied here:" +#~ msgstr "为您的书籍选择位置。当您在 Calibre 中添加书籍,它们将被复制到这里:" + +#~ msgid "" +#~ "Dont forget to enter your gmail username and password. You can sign up for a " +#~ "free gmail account at http://gmail.com" +#~ msgstr "请勿忘记输入您的 gmail 用户名密码。您可于 http://gmail.com 注册免费账号" + #~ msgid "" #~ "No metadata found, try adjusting the title and author or the ISBN key." #~ msgstr "未找到元数据,请修改标题作者或 ISBN 搜索条件后重试。" @@ -12339,6 +12575,9 @@ msgstr "不下载 CSS 样式表。" #~ "available books are saved." #~ msgstr "逗号分隔格式列表。默认保存所有可用书籍。" +#~ msgid "Password to access your calibre library. Username is " +#~ msgstr "密码以访问您的 Calibre 书库。用户名为 " + #~ msgid "" #~ "[options]\n" #~ "\n" @@ -12380,6 +12619,11 @@ msgstr "不下载 CSS 样式表。" #~ msgid "Force maximum line lenght" #~ msgstr "强制最大行宽" +#~ 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 "PDF 文件部分转换为 HTML,在此设定平均换行行宽。默认为 %default  即已禁用。" + #~ msgid "Stop &all jobs" #~ msgstr "停止所有任务(&A)" @@ -12425,6 +12669,13 @@ msgstr "不下载 CSS 样式表。" #~ msgid "Sending to &device" #~ msgstr "发送到设备(&D)" +#~ msgid "" +#~ "Regular expression: the expression must match anywhere in the metadata" +#~ msgstr "正则表达式:表达式必须与元数据中所有内容寻求匹配" + +#~ msgid " " +#~ msgstr " " + #~ msgid "<p>For help see the: <a href=\"%s\">User Manual</a><br>" #~ msgstr "<p>帮助参见:<a href=\"%s\">用户手册</a><br>" @@ -12494,6 +12745,12 @@ msgstr "不下载 CSS 样式表。" #~ "如果您选定书籍 A 之后选定书籍 B,\n" #~ "书籍 A 为 1 号,B 为 2 号。" +#~ msgid "Contains: the word or phrase matches anywhere in the metadata" +#~ msgstr "包含:短语或文字与原数据中任意位置匹配" + +#~ msgid "Equals: the word or phrase must match an entire metadata field" +#~ msgstr "等于:短语必须和一个元数据项完全匹配" + #~ msgid "Failed to create calibre library at: %r. Aborting." #~ msgstr "在 %r 创建 calibre 书库失败。放弃。" @@ -12518,14 +12775,51 @@ msgstr "不下载 CSS 样式表。" #~ msgid "You cannot change libraries when a device is connected." #~ msgstr "有设置连接时,你不能更改书库。" +#~ msgid "Click to open Book Details window" +#~ msgstr "点击打开书籍详情窗口" + +#~ msgid "" +#~ "Book formats and metadata from the selected books will be added to the " +#~ "<b>first selected book.</b> ISBN will <i>not</i> be merged.<br><br> The " +#~ "second and subsequently selected books will not be deleted or " +#~ "changed.<br><br>Please confirm you want to proceed." +#~ msgstr "" +#~ "选定书籍的格式和元数据将被添加到<b>第一本选定书籍。</b>ISBN<i>不会</i>被合并。<br><br> \r\n" +#~ "第二本和随后的选定书籍将不会被删除或更改。 <br><br>如果要继续的话请先确认。" + #~ msgid "Additional Information" #~ msgstr "附加信息" +#~ msgid "" +#~ "Book formats and metadata from the selected books will be merged into the " +#~ "<b>first selected book</b>. ISBN will <i>not</i> be merged.<br><br>After " +#~ "merger the second and subsequently selected books will be <b>deleted</b>. " +#~ "<br><br>All book formats of the first selected book will be kept and any " +#~ "duplicate formats in the second and subsequently selected books will be " +#~ "permanently <b>deleted</b> from your computer.<br><br> Are you <b>sure</b> " +#~ "you want to proceed?" +#~ msgstr "" +#~ "选定书籍的格式和元数据将会被合并进<b>第一本选定书籍</b>中。ISBN<i>不会</i> " +#~ "被合并。<br><br>合并后,选定的第二本书籍及随后的书籍将会被<b>删除</b>。<br><br>选定的第一本书籍的所有书籍格式都会被保留下来,而选定" +#~ "书籍的第二本和随后的书籍的重复格式都将从你电脑上永久<b>删除</b>。<br><br>你<b>确定</b>要继续吗?" + #~ msgid "Run the check" #~ msgstr "运行检查" +#~ msgid "&Search and replace (experimental)" +#~ msgstr "查找和替换(&S)(实验功能)" + #~ msgid "Cannot use tag editor" #~ msgstr "无法使用标签编辑器" #~ msgid "The tags editor cannot be used if you have modified the tags" #~ msgstr "如果你已经修改了标签,那么标签编辑器就无法使用" + +#~ msgid "" +#~ "<p>Enter a list of ISBNs in the box to the left, one per line. calibre will " +#~ "automatically create entries for books based on the ISBN and download " +#~ "metadata and covers for them.<p>Any invalid ISBNs in the list will be " +#~ "ignored." +#~ msgstr "" +#~ "<p>在左边的文本框中输入一组ISBN号,每行一个。calibre将为他们自动创建相应的书籍项,并从网络下载书籍元数据和封面。<p>错误的ISBN号会被忽" +#~ "略。" From 2145a487d45904113dc922db1ae131eeff178041 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Sun, 28 Nov 2010 11:47:36 +0000 Subject: [PATCH 202/377] Add check for valid has_cover to check_library --- src/calibre/gui2/dialogs/check_library.py | 89 ++++++++++++++++++----- src/calibre/library/check_library.py | 69 +++++++++++++----- src/calibre/library/database2.py | 8 ++ 3 files changed, 127 insertions(+), 39 deletions(-) diff --git a/src/calibre/gui2/dialogs/check_library.py b/src/calibre/gui2/dialogs/check_library.py index 55cd91dcd3..c00ee99cc0 100644 --- a/src/calibre/gui2/dialogs/check_library.py +++ b/src/calibre/gui2/dialogs/check_library.py @@ -32,23 +32,30 @@ class CheckLibraryDialog(QDialog): self.log.itemChanged.connect(self.item_changed) self._layout.addWidget(self.log) - self.check = QPushButton(_('&Run the check')) - self.check.setDefault(False) - self.check.clicked.connect(self.run_the_check) - self.copy = QPushButton(_('Copy &to clipboard')) - self.copy.setDefault(False) - self.copy.clicked.connect(self.copy_to_clipboard) - self.ok = QPushButton('&Done') - self.ok.setDefault(True) - self.ok.clicked.connect(self.accept) - self.delete = QPushButton('Delete &marked') - self.delete.setDefault(False) - self.delete.clicked.connect(self.delete_marked) + self.check_button = QPushButton(_('&Run the check')) + self.check_button.setDefault(False) + self.check_button.clicked.connect(self.run_the_check) + self.copy_button = QPushButton(_('Copy &to clipboard')) + self.copy_button.setDefault(False) + self.copy_button.clicked.connect(self.copy_to_clipboard) + self.ok_button = QPushButton('&Done') + self.ok_button.setDefault(True) + self.ok_button.clicked.connect(self.accept) + self.delete_button = QPushButton('Delete &marked') + self.delete_button.setToolTip(_('Delete marked files (checked subitems)')) + self.delete_button.setDefault(False) + self.delete_button.clicked.connect(self.delete_marked) + self.fix_button = QPushButton('&Fix marked') + self.fix_button.setDefault(False) + self.fix_button.setEnabled(False) + self.fix_button.setToolTip(_('Fix marked sections (checked fixable items)')) + self.fix_button.clicked.connect(self.fix_items) self.bbox = QDialogButtonBox(self) - self.bbox.addButton(self.check, QDialogButtonBox.ActionRole) - self.bbox.addButton(self.delete, QDialogButtonBox.ActionRole) - self.bbox.addButton(self.copy, QDialogButtonBox.ActionRole) - self.bbox.addButton(self.ok, QDialogButtonBox.AcceptRole) + self.bbox.addButton(self.check_button, QDialogButtonBox.ActionRole) + self.bbox.addButton(self.delete_button, QDialogButtonBox.ActionRole) + self.bbox.addButton(self.fix_button, QDialogButtonBox.ActionRole) + self.bbox.addButton(self.copy_button, QDialogButtonBox.ActionRole) + self.bbox.addButton(self.ok_button, QDialogButtonBox.AcceptRole) h = QHBoxLayout() ln = QLabel(_('Names to ignore:')) @@ -93,12 +100,19 @@ class CheckLibraryDialog(QDialog): plaintext = [] def builder(tree, checker, check): - attr, h, checkable = check + attr, h, checkable, fixable = check list = getattr(checker, attr, None) if list is None: return - tl = Item([h]) + tl = Item() + tl.setText(0, h) + if fixable: + tl.setText(1, _('(fixable)')) + tl.setFlags(Qt.ItemIsEnabled | Qt.ItemIsUserCheckable) + tl.setCheckState(1, False) + self.top_level_items[attr] = tl + for problem in list: it = Item() if checkable: @@ -107,6 +121,7 @@ class CheckLibraryDialog(QDialog): else: it.setFlags(Qt.ItemIsEnabled) it.setText(0, problem[0]) + it.setData(0, Qt.UserRole, problem[2]) it.setText(1, problem[1]) tl.addChild(it) self.all_items.append(it) @@ -118,18 +133,25 @@ class CheckLibraryDialog(QDialog): t.setColumnCount(2); t.setHeaderLabels([_('Name'), _('Path from library')]) self.all_items = [] + self.top_level_items = {} for check in CHECKS: builder(t, checker, check) t.setColumnWidth(0, 200) t.setColumnWidth(1, 400) - self.delete.setEnabled(False) + self.delete_button.setEnabled(False) self.text_results = '\n'.join(plaintext) def item_changed(self, item, column): + self.fix_button.setEnabled(False) + for it in self.top_level_items.values(): + if it.checkState(1): + self.fix_button.setEnabled(True) + + self.delete_button.setEnabled(False) for it in self.all_items: if it.checkState(1): - self.delete.setEnabled(True) + self.delete_button.setEnabled(True) return def delete_marked(self): @@ -157,6 +179,33 @@ class CheckLibraryDialog(QDialog): unicode(it.text(1)))) self.run_the_check() + def fix_missing_covers(self): + tl = self.top_level_items['missing_covers'] + child_count = tl.childCount() + for i in range(0, child_count): + item = tl.child(i); + id = item.data(0, Qt.UserRole).toInt()[0] + self.db.set_has_cover(id, False) + + def fix_extra_covers(self): + tl = self.top_level_items['extra_covers'] + child_count = tl.childCount() + for i in range(0, child_count): + item = tl.child(i); + id = item.data(0, Qt.UserRole).toInt()[0] + self.db.set_has_cover(id, True) + + def fix_items(self): + for check in CHECKS: + attr = check[0] + fixable = check[3] + tl = self.top_level_items[attr] + if fixable and tl.checkState(1): + func = getattr(self, 'fix_' + attr, None) + if func is not None and callable(func): + func() + self.run_the_check() + def copy_to_clipboard(self): QApplication.clipboard().setText(self.text_results) diff --git a/src/calibre/library/check_library.py b/src/calibre/library/check_library.py index b285da0006..b49330db3e 100644 --- a/src/calibre/library/check_library.py +++ b/src/calibre/library/check_library.py @@ -14,14 +14,25 @@ from calibre.ebooks import BOOK_EXTENSIONS EBOOK_EXTENSIONS = frozenset(BOOK_EXTENSIONS) NORMALS = frozenset(['metadata.opf', 'cover.jpg']) -CHECKS = [('invalid_titles', _('Invalid titles'), True), - ('extra_titles', _('Extra titles'), True), - ('invalid_authors', _('Invalid authors'), True), - ('extra_authors', _('Extra authors'), True), - ('missing_formats', _('Missing book formats'), False), - ('extra_formats', _('Extra book formats'), True), - ('extra_files', _('Unknown files in books'), True), - ('failed_folders', _('Folders raising exception'), False) +''' +Checks fields: +- name of array containing info +- user-readable name of info +- can be deleted (can be checked) +- can be fixed. In this case, the name of the fix method is derived from the + array name +''' + +CHECKS = [('invalid_titles', _('Invalid titles'), True, False), + ('extra_titles', _('Extra titles'), True, False), + ('invalid_authors', _('Invalid authors'), True, False), + ('extra_authors', _('Extra authors'), True, False), + ('missing_formats', _('Missing book formats'), False, False), + ('extra_formats', _('Extra book formats'), True, False), + ('extra_files', _('Unknown files in books'), True, False), + ('missing_covers', _('Missing covers in books'), False, True), + ('extra_covers', _('Extra covers in books'), True, True), + ('failed_folders', _('Folders raising exception'), False, False) ] @@ -57,6 +68,10 @@ class CheckLibrary(object): self.extra_formats = [] self.extra_files = [] + self.missing_covers = [] + self.extra_covers = [] + + self.failed_folders = [] def dbpath(self, id): return self.db.path(id, index_is_id=True) @@ -83,7 +98,7 @@ class CheckLibrary(object): auth_path = os.path.join(lib, auth_dir) # First check: author must be a directory if not os.path.isdir(auth_path): - self.invalid_authors.append((auth_dir, auth_dir)) + self.invalid_authors.append((auth_dir, auth_dir, 0)) continue self.potential_authors[auth_dir] = {} @@ -98,7 +113,7 @@ class CheckLibrary(object): m = self.db_id_regexp.search(title_dir) # Second check: title must have an ID and must be a directory if m is None or not os.path.isdir(title_path): - self.invalid_titles.append((auth_dir, db_path)) + self.invalid_titles.append((auth_dir, db_path, 0)) continue id = m.group(1) @@ -106,12 +121,12 @@ class CheckLibrary(object): if self.is_case_sensitive: if int(id) not in self.all_ids or \ db_path not in self.all_dbpaths: - self.extra_titles.append((title_dir, db_path)) + self.extra_titles.append((title_dir, db_path, 0)) continue else: if int(id) not in self.all_ids or \ db_path.lower() not in self.all_lc_dbpaths: - self.extra_titles.append((title_dir, db_path)) + self.extra_titles.append((title_dir, db_path, 0)) continue # Record the book to check its formats @@ -120,7 +135,7 @@ class CheckLibrary(object): # Fourth check: author directories that contain no titles if not found_titles: - self.extra_authors.append((auth_dir, auth_dir)) + self.extra_authors.append((auth_dir, auth_dir, 0)) for x in self.book_dirs: try: @@ -152,17 +167,20 @@ class CheckLibrary(object): unknowns = frozenset(filenames-formats-NORMALS) # Check: any books that aren't formats or normally there? for u in unknowns: - self.extra_files.append((title_dir, os.path.join(db_path, u))) + self.extra_files.append((title_dir, + os.path.join(db_path, u), book_id)) # Check: any book formats that should be there? missing = book_formats - formats for m in missing: - self.missing_formats.append((title_dir, os.path.join(db_path, m))) + self.missing_formats.append((title_dir, + os.path.join(db_path, m), book_id)) # Check: any book formats that shouldn't be there? extra = formats - book_formats - NORMALS for e in extra: - self.extra_formats.append((title_dir, os.path.join(db_path, e))) + self.extra_formats.append((title_dir, + os.path.join(db_path, e), book_id)) else: def lc_map(fnames, fset): m = {} @@ -175,15 +193,28 @@ class CheckLibrary(object): unknowns = frozenset(filenames_lc-formats_lc-NORMALS) # Check: any books that aren't formats or normally there? for f in lc_map(filenames, unknowns): - self.extra_files.append((title_dir, os.path.join(db_path, f))) + self.extra_files.append((title_dir, os.path.join(db_path, f), + book_id)) book_formats_lc = frozenset([f.lower() for f in book_formats]) # Check: any book formats that should be there? missing = book_formats_lc - formats_lc for m in lc_map(book_formats, missing): - self.missing_formats.append((title_dir, os.path.join(db_path, m))) + self.missing_formats.append((title_dir, + os.path.join(db_path, m), book_id)) # Check: any book formats that shouldn't be there? extra = formats_lc - book_formats_lc - NORMALS for e in lc_map(formats, extra): - self.extra_formats.append((title_dir, os.path.join(db_path, e))) + self.extra_formats.append((title_dir, os.path.join(db_path, e), + book_id)) + + # check cached has_cover + if self.db.has_cover(book_id): + if 'cover.jpg' not in filenames: + self.missing_covers.append((title_dir, + os.path.join(db_path, title_dir, 'cover.jpg'), book_id)) + else: + if 'cover.jpg' in filenames: + self.extra_covers.append((title_dir, + os.path.join(db_path, title_dir, 'cover.jpg'), book_id)) diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index 47c575386b..a07e46577e 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -801,6 +801,14 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): if notify: self.notify('cover', [id]) + def has_cover(self, id): + return self.data.get(id, self.FIELD_MAP['cover'], row_is_id=True) + + def set_has_cover(self, id, val): + dval = 1 if val else 0 + self.conn.execute('UPDATE books SET has_cover=? WHERE id=?', (dval, id,)) + self.data.set(id, self.FIELD_MAP['cover'], val, row_is_id=True) + def book_on_device(self, id): if callable(self.book_on_device_func): return self.book_on_device_func(id) From 07d93425da6b5800e76798ffbe1b3469846f8fa6 Mon Sep 17 00:00:00 2001 From: Sengian <sengian1@gmail.com> Date: Sun, 28 Nov 2010 14:02:30 +0100 Subject: [PATCH 203/377] Amazon modification & integration of german metadata --- src/calibre/ebooks/metadata/amazonfr.py | 73 +++++++++++++++++++------ 1 file changed, 56 insertions(+), 17 deletions(-) diff --git a/src/calibre/ebooks/metadata/amazonfr.py b/src/calibre/ebooks/metadata/amazonfr.py index 7091719f30..9512fc0c3f 100644 --- a/src/calibre/ebooks/metadata/amazonfr.py +++ b/src/calibre/ebooks/metadata/amazonfr.py @@ -36,6 +36,23 @@ class AmazonFr(MetadataSource): self.exception = e self.tb = traceback.format_exc() +class AmazonDe(MetadataSource): + + name = 'Amazon german' + description = _('Downloads social metadata from amazon.de') + supported_platforms = ['windows', 'osx', 'linux'] + author = 'Sengian' + version = (1, 0, 0) + has_html_comments = True + + def fetch(self): + try: + self.results = search(self.title, self.book_author, self.publisher, + self.isbn, max_results=10, verbose=self.verbose, lang='de') + except Exception, e: + self.exception = e + self.tb = traceback.format_exc() + class Amazon(MetadataSource): name = 'Amazon' @@ -59,8 +76,8 @@ def report(verbose): import traceback traceback.print_exc() -def replace_monthsfr(datefr): - # Replace french months by english equivalent for parse_date +def replace_months(datez, clang): + # Replace months by english equivalent for parse_date frtoen = { u'[jJ]anvier': u'jan', u'[fF].vrier': u'feb', @@ -74,15 +91,38 @@ def replace_monthsfr(datefr): u'[Oo]ctobre': u'oct', u'[nN]ovembre': u'nov', u'[dD].cembre': u'dec' } - for k in frtoen.iterkeys(): - tmp = re.sub(k, frtoen[k], datefr) - if tmp <> datefr: break + detoen = { + u'[jJ]anuar': u'jan', + u'[fF]ebruar': u'feb', + u'[mM].rz': u'mar', + u'[aA]pril': u'apr', + u'[mM]ai': u'may', + u'[jJ]uni': u'jun', + u'[jJ]uli': u'jul', + u'[aA]ugust': u'aug', + u'[sS]eptember': u'sep', + u'[Oo]ktober': u'oct', + u'[nN]ovember': u'nov', + u'[dD]ezember': u'dec' } + + if clang == 'fr': + dictoen = frtoen + elif clang == 'de': + dictoen = detoen + else: + return datez + + for k in dictoen.iterkeys(): + tmp = re.sub(k, dictoen[k], datez) + if tmp != datez: break return tmp + class Query(object): BASE_URL_FR = 'http://www.amazon.fr' BASE_URL_EN = 'http://www.amazon.com' + BASE_URL_DE = 'http://www.amazon.de' def __init__(self, title=None, author=None, publisher=None, isbn=None, keywords=None, max_results=20, rlang='en'): @@ -119,6 +159,9 @@ class Query(object): elif rlang =='fr': q['sort'] = 'relevancerank' self.urldata = self.BASE_URL_FR + elif rlang =='de': + q['sort'] = 'relevancerank' + self.urldata = self.BASE_URL_DE self.baseurl = self.urldata if isbn is not None: @@ -203,11 +246,11 @@ class ResultList(list): self.reattr = re.compile(r'<([a-zA-Z0-9]+)\s[^>]+>') self.reoutp = re.compile(r'(?s)<em>--This text ref.*?</em>') self.recom = re.compile(r'(?s)<!--.*?-->') - self.republi = re.compile(u'(Editeur|Publisher)', re.I) + self.republi = re.compile(u'(Editeur|Publisher|Verlag)', re.I) self.reisbn = re.compile(u'(ISBN-10|ISBN-10|ASIN)', re.I) - self.relang = re.compile(u'(Language|Langue)', re.I) - self.reratelt = re.compile(u'(Average\s*Customer\s*Review|Moyenne\s*des\s*commentaires\s*client)', re.I) - self.reprod = re.compile(u'(Product\s*Details|D.tails\s*sur\s*le\s*produit)', re.I) + self.relang = re.compile(u'(Language|Langue|Sprache)', re.I) + self.reratelt = re.compile(u'(Average\s*Customer\s*Review|Moyenne\s*des\s*commentaires\s*client|Durchschnittliche\s*Kundenbewertung)', re.I) + self.reprod = re.compile(u'(Product\s*Details|D.tails\s*sur\s*le\s*produit|Produktinformation)', re.I) def strip_tags_etree(self, etreeobj, invalid_tags): for (itag, rmv) in invalid_tags.iteritems(): @@ -315,8 +358,8 @@ class ResultList(list): d = d.group(1) try: default = utcnow().replace(day=15) - if self.lang == 'fr': - d = replace_monthsfr(d) + if self.lang != 'en': + d = replace_months(d, self.lang) d = parse_date(d, assume_utc=True, default=default) mi.pubdate = d except: @@ -415,7 +458,7 @@ def option_parser(): Fetch book metadata from Amazon. You must specify one of title, author, ISBN, publisher or keywords. Will fetch a maximum of 10 matches, so you should make your query as specific as possible. - You can chose the language for metadata retrieval (french & american). + You can chose the language for metadata retrieval (french & american & german). ''' )) parser.add_option('-t', '--title', help='Book title') @@ -423,14 +466,10 @@ def option_parser(): parser.add_option('-p', '--publisher', help='Book publisher') parser.add_option('-i', '--isbn', help='Book ISBN') parser.add_option('-k', '--keywords', help='Keywords') - parser.add_option('-c', '--covers', default=0, - help='Covers: 1-Check/ 2-Download') - parser.add_option('-p', '--coverspath', default='', - help='Covers files path') parser.add_option('-m', '--max-results', default=10, help='Maximum number of results to fetch') parser.add_option('-l', '--lang', default='en', - help='Chosen language for metadata search') + help='Chosen language for metadata search (fr, en , de)') parser.add_option('-v', '--verbose', default=0, action='count', help='Be more verbose about errors') return parser From 61db7b02b6a065a8727955ac5de8d2235d121e27 Mon Sep 17 00:00:00 2001 From: Sengian <sengian1@gmail.com> Date: Sun, 28 Nov 2010 15:11:55 +0100 Subject: [PATCH 204/377] Add language options to amazon & move replace_months to utils.date.py --- src/calibre/ebooks/metadata/amazonfr.py | 108 ++++++++++++------------ src/calibre/utils/date.py | 41 +++++++++ 2 files changed, 96 insertions(+), 53 deletions(-) diff --git a/src/calibre/ebooks/metadata/amazonfr.py b/src/calibre/ebooks/metadata/amazonfr.py index 9512fc0c3f..a77ea16d9c 100644 --- a/src/calibre/ebooks/metadata/amazonfr.py +++ b/src/calibre/ebooks/metadata/amazonfr.py @@ -9,7 +9,7 @@ from math import ceil from lxml import html from lxml.html import soupparser -from calibre.utils.date import parse_date, utcnow +from calibre.utils.date import parse_date, utcnow, replace_months from calibre import browser, preferred_encoding from calibre.ebooks.chardet import xml_to_unicode from calibre.ebooks.metadata import MetaInformation, check_isbn, \ @@ -36,6 +36,40 @@ class AmazonFr(MetadataSource): self.exception = e self.tb = traceback.format_exc() +class AmazonEs(MetadataSource): + + name = 'Amazon spanish' + description = _('Downloads social metadata from amazon.com in spanish') + supported_platforms = ['windows', 'osx', 'linux'] + author = 'Sengian' + version = (1, 0, 0) + has_html_comments = True + + def fetch(self): + try: + self.results = search(self.title, self.book_author, self.publisher, + self.isbn, max_results=10, verbose=self.verbose, lang='es') + except Exception, e: + self.exception = e + self.tb = traceback.format_exc() + +class AmazonUS(MetadataSource): + + name = 'Amazon US english' + description = _('Downloads social metadata from amazon.com in english') + supported_platforms = ['windows', 'osx', 'linux'] + author = 'Sengian' + version = (1, 0, 0) + has_html_comments = True + + def fetch(self): + try: + self.results = search(self.title, self.book_author, self.publisher, + self.isbn, max_results=10, verbose=self.verbose, lang='us') + except Exception, e: + self.exception = e + self.tb = traceback.format_exc() + class AmazonDe(MetadataSource): name = 'Amazon german' @@ -65,7 +99,7 @@ class Amazon(MetadataSource): def fetch(self): try: self.results = search(self.title, self.book_author, self.publisher, - self.isbn, max_results=10, verbose=self.verbose, lang='en') + self.isbn, max_results=10, verbose=self.verbose, lang='all') except Exception, e: self.exception = e self.tb = traceback.format_exc() @@ -76,56 +110,15 @@ def report(verbose): import traceback traceback.print_exc() -def replace_months(datez, clang): - # Replace months by english equivalent for parse_date - frtoen = { - u'[jJ]anvier': u'jan', - u'[fF].vrier': u'feb', - u'[mM]ars': u'mar', - u'[aA]vril': u'apr', - u'[mM]ai': u'may', - u'[jJ]uin': u'jun', - u'[jJ]uillet': u'jul', - u'[aA]o.t': u'aug', - u'[sS]eptembre': u'sep', - u'[Oo]ctobre': u'oct', - u'[nN]ovembre': u'nov', - u'[dD].cembre': u'dec' } - detoen = { - u'[jJ]anuar': u'jan', - u'[fF]ebruar': u'feb', - u'[mM].rz': u'mar', - u'[aA]pril': u'apr', - u'[mM]ai': u'may', - u'[jJ]uni': u'jun', - u'[jJ]uli': u'jul', - u'[aA]ugust': u'aug', - u'[sS]eptember': u'sep', - u'[Oo]ktober': u'oct', - u'[nN]ovember': u'nov', - u'[dD]ezember': u'dec' } - - if clang == 'fr': - dictoen = frtoen - elif clang == 'de': - dictoen = detoen - else: - return datez - - for k in dictoen.iterkeys(): - tmp = re.sub(k, dictoen[k], datez) - if tmp != datez: break - return tmp - class Query(object): BASE_URL_FR = 'http://www.amazon.fr' - BASE_URL_EN = 'http://www.amazon.com' + BASE_URL_ALL = 'http://www.amazon.com' BASE_URL_DE = 'http://www.amazon.de' def __init__(self, title=None, author=None, publisher=None, isbn=None, keywords=None, - max_results=20, rlang='en'): + max_results=20, rlang='all'): assert not(title is None and author is None and publisher is None \ and isbn is None and keywords is None) assert (max_results < 21) @@ -153,9 +146,17 @@ class Query(object): #many options available } - if rlang =='en': + if rlang =='all': q['sort'] = 'relevanceexprank' - self.urldata = self.BASE_URL_EN + self.urldata = self.BASE_URL_ALL + elif rlang =='es': + q['sort'] = 'relevanceexprank' + q['field-language'] = 'Spanish' + self.urldata = self.BASE_URL_ALL + elif rlang =='us': + q['sort'] = 'relevanceexprank' + q['field-language'] = 'English' + self.urldata = self.BASE_URL_ALL elif rlang =='fr': q['sort'] = 'relevancerank' self.urldata = self.BASE_URL_FR @@ -238,7 +239,7 @@ class Query(object): class ResultList(list): - def __init__(self, baseurl, lang = 'en'): + def __init__(self, baseurl, lang = 'all'): self.baseurl = baseurl self.lang = lang self.repub = re.compile(u'\((.*)\)') @@ -358,7 +359,7 @@ class ResultList(list): d = d.group(1) try: default = utcnow().replace(day=15) - if self.lang != 'en': + if self.lang != 'all': d = replace_months(d, self.lang) d = parse_date(d, assume_utc=True, default=default) mi.pubdate = d @@ -437,7 +438,7 @@ class ResultList(list): def search(title=None, author=None, publisher=None, isbn=None, - max_results=5, verbose=False, keywords=None, lang='en'): + max_results=5, verbose=False, keywords=None, lang='all'): br = browser() entries, baseurl = Query(title=title, author=author, isbn=isbn, publisher=publisher, keywords=keywords, max_results=max_results,rlang=lang)(br, verbose) @@ -458,7 +459,8 @@ def option_parser(): Fetch book metadata from Amazon. You must specify one of title, author, ISBN, publisher or keywords. Will fetch a maximum of 10 matches, so you should make your query as specific as possible. - You can chose the language for metadata retrieval (french & american & german). + You can chose the language for metadata retrieval: + All & US english & french & german & spanish ''' )) parser.add_option('-t', '--title', help='Book title') @@ -468,8 +470,8 @@ def option_parser(): parser.add_option('-k', '--keywords', help='Keywords') parser.add_option('-m', '--max-results', default=10, help='Maximum number of results to fetch') - parser.add_option('-l', '--lang', default='en', - help='Chosen language for metadata search (fr, en , de)') + parser.add_option('-l', '--lang', default='all', + help='Chosen language for metadata search (all, us, fr, es , de)') parser.add_option('-v', '--verbose', default=0, action='count', help='Be more verbose about errors') return parser diff --git a/src/calibre/utils/date.py b/src/calibre/utils/date.py index ec58c49628..1ea8a2c4a0 100644 --- a/src/calibre/utils/date.py +++ b/src/calibre/utils/date.py @@ -151,3 +151,44 @@ def format_date(dt, format, assume_utc=False, as_utc=False): format = re.sub('d{1,4}', format_day, format) format = re.sub('M{1,4}', format_month, format) return re.sub('yyyy|yy', format_year, format) + +def replace_months(datez, clang): + # Replace months by english equivalent for parse_date + frtoen = { + u'[jJ]anvier': u'jan', + u'[fF].vrier': u'feb', + u'[mM]ars': u'mar', + u'[aA]vril': u'apr', + u'[mM]ai': u'may', + u'[jJ]uin': u'jun', + u'[jJ]uillet': u'jul', + u'[aA]o.t': u'aug', + u'[sS]eptembre': u'sep', + u'[Oo]ctobre': u'oct', + u'[nN]ovembre': u'nov', + u'[dD].cembre': u'dec' } + detoen = { + u'[jJ]anuar': u'jan', + u'[fF]ebruar': u'feb', + u'[mM].rz': u'mar', + u'[aA]pril': u'apr', + u'[mM]ai': u'may', + u'[jJ]uni': u'jun', + u'[jJ]uli': u'jul', + u'[aA]ugust': u'aug', + u'[sS]eptember': u'sep', + u'[Oo]ktober': u'oct', + u'[nN]ovember': u'nov', + u'[dD]ezember': u'dec' } + + if clang == 'fr': + dictoen = frtoen + elif clang == 'de': + dictoen = detoen + else: + return datez + + for k in dictoen.iterkeys(): + tmp = re.sub(k, dictoen[k], datez) + if tmp != datez: break + return tmp From 56e38290df6125f34ae8f6a18ae75b4bf7e7724e Mon Sep 17 00:00:00 2001 From: Hiroshi Miura <miurahr@linux.com> Date: Sun, 28 Nov 2010 23:41:46 +0900 Subject: [PATCH 205/377] recipes: fix minor bugs, add yomiuri news - remove wrong #!(hash-bang) - add yomiuri online news --- resources/recipes/endgadget_ja.recipe | 2 - resources/recipes/jijinews.recipe | 2 - resources/recipes/mainichi.recipe | 2 - resources/recipes/nikkei_free.recipe | 6 +- resources/recipes/nikkei_sub.recipe | 6 +- resources/recipes/nikkei_sub_economy.recipe | 2 - resources/recipes/nikkei_sub_industry.recipe | 1 - resources/recipes/nikkei_sub_life.recipe | 2 - resources/recipes/nikkei_sub_main.recipe | 2 - resources/recipes/nikkei_sub_sports.recipe | 1 - resources/recipes/yomiuri.recipe | 66 ++++++++++++++++++++ 11 files changed, 71 insertions(+), 21 deletions(-) create mode 100644 resources/recipes/yomiuri.recipe diff --git a/resources/recipes/endgadget_ja.recipe b/resources/recipes/endgadget_ja.recipe index 443a85905d..891e6720a5 100644 --- a/resources/recipes/endgadget_ja.recipe +++ b/resources/recipes/endgadget_ja.recipe @@ -1,5 +1,3 @@ -#!/usr/bin/env python - __license__ = 'GPL v3' __copyright__ = '2010, Hiroshi Miura <miurahr@linux.com>' ''' diff --git a/resources/recipes/jijinews.recipe b/resources/recipes/jijinews.recipe index fe52e76aaf..4f768ce7ee 100644 --- a/resources/recipes/jijinews.recipe +++ b/resources/recipes/jijinews.recipe @@ -1,5 +1,3 @@ -#!/usr/bin/env python - __license__ = 'GPL v3' __copyright__ = '2010, Hiroshi Miura <miurahr@linux.com>' ''' diff --git a/resources/recipes/mainichi.recipe b/resources/recipes/mainichi.recipe index 47dc7d0ebc..2a44fa0980 100644 --- a/resources/recipes/mainichi.recipe +++ b/resources/recipes/mainichi.recipe @@ -1,5 +1,3 @@ -#!/usr/bin/env python - __license__ = 'GPL v3' __copyright__ = '2010, Hiroshi Miura <miurahr@linux.com>' ''' diff --git a/resources/recipes/nikkei_free.recipe b/resources/recipes/nikkei_free.recipe index d84aaa279b..adc596104b 100644 --- a/resources/recipes/nikkei_free.recipe +++ b/resources/recipes/nikkei_free.recipe @@ -1,5 +1,3 @@ -#!/usr/bin/env python - __license__ = 'GPL v3' __copyright__ = '2010, Hiroshi Miura <miurahr@linux.com>' ''' @@ -9,9 +7,9 @@ www.nikkei.com from calibre.web.feeds.news import BasicNewsRecipe class NikkeiNet(BasicNewsRecipe): - title = u'\u65e5\u7d4c\u65b0\u805e\u96fb\u5b50\u7248(Free)' + title = u'\u65e5\u7d4c\u65b0\u805e\u96fb\u5b50\u7248(Free, MAX)' __author__ = 'Hiroshi Miura' - description = 'News and current market affairs from Japan' + description = 'News and current market affairs from Japan, no subscription and getting max feed.' cover_url = 'http://parts.nikkei.com/parts/ds/images/common/logo_r1.svg' masthead_url = 'http://parts.nikkei.com/parts/ds/images/common/logo_r1.svg' oldest_article = 2 diff --git a/resources/recipes/nikkei_sub.recipe b/resources/recipes/nikkei_sub.recipe index 95b0017339..18f324009a 100644 --- a/resources/recipes/nikkei_sub.recipe +++ b/resources/recipes/nikkei_sub.recipe @@ -5,12 +5,12 @@ from calibre.ptempfile import PersistentTemporaryFile class NikkeiNet_subscription(BasicNewsRecipe): - title = u'\u65e5\u7d4c\u65b0\u805e\u96fb\u5b50\u7248' + title = u'\u65e5\u7d4c\u65b0\u805e\u96fb\u5b50\u7248(MAX)' __author__ = 'Hiroshi Miura' - description = 'News and current market affairs from Japan' + description = 'News and current market affairs from Japan, gather MAX articles' needs_subscription = True oldest_article = 2 - max_articles_per_feed = 20 + max_articles_per_feed = 10 language = 'ja' remove_javascript = False temp_files = [] diff --git a/resources/recipes/nikkei_sub_economy.recipe b/resources/recipes/nikkei_sub_economy.recipe index d762f505d1..2dd8f1add8 100644 --- a/resources/recipes/nikkei_sub_economy.recipe +++ b/resources/recipes/nikkei_sub_economy.recipe @@ -1,5 +1,3 @@ -#!/usr/bin/env python - __license__ = 'GPL v3' __copyright__ = '2010, Hiroshi Miura <miurahr@linux.com>' ''' diff --git a/resources/recipes/nikkei_sub_industry.recipe b/resources/recipes/nikkei_sub_industry.recipe index da04bbb5f3..81e86767d0 100644 --- a/resources/recipes/nikkei_sub_industry.recipe +++ b/resources/recipes/nikkei_sub_industry.recipe @@ -1,4 +1,3 @@ -#!/usr/bin/env python __license__ = 'GPL v3' __copyright__ = '2010, Hiroshi Miura <miurahr@linux.com>' diff --git a/resources/recipes/nikkei_sub_life.recipe b/resources/recipes/nikkei_sub_life.recipe index 2da5b13834..1bfa08a55f 100644 --- a/resources/recipes/nikkei_sub_life.recipe +++ b/resources/recipes/nikkei_sub_life.recipe @@ -1,5 +1,3 @@ -#!/usr/bin/env python - __license__ = 'GPL v3' __copyright__ = '2010, Hiroshi Miura <miurahr@linux.com>' ''' diff --git a/resources/recipes/nikkei_sub_main.recipe b/resources/recipes/nikkei_sub_main.recipe index 37fc8964c4..485d2f32c0 100644 --- a/resources/recipes/nikkei_sub_main.recipe +++ b/resources/recipes/nikkei_sub_main.recipe @@ -1,5 +1,3 @@ -#!/usr/bin/env python - __license__ = 'GPL v3' __copyright__ = '2010, Hiroshi Miura <miurahr@linux.com>' ''' diff --git a/resources/recipes/nikkei_sub_sports.recipe b/resources/recipes/nikkei_sub_sports.recipe index 6e5a1c6bb2..644b0aa252 100644 --- a/resources/recipes/nikkei_sub_sports.recipe +++ b/resources/recipes/nikkei_sub_sports.recipe @@ -1,4 +1,3 @@ -#!/usr/bin/env python __license__ = 'GPL v3' __copyright__ = '2010, Hiroshi Miura <miurahr@linux.com>' diff --git a/resources/recipes/yomiuri.recipe b/resources/recipes/yomiuri.recipe new file mode 100644 index 0000000000..6335b99e32 --- /dev/null +++ b/resources/recipes/yomiuri.recipe @@ -0,0 +1,66 @@ +__license__ = 'GPL v3' +__copyright__ = '2010, Hiroshi Miura <miurahr@linux.com>' +''' +www.yomiuri.co.jp +''' + +from calibre.web.feeds.news import BasicNewsRecipe +import re + +class YOLNews(BasicNewsRecipe): + title = u'YOMIURI ONLINE' + __author__ = 'Hiroshi Miura' + oldest_article = 1 + max_articles_per_feed = 50 + description = 'Japanese traditional newspaper Yomiuri Online News' + publisher = 'Yomiuri Online News' + category = 'news, japan' + language = 'ja' + encoding = 'Shift_JIS' + index = 'http://www.yomiuri.co.jp/latestnews/' + remove_javascript = True + + remove_tags_before = {'class':"article-def"} + remove_tags = [{'class':"RelatedArticle"}, + {'class:"sbtns"} + ] + remove_tags_after = {'class':"date-def"} + + def parse_feeds(self): + + feeds = BasicNewsRecipe.parse_feeds(self) + + for curfeed in feeds: + delList = [] + for a,curarticle in enumerate(curfeed.articles): + if re.search(r'rssad.jp', curarticle.url): + delList.append(curarticle) + if len(delList)>0: + for d in delList: + index = curfeed.articles.index(d) + curfeed.articles[index:index+1] = [] + + return feeds + + def parse_index(self): + feeds = [] + soup = self.index_to_soup(self.index) + topstories = soup.find('ul',attrs={'class':'list-def'}) + if topstories: + newsarticles = [] + for itt in topstories.findAll('li'): + itema = itt.find('a',href=True) + if itema: + itd1 = itema.findNextSibling(text = True) + itd2 = itd1.findNextSibling(text = True) + itd3 = itd2.findNextSibling(text = True) + newsarticles.append({ + 'title' :itema.string + ,'date' :''.join([itd1, itd2, itd3]) + ,'url' :'http://www.yomiuri.co.jp' + itema['href'] + ,'description':'' + }) + feeds.append(('News', newsarticles)) + + return feeds + From 2b2a8a1edcc789010e928ae29b3d079d79de3ec6 Mon Sep 17 00:00:00 2001 From: Hiroshi Miura <miurahr@linux.com> Date: Sun, 28 Nov 2010 23:43:35 +0900 Subject: [PATCH 206/377] recipes: fix typo --- resources/recipes/yomiuri.recipe | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/recipes/yomiuri.recipe b/resources/recipes/yomiuri.recipe index 6335b99e32..39a085bf83 100644 --- a/resources/recipes/yomiuri.recipe +++ b/resources/recipes/yomiuri.recipe @@ -22,7 +22,7 @@ class YOLNews(BasicNewsRecipe): remove_tags_before = {'class':"article-def"} remove_tags = [{'class':"RelatedArticle"}, - {'class:"sbtns"} + {'class':"sbtns"} ] remove_tags_after = {'class':"date-def"} From 5f5c41e495a50a30bb7cec0055decb0eb1156305 Mon Sep 17 00:00:00 2001 From: Hiroshi Miura <miurahr@linux.com> Date: Sun, 28 Nov 2010 23:53:46 +0900 Subject: [PATCH 207/377] recipes: add icons and yomiuri online variant --- resources/images/news/cnetjapan_digital.png | Bin 0 -> 892 bytes resources/images/news/cnetjapan_release.png | Bin 0 -> 892 bytes resources/images/news/yomiuri.png | Bin 0 -> 660 bytes resources/recipes/yomiuri.recipe | 9 +-- resources/recipes/yomiuri_world.recipe | 63 ++++++++++++++++++++ 5 files changed, 66 insertions(+), 6 deletions(-) create mode 100644 resources/images/news/cnetjapan_digital.png create mode 100644 resources/images/news/cnetjapan_release.png create mode 100644 resources/images/news/yomiuri.png create mode 100644 resources/recipes/yomiuri_world.recipe diff --git a/resources/images/news/cnetjapan_digital.png b/resources/images/news/cnetjapan_digital.png new file mode 100644 index 0000000000000000000000000000000000000000..9a0dcc8f7fa7645db5f97ef0b5e2978133e05732 GIT binary patch literal 892 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zK-vS0-A-oPfdtD69Mgd`SU*F|v9*U87?_rNx;TbdoKBs5HhW6A$g%qG_pTQj9XoPS zgUd~N@st@t=De*<J61@C=Y_Zkv|JKnSsAd9B}R1Dr6BQlSt2Y8176GzSj%|u(V`2j z3m%JW)g4KBHh1Rt*ZaQTyL@!D;$^$p#c~$UZP@1(i~MhVGk2asvHQtCj-Ge*-tXCT z%ieFw|HbR?=I?&A^xCT`(+huIp83vE%p$4!*<*i8p65%MmETHyZ)Rs#7kb{7-yd=6 z?<t0vcb9j5vEeQ5GG$xSe#9|nVwvNMNTateUrtKRt<3I<uRb;3=Fhs4U6a!K+)BDW z<{H?t-afV<aY5dKGzaZ18e1}a1h#M=m;J=tz!!XZvcmIDk(@g$*6Im|*)Cj7G2~)> zacN=G@pZC`V(gs?9`1fEy;#%tp}*Ix>$`Wk&56!=&G>S*>#pqU6K6<iX`k4me9zKv z;`5%<2JG|oCmDxqcHDQ+eEa>%ir>>}4qV!Kd6U%X$;Qn!IYp}f_bzlv?~~pAUA{rt zJu!*>^=(atyg!Ri&9Y#8@Nc6qb6I?^7PF}Y?}fTwQok29zZPMbvi?zH+gkJgi}qH2 z=kl)+EuDBoKbpJ#(w^-OYu{YzZCk}#v*OXdy$mMe(Li*^OP;yFZHd*A^ux3DuN0N9 z+n3H?wZgID6OW<PbhR6$rCn>>?VH@oX5I){wfOzj_lxQS|M!^K8!q~{E;65oOVqVR zpkU&$wn<kwYGq`n3rZ_qZHs&P(!y!gm2|Fz#F8J+Icm)&@t3Pk;b`Sra_VyUynPi$ zjV2D)xi?PNp3ePKi|K`i`SXX#Yb}-pu&}fT2%Hcs68yvv*)UIhmt$Vk!#4+v?`Eu9 zxm>7D=tq<S7ZcwGCNl@A78QX>3fJd+cw3`+^8Y@;2bVf#Zap-8>51olH<DPVvfq2A zRL=eIm8f=k*!BP1HmfF|O-@zb4NSeNC9V-ADTyViR>?)FK#IZ0z`#=1&`8(FG{nf* z$^?ikbPdd{3=Fup)uf?l$jwj5OshoGU~FM!XaLc0!9Hs(Py>UftDnm{r-UW|`oMrT literal 0 HcmV?d00001 diff --git a/resources/images/news/cnetjapan_release.png b/resources/images/news/cnetjapan_release.png new file mode 100644 index 0000000000000000000000000000000000000000..9a0dcc8f7fa7645db5f97ef0b5e2978133e05732 GIT binary patch literal 892 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zK-vS0-A-oPfdtD69Mgd`SU*F|v9*U87?_rNx;TbdoKBs5HhW6A$g%qG_pTQj9XoPS zgUd~N@st@t=De*<J61@C=Y_Zkv|JKnSsAd9B}R1Dr6BQlSt2Y8176GzSj%|u(V`2j z3m%JW)g4KBHh1Rt*ZaQTyL@!D;$^$p#c~$UZP@1(i~MhVGk2asvHQtCj-Ge*-tXCT z%ieFw|HbR?=I?&A^xCT`(+huIp83vE%p$4!*<*i8p65%MmETHyZ)Rs#7kb{7-yd=6 z?<t0vcb9j5vEeQ5GG$xSe#9|nVwvNMNTateUrtKRt<3I<uRb;3=Fhs4U6a!K+)BDW z<{H?t-afV<aY5dKGzaZ18e1}a1h#M=m;J=tz!!XZvcmIDk(@g$*6Im|*)Cj7G2~)> zacN=G@pZC`V(gs?9`1fEy;#%tp}*Ix>$`Wk&56!=&G>S*>#pqU6K6<iX`k4me9zKv z;`5%<2JG|oCmDxqcHDQ+eEa>%ir>>}4qV!Kd6U%X$;Qn!IYp}f_bzlv?~~pAUA{rt zJu!*>^=(atyg!Ri&9Y#8@Nc6qb6I?^7PF}Y?}fTwQok29zZPMbvi?zH+gkJgi}qH2 z=kl)+EuDBoKbpJ#(w^-OYu{YzZCk}#v*OXdy$mMe(Li*^OP;yFZHd*A^ux3DuN0N9 z+n3H?wZgID6OW<PbhR6$rCn>>?VH@oX5I){wfOzj_lxQS|M!^K8!q~{E;65oOVqVR zpkU&$wn<kwYGq`n3rZ_qZHs&P(!y!gm2|Fz#F8J+Icm)&@t3Pk;b`Sra_VyUynPi$ zjV2D)xi?PNp3ePKi|K`i`SXX#Yb}-pu&}fT2%Hcs68yvv*)UIhmt$Vk!#4+v?`Eu9 zxm>7D=tq<S7ZcwGCNl@A78QX>3fJd+cw3`+^8Y@;2bVf#Zap-8>51olH<DPVvfq2A zRL=eIm8f=k*!BP1HmfF|O-@zb4NSeNC9V-ADTyViR>?)FK#IZ0z`#=1&`8(FG{nf* z$^?ikbPdd{3=Fup)uf?l$jwj5OshoGU~FM!XaLc0!9Hs(Py>UftDnm{r-UW|`oMrT literal 0 HcmV?d00001 diff --git a/resources/images/news/yomiuri.png b/resources/images/news/yomiuri.png new file mode 100644 index 0000000000000000000000000000000000000000..4a197f888f076f9801d3fd8cfd3fb2479af6520a GIT binary patch literal 660 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI zAngIhZYQ(tK!Rljj_E*J0gT&!&6&%<z_{1b#W5t}@Z0d+d50VX<{0NG1tyhqWc}c{ zvuyk88m>QHS-aIkQ~omtsC%VrC@<Y)&MH&BkG;-qNrKjfobzwqyqR~VLH1!^!8^}? z0v`lE=(Fs|tU8pnbyr+M&id6owIU14KhN7XBe(hU?grVDEZe3F>l%9XX)LZ0NMiU= z<9D8k!J*7a)N#w3*qy?^XY`4OC-F`H&(Xx$apdftAoXw6lRvN8zmI=bvrpX7Wnnkg zJU_$`aeL9N+$Qb+nu}!=-g|v`Cu_oVua9emR+O4qXm05N7p3t0(@k&g{PFeaUi&JF zaa-7o6IatW={O7cWOerHzF@Mvd*Gvy=UL|49t`|<G%Ul`t=?;9d1C(Nrwb-CUtLwX z-nHSW!FApBVN6{Y4%cXRycW90(#vu}G&A&jOPSQFzsgaEI%`uR*%&Hny?P!`U8c_P z)_mDB2g#=i0@)Q-aS2vzadi#--lsZOx%`m{biU=u&_1Ui&+@R`Y~QA@RcmvPtV?e# z6kPd4CfDgW>$X`;rF%ly+c@T)33b~kkg$5!NxSz>aV>HZdQ3h~YCE1T-o;^?+rqdp z^k$Cr%9IECTKibVCDIm`vR2p3xfgvv|Nr)PSK9A})dOQxwZt`|BqgyV)hf9t6-Y4{ z85kPq8XD>vS%erFTbY;uk+y-Qm4QLK$Jd1@8glbfGSe!tXfT9mSfZP>3#fs?)78&q Iol`;+00UkKJpcdz literal 0 HcmV?d00001 diff --git a/resources/recipes/yomiuri.recipe b/resources/recipes/yomiuri.recipe index 39a085bf83..b3df1b58aa 100644 --- a/resources/recipes/yomiuri.recipe +++ b/resources/recipes/yomiuri.recipe @@ -8,7 +8,7 @@ from calibre.web.feeds.news import BasicNewsRecipe import re class YOLNews(BasicNewsRecipe): - title = u'YOMIURI ONLINE' + title = u'YOMIURI ONLINE(Latest)' __author__ = 'Hiroshi Miura' oldest_article = 1 max_articles_per_feed = 50 @@ -19,6 +19,7 @@ class YOLNews(BasicNewsRecipe): encoding = 'Shift_JIS' index = 'http://www.yomiuri.co.jp/latestnews/' remove_javascript = True + masthead_title = u'YOMIURI ONLINE' remove_tags_before = {'class':"article-def"} remove_tags = [{'class':"RelatedArticle"}, @@ -27,9 +28,7 @@ class YOLNews(BasicNewsRecipe): remove_tags_after = {'class':"date-def"} def parse_feeds(self): - feeds = BasicNewsRecipe.parse_feeds(self) - for curfeed in feeds: delList = [] for a,curarticle in enumerate(curfeed.articles): @@ -39,7 +38,6 @@ class YOLNews(BasicNewsRecipe): for d in delList: index = curfeed.articles.index(d) curfeed.articles[index:index+1] = [] - return feeds def parse_index(self): @@ -60,7 +58,6 @@ class YOLNews(BasicNewsRecipe): ,'url' :'http://www.yomiuri.co.jp' + itema['href'] ,'description':'' }) - feeds.append(('News', newsarticles)) - + feeds.append(('latest', newsarticles)) return feeds diff --git a/resources/recipes/yomiuri_world.recipe b/resources/recipes/yomiuri_world.recipe new file mode 100644 index 0000000000..0146ffa330 --- /dev/null +++ b/resources/recipes/yomiuri_world.recipe @@ -0,0 +1,63 @@ +__license__ = 'GPL v3' +__copyright__ = '2010, Hiroshi Miura <miurahr@linux.com>' +''' +www.yomiuri.co.jp +''' + +from calibre.web.feeds.news import BasicNewsRecipe +import re + +class YOLNews(BasicNewsRecipe): + title = u'YOMIURI ONLINE(World)' + __author__ = 'Hiroshi Miura' + oldest_article = 2 + max_articles_per_feed = 50 + description = 'Japanese traditional newspaper Yomiuri Online News/world news' + publisher = 'Yomiuri Online News' + category = 'news, japan' + language = 'ja' + encoding = 'Shift_JIS' + index = 'http://www.yomiuri.co.jp/world/' + remove_javascript = True + masthead_title = u"YOMIURI ONLINE" + + remove_tags_before = {'class':"article-def"} + remove_tags = [{'class':"RelatedArticle"}, + {'class':"sbtns"} + ] + remove_tags_after = {'class':"date-def"} + + def parse_feeds(self): + feeds = BasicNewsRecipe.parse_feeds(self) + for curfeed in feeds: + delList = [] + for a,curarticle in enumerate(curfeed.articles): + if re.search(r'rssad.jp', curarticle.url): + delList.append(curarticle) + if len(delList)>0: + for d in delList: + index = curfeed.articles.index(d) + curfeed.articles[index:index+1] = [] + return feeds + + def parse_index(self): + feeds = [] + soup = self.index_to_soup(self.index) + topstories = soup.find('ul',attrs={'class':'list-def'}) + if topstories: + newsarticles = [] + for itt in topstories.findAll('li'): + itema = itt.find('a',href=True) + if itema: + itd1 = itema.findNextSibling(text = True) + itd2 = itd1.findNextSibling(text = True) + itd3 = itd2.findNextSibling(text = True) + newsarticles.append({ + 'title' :itema.string + ,'date' :''.join([itd1, itd2, itd3]) + ,'url' :'http://www.yomiuri.co.jp' + itema['href'] + ,'description':'' + }) + feeds.append(('World', newsarticles)) + return feeds + From 21969e157cf02059bcab8a35849321d720007602 Mon Sep 17 00:00:00 2001 From: Hiroshi Miura <miurahr@linux.com> Date: Sun, 28 Nov 2010 23:58:20 +0900 Subject: [PATCH 208/377] recipe: yomiuri_world: fix for fetching date field --- resources/recipes/yomiuri_world.recipe | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/resources/recipes/yomiuri_world.recipe b/resources/recipes/yomiuri_world.recipe index 0146ffa330..eae5a2a40a 100644 --- a/resources/recipes/yomiuri_world.recipe +++ b/resources/recipes/yomiuri_world.recipe @@ -50,11 +50,9 @@ class YOLNews(BasicNewsRecipe): itema = itt.find('a',href=True) if itema: itd1 = itema.findNextSibling(text = True) - itd2 = itd1.findNextSibling(text = True) - itd3 = itd2.findNextSibling(text = True) newsarticles.append({ 'title' :itema.string - ,'date' :''.join([itd1, itd2, itd3]) + ,'date' :''.join([itd1]) ,'url' :'http://www.yomiuri.co.jp' + itema['href'] ,'description':'' }) From af98ebf24decbf35966eb3c0f69da418f4acb824 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Sun, 28 Nov 2010 12:36:33 -0700 Subject: [PATCH 209/377] Animal Politico by leamsi --- resources/recipes/animal_politico.recipe | 111 +++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 resources/recipes/animal_politico.recipe diff --git a/resources/recipes/animal_politico.recipe b/resources/recipes/animal_politico.recipe new file mode 100644 index 0000000000..f48587ea94 --- /dev/null +++ b/resources/recipes/animal_politico.recipe @@ -0,0 +1,111 @@ +#!/usr/bin/python +# encoding: utf-8 + +from calibre.web.feeds.news import BasicNewsRecipe + +class AdvancedUserRecipe1290663986(BasicNewsRecipe): + title = u'Animal Pol\u00EDtico' + publisher = u'Animal Pol\u00EDtico' + category = u'News, Mexico' + description = u'Noticias Pol\u00EDticas' + __author__ = 'leamsi' + masthead_url = 'http://www.animalpolitico.com/wp-content/themes/animal_mu/images/logo.png' + oldest_article = 1 + max_articles_per_feed = 100 + language = 'es' + + #feeds = [(u'Animal Politico', u'http://www.animalpolitico.com/feed/')] + + remove_tags_before = dict(name='div', id='main') + remove_tags = [dict(name='div', attrs={'class':'fb-like-button'})] + keep_only_tags = [dict(name='h1', attrs={'class':'entry-title'}), + dict(name='div', attrs={'class':'entry-content'})] + remove_javascript = True + INDEX = 'http://www.animalpolitico.com/' + + def generic_parse(self, soup): + articles = [] + for entry in soup.findAll(lambda tag: tag.name == 'li' and tag.has_key('class') and tag['class'].find('hentry') != -1): #soup.findAll('li', 'hentry'): + article_url = entry.a['href'] + '?print=yes' + article_title= entry.find('h3', 'entry-title') + article_title= self.tag_to_string(article_title) + article_date = entry.find('span', 'the-time') + article_date = self.tag_to_string(article_date) + article_desc = self.tag_to_string(entry.find('p')) + + #print 'Article:',article_title, article_date,article_url + #print entry['class'] + + articles.append({'title' : article_title, + 'date' : article_date, + 'description' : article_desc, + 'url' : article_url}) + # Avoid including the multimedia stuff. + if entry['class'].find('last') != -1: + break + + return articles + + def plumaje_parse(self, soup): + articles = [] + blogs_soup = soup.find(lambda tag: tag.name == 'ul' and tag.has_key('class') and tag['class'].find('bloglist-fecha') != -1) + for entry in blogs_soup.findAll('li'): + article_title = entry.p + article_url = article_title.a['href'] + '?print=yes' + article_date = article_title.nextSibling + article_title = self.tag_to_string(article_title) + article_date = self.tag_to_string(article_date).replace(u'Last Updated: ', '') + article_desc = self.tag_to_string(entry.find('h4')) + + #print 'Article:',article_title, article_date,article_url + articles.append({'title' : article_title, + 'date' : article_date, + 'description' : article_desc, + 'url' : article_url}) + + return articles + + def boca_parse(self, soup): + articles = [] + for entry in soup.findAll(lambda tag: tag.name == 'div' and tag.has_key('class') and tag['class'].find('hentry') != -1): #soup.findAll('li', 'hentry'): + article_title= entry.find('h2', 'entry-title') + article_url = article_title.a['href'] + '?print=yes' + article_title= self.tag_to_string(article_title) + article_date = entry.find('span', 'entry-date') + article_date = self.tag_to_string(article_date) + article_desc = self.tag_to_string(entry.find('div', 'entry-content')) + + #print 'Article:',article_title, article_date,article_url + #print entry['class'] + + articles.append({'title' : article_title, + 'date' : article_date, + 'description' : article_desc, + 'url' : article_url}) + # Avoid including the multimedia stuff. + if entry['class'].find('last') != -1: + break + + return articles + + + + + def parse_index(self): + gobierno_soup = self.index_to_soup(self.INDEX+'gobierno/') + congreso_soup = self.index_to_soup(self.INDEX+'congreso/') + seguridad_soup = self.index_to_soup(self.INDEX+'seguridad/') + comunidad_soup = self.index_to_soup(self.INDEX+'comunidad/') + plumaje_soup = self.index_to_soup(self.INDEX+'plumaje/') + la_boca_del_lobo_soup = self.index_to_soup(self.INDEX+'category/la-boca-del-lobo/') + + gobierno_articles = self.generic_parse(gobierno_soup) + congreso_articles = self.generic_parse(congreso_soup) + seguridad_articles = self.generic_parse(seguridad_soup) + comunidad_articles = self.generic_parse(comunidad_soup) + plumaje_articles = self.plumaje_parse(plumaje_soup) + la_boca_del_lobo_articles = self.boca_parse(la_boca_del_lobo_soup) + + + return [ (u'Gobierno', gobierno_articles), (u'Congreso', congreso_articles), (u'Seguridad', seguridad_articles), + (u'Comunidad', comunidad_articles), (u'Plumaje', plumaje_articles), (u'La Boca del Lobo', la_boca_del_lobo_articles), ] From f6d70a1cd27bda0270b6b99e346eb0723bed999c Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Sun, 28 Nov 2010 14:54:36 -0700 Subject: [PATCH 210/377] Nook Color profile: Reduce screen height to 900px --- src/calibre/customize/profiles.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/calibre/customize/profiles.py b/src/calibre/customize/profiles.py index 2318c6724e..74a79689d9 100644 --- a/src/calibre/customize/profiles.py +++ b/src/calibre/customize/profiles.py @@ -683,8 +683,8 @@ class NookColorOutput(NookOutput): short_name = 'nook_color' description = _('This profile is intended for the B&N Nook Color.') - screen_size = (600, 980) - comic_screen_size = (584, 980) + screen_size = (600, 900) + comic_screen_size = (584, 900) dpi = 169 class BambookOutput(OutputProfile): From 8af48a9d0678c533b98158877a912422460d68f5 Mon Sep 17 00:00:00 2001 From: Sengian <sengian1@gmail.com> Date: Sun, 28 Nov 2010 23:07:33 +0100 Subject: [PATCH 211/377] Various fix in amazon metadata, add german site for german users Add a clean ascii trial: this should be corrected everytime soupparser is used from lxml.html due to problems with xml_to_unicode output --- src/calibre/ebooks/metadata/amazonfr.py | 56 ++++++++++++++++--------- src/calibre/utils/cleantext.py | 15 +++++++ 2 files changed, 52 insertions(+), 19 deletions(-) create mode 100644 src/calibre/utils/cleantext.py diff --git a/src/calibre/ebooks/metadata/amazonfr.py b/src/calibre/ebooks/metadata/amazonfr.py index a77ea16d9c..5df962d8f5 100644 --- a/src/calibre/ebooks/metadata/amazonfr.py +++ b/src/calibre/ebooks/metadata/amazonfr.py @@ -10,6 +10,7 @@ from lxml import html from lxml.html import soupparser from calibre.utils.date import parse_date, utcnow, replace_months +from calibre.utils.cleantext import clean_ascii_char from calibre import browser, preferred_encoding from calibre.ebooks.chardet import xml_to_unicode from calibre.ebooks.metadata import MetaInformation, check_isbn, \ @@ -53,9 +54,9 @@ class AmazonEs(MetadataSource): self.exception = e self.tb = traceback.format_exc() -class AmazonUS(MetadataSource): +class AmazonEn(MetadataSource): - name = 'Amazon US english' + name = 'Amazon english' description = _('Downloads social metadata from amazon.com in english') supported_platforms = ['windows', 'osx', 'linux'] author = 'Sengian' @@ -65,7 +66,7 @@ class AmazonUS(MetadataSource): def fetch(self): try: self.results = search(self.title, self.book_author, self.publisher, - self.isbn, max_results=10, verbose=self.verbose, lang='us') + self.isbn, max_results=10, verbose=self.verbose, lang='en') except Exception, e: self.exception = e self.tb = traceback.format_exc() @@ -97,24 +98,29 @@ class Amazon(MetadataSource): has_html_comments = True def fetch(self): + # if not self.site_customization: + # return try: self.results = search(self.title, self.book_author, self.publisher, self.isbn, max_results=10, verbose=self.verbose, lang='all') except Exception, e: self.exception = e self.tb = traceback.format_exc() + + # @property + # def string_customization_help(self): + # return _('You can select here the language for metadata search with amazon.com') def report(verbose): if verbose: - import traceback traceback.print_exc() class Query(object): - BASE_URL_FR = 'http://www.amazon.fr' BASE_URL_ALL = 'http://www.amazon.com' + BASE_URL_FR = 'http://www.amazon.fr' BASE_URL_DE = 'http://www.amazon.de' def __init__(self, title=None, author=None, publisher=None, isbn=None, keywords=None, @@ -153,7 +159,7 @@ class Query(object): q['sort'] = 'relevanceexprank' q['field-language'] = 'Spanish' self.urldata = self.BASE_URL_ALL - elif rlang =='us': + elif rlang =='en': q['sort'] = 'relevanceexprank' q['field-language'] = 'English' self.urldata = self.BASE_URL_ALL @@ -197,24 +203,25 @@ class Query(object): return raw = xml_to_unicode(raw, strip_encoding_pats=True, resolve_entities=True)[0] + try: feed = soupparser.fromstring(raw) except: - return None, self.urldata + try: + #remove ASCII invalid chars + return soupparser.fromstring(clean_ascii_char(raw)) + except: + return None, self.urldata #nb of page try: nbresults = self.renbres.findall(feed.xpath("//*[@class='resultCount']")[0].text) - rpp = 0 - if len(nbresults) > 1: - rpp = int(nbresults[1]) - nbresults = int(nbresults[2]) except: return None, self.urldata pages =[feed] - if rpp: - nbpagetoquery = int(ceil(float(min(nbresults, self.max_results))/ rpp)) + if len(nbresults) > 1: + nbpagetoquery = int(ceil(float(min(int(nbresults[2]), self.max_results))/ int(nbresults[1]))) for i in xrange(2, nbpagetoquery + 1): try: urldata = self.urldata + '&page=' + str(i) @@ -228,7 +235,11 @@ class Query(object): try: feed = soupparser.fromstring(raw) except: - continue + try: + #remove ASCII invalid chars + return soupparser.fromstring(clean_ascii_char(raw)) + except: + continue pages.append(feed) results = [] @@ -416,7 +427,12 @@ class ResultList(list): try: return soupparser.fromstring(raw) except: - return + try: + #remove ASCII invalid chars + return soupparser.fromstring(clean_ascii_char(raw)) + except: + report(verbose) + return def populate(self, entries, browser, verbose=False): for x in entries: @@ -433,6 +449,8 @@ class ResultList(list): if verbose: print 'Failed to get all details for an entry' print e + print 'URL who failed:', x + report(verbose) continue self.append(self.fill_MI(entry, title, authors, browser, verbose)) @@ -453,16 +471,16 @@ def search(title=None, author=None, publisher=None, isbn=None, def option_parser(): parser = OptionParser(textwrap.dedent(\ - '''\ + _('''\ %prog [options] Fetch book metadata from Amazon. You must specify one of title, author, ISBN, publisher or keywords. Will fetch a maximum of 10 matches, so you should make your query as specific as possible. You can chose the language for metadata retrieval: - All & US english & french & german & spanish + All & english & french & german & spanish ''' - )) + ))) parser.add_option('-t', '--title', help='Book title') parser.add_option('-a', '--author', help='Book author(s)') parser.add_option('-p', '--publisher', help='Book publisher') @@ -471,7 +489,7 @@ def option_parser(): parser.add_option('-m', '--max-results', default=10, help='Maximum number of results to fetch') parser.add_option('-l', '--lang', default='all', - help='Chosen language for metadata search (all, us, fr, es , de)') + help='Chosen language for metadata search (all, en, fr, es, de)') parser.add_option('-v', '--verbose', default=0, action='count', help='Be more verbose about errors') return parser diff --git a/src/calibre/utils/cleantext.py b/src/calibre/utils/cleantext.py new file mode 100644 index 0000000000..6655129c15 --- /dev/null +++ b/src/calibre/utils/cleantext.py @@ -0,0 +1,15 @@ +from __future__ import with_statement +__license__ = 'GPL 3' +__copyright__ = '2010, sengian <sengian1@gmail.com>' +__docformat__ = 'restructuredtext en' + +import re + +def clean_ascii_char(txt, charlist = None): + #remove ASCII invalid chars : 0 to 8 and 11-14 to 24-26-27 by default + chars = list(range(8)) + [0x0B, 0x0E, 0x0F] + list(range(0x10, 0x19)) \ + + [0x1A, 0x1B] + if charlist is not None: + chars = charlist + illegal_chars = re.compile(u'|'.join(map(unichr, chars))) + return illegal_chars.sub('', txt) \ No newline at end of file From ddbd7449b539277a1401a7d13a44006b8c332fcb Mon Sep 17 00:00:00 2001 From: Timothy Legge <timlegge@gmail.com> Date: Sun, 28 Nov 2010 21:10:51 -0400 Subject: [PATCH 212/377] Change the method used to determine the firmware revision --- src/calibre/devices/kobo/driver.py | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/calibre/devices/kobo/driver.py b/src/calibre/devices/kobo/driver.py index 174441c276..0eddf26549 100644 --- a/src/calibre/devices/kobo/driver.py +++ b/src/calibre/devices/kobo/driver.py @@ -25,6 +25,8 @@ class KOBO(USBMS): version = (1, 0, 7) dbversion = 0 + fwversion = 0 + has_kepubs = False supported_platforms = ['windows', 'osx', 'linux'] @@ -75,6 +77,14 @@ class KOBO(USBMS): self._card_b_prefix if oncard == 'cardb' \ else self._main_prefix + # Determine the firmware version + f = open(self.normalize_path(self._main_prefix + '.kobo/version'), 'r') + fwversion = f.readline().split(',')[2] + f.close() + if fwversion != '1.0' and fwversion != '1.4': + self.has_kepubs = True + debug_print('Version of firmware: ', fwversion, 'Has kepubs:', self.has_kepubs) + self.booklist_class.rebuild_collections = self.rebuild_collections # get the metadata cache @@ -114,7 +124,7 @@ class KOBO(USBMS): #print "Image name Normalized: " + imagename if imagename is not None: bl[idx].thumbnail = ImageWrapper(imagename) - if (ContentType != '6'and self.dbversion < 8) or (self.dbversion >= 8): + if (ContentType != '6'and self.has_kepubs == False) or (self.has_kepubs == True): if self.update_metadata_item(bl[idx]): # print 'update_metadata_item returned true' changed = True @@ -122,7 +132,7 @@ class KOBO(USBMS): playlist_map[lpath] not in bl[idx].device_collections: bl[idx].device_collections.append(playlist_map[lpath]) else: - if ContentType == '6' and self.dbversion < 8: + if ContentType == '6' and self.has_kepubs == False: book = Book(prefix, lpath, title, authors, mime, date, ContentType, ImageID, size=1048576) else: try: @@ -142,7 +152,7 @@ class KOBO(USBMS): traceback.print_exc() return changed - connection = sqlite.connect(self._main_prefix + '.kobo/KoboReader.sqlite') + connection = sqlite.connect(self.normalize_path(self._main_prefix + '.kobo/KoboReader.sqlite')) cursor = connection.cursor() #query = 'select count(distinct volumeId) from volume_shortcovers' @@ -210,7 +220,7 @@ class KOBO(USBMS): # 2) volume_shorcover # 2) content - connection = sqlite.connect(self._main_prefix + '.kobo/KoboReader.sqlite') + connection = sqlite.connect(self.normalize_path(self._main_prefix + '.kobo/KoboReader.sqlite')) cursor = connection.cursor() t = (ContentID,) cursor.execute('select ImageID from content where ContentID = ?', t) @@ -352,7 +362,7 @@ class KOBO(USBMS): def contentid_from_path(self, path, ContentType): if ContentType == 6: - if self.dbversion < 8: + if self.has_kepubs == False: ContentID = os.path.splitext(path)[0] # Remove the prefix on the file. it could be either ContentID = ContentID.replace(self._main_prefix, '') @@ -403,13 +413,13 @@ class KOBO(USBMS): path = path.replace("file:///mnt/sd/", self._card_a_prefix) # print "SD Card: " + path else: - if ContentType == "6" and self.dbversion < 8: + if ContentType == "6" and self.has_kepubs == False: # This is a hack as the kobo files do not exist # but the path is required to make a unique id # for calibre's reference path = self._main_prefix + path + '.kobo' # print "Path: " + path - elif (ContentType == "6" or ContentType == "10") and self.dbversion >= 8: + elif (ContentType == "6" or ContentType == "10") and self.has_kepubs == True: path = self._main_prefix + '.kobo/kepub/' + path # print "Internal: " + path else: @@ -476,7 +486,7 @@ class KOBO(USBMS): # Needs to be outside books collection as in the case of removing # the last book from the collection the list of books is empty # and the removal of the last book would not occur - connection = sqlite.connect(self._main_prefix + '.kobo/KoboReader.sqlite') + connection = sqlite.connect(self.normalize_path(self._main_prefix + '.kobo/KoboReader.sqlite')) cursor = connection.cursor() From bd9ab0808ef79b3b25ff7e5b673223754e0effc6 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Sun, 28 Nov 2010 20:42:08 -0700 Subject: [PATCH 213/377] ... --- src/calibre/customize/profiles.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/customize/profiles.py b/src/calibre/customize/profiles.py index 74a79689d9..2ca3bb0c54 100644 --- a/src/calibre/customize/profiles.py +++ b/src/calibre/customize/profiles.py @@ -684,7 +684,7 @@ class NookColorOutput(NookOutput): description = _('This profile is intended for the B&N Nook Color.') screen_size = (600, 900) - comic_screen_size = (584, 900) + comic_screen_size = (594, 900) dpi = 169 class BambookOutput(OutputProfile): From c4bc2ba4753e5a3737af88de7a319ab3f0f287a8 Mon Sep 17 00:00:00 2001 From: Translators <> Date: Mon, 29 Nov 2010 04:49:01 +0000 Subject: [PATCH 214/377] Launchpad automatic translations update. --- src/calibre/translations/ca.po | 54 +- src/calibre/translations/cs.po | 101 ++- src/calibre/translations/da.po | 52 +- src/calibre/translations/de.po | 1360 ++++++++++++++++------------- src/calibre/translations/es.po | 25 +- src/calibre/translations/fr.po | 8 +- src/calibre/translations/gl.po | 1013 +++++++++++---------- src/calibre/translations/it.po | 8 +- src/calibre/translations/zh_CN.po | 2 +- 9 files changed, 1479 insertions(+), 1144 deletions(-) diff --git a/src/calibre/translations/ca.po b/src/calibre/translations/ca.po index a4dc332e77..dd61705cd2 100644 --- a/src/calibre/translations/ca.po +++ b/src/calibre/translations/ca.po @@ -11,13 +11,13 @@ msgstr "" "Project-Id-Version: ca\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-11-27 20:21+0000\n" -"PO-Revision-Date: 2010-11-28 01:00+0000\n" +"PO-Revision-Date: 2010-11-28 12:13+0000\n" "Last-Translator: FerranRius <frius64@hotmail.com>\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-28 04:46+0000\n" +"X-Launchpad-Export-Date: 2010-11-29 04:46+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -3834,7 +3834,7 @@ msgstr "<b>Localització %d • %s</b><br />" #: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:20 #: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:34 msgid "Create catalog of books in your calibre library" -msgstr "Crea un catàleg de llibres de la vostra biblioteca" +msgstr "Crea un catàleg dels llibres de la biblioteca" #: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:31 msgid "No books selected to generate catalog for" @@ -4045,7 +4045,7 @@ msgid "" "No existing calibre library was found at %s. It will be removed from the " "list of known libraries." msgstr "" -"No hi ha cap biblioteques del calibre a %s. S'esborrarà de la llista de " +"No hi ha cap biblioteca del calibre a %s. Se suprimirà de la llista de " "biblioteques conegudes." #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:391 @@ -4068,11 +4068,11 @@ msgstr "Converteix llibres" #: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:28 msgid "Convert individually" -msgstr "Converteix individualment" +msgstr "Converteix-los individualment" #: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:30 msgid "Bulk convert" -msgstr "Converteix tots" +msgstr "Converteix-los en grup" #: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:86 msgid "Cannot convert" @@ -4215,7 +4215,7 @@ msgid "" "from your calibre library. Are you sure?" msgstr "" "Els llibres seleccionats se suprimiran <b>permanentment</b> i els fitxers es " -"suprimiran de la vostra llibreria del calibre. N'esteu segur?" +"trauran de la biblioteca del calibre. N'esteu segur?" #: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:185 msgid "" @@ -4506,8 +4506,8 @@ msgid "" "calibre library elsewhere." msgstr "" "Esteu intentant desar fitxers a la biblioteca del calibre. Això pot causar " -"corrupció a la vostra llibreria. Desar al disc està fet per exportar fitxers " -"des de la vostra llibreria del calibre a un altre lloc." +"corrupció a la biblioteca. Desar al disc està fet per exportar fitxers des " +"de la biblioteca del calibre a un altre lloc." #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:136 msgid "Error while saving" @@ -4785,8 +4785,8 @@ msgstr "" "importació de la vostra col·lecció de llibres.</p>\n" "<p>Trieu una carpeta arrel. Només es cercaran llibres dins d'aquesta carpeta " "i de les seves subcarpetes.</p>\n" -"<p>Assegureu-vos que la carpeta escollida per a la vostra biblioteca del " -"calibre <b>no està</b> dins de la carpeta arrel que heu triat.</p>" +"<p>Assegureu-vos que la carpeta escollida per a la biblioteca del calibre " +"<b>no està</b> dins de la carpeta arrel que heu triat.</p>" #: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:68 msgid "&Root folder:" @@ -5179,7 +5179,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:70 msgid "Bulk Convert" -msgstr "Convertir en massa" +msgstr "Conversió en grup" #: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 @@ -6576,7 +6576,7 @@ msgstr "Trieu format" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:38 msgid "Choose location for calibre library" -msgstr "Tria la localització de la biblioteca del calibre" +msgstr "Localització de la biblioteca del calibre" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:45 msgid "Same as current" @@ -6584,7 +6584,7 @@ msgstr "Igual que l'actual" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:46 msgid "The location %s contains the current calibre library" -msgstr "La localització %s conté la biblioteca del calibre actual" +msgstr "La biblioteca actual del calibre és a %s" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:51 msgid "No existing library found" @@ -6621,11 +6621,11 @@ msgstr "La carpeta %s no existeix" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:71 msgid "Choose your calibre library" -msgstr "Trieu la vostra biblioteca del calibre" +msgstr "Trieu la biblioteca del calibre" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:72 msgid "Your calibre library is currently located at {0}" -msgstr "La vostra biblioteca del calibre està actualment situada a {0}" +msgstr "La biblioteca del calibre està actualment situada a {0}" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:73 msgid "New &Location:" @@ -8098,7 +8098,7 @@ msgid "" "then remove it from the database." msgstr "" "Suprimeix l'element de la base de dades. Això traurà l'element de tots els " -"llibre i després el suprimirà de la base de dades." +"llibres i després el suprimirà de la base de dades." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:81 msgid "Rename the item in every book where it is used." @@ -8160,7 +8160,7 @@ msgstr "" "aleshores «Obre amb...» i trieu l'editor. Quan acabeu amb els ajustos, " "tanqueu la finestra del gestor de fitxers <b>i les finestres de l'editor que " "hagueu fet servir per modificar-ne les dades</b>.</p><p>Reconstrueix l'ePub " -"i actualitza la vostra biblioteca del calibre.</p>" +"i actualitza la biblioteca del calibre.</p>" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:132 msgid "No recipe selected" @@ -8637,7 +8637,7 @@ msgstr "Biblioteca" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:64 msgid "Show books in calibre library" -msgstr "Mostra els llibres a la biblioteca del calibre" +msgstr "Mostra els llibres de la biblioteca del calibre" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:65 msgid "Device" @@ -8967,9 +8967,9 @@ msgid "" "and repair it automatically? If you say No, a new empty calibre library will " "be created." msgstr "" -"Sembla que la vostra base de dades del calibre està malmesa. Voleu que el " -"calibre intenti reparar-la automàticament? Si dieu 'No', es crearà una nova " -"biblioteca del calibre buida." +"Sembla que la base de dades del calibre està malmesa. Voleu que el calibre " +"intenti reparar-la automàticament? Si dieu «No», es crearà una nova " +"biblioteca buida." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 msgid "" @@ -8987,7 +8987,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:237 msgid "Starting %s: Loading books..." -msgstr "S'està iniciant %s: Carregant llibres..." +msgstr "S'està iniciant el %s: s'està carregant els llibres..." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:282 msgid "If you are sure it is not running" @@ -12891,10 +12891,10 @@ msgstr "" "[opcions]\n" "\n" "Inicia el servidor de continguts del calibre. El servidor de continguts\n" -"del calibre mostra la vostra biblioteca per internet. La interfície per\n" -"defecte permet navegar per la biblioteca per categories. També podeu\n" -"accedir una interfície optimitzada per a navegadors mòbils a /mobile i \n" -"una interfície basada en OPDS en aplicacions de lectura a /opds.\n" +"del calibre mostra la biblioteca per internet. La interfície per defecte\n" +"permet navegar per la biblioteca per categories. També podeu accedir\n" +"a una interfície optimitzada per a navegadors mòbils a /mobile i una\n" +"interfície basada en OPDS en aplicacions de lectura a /opds.\n" "\n" "La interfície OPDS es publicita automàticament fent servir el BonJour.\n" diff --git a/src/calibre/translations/cs.po b/src/calibre/translations/cs.po index 52e5d861dd..108a4e0e16 100644 --- a/src/calibre/translations/cs.po +++ b/src/calibre/translations/cs.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2010-11-27 20:21+0000\n" -"PO-Revision-Date: 2010-11-27 20:34+0000\n" -"Last-Translator: Aleš Bajtalon <Unknown>\n" +"PO-Revision-Date: 2010-11-28 20:16+0000\n" +"Last-Translator: Marek Sušický <Unknown>\n" "Language-Team: Czech <cs@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-28 04:46+0000\n" +"X-Launchpad-Export-Date: 2010-11-29 04:47+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -1725,6 +1725,10 @@ msgid "" "books with hard line breaks, but should be reduced if the line length is " "variable." msgstr "" +"Měřítko použité k určení délky, při které se rozbalí řádek, pokud je povolen " +"preproces. Platné hodnoty jsou desetinná čísla mezi 0 a 1. Výchozí je 0.40, " +"hned pod mediánem délky řádků. Toto typicky rozbalí knihy s pevným zalomením " +"řádku, ale počet řádků může být omezena, pokud je délka řádku proměnlivá." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:380 msgid "" @@ -1920,6 +1924,14 @@ msgid "" "By default, no fixing is done and messages are printed out for each error " "detected. Use the options to control which errors are automatically fixed." msgstr "" +"%prog [options] file.epub\n" +"\n" +"Opravit běžné problémy v souborech EPUB, které mohou způsobit, že budou " +"zamítnuty špatně navrženými vydavatelskými službami.\n" +"\n" +"Ve výchozím nastavení není provedena oprava a při každé zjištěné chybě se " +"zobrazí zpráva. Využijte volby, abyste ovlivnili, které chyby budou " +"automaticky opraveny." #: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/main.py:52 msgid "You must specify an epub file" @@ -2808,7 +2820,7 @@ msgstr "Zakázat kompresi obsahu souboru." #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:40 msgid "Tag marking book to be filed with Personal Docs" -msgstr "" +msgstr "Doplnit do označených knih Personal Docs" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:107 msgid "All articles" @@ -2940,6 +2952,8 @@ msgid "" "Normally calibre treats blank lines as paragraph markers. With this option " "it will assume that every line represents a paragraph instead." msgstr "" +"Calibre běžně řeší prázdné řádky jako ukončení odstavců. S touto volbou se " +"bude předpokládat, že každý řádek je odstavec." #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/input.py:27 @@ -2950,6 +2964,10 @@ msgid "" "spaces) represents a paragraph. Paragraphs end when the next line that " "starts with an indent is reached." msgstr "" +"Calibre běžně řeší prázdné řádky jako ukončení odstavců. S touto volbou se " +"bude předpokládat, že každý řádek začínající odrážkou (tabulátor, nebo 2+ " +"mezery) je odstavec. Odstavec končí, když je nalezen řádek začínající " +"odrážkou." #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/output.py:23 msgid "Format to use inside the pdb container. Choices are:" @@ -2973,6 +2991,9 @@ msgid "" "Valid values are a decimal between 0 and 1. The default is 0.45, just below " "the median line length." msgstr "" +"Měřítko použité k určení délky, při které se řádek rozbalí. Platné hodnoty " +"jsou desetinná čísla mezi 0 a 1. Výchozí je 0.45, hned pod mediánem délky " +"řádku." #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:30 msgid "Use the new PDF conversion engine." @@ -3308,6 +3329,8 @@ msgid "" "Normally extra spaces are condensed into a single space. With this option " "all spaces will be displayed." msgstr "" +"Běžně jsou mezery navíc nahrazeny pouze jednou. S touto volbou budou " +"zobrazeny všechny." #: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:37 msgid "" @@ -4234,6 +4257,12 @@ msgid "" "books will be permanently <b>deleted</b> from your computer.<br><br> Are " "you <b>sure</b> you want to proceed?" msgstr "" +"Knižní formáty a metadata z vybraných knih budou sloučeny do <b>první " +"vybrané knihy</b> (%s). ISBN <i>nebude</ i>sloučeno.<br><br>Po sloučení " +"druhé a následně vybraných knih budou <b>odstraněny</b>. <br><br>Všechny " +"knižní formáty první vybrané knihy budou uloženy a případné duplicitní " +"formáty ve druhé a následně vybraných knihách budou trvale <b>odstraněny</b> " +"z Vašeho počítače.<br><br> Jste si <b>jisti</b>, že chcete pokračovat?" #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:222 msgid "" @@ -4620,6 +4649,14 @@ msgid "" "<p>Make sure that the folder you chose for your calibre library <b>is " "not</b> under the root folder you choose.</p>" msgstr "" +"<p>Calibre může automaticky vyhledávat knihy ve Vašem počítači. Tyto knihy " +"budou poté <b>nakopírovány</b> do Calibre knihovny. Tento průvodce Vám " +"pomůže přizpůsobit vyhledávání a proces importu pro Vaši existující sbírku " +"knih.</p>\n" +"<p>Vyberte kořenovou složku. Knihy budou vyhledávány pouze v rámci této " +"složky a všech podsložkách.</p>\n" +"<p>Ujistěte se, že složka kterou jste vybrali pro Vaši Calibre knihovnu " +"<b>není</b> pod kořenovou složkou, kterou vybíráte.</p>" #: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:68 msgid "&Root folder:" @@ -4936,7 +4973,7 @@ msgstr "Doplňující prefix tag pro poznámku:" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:86 msgid "Regex pattern describing tags to exclude as genres:" -msgstr "" +msgstr "Regulární výraz použitý k popsání tagů k vynechání žánrů:" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:87 msgid "" @@ -4969,7 +5006,7 @@ msgstr "Tag pro přání" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:33 msgid "Tab template for catalog.ui" -msgstr "" +msgstr "Tab template pro catalog.ui" #: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:25 msgid "Bold" @@ -4990,6 +5027,9 @@ msgid "" "in a previous conversion (if they exist) instead of using the defaults " "specified in the Preferences" msgstr "" +"Pro nastavení, které nemohou být nastaveny v tomto dialogu, použít hodnoty " +"uložené v předchozí konverzi (pokud existují), místo použití výchozích " +"hodnot napsaných v Nastavení" #: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:70 msgid "Bulk Convert" @@ -5110,6 +5150,9 @@ msgid "" "of the conversion process. This HTML can sometimes serve as a good starting " "point for hand editing a conversion." msgstr "" +"Proces ladění výstupů průběžně generovaného HTML v různých fázích procesu " +"konverze. Toto HTML může někdy sloužit jako dobrý výchozí bod pro ruční " +"editaci konverze." #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:15 msgid "EPUB Output" @@ -5335,7 +5378,7 @@ msgstr "&Wordspace:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:124 msgid "Minimum para. &indent:" -msgstr "" +msgstr "Nejmenší para. &odrážka:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:126 msgid "Render &tables as images" @@ -5343,7 +5386,7 @@ msgstr "Vyrenderovat &tabulky jako obrázky" #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:127 msgid "Text size multiplier for text in rendered tables:" -msgstr "" +msgstr "Násobič velikosti textu pro vyrenderované tabulky:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:128 msgid "Add &header" @@ -5538,7 +5581,7 @@ msgstr "Kindle volby" #: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:78 msgid "Periodical masthead font:" -msgstr "" +msgstr "Font pro tiráž v novinách:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:79 msgid "Personal Doc tag:" @@ -5608,7 +5651,7 @@ msgstr "PDF Vstup" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:44 msgid "Line &Un-Wrapping Factor:" -msgstr "" +msgstr "Řádkový rozbalovací faktor:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:45 msgid "No &Images" @@ -5773,7 +5816,7 @@ msgstr "Odstranit &záhlaví" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:86 msgid "Line &un-wrap factor during preprocess:" -msgstr "" +msgstr "Řádkový rozbalovací faktor během preprocesu:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:87 msgid "&Preprocess input file to possibly improve structure detection" @@ -6240,6 +6283,13 @@ msgid "" "enter the full path to the file after a <code>>></code>. For example:</p>\n" "<p><code>9788842915232 >> %s</code></p>" msgstr "" +"<p>Zadat seznam ISBN do pole vlevo, každé na jeden řádek. Calibre " +"automaticky vytvoří položky pro knihy na základě ISBN a stáhne pro ně " +"metadata a obálky.</p>\n" +"<p>Jakékoliv neplatné ISBN v tomto seznamu bude ignorováno.</p>\n" +"<p>Můžete také zadat soubor, který bude přidán ke každému ISBN. Pokud toto " +"chcete, zadejte plnou cestu k souboru po <code>>></code>. Například:</p>\n" +"<p><code>9788842915232 >> %s</code></p>" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:53 msgid "&Paste from clipboard" @@ -6702,6 +6752,11 @@ msgid "" "checked, the search text must match exactly. If it is unchecked, the search " "text will match both upper- and lower-case letters" msgstr "" +"Ve znakovém módu je pole prohledáno na zadaný text. Text je nahrazen textem " +"pro náhradu, kdekoliv je v poli nalezeno. Když je náhrada dokončena, text " +"může být změněn na velká, malá nebo \"title\" písmena. Pokud je zaškrtnuto " +"políčko case sensitive, hledaný text se musí shodovat přesně. Pokud " +"zaškrtnuto není, text se vyhledá nezávisle na velikosti písma." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:295 msgid "" @@ -6967,6 +7022,8 @@ msgid "" "The field that the text will be put into after all replacements. If blank, " "the source field is used." msgstr "" +"Pole, do kterého bude vložen text po všech nahrazeních. Pokud je prázdné, " +"použije se zdrojové pole." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:394 msgid "Mode:" @@ -6982,6 +7039,9 @@ msgid "" "comma or\n" "nothing should be put between the original text and the inserted text" msgstr "" +"Pokud je mód nahrazení předřadit, nebo přidat, pak toto pole určuje, jestli " +"bude čárka\n" +"nebo prázdný znak vložen mezi vkládaný a originální text." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:398 msgid "use comma" @@ -7518,6 +7578,8 @@ msgid "" "<p>Negate this match. That is, only return results that <b>do not</b> match " "this query." msgstr "" +"<p>Negovat tuto shodu. Tzn. vrátí výsledky, které <b>nesplňují</b> tento " +"dotaz." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:44 msgid "Negate" @@ -8051,7 +8113,7 @@ msgstr "Zprávy:" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:189 msgid "Attached is the %s periodical downloaded by calibre." -msgstr "" +msgstr "Přiložen je %s časopis stažený calibre." #: /home/kovid/work/calibre/src/calibre/gui2/email.py:242 msgid "E-book:" @@ -8972,7 +9034,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:22 msgid "Comma separated text, like tags, shown in the tag browser" -msgstr "" +msgstr "Čarkami oddělený text, jako tagy, zobrazen v prohlížeči tagů" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:25 msgid "Long text, like comments, not shown in the tag browser" @@ -9034,11 +9096,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:126 msgid "No column heading was provided" -msgstr "" +msgstr "Nebyl poskytnutý popis sloupců" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:133 msgid "The lookup name %s is already used" -msgstr "" +msgstr "Lookup name %s je již použito" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:145 msgid "The heading %s is already used" @@ -9055,7 +9117,7 @@ msgstr "Vytvořit nebo editovat uživatelsky definované sloupce" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:128 msgid "&Lookup name" -msgstr "" +msgstr "&Lookup name" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:129 msgid "Column &heading" @@ -9118,7 +9180,7 @@ msgstr "<p>Pole šablony. Používá stejnou syntaxi jako ukládání šablon." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:144 msgid "Similar to save templates. For example, {title} {isbn}" -msgstr "" +msgstr "Podobné k uložení šablon. Například, {title} {isbn}" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:145 msgid "Default: (nothing)" @@ -10039,6 +10101,8 @@ msgstr "Najít kterékoliv" msgid "" "When selecting multiple entries in the Tag Browser match any or all of them" msgstr "" +"Když se označí více záznamů v Prohlížeči tagů, najdi libovolný, nebo všechny " +"z nich" #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:897 msgid "Manage &user categories" @@ -10144,6 +10208,9 @@ msgid "" " Quitting may cause corruption on the device.<br>\n" " Are you sure you want to quit?" msgstr "" +" komunikuje se zařízením!<br>\n" +" Ukončení může způsobit poškození v zařízení.<br>\n" +" Jste si jisti?" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:550 msgid "WARNING: Active jobs" diff --git a/src/calibre/translations/da.po b/src/calibre/translations/da.po index 5c5d004b18..3efb08fbb9 100644 --- a/src/calibre/translations/da.po +++ b/src/calibre/translations/da.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-11-26 19:04+0000\n" -"PO-Revision-Date: 2010-11-26 21:06+0000\n" -"Last-Translator: Kovid Goyal <Unknown>\n" +"POT-Creation-Date: 2010-11-27 20:21+0000\n" +"PO-Revision-Date: 2010-11-28 07:28+0000\n" +"Last-Translator: Glenn <Unknown>\n" "Language-Team: Danish <da@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-27 04:48+0000\n" +"X-Launchpad-Export-Date: 2010-11-29 04:47+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -605,7 +605,7 @@ msgstr "Denne profil er beregnet til Amazon Kindle DX." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:684 msgid "This profile is intended for the B&N Nook Color." -msgstr "" +msgstr "Denne profil er forbeholdt B&N Nook Color." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:695 msgid "This profile is intended for the Sanda Bambook." @@ -828,7 +828,7 @@ msgstr "Kommunikér med PocketBook 301 læseren." #: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:233 msgid "Communicate with the PocketBook 602 reader." -msgstr "" +msgstr "Kommunikér med PocketBook 602 reader." #: /home/kovid/work/calibre/src/calibre/devices/edge/driver.py:17 msgid "Entourage Edge" @@ -1042,7 +1042,7 @@ msgstr "Kommunikér med GM2000" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:180 msgid "Communicate with the Acer Lumiread" -msgstr "" +msgstr "Kommunikér med Acer Lumiread" #: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:17 msgid "Communicate with the Nokia 770 internet tablet." @@ -2808,19 +2808,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:25 msgid "Downloads metadata from french Nicebooks" -msgstr "" +msgstr "Hent metadata fra franske Nicebooks" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:41 msgid "Downloads covers from french Nicebooks" -msgstr "" +msgstr "Hent omslag fra franske Nicebooks" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:332 msgid "Nicebooks timed out. Try again later." -msgstr "" +msgstr "Nicebooks timede ud. Prøv igen senere." #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:337 msgid "An errror occured with Nicebooks cover fetcher" -msgstr "" +msgstr "Der skete en fejl under Nicebooks omslagshentning" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 @@ -3831,6 +3831,11 @@ msgid "" "removed. You should check them manually. This can happen if you manipulate " "the files in the library folder directly." msgstr "" +"Følgende bøger havde referencer/indgange til formater eller omslag i " +"databasen som ikke er tilgængelig. Indgangene til formaterne/omslagene er " +"blevet fjernet. Du opfordres at checke dem manuelt. De fejlende indgange kan " +"opstå, hvis du udenom calibre har ændret og/eller fjernet filer i " +"biblioteksmappen." #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:51 @@ -4015,7 +4020,7 @@ msgstr "Starter konvertering af %d bog/bøger" #: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:170 msgid "Empty output file, probably the conversion process crashed" -msgstr "" +msgstr "Tom output-fil, sandsynligvis gik konverteringsprocessen ned" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:83 msgid "Copy to library" @@ -6380,6 +6385,14 @@ msgid "" "enter the full path to the file after a <code>>></code>. For example:</p>\n" "<p><code>9788842915232 >> %s</code></p>" msgstr "" +"<p>Indtast en liste af ISBN i tekstboksen til venstre, én per linje. Calibre " +"vil automatisk oprette indgange til bøgerne baseret på ISBN og hente " +"metadata og omslag til dem.</p>\n" +"<p>Enhver ugyldig ISBN i listen vil blive ignoreret.</p>\n" +"<p>Du kan også angive en fil, som vil blive tilføjet til hver ISBN. For at " +"gøre dette indtastes den fulde sti til filnavnet efter <code>>></code>. For " +"eksempel:</p>\n" +"<p><code>9788842915232 >> %s</code></p>" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:53 msgid "&Paste from clipboard" @@ -8244,7 +8257,7 @@ msgstr "Opskriftskildekode (python)" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:145 msgid "Email %s to %s" -msgstr "" +msgstr "Email %s til %s" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:187 msgid "News:" @@ -8252,7 +8265,7 @@ msgstr "Nyheder:" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:189 msgid "Attached is the %s periodical downloaded by calibre." -msgstr "" +msgstr "Som bilag er %s tidsskriftet hentet af calibre." #: /home/kovid/work/calibre/src/calibre/gui2/email.py:242 msgid "E-book:" @@ -8287,11 +8300,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:303 msgid "Failed to email book" -msgstr "" +msgstr "Emailsending af bog fejlede" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:306 msgid "sent" -msgstr "" +msgstr "sendt" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:329 msgid "Sent news to" @@ -11098,6 +11111,9 @@ msgid "" "<p>Choose a location for your books. When you add books to calibre, they " "will be copied here. Use an <b>empty folder</b> for a new calibre library:" msgstr "" +"<p>Vælg en placering til dine bøger. Når du tilføjer bøger til calibre, " +"bliver de kopieret hertil. Anvend en <b>tom mappe</b> til et nyt calibre-" +"bibliotek:" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 msgid "&Change" @@ -11266,11 +11282,11 @@ msgstr "&SSL" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:143 msgid "WARNING: Using no encryption is highly insecure" -msgstr "" +msgstr "ADVARSEL: Det er meget usikkert at udelade kryptering" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:144 msgid "&None" -msgstr "" +msgstr "&Ingen" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:145 msgid "Use Gmail" diff --git a/src/calibre/translations/de.po b/src/calibre/translations/de.po index 4d16a386fa..8eaba806fe 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-11-12 23:11+0000\n" -"PO-Revision-Date: 2010-11-12 22:46+0000\n" -"Last-Translator: Kovid Goyal <Unknown>\n" +"POT-Creation-Date: 2010-11-27 20:21+0000\n" +"PO-Revision-Date: 2010-11-28 12:13+0000\n" +"Last-Translator: Manichean <Unknown>\n" "Language-Team: American English <kde-i18n-doc@lists.kde.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-13 04:53+0000\n" +"X-Launchpad-Export-Date: 2010-11-29 04:48+0000\n" "X-Generator: Launchpad (build Unknown)\n" "Generated-By: pygettext.py 1.5\n" @@ -28,11 +28,11 @@ msgstr "Macht absolut gar nichts" #: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:74 #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:76 #: /home/kovid/work/calibre/src/calibre/devices/kobo/books.py:24 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:444 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:448 #: /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/sony_cache.py:650 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:657 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 @@ -41,8 +41,8 @@ msgstr "Macht absolut gar nichts" #: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:124 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:93 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:95 -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:343 -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:346 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:338 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:341 #: /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 @@ -56,7 +56,7 @@ msgstr "Macht absolut gar nichts" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:36 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:61 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:50 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:354 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:357 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:36 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 @@ -75,9 +75,9 @@ msgstr "Macht absolut gar nichts" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:78 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:119 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:153 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:620 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:826 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:828 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:627 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:833 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:835 #: /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:913 @@ -90,7 +90,7 @@ msgstr "Macht absolut gar nichts" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:118 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:173 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:174 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:40 #: /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 @@ -110,10 +110,10 @@ msgstr "Macht absolut gar nichts" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:98 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:239 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:241 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:356 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:363 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:304 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:362 #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:279 #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:282 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:137 @@ -122,15 +122,15 @@ msgstr "Macht absolut gar nichts" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:114 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:141 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:927 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:936 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1249 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1252 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1039 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1042 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:571 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:244 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:376 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:395 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:918 @@ -138,14 +138,14 @@ msgstr "Macht absolut gar nichts" #: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:112 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:189 #: /home/kovid/work/calibre/src/calibre/library/cli.py:215 -#: /home/kovid/work/calibre/src/calibre/library/database.py:913 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:399 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:411 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1283 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1387 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2161 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2163 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2295 +#: /home/kovid/work/calibre/src/calibre/library/database.py:914 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:375 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:387 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1254 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1355 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2151 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2153 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2284 #: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:229 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:139 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:142 @@ -186,9 +186,9 @@ msgstr "Benutzeroberflächenaktion" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:386 #: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:22 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:251 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:283 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:206 msgid "Preferences" msgstr "Einstellungen" @@ -268,101 +268,101 @@ msgstr "Geben Sie die Metadaten in %s-Dateien an" msgid "Set metadata from %s files" msgstr "Geben Sie die Metadaten von %s-Dateien an" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:712 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:717 msgid "Look and Feel" msgstr "Erscheinungsbild" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:714 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:726 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:737 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:748 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:719 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:731 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:742 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:753 msgid "Interface" msgstr "Bedienungsoberfläche" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:718 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:723 msgid "Adjust the look and feel of the calibre interface to suit your tastes" msgstr "Passen Sie das Erscheinungsbild von Calibre ihren Bedürfnissen an." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:724 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:729 msgid "Behavior" msgstr "Verhalten" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:730 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735 msgid "Change the way calibre behaves" msgstr "Ändern Sie das Verhalten von Calibre." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:740 #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:209 msgid "Add your own columns" msgstr "Eigene Spalten hinzufügen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:741 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746 msgid "Add/remove your own columns to the calibre book list" msgstr "Hinzufügen/Entfernen eigener Spalten in der Calibre Buchliste" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:751 msgid "Customize the toolbar" msgstr "Werkzeugleiste anpassen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:752 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:757 msgid "" "Customize the toolbars and context menus, changing which actions are " "available in each" msgstr "Passt individuell Werkzeugleiste und Kontextmenus an." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:758 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:763 msgid "Input Options" msgstr "Eingabeoptionen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:760 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:771 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:782 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:765 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:776 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:787 msgid "Conversion" msgstr "Konvertierung" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:764 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769 msgid "Set conversion options specific to each input format" msgstr "Stellt Eingabeoptionen für jedes einzelne Eingabeformat ein." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:774 msgid "Common Options" msgstr "Allgemeine Einstellungen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:775 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780 msgid "Set conversion options common to all formats" msgstr "Gemeinsame Konvertierungsoptionen für alle Formate einstellen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:785 msgid "Output Options" msgstr "Ausgabeoptionen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:786 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791 msgid "Set conversion options specific to each output format" msgstr "" "Konvertierungsoptionen für jedes Ausgabeformat individuell einstellen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:796 msgid "Adding books" msgstr "Bücher hinzufügen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:793 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:805 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:817 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:829 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:798 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:810 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:822 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:834 msgid "Import/Export" msgstr "Import/Export" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:797 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:802 msgid "Control how calibre reads metadata from files when adding books" msgstr "" "Stellt ein, wie Calibre mit den Metadaten aus den Dateien beim Einlesen von " "Büchern verfährt." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:803 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:808 msgid "Saving books to disk" msgstr "Bücher auf Datenträger speichern" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:809 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:814 msgid "" "Control how calibre exports files from its database to disk when using Save " "to disk" @@ -370,32 +370,32 @@ msgstr "" "Stellt ein, wie Calibre Dateien aus der Datenbank exportiert, wenn \"Bücher " "auf Datenträger speichern\" gewählt wird." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:815 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:820 msgid "Sending books to devices" msgstr "Übertragen der Bücher an Geräte" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:821 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:826 msgid "Control how calibre transfers files to your ebook reader" msgstr "Stellt ein, wie Calibre die Dateien an den eBook-Reader sendet." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:827 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:832 msgid "Metadata plugboards" msgstr "Metadaten- Schalttafel" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:833 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838 msgid "Change metadata fields before saving/sending" msgstr "Ändere Metadaten-Felder vor dem Speichern/Senden" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:843 msgid "Sharing books by email" msgstr "Bücherversand per Email" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:840 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:852 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:845 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:857 msgid "Sharing" msgstr "Versand" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:844 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:849 msgid "" "Setup sharing of books via email. Can be used for automatic sending of " "downloaded news to your devices" @@ -403,11 +403,11 @@ msgstr "" "Setup für Bücherversand per Email. Kann für den automatischen Versand von " "heruntergeladenen Nachrichten an Ihr Gerät genutzt werden." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:850 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:855 msgid "Sharing over the net" msgstr "Versand über Netzwerk" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:856 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:861 msgid "" "Setup the calibre Content Server which will give you access to your calibre " "library from anywhere, on any device, over the internet" @@ -415,34 +415,34 @@ msgstr "" "Einrichten des Calibre Servers, der Zugriff auf die Bibliothek von überall, " "mit jedem Gerät, via Internet ermöglicht." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:868 msgid "Plugins" msgstr "Plugins" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:865 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:877 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:888 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:870 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:882 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:893 msgid "Advanced" msgstr "Erweitert" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:869 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:874 msgid "Add/remove/customize various bits of calibre functionality" msgstr "Hinzufügen/Entfernen/Einstellen von verschiedenen Calibre-Funktionen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:875 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:880 msgid "Tweaks" msgstr "Kniffe" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:881 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886 msgid "Fine tune how calibre behaves in various contexts" msgstr "" "Feineinstellungen für das Verhalten von Calibre in verschiedenen Situationen" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:891 msgid "Miscellaneous" msgstr "Verschiedenes" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:892 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:897 msgid "Miscellaneous advanced configuration" msgstr "Konfiguration verschiedener fortgeschrittener Parameter" @@ -608,7 +608,11 @@ msgstr "" msgid "This profile is intended for the Amazon Kindle DX." msgstr "Dieses Profil ist geeignet für den Amazon Kindle DX." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:686 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:684 +msgid "This profile is intended for the B&N Nook Color." +msgstr "Dieses Profil ist geeignet für den B&N Nook Color" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:695 msgid "This profile is intended for the Sanda Bambook." msgstr "Dieses Profil ist geeignet für den Sanda Bambook" @@ -773,18 +777,18 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:888 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:918 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:257 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:212 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:225 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2021 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:187 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:200 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2015 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:149 msgid "News" msgstr "Nachrichten" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2554 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:556 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1984 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2002 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:560 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1978 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1996 msgid "Catalog" msgstr "Katalog" @@ -810,6 +814,10 @@ msgstr "Kovid Goyal" msgid "Communicate with the Cybook Gen 3 / Opus eBook reader." msgstr "Kommunikation mit dem Cybook Gen 3 / Opus eBook Reader." +#: /home/kovid/work/calibre/src/calibre/devices/cybook/driver.py:64 +msgid "Communicate with the Cybook Orizon eBook reader." +msgstr "Kommunikation mit dem Cybook Orizon." + #: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:24 msgid "Communicate with the EB600 eBook reader." msgstr "Kommunikation mit dem EB600 eBook Reader." @@ -822,6 +830,10 @@ msgstr "Kommunikation mit dem Astak Mentor EB600" msgid "Communicate with the PocketBook 301 reader." msgstr "Kommunikation mit dem PocketBook 301 Reader." +#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:233 +msgid "Communicate with the PocketBook 602 reader." +msgstr "Kommunikation mit dem PocketBook 602." + #: /home/kovid/work/calibre/src/calibre/devices/edge/driver.py:17 msgid "Entourage Edge" msgstr "Entourage Edge" @@ -882,8 +894,8 @@ msgstr "Kommunikation mit dem SpringDesign Alex eBook Reader." #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:102 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:113 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:264 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:296 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:268 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:300 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:256 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:274 msgid "Removing books from device..." @@ -972,26 +984,26 @@ msgstr "" msgid "Getting list of books on device..." msgstr "Die Liste der Bücher auf dem Gerät beziehen ..." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:300 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:307 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:304 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:311 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:281 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:286 msgid "Removing books from device metadata listing..." msgstr "Bücher von der Metadaten-Liste des Geräts entfernen ..." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:312 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:347 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:316 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:351 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:219 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:250 msgid "Adding books to device metadata listing..." msgstr "Bücher zur Metadaten-Liste des Geräts hinzufügen ..." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:424 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:258 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:428 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:262 msgid "Not Implemented" msgstr "Nicht implementiert" -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:425 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:429 msgid "" "\".kobo\" files do not exist on the device as books instead, they are rows " "in the sqlite database. Currently they cannot be exported or viewed." @@ -1033,6 +1045,10 @@ msgstr "Kommuniziere mit dem VelocityMicro" msgid "Communicate with the GM2000" msgstr "Kommunikation mit dem GM2000" +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:180 +msgid "Communicate with the Acer Lumiread" +msgstr "Kommunikation mit dem Acer Lumiread" + #: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:17 msgid "Communicate with the Nokia 770 internet tablet." msgstr "Kommunikation mit dem Nokia 770 Internet Tablet." @@ -1055,11 +1071,11 @@ msgstr "Kommunikation mit dem Nook eBook Reader." #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 msgid "Nook Color" -msgstr "" +msgstr "Nook Color" #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 msgid "Communicate with the Nook Color eBook reader." -msgstr "" +msgstr "Kommunikation mit dem Nook Color." #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." @@ -2137,15 +2153,6 @@ msgstr "" "wenn Sie wissen, was Sie tun, denn es kann verschiedene nervige " "Nebenwirkungen beim Rest des Konvertierungsprozesses zur Folge haben." -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:273 -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 "" -"Durchschnittliche Zeilenlänge für den Zeilenumbruch falls das HTML von einer " -"zuvor nur teilweise konvertierten PDF-Datei stammt. Voreinstellung ist " -"%default was dies ausschaltet." - #: /home/kovid/work/calibre/src/calibre/ebooks/html/output.py:33 msgid "CSS file used for the output instead of the default file" msgstr "Zur Ausgabe statt der Standarddatei verwendete CSS- Datei" @@ -2312,7 +2319,7 @@ msgid "Path to output file" msgstr "Pfad zur Zieldatei" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrs/convert_from.py:290 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:128 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:126 msgid "Verbose processing" msgstr "Ausführlicher fortfahren" @@ -2550,7 +2557,7 @@ msgstr "Bemerkung" #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:313 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1127 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:160 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:623 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:655 msgid "Tags" msgstr "Etiketten (Tags)" @@ -2706,6 +2713,7 @@ msgid "No cover found" msgstr "Kein Umschlagbild gefunden" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:28 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:44 msgid "Cover download" msgstr "Umschlagbild laden" @@ -2773,19 +2781,19 @@ msgstr "Beschreibung/Bewertungen" msgid "Download %s from %s" msgstr "Lade %s von %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:149 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:150 msgid "Convert comments downloaded from %s to plain text" msgstr "Konvertiere von %s heruntergeladene Komentare in Klartext" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:175 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:178 msgid "Downloads metadata from Google Books" msgstr "Lädt Metadaten von Google Books" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:192 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:195 msgid "Downloads metadata from isbndb.com" msgstr "Lädt Metadaten von isbndb.com" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:220 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:223 msgid "" "To use isbndb.com you must sign up for a %sfree account%s and enter your " "access key below." @@ -2793,15 +2801,15 @@ msgstr "" "Zur Verwendung von isbndb.com müssen Sie einen %skostenlosen Account%s " "erstellen und Ihren Zugangsschlüssel unten eingeben." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:230 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:233 msgid "Downloads social metadata from amazon.com" msgstr "Lädt soziale Metadaten von amazon.com" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:251 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:254 msgid "Downloads series/tags/rating information from librarything.com" msgstr "Lädt Reihe/Etiketten/Bewertung von librarything.com" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:109 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:107 msgid "" "\n" "%prog [options] key\n" @@ -2826,23 +2834,24 @@ msgstr "" "bei isbndb.com erstellt werden kann.\n" "\n" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:120 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:118 msgid "The ISBN ID of the book you want metadata for." msgstr "Die ISBN des Buches, für das Sie Metadaten abrufen möchten." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:122 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:120 msgid "The author whose book to search for." msgstr "Der Autor des gesuchten Buches." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:124 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:122 msgid "The title of the book to search for." msgstr "Der Titel des gesuchten Buches." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:126 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:124 msgid "The publisher of the book to search for." msgstr "Der Herausgeber des gesuchten Buches." #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:77 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:336 msgid " not found." msgstr " nicht gefunden." @@ -2860,6 +2869,22 @@ msgstr "" "Umschlagbild/soziale Metadaten für das durch ISBN identifizierte Buch von " "LibraryThing.com laden.\n" +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:25 +msgid "Downloads metadata from french Nicebooks" +msgstr "Lädt Metadaten vom französischen Nicebooks" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:41 +msgid "Downloads covers from french Nicebooks" +msgstr "Lädt Umschlagbilder vom französischen Nicebooks" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:332 +msgid "Nicebooks timed out. Try again later." +msgstr "Timeout von Nicebooks. Bitte versuchen Sie es später nochmal." + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:337 +msgid "An errror occured with Nicebooks cover fetcher" +msgstr "Fehler im Nicebooks Umschlagbild- Downloader aufgetreten" + #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 msgid "Cover" @@ -2973,7 +2998,7 @@ msgstr "Haupttext" msgid "%s format books are not supported" msgstr "Bücher im %s Format werden nicht unterstützt" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:103 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:156 msgid "Book %s of %s" msgstr "Buch %s von %s" @@ -2984,7 +3009,7 @@ msgstr "Einstellungen zur Erstellung von HTML-Inhaltsverzeichnissen." #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:71 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:621 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:653 msgid "Rating" msgstr "Bewertung" @@ -3018,7 +3043,7 @@ msgstr "Fußnoten" msgid "Sidebar" msgstr "Seitenleiste" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:22 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:23 #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/input.py:23 #: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:24 msgid "" @@ -3029,7 +3054,7 @@ msgstr "" "Einstellung wird dagegen davon ausgegangen, dass jede Zeile einen Absatz " "darstellt." -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:26 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:28 msgid "" @@ -3352,7 +3377,7 @@ msgstr "" "Geben Sie die Zeichenkodierung des Ausgabe-Dokuments an. Voreinstellung ist " "cp1252." -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:196 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:256 msgid "" "This RTF file has a feature calibre does not support. Convert it to HTML " "first and then try it.\n" @@ -3600,7 +3625,7 @@ msgid "Disable UI animations" msgstr "Keine Benutzeroberflächen-Animationen" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:494 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:509 msgid "Copied" msgstr "Kopiert" @@ -3612,7 +3637,7 @@ msgstr "Kopieren" msgid "Copy to Clipboard" msgstr "In die Zwischenablage kopieren" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:467 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:466 msgid "Choose Files" msgstr "Dateien wählen" @@ -3667,90 +3692,90 @@ msgstr "Wie viele leere Bücher?" msgid "How many empty books should be added?" msgstr "Wie viele leere Bücher sollen hinzugefügt werden?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:143 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:206 msgid "Uploading books to device." msgstr "Lade Bücher auf das Gerät." -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:170 msgid "Books" msgstr "Bücher" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:165 msgid "EPUB Books" msgstr "EPUB Bücher" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 msgid "LRF Books" msgstr "LRF Bücher" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:167 msgid "HTML Books" msgstr "HTML Bücher" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:168 msgid "LIT Books" msgstr "LIT Bücher" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:169 msgid "MOBI Books" msgstr "MOBI Bücher" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:170 msgid "Topaz books" msgstr "Topaz Bücher" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:171 msgid "Text books" msgstr "Text Bücher" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:172 msgid "PDF Books" msgstr "PDF Bücher" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:173 msgid "SNB Books" msgstr "SNB- Bücher" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:174 msgid "Comics" msgstr "Comics" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:175 msgid "Archives" msgstr "Archive" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:179 msgid "Supported books" msgstr "Unterstützte Bücher" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:215 msgid "Merged some books" msgstr "Einige Bücher zusammenfügen" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:216 msgid "" "Some duplicates were found and merged into the following existing books:" msgstr "" "Es wurden einige Duplikate gefunden und mit den folgenden, schon vorhandenen " "Büchern zusammengefügt:" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:225 msgid "Failed to read metadata" msgstr "Lesen der Metadaten schlug fehl" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:226 msgid "Failed to read metadata from the following" msgstr "Lesen der Metadaten schlug fehl bei folgenden" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:241 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:246 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:265 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:250 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:269 msgid "Add to library" msgstr "Zur Bibliothek hinzufügen" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:246 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:250 #: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:56 #: /home/kovid/work/calibre/src/calibre/gui2/actions/tweak_epub.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:94 @@ -3758,14 +3783,14 @@ msgstr "Zur Bibliothek hinzufügen" msgid "No book selected" msgstr "Kein Buch ausgewählt" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:259 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:263 msgid "" "The following books are virtual and cannot be added to the calibre library:" msgstr "" "Folgende Bücher sind virtuell und können nicht zur Calibre-Bibliothek " "hinzugefügt werden:" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:265 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:269 msgid "No book files found" msgstr "Keine Buch-Dateien gefunden" @@ -3779,7 +3804,7 @@ msgstr "" "Bücher aus dem angeschlossenen Gerät zur Calibre Bibliothek hinzufügen" #: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:20 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:542 msgid "Fetch annotations (experimental)" msgstr "Anmerkungen abrufen (experimentell)" @@ -3874,7 +3899,7 @@ msgid "Checking database integrity" msgstr "Überprüfe Vollständigkeit der Datenbank" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:128 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:657 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:593 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc.py:41 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:54 msgid "Error" @@ -3890,19 +3915,15 @@ msgstr "Einige Inkonsistenzen gefunden." #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:135 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." +"The following books had formats or covers listed in the database that are " +"not actually available. The entries for the formats/covers have been " +"removed. You should check them manually. This can happen if you manipulate " +"the files in the library folder directly." msgstr "" -"Die folgenden Bücher hatten Formate in der Datenbank angegeben, die " -"tatsächlich nicht verfügbar waren. Die Einträge der Formate wurden entfernt. " -"Sie sollten diese manuell überprüfen. Dies kann passieren, wenn Sie die " -"Dateien direkt im Bibliotheksverzeichnis verändern." #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:51 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:140 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:162 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:112 msgid "%d books" msgstr "%d Bücher" @@ -4085,6 +4106,10 @@ msgstr "Konvertierung nicht möglich" msgid "Starting conversion of %d book(s)" msgstr "Starte Konvertierung von %d Büchern" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:170 +msgid "Empty output file, probably the conversion process crashed" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:83 msgid "Copy to library" msgstr "In Bibliothek kopieren" @@ -4119,9 +4144,9 @@ msgid "Could not copy books: " msgstr "Konnte Bücher nicht kopieren: " #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:147 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:720 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:685 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:664 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:687 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:190 msgid "Failed" msgstr "Fehlgeschlagen" @@ -4182,14 +4207,14 @@ msgid "Main memory" msgstr "Hauptspeicher" #: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:473 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:482 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:467 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:476 msgid "Storage Card A" msgstr "Speicherkarte A" #: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:117 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:475 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:484 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:478 msgid "Storage Card B" msgstr "Speicherkarte B" @@ -4334,7 +4359,7 @@ msgid "covers" msgstr "Umschlagbilder" #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:96 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:224 msgid "metadata" msgstr "Metadaten" @@ -4437,6 +4462,7 @@ msgid "Ctrl+P" msgstr "Ctrl+P" #: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:23 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:200 msgid "Run welcome wizard" msgstr "Willkommens-Assistenten ausführen" @@ -4528,7 +4554,7 @@ msgstr "" "Klicken Sie auf die Schaltfläche Details zeigen, um zu sehen, welche es gibt." #: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:16 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:628 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:660 msgid "Show book details" msgstr "Zeige Buchdetails" @@ -4671,7 +4697,7 @@ 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:229 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:869 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:813 msgid "No books" msgstr "Keine Bücher" @@ -4970,7 +4996,7 @@ msgstr "Ausgabe" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:82 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:54 @@ -5013,7 +5039,7 @@ msgstr "Ausgabe" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar_ui.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/tweaks_ui.py:49 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:123 msgid "Form" msgstr "Art" @@ -5100,23 +5126,23 @@ msgstr "CSV/XML Einstellungen" msgid "E-book options" msgstr "eBook Einstellungen" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:83 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:78 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:84 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:79 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:85 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:80 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:86 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:81 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:87 msgid "" "Regex tips:\n" "- The default regex - \\[.+\\] - excludes genre tags of the form [tag], " @@ -5130,22 +5156,26 @@ msgstr "" "- Ein einfacher Punkt als Regex schließt alle Genre- Etiketten aus und " "erstellt keinen Genre- Abschnitt" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:90 msgid "Include 'Titles' Section" msgstr "Im Abschnitt 'Titel' einschließen" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:91 msgid "Include 'Recently Added' Section" msgstr "Im Abschnitt 'Zuletzt hinzugefügt' einschließen" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:92 msgid "Sort numbers as text" msgstr "Zahlen als Text sortieren" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:93 msgid "Include 'Series' Section" msgstr "'Serien'- Abschnitt hinzufügen" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:94 +msgid "Wishlist tag:" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:33 msgid "Tab template for catalog.ui" msgstr "Tab-Template für catalog.ui" @@ -5656,7 +5686,7 @@ msgid "Change the title of this book" msgstr "Titel dieses Buches ändern" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:179 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:335 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:336 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:377 msgid "&Author(s): " msgstr "&Autor(en): " @@ -5674,7 +5704,7 @@ msgstr "" "werden" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:182 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:345 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:388 msgid "&Publisher: " msgstr "&Herausgeber: " @@ -5685,7 +5715,7 @@ msgid "Ta&gs: " msgstr "&Etiketten: " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:184 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:346 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:347 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:390 msgid "" "Tags categorize the book. This is particularly useful while searching. " @@ -5696,7 +5726,7 @@ msgstr "" "oder Sätze verwenden." #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:185 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:354 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 msgid "&Series:" @@ -5704,8 +5734,8 @@ msgstr "&Reihen:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:354 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:356 #: /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 "List of known series. You can add new series." @@ -6230,7 +6260,7 @@ msgid "Automatically number books" msgstr "Bücher automatisch nummerieren" #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:499 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:366 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:367 msgid "Force numbers to start with " msgstr "Start der Nummerierung erzwingen bei " @@ -6246,97 +6276,103 @@ msgstr "Etiketten hinzufügen" msgid "tags to remove" msgstr "Etiketten entfernen" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:44 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:136 msgid "No details available." msgstr "Keine weiteren Informationen verfügbar." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:183 msgid "Device no longer connected." msgstr "Gerät ist nicht mehr verbunden." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:301 msgid "Get device information" msgstr "Geräteinformationen erstellen" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:312 msgid "Get list of books on device" msgstr "Liste der Bücher auf dem Gerät erstellen" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:322 msgid "Get annotations from device" msgstr "Anmerkungen vom Gerät laden" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:334 msgid "Send metadata to device" msgstr "Metadaten zum Gerät senden" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:339 msgid "Send collections to device" msgstr "Sammlungen zum Gerät schicken" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:380 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:374 msgid "Upload %d books to device" msgstr "%d Bücher auf das Gerät laden" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:395 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:389 msgid "Delete books from device" msgstr "Bücher vom Gerät löschen" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:412 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:406 msgid "Download books from device" msgstr "Bücher vom Gerät herunterladen" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:422 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:416 msgid "View book on device" msgstr "Buch auf dem Gerät ansehen" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:456 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:450 msgid "Set default send to device action" msgstr "Geben Sie die voreingestellte Übertragungsart an" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:462 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:456 msgid "Send to main memory" msgstr "An Hauptspeicher senden" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:464 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:458 msgid "Send to storage card A" msgstr "An Speicherkarte A senden" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:460 msgid "Send to storage card B" msgstr "An Speicherkarte B senden" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:471 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:480 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:465 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:474 msgid "Main Memory" msgstr "Hauptspeicher" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:492 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:486 msgid "Send specific format to" msgstr "Schicke spezifisches Format an" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:493 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:487 msgid "Send and delete from library" msgstr "Übertragen und aus der Bibliothek löschen" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:536 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:530 msgid "Eject device" msgstr "Gerät auswerfen" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:658 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:594 msgid "Error communicating with device" msgstr "Fehler bei der Kommunikation mit dem Gerät" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:679 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:605 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1089 +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:296 +msgid "No suitable formats" +msgstr "Keine geeigneten Formate" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:623 msgid "Select folder to open as device" msgstr "Verzeichnis wählen, das als Gerät geöffnet werden soll" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:726 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:670 msgid "Error talking to device" msgstr "Fehler in der Kommunikation zum Gerät" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:727 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:671 msgid "" "There was a temporary error talking to the device. Please unplug and " "reconnect the device and or reboot." @@ -6344,125 +6380,60 @@ 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/device.py:770 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:714 msgid "Device: " msgstr "Gerät: " -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:772 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:716 msgid " detected." msgstr " gefunden." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:870 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:814 msgid "selected to send" msgstr "zum Übertragen ausgewählt" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:875 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:819 msgid "Choose format to send to device" msgstr "Format wählen, das ans Gerät geschickt wird" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:884 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:828 msgid "No device" msgstr "Kein Gerät" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:885 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:829 msgid "Cannot send: No device is connected" msgstr "Übertragung schlug fehl: Kein Gerät verbunden" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:888 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:892 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:832 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:836 msgid "No card" msgstr "Keine Speicherkarte" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:889 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:893 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:833 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:837 msgid "Cannot send: Device has no storage card" msgstr "Übertragung schlug fehl: Keine Speicherkarte im Gerät" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:934 -msgid "E-book:" -msgstr "eBook:" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:937 -msgid "Attached, you will find the e-book" -msgstr "Im Anhang finden Sie das eBook" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:938 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:107 -msgid "by" -msgstr "von" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:939 -msgid "in the %s format." -msgstr "im %s Format." - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:952 -msgid "Sending email to" -msgstr "Sende eMail an" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:982 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:990 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1089 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1174 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1293 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1301 -msgid "No suitable formats" -msgstr "Keine geeigneten Formate" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:983 -msgid "Auto convert the following books before sending via email?" -msgstr "" -"Die folgenden Bücher vor dem Versenden per eMail automatisch konvertieren?" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:991 -msgid "" -"Could not email the following books as no suitable formats were found:" -msgstr "" -"Konnte die folgenden Bücher nicht versenden, da geeignete Formate fehlen:" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1009 -msgid "Failed to email books" -msgstr "Senden der Bücher schlug fehl" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1010 -msgid "Failed to email the following books:" -msgstr "Senden der folgenden Bücher schlug fehl:" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1014 -msgid "Sent by email:" -msgstr "Per eMail versendet:" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1048 -msgid "News:" -msgstr "Nachrichten:" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1049 -msgid "Attached is the" -msgstr "Im Anhang ist" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1060 -msgid "Sent news to" -msgstr "Nachrichten senden an" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1090 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1175 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1294 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:883 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:966 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1083 msgid "Auto convert the following books before uploading to the device?" msgstr "" "Die folgenden Bücher vor dem Laden auf das Gerät automatisch konvertieren?" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1120 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:912 msgid "Sending catalogs to device." msgstr "Sende Kataloge ans Gerät." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1207 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:997 msgid "Sending news to device." msgstr "Sende Nachrichten an das Gerät." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1260 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1050 msgid "Sending books to device." msgstr "Sende Bücher an das Gerät." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1302 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1090 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." @@ -6471,11 +6442,11 @@ msgstr "" "fehlen. Konvertieren Sie die Bücher zuerst in ein von Ihrem Gerät " "unterstütztes Format." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1366 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1154 msgid "No space on device" msgstr "Gerätespeicher voll" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1367 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1155 msgid "" "<p>Cannot upload books to device there is no more free space available " msgstr "" @@ -6520,15 +6491,14 @@ msgstr "Bücher nach ISBN hinzufügen" msgid "" "<p>Enter a list of ISBNs in the box to the left, one per line. calibre will " "automatically create entries for books based on the ISBN and download " -"metadata and covers for them.<p>Any invalid ISBNs in the list will be " -"ignored." +"metadata and covers for them.</p>\n" +"<p>Any invalid ISBNs in the list will be ignored.</p>\n" +"<p>You can also specify a file that will be added with each ISBN. To do this " +"enter the full path to the file after a <code>>></code>. For example:</p>\n" +"<p><code>9788842915232 >> %s</code></p>" msgstr "" -"<p>Geben Sie eine Liste von ISBNs in die linke Box ein (eine ISBN pro " -"Zeile). Calibre wird automatisch Bucheinträge basierend auf den ISBNs " -"anlegen und sowohl Metadaten als auch Buchumschläge für diese Einträge " -"herunterladen.<p>Alle ungültigen ISBNs in der Liste werden ignoriert." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:53 msgid "&Paste from clipboard" msgstr "Aus Zwischenablage einfügen" @@ -6615,7 +6585,7 @@ msgstr "Pfad der Bibliothek" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:119 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:89 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:226 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:248 msgid "Name" msgstr "Name" @@ -6669,7 +6639,7 @@ msgid "No location selected" msgstr "Kein Ort ausgewählt" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:635 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:654 msgid "Bad location" msgstr "Ungültiger Ort" @@ -6770,12 +6740,12 @@ msgid "Author sort" msgstr "Autorensortierung" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:115 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:590 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:597 msgid "Invalid author name" msgstr "Ungültiger Autorenname" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:591 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:598 msgid "Author names cannot contain & characters." msgstr "Autorennamen dürfen nicht das Zeichen & enthalten." @@ -6934,50 +6904,50 @@ msgstr "Suchen/Ersetzen" msgid "Working" msgstr "Bei der Arbeit..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:184 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:386 msgid "Lower Case" msgstr "Kleinschreibung" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:385 msgid "Upper Case" msgstr "Großschreibung" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:188 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:388 msgid "Title Case" msgstr "Wortanfänge groß schreiben" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:191 msgid "Character match" msgstr "Wortsuche" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:192 msgid "Regular Expression" msgstr "Regulärer Ausdruck" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:195 msgid "Replace field" msgstr "Feld ersetzen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:196 msgid "Prepend to field" msgstr "Vorne an das Feld anfügen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:197 msgid "Append to field" msgstr "Hinten an das Feld anhängen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:208 msgid "Editing meta information for <b>%d books</b>" msgstr "Meta-Informationen für <b>%d Bücher</b> editieren" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:259 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:261 msgid "Book %d:" msgstr "Buch %d:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:276 msgid "" "<b>You can destroy your library using this feature.</b> Changes are " "permanent. There is no undo function. You are strongly encouraged to back up " @@ -6989,7 +6959,7 @@ msgstr "" "empfehlenswert, die Bibliothek vorher zu sichern.<p>Suchen und Ersetzen in " "Textfeldern via Textsuche oder reguläre Ausdrücke. " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:282 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:284 msgid "" "In character mode, the field is searched for the entered search text. The " "text is replaced by the specified replacement text everywhere it is found in " @@ -7006,7 +6976,7 @@ msgstr "" "ist sie nicht ausgewählt, werden sowohl groß- als auch kleingeschriebene " "Vorkommen gefunden." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:295 msgid "" "In regular expression mode, the search text is an arbitrary python-" "compatible regular expression. The replacement text can contain " @@ -7033,36 +7003,36 @@ msgstr "" "Sie weitere Informationen über Pythons reguläre Ausdrücke, insbesondere die " "'sub'- Funktion." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:438 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:440 msgid "You must specify a destination when source is a composite field" msgstr "" "Sie müssen ein Zielfeld auswählen, wenn die Quelle ein zusammengesetztes " "Feld ist." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:530 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:538 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:633 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:540 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:635 msgid "Search/replace invalid" msgstr "Suchen/ersetzen ungültig" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:533 msgid "" "Authors cannot be set to the empty string. Book title %s not processed" msgstr "" "Das Autorenfeld darf nicht leer sein. Buch mit dem Titel %s wurde nicht " "verarbeitet." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:541 msgid "Title cannot be set to the empty string. Book title %s not processed" msgstr "" "Das Titelfeld darf nicht leer sein. Buch mit dem Titel %s wurde nicht " "verarbeitet." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:634 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:636 msgid "Search pattern is invalid: %s" msgstr "Suchmuster ungültig: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:671 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:673 msgid "" "Applying changes to %d books.\n" "Phase {0} {1}%%." @@ -7070,19 +7040,19 @@ msgstr "" "Wende Änderungen bei %d Büchern an.\n" "Phase {0} {1}%%." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:335 msgid "Edit Meta information" msgstr "Meta-Informationen bearbeiten" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:336 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:337 msgid "A&utomatically set author sort" msgstr "Automatisch Sortierung nach Autor setzen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:337 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:338 msgid "Author s&ort: " msgstr "S&ortierung nach Autor: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:338 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:339 msgid "" "Specify how the author(s) of this book should be sorted. For example Charles " "Dickens should be sorted as Dickens, Charles." @@ -7090,65 +7060,65 @@ 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:339 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:340 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:384 msgid "&Rating:" msgstr "&Bewertung:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:340 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:341 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:342 #: /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 "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:342 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:343 msgid "No change" msgstr "Keine Änderung" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:343 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:344 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:387 msgid " stars" msgstr " Sterne" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:346 msgid "Add ta&gs: " msgstr "Etiketten hinzufü&gen: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:347 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:349 #: /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 "Open Tag Editor" msgstr "Etiketten-Editor öffnen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:349 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:350 msgid "&Remove tags:" msgstr "Etiketten entfe&rnen:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:351 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:351 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:352 msgid "Check this box to remove all tags from the books." msgstr "Auswählen, um alle Etiketten des Buches zu entfernen." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:353 msgid "Remove all" msgstr "Alle entfernen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:357 msgid "If checked, the series will be cleared" msgstr "Wenn ausgewählt, wird der Serien- Eintrag entfernt." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:358 msgid "Clear series" msgstr "Serie löschen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:359 msgid "" "If not checked, the series number for the books will be set to 1.\n" "If checked, selected books will be automatically numbered, in the order\n" @@ -7160,11 +7130,11 @@ msgstr "" "sie ausgewählt wurden, nummeriert. Wenn Sie also zuerst Buch A und dann\n" "Buch B ausgewählt haben, wird A die Nummer 1 und B die Nummer 2 haben." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:363 msgid "Automatically number books in this series" msgstr "Bücher in dieser Reihe automatisch nummerieren" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:364 msgid "" "Series will normally be renumbered from the highest number in the database\n" "for that series. Checking this box will tell calibre to start numbering\n" @@ -7174,15 +7144,15 @@ msgstr "" "Datenbank ausgehend nummeriert. Bei Wahl dieser Option wird Calibre die\n" "Nummerierung vom Wert des Eingabefeldes aus starten." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:367 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:368 msgid "Remove &format:" msgstr "&Format entfernen:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:368 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:369 msgid "&Swap title and author" msgstr "Titel und Autor vertau&schen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:369 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:370 msgid "" "Force the title to be in title case. If both this and swap authors are " "checked,\n" @@ -7192,11 +7162,11 @@ msgstr "" "Titel und \n" "Autoren tauschen ausgewählt wird, wird die Vertauschung zuerst durchgeführt." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:371 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:372 msgid "Change title to title case" msgstr "Titel in Titelschreibweise setzen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:372 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:373 msgid "" "Remove stored conversion settings for the selected books.\n" "\n" @@ -7208,34 +7178,34 @@ msgstr "" "Für zukünftige Konvertierungen dieser Bücher werden die Voreinstellungen " "verwendet." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:375 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:376 msgid "Remove &stored conversion settings for the selected books" msgstr "" "Ge&speicherte Konvertierungs-Einstellungen für die gewählten Bücher löschen" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:377 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:424 msgid "&Basic metadata" msgstr "&Basis-Metadaten" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:377 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:378 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:425 msgid "&Custom metadata" msgstr "Ben&utzerdefinierte Metadaten" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:379 msgid "Search &field:" msgstr "Such&feld:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:379 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:380 msgid "The name of the field that you want to search" msgstr "Name des zu durchsuchenden Feldes" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:380 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:381 msgid "Search mode:" msgstr "Suchmodus:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:381 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:382 msgid "" "Choose whether to use basic text matching or advanced regular expression " "matching" @@ -7243,11 +7213,11 @@ msgstr "" "Auswählen, ob Wortsuche oder Suche mittels regulären Ausdrücken angewandt " "werden soll." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:383 msgid "&Search for:" msgstr "&Suchen nach:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:383 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:384 msgid "" "Enter the what you are looking for, either plain text or a regular " "expression, depending on the mode" @@ -7255,7 +7225,7 @@ msgstr "" "Hier Text, nach dem gesucht werden soll, eingeben, je nach Modus einfacher " "Text oder einen regulären Ausdruck" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:385 msgid "" "Check this box if the search string must match exactly upper and lower case. " "Uncheck it if case is to be ignored" @@ -7263,15 +7233,15 @@ msgstr "" "Auswählen, wenn der Suchtext auf Groß/Kleinschreibung achten soll, abwählen, " "wenn dies ignoriert werden soll" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:386 msgid "Case sensitive" msgstr "Groß/Kleinschreibung" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:386 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:387 msgid "&Replace with:" msgstr "E&rsetzen durch:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:387 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:388 msgid "" "The replacement text. The matched search text will be replaced with this " "string" @@ -7279,11 +7249,11 @@ msgstr "" "Der Ersetzungstext. Die Vorkommen des Suchtextes werden durch diesen Text " "ersetzt" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:389 msgid "Apply function after replace:" msgstr "Funktion nach Ersetzung anwenden:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:390 msgid "" "Specify how the text is to be processed after matching and replacement. In " "character mode, the entire\n" @@ -7295,11 +7265,11 @@ msgstr "" "wird das gesamte Feld verarbeitet, im Modus regulärer Ausdruck wird nur der " "gefundene Text verarbeitet." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:391 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:392 msgid "&Destination field:" msgstr "&Zielfeld:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:392 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:393 msgid "" "The field that the text will be put into after all replacements. If blank, " "the source field is used." @@ -7307,15 +7277,15 @@ msgstr "" "Das Feld, in das der Text nach allen Ersetzungen geschrieben wird. Wenn " "leer, wird das Ursprungsfeld benutzt." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:394 msgid "Mode:" msgstr "Modus:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:394 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:395 msgid "Specify how the text should be copied into the destination." msgstr "Bestimmen Sie, wie der Text in das Zielfeld geschrieben wird." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:395 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:396 msgid "" "If the replace mode is prepend or append, then this box indicates whether a " "comma or\n" @@ -7325,23 +7295,23 @@ msgstr "" "Box, ob ein\n" "Komma oder nichts zwischen dem Originaltext und dem eingefügten Text steht." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:397 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:398 msgid "use comma" msgstr "Komma benutzen." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:398 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:399 msgid "Test &text" msgstr "Test &text" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:399 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:400 msgid "Test re&sult" msgstr "Te&stergebnis" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:400 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:401 msgid "Your test:" msgstr "Ihr Test:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:401 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:402 msgid "&Search and replace" msgstr "&Suchen und Ersetzen" @@ -7632,20 +7602,21 @@ msgstr "Passwort erforderlich" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:217 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:125 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133 msgid "&Username:" msgstr "Ben&utzername:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:64 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:218 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:126 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:135 msgid "&Password:" msgstr "&Passwort:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:219 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:167 msgid "&Show password" msgstr "Pa&sswort anzeigen" @@ -8119,12 +8090,12 @@ msgid "%s (was %s)" msgstr "%s (war %s)" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:580 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:587 msgid "Item is blank" msgstr "Eintrag ist leer" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:581 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:588 msgid "An item cannot be set to nothing. Delete it instead." msgstr "" "Ein Element kann nicht auf nichts eingestellt werden. Löschen Sie es " @@ -8210,7 +8181,7 @@ msgid "Discard changes" msgstr "Änderungen verwerfen" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tweak_epub_ui.py:60 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:225 msgid "&Cancel" msgstr "&Abbruch" @@ -8420,6 +8391,62 @@ msgstr "" msgid "Recipe source code (python)" msgstr "Source Code (Python) des Schemas" +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:145 +msgid "Email %s to %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:187 +msgid "News:" +msgstr "Nachrichten:" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:189 +msgid "Attached is the %s periodical downloaded by calibre." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:242 +msgid "E-book:" +msgstr "eBook:" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:245 +msgid "Attached, you will find the e-book" +msgstr "Im Anhang finden Sie das eBook" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:246 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:107 +msgid "by" +msgstr "von" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:247 +msgid "in the %s format." +msgstr "im %s Format." + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:260 +msgid "Sending email to" +msgstr "Sende eMail an" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:290 +msgid "Auto convert the following books before sending via email?" +msgstr "" +"Die folgenden Bücher vor dem Versenden per eMail automatisch konvertieren?" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:297 +msgid "" +"Could not email the following books as no suitable formats were found:" +msgstr "" +"Konnte die folgenden Bücher nicht versenden, da geeignete Formate fehlen:" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:303 +msgid "Failed to email book" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:306 +msgid "sent" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:329 +msgid "Sent news to" +msgstr "Nachrichten senden an" + #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:112 msgid "" "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" " @@ -8617,23 +8644,23 @@ msgstr "Kann Aufträge, die mit dem Gerät kommunizieren, nicht abbrechen" msgid "Job has already run" msgstr "Auftrag wird schon ausgeführt" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:262 msgid "Unavailable" msgstr "Nicht verfügbar" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:294 msgid "Jobs:" msgstr "Aufträge:" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:296 msgid "Shift+Alt+J" msgstr "Shift+Alt+J" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:313 msgid "Click to see list of jobs" msgstr "Klicken, um Jobliste anzuzeigen" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:371 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:382 msgid " - Jobs" msgstr " - Aufträge" @@ -8659,7 +8686,7 @@ msgid "Show books in the main memory of the device" msgstr "Zeige Bücher im Hauptspeicher des Geräts" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:67 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:848 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:820 msgid "Card A" msgstr "Karte A" @@ -8668,7 +8695,7 @@ msgid "Show books in storage card A" msgstr "Zeige Bücher auf Speicherkarte A" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:69 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:850 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:822 msgid "Card B" msgstr "Karte B" @@ -8752,7 +8779,7 @@ msgstr "Buch %s von %s" #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:693 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1236 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:407 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:414 msgid "The lookup/search name is \"{0}\"" msgstr "Der Such-Name ist \"{0}\"" @@ -8854,7 +8881,7 @@ msgid "<b>No matches</b> for the search phrase <i>%s</i> were found." msgstr "<b>Keine Treffer</b> für die Suchworte <i>%s</i> gefunden." #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:446 msgid "No matches found" msgstr "Keine Treffer gefunden" @@ -8871,12 +8898,12 @@ msgid "LRF Viewer toolbar" msgstr "LRF Viewer Symbolleiste" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:487 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:503 msgid "Next Page" msgstr "Nächste Seite" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:488 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:504 msgid "Previous Page" msgstr "Vorherige Seite" @@ -8920,7 +8947,7 @@ msgid "Do not check for updates" msgstr "Nicht nach Updates suchen" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:643 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:662 msgid "Calibre Library" msgstr "Calibre Bibliothek" @@ -9059,37 +9086,37 @@ msgstr "Buch hat weder Titel noch ISBN" msgid "No matches found for this book" msgstr "Keine Treffer für dieses Buch" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:191 msgid "Failed to download metadata" msgstr "Download der Metadaten fehlgeschlagen" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:224 msgid "cover" msgstr "Umschlagbild" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:225 msgid "Downloaded" msgstr "Heruntergeladen" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:225 msgid "Failed to get" msgstr "Herunterladen fehlgeschlagen" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:225 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:229 msgid "%s %s for: %s" msgstr "%s %s für: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:284 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:288 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:162 msgid "Done" msgstr "Fertig" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:289 msgid "Successfully downloaded metadata for %d out of %d books" msgstr "Erfolgreich Metadaten heruntergeladen für %d von %d Büchern" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:287 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:627 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:291 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:659 msgid "Details" msgstr "Einzelheiten" @@ -9647,27 +9674,27 @@ msgstr "&Text unter Symbolen anzeigen:" msgid "&Split the toolbar into two toolbars" msgstr "&Werkzeugleiste in zwei Leisten teilen" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:222 msgid "&Apply" msgstr "&Anwenden" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:229 msgid "Restore &defaults" msgstr "Voreinstellungen wie&derherstellen" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:230 msgid "Save changes" msgstr "Änderungen speichern" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:231 msgid "Cancel and return to overview" msgstr "Abbrechen und zur Übersicht zurückkehren" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:259 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:269 msgid "Restoring to defaults not supported for" msgstr "Voreinstellungen wiederherstellen wird nicht unterstützt für" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:304 msgid "" "Some of the changes you made require a restart. Please restart calibre as " "soon as possible." @@ -9675,7 +9702,7 @@ msgstr "" "Einige Ihrer Änderungen erfordern einen Neustart. Bitte starten Sie Calibre " "so früh wie möglich neu." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:307 msgid "" "The changes you have made require calibre be restarted immediately. You will " "not be allowed set any more preferences, until you restart." @@ -9683,7 +9710,7 @@ msgstr "" "Ihre Änderungen erfordern einen sofortigen Neustart von Calibre. Sie können " "keine Einstellungen mehr ändern, bevor Sie neu starten." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:312 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:120 msgid "Restart needed" msgstr "Neustart erforderlich" @@ -10043,7 +10070,7 @@ msgstr "" "überschrieben werden." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:331 msgid "Failed to start content server" msgstr "Content Server konnte nicht gestartet werden" @@ -10264,7 +10291,7 @@ msgstr "Aktuelle &Optimierungen" #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:97 #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:270 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:574 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:250 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:272 msgid "Search" msgstr "Suche" @@ -10362,26 +10389,22 @@ msgstr "Löschen" msgid "&Alternate shortcut:" msgstr "&Alternatives Tastenkürzel:" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:202 msgid "Rename '%s'" msgstr "Benenne '%s' um" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:206 msgid "Edit sort for '%s'" msgstr "Sortierung nach '%s' bearbeiten" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:211 msgid "Hide category %s" msgstr "Kategorie %s ausblenden" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:214 msgid "Show category" msgstr "Kategorie anzeigen" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:216 -msgid "Show all categories" -msgstr "Alle Kategorien anzeigen" - #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:223 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:227 msgid "Manage %s" @@ -10396,58 +10419,62 @@ msgstr "Gespeicherte Suchen verwalten" msgid "Manage User Categories" msgstr "Benutzer-Kategorien verwalten" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:248 +msgid "Show all categories" +msgstr "Alle Kategorien anzeigen" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:458 msgid "" "Changing the authors for several books can take a while. Are you sure?" msgstr "" "Das Ändern der Autoren für mehrere Bücher kann einige Zeit dauern. Sind Sie " "sicher?" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:456 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:463 msgid "" "Changing the metadata for that many books can take a while. Are you sure?" msgstr "" "Das Ändern der Metadaten für so viele Bücher kann einige Zeit dauern. Sind " "Sie sicher?" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:512 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:519 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:296 msgid "Searches" msgstr "Suchergebnisse" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:595 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:602 msgid "Duplicate search name" msgstr "Such-Name duplizieren" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:596 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:603 msgid "The saved search name %s is already used." msgstr "Der gespeicherte Such-Name %s wird schon verwendet." -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:871 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:878 msgid "Sort by name" msgstr "Nach Name sortieren" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:871 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:878 msgid "Sort by popularity" msgstr "Nach Beliebtheit sortieren" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:872 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:879 msgid "Sort by average rating" msgstr "Nach Bewertungsdurchschnitt sortieren" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:875 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:882 msgid "Set the sort order for entries in the Tag Browser" msgstr "Reihenfolge der Einträge im Etiketten- Browser einstellen" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:888 msgid "Match all" msgstr "Übereinstimmung mit allen" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:888 msgid "Match any" msgstr "Übereinstimmung mit irgendeinem" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:886 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:893 msgid "" "When selecting multiple entries in the Tag Browser match any or all of them" msgstr "" @@ -10455,11 +10482,11 @@ msgstr "" "entweder Bücher, bei denen mindestens ein Eintrag paßt, oder aber Bücher, " "bei denen alle Einträge passen" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:890 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:897 msgid "Manage &user categories" msgstr "Ben&utzer-Kategorien verwalten" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:893 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:900 msgid "Add your own categories to the Tag Browser" msgstr "Eigene Kategorien zum Etiketten- Browser hinzufügen" @@ -10506,28 +10533,28 @@ msgstr "" "Die folgenden Bücher wurden schon in das %s Format konvertiert. Möchten Sie " "sie erneut konvertieren?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:171 msgid "&Restore" msgstr "&Wiederherstellen" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:173 msgid "&Donate to support calibre" msgstr "Spen&den Sie, um Calibre zu unterstützen" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:177 msgid "&Eject connected device" msgstr "Verbundenes Gerät ausw&erfen" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:218 msgid "Calibre Quick Start Guide" msgstr "Calibre Quick-Start-Guide" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:437 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:465 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:439 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:450 msgid "Conversion Error" msgstr "Konvertierungsfehler" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:438 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:451 msgid "" "<p>Could not convert: %s<p>It is a <a href=\"%s\">DRM</a>ed book. You must " "first remove the DRM using third party tools." @@ -10536,15 +10563,15 @@ msgstr "" "href=\"%s\">DRM</a> geschütztes Buch. Sie müssen zuerst das DRM mit Hilfe " "anderer Programme entfernen." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:465 msgid "Recipe Disabled" msgstr "Downloadschema ausgeschalten" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:481 msgid "<b>Failed</b>" msgstr "<b>Misslungen</b>" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:517 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. " @@ -10555,12 +10582,12 @@ msgstr "" "Unterstützung der weiteren Entwicklung. Ihre Spende hilft, die Entwicklung " "von Calibre am Laufen zu halten." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:528 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:543 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:531 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:546 msgid "" " is communicating with the device!<br>\n" " Quitting may cause corruption on the device.<br>\n" @@ -10571,11 +10598,11 @@ msgstr "" "verursachen.<br>\n" " Sind Sie sicher, dass sie beenden möchten?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:550 msgid "WARNING: Active jobs" msgstr "WARNUNG: Aktive Aufträge" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:613 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:628 msgid "" "will keep running in the system tray. To close it, choose <b>Quit</b> in the " "context menu of the system tray." @@ -10756,17 +10783,17 @@ msgstr "Tasten&kürzel" msgid "No results found for:" msgstr "Kein Ergebnis gefunden für:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:36 msgid "Options to customize the ebook viewer" msgstr "Einstellungen zum Anpassen des eBook Viewers" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:708 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:711 msgid "Remember last used window size" msgstr "Zuletzt verwendete Fenstergröße merken" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:44 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:82 msgid "" "Set the user CSS stylesheet. This can be used to customize the look of all " "books." @@ -10774,80 +10801,80 @@ msgstr "" "Geben Sie das Benutzerlayout als CSS an. Verwenden Sie dies zur Anpassung " "des Aussehens aller Bücher." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 msgid "Maximum width of the viewer window, in pixels." msgstr "Maximale Bildschirmbreite in Punkt." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 msgid "Resize images larger than the viewer window to fit inside it" msgstr "Bilder, die größer als das Viewer-Fenster sind, passend verkleinern" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:50 msgid "Hyphenate text" msgstr "Silbentrennung" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:52 msgid "Default language for hyphenation rules" msgstr "Voreingestellte Sprache für die Regeln der Silbentrennung" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:54 msgid "Font options" msgstr "Schrifteinstellungen" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:56 msgid "The serif font family" msgstr "Serife Schriftartfamilie" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:58 msgid "The sans-serif font family" msgstr "Serifenlose Schriftartfamilie" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 msgid "The monospaced font family" msgstr "Nichtproportionale Schriftartfamilie" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:61 msgid "The standard font size in px" msgstr "Standardschriftgröße in Punkt" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:62 msgid "The monospaced font size in px" msgstr "Nichtproportionale Schriftgröße in Punkt" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:63 msgid "The standard font type" msgstr "Standardschriftart" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:463 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:479 msgid "&Lookup in dictionary" msgstr "Im Wörterbuch nachsch&lagen" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:482 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:138 msgid "Go to..." msgstr "Gehe zu..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:478 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:494 msgid "Next Section" msgstr "Nächster Abschnitt" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:479 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:495 msgid "Previous Section" msgstr "Vorheriger Abschnitt" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:481 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:497 msgid "Document Start" msgstr "Beginn des Dokuments" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:482 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:498 msgid "Document End" msgstr "Ende des Dokuments" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:484 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:500 msgid "Section Start" msgstr "Beginn des Abschnitts" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:485 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:501 msgid "Section End" msgstr "Ende des Abschnitts" @@ -10917,89 +10944,89 @@ msgstr "" msgid "Search for text in book" msgstr "Suche nach Text im Buch" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:275 msgid "Print Preview" msgstr "Druckvorschau" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:309 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:312 msgid "Connecting to dict.org to lookup: <b>%s</b>…" msgstr "Verbinde mit dict.org zum Nachschlagen von: <b>%s</b>…" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:410 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:413 msgid "Choose ebook" msgstr "eBook wählen" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:411 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:414 msgid "Ebooks" msgstr "eBooks" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:444 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:447 msgid "No matches found for: %s" msgstr "Keine Treffer gefunden für: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:485 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:488 msgid "Loading flow..." msgstr "Lade Ablauf..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:524 msgid "Laying out %s" msgstr "Lege %s an" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:555 msgid "Bookmark #%d" msgstr "#%d zu Lesezeichen hinzufügen" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:556 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:559 msgid "Add bookmark" msgstr "Lesezeichen hinzufügen" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:560 msgid "Enter title for bookmark:" msgstr "Titel für Lesezeichen eingeben:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:567 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:570 msgid "Manage Bookmarks" msgstr "Lesezeichen verwalten" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:604 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 msgid "Loading ebook..." msgstr "Lade eBook..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:612 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:615 msgid "DRM Error" msgstr "DRM Fehler" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:613 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:616 msgid "<p>This book is protected by <a href=\"%s\">DRM</a>" msgstr "<p>Dieses Buch ist geschützt durch <a href=\"%s\">DRM</a>" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:617 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:620 msgid "Could not open ebook" msgstr "Konnte eBook nicht öffnen" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:695 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:698 msgid "Options to control the ebook viewer" msgstr "Einstellungen zur Kontrolle des eBook Viewers" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:702 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:705 msgid "" "If specified, viewer window will try to come to the front when started." msgstr "" "Falls angegeben, dann wird das Viewer Fenster beim Start im Vordergrund " "angezeigt." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:705 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:708 msgid "" "If specified, viewer window will try to open full screen when started." msgstr "" "Wenn ausgewählt, wird das Betrachter- Fenster nach Möglichkeit im " "Vollbildmodus geöffnet." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:710 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:713 msgid "Print javascript alert and console messages to the console" msgstr "Javascript Alarme und Konsolennachrichten auf der Konsole ausgeben" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:716 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:719 msgid "" "%prog [options] file\n" "\n" @@ -11117,7 +11144,7 @@ msgstr "Ausblenden" msgid "Toggle" msgstr "Umschalten" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:400 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 " @@ -11127,7 +11154,7 @@ msgstr "" "können Sie auf ihre Calibre Büchersammlung direkt vom Gerät aus zugreifen. " "Dazu müssen Sie den Calibre Content Server einschalten." -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:404 msgid "" "Remember to leave calibre running as the server only runs as long as calibre " "is running." @@ -11135,7 +11162,7 @@ msgstr "" "Denken Sie daran, Calibre gestartet zu lassen, da der Server nur solange " "läuft, wie auch Calibre läuft." -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:391 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:406 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 " @@ -11145,20 +11172,20 @@ msgstr "" "WordPlayer hinzufügen. Dabei sollte myhostname der vollständige Servername " "oder die IP-Adresse des Rechners sein, auf dem Calibre läuft." -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:468 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:483 msgid "Moving library..." msgstr "Verschiebe Bibliothek..." -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:484 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:485 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:499 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:500 msgid "Failed to move library" msgstr "Verschieben der Bibliothek schlug fehl" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:554 msgid "Invalid database" msgstr "Ungültige Datenbank" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:540 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:555 msgid "" "<p>An invalid library already exists at %s, delete it before trying to move " "the existing library.<br>Error: %s" @@ -11166,22 +11193,22 @@ msgstr "" "<p>Eine ungültige Bibliothek ist schon in %s vorhanden, löschen Sie sie " "bevor Sie die aktuelle Bibliothek verschieben.<br>Fehler: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:566 msgid "Could not move library" msgstr "Konnte Bibliothek nicht verschieben" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:622 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:641 msgid "Select location for books" msgstr "Speicherort für Bücher wählen" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:636 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:655 msgid "" "You must choose an empty folder for the calibre library. %s is not empty." msgstr "" "Sie müssen für die Calibre- Bibliothek einen leeren Ordner wählen. %s ist " "nicht leer." -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:710 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:729 msgid "welcome wizard" msgstr "Willkommens-Assistent" @@ -11268,11 +11295,9 @@ msgstr "Wäh&len Sie Ihre Sprache:" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:58 msgid "" -"Choose a location for your books. When you add books to calibre, they will " -"be copied here:" +"<p>Choose a location for your books. When you add books to calibre, they " +"will be copied here. Use an <b>empty folder</b> for a new calibre library:" msgstr "" -"Wählen Sie einen Speicherort für Ihre Bücher. Wenn Sie Bücher zu Calibre " -"hinzufügen, werden sie hierhin kopiert:" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 msgid "&Change" @@ -11288,50 +11313,72 @@ msgstr "" "Speicherort kopiert. Falls am neuen Speicherort schon eine Calibre " "Bibliothek besteht, wird Calibre diese verwenden." -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:34 msgid "Using: %s:%s@%s:%s and %s encryption" msgstr "Gebrauch von: %s:%s@%s:%s und %s Verschlüsselung" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:37 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:39 msgid "Sending..." msgstr "Übermittlung läuft..." -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:44 msgid "Mail successfully sent" msgstr "eMail erfolgreich verschickt" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:124 -msgid "Finish gmail setup" -msgstr "Googlemail Setup abschließen" - -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:136 msgid "" -"Dont forget to enter your gmail username and password. You can sign up for a " -"free gmail account at http://gmail.com" +"If you are setting up a new hotmail account, you must log in to it once " +"before you will be able to send mails." msgstr "" -"Vergessen Sie nicht, Ihren Googlemail Benutzernamen und Ihr Passwort " -"einzugeben. Sie können ein kostenloses Konto bei http://mail.google.com " -"erstellen." -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:147 +msgid "" +"You can sign up for a free {name} email account at <a " +"href=\"http://{url}\">http://{url}</a>. {extra}" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:154 +msgid "Your %s &email address:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:155 +msgid "Your %s &username:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:156 +msgid "Your %s &password:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:174 +msgid "" +"If you plan to use email to send books to your Kindle, remember to add the " +"your %s email address to the allowed email addresses in your Amazon.com " +"Kindle management page." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:181 +msgid "Setup" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:203 msgid "Bad configuration" msgstr "Schlechte Einstellung" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:197 msgid "You must set the From email address" msgstr "Sie müssen die eMail-Adresse des Absenders angeben" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:204 msgid "You must set the username and password for the mail server." msgstr "" "Sie müssen den Benutzernamen und das Passwort für den Mailserver angeben." -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:124 msgid "Send email &from:" msgstr "eMail senden &von:" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:125 msgid "" "<p>This is what will be present in the From: field of emails sent by " "calibre.<br> Set it to your email address" @@ -11339,7 +11386,7 @@ msgstr "" "<p>Dies steht im \"Von\" Feld (Absender) von mit Calibre versendeten " "eMails.<br> Geben Sie Ihre eMail-Adresse an" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:126 msgid "" "<p>A mail server is useful if the service you are sending mail to only " "accepts email from well know mail services." @@ -11347,52 +11394,52 @@ msgstr "" "<p>Ein Mailserver ist nützlich, wenn der Diensteanbieter, an den Sie die " "eMail senden, nur eMails von bekannten eMail-Diensteanbietern annimmt." -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:127 msgid "Mail &Server" msgstr "Mail&server" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:128 msgid "calibre can <b>optionally</b> use a server to send mail" msgstr "" "Calibre kann <b>wahlweise</b> einen Server zum Versenden von Nachrichten " "verwenden" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:129 msgid "&Hostname:" msgstr "&Rechnername:" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:130 msgid "The hostname of your mail server. For e.g. smtp.gmail.com" msgstr "Der Servername Ihres Mailservers. Z.B. smtp.gmail.com" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:131 msgid "&Port:" msgstr "&Port:" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:132 msgid "" "The port your mail server listens for connections on. The default is 25" msgstr "" "Der Anschluss (Port) auf dem Ihr Mailserver auf Verbindungen wartet. " "Voreinstellung ist 25" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:134 msgid "Your username on the mail server" msgstr "Ihr Benutzername auf dem Mailserver" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:136 msgid "Your password on the mail server" msgstr "Ihr Passwort auf dem Mailserver" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:137 msgid "&Show" msgstr "An&zeigen" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:138 msgid "&Encryption:" msgstr "V&erschlüsselung:" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:139 msgid "" "Use TLS encryption when connecting to the mail server. This is the most " "common." @@ -11400,23 +11447,35 @@ msgstr "" "TLS-Verschlüsselung für die Verbindung zum Mailserver verwenden. Dies trifft " "meistens zu." -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:140 msgid "&TLS" msgstr "&TLS" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:141 msgid "Use SSL encryption when connecting to the mail server." msgstr "SSL Verschlüsselung für die Verbindung zum Mailserver verwenden." -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:142 msgid "&SSL" msgstr "&SSL" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:143 +msgid "WARNING: Using no encryption is highly insecure" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:144 +msgid "&None" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:145 msgid "Use Gmail" msgstr "Googlemail verwenden" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:146 +msgid "Use Hotmail" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:147 msgid "&Test email" msgstr "Email &testen" @@ -11483,7 +11542,7 @@ msgstr "leer" msgid "empty" msgstr "leer" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:48 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:50 msgid "" "The fields to output when cataloging books in the database. Should be a " "comma-separated list of fields.\n" @@ -11497,7 +11556,7 @@ msgstr "" "Standard: '%%default'\n" "Betrifft: CSV und XML Ausgabeformate" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:58 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:60 msgid "" "Output field to sort on.\n" "Available fields: author_sort, id, rating, size, timestamp, title.\n" @@ -11509,7 +11568,7 @@ msgstr "" "Voreinstellung: '%default'\n" "Wird angewendet auf: CSV, XML Ausgabeformate" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:212 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:214 msgid "" "The fields to output when cataloging books in the database. Should be a " "comma-separated list of fields.\n" @@ -11523,7 +11582,7 @@ msgstr "" "Standard: '%%default'\n" "Betrifft: BibTeX Ausgabeformat" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:222 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:224 msgid "" "Output field to sort on.\n" "Available fields: author_sort, id, rating, size, timestamp, title.\n" @@ -11535,7 +11594,7 @@ msgstr "" "Standard: '%default'\n" "Angewendet bei: BibTeX- Ausgabeformat" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:231 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:233 msgid "" "Create a citation for BibTeX entries.\n" "Boolean value: True, False\n" @@ -11547,7 +11606,7 @@ msgstr "" "Standard: '%default'\n" "Angewendet bei: BibTeX- Ausgabeformat" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:240 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:242 msgid "" "The template for citation creation from database fields.\n" " Should be a template with {} enclosed fields.\n" @@ -11561,7 +11620,7 @@ msgstr "" "Standard: '%%default'\n" "Angewendet bei: BibTeX- Ausgabeformat" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:250 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:252 msgid "" "BibTeX file encoding output.\n" "Available types: utf8, cp1252, ascii.\n" @@ -11573,7 +11632,7 @@ msgstr "" "Voreingestellt: '%default'\n" "Betrifft: BIBTEX Ausgabe-Format" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:259 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:261 msgid "" "BibTeX file encoding flag.\n" "Available types: strict, replace, ignore, backslashreplace.\n" @@ -11585,7 +11644,7 @@ msgstr "" "Standard: '%default'\n" "Angewendet bei: BibTeX- Ausgabeformat" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:268 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:270 msgid "" "Entry type for BibTeX catalog.\n" "Available types: book, misc, mixed.\n" @@ -11597,7 +11656,7 @@ msgstr "" "Standard: '%default'\n" "Angewendet bei: BibTeX- Ausgabeformat" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:536 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:540 msgid "" "Title of generated catalog used as title in metadata.\n" "Default: '%default'\n" @@ -11607,7 +11666,7 @@ msgstr "" "Standard: '%default'\n" "Betrifft: ePub und MOBI Ausgabeformate" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:543 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:547 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 " @@ -11621,7 +11680,7 @@ msgstr "" "Standard: '%default'Nirgends\n" "Betrifft: ePub und MOBI Ausgabeformate" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:553 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:557 msgid "" "Regex describing tags to exclude as genres.\n" "Default: '%default' excludes bracketed tags, e.g. '[<tag>]'\n" @@ -11632,7 +11691,7 @@ msgstr "" "'[<tag>]'\n" "Betrifft: ePub und MOBI Ausgabeformate" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:559 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:563 msgid "" "Comma-separated list of tag words indicating book should be excluded from " "output. Case-insensitive.\n" @@ -11648,7 +11707,7 @@ msgstr "" "Voreinstellung: '%default'\n" "Betrifft: ePub und MOBI Ausgabeformate" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:567 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:571 msgid "" "Include 'Titles' section in catalog.\n" "Default: '%default'\n" @@ -11658,7 +11717,7 @@ msgstr "" "Standard: '%default'\n" "Betrifft: ePub und MOBI Ausgabeformate" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:574 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:578 msgid "" "Include 'Series' section in catalog.\n" "Default: '%default'\n" @@ -11668,7 +11727,7 @@ msgstr "" "Standard: '%default'\n" "Angewendet bei: ePub-, MOBI- Ausgabeformaten" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:581 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:585 msgid "" "Include 'Recently Added' section in catalog.\n" "Default: '%default'\n" @@ -11678,7 +11737,7 @@ msgstr "" "Standard: '%default'\n" "Betrifft: ePub und MOBI Ausgabeformate" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:588 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:592 msgid "" "Tag prefix for user notes, e.g. '*Jeff might enjoy reading this'.\n" "Default: '%default'\n" @@ -11689,7 +11748,7 @@ msgstr "" "Standard: '%default'\n" "Betrifft: ePub und MOBI Ausgabeformate" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:595 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:599 msgid "" "Sort titles with leading numbers as text, e.g.,\n" "'2001: A Space Odyssey' sorts as \n" @@ -11703,7 +11762,7 @@ msgstr "" "Voreinstellung: '%default'\n" "Gilt für: ePub, MOBI Ausgabeformate" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:602 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:606 msgid "" "Specifies the output profile. In some cases, an output profile is required " "to optimize the catalog for the device. For example, 'kindle' or " @@ -11719,7 +11778,7 @@ msgstr "" "Standard: '%default'\n" "Betrifft: ePub und MOBI Ausgabeformate" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:609 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:613 msgid "" "Tag indicating book has been read.\n" "Default: '%default'\n" @@ -11729,6 +11788,13 @@ msgstr "" "Voreinstellung: '%default'\n" "Gilt für: ePub, MOBI Ausgabeformate" +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:619 +msgid "" +"Tag indicating book to be displayed as wishlist item.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/library/check_library.py:17 msgid "Invalid titles" msgstr "Ungültige Titel" @@ -12458,35 +12524,35 @@ msgstr "" "Der Suchname darf ausschließlich Kleinbuchstaben, Zahlen und Unterstriche " "enthalten und muß mit einem Buchstaben anfangen." -#: /home/kovid/work/calibre/src/calibre/library/database2.py:82 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:57 msgid "%sAverage rating is %3.1f" msgstr "%sdie durchschnittliche Bewertung ist %3.1f" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:846 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:818 msgid "Main" msgstr "Haupt" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2321 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2310 msgid "<p>Migrating old database to ebook library in %s<br><center>" msgstr "<p>Migriere alte Datenbank zu eBook Bibliothek in %s<br><center>" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2350 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2339 msgid "Copying <b>%s</b>" msgstr "Kopiere <b>%s</b>" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2367 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2356 msgid "Compacting database" msgstr "Komprimiere Datenbank" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2460 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2449 msgid "Checking SQL integrity..." msgstr "Überprüfe SQL Vollständigkeit..." -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2499 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2488 msgid "Checking for missing files." msgstr "Überprüfe fehlende Dateien." -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2521 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2516 msgid "Checked id" msgstr "Überprüfte ID" @@ -12715,129 +12781,129 @@ msgstr "" "Vor alle URLs angehängter Prefix. Nützlich für reverse proxy- Anwendung des " "Servers von Apache/ngingx/etc. aus." -#: /home/kovid/work/calibre/src/calibre/library/server/base.py:150 -msgid "Password to access your calibre library. Username is " -msgstr "" -"Kennwort für den Zugriff auf die Calibre Bibliothek. Benutzername ist " - -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:51 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:405 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:59 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:437 msgid "Loading, please wait" msgstr "Lade, bitte warten" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:80 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:85 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:106 +msgid "Go to" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:101 msgid "First" msgstr "Erste" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:80 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:101 msgid "Last" msgstr "Letzte" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:80 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:101 msgid "Previous" msgstr "Vorherige" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:81 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:102 msgid "Next" msgstr "Nächste" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:83 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:104 msgid "Browsing %d books" msgstr "Zeige %d Bücher" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:99 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:225 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:121 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:247 msgid "Average rating" msgstr "Durchschnittliche Bewertung" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:100 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:122 msgid "%s: %.1f stars" msgstr "%s: %.1f Sterne" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:133 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:155 msgid "%d stars" msgstr "%d Sterne" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:226 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:248 msgid "Popularity" msgstr "Beliebtheit" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:245 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:267 msgid "Sort by" msgstr "Sortieren nach" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:248 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:270 msgid "library" msgstr "Bibliothek" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:249 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:271 msgid "home" msgstr "Startseite" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:310 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:516 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:332 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:548 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569 msgid "Newest" msgstr "Neuestes" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:311 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:517 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:333 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:549 msgid "All books" msgstr "Alle Bücher" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:344 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:366 msgid "Browse books by" msgstr "Zeige Bücher nach" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:349 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:371 msgid "Choose a category to browse by:" msgstr "Kategorie zum Anzeigen wählen:" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:425 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:457 msgid "Browsing by" msgstr "Zeige nach" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:426 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:458 msgid "Up" msgstr "Hoch" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:547 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:579 msgid "in" msgstr "in" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:550 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:582 msgid "Books in" msgstr "Bücher in" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:602 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:634 msgid "Other formats" msgstr "Andere Formate" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:609 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:641 msgid "Read %s in the %s format" msgstr "Lese %s im %s Format" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:614 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:646 msgid "Get" msgstr "Holen" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:629 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:661 msgid "Permalink" msgstr "Permalink" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:630 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:662 msgid "A permanent link to this book" msgstr "Ein permanenter Link zu diesem Buch" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:641 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:673 msgid "This book has been deleted" msgstr "Dieses Buch wurde gelöscht" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:725 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:757 msgid "in search" msgstr "in Suche" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:727 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:759 msgid "Matching books" msgstr "Passende Bücher" @@ -13177,7 +13243,7 @@ msgstr "Konnte SSH Sitzung nicht abschließen: " msgid "Failed to authenticate with server: %s" msgstr "Authentifizierung schlug fehl am Server: %s" -#: /home/kovid/work/calibre/src/calibre/utils/smtp.py:234 +#: /home/kovid/work/calibre/src/calibre/utils/smtp.py:249 msgid "Control email delivery" msgstr "eMail Versand kontrollieren" @@ -15382,6 +15448,18 @@ msgstr "CSS-Stylesheets nicht herunterladen." #~ "Konnte die folgenden Bücher nicht versenden, da keine passenden Formate " #~ "vorhanden:<br><ul>%s</ul>" +#~ msgid "Failed to email books" +#~ msgstr "Senden der Bücher schlug fehl" + +#~ msgid "Failed to email the following books:" +#~ msgstr "Senden der folgenden Bücher schlug fehl:" + +#~ msgid "Sent by email:" +#~ msgstr "Per eMail versendet:" + +#~ msgid "Attached is the" +#~ msgstr "Im Anhang ist" + #~ msgid "" #~ "Email\n" #~ "Delivery" @@ -15389,6 +15467,9 @@ msgstr "CSS-Stylesheets nicht herunterladen." #~ "eMail\n" #~ "Versand" +#~ msgid "Finish gmail setup" +#~ msgstr "Googlemail Setup abschließen" + #~ msgid "Dont forget to enter your gmail username and password" #~ msgstr "" #~ "Vergessen Sie nicht, Ihren Googlemail Benutzernamen und Ihr Passwort " @@ -15746,6 +15827,13 @@ msgstr "CSS-Stylesheets nicht herunterladen." #~ msgid "Click to see the books available on your computer" #~ msgstr "Liste der auf dem Computer vorhandenen Bücher anzeigen" +#~ msgid "" +#~ "Choose a location for your books. When you add books to calibre, they will " +#~ "be copied here:" +#~ msgstr "" +#~ "Wählen Sie einen Speicherort für Ihre Bücher. Wenn Sie Bücher zu Calibre " +#~ "hinzufügen, werden sie hierhin kopiert:" + #~ msgid "Catalan" #~ msgstr "Katalanisch" @@ -15825,6 +15913,14 @@ msgstr "CSS-Stylesheets nicht herunterladen." #~ "href=\"http://calibre.kovidgoyal.net/user_manual/gui.html#the-search-" #~ "interface\">Benutzer Handbuch</a> für weitere Hilfe" +#~ msgid "" +#~ "Dont forget to enter your gmail username and password. You can sign up for a " +#~ "free gmail account at http://gmail.com" +#~ msgstr "" +#~ "Vergessen Sie nicht, Ihren Googlemail Benutzernamen und Ihr Passwort " +#~ "einzugeben. Sie können ein kostenloses Konto bei http://mail.google.com " +#~ "erstellen." + #~ msgid "Communicate with the Cybook Opus eBook reader." #~ msgstr "Kommunikation mit dem Cybook Opus eBook Reader." @@ -15834,6 +15930,17 @@ msgstr "CSS-Stylesheets nicht herunterladen." #~ msgid "Add/Save" #~ msgstr "Hinzufügen/Speichern" +#~ 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 "" +#~ "Die folgenden Bücher hatten Formate in der Datenbank angegeben, die " +#~ "tatsächlich nicht verfügbar waren. Die Einträge der Formate wurden entfernt. " +#~ "Sie sollten diese manuell überprüfen. Dies kann passieren, wenn Sie die " +#~ "Dateien direkt im Bibliotheksverzeichnis verändern." + #~ msgid "TabWidget" #~ msgstr "TabWidget" @@ -15924,6 +16031,10 @@ msgstr "CSS-Stylesheets nicht herunterladen." #~ msgid "calibre" #~ msgstr "Calibre" +#~ msgid "Password to access your calibre library. Username is " +#~ msgstr "" +#~ "Kennwort für den Zugriff auf die Calibre Bibliothek. Benutzername ist " + #~ msgid "" #~ "[options]\n" #~ "\n" @@ -16043,6 +16154,14 @@ msgstr "CSS-Stylesheets nicht herunterladen." #~ msgid "English (TH)" #~ msgstr "Englisch (TH)" +#~ 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 "" +#~ "Durchschnittliche Zeilenlänge für den Zeilenumbruch falls das HTML von einer " +#~ "zuvor nur teilweise konvertierten PDF-Datei stammt. Voreinstellung ist " +#~ "%default was dies ausschaltet." + #~ msgid "Options to control e-book conversion." #~ msgstr "Einstellungen zur Kontrolle der eBook-Konvertierung." @@ -16454,6 +16573,17 @@ msgstr "CSS-Stylesheets nicht herunterladen." #~ msgid "Run the check" #~ msgstr "Überprüfung starten" +#~ msgid "" +#~ "<p>Enter a list of ISBNs in the box to the left, one per line. calibre will " +#~ "automatically create entries for books based on the ISBN and download " +#~ "metadata and covers for them.<p>Any invalid ISBNs in the list will be " +#~ "ignored." +#~ msgstr "" +#~ "<p>Geben Sie eine Liste von ISBNs in die linke Box ein (eine ISBN pro " +#~ "Zeile). Calibre wird automatisch Bucheinträge basierend auf den ISBNs " +#~ "anlegen und sowohl Metadaten als auch Buchumschläge für diese Einträge " +#~ "herunterladen.<p>Alle ungültigen ISBNs in der Liste werden ignoriert." + #~ msgid "" #~ "Book formats and metadata from the selected books will be merged into the " #~ "<b>first selected book</b>. ISBN will <i>not</i> be merged.<br><br>After " diff --git a/src/calibre/translations/es.po b/src/calibre/translations/es.po index bf383dd5f5..df742bfe80 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-11-27 20:21+0000\n" -"PO-Revision-Date: 2010-11-27 17:43+0000\n" -"Last-Translator: DiegoJ <diegojromerolopez@gmail.com>\n" +"PO-Revision-Date: 2010-11-29 04:44+0000\n" +"Last-Translator: Fitoschido <Unknown>\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-11-28 04:47+0000\n" +"X-Launchpad-Export-Date: 2010-11-29 04:48+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:502 @@ -3902,6 +3902,10 @@ msgid "" "removed. You should check them manually. This can happen if you manipulate " "the files in the library folder directly." msgstr "" +"Los siguientes libros tenían formatos o portadas en la base de datos que no " +"estaban disponibles en realidad. Las entradas de los formatos o portadas se " +"han eliminado. Debería comprobarlos manualmente. Esto puede suceder si " +"manipula directamente los ficheros en la carpeta de la biblioteca." #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:51 @@ -6468,6 +6472,14 @@ msgid "" "enter the full path to the file after a <code>>></code>. For example:</p>\n" "<p><code>9788842915232 >> %s</code></p>" msgstr "" +"<p>Introduzca una lista de ISBN en el cuadro de la izquierda, uno por línea. " +"calibre creará automáticamente entradas para libros basándose en el ISBN y " +"descargará sus metadatos y portadas.</p>\n" +"<p>Cualquier ISBN no válido en la lista se omitirá.</p>\n" +"<p>También puede especificar un fichero para añadir con cada ISBN. Para ello " +"introduzca la ruta completa al fichero después de <code>>></code>. Por " +"ejemplo:</p>\n" +"<p><code>9788842915232 >> %s</code></p>" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:53 msgid "&Paste from clipboard" @@ -8375,7 +8387,7 @@ msgstr "Noticias:" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:189 msgid "Attached is the %s periodical downloaded by calibre." -msgstr "" +msgstr "Se adjunta el fichero de %s descargado por calibre." #: /home/kovid/work/calibre/src/calibre/gui2/email.py:242 msgid "E-book:" @@ -11272,6 +11284,9 @@ msgid "" "<p>Choose a location for your books. When you add books to calibre, they " "will be copied here. Use an <b>empty folder</b> for a new calibre library:" msgstr "" +"<p>Elija una ubicación para sus libros. Cuando añada libros en calibre, se " +"copiarán aquí. Use una <b>carpeta vacía</b> para una biblioteca de calibre " +"nueva:" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 msgid "&Change" @@ -11484,7 +11499,7 @@ msgstr "today" #: /home/kovid/work/calibre/src/calibre/library/caches.py:368 msgid "yesterday" -msgstr "yesterday" +msgstr "ayer" #: /home/kovid/work/calibre/src/calibre/library/caches.py:371 msgid "thismonth" diff --git a/src/calibre/translations/fr.po b/src/calibre/translations/fr.po index fda8edd7c0..565d894183 100644 --- a/src/calibre/translations/fr.po +++ b/src/calibre/translations/fr.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre 0.4.22\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-11-27 20:21+0000\n" -"PO-Revision-Date: 2010-11-27 11:43+0000\n" +"PO-Revision-Date: 2010-11-28 08:41+0000\n" "Last-Translator: sengian <Unknown>\n" "Language-Team: Français <kde-i18n-doc@kde.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-28 04:47+0000\n" +"X-Launchpad-Export-Date: 2010-11-29 04:47+0000\n" "X-Generator: Launchpad (build Unknown)\n" "X-Poedit-Bookmarks: 1177,1104,-1,-1,-1,-1,-1,-1,-1,-1\n" "Generated-By: pygettext.py 1.5\n" @@ -8493,7 +8493,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:306 msgid "sent" -msgstr "" +msgstr "envoyé" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:329 msgid "Sent news to" @@ -11552,7 +11552,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:144 msgid "&None" -msgstr "" +msgstr "Aucu&n" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:145 msgid "Use Gmail" diff --git a/src/calibre/translations/gl.po b/src/calibre/translations/gl.po index 6f7e15661f..012822b6d8 100644 --- a/src/calibre/translations/gl.po +++ b/src/calibre/translations/gl.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-11-19 21:23+0000\n" -"PO-Revision-Date: 2010-11-19 23:41+0000\n" +"POT-Creation-Date: 2010-11-27 20:21+0000\n" +"PO-Revision-Date: 2010-11-28 21:19+0000\n" "Last-Translator: Antón Méixome <meixome@gmail.com>\n" "Language-Team: Galician <gl@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-21 04:47+0000\n" +"X-Launchpad-Export-Date: 2010-11-29 04:48+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -27,7 +27,7 @@ msgstr "Non facer nada" #: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:74 #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:76 #: /home/kovid/work/calibre/src/calibre/devices/kobo/books.py:24 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:444 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:448 #: /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 @@ -55,7 +55,7 @@ msgstr "Non facer nada" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:36 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:61 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:50 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:354 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:357 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:36 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 @@ -74,9 +74,9 @@ msgstr "Non facer nada" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:78 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:119 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:153 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:620 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:826 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:828 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:627 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:833 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:835 #: /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:913 @@ -89,7 +89,7 @@ msgstr "Non facer nada" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:118 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:173 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:174 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:40 #: /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 @@ -109,8 +109,8 @@ msgstr "Non facer nada" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:98 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:300 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:302 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:304 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:306 #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:355 #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:362 #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:279 @@ -121,15 +121,15 @@ msgstr "Non facer nada" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:114 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:141 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:936 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:945 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1252 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1255 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1039 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1042 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:571 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:244 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:376 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:395 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:918 @@ -138,13 +138,13 @@ msgstr "Non facer nada" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:189 #: /home/kovid/work/calibre/src/calibre/library/cli.py:215 #: /home/kovid/work/calibre/src/calibre/library/database.py:914 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:374 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:386 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1255 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1359 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2145 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2147 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2279 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:375 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:387 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1254 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1355 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2151 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2153 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2284 #: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:229 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:139 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:142 @@ -185,9 +185,9 @@ msgstr "Acción da interface de usuario" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:386 #: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:22 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:251 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:283 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:206 msgid "Preferences" msgstr "Preferencias" @@ -267,45 +267,45 @@ msgstr "Define os metadatos nos ficheiros %s" msgid "Set metadata from %s files" msgstr "Define os metadatos desde os ficheiros %s" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:713 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:717 msgid "Look and Feel" msgstr "Aparencia e comportamento" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:715 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:727 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:738 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:749 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:719 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:731 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:742 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:753 msgid "Interface" msgstr "Interface" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:719 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:723 msgid "Adjust the look and feel of the calibre interface to suit your tastes" msgstr "" "Axuste a aparencia e comportamento da interface do Calibre para que se " "adapte aos seus gustos" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:725 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:729 msgid "Behavior" msgstr "Comportamento" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:731 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735 msgid "Change the way calibre behaves" msgstr "Cambiar o modo en que se comporta o Calibre" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:736 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:740 #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:209 msgid "Add your own columns" msgstr "Engadir as súas propias columnas" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:742 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746 msgid "Add/remove your own columns to the calibre book list" msgstr "Engadir/retirar as columnas propias da lista de libros do Calibre" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:747 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:751 msgid "Customize the toolbar" msgstr "Personalizar a barra de ferramentas" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:753 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:757 msgid "" "Customize the toolbars and context menus, changing which actions are " "available in each" @@ -313,60 +313,60 @@ msgstr "" "Personalizar as barras de ferramentas e os menús de contexto, cambiando as " "accións que estarán dispoñíbeis en cada un" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:759 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:763 msgid "Input Options" msgstr "Opcións de entrada" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:761 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:772 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:783 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:765 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:776 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:787 msgid "Conversion" msgstr "Conversión" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:765 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769 msgid "Set conversion options specific to each input format" msgstr "" "Estabelecer as opcións de conversión específicas para cada formato de entrada" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:770 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:774 msgid "Common Options" msgstr "Opcións comúns" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:776 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780 msgid "Set conversion options common to all formats" msgstr "Estabelecer as opcións de conversión comúns para todos os formatos" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:781 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:785 msgid "Output Options" msgstr "Opcións de saída" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:787 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791 msgid "Set conversion options specific to each output format" msgstr "" "Estabelece as opcións específicas de conversión para cada formato de saída" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:792 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:796 msgid "Adding books" msgstr "Adición de libros" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:794 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:806 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:818 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:830 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:798 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:810 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:822 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:834 msgid "Import/Export" msgstr "Importar/exportar" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:798 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:802 msgid "Control how calibre reads metadata from files when adding books" msgstr "" "Controla o modo como Calibre le os metadatos dos ficheiros na proceso de " "adición de libros" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:804 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:808 msgid "Saving books to disk" msgstr "Gardado de libros no disco" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:810 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:814 msgid "" "Control how calibre exports files from its database to disk when using Save " "to disk" @@ -374,33 +374,33 @@ msgstr "" "Controla o modo como Calibre exporta ficheiros da súa base de datos no " "disco no proceso de Gardado no disco" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:816 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:820 msgid "Sending books to devices" msgstr "Envío de libros a dispositivos" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:822 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:826 msgid "Control how calibre transfers files to your ebook reader" msgstr "" "Controla cando Calibre transfere os ficheiros ao seu lector de libros" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:828 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:832 msgid "Metadata plugboards" msgstr "Plugboards de metadatos" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:834 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838 msgid "Change metadata fields before saving/sending" msgstr "Cambiar campos de metadatos antes do gardado/envío" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:839 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:843 msgid "Sharing books by email" msgstr "Compartición de libros por correo" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:841 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:853 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:845 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:857 msgid "Sharing" msgstr "Compartición" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:845 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:849 msgid "" "Setup sharing of books via email. Can be used for automatic sending of " "downloaded news to your devices" @@ -408,11 +408,11 @@ msgstr "" "Configura a compartición de libros por correo electrónico. Pódese usar para " "enviar automticamente as noticias descargadas aos seus dispositivos" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:851 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:855 msgid "Sharing over the net" msgstr "Compartición na rede" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:857 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:861 msgid "" "Setup the calibre Content Server which will give you access to your calibre " "library from anywhere, on any device, over the internet" @@ -421,33 +421,33 @@ msgstr "" "biblioteca do Calibre en calquera lugar, con calquera dispositivo, a través " "da Internet." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:864 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:868 msgid "Plugins" msgstr "Complementos" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:866 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:878 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:889 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:870 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:882 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:893 msgid "Advanced" msgstr "Avanzado" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:870 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:874 msgid "Add/remove/customize various bits of calibre functionality" msgstr "Engadir/eliminar/configurar diversas funcións do Calibre" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:876 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:880 msgid "Tweaks" msgstr "Axustes" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:882 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886 msgid "Fine tune how calibre behaves in various contexts" msgstr "Axuste fino de como se comporta o Calibre en diversos contextos" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:887 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:891 msgid "Miscellaneous" msgstr "Miscelánea" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:893 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:897 msgid "Miscellaneous advanced configuration" msgstr "Configuración miscelánea avanzada" @@ -611,7 +611,11 @@ msgstr "" msgid "This profile is intended for the Amazon Kindle DX." msgstr "Este perfil é o propio o Amazon Kindle DX." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:686 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:684 +msgid "This profile is intended for the B&N Nook Color." +msgstr "Este perfil está orientado a B&N Nook Color." + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:695 msgid "This profile is intended for the Sanda Bambook." msgstr "Este perfil está pensado para o Sandra Bambook." @@ -779,16 +783,16 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:257 #: /home/kovid/work/calibre/src/calibre/library/database2.py:187 #: /home/kovid/work/calibre/src/calibre/library/database2.py:200 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2005 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2015 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:149 msgid "News" msgstr "Noticias" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2554 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:558 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1968 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1986 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:560 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1978 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1996 msgid "Catalog" msgstr "Catálogo" @@ -816,7 +820,7 @@ msgstr "Comunicarse co lector de libros electrónico Cybook Gen 3 / Opus." #: /home/kovid/work/calibre/src/calibre/devices/cybook/driver.py:64 msgid "Communicate with the Cybook Orizon eBook reader." -msgstr "" +msgstr "Comunicar co lector Cybook Orizon." #: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:24 msgid "Communicate with the EB600 eBook reader." @@ -830,6 +834,10 @@ msgstr "Conectar co Astak Mentor EB600" msgid "Communicate with the PocketBook 301 reader." msgstr "Conectar co lector PocketBook 301." +#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:233 +msgid "Communicate with the PocketBook 602 reader." +msgstr "Comunicar co lector PocketBook 602." + #: /home/kovid/work/calibre/src/calibre/devices/edge/driver.py:17 msgid "Entourage Edge" msgstr "Entourage Edge" @@ -890,8 +898,8 @@ msgstr "Comunicar co lector SpringDesign Alex eBook." #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:102 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:113 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:264 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:296 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:268 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:300 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:256 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:274 msgid "Removing books from device..." @@ -980,26 +988,26 @@ msgstr "" msgid "Getting list of books on device..." msgstr "Obtendo a lista de libros do dispositivo..." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:300 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:307 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:304 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:311 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:281 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:286 msgid "Removing books from device metadata listing..." msgstr "Eliminando libros da lista de metatados do dispositivo..." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:312 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:347 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:316 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:351 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:219 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:250 msgid "Adding books to device metadata listing..." msgstr "Engadindo libros á lista de metatados do dispositivo..." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:424 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:258 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:428 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:262 msgid "Not Implemented" msgstr "Non implementado" -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:425 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:429 msgid "" "\".kobo\" files do not exist on the device as books instead, they are rows " "in the sqlite database. Currently they cannot be exported or viewed." @@ -1040,6 +1048,10 @@ msgstr "Comunicar con VelocityMono" msgid "Communicate with the GM2000" msgstr "Comunicar co GM2000" +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:180 +msgid "Communicate with the Acer Lumiread" +msgstr "Comunicar co Acer Lumiread" + #: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:17 msgid "Communicate with the Nokia 770 internet tablet." msgstr "Comunicar coa táboa de internet Nokia 770." @@ -2286,7 +2298,7 @@ msgid "Path to output file" msgstr "Camiño 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:128 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:126 msgid "Verbose processing" msgstr "Procesado por petición" @@ -2517,7 +2529,7 @@ msgstr "Comentarios" #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:313 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1127 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:160 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:645 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:655 msgid "Tags" msgstr "Etiquetas" @@ -2668,6 +2680,7 @@ msgid "No cover found" msgstr "Non se achou capa ningunha" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:28 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:44 msgid "Cover download" msgstr "Descarga de portada" @@ -2737,19 +2750,19 @@ msgstr "descrición/críticas" msgid "Download %s from %s" msgstr "Descargar %s desde %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:149 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:150 msgid "Convert comments downloaded from %s to plain text" msgstr "Coverter os comentarios descargados de %s a texto simple" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:175 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:178 msgid "Downloads metadata from Google Books" msgstr "Descarga os metadatos do Google Books" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:192 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:195 msgid "Downloads metadata from isbndb.com" msgstr "Descara os metadatos de isbndb.com" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:220 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:223 msgid "" "To use isbndb.com you must sign up for a %sfree account%s and enter your " "access key below." @@ -2757,16 +2770,16 @@ msgstr "" "Para empregar o isbndb.com, é preciso ter unha %sconta gratuíta%s e escribir " "a súa chave de acceso abaixo." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:230 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:233 msgid "Downloads social metadata from amazon.com" msgstr "Descarga os metadatos de amazon.com" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:251 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:254 msgid "Downloads series/tags/rating information from librarything.com" msgstr "" "Descargar a información de series, etiquetas e puntuación de librarything.com" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:109 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:107 msgid "" "\n" "%prog [options] key\n" @@ -2790,23 +2803,24 @@ msgstr "" "Isbndb.com.\n" "\n" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:120 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:118 msgid "The ISBN ID of the book you want metadata for." msgstr "O ISBN do libro cuxos metatados se precisan." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:122 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:120 msgid "The author whose book to search for." msgstr "O autor cuxo libro se pretende procurar." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:124 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:122 msgid "The title of the book to search for." msgstr "O título do libro polo que procurar." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:126 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:124 msgid "The publisher of the book to search for." msgstr "A editorial do libro polo que procurar." #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:77 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:336 msgid " not found." msgstr " non se achou." @@ -2824,6 +2838,23 @@ msgstr "" "Obtén metadatos sociais ou imaxes para o libro identificado polo ISBN a " "través de LibraryThing.com\n" +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:25 +msgid "Downloads metadata from french Nicebooks" +msgstr "Descarga metadatos en francés de Nicebooks" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:41 +msgid "Downloads covers from french Nicebooks" +msgstr "Descarga portadas en francés de Nicebooks" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:332 +msgid "Nicebooks timed out. Try again later." +msgstr "" +"O tempo de conexión con Nicebooks esgotouse. Ténteo de máis tarde de novo." + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:337 +msgid "An errror occured with Nicebooks cover fetcher" +msgstr "Produciuse un erro ao tentar obter as portadas de Nicebooks" + #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 msgid "Cover" @@ -2951,7 +2982,7 @@ msgstr "Opcións da xeración HTM TOC" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:71 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:643 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:653 msgid "Rating" msgstr "Avaliación" @@ -2984,7 +3015,7 @@ msgstr "Notas a rodapé." msgid "Sidebar" msgstr "Barra lateral" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:22 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:23 #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/input.py:23 #: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:24 msgid "" @@ -2995,7 +3026,7 @@ msgstr "" "parágrafo. Con esta opción interprétase que cada liña representa un " "parágrafo." -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:26 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:28 msgid "" @@ -3556,7 +3587,7 @@ msgid "Disable UI animations" msgstr "Desactivar as animacións UI" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:499 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:509 msgid "Copied" msgstr "Copiado" @@ -3624,89 +3655,89 @@ msgstr "Cantos libros baleiros?" msgid "How many empty books should be added?" msgstr "Cantos libros baleiros deben ser engadidos?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:143 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:206 msgid "Uploading books to device." msgstr "Subindo libros ao dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:170 msgid "Books" msgstr "Libros" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:165 msgid "EPUB Books" msgstr "Libros de EPUB" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 msgid "LRF Books" msgstr "Libros de LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:167 msgid "HTML Books" msgstr "Libros de HTML" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:168 msgid "LIT Books" msgstr "Libros de LIT" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:169 msgid "MOBI Books" msgstr "Libros de MOBI" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:170 msgid "Topaz books" msgstr "Libros de Topaz" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:171 msgid "Text books" msgstr "Libros de Text" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:172 msgid "PDF Books" msgstr "Libros de PDF" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:173 msgid "SNB Books" msgstr "Libros SNB" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:174 msgid "Comics" msgstr "Comics" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:175 msgid "Archives" msgstr "Arquivos" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:179 msgid "Supported books" msgstr "Libros compatibles" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:215 msgid "Merged some books" msgstr "Combinar varios libros" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:216 msgid "" "Some duplicates were found and merged into the following existing books:" msgstr "" "Acháronse algúns libros duplicados e uníronse as seguintes libros existentes:" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:225 msgid "Failed to read metadata" msgstr "Fallou ao ler os metadatos" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:226 msgid "Failed to read metadata from the following" msgstr "Fallouse ao ler os metadatos dos libros seguintes" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:241 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:246 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:265 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:250 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:269 msgid "Add to library" msgstr "Engadir á biblioteca" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:246 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:250 #: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:56 #: /home/kovid/work/calibre/src/calibre/gui2/actions/tweak_epub.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:94 @@ -3714,14 +3745,14 @@ msgstr "Engadir á biblioteca" msgid "No book selected" msgstr "Non se seleccionou ningún libro" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:259 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:263 msgid "" "The following books are virtual and cannot be added to the calibre library:" msgstr "" "Os seguintes libros son virtuais e non se poden engadir á biblioteca de " "Calibre:" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:265 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:269 msgid "No book files found" msgstr "Non se achou ningún ficheiro de libro" @@ -3734,7 +3765,7 @@ msgid "Add books to your calibre library from the connected device" msgstr "Engadir libros á biblioteca do Calibre desde o dispositivo conectado" #: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:20 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:542 msgid "Fetch annotations (experimental)" msgstr "Obter anotacións (experimental)" @@ -3831,7 +3862,7 @@ msgid "Checking database integrity" msgstr "A comprobar a integridade da base de datos" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:128 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:656 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:593 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc.py:41 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:54 msgid "Error" @@ -3847,15 +3878,15 @@ msgstr "Atopáronse algunhas incosistencias" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:135 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." +"The following books had formats or covers listed in the database that are " +"not actually available. The entries for the formats/covers have been " +"removed. You should check them manually. This can happen if you manipulate " +"the files in the library folder directly." msgstr "" -"Os libros seguintes teñen formatos especificados na base de datos que non " -"están actualmente dispoñíbeis. Elimináronse as entradas para os formatos e, " -"por tanto, debe comprobalos manualmente. Isto adoita acontecer ao manipular " -"directamente os ficheiros na biblioteca." +"Os seguintes libros tiñan formatos ou portadas na base de datos que non " +"estaban dispoñíbeis en realidade. As entradas dos formatos ou portadas " +"elimináronse. Debería comprobalos manualmente. Isto pode suceder se manipula " +"directamente os ficheiros no cartafol da biblioteca." #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:51 @@ -4038,6 +4069,12 @@ msgstr "Non se pode converter" msgid "Starting conversion of %d book(s)" msgstr "Esta a comezar a conversión de %d libros(s)" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:170 +msgid "Empty output file, probably the conversion process crashed" +msgstr "" +"O ficheiro de saída está baleiro, probablemente o proceso de conversión " +"fallou" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:83 msgid "Copy to library" msgstr "Copiar á biblioteca" @@ -4072,7 +4109,7 @@ msgid "Could not copy books: " msgstr "No se puideron copiar estes libros: " #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:147 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:729 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:664 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:687 #: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:190 msgid "Failed" @@ -4135,14 +4172,14 @@ msgid "Main memory" msgstr "Memoria principal" #: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:472 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:481 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:467 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:476 msgid "Storage Card A" msgstr "Tarxeta de almacenaxe A" #: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:117 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:474 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:483 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:478 msgid "Storage Card B" msgstr "Tarxeta de almacenaxe B" @@ -4387,6 +4424,7 @@ msgid "Ctrl+P" msgstr "Ctrl + P" #: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:23 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:200 msgid "Run welcome wizard" msgstr "Lanzar o asistente de benvida" @@ -4475,7 +4513,7 @@ msgid "Click the show details button to see which ones." msgstr "Prema o botón de amosar detalles para os ver." #: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:16 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:650 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:660 msgid "Show book details" msgstr "Amosar os detalles do libro" @@ -4617,7 +4655,7 @@ msgid "The specified directory could not be processed." msgstr "Non se puido procesar o directorio especificado." #: /home/kovid/work/calibre/src/calibre/gui2/add.py:229 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:878 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:813 msgid "No books" msgstr "Sen libros" @@ -4959,7 +4997,7 @@ msgstr "saída" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar_ui.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/tweaks_ui.py:49 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:123 msgid "Form" msgstr "Formulario" @@ -4994,7 +5032,7 @@ msgstr "ignorar" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:94 msgid "backslashreplace" -msgstr "" +msgstr "substituirbarradeitadadereita" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:95 msgid "BibTeX entry type:" @@ -5095,7 +5133,7 @@ msgstr "Incluír a sección \"Serie\"" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:94 msgid "Wishlist tag:" -msgstr "" +msgstr "Etiqueta de desexo:" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:33 msgid "Tab template for catalog.ui" @@ -5857,11 +5895,11 @@ msgstr "Non amosar o número de capítulo" #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:41 msgid "Insert space before the first line for each paragraph" -msgstr "" +msgstr "Insira un espazo antes da primeira liña de cada parágrafo" #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:42 msgid "Insert empty line between paragraphs" -msgstr "" +msgstr "Inserir unha liña baleira entre parágrafos" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17 msgid "" @@ -6190,103 +6228,103 @@ msgstr "etiquetas para engadir" msgid "tags to remove" msgstr "etiquetas para borrar" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:44 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:136 msgid "No details available." msgstr "Non hai detalles dispoñíbeis" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:183 msgid "Device no longer connected." msgstr "O dispositivo non está conectado." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:301 msgid "Get device information" msgstr "Obter a información do dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:317 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:312 msgid "Get list of books on device" msgstr "Obter unha relación de libros do dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:327 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:322 msgid "Get annotations from device" msgstr "Obter as anotacións do dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:339 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:334 msgid "Send metadata to device" msgstr "Enviar os metadatos ao dispostivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:339 msgid "Send collections to device" msgstr "Enviar as coleccións ao dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:379 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:374 msgid "Upload %d books to device" msgstr "Cargar %d libros do dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:394 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:389 msgid "Delete books from device" msgstr "Borrar libros do dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:411 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:406 msgid "Download books from device" msgstr "Descargar libros do dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:421 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:416 msgid "View book on device" msgstr "Ver libro no dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:455 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:450 msgid "Set default send to device action" msgstr "Establecer a acción de enviar ao dispositivo por defecto" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:461 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:456 msgid "Send to main memory" msgstr "Enviar á memoria principal" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:463 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:458 msgid "Send to storage card A" msgstr "Enviar á tarxeta de almacenaxe A" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:465 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:460 msgid "Send to storage card B" msgstr "Enviar á tarxeta de almacenaxe B" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:470 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:479 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:465 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:474 msgid "Main Memory" msgstr "Memoria principal" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:491 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:486 msgid "Send specific format to" -msgstr "" +msgstr "Enviar o formato especifico para" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:492 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:487 msgid "Send and delete from library" msgstr "Enviar e borrar da biblioteca" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:530 msgid "Eject device" msgstr "Extraer dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:657 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:594 msgid "Error communicating with device" msgstr "Erro ao conectar co dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:670 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:997 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1302 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:605 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1089 +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:296 msgid "No suitable formats" msgstr "Non hai formatos axeitados" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:688 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:623 msgid "Select folder to open as device" msgstr "Escoller o cartafol para abrir co como dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:735 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:670 msgid "Error talking to device" msgstr "Erro ao conectar co dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:736 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:671 msgid "" "There was a temporary error talking to the device. Please unplug and " "reconnect the device and or reboot." @@ -6294,118 +6332,60 @@ msgstr "" "Produciuse un erro temporal na comunicación co dispositivo. Desconecte e " "volva conectar o dispositovo e/ou reinícieo." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:779 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:714 msgid "Device: " msgstr "Dispositivo: " -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:781 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:716 msgid " detected." msgstr " detectado" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:879 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:814 msgid "selected to send" msgstr "seleccionado para enviar" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:884 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:819 msgid "Choose format to send to device" msgstr "Elixa formato para enviar ao dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:893 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:828 msgid "No device" msgstr "Sen dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:894 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:829 msgid "Cannot send: No device is connected" msgstr "Non se pode enviar: non hai ningún dispositivo conectado" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:897 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:901 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:832 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:836 msgid "No card" msgstr "Sen tarxeta" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:898 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:902 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:833 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:837 msgid "Cannot send: Device has no storage card" msgstr "Non de pode enviar: o dispositivo non ten tarxeta de memoria" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:943 -msgid "E-book:" -msgstr "Libro electrónico:" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:946 -msgid "Attached, you will find the e-book" -msgstr "O libro electrónico está anexo" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:947 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:107 -msgid "by" -msgstr "por" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:948 -msgid "in the %s format." -msgstr "no formato %s." - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:961 -msgid "Sending email to" -msgstr "Enviando correo a" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:991 -msgid "Auto convert the following books before sending via email?" -msgstr "" -"Desexa converter automaticamente os seguintes libros antes de os enviar por " -"correo?" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:998 -msgid "" -"Could not email the following books as no suitable formats were found:" -msgstr "" -"Non se puideron enviar por correo os libros seguintes xa que non se achou ou " -"formato correcto." - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1016 -msgid "Failed to email books" -msgstr "Fallou ao enviar por correo os libros" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1017 -msgid "Failed to email the following books:" -msgstr "Fallou ao enviar por correo os libros seguintes:" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1021 -msgid "Sent by email:" -msgstr "Enviar por correo:" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1055 -msgid "News:" -msgstr "Novas:" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1056 -msgid "Attached is the" -msgstr "Anexo está o" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1067 -msgid "Sent news to" -msgstr "Enviar novas a" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1096 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1179 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1296 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:883 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:966 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1083 msgid "Auto convert the following books before uploading to the device?" msgstr "" "Desexa converter os libros seguintes antes de os enviar ao dispositivo?" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1125 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:912 msgid "Sending catalogs to device." msgstr "A enviar catálogos ao dispositivo." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1210 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:997 msgid "Sending news to device." msgstr "A enviar novas ao dispositivo." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1263 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1050 msgid "Sending books to device." msgstr "A enviar libros ao dispositivo." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1303 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1090 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." @@ -6414,11 +6394,11 @@ msgstr "" "atoparon formatos compatíbeis. Converta o ou os libros a un formato " "compatíbel co dispositivo." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1367 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1154 msgid "No space on device" msgstr "Non hai espazo no dispositivo" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1368 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1155 msgid "" "<p>Cannot upload books to device there is no more free space available " msgstr "" @@ -6463,15 +6443,22 @@ msgstr "Engadir libros polo ISBN" msgid "" "<p>Enter a list of ISBNs in the box to the left, one per line. calibre will " "automatically create entries for books based on the ISBN and download " -"metadata and covers for them.<p>Any invalid ISBNs in the list will be " -"ignored." +"metadata and covers for them.</p>\n" +"<p>Any invalid ISBNs in the list will be ignored.</p>\n" +"<p>You can also specify a file that will be added with each ISBN. To do this " +"enter the full path to the file after a <code>>></code>. For example:</p>\n" +"<p><code>9788842915232 >> %s</code></p>" msgstr "" -"<p>Introduza unha lista de ISBN no cadro da esquerda, un por liña. Calibre " +"<p>Introduza unha lista de ISBN no cadro da esquerda, un por liña. O Calibre " "creará automaticamente entradas para os libros baseándose no ISBN e " -"descargará os metadatos e portadas.<p>Os ISBN da lista que non sexan válidos " -"serán ignorados." +"descargará os seus metadatos e portadas.</p>\n" +"<p>Calquera ISBN incorrecto na lista omitirase.</p>\n" +"<p>Tamén pode especificar un ficheiro para engadir con cada ISBN. Para iso " +"introduza a ruta completa do ficheiro tras <code>>></code>. Por " +"exemplo:</p>\n" +"<p><code>9788842915232 >> %s</code></p>" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:53 msgid "&Paste from clipboard" msgstr "&Pegar do portapapeis" @@ -6538,6 +6525,8 @@ msgstr "Nombres para ignorar:" msgid "" "Enter comma-separated standard file name wildcards, such as synctoy*.dat" msgstr "" +"Introduza nomes de ficheiro estándares como comodín, separados por coma, tal " +"como synctoy*.dat" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:62 msgid "Extensions to ignore" @@ -6548,6 +6537,8 @@ msgid "" "Enter comma-separated extensions without a leading dot. Used only in book " "folders" msgstr "" +"Introduza as extensións separadas por comas, sen o punto. Úsase unicamente " +"en cartafoles de libros" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:119 msgid "Path from library" @@ -6608,7 +6599,7 @@ msgid "No location selected" msgstr "Non seleccionou unha localización" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:640 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:654 msgid "Bad location" msgstr "Localización incorrecta" @@ -6708,12 +6699,12 @@ msgid "Author sort" msgstr "Ordenar por autoría" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:115 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:590 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:597 msgid "Invalid author name" msgstr "Nombre de autor incorrecto" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:591 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:598 msgid "Author names cannot contain & characters." msgstr "Os nombres de autores non poden conter caracteres \"&\"." @@ -6919,6 +6910,11 @@ msgid "" "your library before proceeding.<p>Search and replace in text fields using " "character matching or regular expressions. " msgstr "" +"<b>Pode destruír a súa biblioteca usando esta funcionalidade.</b> Os cambios " +"son permanentes. Non hai función de desfacer. Recoméndaselle fortemente " +"realizar unha copia de seguranza da súa biblioteca antes de " +"continuar.<p>Buscar e substituír en campos de texto usando ocorrencias de " +"caracteres ou expresións regulares. " #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:284 msgid "" @@ -7117,10 +7113,14 @@ msgid "" "checked,\n" "title and author are swapped before the title case is set" msgstr "" +"Fai que o título teña a inicial maiúscula. Se tanto esta caixa como a de " +"intercambiar\n" +"autor e título están marcadas, primeiro intercámbianse e logo cámbiase o " +"título." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:372 msgid "Change title to title case" -msgstr "" +msgstr "Cambiar o título a inicial maiúscula" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:373 msgid "" @@ -7149,45 +7149,52 @@ msgstr "Metadatos &personalizados" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:379 msgid "Search &field:" -msgstr "" +msgstr "Campo de &busca:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:380 msgid "The name of the field that you want to search" -msgstr "" +msgstr "O nome do campo no que buscar" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:381 msgid "Search mode:" -msgstr "" +msgstr "Modo de busca:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:382 msgid "" "Choose whether to use basic text matching or advanced regular expression " "matching" msgstr "" +"Escolla se quere usar o modo básico de busca de texto ou o modo avanzado de " +"expresións regulares" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:383 msgid "&Search for:" -msgstr "" +msgstr "&Buscar de:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:384 msgid "" "Enter the what you are looking for, either plain text or a regular " "expression, depending on the mode" msgstr "" +"Introduza o que quere buscar, xa sexa un texto sinxelo o unha expresión " +"regular, segundo o modo escollido" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:385 msgid "" "Check this box if the search string must match exactly upper and lower case. " "Uncheck it if case is to be ignored" msgstr "" +"Marque esta caixa se o texto de busca debe coincidir exactamente en " +"maiúsculas ou minúsculas. Desmárquea se as maiúsculas ou minúsculas son " +"indiferentes." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:386 msgid "Case sensitive" -msgstr "" +msgstr "Distinguir maiúsculas de minúsculas" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:387 msgid "&Replace with:" -msgstr "" +msgstr "&Substituír con:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:388 msgid "" @@ -7522,14 +7529,14 @@ msgstr "Precísase contrasinal" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:217 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:125 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133 msgid "&Username:" msgstr "Nome de &usuario:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:64 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:218 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:126 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:135 msgid "&Password:" msgstr "&Contrasinal" @@ -8004,12 +8011,12 @@ msgid "%s (was %s)" msgstr "%s (era %s)" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:580 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:587 msgid "Item is blank" msgstr "O elemento está en branco" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:581 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:588 msgid "An item cannot be set to nothing. Delete it instead." msgstr "Un elemento non se pode deixar en branco. Bórreo no seu lugar." @@ -8092,7 +8099,7 @@ msgid "Discard changes" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tweak_epub_ui.py:60 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:225 msgid "&Cancel" msgstr "" @@ -8292,6 +8299,64 @@ msgstr "" msgid "Recipe source code (python)" msgstr "Código fonte das receitas (pytom)" +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:145 +msgid "Email %s to %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:187 +msgid "News:" +msgstr "Novas:" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:189 +msgid "Attached is the %s periodical downloaded by calibre." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:242 +msgid "E-book:" +msgstr "Libro electrónico:" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:245 +msgid "Attached, you will find the e-book" +msgstr "O libro electrónico está anexo" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:246 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:107 +msgid "by" +msgstr "por" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:247 +msgid "in the %s format." +msgstr "no formato %s." + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:260 +msgid "Sending email to" +msgstr "Enviando correo a" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:290 +msgid "Auto convert the following books before sending via email?" +msgstr "" +"Desexa converter automaticamente os seguintes libros antes de os enviar por " +"correo?" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:297 +msgid "" +"Could not email the following books as no suitable formats were found:" +msgstr "" +"Non se puideron enviar por correo os libros seguintes xa que non se achou ou " +"formato correcto." + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:303 +msgid "Failed to email book" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:306 +msgid "sent" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:329 +msgid "Sent news to" +msgstr "Enviar novas a" + #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:112 msgid "" "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" " @@ -8489,23 +8554,23 @@ msgstr "Non se poden deter as tarefas que comunican co dispositivo" msgid "Job has already run" msgstr "A tarefa xa se está a executar" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:262 msgid "Unavailable" msgstr "Non dispoñíbel" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:294 msgid "Jobs:" msgstr "Tarefas:" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:296 msgid "Shift+Alt+J" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:313 msgid "Click to see list of jobs" msgstr "Faga clic para ver a lista de traballos" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:371 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:382 msgid " - Jobs" msgstr " - Tarefas" @@ -8531,7 +8596,7 @@ msgid "Show books in the main memory of the device" msgstr "Amosar os libros na memoria principal do dispositivo" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:67 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:823 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:820 msgid "Card A" msgstr "Tarxeta A" @@ -8540,7 +8605,7 @@ msgid "Show books in storage card A" msgstr "Amosar os libros almacenados na tarxeta A" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:69 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:825 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:822 msgid "Card B" msgstr "Tarxeta B" @@ -8623,7 +8688,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:693 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1236 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:407 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:414 msgid "The lookup/search name is \"{0}\"" msgstr "O nome de busca é \"{0}\"" @@ -8725,7 +8790,7 @@ msgid "<b>No matches</b> for the search phrase <i>%s</i> were found." msgstr "<b>Sen coincidencias</b> para a frase de busca <i>%s</i>." #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:446 msgid "No matches found" msgstr "Non se atopou ningunha coincidencia" @@ -8742,12 +8807,12 @@ msgid "LRF Viewer toolbar" msgstr "Barra de ferramentas do visor de LRF" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:495 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:503 msgid "Next Page" msgstr "Páxina seguinte" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:496 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:504 msgid "Previous Page" msgstr "Páxina anterior" @@ -8791,7 +8856,7 @@ msgid "Do not check for updates" msgstr "Non comprobar se hai actualizacións" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:648 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:662 msgid "Calibre Library" msgstr "Biblioteca do Calibre" @@ -8959,7 +9024,7 @@ msgid "Successfully downloaded metadata for %d out of %d books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:291 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:649 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:659 msgid "Details" msgstr "" @@ -9499,39 +9564,39 @@ msgstr "Amosar &texto debaixo das iconas" msgid "&Split the toolbar into two toolbars" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:222 msgid "&Apply" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:229 msgid "Restore &defaults" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:230 msgid "Save changes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:231 msgid "Cancel and return to overview" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:259 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:269 msgid "Restoring to defaults not supported for" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:304 msgid "" "Some of the changes you made require a restart. Please restart calibre as " "soon as possible." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:307 msgid "" "The changes you have made require calibre be restarted immediately. You will " "not be allowed set any more preferences, until you restart." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:312 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:120 msgid "Restart needed" msgstr "" @@ -9849,7 +9914,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:331 msgid "Failed to start content server" msgstr "Fallou ao iniciar o servidor de contido" @@ -10152,26 +10217,22 @@ msgstr "Limpar" msgid "&Alternate shortcut:" msgstr "Atallo &alternativo:" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:202 msgid "Rename '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:206 msgid "Edit sort for '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:211 msgid "Hide category %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:214 msgid "Show category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:216 -msgid "Show all categories" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:223 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:227 msgid "Manage %s" @@ -10186,63 +10247,67 @@ msgstr "" msgid "Manage User Categories" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:248 +msgid "Show all categories" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:458 msgid "" "Changing the authors for several books can take a while. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:456 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:463 msgid "" "Changing the metadata for that many books can take a while. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:512 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:519 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:296 msgid "Searches" msgstr "Buscas" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:595 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:602 msgid "Duplicate search name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:596 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:603 msgid "The saved search name %s is already used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:871 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:878 msgid "Sort by name" msgstr "Ordenar polo nome" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:871 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:878 msgid "Sort by popularity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:872 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:879 msgid "Sort by average rating" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:875 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:882 msgid "Set the sort order for entries in the Tag Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:888 msgid "Match all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:888 msgid "Match any" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:886 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:893 msgid "" "When selecting multiple entries in the Tag Browser match any or all of them" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:890 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:897 msgid "Manage &user categories" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:893 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:900 msgid "Add your own categories to the Tag Browser" msgstr "" @@ -10286,42 +10351,42 @@ msgid "" msgstr "" "Os seguintes libros xa foron convertidos ao formato %s. Desexa reconvertelos?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:171 msgid "&Restore" msgstr "&Restabelecer" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:173 msgid "&Donate to support calibre" msgstr "&Doar para axudar ao calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:177 msgid "&Eject connected device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:218 msgid "Calibre Quick Start Guide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:448 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:478 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:439 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:450 msgid "Conversion Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:449 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:451 msgid "" "<p>Could not convert: %s<p>It is a <a href=\"%s\">DRM</a>ed book. You must " "first remove the DRM using third party tools." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:463 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:465 msgid "Recipe Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:479 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:481 msgid "<b>Failed</b>" msgstr "<b>Fallou</b>" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:517 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. " @@ -10332,22 +10397,22 @@ msgstr "" "desenvolvemento. A súa contribución axudará a continuar co desenvolvemento " "do calibre." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:541 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:543 msgid "There are active jobs. Are you sure you want to quit?" msgstr "Hai traballos en activo. Está seguro de querer saír?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:544 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:546 msgid "" " is communicating with the device!<br>\n" " Quitting may cause corruption on the device.<br>\n" " Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:550 msgid "WARNING: Active jobs" msgstr "Aviso: traballos en activo" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:626 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:628 msgid "" "will keep running in the system tray. To close it, choose <b>Quit</b> in the " "context menu of the system tray." @@ -10523,96 +10588,96 @@ msgstr "&Atallos do teclado" msgid "No results found for:" msgstr "Non se encontraron resultados para:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:36 msgid "Options to customize the ebook viewer" msgstr "Opcións para personalizar o visualizador de libros" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:708 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:711 msgid "Remember last used window size" msgstr "Lembrar o tamaño da última xanela usada" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:44 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:82 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:46 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 msgid "Maximum width of the viewer window, in pixels." msgstr "Largura máxima da xanela do visualizador, en píxeles." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 msgid "Resize images larger than the viewer window to fit inside it" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:50 msgid "Hyphenate text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:52 msgid "Default language for hyphenation rules" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:54 msgid "Font options" msgstr "Opcións de tipo de letra" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:56 msgid "The serif font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:58 msgid "The sans-serif font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 msgid "The monospaced font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:61 msgid "The standard font size in px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:62 msgid "The monospaced font size in px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:63 msgid "The standard font type" msgstr "O tipo de letra estándar" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:471 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:479 msgid "&Lookup in dictionary" msgstr "&Buscar no dicionario" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:474 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:482 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:138 msgid "Go to..." msgstr "Ir a..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:486 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:494 msgid "Next Section" msgstr "Sección seguinte" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:487 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:495 msgid "Previous Section" msgstr "Sección anterior" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:489 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:497 msgid "Document Start" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:490 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:498 msgid "Document End" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:492 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:500 msgid "Section Start" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:493 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:501 msgid "Section End" msgstr "" @@ -10680,85 +10745,85 @@ msgstr "" msgid "Search for text in book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:275 msgid "Print Preview" msgstr "Previsualización da impresión" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:309 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:312 msgid "Connecting to dict.org to lookup: <b>%s</b>…" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:410 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:413 msgid "Choose ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:411 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:414 msgid "Ebooks" msgstr "Libros electrónicos" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:444 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:447 msgid "No matches found for: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:485 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:488 msgid "Loading flow..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:524 msgid "Laying out %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:555 msgid "Bookmark #%d" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:556 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:559 msgid "Add bookmark" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:560 msgid "Enter title for bookmark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:567 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:570 msgid "Manage Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:604 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 msgid "Loading ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:612 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:615 msgid "DRM Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:613 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:616 msgid "<p>This book is protected by <a href=\"%s\">DRM</a>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:617 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:620 msgid "Could not open ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:695 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:698 msgid "Options to control the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:702 -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:705 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:708 +msgid "" "If specified, viewer window will try to open full screen when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:710 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:713 msgid "Print javascript alert and console messages to the console" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:716 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:719 msgid "" "%prog [options] file\n" "\n" @@ -10873,59 +10938,59 @@ msgstr "" msgid "Toggle" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:390 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:400 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:394 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:404 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:396 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:406 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:473 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:483 msgid "Moving library..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:489 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:490 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:499 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:500 msgid "Failed to move library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:544 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:554 msgid "Invalid database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:555 msgid "" "<p>An invalid library already exists at %s, delete it before trying to move " "the existing library.<br>Error: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:556 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:566 msgid "Could not move library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:627 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:641 msgid "Select location for books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:641 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:655 msgid "" "You must choose an empty folder for the calibre library. %s is not empty." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:715 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:729 msgid "welcome wizard" msgstr "" @@ -10997,8 +11062,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:58 msgid "" -"Choose a location for your books. When you add books to calibre, they will " -"be copied here:" +"<p>Choose a location for your books. When you add books to calibre, they " +"will be copied here. Use an <b>empty folder</b> for a new calibre library:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 @@ -11072,90 +11137,98 @@ msgstr "" 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:121 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:124 msgid "Send email &from:" msgstr "Enviar correos &desde:" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:125 msgid "" "<p>This is what will be present in the From: field of emails sent by " "calibre.<br> Set it to your email address" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:126 msgid "" "<p>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:124 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:127 msgid "Mail &Server" msgstr "&Servidor de Correo" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:128 msgid "calibre can <b>optionally</b> use a server to send mail" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:129 msgid "&Hostname:" msgstr "Nome do &host:" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:130 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:128 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:131 msgid "&Port:" msgstr "&Porto:" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:132 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:131 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:134 msgid "Your username on the mail server" msgstr "O seu nome de usuario/a no servidor de correo" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:136 msgid "Your password on the mail server" msgstr "O seu contrasinal no servidor de correo" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:137 msgid "&Show" msgstr "&Amosar" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:138 msgid "&Encryption:" msgstr "&Cifrado:" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:139 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:137 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:140 msgid "&TLS" msgstr "&TLS" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:141 msgid "Use SSL encryption when connecting to the mail server." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:142 msgid "&SSL" msgstr "&SSL" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:143 +msgid "WARNING: Using no encryption is highly insecure" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:144 +msgid "&None" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:145 msgid "Use Gmail" msgstr "Usar Gmail" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:146 msgid "Use Hotmail" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:147 msgid "&Test email" msgstr "&Probar o correo" @@ -11293,14 +11366,14 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:538 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:540 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:545 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:547 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 " @@ -11309,14 +11382,14 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:555 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:557 msgid "" "Regex describing tags to exclude as genres.\n" "Default: '%default' excludes bracketed tags, e.g. '[<tag>]'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:561 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:563 msgid "" "Comma-separated list of tag words indicating book should be excluded from " "output. Case-insensitive.\n" @@ -11325,35 +11398,35 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:569 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:571 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:576 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:578 msgid "" "Include 'Series' section in catalog.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:583 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:585 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:590 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:592 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:597 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:599 msgid "" "Sort titles with leading numbers as text, e.g.,\n" "'2001: A Space Odyssey' sorts as \n" @@ -11362,7 +11435,7 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:604 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:606 msgid "" "Specifies the output profile. In some cases, an output profile is required " "to optimize the catalog for the device. For example, 'kindle' or " @@ -11372,14 +11445,14 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:611 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:613 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:617 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:619 msgid "" "Tag indicating book to be displayed as wishlist item.\n" "Default: '%default'\n" @@ -11931,31 +12004,31 @@ msgstr "" msgid "%sAverage rating is %3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:821 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:818 msgid "Main" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2305 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2310 msgid "<p>Migrating old database to ebook library in %s<br><center>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2334 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2339 msgid "Copying <b>%s</b>" msgstr "A copiar <b>%s</b>" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2351 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2356 msgid "Compacting database" msgstr "A compactar a base de datos" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2444 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2449 msgid "Checking SQL integrity..." msgstr "A comprobar a integridade SQL..." -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2483 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2488 msgid "Checking for missing files." msgstr "A comprobar os ficheiros perdidos." -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2505 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2516 msgid "Checked id" msgstr "id comprobada" @@ -12146,7 +12219,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:59 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:427 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:437 msgid "Loading, please wait" msgstr "" @@ -12205,13 +12278,13 @@ msgid "home" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:332 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:538 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:548 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569 msgid "Newest" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:333 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:539 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:549 msgid "All books" msgstr "" @@ -12223,51 +12296,51 @@ msgstr "" msgid "Choose a category to browse by:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:447 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:457 msgid "Browsing by" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:448 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:458 msgid "Up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:569 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:579 msgid "in" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:572 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:582 msgid "Books in" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:624 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:634 msgid "Other formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:631 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:641 msgid "Read %s in the %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:636 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:646 msgid "Get" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:651 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:661 msgid "Permalink" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:652 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:662 msgid "A permanent link to this book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:663 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:673 msgid "This book has been deleted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:747 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:757 msgid "in search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:749 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:759 msgid "Matching books" msgstr "" @@ -12584,7 +12657,7 @@ msgstr "" msgid "Failed to authenticate with server: %s" msgstr "Erro ao se autenticar no servidor: %s" -#: /home/kovid/work/calibre/src/calibre/utils/smtp.py:238 +#: /home/kovid/work/calibre/src/calibre/utils/smtp.py:249 msgid "Control email delivery" msgstr "Controlar o envío de correo" @@ -13003,6 +13076,18 @@ msgstr "Non descargar follas de estilo CSS" #~ msgid "Send specific format" #~ msgstr "Enviar un formato específico" +#~ msgid "Failed to email books" +#~ msgstr "Fallou ao enviar por correo os libros" + +#~ msgid "Failed to email the following books:" +#~ msgstr "Fallou ao enviar por correo os libros seguintes:" + +#~ msgid "Sent by email:" +#~ msgstr "Enviar por correo:" + +#~ msgid "Attached is the" +#~ msgstr "Anexo está o" + #~ msgid "Fit &cover to view" #~ msgstr "Axustar a &capa á xanela" @@ -13051,6 +13136,17 @@ msgstr "Non descargar follas de estilo CSS" #~ "As mudanzas que fixo requiren que reinicie o Calibre. Reinicie cando lle for " #~ "máis práctico." +#~ 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 "" +#~ "Os libros seguintes teñen formatos especificados na base de datos que non " +#~ "están actualmente dispoñíbeis. Elimináronse as entradas para os formatos e, " +#~ "por tanto, debe comprobalos manualmente. Isto adoita acontecer ao manipular " +#~ "directamente os ficheiros na biblioteca." + #~ msgid "TabWidget" #~ msgstr "TabWidget" @@ -13261,6 +13357,17 @@ msgstr "Non descargar follas de estilo CSS" #~ "libro e os seguintes non se borrarán nin se alterarán.<br><br>Confirme que " #~ "desexa continuar." +#~ msgid "" +#~ "<p>Enter a list of ISBNs in the box to the left, one per line. calibre will " +#~ "automatically create entries for books based on the ISBN and download " +#~ "metadata and covers for them.<p>Any invalid ISBNs in the list will be " +#~ "ignored." +#~ msgstr "" +#~ "<p>Introduza unha lista de ISBN no cadro da esquerda, un por liña. Calibre " +#~ "creará automaticamente entradas para os libros baseándose no ISBN e " +#~ "descargará os metadatos e portadas.<p>Os ISBN da lista que non sexan válidos " +#~ "serán ignorados." + #~ msgid "Run the check" #~ msgstr "Excutar a comprobación" diff --git a/src/calibre/translations/it.po b/src/calibre/translations/it.po index 5b939669a6..390c3459cc 100644 --- a/src/calibre/translations/it.po +++ b/src/calibre/translations/it.po @@ -9,13 +9,13 @@ msgstr "" "Project-Id-Version: calibre_calibre-it\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-11-27 20:21+0000\n" -"PO-Revision-Date: 2010-11-27 14:56+0000\n" -"Last-Translator: Enrico Battocchi <Unknown>\n" +"PO-Revision-Date: 2010-11-28 19:45+0000\n" +"Last-Translator: MeltingShell <Unknown>\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-11-28 04:47+0000\n" +"X-Launchpad-Export-Date: 2010-11-29 04:48+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" @@ -318,7 +318,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:763 msgid "Input Options" -msgstr "Opzioni di digitazione" +msgstr "Opzioni di input" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:765 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:776 diff --git a/src/calibre/translations/zh_CN.po b/src/calibre/translations/zh_CN.po index 0f64cb6def..ee6a1bea51 100644 --- a/src/calibre/translations/zh_CN.po +++ b/src/calibre/translations/zh_CN.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-11-28 04:48+0000\n" +"X-Launchpad-Export-Date: 2010-11-29 04:49+0000\n" "X-Generator: Launchpad (build Unknown)\n" "X-Poedit-Country: CHINA\n" "X-Poedit-Language: Chinese\n" From 84833cf430590cd347c409cfc7a1345000384954 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Sun, 28 Nov 2010 22:51:19 -0700 Subject: [PATCH 215/377] All new linux binary build. With updated dependencies and replacing cx_Freeze with my own C python launcher. If you are running calibre using CALIBRE_DEVELOP_FROM with a linux binary build, do not update the calibre source until after 0.7.32 is released. --- setup/installer/cx_Freeze/HISTORY.txt | 244 -------- setup/installer/cx_Freeze/LICENSE.txt | 53 -- setup/installer/cx_Freeze/MANIFEST.in | 6 - setup/installer/cx_Freeze/PKG-INFO | 22 - setup/installer/cx_Freeze/README.txt | 12 - .../installer/cx_Freeze/cx_Freeze/__init__.py | 14 - setup/installer/cx_Freeze/cx_Freeze/dist.py | 279 --------- setup/installer/cx_Freeze/cx_Freeze/finder.py | 455 --------------- .../installer/cx_Freeze/cx_Freeze/freezer.py | 550 ------------------ setup/installer/cx_Freeze/cx_Freeze/hooks.py | 281 --------- setup/installer/cx_Freeze/cx_Freeze/main.py | 171 ------ .../installer/cx_Freeze/cx_Freeze/windist.py | 337 ----------- setup/installer/cx_Freeze/cxfreeze | 6 - .../cx_Freeze/initscripts/Console.py | 35 -- .../cx_Freeze/initscripts/ConsoleKeepPath.py | 19 - .../initscripts/ConsoleSetLibPath.py | 38 -- .../cx_Freeze/initscripts/SharedLib.py | 20 - .../cx_Freeze/initscripts/SharedLibSource.py | 23 - .../cx_Freeze/samples/advanced/advanced_1.py | 7 - .../cx_Freeze/samples/advanced/advanced_2.py | 7 - .../samples/advanced/modules/testfreeze_1.py | 1 - .../samples/advanced/modules/testfreeze_2.py | 1 - .../cx_Freeze/samples/advanced/setup.py | 31 - .../cx_Freeze/samples/matplotlib/setup.py | 27 - .../samples/matplotlib/test_matplotlib.py | 48 -- .../samples/relimport/pkg1/__init__.py | 3 - .../samples/relimport/pkg1/pkg2/__init__.py | 3 - .../samples/relimport/pkg1/pkg2/sub3.py | 3 - .../samples/relimport/pkg1/pkg2/sub5.py | 1 - .../cx_Freeze/samples/relimport/pkg1/sub1.py | 2 - .../cx_Freeze/samples/relimport/pkg1/sub2.py | 1 - .../cx_Freeze/samples/relimport/pkg1/sub4.py | 1 - .../cx_Freeze/samples/relimport/pkg1/sub6.py | 1 - .../cx_Freeze/samples/relimport/relimport.py | 1 - .../cx_Freeze/samples/relimport/setup.py | 16 - .../cx_Freeze/samples/simple/hello.py | 19 - .../cx_Freeze/samples/simple/setup.py | 18 - setup/installer/cx_Freeze/samples/wx/setup.py | 25 - setup/installer/cx_Freeze/samples/wx/wxapp.py | 42 -- setup/installer/cx_Freeze/setup.py | 197 ------- .../installer/cx_Freeze/source/bases/Common.c | 262 --------- .../cx_Freeze/source/bases/Console.c | 72 --- .../cx_Freeze/source/bases/ConsoleKeepPath.c | 60 -- .../cx_Freeze/source/bases/Win32GUI.c | 242 -------- .../installer/cx_Freeze/source/bases/dummy.rc | 5 - .../cx_Freeze/source/bases/manifest.rc | 3 - setup/installer/cx_Freeze/source/util.c | 418 ------------- setup/installer/linux/__init__.py | 3 +- setup/installer/linux/freeze.py | 1 - setup/installer/linux/freeze2.py | 194 ++++-- setup/installer/linux/util.c | 81 ++- setup/installer/windows/notes.rst | 3 +- src/calibre/devices/usbms/device.py | 12 +- src/calibre/ebooks/pdf/pdftohtml.py | 4 +- src/calibre/gui2/__init__.py | 2 +- src/calibre/libunrar.py | 2 +- src/calibre/utils/ipc/launch.py | 43 +- 57 files changed, 209 insertions(+), 4218 deletions(-) delete mode 100644 setup/installer/cx_Freeze/HISTORY.txt delete mode 100644 setup/installer/cx_Freeze/LICENSE.txt delete mode 100644 setup/installer/cx_Freeze/MANIFEST.in delete mode 100644 setup/installer/cx_Freeze/PKG-INFO delete mode 100644 setup/installer/cx_Freeze/README.txt delete mode 100644 setup/installer/cx_Freeze/cx_Freeze/__init__.py delete mode 100644 setup/installer/cx_Freeze/cx_Freeze/dist.py delete mode 100644 setup/installer/cx_Freeze/cx_Freeze/finder.py delete mode 100644 setup/installer/cx_Freeze/cx_Freeze/freezer.py delete mode 100644 setup/installer/cx_Freeze/cx_Freeze/hooks.py delete mode 100644 setup/installer/cx_Freeze/cx_Freeze/main.py delete mode 100644 setup/installer/cx_Freeze/cx_Freeze/windist.py delete mode 100755 setup/installer/cx_Freeze/cxfreeze delete mode 100755 setup/installer/cx_Freeze/initscripts/Console.py delete mode 100755 setup/installer/cx_Freeze/initscripts/ConsoleKeepPath.py delete mode 100755 setup/installer/cx_Freeze/initscripts/ConsoleSetLibPath.py delete mode 100755 setup/installer/cx_Freeze/initscripts/SharedLib.py delete mode 100755 setup/installer/cx_Freeze/initscripts/SharedLibSource.py delete mode 100644 setup/installer/cx_Freeze/samples/advanced/advanced_1.py delete mode 100644 setup/installer/cx_Freeze/samples/advanced/advanced_2.py delete mode 100644 setup/installer/cx_Freeze/samples/advanced/modules/testfreeze_1.py delete mode 100644 setup/installer/cx_Freeze/samples/advanced/modules/testfreeze_2.py delete mode 100644 setup/installer/cx_Freeze/samples/advanced/setup.py delete mode 100644 setup/installer/cx_Freeze/samples/matplotlib/setup.py delete mode 100644 setup/installer/cx_Freeze/samples/matplotlib/test_matplotlib.py delete mode 100644 setup/installer/cx_Freeze/samples/relimport/pkg1/__init__.py delete mode 100644 setup/installer/cx_Freeze/samples/relimport/pkg1/pkg2/__init__.py delete mode 100644 setup/installer/cx_Freeze/samples/relimport/pkg1/pkg2/sub3.py delete mode 100644 setup/installer/cx_Freeze/samples/relimport/pkg1/pkg2/sub5.py delete mode 100644 setup/installer/cx_Freeze/samples/relimport/pkg1/sub1.py delete mode 100644 setup/installer/cx_Freeze/samples/relimport/pkg1/sub2.py delete mode 100644 setup/installer/cx_Freeze/samples/relimport/pkg1/sub4.py delete mode 100644 setup/installer/cx_Freeze/samples/relimport/pkg1/sub6.py delete mode 100644 setup/installer/cx_Freeze/samples/relimport/relimport.py delete mode 100644 setup/installer/cx_Freeze/samples/relimport/setup.py delete mode 100644 setup/installer/cx_Freeze/samples/simple/hello.py delete mode 100644 setup/installer/cx_Freeze/samples/simple/setup.py delete mode 100644 setup/installer/cx_Freeze/samples/wx/setup.py delete mode 100644 setup/installer/cx_Freeze/samples/wx/wxapp.py delete mode 100755 setup/installer/cx_Freeze/setup.py delete mode 100644 setup/installer/cx_Freeze/source/bases/Common.c delete mode 100644 setup/installer/cx_Freeze/source/bases/Console.c delete mode 100644 setup/installer/cx_Freeze/source/bases/ConsoleKeepPath.c delete mode 100644 setup/installer/cx_Freeze/source/bases/Win32GUI.c delete mode 100644 setup/installer/cx_Freeze/source/bases/dummy.rc delete mode 100644 setup/installer/cx_Freeze/source/bases/manifest.rc delete mode 100644 setup/installer/cx_Freeze/source/util.c diff --git a/setup/installer/cx_Freeze/HISTORY.txt b/setup/installer/cx_Freeze/HISTORY.txt deleted file mode 100644 index acf9ad0dfe..0000000000 --- a/setup/installer/cx_Freeze/HISTORY.txt +++ /dev/null @@ -1,244 +0,0 @@ -Changes from 4.0 to 4.0.1 - 1) Added support for Python 2.6. On Windows a manifest file is now required - because of the switch to using the new Microsoft C runtime. - 2) Ensure that hooks are run for builtin modules. - -Changes from 4.0b1 to 4.0 - 1) Added support for copying files to the target directory. - 2) Added support for a hook that runs when a module is missing. - 3) Added support for binary path includes as well as excludes; use sequences - rather than dictionaries as a more convenient API; exclude the standard - locations for 32-bit and 64-bit libaries in multi-architecture systems. - 4) Added support for searching zip files (egg files) for modules. - 5) Added support for handling system exit exceptions similarly to what Python - does itself as requested by Sylvain. - 6) Added code to wait for threads to shut down like the normal Python - interpreter does. Thanks to Mariano Disanzo for discovering this - discrepancy. - 7) Hooks added or modified based on feedback from many people. - 8) Don't include the version name in the display name of the MSI. - 9) Use the OS dependent path normalization routines rather than simply use the - lowercase value as on Unix case is important; thanks to Artie Eoff for - pointing this out. -10) Include a version attribute in the cx_Freeze package and display it in the - output for the --version option to the script. -11) Include build instructions as requested by Norbert Sebok. -12) Add support for copying files when modules are included which require data - files to operate properly; add support for copying the necessary files for - the Tkinter and matplotlib modules. -13) Handle deferred imports recursively as needed; ensure that from lists do - not automatically indicate that they are part of the module or the deferred - import processing doesn't actually work! -14) Handle the situation where a module imports everything from a package and - the __all__ variable has been defined but the package has not actually - imported everything in the __all__ variable during initialization. -15) Modified license text to more closely match the Python Software Foundation - license as was intended. -16) Added sample script for freezing an application using matplotlib. -17) Renamed freeze to cxfreeze to avoid conflict with another package that uses - that executable as requested by Siegfried Gevatter. - -Changes from 3.0.3 to 4.0b1 - 1) Added support for placing modules in library.zip or in a separate zip file - for each executable that is produced. - 2) Added support for copying binary dependent files (DLLs and shared - libraries) - 3) Added support for including all submodules in a package - 4) Added support for including icons in Windows executables - 5) Added support for constants module which can be used for determining - certain build constants at runtime - 6) Added support for relative imports available in Python 2.5 and up - 7) Added support for building Windows installers (Python 2.5 and up) and - RPM packages - 8) Added support for distutils configuration scripts - 9) Added support for hooks which can force inclusion or exclusion of modules - when certain modules are included -10) Added documentation and samples -11) Added setup.py for building the cx_Freeze package instead of a script - used to build only the frozen bases -12) FreezePython renamed to a script called freeze in the Python distribution -13) On Linux and other platforms that support it set LD_RUN_PATH to include - the directory in which the executable is located - -Changes from 3.0.2 to 3.0.3 - 1) In Common.c, used MAXPATHLEN defined in the Python OS independent include - file rather than the PATH_MAX define which is OS dependent and is not - available on IRIX as noted by Andrew Jones. - 2) In the initscript ConsoleSetLibPath.py, added lines from initscript - Console.py that should have been there since the only difference between - that script and this one is the automatic re-execution of the executable. - 3) Added an explicit "import encodings" to the initscripts in order to handle - Unicode encodings a little better. Thanks to Ralf Schmitt for pointing out - the problem and its solution. - 4) Generated a meaningful name for the extension loader script so that it is - clear which particular extension module is being loaded when an exception - is being raised. - 5) In MakeFrozenBases.py, use distutils to figure out a few more - platform-dependent linker flags as suggested by Ralf Schmitt. - -Changes from 3.0.1 to 3.0.2 - 1) Add support for compressing the byte code in the zip files that are - produced. - 2) Add better support for the win32com package as requested by Barry Scott. - 3) Prevent deletion of target file if it happens to be identical to the - source file. - 4) Include additional flags for local modifications to a Python build as - suggested by Benjamin Rutt. - 5) Expanded instructions for building cx_Freeze from source based on a - suggestion from Gregg Lind. - 6) Fix typo in help string. - -Changes from 3.0 to 3.0.1 - 1) Added option --default-path which is used to specify the path used when - finding modules. This is particularly useful when performing cross - compilations (such as for building a frozen executable for Windows CE). - 2) Added option --shared-lib-name which can be used to specify the name of - the shared library (DLL) implementing the Python runtime that is required - for the frozen executable to work. This option is also particularly useful - when cross compiling since the normal method for determining this - information cannot be used. - 3) Added option --zip-include which allows for additional files to be added - to the zip file that contains the modules that implement the Python - script. Thanks to Barray Warsaw for providing the initial patch. - 4) Added support for handling read-only files properly. Thanks to Peter - Grayson for pointing out the problem and providing a solution. - 5) Added support for a frozen executable to be a symbolic link. Thanks to - Robert Kiendl for providing the initial patch. - 6) Enhanced the support for running a frozen executable that uses an existing - Python installation to locate modules it requires. This is primarily of - use for embedding Python where the interface is C but the ability to run - from source is still desired. - 7) Modified the documentation to indicate that building from source on - Windows currently requires the mingw compiler (http://www.mingw.org). - 8) Workaround the problem in Python 2.3 (fixed in Python 2.4) which causes a - broken module to be left in sys.modules if an ImportError takes place - during the execution of the code in that module. Thanks to Roger Binns - for pointing this out. - -Changes from 3.0 beta3 to 3.0 - 1) Ensure that ldd is only run on extension modules. - 2) Allow for using a compiler other than gcc for building the frozen base - executables by setting the environment variable CC. - 3) Ensure that the import lock is not held while executing the main script; - otherwise, attempts to import a module within a thread will hang that - thread as noted by Roger Binns. - 4) Added support for replacing the paths in all frozen modules with something - else (so that for example the path of the machine on which the freezing - was done is not displayed in tracebacks) - -Changes from 3.0 beta2 to 3.0 beta3 - 1) Explicitly include the warnings module so that at runtime warnings are - suppressed as when running Python normally. - 2) Improve the extension loader so that an ImportError is raised when the - dynamic module is not located; otherwise an error about missing attributes - is raised instead. - 3) Extension loaders are only created when copying dependencies since the - normal module should be loadable in the situation where a Python - installation is available. - 4) Added support for Python 2.4. - 5) Fixed the dependency checking for wxPython to be a little more - intelligent. - -Changes from 3.0 beta1 to 3.0 beta2 - 1) Fix issues with locating the initscripts and bases relative to the - directory in which the executable was started. - 2) Added new base executable ConsoleKeepPath which is used when an existing - Python installation is required (such as for FreezePython itself). - 3) Forced the existence of a Python installation to be ignored when using the - standard Console base executable. - 4) Remove the existing file when copying dependent files; otherwise, an error - is raised when attempting to overwrite read-only files. - 5) Added option -O (or -OO) to FreezePython to set the optimization used when - generating bytecode. - -Changes from 2.2 to 3.0 beta1 - 1) cx_Freeze now requires Python 2.3 or higher since it takes advantage of - the ability of Python 2.3 and higher to import modules from zip files. - This makes the freezing process considerably simpler and also allows for - the execution of multiple frozen packages (such as found in COM servers or - shared libraries) without requiring modification to the Python modules. - 2) All external dependencies have been removed. cx_Freeze now only requires - a standard Python distribution to do its work. - 3) Added the ability to define the initialization scripts that cx_Freeze uses - on startup of the frozen program. Previously, these scripts were written - in C and could not easily be changed; now they are written in Python and - can be found in the initscripts directory (and chosen with the - new --init-script option to FreezePython). - 4) The base executable ConsoleSetLibPath has been removed and replaced with - the initscript ConsoleSetLibPath. - 5) Removed base executables for Win32 services and Win32 COM servers. This - functionality will be restored in the future but it is not currently in a - state that is ready for release. If this functionality is required, please - use py2exe or contact me for my work in progress. - 6) The attribute sys.frozen is now set so that more recent pywin32 modules - work as expected when frozen. - 7) Added option --include-path to FreezePython to allow overriding of - sys.path without modifying the environment variable PYTHONPATH. - 8) Added option --target-dir/--install-dir to specify the directory in which - the frozen executable and its dependencies will be placed. - 9) Removed the option --shared-lib since it was used for building shared - libraries and can be managed with the initscript SharedLib.py. -10) MakeFrozenBases.py now checks the platform specific include directory as - requested by Michael Partridge. - - -Changes from 2.1 to 2.2 - 1) Add option (--ext-list-file) to FreezePython to write the list of - extensions copied to the installation directory to a file. This option is - useful in cases where multiple builds are performed into the same - installation directory. - 2) Pass the arguments on the command line through to Win32 GUI applications. - Thanks to Michael Porter for pointing this out. - 3) Link directly against the python DLL when building the frozen bases on - Windows, thus eliminating the need for building an import library. - 4) Force sys.path to include the directory in which the script to be frozen - is found. - 5) Make sure that the installation directory exists before attempting to - copy the target binary into it. - 6) The Win32GUI base has been modified to display fatal errors in message - boxes, rather than printing errors to stderr, since on Windows the - standard file IO handles are all closed. - -Changes from 2.0 to 2.1 - 1) Remove dependency on Python 2.2. Thanks to Paul Moore for not only - pointing it out but providing patches. - 2) Set up the list of frozen modules in advance, rather than doing it after - Python is initialized so that implicit imports done by Python can be - satisfied. The bug in Python 2.3 that demonstrated this issue has been - fixed in the first release candidate. Thanks to Thomas Heller for pointing - out the obvious in this instance! - 3) Added additional base executable (ConsoleSetLibPath) to support setting - the LD_LIBRARY_PATH variable on Unix platforms and restarting the - executable to put the new setting into effect. This is primarily of use - in distributing wxPython applications on Unix where the shared library - has an embedded RPATH value which can cause problems. - 4) Small improvements of documentation based on feedback from several people. - 5) Print information about the files written or copied during the freezing - process. - 6) Do not copy extensions when freezing if the path is being overridden since - it is expected that a full Python installation is available to the target - users of the frozen binary. - 7) Provide meaningful error message when the wxPython library cannot be - found during the freezing process. - -Changes from 1.1 to 2.0 - 1) Added support for in process (DLL) COM servers using PythonCOM. - 2) Ensured that the frozen flag is set prior to determining the full path for - the program in order to avoid warnings about Python not being found on - some platforms. - 3) Added include file and resource file to the source tree to avoid the - dependency on the Wine message compiler for Win32 builds. - 4) Dropped the option --copy-extensions; this now happens automatically since - the resulting binary is useless without them. - 5) Added a sample for building a Win32 service. - 6) Make use of improved modules from Python 2.3 (which function under 2.2) - -Changes from 1.0 to 1.1 - 1) Fixed import error with C extensions in packages; thanks to Thomas Heller - for pointing out the solution to this problem. - 2) Added options to FreezePython to allow for the inclusion of modules which - will not be found by the module finder (--include-modules) and the - exclusion of modules which will be found by the module finder but should - not be included (--exclude-modules). - 3) Fixed typo in README.txt. - diff --git a/setup/installer/cx_Freeze/LICENSE.txt b/setup/installer/cx_Freeze/LICENSE.txt deleted file mode 100644 index cb9ee05a8a..0000000000 --- a/setup/installer/cx_Freeze/LICENSE.txt +++ /dev/null @@ -1,53 +0,0 @@ -Copyright 2007-2008, Colt Engineering, Edmonton, Alberta, Canada. -Copyright 2001-2006, Computronix (Canada) Ltd., Edmonton, Alberta, Canada. -All rights reserved. - -NOTE: this license is derived from the Python Software Foundation License -which can be found at http://www.python.org/psf/license - -License for cx_Freeze 4.0.1 ---------------------------- - -1. This LICENSE AGREEMENT is between the copyright holders and the Individual - or Organization ("Licensee") accessing and otherwise using cx_Freeze - software in source or binary form and its associated documentation. - -2. Subject to the terms and conditions of this License Agreement, the - copyright holders hereby grant Licensee a nonexclusive, royalty-free, - world-wide license to reproduce, analyze, test, perform and/or display - publicly, prepare derivative works, distribute, and otherwise use cx_Freeze - alone or in any derivative version, provided, however, that this License - Agreement and this notice of copyright are retained in cx_Freeze alone or in - any derivative version prepared by Licensee. - -3. In the event Licensee prepares a derivative work that is based on or - incorporates cx_Freeze or any part thereof, and wants to make the derivative - work available to others as provided herein, then Licensee hereby agrees to - include in any such work a brief summary of the changes made to cx_Freeze. - -4. The copyright holders are making cx_Freeze available to Licensee on an - "AS IS" basis. THE COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, - EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, THE COPYRIGHT - HOLDERS MAKE NO AND DISCLAIM ANY REPRESENTATION OR WARRANTY OF - MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF - CX_FREEZE WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. - -5. THE COPYRIGHT HOLDERS SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF - CX_FREEZE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS - A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING CX_FREEZE, OR ANY - DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. - -6. This License Agreement will automatically terminate upon a material breach - of its terms and conditions. - -7. Nothing in this License Agreement shall be deemed to create any relationship - of agency, partnership, or joint venture between the copyright holders and - Licensee. This License Agreement does not grant permission to use - copyright holder's trademarks or trade name in a trademark sense to endorse - or promote products or services of Licensee, or any third party. - -8. By copying, installing or otherwise using cx_Freeze, Licensee agrees to be - bound by the terms and conditions of this License Agreement. - -Computronix is a registered trademark of Computronix (Canada) Ltd. - diff --git a/setup/installer/cx_Freeze/MANIFEST.in b/setup/installer/cx_Freeze/MANIFEST.in deleted file mode 100644 index 2348a66973..0000000000 --- a/setup/installer/cx_Freeze/MANIFEST.in +++ /dev/null @@ -1,6 +0,0 @@ -include MANIFEST.in -include *.txt -recursive-include doc *.html -recursive-include initscripts *.py -recursive-include samples *.py -recursive-include source *.c *.rc diff --git a/setup/installer/cx_Freeze/PKG-INFO b/setup/installer/cx_Freeze/PKG-INFO deleted file mode 100644 index aa53b57914..0000000000 --- a/setup/installer/cx_Freeze/PKG-INFO +++ /dev/null @@ -1,22 +0,0 @@ -Metadata-Version: 1.0 -Name: cx_Freeze -Version: 4.0.1 -Summary: create standalone executables from Python scripts -Home-page: http://cx-freeze.sourceforge.net -Author: Anthony Tuininga -Author-email: anthony.tuininga@gmail.com -License: Python Software Foundation License -Description: create standalone executables from Python scripts -Keywords: freeze -Platform: UNKNOWN -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: Python Software Foundation License -Classifier: Natural Language :: English -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: C -Classifier: Programming Language :: Python -Classifier: Topic :: Software Development :: Build Tools -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Classifier: Topic :: System :: Software Distribution -Classifier: Topic :: Utilities diff --git a/setup/installer/cx_Freeze/README.txt b/setup/installer/cx_Freeze/README.txt deleted file mode 100644 index 1ac67dc749..0000000000 --- a/setup/installer/cx_Freeze/README.txt +++ /dev/null @@ -1,12 +0,0 @@ -Please see cx_Freeze.html for documentation on how to use cx_Freeze. - -To build: - -python setup.py build -python setup.py install - -On Windows I have used the MinGW compiler (http://www.mingw.org) - -python setup.py build --compiler=mingw32 -python setup.py build --compiler=mingw32 install - diff --git a/setup/installer/cx_Freeze/cx_Freeze/__init__.py b/setup/installer/cx_Freeze/cx_Freeze/__init__.py deleted file mode 100644 index 545883eb3e..0000000000 --- a/setup/installer/cx_Freeze/cx_Freeze/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -version = "4.0.1" - -import sys -from dist import * -if sys.platform == "win32" and sys.version_info[:2] >= (2, 5): - from windist import * -from finder import * -from freezer import * -from main import * - -del dist -del finder -del freezer - diff --git a/setup/installer/cx_Freeze/cx_Freeze/dist.py b/setup/installer/cx_Freeze/cx_Freeze/dist.py deleted file mode 100644 index c2af2ac623..0000000000 --- a/setup/installer/cx_Freeze/cx_Freeze/dist.py +++ /dev/null @@ -1,279 +0,0 @@ -import distutils.command.bdist_rpm -import distutils.command.build -import distutils.command.install -import distutils.core -import distutils.dir_util -import distutils.dist -import distutils.util -import distutils.version -import os -import sys - -import cx_Freeze - -__all__ = [ "bdist_rpm", "build", "build_exe", "install", "install_exe", - "setup" ] - -class Distribution(distutils.dist.Distribution): - - def __init__(self, attrs): - self.executables = [] - distutils.dist.Distribution.__init__(self, attrs) - - -class bdist_rpm(distutils.command.bdist_rpm.bdist_rpm): - - def finalize_options(self): - distutils.command.bdist_rpm.bdist_rpm.finalize_options(self) - self.use_rpm_opt_flags = 1 - - def _make_spec_file(self): - contents = distutils.command.bdist_rpm.bdist_rpm._make_spec_file(self) - return [c for c in contents if c != 'BuildArch: noarch'] - - -class build(distutils.command.build.build): - user_options = distutils.command.build.build.user_options + [ - ('build-exe=', None, 'build directory for executables') - ] - - def get_sub_commands(self): - subCommands = distutils.command.build.build.get_sub_commands(self) - if self.distribution.executables: - subCommands.append("build_exe") - return subCommands - - def initialize_options(self): - distutils.command.build.build.initialize_options(self) - self.build_exe = None - - def finalize_options(self): - distutils.command.build.build.finalize_options(self) - if self.build_exe is None: - dirName = "exe.%s-%s" % \ - (distutils.util.get_platform(), sys.version[0:3]) - self.build_exe = os.path.join(self.build_base, dirName) - - -class build_exe(distutils.core.Command): - description = "build executables from Python scripts" - user_options = [ - ('build-exe=', 'b', - 'directory for built executables'), - ('optimize=', 'O', - 'optimization level: -O1 for "python -O", ' - '-O2 for "python -OO" and -O0 to disable [default: -O0]'), - ('excludes=', 'e', - 'comma-separated list of modules to exclude'), - ('includes=', 'i', - 'comma-separated list of modules to include'), - ('packages=', 'p', - 'comma-separated list of packages to include'), - ('replace-paths=', None, - 'comma-separated list of paths to replace in included modules'), - ('path=', None, - 'comma-separated list of paths to search'), - ('init-script=', 'i', - 'name of script to use during initialization'), - ('base=', None, - 'name of base executable to use'), - ('compressed', 'c', - 'create a compressed zipfile'), - ('copy-dependent-files', None, - 'copy all dependent files'), - ('create-shared-zip', None, - 'create a shared zip file containing shared modules'), - ('append-script-to-exe', None, - 'append the script module to the exe'), - ('include-in-shared-zip', None, - 'include the script module in the shared zip file'), - ('icon', None, - 'include the icon along with the frozen executable(s)'), - ('constants=', None, - 'comma-separated list of constants to include'), - ('include-files=', 'f', - 'list of tuples of additional files to include in distribution'), - ('bin-includes', None, - 'list of names of files to include when determining dependencies'), - ('bin-excludes', None, - 'list of names of files to exclude when determining dependencies') - ] - boolean_options = ["compressed", "copy_dependent_files", - "create_shared_zip", "append_script_to_exe", - "include_in_shared_zip"] - - def _normalize(self, attrName): - value = getattr(self, attrName) - if value is None: - normalizedValue = [] - elif isinstance(value, basestring): - normalizedValue = value.split() - else: - normalizedValue = list(value) - setattr(self, attrName, normalizedValue) - - def initialize_options(self): - self.optimize = 0 - self.build_exe = None - self.excludes = [] - self.includes = [] - self.packages = [] - self.replace_paths = [] - self.compressed = None - self.copy_dependent_files = None - self.init_script = None - self.base = None - self.path = None - self.create_shared_zip = None - self.append_script_to_exe = None - self.include_in_shared_zip = None - self.icon = None - self.constants = [] - self.include_files = [] - self.bin_excludes = [] - self.bin_includes = [] - - def finalize_options(self): - self.set_undefined_options('build', ('build_exe', 'build_exe')) - self.optimize = int(self.optimize) - self._normalize("excludes") - self._normalize("includes") - self._normalize("packages") - self._normalize("constants") - - def run(self): - metadata = self.distribution.metadata - constantsModule = cx_Freeze.ConstantsModule(metadata.version) - for constant in self.constants: - parts = constant.split("=") - if len(parts) == 1: - name = constant - value = None - else: - name, stringValue = parts - value = eval(stringValue) - constantsModule.values[name] = value - freezer = cx_Freeze.Freezer(self.distribution.executables, - [constantsModule], self.includes, self.excludes, self.packages, - self.replace_paths, self.compressed, self.optimize, - self.copy_dependent_files, self.init_script, self.base, - self.path, self.create_shared_zip, self.append_script_to_exe, - self.include_in_shared_zip, self.build_exe, icon = self.icon, - includeFiles = self.include_files, - binIncludes = self.bin_includes, - binExcludes = self.bin_excludes) - freezer.Freeze() - - -class install(distutils.command.install.install): - user_options = distutils.command.install.install.user_options + [ - ('install-exe=', None, - 'installation directory for executables') - ] - - def expand_dirs(self): - distutils.command.install.install.expand_dirs(self) - self._expand_attrs(['install_exe']) - - def get_sub_commands(self): - subCommands = distutils.command.install.install.get_sub_commands(self) - if self.distribution.executables: - subCommands.append("install_exe") - return [s for s in subCommands if s != "install_egg_info"] - - def initialize_options(self): - distutils.command.install.install.initialize_options(self) - self.install_exe = None - - def finalize_options(self): - if self.prefix is None and sys.platform == "win32": - import _winreg - key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, - r"Software\Microsoft\Windows\CurrentVersion") - prefix = str(_winreg.QueryValueEx(key, "ProgramFilesDir")[0]) - metadata = self.distribution.metadata - dirName = "%s-%s" % (metadata.name, metadata.version) - self.prefix = "%s/%s" % (prefix, dirName) - distutils.command.install.install.finalize_options(self) - self.convert_paths('exe') - if self.root is not None: - self.change_roots('exe') - - def select_scheme(self, name): - distutils.command.install.install.select_scheme(self, name) - if self.install_exe is None: - if sys.platform == "win32": - self.install_exe = '$base' - else: - metadata = self.distribution.metadata - dirName = "%s-%s" % (metadata.name, metadata.version) - self.install_exe = '$base/lib/%s' % dirName - - -class install_exe(distutils.core.Command): - description = "install executables built from Python scripts" - user_options = [ - ('install-dir=', 'd', 'directory to install executables to'), - ('build-dir=', 'b', 'build directory (where to install from)'), - ('force', 'f', 'force installation (overwrite existing files)'), - ('skip-build', None, 'skip the build steps') - ] - - def initialize_options(self): - self.install_dir = None - self.force = 0 - self.build_dir = None - self.skip_build = None - - def finalize_options(self): - self.set_undefined_options('build', ('build_exe', 'build_dir')) - self.set_undefined_options('install', - ('install_exe', 'install_dir'), - ('force', 'force'), - ('skip_build', 'skip_build')) - - def run(self): - if not self.skip_build: - self.run_command('build_exe') - self.outfiles = self.copy_tree(self.build_dir, self.install_dir) - if sys.platform != "win32": - baseDir = os.path.dirname(os.path.dirname(self.install_dir)) - binDir = os.path.join(baseDir, "bin") - if not os.path.exists(binDir): - os.makedirs(binDir) - sourceDir = os.path.join("..", self.install_dir[len(baseDir) + 1:]) - for executable in self.distribution.executables: - name = os.path.basename(executable.targetName) - source = os.path.join(sourceDir, name) - target = os.path.join(binDir, name) - if os.path.exists(target): - os.unlink(target) - os.symlink(source, target) - self.outfiles.append(target) - - def get_inputs(self): - return self.distribution.executables or [] - - def get_outputs(self): - return self.outfiles or [] - - -def _AddCommandClass(commandClasses, name, cls): - if name not in commandClasses: - commandClasses[name] = cls - - -def setup(**attrs): - attrs["distclass"] = Distribution - commandClasses = attrs.setdefault("cmdclass", {}) - if sys.platform == "win32": - if sys.version_info[:2] >= (2, 5): - _AddCommandClass(commandClasses, "bdist_msi", cx_Freeze.bdist_msi) - else: - _AddCommandClass(commandClasses, "bdist_rpm", cx_Freeze.bdist_rpm) - _AddCommandClass(commandClasses, "build", build) - _AddCommandClass(commandClasses, "build_exe", build_exe) - _AddCommandClass(commandClasses, "install", install) - _AddCommandClass(commandClasses, "install_exe", install_exe) - distutils.core.setup(**attrs) - diff --git a/setup/installer/cx_Freeze/cx_Freeze/finder.py b/setup/installer/cx_Freeze/cx_Freeze/finder.py deleted file mode 100644 index f815db97be..0000000000 --- a/setup/installer/cx_Freeze/cx_Freeze/finder.py +++ /dev/null @@ -1,455 +0,0 @@ -""" -Base class for finding modules. -""" - -import dis -import imp -import marshal -import new -import opcode -import os -import sys -import zipfile - -import cx_Freeze.hooks - -BUILD_LIST = opcode.opmap["BUILD_LIST"] -INPLACE_ADD = opcode.opmap["INPLACE_ADD"] -LOAD_CONST = opcode.opmap["LOAD_CONST"] -IMPORT_NAME = opcode.opmap["IMPORT_NAME"] -IMPORT_FROM = opcode.opmap["IMPORT_FROM"] -STORE_NAME = opcode.opmap["STORE_NAME"] -STORE_GLOBAL = opcode.opmap["STORE_GLOBAL"] -STORE_OPS = (STORE_NAME, STORE_GLOBAL) - -__all__ = [ "Module", "ModuleFinder" ] - -class ModuleFinder(object): - - def __init__(self, includeFiles, excludes, path, replacePaths): - self.includeFiles = includeFiles - self.excludes = dict.fromkeys(excludes) - self.replacePaths = replacePaths - self.path = path or sys.path - self.modules = [] - self.aliases = {} - self._modules = dict.fromkeys(excludes) - self._builtinModules = dict.fromkeys(sys.builtin_module_names) - self._badModules = {} - self._zipFileEntries = {} - self._zipFiles = {} - cx_Freeze.hooks.initialize(self) - - def _AddModule(self, name): - """Add a module to the list of modules but if one is already found, - then return it instead; this is done so that packages can be - handled properly.""" - module = self._modules.get(name) - if module is None: - module = self._modules[name] = Module(name) - self.modules.append(module) - if name in self._badModules: - del self._badModules[name] - return module - - def _DetermineParent(self, caller): - """Determine the parent to use when searching packages.""" - if caller is not None: - if caller.path is not None: - return caller - return self._GetParentByName(caller.name) - - def _EnsureFromList(self, caller, packageModule, fromList, - deferredImports): - """Ensure that the from list is satisfied. This is only necessary for - package modules. If the caller is the package itself, actually - attempt to import right then since it must be a submodule; otherwise - defer until after all global names are defined in order to avoid - spurious complaints about missing modules.""" - if caller is not packageModule: - deferredImports.append((packageModule, fromList)) - else: - if fromList == ("*",): - fromList = packageModule.allNames - for name in fromList: - if name in packageModule.globalNames: - continue - subModuleName = "%s.%s" % (packageModule.name, name) - self._ImportModule(subModuleName, deferredImports, caller) - - def _FindModule(self, name, path): - try: - return imp.find_module(name, path) - except ImportError: - if not path: - path = [] - for location in path: - if name in self._zipFileEntries: - break - if location in self._zipFiles: - continue - if os.path.isdir(location) or not zipfile.is_zipfile(location): - self._zipFiles[location] = None - continue - zip = zipfile.ZipFile(location) - for archiveName in zip.namelist(): - baseName, ext = os.path.splitext(archiveName) - if ext not in ('.pyc', '.pyo'): - continue - moduleName = ".".join(baseName.split("/")) - if moduleName in self._zipFileEntries: - continue - self._zipFileEntries[moduleName] = (zip, archiveName) - self._zipFiles[location] = None - info = self._zipFileEntries.get(name) - if info is not None: - zip, archiveName = info - fp = zip.read(archiveName) - info = (".pyc", "rb", imp.PY_COMPILED) - return fp, os.path.join(zip.filename, archiveName), info - raise - - def _GetParentByName(self, name): - """Return the parent module given the name of a module.""" - pos = name.rfind(".") - if pos > 0: - parentName = name[:pos] - return self._modules[parentName] - - def _ImportAllSubModules(self, module, deferredImports, recursive = True): - """Import all sub modules to the given package.""" - suffixes = dict.fromkeys([s[0] for s in imp.get_suffixes()]) - for dir in module.path: - try: - fileNames = os.listdir(dir) - except os.error: - continue - for fileName in fileNames: - name, ext = os.path.splitext(fileName) - if ext not in suffixes: - continue - if name == "__init__": - continue - subModuleName = "%s.%s" % (module.name, name) - subModule, returnError = \ - self._InternalImportModule(subModuleName, - deferredImports) - if returnError and subModule is None: - raise ImportError, "No module named %s" % subModuleName - module.globalNames[name] = None - if subModule.path and recursive: - self._ImportAllSubModules(subModule, deferredImports, - recursive) - - def _ImportDeferredImports(self, deferredImports): - """Import any sub modules that were deferred, if applicable.""" - while deferredImports: - newDeferredImports = [] - for packageModule, subModuleNames in deferredImports: - self._EnsureFromList(packageModule, packageModule, - subModuleNames, newDeferredImports) - deferredImports = newDeferredImports - - def _ImportModule(self, name, deferredImports, caller = None, - relativeImportIndex = 0): - """Attempt to find the named module and return it or None if no module - by that name could be found.""" - - # absolute import (available in Python 2.5 and up) - # the name given is the only name that will be searched - if relativeImportIndex == 0: - module, returnError = self._InternalImportModule(name, - deferredImports) - - # old style relative import (only possibility in Python 2.4 and prior) - # the name given is tried in all parents until a match is found and if - # no match is found, the global namespace is searched - elif relativeImportIndex < 0: - parent = self._DetermineParent(caller) - while parent is not None: - fullName = "%s.%s" % (parent.name, name) - module, returnError = self._InternalImportModule(fullName, - deferredImports) - if module is not None: - parent.globalNames[name] = None - return module - parent = self._GetParentByName(parent.name) - module, returnError = self._InternalImportModule(name, - deferredImports) - - # new style relative import (available in Python 2.5 and up) - # the index indicates how many levels to traverse and only that level - # is searched for the named module - elif relativeImportIndex > 0: - parent = caller - if parent.path is not None: - relativeImportIndex -= 1 - while parent is not None and relativeImportIndex > 0: - parent = self._GetParentByName(parent.name) - relativeImportIndex -= 1 - if parent is None: - module = None - returnError = True - elif not name: - module = parent - else: - name = "%s.%s" % (parent.name, name) - module, returnError = self._InternalImportModule(name, - deferredImports) - - # if module not found, track that fact - if module is None: - if caller is None: - raise ImportError, "No module named %s" % name - self._RunHook("missing", name, caller) - if returnError and name not in caller.ignoreNames: - callers = self._badModules.setdefault(name, {}) - callers[caller.name] = None - - return module - - def _InternalImportModule(self, name, deferredImports): - """Internal method used for importing a module which assumes that the - name given is an absolute name. None is returned if the module - cannot be found.""" - try: - return self._modules[name], False - except KeyError: - pass - if name in self._builtinModules: - module = self._AddModule(name) - self._RunHook("load", module.name, module) - return module, False - pos = name.rfind(".") - if pos < 0: - path = self.path - searchName = name - parentModule = None - else: - parentName = name[:pos] - parentModule, returnError = \ - self._InternalImportModule(parentName, deferredImports) - if parentModule is None: - return None, returnError - path = parentModule.path - searchName = name[pos + 1:] - if name in self.aliases: - actualName = self.aliases[name] - module, returnError = \ - self._InternalImportModule(actualName, deferredImports) - self._modules[name] = module - return module, returnError - try: - fp, path, info = self._FindModule(searchName, path) - except ImportError: - self._modules[name] = None - return None, True - module = self._LoadModule(name, fp, path, info, deferredImports, - parentModule) - return module, False - - def _LoadModule(self, name, fp, path, info, deferredImports, - parent = None): - """Load the module, given the information acquired by the finder.""" - suffix, mode, type = info - if type == imp.PKG_DIRECTORY: - return self._LoadPackage(name, path, parent, deferredImports) - module = self._AddModule(name) - module.file = path - module.parent = parent - if type == imp.PY_SOURCE: - module.code = compile(fp.read() + "\n", path, "exec") - elif type == imp.PY_COMPILED: - if isinstance(fp, str): - magic = fp[:4] - else: - magic = fp.read(4) - if magic != imp.get_magic(): - raise ImportError, "Bad magic number in %s" % path - if isinstance(fp, str): - module.code = marshal.loads(fp[8:]) - module.inZipFile = True - else: - fp.read(4) - module.code = marshal.load(fp) - self._RunHook("load", module.name, module) - if module.code is not None: - if self.replacePaths: - topLevelModule = module - while topLevelModule.parent is not None: - topLevelModule = topLevelModule.parent - module.code = self._ReplacePathsInCode(topLevelModule, - module.code) - self._ScanCode(module.code, module, deferredImports) - return module - - def _LoadPackage(self, name, path, parent, deferredImports): - """Load the package, given its name and path.""" - module = self._AddModule(name) - module.path = [path] - fp, path, info = imp.find_module("__init__", module.path) - self._LoadModule(name, fp, path, info, deferredImports, parent) - return module - - def _ReplacePathsInCode(self, topLevelModule, co): - """Replace paths in the code as directed, returning a new code object - with the modified paths in place.""" - origFileName = newFileName = os.path.normpath(co.co_filename) - for searchValue, replaceValue in self.replacePaths: - if searchValue == "*": - searchValue = os.path.dirname(topLevelModule.file) - if topLevelModule.path: - searchValue = os.path.dirname(searchValue) - if searchValue: - searchValue = searchValue + os.pathsep - elif not origFileName.startswith(searchValue): - continue - newFileName = replaceValue + origFileName[len(searchValue):] - break - constants = list(co.co_consts) - for i, value in enumerate(constants): - if isinstance(value, type(co)): - constants[i] = self._ReplacePathsInCode(topLevelModule, value) - return new.code(co.co_argcount, co.co_nlocals, co.co_stacksize, - co.co_flags, co.co_code, tuple(constants), co.co_names, - co.co_varnames, newFileName, co.co_name, co.co_firstlineno, - co.co_lnotab, co.co_freevars, co.co_cellvars) - - def _RunHook(self, hookName, moduleName, *args): - """Run hook for the given module if one is present.""" - name = "%s_%s" % (hookName, moduleName.replace(".", "_")) - method = getattr(cx_Freeze.hooks, name, None) - if method is not None: - method(self, *args) - - def _ScanCode(self, co, module, deferredImports): - """Scan code, looking for imported modules and keeping track of the - constants that have been created in order to better tell which - modules are truly missing.""" - opIndex = 0 - arguments = [] - code = co.co_code - numOps = len(code) - while opIndex < numOps: - op = ord(code[opIndex]) - opIndex += 1 - if op >= dis.HAVE_ARGUMENT: - opArg = ord(code[opIndex]) + ord(code[opIndex + 1]) * 256 - opIndex += 2 - if op == LOAD_CONST: - arguments.append(co.co_consts[opArg]) - elif op == IMPORT_NAME: - name = co.co_names[opArg] - if len(arguments) == 2: - relativeImportIndex, fromList = arguments - else: - relativeImportIndex = -1 - fromList, = arguments - if name not in module.excludeNames: - subModule = self._ImportModule(name, deferredImports, - module, relativeImportIndex) - if subModule is not None: - module.globalNames.update(subModule.globalNames) - if fromList and subModule.path is not None: - self._EnsureFromList(module, subModule, fromList, - deferredImports) - elif op == IMPORT_FROM: - opIndex += 3 - elif op not in (BUILD_LIST, INPLACE_ADD): - if op in STORE_OPS: - name = co.co_names[opArg] - if name == "__all__": - module.allNames.extend(arguments) - module.globalNames[name] = None - arguments = [] - for constant in co.co_consts: - if isinstance(constant, type(co)): - self._ScanCode(constant, module, deferredImports) - - def AddAlias(self, name, aliasFor): - """Add an alias for a particular module; when an attempt is made to - import a module using the alias name, import the actual name - instead.""" - self.aliases[name] = aliasFor - - def ExcludeModule(self, name): - """Exclude the named module from the resulting frozen executable.""" - self.excludes[name] = None - self._modules[name] = None - - def IncludeFile(self, path, moduleName = None): - """Include the named file as a module in the frozen executable.""" - name, ext = os.path.splitext(os.path.basename(path)) - if moduleName is None: - moduleName = name - info = (ext, "r", imp.PY_SOURCE) - deferredImports = [] - module = self._LoadModule(moduleName, file(path, "U"), path, info, - deferredImports) - self._ImportDeferredImports(deferredImports) - return module - - def IncludeFiles(self, sourcePath, targetPath): - """Include the files in the given directory in the target build.""" - self.includeFiles.append((sourcePath, targetPath)) - - def IncludeModule(self, name): - """Include the named module in the frozen executable.""" - deferredImports = [] - module = self._ImportModule(name, deferredImports) - self._ImportDeferredImports(deferredImports) - return module - - def IncludePackage(self, name): - """Include the named package and any submodules in the frozen - executable.""" - deferredImports = [] - module = self._ImportModule(name, deferredImports) - if module.path: - self._ImportAllSubModules(module, deferredImports) - self._ImportDeferredImports(deferredImports) - return module - - def ReportMissingModules(self): - if self._badModules: - print "Missing modules:" - names = self._badModules.keys() - names.sort() - for name in names: - callers = self._badModules[name].keys() - callers.sort() - print "?", name, "imported from", ", ".join(callers) - print - - -class Module(object): - - def __init__(self, name): - self.name = name - self.file = None - self.path = None - self.code = None - self.parent = None - self.globalNames = {} - self.excludeNames = {} - self.ignoreNames = {} - self.allNames = [] - self.inZipFile = False - - def __repr__(self): - parts = ["name=%s" % repr(self.name)] - if self.file is not None: - parts.append("file=%s" % repr(self.file)) - if self.path is not None: - parts.append("path=%s" % repr(self.path)) - return "<Module %s>" % ", ".join(parts) - - def AddGlobalName(self, name): - self.globalNames[name] = None - - def ExcludeName(self, name): - self.excludeNames[name] = None - - def IgnoreName(self, name): - self.ignoreNames[name] = None - diff --git a/setup/installer/cx_Freeze/cx_Freeze/freezer.py b/setup/installer/cx_Freeze/cx_Freeze/freezer.py deleted file mode 100644 index e0739e8a4e..0000000000 --- a/setup/installer/cx_Freeze/cx_Freeze/freezer.py +++ /dev/null @@ -1,550 +0,0 @@ -""" -Base class for freezing scripts into executables. -""" - -import datetime -import distutils.sysconfig -import imp -import marshal -import os -import shutil -import socket -import stat -import struct -import sys -import time -import zipfile - -import cx_Freeze -import cx_Freeze.util - -__all__ = [ "ConfigError", "ConstantsModule", "Executable", "Freezer" ] - -if sys.platform == "win32": - pythonDll = "python%s%s.dll" % sys.version_info[:2] - GLOBAL_BIN_PATH_EXCLUDES = [cx_Freeze.util.GetSystemDir()] - GLOBAL_BIN_INCLUDES = [ - pythonDll, - "gdiplus.dll", - "mfc71.dll", - "msvcp71.dll", - "msvcr71.dll" - ] - GLOBAL_BIN_EXCLUDES = [ - "comctl32.dll", - "oci.dll", - "cx_Logging.pyd" - ] -else: - extension = distutils.sysconfig.get_config_var("SO") - pythonSharedLib = "libpython%s.%s%s" % \ - (sys.version_info[:2] + (extension,)) - GLOBAL_BIN_INCLUDES = [pythonSharedLib] - GLOBAL_BIN_EXCLUDES = [ - "libclntsh.so", - "libwtc9.so" - ] - GLOBAL_BIN_PATH_EXCLUDES = ["/lib", "/lib32", "/lib64", "/usr/lib", - "/usr/lib32", "/usr/lib64"] - - -# NOTE: the try: except: block in this code is not necessary under Python 2.4 -# and higher and can be removed once support for Python 2.3 is no longer needed -EXTENSION_LOADER_SOURCE = \ -""" -import imp, os, sys - -found = False -for p in sys.path: - if not os.path.isdir(p): - continue - f = os.path.join(p, "%s") - if not os.path.exists(f): - continue - try: - m = imp.load_dynamic(__name__, f) - except ImportError: - del sys.modules[__name__] - raise - sys.modules[__name__] = m - found = True - break -if not found: - del sys.modules[__name__] - raise ImportError, "No module named %%s" %% __name__ -""" - - -class Freezer(object): - - def __init__(self, executables, constantsModules = [], includes = [], - excludes = [], packages = [], replacePaths = [], compress = None, - optimizeFlag = 0, copyDependentFiles = None, initScript = None, - base = None, path = None, createLibraryZip = None, - appendScriptToExe = None, appendScriptToLibrary = None, - targetDir = None, binIncludes = [], binExcludes = [], - binPathIncludes = [], binPathExcludes = [], icon = None, - includeFiles = []): - self.executables = executables - self.constantsModules = constantsModules - self.includes = includes - self.excludes = excludes - self.packages = packages - self.replacePaths = replacePaths - self.compress = compress - self.optimizeFlag = optimizeFlag - self.copyDependentFiles = copyDependentFiles - self.initScript = initScript - self.base = base - self.path = path - self.createLibraryZip = createLibraryZip - self.appendScriptToExe = appendScriptToExe - self.appendScriptToLibrary = appendScriptToLibrary - self.targetDir = targetDir - self.binIncludes = [os.path.normcase(n) \ - for n in GLOBAL_BIN_INCLUDES + binIncludes] - self.binExcludes = [os.path.normcase(n) \ - for n in GLOBAL_BIN_EXCLUDES + binExcludes] - self.binPathIncludes = [os.path.normcase(n) for n in binPathIncludes] - self.binPathExcludes = [os.path.normcase(n) \ - for n in GLOBAL_BIN_PATH_EXCLUDES + binPathExcludes] - self.icon = icon - self.includeFiles = includeFiles - self._VerifyConfiguration() - - def _CopyFile(self, source, target, copyDependentFiles, - includeMode = False): - normalizedSource = os.path.normcase(os.path.normpath(source)) - normalizedTarget = os.path.normcase(os.path.normpath(target)) - if normalizedTarget in self.filesCopied: - return - if normalizedSource == normalizedTarget: - return - self._RemoveFile(target) - targetDir = os.path.dirname(target) - self._CreateDirectory(targetDir) - print "copying", source, "->", target - shutil.copyfile(source, target) - if includeMode: - shutil.copymode(source, target) - self.filesCopied[normalizedTarget] = None - if copyDependentFiles: - for source in self._GetDependentFiles(source): - target = os.path.join(targetDir, os.path.basename(source)) - self._CopyFile(source, target, copyDependentFiles) - - def _CreateDirectory(self, path): - if not os.path.isdir(path): - print "creating directory", path - os.makedirs(path) - - def _FreezeExecutable(self, exe): - if self.createLibraryZip: - finder = self.finder - else: - finder = self._GetModuleFinder(exe) - if exe.script is None: - scriptModule = None - else: - scriptModule = finder.IncludeFile(exe.script, exe.moduleName) - self._CopyFile(exe.base, exe.targetName, exe.copyDependentFiles, - includeMode = True) - if exe.icon is not None: - if sys.platform == "win32": - cx_Freeze.util.AddIcon(exe.targetName, exe.icon) - else: - targetName = os.path.join(os.path.dirname(exe.targetName), - os.path.basename(exe.icon)) - self._CopyFile(exe.icon, targetName, - copyDependentFiles = False) - if not os.access(exe.targetName, os.W_OK): - mode = os.stat(exe.targetName).st_mode - os.chmod(exe.targetName, mode | stat.S_IWUSR) - if not exe.appendScriptToLibrary: - if exe.appendScriptToExe: - fileName = exe.targetName - else: - baseFileName, ext = os.path.splitext(exe.targetName) - fileName = baseFileName + ".zip" - self._RemoveFile(fileName) - if not self.createLibraryZip and exe.copyDependentFiles: - scriptModule = None - self._WriteModules(fileName, exe.initScript, finder, exe.compress, - exe.copyDependentFiles, scriptModule) - - def _GetBaseFileName(self, argsSource = None): - if argsSource is None: - argsSource = self - name = argsSource.base - if name is None: - if argsSource.copyDependentFiles: - name = "Console" - else: - name = "ConsoleKeepPath" - argsSource.base = self._GetFileName("bases", name) - if argsSource.base is None: - raise ConfigError("no base named %s", name) - - def _GetDependentFiles(self, path): - dependentFiles = self.dependentFiles.get(path) - if dependentFiles is None: - if sys.platform == "win32": - origPath = os.environ["PATH"] - os.environ["PATH"] = origPath + os.pathsep + \ - os.pathsep.join(sys.path) - dependentFiles = cx_Freeze.util.GetDependentFiles(path) - os.environ["PATH"] = origPath - else: - dependentFiles = [] - for line in os.popen('ldd "%s"' % path): - parts = line.strip().split(" => ") - if len(parts) != 2: - continue - dependentFile = parts[1] - if dependentFile == "not found": - print "WARNING: cannot find", parts[0] - continue - pos = dependentFile.find(" (") - if pos >= 0: - dependentFile = dependentFile[:pos].strip() - if dependentFile: - dependentFiles.append(dependentFile) - dependentFiles = self.dependentFiles[path] = \ - [f for f in dependentFiles if self._ShouldCopyFile(f)] - return dependentFiles - - def _GetFileName(self, dir, name): - if os.path.isabs(name): - return name - name = os.path.normcase(name) - fullDir = os.path.join(os.path.dirname(cx_Freeze.__file__), dir) - if os.path.isdir(fullDir): - for fileName in os.listdir(fullDir): - if name == os.path.splitext(os.path.normcase(fileName))[0]: - return os.path.join(fullDir, fileName) - - def _GetInitScriptFileName(self, argsSource = None): - if argsSource is None: - argsSource = self - name = argsSource.initScript - if name is None: - if argsSource.copyDependentFiles: - name = "Console" - else: - name = "ConsoleKeepPath" - argsSource.initScript = self._GetFileName("initscripts", name) - if argsSource.initScript is None: - raise ConfigError("no initscript named %s", name) - - def _GetModuleFinder(self, argsSource = None): - if argsSource is None: - argsSource = self - finder = cx_Freeze.ModuleFinder(self.includeFiles, argsSource.excludes, - argsSource.path, argsSource.replacePaths) - if argsSource.copyDependentFiles: - finder.IncludeModule("imp") - finder.IncludeModule("os") - finder.IncludeModule("sys") - if argsSource.compress: - finder.IncludeModule("zlib") - for name in argsSource.includes: - finder.IncludeModule(name) - for name in argsSource.packages: - finder.IncludePackage(name) - return finder - - def _PrintReport(self, fileName, modules): - print "writing zip file", fileName - print - print " %-25s %s" % ("Name", "File") - print " %-25s %s" % ("----", "----") - for module in modules: - if module.path: - print "P", - else: - print "m", - print "%-25s" % module.name, module.file or "" - print - - def _RemoveFile(self, path): - if os.path.exists(path): - os.chmod(path, 0777) - os.remove(path) - - def _ShouldCopyFile(self, path): - dir, name = os.path.split(os.path.normcase(path)) - parts = name.split(".") - tweaked = False - while True: - if not parts[-1].isdigit(): - break - parts.pop(-1) - tweaked = True - if tweaked: - name = ".".join(parts) - if name in self.binIncludes: - return True - if name in self.binExcludes: - return False - for path in self.binPathIncludes: - if dir.startswith(path): - return True - for path in self.binPathExcludes: - if dir.startswith(path): - return False - return True - - def _VerifyCanAppendToLibrary(self): - if not self.createLibraryZip: - raise ConfigError("script cannot be appended to library zip if " - "one is not being created") - - def _VerifyConfiguration(self): - if self.compress is None: - self.compress = True - if self.copyDependentFiles is None: - self.copyDependentFiles = True - if self.createLibraryZip is None: - self.createLibraryZip = True - if self.appendScriptToExe is None: - self.appendScriptToExe = False - if self.appendScriptToLibrary is None: - self.appendScriptToLibrary = \ - self.createLibraryZip and not self.appendScriptToExe - if self.targetDir is None: - self.targetDir = os.path.abspath("dist") - self._GetInitScriptFileName() - self._GetBaseFileName() - if self.path is None: - self.path = sys.path - if self.appendScriptToLibrary: - self._VerifyCanAppendToLibrary() - for sourceFileName, targetFileName in self.includeFiles: - if not os.path.exists(sourceFileName): - raise ConfigError("cannot find file/directory named %s", - sourceFileName) - if os.path.isabs(targetFileName): - raise ConfigError("target file/directory cannot be absolute") - for executable in self.executables: - executable._VerifyConfiguration(self) - - def _WriteModules(self, fileName, initScript, finder, compress, - copyDependentFiles, scriptModule = None): - initModule = finder.IncludeFile(initScript, "cx_Freeze__init__") - if scriptModule is None: - for module in self.constantsModules: - module.Create(finder) - modules = [m for m in finder.modules \ - if m.name not in self.excludeModules] - else: - modules = [initModule, scriptModule] - self.excludeModules[initModule.name] = None - self.excludeModules[scriptModule.name] = None - itemsToSort = [(m.name, m) for m in modules] - itemsToSort.sort() - modules = [m for n, m in itemsToSort] - self._PrintReport(fileName, modules) - if scriptModule is None: - finder.ReportMissingModules() - targetDir = os.path.dirname(fileName) - self._CreateDirectory(targetDir) - filesToCopy = [] - if os.path.exists(fileName): - mode = "a" - else: - mode = "w" - outFile = zipfile.PyZipFile(fileName, mode, zipfile.ZIP_DEFLATED) - for module in modules: - if module.code is None and module.file is not None: - fileName = os.path.basename(module.file) - baseFileName, ext = os.path.splitext(fileName) - if baseFileName != module.name and module.name != "zlib": - if "." in module.name: - fileName = module.name + ext - generatedFileName = "ExtensionLoader_%s.py" % \ - module.name.replace(".", "_") - module.code = compile(EXTENSION_LOADER_SOURCE % fileName, - generatedFileName, "exec") - target = os.path.join(targetDir, fileName) - filesToCopy.append((module, target)) - if module.code is None: - continue - fileName = "/".join(module.name.split(".")) - if module.path: - fileName += "/__init__" - if module.file is not None and os.path.exists(module.file): - mtime = os.stat(module.file).st_mtime - else: - mtime = time.time() - zipTime = time.localtime(mtime)[:6] - data = imp.get_magic() + struct.pack("<i", mtime) + \ - marshal.dumps(module.code) - zinfo = zipfile.ZipInfo(fileName + ".pyc", zipTime) - if compress: - zinfo.compress_type = zipfile.ZIP_DEFLATED - outFile.writestr(zinfo, data) - origPath = os.environ["PATH"] - for module, target in filesToCopy: - try: - if module.parent is not None: - path = os.pathsep.join([origPath] + module.parent.path) - os.environ["PATH"] = path - self._CopyFile(module.file, target, copyDependentFiles) - finally: - os.environ["PATH"] = origPath - - def Freeze(self): - self.finder = None - self.excludeModules = {} - self.dependentFiles = {} - self.filesCopied = {} - cx_Freeze.util.SetOptimizeFlag(self.optimizeFlag) - if self.createLibraryZip: - self.finder = self._GetModuleFinder() - for executable in self.executables: - self._FreezeExecutable(executable) - if self.createLibraryZip: - fileName = os.path.join(self.targetDir, "library.zip") - self._RemoveFile(fileName) - self._WriteModules(fileName, self.initScript, self.finder, - self.compress, self.copyDependentFiles) - for sourceFileName, targetFileName in self.includeFiles: - fullName = os.path.join(self.targetDir, targetFileName) - if os.path.isdir(sourceFileName): - for path, dirNames, fileNames in os.walk(sourceFileName): - shortPath = path[len(sourceFileName) + 1:] - if ".svn" in dirNames: - dirNames.remove(".svn") - if "CVS" in dirNames: - dirNames.remove("CVS") - for fileName in fileNames: - fullSourceName = os.path.join(path, fileName) - fullTargetName = os.path.join(self.targetDir, - targetFileName, shortPath, fileName) - self._CopyFile(fullSourceName, fullTargetName, - copyDependentFiles = False) - else: - self._CopyFile(sourceFileName, fullName, - copyDependentFiles = False) - - -class ConfigError(Exception): - - def __init__(self, format, *args): - self.what = format % args - - def __str__(self): - return self.what - - -class Executable(object): - - def __init__(self, script, initScript = None, base = None, path = None, - targetDir = None, targetName = None, includes = None, - excludes = None, packages = None, replacePaths = None, - compress = None, copyDependentFiles = None, - appendScriptToExe = None, appendScriptToLibrary = None, - icon = None): - self.script = script - self.initScript = initScript - self.base = base - self.path = path - self.targetDir = targetDir - self.targetName = targetName - self.includes = includes - self.excludes = excludes - self.packages = packages - self.replacePaths = replacePaths - self.compress = compress - self.copyDependentFiles = copyDependentFiles - self.appendScriptToExe = appendScriptToExe - self.appendScriptToLibrary = appendScriptToLibrary - self.icon = icon - - def __repr__(self): - return "<Executable script=%s>" % self.script - - def _VerifyConfiguration(self, freezer): - if self.path is None: - self.path = freezer.path - if self.targetDir is None: - self.targetDir = freezer.targetDir - if self.includes is None: - self.includes = freezer.includes - if self.excludes is None: - self.excludes = freezer.excludes - if self.packages is None: - self.packages = freezer.packages - if self.replacePaths is None: - self.replacePaths = freezer.replacePaths - if self.compress is None: - self.compress = freezer.compress - if self.copyDependentFiles is None: - self.copyDependentFiles = freezer.copyDependentFiles - if self.appendScriptToExe is None: - self.appendScriptToExe = freezer.appendScriptToExe - if self.appendScriptToLibrary is None: - self.appendScriptToLibrary = freezer.appendScriptToLibrary - if self.initScript is None: - self.initScript = freezer.initScript - else: - freezer._GetInitScriptFileName(self) - if self.base is None: - self.base = freezer.base - else: - freezer._GetBaseFileName(self) - if self.appendScriptToLibrary: - freezer._VerifyCanAppendToLibrary() - if self.icon is None: - self.icon = freezer.icon - if self.script is not None: - name, ext = os.path.splitext(os.path.basename(self.script)) - if self.appendScriptToLibrary: - self.moduleName = "%s__main__" % os.path.normcase(name) - else: - self.moduleName = "__main__" - if self.targetName is None: - baseName, ext = os.path.splitext(self.base) - self.targetName = name + ext - self.targetName = os.path.join(self.targetDir, self.targetName) - - -class ConstantsModule(object): - - def __init__(self, releaseString = None, copyright = None, - moduleName = "BUILD_CONSTANTS", timeFormat = "%B %d, %Y %H:%M:%S"): - self.moduleName = moduleName - self.timeFormat = timeFormat - self.values = {} - self.values["BUILD_RELEASE_STRING"] = releaseString - self.values["BUILD_COPYRIGHT"] = copyright - - def Create(self, finder): - """Create the module which consists of declaration statements for each - of the values.""" - today = datetime.datetime.today() - sourceTimestamp = 0 - for module in finder.modules: - if module.file is None: - continue - if module.inZipFile: - continue - if not os.path.exists(module.file): - raise ConfigError("no file named %s", module.file) - timestamp = os.stat(module.file).st_mtime - sourceTimestamp = max(sourceTimestamp, timestamp) - sourceTimestamp = datetime.datetime.fromtimestamp(sourceTimestamp) - self.values["BUILD_TIMESTAMP"] = today.strftime(self.timeFormat) - self.values["BUILD_HOST"] = socket.gethostname().split(".")[0] - self.values["SOURCE_TIMESTAMP"] = \ - sourceTimestamp.strftime(self.timeFormat) - module = finder._AddModule(self.moduleName) - sourceParts = [] - names = self.values.keys() - names.sort() - for name in names: - value = self.values[name] - sourceParts.append("%s = %r" % (name, value)) - source = "\n".join(sourceParts) - module.code = compile(source, "%s.py" % self.moduleName, "exec") - diff --git a/setup/installer/cx_Freeze/cx_Freeze/hooks.py b/setup/installer/cx_Freeze/cx_Freeze/hooks.py deleted file mode 100644 index edc2f78788..0000000000 --- a/setup/installer/cx_Freeze/cx_Freeze/hooks.py +++ /dev/null @@ -1,281 +0,0 @@ -import os -import sys - -def initialize(finder): - """upon initialization of the finder, this routine is called to set up some - automatic exclusions for various platforms.""" - finder.ExcludeModule("FCNTL") - finder.ExcludeModule("os.path") - if os.name == "nt": - finder.ExcludeModule("fcntl") - finder.ExcludeModule("grp") - finder.ExcludeModule("pwd") - finder.ExcludeModule("termios") - else: - finder.ExcludeModule("_winreg") - finder.ExcludeModule("msilib") - finder.ExcludeModule("msvcrt") - finder.ExcludeModule("nt") - if os.name not in ("os2", "ce"): - finder.ExcludeModule("ntpath") - finder.ExcludeModule("nturl2path") - finder.ExcludeModule("pythoncom") - finder.ExcludeModule("pywintypes") - finder.ExcludeModule("winerror") - finder.ExcludeModule("winsound") - finder.ExcludeModule("win32api") - finder.ExcludeModule("win32con") - finder.ExcludeModule("win32event") - finder.ExcludeModule("win32file") - finder.ExcludeModule("win32pdh") - finder.ExcludeModule("win32pipe") - finder.ExcludeModule("win32process") - finder.ExcludeModule("win32security") - finder.ExcludeModule("win32service") - finder.ExcludeModule("wx.activex") - if os.name != "posix": - finder.ExcludeModule("posix") - if os.name != "mac": - finder.ExcludeModule("Carbon") - finder.ExcludeModule("gestalt") - finder.ExcludeModule("ic") - finder.ExcludeModule("mac") - finder.ExcludeModule("MacOS") - finder.ExcludeModule("macpath") - finder.ExcludeModule("macurl2path") - if os.name != "nt": - finder.ExcludeModule("EasyDialogs") - if os.name != "os2": - finder.ExcludeModule("os2") - finder.ExcludeModule("os2emxpath") - finder.ExcludeModule("_emx_link") - if os.name != "ce": - finder.ExcludeModule("ce") - if os.name != "riscos": - finder.ExcludeModule("riscos") - finder.ExcludeModule("riscosenviron") - finder.ExcludeModule("riscospath") - finder.ExcludeModule("rourl2path") - if sys.platform[:4] != "java": - finder.ExcludeModule("java.lang") - finder.ExcludeModule("org.python.core") - - -def load_cElementTree(finder, module): - """the cElementTree module implicitly loads the elementtree.ElementTree - module; make sure this happens.""" - finder.IncludeModule("elementtree.ElementTree") - - -def load_ceODBC(finder, module): - """the ceODBC module implicitly imports both datetime and decimal; make - sure this happens.""" - finder.IncludeModule("datetime") - finder.IncludeModule("decimal") - - -def load_cx_Oracle(finder, module): - """the cx_Oracle module implicitly imports datetime; make sure this - happens.""" - finder.IncludeModule("datetime") - - -def load_docutils_frontend(finder, module): - """The optik module is the old name for the optparse module; ignore the - module if it cannot be found.""" - module.IgnoreName("optik") - - -def load_dummy_threading(finder, module): - """the dummy_threading module plays games with the name of the threading - module for its own purposes; ignore that here""" - finder.ExcludeModule("_dummy_threading") - - -def load_email(finder, module): - """the email package has a bunch of aliases as the submodule names were - all changed to lowercase in Python 2.5; mimic that here.""" - if sys.version_info[:2] >= (2, 5): - for name in ("Charset", "Encoders", "Errors", "FeedParser", - "Generator", "Header", "Iterators", "Message", "Parser", - "Utils", "base64MIME", "quopriMIME"): - finder.AddAlias("email.%s" % name, "email.%s" % name.lower()) - - -def load_ftplib(finder, module): - """the ftplib module attempts to import the SOCKS module; ignore this - module if it cannot be found""" - module.IgnoreName("SOCKS") - - -def load_matplotlib(finder, module): - """the matplotlib module requires data to be found in mpl-data in the - same directory as the frozen executable so oblige it""" - dir = os.path.join(module.path[0], "mpl-data") - finder.IncludeFiles(dir, "mpl-data") - - -def load_matplotlib_numerix(finder, module): - """the numpy.numerix module loads a number of modules dynamically""" - for name in ("ma", "fft", "linear_algebra", "random_array", "mlab"): - finder.IncludeModule("%s.%s" % (module.name, name)) - - -def load_numpy_linalg(finder, module): - """the numpy.linalg module implicitly loads the lapack_lite module; make - sure this happens""" - finder.IncludeModule("numpy.linalg.lapack_lite") - - -def load_pty(finder, module): - """The sgi module is not needed for this module to function.""" - module.IgnoreName("sgi") - - -def load_pythoncom(finder, module): - """the pythoncom module is actually contained in a DLL but since those - cannot be loaded directly in Python 2.5 and higher a special module is - used to perform that task; simply use that technique directly to - determine the name of the DLL and ensure it is included as a normal - extension; also load the pywintypes module which is implicitly - loaded.""" - import pythoncom - module.file = pythoncom.__file__ - module.code = None - finder.IncludeModule("pywintypes") - - -def load_pywintypes(finder, module): - """the pywintypes module is actually contained in a DLL but since those - cannot be loaded directly in Python 2.5 and higher a special module is - used to perform that task; simply use that technique directly to - determine the name of the DLL and ensure it is included as a normal - extension.""" - import pywintypes - module.file = pywintypes.__file__ - module.code = None - - -def load_PyQt4_Qt(finder, module): - """the PyQt4.Qt module is an extension module which imports a number of - other modules and injects their namespace into its own. It seems a - foolish way of doing things but perhaps there is some hidden advantage - to this technique over pure Python; ignore the absence of some of - the modules since not every installation includes all of them.""" - finder.IncludeModule("PyQt4.QtCore") - finder.IncludeModule("PyQt4.QtGui") - finder.IncludeModule("sip") - for name in ("PyQt4.QtSvg", "PyQt4.Qsci", "PyQt4.QtAssistant", - "PyQt4.QtNetwork", "PyQt4.QtOpenGL", "PyQt4.QtScript", "PyQt4._qt", - "PyQt4.QtSql", "PyQt4.QtSvg", "PyQt4.QtTest", "PyQt4.QtXml"): - try: - finder.IncludeModule(name) - except ImportError: - pass - - -def load_Tkinter(finder, module): - """the Tkinter module has data files that are required to be loaded so - ensure that they are copied into the directory that is expected at - runtime.""" - import Tkinter - import _tkinter - tk = _tkinter.create() - tclDir = os.path.dirname(tk.call("info", "library")) - tclSourceDir = os.path.join(tclDir, "tcl%s" % _tkinter.TCL_VERSION) - tkSourceDir = os.path.join(tclDir, "tk%s" % _tkinter.TK_VERSION) - finder.IncludeFiles(tclSourceDir, "tcl") - finder.IncludeFiles(tkSourceDir, "tk") - - -def load_tempfile(finder, module): - """the tempfile module attempts to load the fcntl and thread modules but - continues if these modules cannot be found; ignore these modules if they - cannot be found.""" - module.IgnoreName("fcntl") - module.IgnoreName("thread") - - -def load_time(finder, module): - """the time module implicitly loads _strptime; make sure this happens.""" - finder.IncludeModule("_strptime") - - -def load_win32api(finder, module): - """the win32api module implicitly loads the pywintypes module; make sure - this happens.""" - finder.IncludeModule("pywintypes") - - -def load_win32com(finder, module): - """the win32com package manipulates its search path at runtime to include - the sibling directory called win32comext; simulate that by changing the - search path in a similar fashion here.""" - baseDir = os.path.dirname(os.path.dirname(module.file)) - module.path.append(os.path.join(baseDir, "win32comext")) - - -def load_win32file(finder, module): - """the win32api module implicitly loads the pywintypes module; make sure - this happens.""" - finder.IncludeModule("pywintypes") - - -def load_xml(finder, module): - """the builtin xml package attempts to load the _xmlplus module to see if - that module should take its role instead; ignore the failure to find - this module, though.""" - module.IgnoreName("_xmlplus") - - -def load_xml_etree_cElementTree(finder, module): - """the xml.etree.cElementTree module implicitly loads the - xml.etree.ElementTree module; make sure this happens.""" - finder.IncludeModule("xml.etree.ElementTree") - -def load_IPython(finder, module): - ipy = os.path.join(os.path.dirname(module.file), 'Extensions') - extensions = set([]) - for m in os.listdir(ipy): - extensions.add(os.path.splitext(m)[0]) - extensions.remove('__init__') - for m in extensions: - finder.IncludeModule('IPython.Extensions.'+m) - -def load_lxml(finder, module): - finder.IncludeModule('lxml._elementpath') - -def load_cherrypy(finder, module): - finder.IncludeModule('cherrypy.lib.encoding') - -def missing_cElementTree(finder, caller): - """the cElementTree has been incorporated into the standard library in - Python 2.5 so ignore its absence if it cannot found.""" - if sys.version_info[:2] >= (2, 5): - caller.IgnoreName("cElementTree") - - -def missing_EasyDialogs(finder, caller): - """the EasyDialogs module is not normally present on Windows but it also - may be so instead of excluding it completely, ignore it if it can't be - found""" - if sys.platform == "win32": - caller.IgnoreName("EasyDialogs") - - -def missing_readline(finder, caller): - """the readline module is not normally present on Windows but it also may - be so instead of excluding it completely, ignore it if it can't be - found""" - if sys.platform == "win32": - caller.IgnoreName("readline") - - -def missing_xml_etree(finder, caller): - """the xml.etree package is new for Python 2.5 but it is common practice - to use a try..except.. block in order to support versions earlier than - Python 2.5 transparently; ignore the absence of the package in this - situation.""" - if sys.version_info[:2] < (2, 5): - caller.IgnoreName("xml.etree") - diff --git a/setup/installer/cx_Freeze/cx_Freeze/main.py b/setup/installer/cx_Freeze/cx_Freeze/main.py deleted file mode 100644 index 1704c598d2..0000000000 --- a/setup/installer/cx_Freeze/cx_Freeze/main.py +++ /dev/null @@ -1,171 +0,0 @@ -import optparse -import os -import shutil -import stat -import sys - -import cx_Freeze - -__all__ = ["main"] - -USAGE = \ -""" -%prog [options] [SCRIPT] - -Freeze a Python script and all of its referenced modules to a base -executable which can then be distributed without requiring a Python -installation.""" - -VERSION = \ -""" -%%prog %s -Copyright (c) 2007-2008 Colt Engineering. All rights reserved. -Copyright (c) 2001-2006 Computronix Corporation. All rights reserved.""" % \ - cx_Freeze.version - - -def ParseCommandLine(): - parser = optparse.OptionParser(version = VERSION.strip(), - usage = USAGE.strip()) - parser.add_option("-O", - action = "count", - default = 0, - dest = "optimized", - help = "optimize generated bytecode as per PYTHONOPTIMIZE; " - "use -OO in order to remove doc strings") - parser.add_option("-c", "--compress", - action = "store_true", - dest = "compress", - help = "compress byte code in zip files") - parser.add_option("--base-name", - dest = "baseName", - metavar = "NAME", - help = "file on which to base the target file; if the name of the " - "file is not an absolute file name, the subdirectory bases " - "(rooted in the directory in which the freezer is found) " - "will be searched for a file matching the name") - parser.add_option("--init-script", - dest = "initScript", - metavar = "NAME", - help = "script which will be executed upon startup; if the name " - "of the file is not an absolute file name, the " - "subdirectory initscripts (rooted in the directory in " - "which the cx_Freeze package is found) will be searched " - "for a file matching the name") - parser.add_option("--target-dir", "--install-dir", - dest = "targetDir", - metavar = "DIR", - help = "the directory in which to place the target file and " - "any dependent files") - parser.add_option("--target-name", - dest = "targetName", - metavar = "NAME", - help = "the name of the file to create instead of the base name " - "of the script and the extension of the base binary") - parser.add_option("--no-copy-deps", - dest = "copyDeps", - default = True, - action = "store_false", - help = "do not copy the dependent files (extensions, shared " - "libraries, etc.) to the target directory; this also " - "modifies the default init script to ConsoleKeepPath.py " - "and means that the target executable requires a Python " - "installation to execute properly") - parser.add_option("--default-path", - action = "append", - dest = "defaultPath", - metavar = "DIRS", - help = "list of paths separated by the standard path separator " - "for the platform which will be used to initialize " - "sys.path prior to running the module finder") - parser.add_option("--include-path", - action = "append", - dest = "includePath", - metavar = "DIRS", - help = "list of paths separated by the standard path separator " - "for the platform which will be used to modify sys.path " - "prior to running the module finder") - parser.add_option("--replace-paths", - dest = "replacePaths", - metavar = "DIRECTIVES", - help = "replace all the paths in modules found in the given paths " - "with the given replacement string; multiple values are " - "separated by the standard path separator and each value " - "is of the form path=replacement_string; path can be * " - "which means all paths not already specified") - parser.add_option("--include-modules", - dest = "includeModules", - metavar = "NAMES", - help = "comma separated list of modules to include") - parser.add_option("--exclude-modules", - dest = "excludeModules", - metavar = "NAMES", - help = "comma separated list of modules to exclude") - parser.add_option("--ext-list-file", - dest = "extListFile", - metavar = "NAME", - help = "name of file in which to place the list of dependent files " - "which were copied into the target directory") - parser.add_option("-z", "--zip-include", - dest = "zipIncludes", - action = "append", - default = [], - metavar = "SPEC", - help = "name of file to add to the zip file or a specification of " - "the form name=arcname which will specify the archive name " - "to use; multiple --zip-include arguments can be used") - options, args = parser.parse_args() - if len(args) == 0: - options.script = None - elif len(args) == 1: - options.script, = args - else: - parser.error("only one script can be specified") - if not args and options.includeModules is None and options.copyDeps: - parser.error("script or a list of modules must be specified") - if not args and options.targetName is None: - parser.error("script or a target name must be specified") - if options.excludeModules: - options.excludeModules = options.excludeModules.split(",") - else: - options.excludeModules = [] - if options.includeModules: - options.includeModules = options.includeModules.split(",") - else: - options.includeModules = [] - replacePaths = [] - if options.replacePaths: - for directive in options.replacePaths.split(os.pathsep): - fromPath, replacement = directive.split("=") - replacePaths.append((fromPath, replacement)) - options.replacePaths = replacePaths - if options.defaultPath is not None: - sys.path = [p for mp in options.defaultPath \ - for p in mp.split(os.pathsep)] - if options.includePath is not None: - paths = [p for mp in options.includePath for p in mp.split(os.pathsep)] - sys.path = paths + sys.path - if options.script is not None: - sys.path.insert(0, os.path.dirname(options.script)) - return options - - -def main(): - options = ParseCommandLine() - executables = [cx_Freeze.Executable(options.script, - targetName = options.targetName)] - freezer = cx_Freeze.Freezer(executables, - includes = options.includeModules, - excludes = options.excludeModules, - replacePaths = options.replacePaths, - compress = options.compress, - optimizeFlag = options.optimized, - copyDependentFiles = options.copyDeps, - initScript = options.initScript, - base = options.baseName, - path = None, - createLibraryZip = False, - appendScriptToExe = True, - targetDir = options.targetDir) - freezer.Freeze() - diff --git a/setup/installer/cx_Freeze/cx_Freeze/windist.py b/setup/installer/cx_Freeze/cx_Freeze/windist.py deleted file mode 100644 index 51af544771..0000000000 --- a/setup/installer/cx_Freeze/cx_Freeze/windist.py +++ /dev/null @@ -1,337 +0,0 @@ -import distutils.command.bdist_msi -import msilib -import os - -__all__ = [ "bdist_msi" ] - -# force the remove existing products action to happen first since Windows -# installer appears to be braindead and doesn't handle files shared between -# different "products" very well -sequence = msilib.sequence.InstallExecuteSequence -for index, info in enumerate(sequence): - if info[0] == u'RemoveExistingProducts': - sequence[index] = (info[0], info[1], 1450) - - -class bdist_msi(distutils.command.bdist_msi.bdist_msi): - user_options = distutils.command.bdist_msi.bdist_msi.user_options + [ - ('add-to-path=', None, 'add target dir to PATH environment variable'), - ('upgrade-code=', None, 'upgrade code to use') - ] - x = y = 50 - width = 370 - height = 300 - title = "[ProductName] Setup" - modeless = 1 - modal = 3 - - def add_config(self, fullname): - initialTargetDir = self.get_initial_target_dir(fullname) - if self.add_to_path is None: - self.add_to_path = False - for executable in self.distribution.executables: - if os.path.basename(executable.base).startswith("Console"): - self.add_to_path = True - break - if self.add_to_path: - msilib.add_data(self.db, 'Environment', - [("E_PATH", "Path", r"[~];[TARGETDIR]", "TARGETDIR")]) - msilib.add_data(self.db, 'CustomAction', - [("InitialTargetDir", 256 + 51, "TARGETDIR", initialTargetDir) - ]) - msilib.add_data(self.db, 'InstallExecuteSequence', - [("InitialTargetDir", 'TARGETDIR=""', 401)]) - msilib.add_data(self.db, 'InstallUISequence', - [("PrepareDlg", None, 140), - ("InitialTargetDir", 'TARGETDIR=""', 401), - ("SelectDirectoryDlg", "not Installed", 1230), - ("MaintenanceTypeDlg", - "Installed and not Resume and not Preselected", 1250), - ("ProgressDlg", None, 1280) - ]) - - def add_cancel_dialog(self): - dialog = msilib.Dialog(self.db, "CancelDlg", 50, 10, 260, 85, 3, - self.title, "No", "No", "No") - dialog.text("Text", 48, 15, 194, 30, 3, - "Are you sure you want to cancel [ProductName] installation?") - button = dialog.pushbutton("Yes", 72, 57, 56, 17, 3, "Yes", "No") - button.event("EndDialog", "Exit") - button = dialog.pushbutton("No", 132, 57, 56, 17, 3, "No", "Yes") - button.event("EndDialog", "Return") - - def add_error_dialog(self): - dialog = msilib.Dialog(self.db, "ErrorDlg", 50, 10, 330, 101, 65543, - self.title, "ErrorText", None, None) - dialog.text("ErrorText", 50, 9, 280, 48, 3, "") - for text, x in [("No", 120), ("Yes", 240), ("Abort", 0), - ("Cancel", 42), ("Ignore", 81), ("Ok", 159), ("Retry", 198)]: - button = dialog.pushbutton(text[0], x, 72, 81, 21, 3, text, None) - button.event("EndDialog", "Error%s" % text) - - def add_exit_dialog(self): - dialog = distutils.command.bdist_msi.PyDialog(self.db, "ExitDialog", - self.x, self.y, self.width, self.height, self.modal, - self.title, "Finish", "Finish", "Finish") - dialog.title("Completing the [ProductName] installer") - dialog.back("< Back", "Finish", active = False) - dialog.cancel("Cancel", "Back", active = False) - dialog.text("Description", 15, 235, 320, 20, 0x30003, - "Click the Finish button to exit the installer.") - button = dialog.next("Finish", "Cancel", name = "Finish") - button.event("EndDialog", "Return") - - def add_fatal_error_dialog(self): - dialog = distutils.command.bdist_msi.PyDialog(self.db, "FatalError", - self.x, self.y, self.width, self.height, self.modal, - self.title, "Finish", "Finish", "Finish") - dialog.title("[ProductName] installer ended prematurely") - dialog.back("< Back", "Finish", active = False) - dialog.cancel("Cancel", "Back", active = False) - dialog.text("Description1", 15, 70, 320, 80, 0x30003, - "[ProductName] setup ended prematurely because of an error. " - "Your system has not been modified. To install this program " - "at a later time, please run the installation again.") - dialog.text("Description2", 15, 155, 320, 20, 0x30003, - "Click the Finish button to exit the installer.") - button = dialog.next("Finish", "Cancel", name = "Finish") - button.event("EndDialog", "Exit") - - def add_files_in_use_dialog(self): - dialog = distutils.command.bdist_msi.PyDialog(self.db, "FilesInUse", - self.x, self.y, self.width, self.height, 19, self.title, - "Retry", "Retry", "Retry", bitmap = False) - dialog.text("Title", 15, 6, 200, 15, 0x30003, - r"{\DlgFontBold8}Files in Use") - dialog.text("Description", 20, 23, 280, 20, 0x30003, - "Some files that need to be updated are currently in use.") - dialog.text("Text", 20, 55, 330, 50, 3, - "The following applications are using files that need to be " - "updated by this setup. Close these applications and then " - "click Retry to continue the installation or Cancel to exit " - "it.") - dialog.control("List", "ListBox", 20, 107, 330, 130, 7, - "FileInUseProcess", None, None, None) - button = dialog.back("Exit", "Ignore", name = "Exit") - button.event("EndDialog", "Exit") - button = dialog.next("Ignore", "Retry", name = "Ignore") - button.event("EndDialog", "Ignore") - button = dialog.cancel("Retry", "Exit", name = "Retry") - button.event("EndDialog", "Retry") - - def add_maintenance_type_dialog(self): - dialog = distutils.command.bdist_msi.PyDialog(self.db, - "MaintenanceTypeDlg", self.x, self.y, self.width, self.height, - self.modal, self.title, "Next", "Next", "Cancel") - dialog.title("Welcome to the [ProductName] Setup Wizard") - dialog.text("BodyText", 15, 63, 330, 42, 3, - "Select whether you want to repair or remove [ProductName].") - group = dialog.radiogroup("RepairRadioGroup", 15, 108, 330, 60, 3, - "MaintenanceForm_Action", "", "Next") - group.add("Repair", 0, 18, 300, 17, "&Repair [ProductName]") - group.add("Remove", 0, 36, 300, 17, "Re&move [ProductName]") - dialog.back("< Back", None, active = False) - button = dialog.next("Finish", "Cancel") - button.event("[REINSTALL]", "ALL", - 'MaintenanceForm_Action="Repair"', 5) - button.event("[Progress1]", "Repairing", - 'MaintenanceForm_Action="Repair"', 6) - button.event("[Progress2]", "repairs", - 'MaintenanceForm_Action="Repair"', 7) - button.event("Reinstall", "ALL", - 'MaintenanceForm_Action="Repair"', 8) - button.event("[REMOVE]", "ALL", - 'MaintenanceForm_Action="Remove"', 11) - button.event("[Progress1]", "Removing", - 'MaintenanceForm_Action="Remove"', 12) - button.event("[Progress2]", "removes", - 'MaintenanceForm_Action="Remove"', 13) - button.event("Remove", "ALL", - 'MaintenanceForm_Action="Remove"', 14) - button.event("EndDialog", "Return", - 'MaintenanceForm_Action<>"Change"', 20) - button = dialog.cancel("Cancel", "RepairRadioGroup") - button.event("SpawnDialog", "CancelDlg") - - def add_prepare_dialog(self): - dialog = distutils.command.bdist_msi.PyDialog(self.db, "PrepareDlg", - self.x, self.y, self.width, self.height, self.modeless, - self.title, "Cancel", "Cancel", "Cancel") - dialog.text("Description", 15, 70, 320, 40, 0x30003, - "Please wait while the installer prepares to guide you through" - "the installation.") - dialog.title("Welcome to the [ProductName] installer") - text = dialog.text("ActionText", 15, 110, 320, 20, 0x30003, - "Pondering...") - text.mapping("ActionText", "Text") - text = dialog.text("ActionData", 15, 135, 320, 30, 0x30003, None) - text.mapping("ActionData", "Text") - dialog.back("Back", None, active = False) - dialog.next("Next", None, active = False) - button = dialog.cancel("Cancel", None) - button.event("SpawnDialog", "CancelDlg") - - def add_progress_dialog(self): - dialog = distutils.command.bdist_msi.PyDialog(self.db, "ProgressDlg", - self.x, self.y, self.width, self.height, self.modeless, - self.title, "Cancel", "Cancel", "Cancel", bitmap = False) - dialog.text("Title", 20, 15, 200, 15, 0x30003, - r"{\DlgFontBold8}[Progress1] [ProductName]") - dialog.text("Text", 35, 65, 300, 30, 3, - "Please wait while the installer [Progress2] [ProductName].") - dialog.text("StatusLabel", 35, 100 ,35, 20, 3, "Status:") - text = dialog.text("ActionText", 70, 100, self.width - 70, 20, 3, - "Pondering...") - text.mapping("ActionText", "Text") - control = dialog.control("ProgressBar", "ProgressBar", 35, 120, 300, - 10, 65537, None, "Progress done", None, None) - control.mapping("SetProgress", "Progress") - dialog.back("< Back", "Next", active = False) - dialog.next("Next >", "Cancel", active = False) - button = dialog.cancel("Cancel", "Back") - button.event("SpawnDialog", "CancelDlg") - - def add_properties(self): - metadata = self.distribution.metadata - props = [ - ('DistVersion', metadata.get_version()), - ('DefaultUIFont', 'DlgFont8'), - ('ErrorDialog', 'ErrorDlg'), - ('Progress1', 'Install'), - ('Progress2', 'installs'), - ('MaintenanceForm_Action', 'Repair') - ] - email = metadata.author_email or metadata.maintainer_email - if email: - props.append(("ARPCONTACT", email)) - if metadata.url: - props.append(("ARPURLINFOABOUT", metadata.url)) - if self.upgrade_code is not None: - props.append(("UpgradeCode", self.upgrade_code)) - msilib.add_data(self.db, 'Property', props) - - def add_select_directory_dialog(self): - dialog = distutils.command.bdist_msi.PyDialog(self.db, - "SelectDirectoryDlg", self.x, self.y, self.width, self.height, - self.modal, self.title, "Next", "Next", "Cancel") - dialog.title("Select destination directory") - dialog.back("< Back", None, active = False) - button = dialog.next("Next >", "Cancel") - button.event("SetTargetPath", "TARGETDIR", ordering = 1) - button.event("SpawnWaitDialog", "WaitForCostingDlg", ordering = 2) - button.event("EndDialog", "Return", ordering = 3) - button = dialog.cancel("Cancel", "DirectoryCombo") - button.event("SpawnDialog", "CancelDlg") - dialog.control("DirectoryCombo", "DirectoryCombo", 15, 70, 272, 80, - 393219, "TARGETDIR", None, "DirectoryList", None) - dialog.control("DirectoryList", "DirectoryList", 15, 90, 308, 136, 3, - "TARGETDIR", None, "PathEdit", None) - dialog.control("PathEdit", "PathEdit", 15, 230, 306, 16, 3, - "TARGETDIR", None, "Next", None) - button = dialog.pushbutton("Up", 306, 70, 18, 18, 3, "Up", None) - button.event("DirectoryListUp", "0") - button = dialog.pushbutton("NewDir", 324, 70, 30, 18, 3, "New", None) - button.event("DirectoryListNew", "0") - - def add_text_styles(self): - msilib.add_data(self.db, 'TextStyle', - [("DlgFont8", "Tahoma", 9, None, 0), - ("DlgFontBold8", "Tahoma", 8, None, 1), - ("VerdanaBold10", "Verdana", 10, None, 1), - ("VerdanaRed9", "Verdana", 9, 255, 0) - ]) - - def add_ui(self): - self.add_text_styles() - self.add_error_dialog() - self.add_fatal_error_dialog() - self.add_cancel_dialog() - self.add_exit_dialog() - self.add_user_exit_dialog() - self.add_files_in_use_dialog() - self.add_wait_for_costing_dialog() - self.add_prepare_dialog() - self.add_select_directory_dialog() - self.add_progress_dialog() - self.add_maintenance_type_dialog() - - def add_upgrade_config(self, sversion): - if self.upgrade_code is not None: - msilib.add_data(self.db, 'Upgrade', - [(self.upgrade_code, None, sversion, None, 513, None, - "REMOVEOLDVERSION"), - (self.upgrade_code, sversion, None, None, 257, None, - "REMOVENEWVERSION") - ]) - - def add_user_exit_dialog(self): - dialog = distutils.command.bdist_msi.PyDialog(self.db, "UserExit", - self.x, self.y, self.width, self.height, self.modal, - self.title, "Finish", "Finish", "Finish") - dialog.title("[ProductName] installer was interrupted") - dialog.back("< Back", "Finish", active = False) - dialog.cancel("Cancel", "Back", active = False) - dialog.text("Description1", 15, 70, 320, 80, 0x30003, - "[ProductName] setup was interrupted. Your system has not " - "been modified. To install this program at a later time, " - "please run the installation again.") - dialog.text("Description2", 15, 155, 320, 20, 0x30003, - "Click the Finish button to exit the installer.") - button = dialog.next("Finish", "Cancel", name = "Finish") - button.event("EndDialog", "Exit") - - def add_wait_for_costing_dialog(self): - dialog = msilib.Dialog(self.db, "WaitForCostingDlg", 50, 10, 260, 85, - self.modal, self.title, "Return", "Return", "Return") - dialog.text("Text", 48, 15, 194, 30, 3, - "Please wait while the installer finishes determining your " - "disk space requirements.") - button = dialog.pushbutton("Return", 102, 57, 56, 17, 3, "Return", - None) - button.event("EndDialog", "Exit") - - def get_initial_target_dir(self, fullname): - return r"[ProgramFilesFolder]\%s" % fullname - - def get_installer_filename(self, fullname): - return os.path.join(self.dist_dir, "%s.msi" % fullname) - - def initialize_options(self): - distutils.command.bdist_msi.bdist_msi.initialize_options(self) - self.upgrade_code = None - self.add_to_path = None - - def run(self): - if not self.skip_build: - self.run_command('build') - install = self.reinitialize_command('install', reinit_subcommands = 1) - install.prefix = self.bdist_dir - install.skip_build = self.skip_build - install.warn_dir = 0 - distutils.log.info("installing to %s", self.bdist_dir) - install.ensure_finalized() - install.run() - self.mkpath(self.dist_dir) - fullname = self.distribution.get_fullname() - filename = os.path.abspath(self.get_installer_filename(fullname)) - if os.path.exists(filename): - os.unlink(filename) - metadata = self.distribution.metadata - author = metadata.author or metadata.maintainer or "UNKNOWN" - version = metadata.get_version() - sversion = "%d.%d.%d" % \ - distutils.version.StrictVersion(version).version - self.db = msilib.init_database(filename, msilib.schema, - self.distribution.metadata.name, msilib.gen_uuid(), sversion, - author) - msilib.add_tables(self.db, msilib.sequence) - self.add_properties() - self.add_config(fullname) - self.add_upgrade_config(sversion) - self.add_ui() - self.add_files() - self.db.Commit() - if not self.keep_temp: - distutils.dir_util.remove_tree(self.bdist_dir, - dry_run = self.dry_run) - diff --git a/setup/installer/cx_Freeze/cxfreeze b/setup/installer/cx_Freeze/cxfreeze deleted file mode 100755 index acd6789833..0000000000 --- a/setup/installer/cx_Freeze/cxfreeze +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/python - -from cx_Freeze import main - -main() - diff --git a/setup/installer/cx_Freeze/initscripts/Console.py b/setup/installer/cx_Freeze/initscripts/Console.py deleted file mode 100755 index e10649d722..0000000000 --- a/setup/installer/cx_Freeze/initscripts/Console.py +++ /dev/null @@ -1,35 +0,0 @@ -#------------------------------------------------------------------------------ -# Console.py -# Initialization script for cx_Freeze which manipulates the path so that the -# directory in which the executable is found is searched for extensions but -# no other directory is searched. It also sets the attribute sys.frozen so that -# the Win32 extensions behave as expected. -#------------------------------------------------------------------------------ - -import encodings -import os -import sys -import warnings -import zipimport - -sys.frozen = True -sys.path = sys.path[:4] - -os.environ["TCL_LIBRARY"] = os.path.join(DIR_NAME, "tcl") -os.environ["TK_LIBRARY"] = os.path.join(DIR_NAME, "tk") - -m = __import__("__main__") -importer = zipimport.zipimporter(INITSCRIPT_ZIP_FILE_NAME) -if INITSCRIPT_ZIP_FILE_NAME != SHARED_ZIP_FILE_NAME: - moduleName = m.__name__ -else: - name, ext = os.path.splitext(os.path.basename(os.path.normcase(FILE_NAME))) - moduleName = "%s__main__" % name -code = importer.get_code(moduleName) -exec code in m.__dict__ - -if sys.version_info[:2] >= (2, 5): - module = sys.modules.get("threading") - if module is not None: - module._shutdown() - diff --git a/setup/installer/cx_Freeze/initscripts/ConsoleKeepPath.py b/setup/installer/cx_Freeze/initscripts/ConsoleKeepPath.py deleted file mode 100755 index 60151a1ff6..0000000000 --- a/setup/installer/cx_Freeze/initscripts/ConsoleKeepPath.py +++ /dev/null @@ -1,19 +0,0 @@ -#------------------------------------------------------------------------------ -# ConsoleKeepPath.py -# Initialization script for cx_Freeze which leaves the path alone and does -# not set the sys.frozen attribute. -#------------------------------------------------------------------------------ - -import sys -import zipimport - -m = __import__("__main__") -importer = zipimport.zipimporter(INITSCRIPT_ZIP_FILE_NAME) -code = importer.get_code(m.__name__) -exec code in m.__dict__ - -if sys.version_info[:2] >= (2, 5): - module = sys.modules.get("threading") - if module is not None: - module._shutdown() - diff --git a/setup/installer/cx_Freeze/initscripts/ConsoleSetLibPath.py b/setup/installer/cx_Freeze/initscripts/ConsoleSetLibPath.py deleted file mode 100755 index b558652c0a..0000000000 --- a/setup/installer/cx_Freeze/initscripts/ConsoleSetLibPath.py +++ /dev/null @@ -1,38 +0,0 @@ -#------------------------------------------------------------------------------ -# ConsoleSetLibPath.py -# Initialization script for cx_Freeze which manipulates the path so that the -# directory in which the executable is found is searched for extensions but -# no other directory is searched. The environment variable LD_LIBRARY_PATH is -# manipulated first, however, to ensure that shared libraries found in the -# target directory are found. This requires a restart of the executable because -# the environment variable LD_LIBRARY_PATH is only checked at startup. -#------------------------------------------------------------------------------ - -import encodings -import os -import sys -import warnings -import zipimport - -paths = os.environ.get("LD_LIBRARY_PATH", "").split(os.pathsep) -if DIR_NAME not in paths: - paths.insert(0, DIR_NAME) - os.environ["LD_LIBRARY_PATH"] = os.pathsep.join(paths) - os.execv(sys.executable, sys.argv) - -sys.frozen = True -sys.path = sys.path[:4] - -os.environ["TCL_LIBRARY"] = os.path.join(DIR_NAME, "tcl") -os.environ["TK_LIBRARY"] = os.path.join(DIR_NAME, "tk") - -m = __import__("__main__") -importer = zipimport.zipimporter(INITSCRIPT_ZIP_FILE_NAME) -code = importer.get_code(m.__name__) -exec code in m.__dict__ - -if sys.version_info[:2] >= (2, 5): - module = sys.modules.get("threading") - if module is not None: - module._shutdown() - diff --git a/setup/installer/cx_Freeze/initscripts/SharedLib.py b/setup/installer/cx_Freeze/initscripts/SharedLib.py deleted file mode 100755 index 0445367010..0000000000 --- a/setup/installer/cx_Freeze/initscripts/SharedLib.py +++ /dev/null @@ -1,20 +0,0 @@ -#------------------------------------------------------------------------------ -# SharedLib.py -# Initialization script for cx_Freeze which behaves similarly to the one for -# console based applications but must handle the case where Python has already -# been initialized and another DLL of this kind has been loaded. As such it -# does not block the path unless sys.frozen is not already set. -#------------------------------------------------------------------------------ - -import encodings -import os -import sys -import warnings - -if not hasattr(sys, "frozen"): - sys.frozen = True - sys.path = sys.path[:4] - -os.environ["TCL_LIBRARY"] = os.path.join(DIR_NAME, "tcl") -os.environ["TK_LIBRARY"] = os.path.join(DIR_NAME, "tk") - diff --git a/setup/installer/cx_Freeze/initscripts/SharedLibSource.py b/setup/installer/cx_Freeze/initscripts/SharedLibSource.py deleted file mode 100755 index 3edae93694..0000000000 --- a/setup/installer/cx_Freeze/initscripts/SharedLibSource.py +++ /dev/null @@ -1,23 +0,0 @@ -#------------------------------------------------------------------------------ -# SharedLibSource.py -# Initialization script for cx_Freeze which imports the site module (as per -# normal processing of a Python script) and then searches for a file with the -# same name as the shared library but with the extension .pth. The entries in -# this file are used to modify the path to use for subsequent imports. -#------------------------------------------------------------------------------ - -import os -import sys -import warnings - -# the site module must be imported for normal behavior to take place; it is -# done dynamically so that cx_Freeze will not add all modules referenced by -# the site module to the frozen executable -__import__("site") - -# now locate the pth file to modify the path appropriately -baseName, ext = os.path.splitext(FILE_NAME) -pathFileName = baseName + ".pth" -sys.path = [s.strip() for s in file(pathFileName).read().splitlines()] + \ - sys.path - diff --git a/setup/installer/cx_Freeze/samples/advanced/advanced_1.py b/setup/installer/cx_Freeze/samples/advanced/advanced_1.py deleted file mode 100644 index 2f1b68bceb..0000000000 --- a/setup/installer/cx_Freeze/samples/advanced/advanced_1.py +++ /dev/null @@ -1,7 +0,0 @@ -import sys - -print "Hello from cx_Freeze Advanced #1" -print - -module = __import__("testfreeze_1") - diff --git a/setup/installer/cx_Freeze/samples/advanced/advanced_2.py b/setup/installer/cx_Freeze/samples/advanced/advanced_2.py deleted file mode 100644 index 1a6fe37e62..0000000000 --- a/setup/installer/cx_Freeze/samples/advanced/advanced_2.py +++ /dev/null @@ -1,7 +0,0 @@ -import sys - -print "Hello from cx_Freeze Advanced #2" -print - -module = __import__("testfreeze_2") - diff --git a/setup/installer/cx_Freeze/samples/advanced/modules/testfreeze_1.py b/setup/installer/cx_Freeze/samples/advanced/modules/testfreeze_1.py deleted file mode 100644 index 6157b72a69..0000000000 --- a/setup/installer/cx_Freeze/samples/advanced/modules/testfreeze_1.py +++ /dev/null @@ -1 +0,0 @@ -print "Test freeze module #1" diff --git a/setup/installer/cx_Freeze/samples/advanced/modules/testfreeze_2.py b/setup/installer/cx_Freeze/samples/advanced/modules/testfreeze_2.py deleted file mode 100644 index ca133a7d58..0000000000 --- a/setup/installer/cx_Freeze/samples/advanced/modules/testfreeze_2.py +++ /dev/null @@ -1 +0,0 @@ -print "Test freeze module #2" diff --git a/setup/installer/cx_Freeze/samples/advanced/setup.py b/setup/installer/cx_Freeze/samples/advanced/setup.py deleted file mode 100644 index 3a79cf23af..0000000000 --- a/setup/installer/cx_Freeze/samples/advanced/setup.py +++ /dev/null @@ -1,31 +0,0 @@ -# An advanced setup script to create multiple executables and demonstrate a few -# of the features available to setup scripts -# -# hello.py is a very simple "Hello, world" type script which also displays the -# environment in which the script runs -# -# Run the build process by running the command 'python setup.py build' -# -# If everything works well you should find a subdirectory in the build -# subdirectory that contains the files needed to run the script without Python - -import sys -from cx_Freeze import setup, Executable - -executables = [ - Executable("advanced_1.py"), - Executable("advanced_2.py") -] - -buildOptions = dict( - compressed = True, - includes = ["testfreeze_1", "testfreeze_2"], - path = sys.path + ["modules"]) - -setup( - name = "advanced_cx_Freeze_sample", - version = "0.1", - description = "Advanced sample cx_Freeze script", - options = dict(build_exe = buildOptions), - executables = executables) - diff --git a/setup/installer/cx_Freeze/samples/matplotlib/setup.py b/setup/installer/cx_Freeze/samples/matplotlib/setup.py deleted file mode 100644 index 54bd97fc3f..0000000000 --- a/setup/installer/cx_Freeze/samples/matplotlib/setup.py +++ /dev/null @@ -1,27 +0,0 @@ -# A simple setup script to create an executable using matplotlib. -# -# test_matplotlib.py is a very simple matplotlib application that demonstrates -# its use. -# -# Run the build process by running the command 'python setup.py build' -# -# If everything works well you should find a subdirectory in the build -# subdirectory that contains the files needed to run the application - -import cx_Freeze -import sys - -base = None -if sys.platform == "win32": - base = "Win32GUI" - -executables = [ - cx_Freeze.Executable("test_matplotlib.py", base = base) -] - -cx_Freeze.setup( - name = "test_matplotlib", - version = "0.1", - description = "Sample matplotlib script", - executables = executables) - diff --git a/setup/installer/cx_Freeze/samples/matplotlib/test_matplotlib.py b/setup/installer/cx_Freeze/samples/matplotlib/test_matplotlib.py deleted file mode 100644 index 2029845ca5..0000000000 --- a/setup/installer/cx_Freeze/samples/matplotlib/test_matplotlib.py +++ /dev/null @@ -1,48 +0,0 @@ -from numpy import arange, sin, pi -import matplotlib -matplotlib.use('WXAgg') -from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas -from matplotlib.backends.backend_wx import NavigationToolbar2Wx -from matplotlib.figure import Figure -from wx import * - -class CanvasFrame(Frame): - def __init__(self): - Frame.__init__(self,None,-1, 'CanvasFrame',size=(550,350)) - self.SetBackgroundColour(NamedColor("WHITE")) - self.figure = Figure() - self.axes = self.figure.add_subplot(111) - t = arange(0.0,3.0,0.01) - s = sin(2*pi*t) - self.axes.plot(t,s) - self.canvas = FigureCanvas(self, -1, self.figure) - self.sizer = BoxSizer(VERTICAL) - self.sizer.Add(self.canvas, 1, LEFT | TOP | GROW) - self.SetSizerAndFit(self.sizer) - self.add_toolbar() - - def add_toolbar(self): - self.toolbar = NavigationToolbar2Wx(self.canvas) - self.toolbar.Realize() - if Platform == '__WXMAC__': - self.SetToolBar(self.toolbar) - else: - tw, th = self.toolbar.GetSizeTuple() - fw, fh = self.canvas.GetSizeTuple() - self.toolbar.SetSize(Size(fw, th)) - self.sizer.Add(self.toolbar, 0, LEFT | EXPAND) - self.toolbar.update() - - def OnPaint(self, event): - self.canvas.draw() - -class App(App): - def OnInit(self): - 'Create the main window and insert the custom frame' - frame = CanvasFrame() - frame.Show(True) - return True - -app = App(0) -app.MainLoop() - diff --git a/setup/installer/cx_Freeze/samples/relimport/pkg1/__init__.py b/setup/installer/cx_Freeze/samples/relimport/pkg1/__init__.py deleted file mode 100644 index 5a170fd2dd..0000000000 --- a/setup/installer/cx_Freeze/samples/relimport/pkg1/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -print "importing pkg1" -from . import sub1 -from . import pkg2 diff --git a/setup/installer/cx_Freeze/samples/relimport/pkg1/pkg2/__init__.py b/setup/installer/cx_Freeze/samples/relimport/pkg1/pkg2/__init__.py deleted file mode 100644 index 71e0b1fbe6..0000000000 --- a/setup/installer/cx_Freeze/samples/relimport/pkg1/pkg2/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -print "importing pkg1.pkg2" -from . import sub3 -from .. import sub4 diff --git a/setup/installer/cx_Freeze/samples/relimport/pkg1/pkg2/sub3.py b/setup/installer/cx_Freeze/samples/relimport/pkg1/pkg2/sub3.py deleted file mode 100644 index 1719aadb41..0000000000 --- a/setup/installer/cx_Freeze/samples/relimport/pkg1/pkg2/sub3.py +++ /dev/null @@ -1,3 +0,0 @@ -print "importing pkg1.pkg2.sub3" -from . import sub5 -from .. import sub6 diff --git a/setup/installer/cx_Freeze/samples/relimport/pkg1/pkg2/sub5.py b/setup/installer/cx_Freeze/samples/relimport/pkg1/pkg2/sub5.py deleted file mode 100644 index 1c91b8fa23..0000000000 --- a/setup/installer/cx_Freeze/samples/relimport/pkg1/pkg2/sub5.py +++ /dev/null @@ -1 +0,0 @@ -print "importing pkg1.pkg2.sub5" diff --git a/setup/installer/cx_Freeze/samples/relimport/pkg1/sub1.py b/setup/installer/cx_Freeze/samples/relimport/pkg1/sub1.py deleted file mode 100644 index 514bd88a87..0000000000 --- a/setup/installer/cx_Freeze/samples/relimport/pkg1/sub1.py +++ /dev/null @@ -1,2 +0,0 @@ -print "importing pkg1.sub1" -from . import sub2 diff --git a/setup/installer/cx_Freeze/samples/relimport/pkg1/sub2.py b/setup/installer/cx_Freeze/samples/relimport/pkg1/sub2.py deleted file mode 100644 index 63a0838b25..0000000000 --- a/setup/installer/cx_Freeze/samples/relimport/pkg1/sub2.py +++ /dev/null @@ -1 +0,0 @@ -print "importing pkg1.sub2" diff --git a/setup/installer/cx_Freeze/samples/relimport/pkg1/sub4.py b/setup/installer/cx_Freeze/samples/relimport/pkg1/sub4.py deleted file mode 100644 index 3a8e760e43..0000000000 --- a/setup/installer/cx_Freeze/samples/relimport/pkg1/sub4.py +++ /dev/null @@ -1 +0,0 @@ -print 'importing pkg1.sub4' diff --git a/setup/installer/cx_Freeze/samples/relimport/pkg1/sub6.py b/setup/installer/cx_Freeze/samples/relimport/pkg1/sub6.py deleted file mode 100644 index 1e7d7955d6..0000000000 --- a/setup/installer/cx_Freeze/samples/relimport/pkg1/sub6.py +++ /dev/null @@ -1 +0,0 @@ -print "importing pkg1.sub6" diff --git a/setup/installer/cx_Freeze/samples/relimport/relimport.py b/setup/installer/cx_Freeze/samples/relimport/relimport.py deleted file mode 100644 index 39cb50c91d..0000000000 --- a/setup/installer/cx_Freeze/samples/relimport/relimport.py +++ /dev/null @@ -1 +0,0 @@ -import pkg1 diff --git a/setup/installer/cx_Freeze/samples/relimport/setup.py b/setup/installer/cx_Freeze/samples/relimport/setup.py deleted file mode 100644 index b8b3f3853b..0000000000 --- a/setup/installer/cx_Freeze/samples/relimport/setup.py +++ /dev/null @@ -1,16 +0,0 @@ -# relimport.py is a very simple script that tests importing using relative -# imports (available in Python 2.5 and up) -# -# Run the build process by running the command 'python setup.py build' -# -# If everything works well you should find a subdirectory in the build -# subdirectory that contains the files needed to run the script without Python - -from cx_Freeze import setup, Executable - -setup( - name = "relimport", - version = "0.1", - description = "Sample cx_Freeze script for relative imports", - executables = [Executable("relimport.py")]) - diff --git a/setup/installer/cx_Freeze/samples/simple/hello.py b/setup/installer/cx_Freeze/samples/simple/hello.py deleted file mode 100644 index 0fb32405bc..0000000000 --- a/setup/installer/cx_Freeze/samples/simple/hello.py +++ /dev/null @@ -1,19 +0,0 @@ -import sys - -print "Hello from cx_Freeze" -print - -print "sys.executable", sys.executable -print "sys.prefix", sys.prefix -print - -print "ARGUMENTS:" -for a in sys.argv: - print a -print - -print "PATH:" -for p in sys.path: - print p -print - diff --git a/setup/installer/cx_Freeze/samples/simple/setup.py b/setup/installer/cx_Freeze/samples/simple/setup.py deleted file mode 100644 index 25de838b10..0000000000 --- a/setup/installer/cx_Freeze/samples/simple/setup.py +++ /dev/null @@ -1,18 +0,0 @@ -# A very simple setup script to create a single executable -# -# hello.py is a very simple "Hello, world" type script which also displays the -# environment in which the script runs -# -# Run the build process by running the command 'python setup.py build' -# -# If everything works well you should find a subdirectory in the build -# subdirectory that contains the files needed to run the script without Python - -from cx_Freeze import setup, Executable - -setup( - name = "hello", - version = "0.1", - description = "Sample cx_Freeze script", - executables = [Executable("hello.py")]) - diff --git a/setup/installer/cx_Freeze/samples/wx/setup.py b/setup/installer/cx_Freeze/samples/wx/setup.py deleted file mode 100644 index 9412996859..0000000000 --- a/setup/installer/cx_Freeze/samples/wx/setup.py +++ /dev/null @@ -1,25 +0,0 @@ -# A simple setup script to create an executable running wxPython. This also -# demonstrates the method for creating a Windows executable that does not have -# an associated console. -# -# wxapp.py is a very simple "Hello, world" type wxPython application -# -# Run the build process by running the command 'python setup.py build' -# -# If everything works well you should find a subdirectory in the build -# subdirectory that contains the files needed to run the application - -import sys - -from cx_Freeze import setup, Executable - -base = None -if sys.platform == "win32": - base = "Win32GUI" - -setup( - name = "hello", - version = "0.1", - description = "Sample cx_Freeze wxPython script", - executables = [Executable("wxapp.py", base = base)]) - diff --git a/setup/installer/cx_Freeze/samples/wx/wxapp.py b/setup/installer/cx_Freeze/samples/wx/wxapp.py deleted file mode 100644 index 7baa90b8d1..0000000000 --- a/setup/installer/cx_Freeze/samples/wx/wxapp.py +++ /dev/null @@ -1,42 +0,0 @@ -import wx - -class Frame(wx.Frame): - - def __init__(self): - wx.Frame.__init__(self, parent = None, title = "Hello from cx_Freeze") - panel = wx.Panel(self) - closeMeButton = wx.Button(panel, -1, "Close Me") - wx.EVT_BUTTON(self, closeMeButton.GetId(), self.OnCloseMe) - wx.EVT_CLOSE(self, self.OnCloseWindow) - pushMeButton = wx.Button(panel, -1, "Push Me") - wx.EVT_BUTTON(self, pushMeButton.GetId(), self.OnPushMe) - sizer = wx.BoxSizer(wx.HORIZONTAL) - sizer.Add(closeMeButton, flag = wx.ALL, border = 20) - sizer.Add(pushMeButton, flag = wx.ALL, border = 20) - panel.SetSizer(sizer) - topSizer = wx.BoxSizer(wx.VERTICAL) - topSizer.Add(panel, flag = wx.ALL | wx.EXPAND) - topSizer.Fit(self) - - def OnCloseMe(self, event): - self.Close(True) - - def OnPushMe(self, event): - 1 / 0 - - def OnCloseWindow(self, event): - self.Destroy() - - -class App(wx.App): - - def OnInit(self): - frame = Frame() - frame.Show(True) - self.SetTopWindow(frame) - return True - - -app = App(1) -app.MainLoop() - diff --git a/setup/installer/cx_Freeze/setup.py b/setup/installer/cx_Freeze/setup.py deleted file mode 100755 index b51453aa7a..0000000000 --- a/setup/installer/cx_Freeze/setup.py +++ /dev/null @@ -1,197 +0,0 @@ -""" -Distutils script for cx_Freeze. -""" - -import distutils.command.bdist_rpm -import distutils.command.build_ext -import distutils.command.build_scripts -import distutils.command.install -import distutils.command.install_data -import distutils.sysconfig -import os -import sys - -from distutils.core import setup -from distutils.extension import Extension - -class bdist_rpm(distutils.command.bdist_rpm.bdist_rpm): - - # rpm automatically byte compiles all Python files in a package but we - # don't want that to happen for initscripts and samples so we tell it to - # ignore those files - def _make_spec_file(self): - specFile = distutils.command.bdist_rpm.bdist_rpm._make_spec_file(self) - specFile.insert(0, "%define _unpackaged_files_terminate_build 0%{nil}") - return specFile - - def run(self): - distutils.command.bdist_rpm.bdist_rpm.run(self) - specFile = os.path.join(self.rpm_base, "SPECS", - "%s.spec" % self.distribution.get_name()) - queryFormat = "%{name}-%{version}-%{release}.%{arch}.rpm" - command = "rpm -q --qf '%s' --specfile %s" % (queryFormat, specFile) - origFileName = os.popen(command).read() - parts = origFileName.split("-") - parts.insert(2, "py%s%s" % sys.version_info[:2]) - newFileName = "-".join(parts) - self.move_file(os.path.join("dist", origFileName), - os.path.join("dist", newFileName)) - - -class build_ext(distutils.command.build_ext.build_ext): - - def build_extension(self, ext): - if ext.name.find("bases") < 0: - distutils.command.build_ext.build_ext.build_extension(self, ext) - return - os.environ["LD_RUN_PATH"] = "${ORIGIN}:${ORIGIN}/../lib" - objects = self.compiler.compile(ext.sources, - output_dir = self.build_temp, - include_dirs = ext.include_dirs, - debug = self.debug, - depends = ext.depends) - fileName = os.path.splitext(self.get_ext_filename(ext.name))[0] - fullName = os.path.join(self.build_lib, fileName) - libraryDirs = ext.library_dirs or [] - libraries = self.get_libraries(ext) - extraArgs = ext.extra_link_args or [] - if sys.platform != "win32": - vars = distutils.sysconfig.get_config_vars() - libraryDirs.append(vars["LIBPL"]) - libraries.append("python%s.%s" % sys.version_info[:2]) - if vars["LINKFORSHARED"]: - extraArgs.extend(vars["LINKFORSHARED"].split()) - if vars["LIBS"]: - extraArgs.extend(vars["LIBS"].split()) - if vars["LIBM"]: - extraArgs.append(vars["LIBM"]) - if vars["BASEMODLIBS"]: - extraArgs.extend(vars["BASEMODLIBS"].split()) - if vars["LOCALMODLIBS"]: - extraArgs.extend(vars["LOCALMODLIBS"].split()) - extraArgs.append("-s") - self.compiler.link_executable(objects, fullName, - libraries = libraries, - library_dirs = libraryDirs, - runtime_library_dirs = ext.runtime_library_dirs, - extra_postargs = extraArgs, - debug = self.debug) - - def get_ext_filename(self, name): - fileName = distutils.command.build_ext.build_ext.get_ext_filename(self, - name) - if name.find("bases") < 0: - return fileName - ext = self.compiler.exe_extension or "" - return os.path.splitext(fileName)[0] + ext - - -class build_scripts(distutils.command.build_scripts.build_scripts): - - def copy_scripts(self): - distutils.command.build_scripts.build_scripts.copy_scripts(self) - if sys.platform == "win32": - for script in self.scripts: - batFileName = os.path.join(self.build_dir, script + ".bat") - fullScriptName = r"%s\Scripts\%s" % \ - (os.path.dirname(sys.executable), script) - command = "%s %s %%1 %%2 %%3 %%4 %%5 %%6 %%7 %%8 %%9" % \ - (sys.executable, fullScriptName) - file(batFileName, "w").write("@echo off\n\n%s" % command) - - -class install(distutils.command.install.install): - - def get_sub_commands(self): - subCommands = distutils.command.install.install.get_sub_commands(self) - subCommands.append("install_packagedata") - return subCommands - - -class install_packagedata(distutils.command.install_data.install_data): - - def run(self): - installCommand = self.get_finalized_command("install") - installDir = getattr(installCommand, "install_lib") - sourceDirs = ["samples", "initscripts"] - while sourceDirs: - sourceDir = sourceDirs.pop(0) - targetDir = os.path.join(installDir, "cx_Freeze", sourceDir) - self.mkpath(targetDir) - for name in os.listdir(sourceDir): - if name == "build" or name.startswith("."): - continue - fullSourceName = os.path.join(sourceDir, name) - if os.path.isdir(fullSourceName): - sourceDirs.append(fullSourceName) - else: - fullTargetName = os.path.join(targetDir, name) - self.copy_file(fullSourceName, fullTargetName) - self.outfiles.append(fullTargetName) - - -commandClasses = dict( - build_ext = build_ext, - build_scripts = build_scripts, - bdist_rpm = bdist_rpm, - install = install, - install_packagedata = install_packagedata) - -if sys.platform == "win32": - libraries = ["imagehlp"] -else: - libraries = [] -utilModule = Extension("cx_Freeze.util", ["source/util.c"], - libraries = libraries) -depends = ["source/bases/Common.c"] -if sys.platform == "win32": - if sys.version_info[:2] >= (2, 6): - extraSources = ["source/bases/manifest.rc"] - else: - extraSources = ["source/bases/dummy.rc"] -else: - extraSources = [] -console = Extension("cx_Freeze.bases.Console", - ["source/bases/Console.c"] + extraSources, depends = depends) -consoleKeepPath = Extension("cx_Freeze.bases.ConsoleKeepPath", - ["source/bases/ConsoleKeepPath.c"] + extraSources, depends = depends) -extensions = [utilModule, console, consoleKeepPath] -if sys.platform == "win32": - gui = Extension("cx_Freeze.bases.Win32GUI", - ["source/bases/Win32GUI.c"] + extraSources, - depends = depends, extra_link_args = ["-mwindows"]) - extensions.append(gui) - -docFiles = "LICENSE.txt README.txt HISTORY.txt doc/cx_Freeze.html" - -classifiers = [ - "Development Status :: 5 - Production/Stable", - "Intended Audience :: Developers", - "License :: OSI Approved :: Python Software Foundation License", - "Natural Language :: English", - "Operating System :: OS Independent", - "Programming Language :: C", - "Programming Language :: Python", - "Topic :: Software Development :: Build Tools", - "Topic :: Software Development :: Libraries :: Python Modules", - "Topic :: System :: Software Distribution", - "Topic :: Utilities" -] - -setup(name = "cx_Freeze", - description = "create standalone executables from Python scripts", - long_description = "create standalone executables from Python scripts", - version = "4.0.1", - cmdclass = commandClasses, - options = dict(bdist_rpm = dict(doc_files = docFiles), - install = dict(optimize = 1)), - ext_modules = extensions, - packages = ['cx_Freeze'], - maintainer="Anthony Tuininga", - maintainer_email="anthony.tuininga@gmail.com", - url = "http://cx-freeze.sourceforge.net", - scripts = ["cxfreeze"], - classifiers = classifiers, - keywords = "freeze", - license = "Python Software Foundation License") - diff --git a/setup/installer/cx_Freeze/source/bases/Common.c b/setup/installer/cx_Freeze/source/bases/Common.c deleted file mode 100644 index ce1e137ebb..0000000000 --- a/setup/installer/cx_Freeze/source/bases/Common.c +++ /dev/null @@ -1,262 +0,0 @@ -//----------------------------------------------------------------------------- -// Common.c -// Routines which are common to running frozen executables. -//----------------------------------------------------------------------------- - -#include <compile.h> -#include <eval.h> -#include <osdefs.h> - -// global variables (used for simplicity) -static PyObject *g_FileName = NULL; -static PyObject *g_DirName = NULL; -static PyObject *g_ExclusiveZipFileName = NULL; -static PyObject *g_SharedZipFileName = NULL; -static PyObject *g_InitScriptZipFileName = NULL; - -//----------------------------------------------------------------------------- -// GetDirName() -// Return the directory name of the given path. -//----------------------------------------------------------------------------- -static int GetDirName( - const char *path, // path to calculate dir name for - PyObject **dirName) // directory name (OUT) -{ - int i; - - for (i = strlen(path); i > 0 && path[i] != SEP; --i); - *dirName = PyString_FromStringAndSize(path, i); - if (!*dirName) - return FatalError("cannot create string for directory name"); - return 0; -} - - -//----------------------------------------------------------------------------- -// SetExecutableName() -// Set the script to execute and calculate the directory in which the -// executable is found as well as the exclusive (only for this executable) and -// shared zip file names. -//----------------------------------------------------------------------------- -static int SetExecutableName( - const char *fileName) // script to execute -{ - char temp[MAXPATHLEN + 12], *ptr; -#ifndef WIN32 - char linkData[MAXPATHLEN + 1]; - struct stat statData; - size_t linkSize, i; - PyObject *dirName; -#endif - - // store file name - g_FileName = PyString_FromString(fileName); - if (!g_FileName) - return FatalError("cannot create string for file name"); - -#ifndef WIN32 - for (i = 0; i < 25; i++) { - if (lstat(fileName, &statData) < 0) { - PyErr_SetFromErrnoWithFilename(PyExc_OSError, (char*) fileName); - return FatalError("unable to stat file"); - } - if (!S_ISLNK(statData.st_mode)) - break; - linkSize = readlink(fileName, linkData, sizeof(linkData)); - if (linkSize < 0) { - PyErr_SetFromErrnoWithFilename(PyExc_OSError, (char*) fileName); - return FatalError("unable to stat file"); - } - if (linkData[0] == '/') { - Py_DECREF(g_FileName); - g_FileName = PyString_FromStringAndSize(linkData, linkSize); - } else { - if (GetDirName(PyString_AS_STRING(g_FileName), &dirName) < 0) - return -1; - if (PyString_GET_SIZE(dirName) + linkSize + 1 > MAXPATHLEN) { - Py_DECREF(dirName); - return FatalError("cannot dereference link, path too large"); - } - strcpy(temp, PyString_AS_STRING(dirName)); - strcat(temp, "/"); - strcat(temp, linkData); - Py_DECREF(g_FileName); - g_FileName = PyString_FromString(temp); - } - if (!g_FileName) - return FatalError("cannot create string for linked file name"); - fileName = PyString_AS_STRING(g_FileName); - } -#endif - - // calculate and store directory name - if (GetDirName(fileName, &g_DirName) < 0) - return -1; - - // calculate and store exclusive zip file name - strcpy(temp, fileName); - ptr = temp + strlen(temp) - 1; - while (ptr > temp && *ptr != SEP && *ptr != '.') - ptr--; - if (*ptr == '.') - *ptr = '\0'; - strcat(temp, ".zip"); - g_ExclusiveZipFileName = PyString_FromString(temp); - if (!g_ExclusiveZipFileName) - return FatalError("cannot create string for exclusive zip file name"); - - // calculate and store shared zip file name - strcpy(temp, PyString_AS_STRING(g_DirName)); - ptr = temp + strlen(temp); - *ptr++ = SEP; - strcpy(ptr, "library.zip"); - g_SharedZipFileName = PyString_FromString(temp); - if (!g_SharedZipFileName) - return FatalError("cannot create string for shared zip file name"); - - return 0; -} - - -//----------------------------------------------------------------------------- -// SetPathToSearch() -// Set the path to search. This includes the file (for those situations where -// a zip file is attached to the executable itself), the directory where the -// executable is found (to search for extensions), the exclusive zip file -// name and the shared zip file name. -//----------------------------------------------------------------------------- -static int SetPathToSearch(void) -{ - PyObject *pathList; - - pathList = PySys_GetObject("path"); - if (!pathList) - return FatalError("cannot acquire sys.path"); - if (PyList_Insert(pathList, 0, g_FileName) < 0) - return FatalError("cannot insert file name into sys.path"); - if (PyList_Insert(pathList, 1, g_DirName) < 0) - return FatalError("cannot insert directory name into sys.path"); - if (PyList_Insert(pathList, 2, g_ExclusiveZipFileName) < 0) - return FatalError("cannot insert exclusive zip name into sys.path"); - if (PyList_Insert(pathList, 3, g_SharedZipFileName) < 0) - return FatalError("cannot insert shared zip name into sys.path"); - return 0; -} - - -//----------------------------------------------------------------------------- -// GetImporterHelper() -// Helper which is used to locate the importer for the initscript. -//----------------------------------------------------------------------------- -static PyObject *GetImporterHelper( - PyObject *module, // zipimport module - PyObject *fileName) // name of file to search -{ - PyObject *importer; - - importer = PyObject_CallMethod(module, "zipimporter", "O", fileName); - if (importer) - g_InitScriptZipFileName = fileName; - else - PyErr_Clear(); - return importer; -} - - -//----------------------------------------------------------------------------- -// GetImporter() -// Return the importer which will be used for importing the initialization -// script. The executable itself is searched first, followed by the exclusive -// zip file and finally by the shared zip file. -//----------------------------------------------------------------------------- -static int GetImporter( - PyObject **importer) // importer (OUT) -{ - PyObject *module; - - module = PyImport_ImportModule("zipimport"); - if (!module) - return FatalError("cannot import zipimport module"); - *importer = GetImporterHelper(module, g_FileName); - if (!*importer) { - *importer = GetImporterHelper(module, g_ExclusiveZipFileName); - if (!*importer) - *importer = GetImporterHelper(module, g_SharedZipFileName); - } - Py_DECREF(module); - if (!*importer) - return FatalError("cannot get zipimporter instance"); - return 0; -} - - -//----------------------------------------------------------------------------- -// PopulateInitScriptDict() -// Return the dictionary used by the initialization script. -//----------------------------------------------------------------------------- -static int PopulateInitScriptDict( - PyObject *dict) // dictionary to populate -{ - if (!dict) - return FatalError("unable to create temporary dictionary"); - if (PyDict_SetItemString(dict, "__builtins__", PyEval_GetBuiltins()) < 0) - return FatalError("unable to set __builtins__"); - if (PyDict_SetItemString(dict, "FILE_NAME", g_FileName) < 0) - return FatalError("unable to set FILE_NAME"); - if (PyDict_SetItemString(dict, "DIR_NAME", g_DirName) < 0) - return FatalError("unable to set DIR_NAME"); - if (PyDict_SetItemString(dict, "EXCLUSIVE_ZIP_FILE_NAME", - g_ExclusiveZipFileName) < 0) - return FatalError("unable to set EXCLUSIVE_ZIP_FILE_NAME"); - if (PyDict_SetItemString(dict, "SHARED_ZIP_FILE_NAME", - g_SharedZipFileName) < 0) - return FatalError("unable to set SHARED_ZIP_FILE_NAME"); - if (PyDict_SetItemString(dict, "INITSCRIPT_ZIP_FILE_NAME", - g_InitScriptZipFileName) < 0) - return FatalError("unable to set INITSCRIPT_ZIP_FILE_NAME"); - return 0; -} - - - - -//----------------------------------------------------------------------------- -// ExecuteScript() -// Execute the script found within the file. -//----------------------------------------------------------------------------- -static int ExecuteScript( - const char *fileName) // name of file containing Python code -{ - PyObject *importer, *dict, *code, *temp; - - if (SetExecutableName(fileName) < 0) - return -1; - if (SetPathToSearch() < 0) - return -1; - importer = NULL; - if (GetImporter(&importer) < 0) - return -1; - - // create and populate dictionary for initscript module - dict = PyDict_New(); - if (PopulateInitScriptDict(dict) < 0) { - Py_XDECREF(dict); - Py_DECREF(importer); - return -1; - } - - // locate and execute script - code = PyObject_CallMethod(importer, "get_code", "s", "cx_Freeze__init__"); - Py_DECREF(importer); - if (!code) - return FatalError("unable to locate initialization module"); - temp = PyEval_EvalCode( (PyCodeObject*) code, dict, dict); - Py_DECREF(code); - Py_DECREF(dict); - if (!temp) - return FatalScriptError(); - Py_DECREF(temp); - - return 0; -} - diff --git a/setup/installer/cx_Freeze/source/bases/Console.c b/setup/installer/cx_Freeze/source/bases/Console.c deleted file mode 100644 index d6a8a515a0..0000000000 --- a/setup/installer/cx_Freeze/source/bases/Console.c +++ /dev/null @@ -1,72 +0,0 @@ -//----------------------------------------------------------------------------- -// Console.c -// Main routine for frozen programs which run in a console. -//----------------------------------------------------------------------------- - -#include <Python.h> -#ifdef __WIN32__ -#include <windows.h> -#endif - -//----------------------------------------------------------------------------- -// FatalError() -// Prints a fatal error. -//----------------------------------------------------------------------------- -static int FatalError( - const char *message) // message to print -{ - PyErr_Print(); - Py_FatalError(message); - return -1; -} - - -//----------------------------------------------------------------------------- -// FatalScriptError() -// Prints a fatal error in the initialization script. -//----------------------------------------------------------------------------- -static int FatalScriptError(void) -{ - PyErr_Print(); - return -1; -} - - -#include "Common.c" - - -//----------------------------------------------------------------------------- -// main() -// Main routine for frozen programs. -//----------------------------------------------------------------------------- -int main(int argc, char **argv) -{ - const char *fileName; - char *encoding; - - // initialize Python - Py_NoSiteFlag = 1; - Py_FrozenFlag = 1; - Py_IgnoreEnvironmentFlag = 1; - - encoding = getenv("PYTHONIOENCODING"); - if (encoding != NULL) { - Py_FileSystemDefaultEncoding = strndup(encoding, 100); - } - - Py_SetPythonHome(""); - Py_SetProgramName(argv[0]); - fileName = Py_GetProgramFullPath(); - - Py_Initialize(); - PySys_SetArgv(argc, argv); - - - // do the work - if (ExecuteScript(fileName) < 0) - return 1; - - Py_Finalize(); - return 0; -} - diff --git a/setup/installer/cx_Freeze/source/bases/ConsoleKeepPath.c b/setup/installer/cx_Freeze/source/bases/ConsoleKeepPath.c deleted file mode 100644 index 3ad00f8488..0000000000 --- a/setup/installer/cx_Freeze/source/bases/ConsoleKeepPath.c +++ /dev/null @@ -1,60 +0,0 @@ -//----------------------------------------------------------------------------- -// ConsoleKeepPath.c -// Main routine for frozen programs which need a Python installation to do -// their work. -//----------------------------------------------------------------------------- - -#include <Python.h> -#ifdef __WIN32__ -#include <windows.h> -#endif - -//----------------------------------------------------------------------------- -// FatalError() -// Prints a fatal error. -//----------------------------------------------------------------------------- -static int FatalError( - const char *message) // message to print -{ - PyErr_Print(); - Py_FatalError(message); - return -1; -} - - -//----------------------------------------------------------------------------- -// FatalScriptError() -// Prints a fatal error in the initialization script. -//----------------------------------------------------------------------------- -static int FatalScriptError(void) -{ - PyErr_Print(); - return -1; -} - - -#include "Common.c" - - -//----------------------------------------------------------------------------- -// main() -// Main routine for frozen programs. -//----------------------------------------------------------------------------- -int main(int argc, char **argv) -{ - const char *fileName; - - // initialize Python - Py_SetProgramName(argv[0]); - fileName = Py_GetProgramFullPath(); - Py_Initialize(); - PySys_SetArgv(argc, argv); - - // do the work - if (ExecuteScript(fileName) < 0) - return 1; - - Py_Finalize(); - return 0; -} - diff --git a/setup/installer/cx_Freeze/source/bases/Win32GUI.c b/setup/installer/cx_Freeze/source/bases/Win32GUI.c deleted file mode 100644 index f5bbe74dba..0000000000 --- a/setup/installer/cx_Freeze/source/bases/Win32GUI.c +++ /dev/null @@ -1,242 +0,0 @@ -//----------------------------------------------------------------------------- -// Win32GUI.c -// Main routine for frozen programs written for the Win32 GUI subsystem. -//----------------------------------------------------------------------------- - -#include <Python.h> -#include <windows.h> - -//----------------------------------------------------------------------------- -// FatalError() -// Handle a fatal error. -//----------------------------------------------------------------------------- -static int FatalError( - char *a_Message) // message to display -{ - MessageBox(NULL, a_Message, "cx_Freeze Fatal Error", MB_ICONERROR); - Py_Finalize(); - return -1; -} - - -//----------------------------------------------------------------------------- -// StringifyObject() -// Stringify a Python object. -//----------------------------------------------------------------------------- -static char *StringifyObject( - PyObject *object, // object to stringify - PyObject **stringRep) // string representation -{ - if (object) { - *stringRep = PyObject_Str(object); - if (*stringRep) - return PyString_AS_STRING(*stringRep); - return "Unable to stringify"; - } - - // object is NULL - *stringRep = NULL; - return "None"; -} - - -//----------------------------------------------------------------------------- -// FatalPythonErrorNoTraceback() -// Handle a fatal Python error without traceback. -//----------------------------------------------------------------------------- -static int FatalPythonErrorNoTraceback( - PyObject *origType, // exception type - PyObject *origValue, // exception value - char *message) // message to display -{ - PyObject *typeStrRep, *valueStrRep, *origTypeStrRep, *origValueStrRep; - char *totalMessage, *typeStr, *valueStr, *origTypeStr, *origValueStr; - PyObject *type, *value, *traceback; - int totalMessageLength; - char *messageFormat; - - // fetch error and string representations of the error - PyErr_Fetch(&type, &value, &traceback); - origTypeStr = StringifyObject(origType, &origTypeStrRep); - origValueStr = StringifyObject(origValue, &origValueStrRep); - typeStr = StringifyObject(type, &typeStrRep); - valueStr = StringifyObject(value, &valueStrRep); - - // fill out the message to be displayed - messageFormat = "Type: %s\nValue: %s\nOther Type: %s\nOtherValue: %s\n%s"; - totalMessageLength = strlen(origTypeStr) + strlen(origValueStr) + - strlen(typeStr) + strlen(valueStr) + strlen(message) + - strlen(messageFormat) + 1; - totalMessage = malloc(totalMessageLength); - if (!totalMessage) - return FatalError("Out of memory!"); - sprintf(totalMessage, messageFormat, typeStr, valueStr, origTypeStr, - origValueStr, message); - - // display the message - MessageBox(NULL, totalMessage, - "cx_Freeze: Python error in main script (traceback unavailable)", - MB_ICONERROR); - free(totalMessage); - return -1; -} - - -//----------------------------------------------------------------------------- -// ArgumentValue() -// Return a suitable argument value by replacing NULL with Py_None. -//----------------------------------------------------------------------------- -static PyObject *ArgumentValue( - PyObject *object) // argument to massage -{ - if (object) { - Py_INCREF(object); - return object; - } - Py_INCREF(Py_None); - return Py_None; -} - - -//----------------------------------------------------------------------------- -// HandleSystemExitException() -// Handles a system exit exception differently. If an integer value is passed -// through then that becomes the exit value; otherwise the string value of the -// value passed through is displayed in a message box. -//----------------------------------------------------------------------------- -static void HandleSystemExitException() -{ - PyObject *type, *value, *traceback, *valueStr; - int exitCode = 0; - char *message; - - PyErr_Fetch(&type, &value, &traceback); - if (PyInstance_Check(value)) { - PyObject *code = PyObject_GetAttrString(value, "code"); - if (code) { - Py_DECREF(value); - value = code; - if (value == Py_None) - Py_Exit(0); - } - } - if (PyInt_Check(value)) - exitCode = PyInt_AsLong(value); - else { - message = StringifyObject(value, &valueStr); - MessageBox(NULL, message, "cx_Freeze: Application Terminated", - MB_ICONERROR); - Py_XDECREF(valueStr); - exitCode = 1; - } - Py_Exit(exitCode); -} - - -//----------------------------------------------------------------------------- -// FatalScriptError() -// Handle a fatal Python error with traceback. -//----------------------------------------------------------------------------- -static int FatalScriptError() -{ - PyObject *type, *value, *traceback, *argsTuple, *module, *method, *result; - int tracebackLength, i; - char *tracebackStr; - - // if a system exception, handle it specially - if (PyErr_ExceptionMatches(PyExc_SystemExit)) - HandleSystemExitException(); - - // get the exception details - PyErr_Fetch(&type, &value, &traceback); - - // import the traceback module - module = PyImport_ImportModule("traceback"); - if (!module) - return FatalPythonErrorNoTraceback(type, value, - "Cannot import traceback module."); - - // get the format_exception method - method = PyObject_GetAttrString(module, "format_exception"); - Py_DECREF(module); - if (!method) - return FatalPythonErrorNoTraceback(type, value, - "Cannot get format_exception method."); - - // create a tuple for the arguments - argsTuple = PyTuple_New(3); - if (!argsTuple) { - Py_DECREF(method); - return FatalPythonErrorNoTraceback(type, value, - "Cannot create arguments tuple for traceback."); - } - PyTuple_SET_ITEM(argsTuple, 0, ArgumentValue(type)); - PyTuple_SET_ITEM(argsTuple, 1, ArgumentValue(value)); - PyTuple_SET_ITEM(argsTuple, 2, ArgumentValue(traceback)); - - // call the format_exception method - result = PyObject_CallObject(method, argsTuple); - Py_DECREF(method); - Py_DECREF(argsTuple); - if (!result) - return FatalPythonErrorNoTraceback(type, value, - "Failed calling format_exception method."); - - // determine length of string representation of formatted traceback - tracebackLength = 1; - for (i = 0; i < PyList_GET_SIZE(result); i++) - tracebackLength += PyString_GET_SIZE(PyList_GET_ITEM(result, i)); - - // create a string representation of the formatted traceback - tracebackStr = malloc(tracebackLength); - if (!tracebackStr) { - Py_DECREF(result); - return FatalError("Out of memory!"); - } - tracebackStr[0] = '\0'; - for (i = 0; i < PyList_GET_SIZE(result); i++) - strcat(tracebackStr, PyString_AS_STRING(PyList_GET_ITEM(result, i))); - Py_DECREF(result); - - // bring up the error - MessageBox(NULL, tracebackStr, "cx_Freeze: Python error in main script", - MB_ICONERROR); - Py_Finalize(); - return 1; -} - - -#include "Common.c" - - -//----------------------------------------------------------------------------- -// WinMain() -// Main routine for the executable in Windows. -//----------------------------------------------------------------------------- -int WINAPI WinMain( - HINSTANCE instance, // handle to application - HINSTANCE prevInstance, // previous handle to application - LPSTR commandLine, // command line - int showFlag) // show flag -{ - const char *fileName; - - // initialize Python - Py_NoSiteFlag = 1; - Py_FrozenFlag = 1; - Py_IgnoreEnvironmentFlag = 1; - Py_SetPythonHome(""); - Py_SetProgramName(__argv[0]); - fileName = Py_GetProgramFullPath(); - Py_Initialize(); - PySys_SetArgv(__argc, __argv); - - // do the work - if (ExecuteScript(fileName) < 0) - return 1; - - // terminate Python - Py_Finalize(); - return 0; -} - diff --git a/setup/installer/cx_Freeze/source/bases/dummy.rc b/setup/installer/cx_Freeze/source/bases/dummy.rc deleted file mode 100644 index 5c1fa1a194..0000000000 --- a/setup/installer/cx_Freeze/source/bases/dummy.rc +++ /dev/null @@ -1,5 +0,0 @@ -STRINGTABLE -{ - 1, "Just to ensure that buggy EndUpdateResource doesn't fall over." -} - diff --git a/setup/installer/cx_Freeze/source/bases/manifest.rc b/setup/installer/cx_Freeze/source/bases/manifest.rc deleted file mode 100644 index 2b7ee27ab5..0000000000 --- a/setup/installer/cx_Freeze/source/bases/manifest.rc +++ /dev/null @@ -1,3 +0,0 @@ -#include "dummy.rc" - -1 24 source/bases/manifest.txt diff --git a/setup/installer/cx_Freeze/source/util.c b/setup/installer/cx_Freeze/source/util.c deleted file mode 100644 index 1c8eb0c0ca..0000000000 --- a/setup/installer/cx_Freeze/source/util.c +++ /dev/null @@ -1,418 +0,0 @@ -//----------------------------------------------------------------------------- -// util.c -// Shared library for use by cx_Freeze. -//----------------------------------------------------------------------------- - -#include <Python.h> - -#ifdef WIN32 -#include <windows.h> -#include <imagehlp.h> - -#pragma pack(2) - -typedef struct { - BYTE bWidth; // Width, in pixels, of the image - BYTE bHeight; // Height, in pixels, of the image - BYTE bColorCount; // Number of colors in image - BYTE bReserved; // Reserved ( must be 0) - WORD wPlanes; // Color Planes - WORD wBitCount; // Bits per pixel - DWORD dwBytesInRes; // How many bytes in this resource? - DWORD dwImageOffset; // Where in the file is this image? -} ICONDIRENTRY; - -typedef struct { - WORD idReserved; // Reserved (must be 0) - WORD idType; // Resource Type (1 for icons) - WORD idCount; // How many images? - ICONDIRENTRY idEntries[0]; // An entry for each image -} ICONDIR; - -typedef struct { - BYTE bWidth; // Width, in pixels, of the image - BYTE bHeight; // Height, in pixels, of the image - BYTE bColorCount; // Number of colors in image - BYTE bReserved; // Reserved ( must be 0) - WORD wPlanes; // Color Planes - WORD wBitCount; // Bits per pixel - DWORD dwBytesInRes; // How many bytes in this resource? - WORD nID; // resource ID -} GRPICONDIRENTRY; - -typedef struct { - WORD idReserved; // Reserved (must be 0) - WORD idType; // Resource Type (1 for icons) - WORD idCount; // How many images? - GRPICONDIRENTRY idEntries[0]; // An entry for each image -} GRPICONDIR; -#endif - -//----------------------------------------------------------------------------- -// Globals -//----------------------------------------------------------------------------- -#ifdef WIN32 -static PyObject *g_BindErrorException = NULL; -static PyObject *g_ImageNames = NULL; -#endif - - -#ifdef WIN32 -//----------------------------------------------------------------------------- -// BindStatusRoutine() -// Called by BindImageEx() at various points. This is used to determine the -// dependency tree which is later examined by cx_Freeze. -//----------------------------------------------------------------------------- -static BOOL __stdcall BindStatusRoutine( - IMAGEHLP_STATUS_REASON reason, // reason called - PSTR imageName, // name of image being examined - PSTR dllName, // name of DLL - ULONG virtualAddress, // computed virtual address - ULONG parameter) // parameter (value depends on reason) -{ - char fileName[MAX_PATH + 1]; - - switch (reason) { - case BindImportModule: - if (!SearchPath(NULL, dllName, NULL, sizeof(fileName), fileName, - NULL)) - return FALSE; - Py_INCREF(Py_None); - if (PyDict_SetItemString(g_ImageNames, fileName, Py_None) < 0) - return FALSE; - break; - default: - break; - } - return TRUE; -} - - -//----------------------------------------------------------------------------- -// GetFileData() -// Return the data for the given file. -//----------------------------------------------------------------------------- -static int GetFileData( - const char *fileName, // name of file to read - char **data) // pointer to data (OUT) -{ - DWORD numberOfBytesRead, dataSize; - HANDLE file; - - file = CreateFile(fileName, GENERIC_READ, FILE_SHARE_READ, NULL, - OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); - if (file == INVALID_HANDLE_VALUE) - return -1; - dataSize = GetFileSize(file, NULL); - if (dataSize == INVALID_FILE_SIZE) { - CloseHandle(file); - return -1; - } - *data = PyMem_Malloc(dataSize); - if (!*data) { - CloseHandle(file); - return -1; - } - if (!ReadFile(file, *data, dataSize, &numberOfBytesRead, NULL)) { - CloseHandle(file); - return -1; - } - CloseHandle(file); - return 0; -} - - -//----------------------------------------------------------------------------- -// CreateGroupIconResource() -// Return the group icon resource given the icon file data. -//----------------------------------------------------------------------------- -static GRPICONDIR *CreateGroupIconResource( - ICONDIR *iconDir, // icon information - DWORD *resourceSize) // size of resource (OUT) -{ - GRPICONDIR *groupIconDir; - int i; - - *resourceSize = sizeof(GRPICONDIR) + - sizeof(GRPICONDIRENTRY) * iconDir->idCount; - groupIconDir = PyMem_Malloc(*resourceSize); - if (!groupIconDir) - return NULL; - groupIconDir->idReserved = iconDir->idReserved; - groupIconDir->idType = iconDir->idType; - groupIconDir->idCount = iconDir->idCount; - for (i = 0; i < iconDir->idCount; i++) { - groupIconDir->idEntries[i].bWidth = iconDir->idEntries[i].bWidth; - groupIconDir->idEntries[i].bHeight = iconDir->idEntries[i].bHeight; - groupIconDir->idEntries[i].bColorCount = - iconDir->idEntries[i].bColorCount; - groupIconDir->idEntries[i].bReserved = iconDir->idEntries[i].bReserved; - groupIconDir->idEntries[i].wPlanes = iconDir->idEntries[i].wPlanes; - groupIconDir->idEntries[i].wBitCount = iconDir->idEntries[i].wBitCount; - groupIconDir->idEntries[i].dwBytesInRes = - iconDir->idEntries[i].dwBytesInRes; - groupIconDir->idEntries[i].nID = i + 1; - } - - return groupIconDir; -} - - -//----------------------------------------------------------------------------- -// ExtAddIcon() -// Add the icon as a resource to the specified file. -//----------------------------------------------------------------------------- -static PyObject *ExtAddIcon( - PyObject *self, // passthrough argument - PyObject *args) // arguments -{ - char *executableName, *iconName, *data, *iconData; - GRPICONDIR *groupIconDir; - DWORD resourceSize; - ICONDIR *iconDir; - BOOL succeeded; - HANDLE handle; - int i; - - if (!PyArg_ParseTuple(args, "ss", &executableName, &iconName)) - return NULL; - - // begin updating the executable - handle = BeginUpdateResource(executableName, FALSE); - if (!handle) { - PyErr_SetExcFromWindowsErrWithFilename(PyExc_WindowsError, - GetLastError(), executableName); - return NULL; - } - - // first attempt to get the data from the icon file - data = NULL; - succeeded = TRUE; - groupIconDir = NULL; - if (GetFileData(iconName, &data) < 0) - succeeded = FALSE; - iconDir = (ICONDIR*) data; - - // next, attempt to add a group icon resource - if (succeeded) { - groupIconDir = CreateGroupIconResource(iconDir, &resourceSize); - if (groupIconDir) - succeeded = UpdateResource(handle, RT_GROUP_ICON, - MAKEINTRESOURCE(1), - MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), - groupIconDir, resourceSize); - else succeeded = FALSE; - } - - // next, add each icon as a resource - if (succeeded) { - for (i = 0; i < iconDir->idCount; i++) { - iconData = &data[iconDir->idEntries[i].dwImageOffset]; - resourceSize = iconDir->idEntries[i].dwBytesInRes; - succeeded = UpdateResource(handle, RT_ICON, MAKEINTRESOURCE(i + 1), - MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), iconData, - resourceSize); - if (!succeeded) - break; - } - } - - // finish writing the resource (or discarding the changes upon an error) - if (!EndUpdateResource(handle, !succeeded)) { - if (succeeded) { - succeeded = FALSE; - PyErr_SetExcFromWindowsErrWithFilename(PyExc_WindowsError, - GetLastError(), executableName); - } - } - - // clean up - if (groupIconDir) - PyMem_Free(groupIconDir); - if (data) - PyMem_Free(data); - if (!succeeded) - return NULL; - - Py_INCREF(Py_None); - return Py_None; -} - - -//----------------------------------------------------------------------------- -// ExtBeginUpdateResource() -// Wrapper for BeginUpdateResource(). -//----------------------------------------------------------------------------- -static PyObject *ExtBeginUpdateResource( - PyObject *self, // passthrough argument - PyObject *args) // arguments -{ - BOOL deleteExistingResources; - char *fileName; - HANDLE handle; - - deleteExistingResources = TRUE; - if (!PyArg_ParseTuple(args, "s|i", &fileName, &deleteExistingResources)) - return NULL; - handle = BeginUpdateResource(fileName, deleteExistingResources); - if (!handle) { - PyErr_SetExcFromWindowsErrWithFilename(PyExc_WindowsError, - GetLastError(), fileName); - return NULL; - } - return PyInt_FromLong((long) handle); -} - - -//----------------------------------------------------------------------------- -// ExtUpdateResource() -// Wrapper for UpdateResource(). -//----------------------------------------------------------------------------- -static PyObject *ExtUpdateResource( - PyObject *self, // passthrough argument - PyObject *args) // arguments -{ - int resourceType, resourceId, resourceDataSize; - char *resourceData; - HANDLE handle; - - if (!PyArg_ParseTuple(args, "iiis#", &handle, &resourceType, &resourceId, - &resourceData, &resourceDataSize)) - return NULL; - if (!UpdateResource(handle, MAKEINTRESOURCE(resourceType), - MAKEINTRESOURCE(resourceId), - MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), resourceData, - resourceDataSize)) { - PyErr_SetExcFromWindowsErr(PyExc_WindowsError, GetLastError()); - return NULL; - } - - Py_INCREF(Py_None); - return Py_None; -} - - -//----------------------------------------------------------------------------- -// ExtEndUpdateResource() -// Wrapper for EndUpdateResource(). -//----------------------------------------------------------------------------- -static PyObject *ExtEndUpdateResource( - PyObject *self, // passthrough argument - PyObject *args) // arguments -{ - BOOL discardChanges; - HANDLE handle; - - discardChanges = FALSE; - if (!PyArg_ParseTuple(args, "i|i", &handle, &discardChanges)) - return NULL; - if (!EndUpdateResource(handle, discardChanges)) { - PyErr_SetExcFromWindowsErr(PyExc_WindowsError, GetLastError()); - return NULL; - } - - Py_INCREF(Py_None); - return Py_None; -} - - -//----------------------------------------------------------------------------- -// ExtGetDependentFiles() -// Return a list of files that this file depends on. -//----------------------------------------------------------------------------- -static PyObject *ExtGetDependentFiles( - PyObject *self, // passthrough argument - PyObject *args) // arguments -{ - PyObject *results; - char *imageName; - - if (!PyArg_ParseTuple(args, "s", &imageName)) - return NULL; - g_ImageNames = PyDict_New(); - if (!g_ImageNames) - return NULL; - if (!BindImageEx(BIND_NO_BOUND_IMPORTS | BIND_NO_UPDATE | BIND_ALL_IMAGES, - imageName, NULL, NULL, BindStatusRoutine)) { - Py_DECREF(g_ImageNames); - PyErr_SetExcFromWindowsErrWithFilename(g_BindErrorException, - GetLastError(), imageName); - return NULL; - } - results = PyDict_Keys(g_ImageNames); - Py_DECREF(g_ImageNames); - return results; -} - - -//----------------------------------------------------------------------------- -// ExtGetSystemDir() -// Return the Windows directory (C:\Windows for example). -//----------------------------------------------------------------------------- -static PyObject *ExtGetSystemDir( - PyObject *self, // passthrough argument - PyObject *args) // arguments (ignored) -{ - char dir[MAX_PATH + 1]; - - if (GetSystemDirectory(dir, sizeof(dir))) - return PyString_FromString(dir); - PyErr_SetExcFromWindowsErr(PyExc_RuntimeError, GetLastError()); - return NULL; -} -#endif - - -//----------------------------------------------------------------------------- -// ExtSetOptimizeFlag() -// Set the optimize flag as needed. -//----------------------------------------------------------------------------- -static PyObject *ExtSetOptimizeFlag( - PyObject *self, // passthrough argument - PyObject *args) // arguments -{ - if (!PyArg_ParseTuple(args, "i", &Py_OptimizeFlag)) - return NULL; - Py_INCREF(Py_None); - return Py_None; -} - - -//----------------------------------------------------------------------------- -// Methods -//----------------------------------------------------------------------------- -static PyMethodDef g_ModuleMethods[] = { - { "SetOptimizeFlag", ExtSetOptimizeFlag, METH_VARARGS }, -#ifdef WIN32 - { "BeginUpdateResource", ExtBeginUpdateResource, METH_VARARGS }, - { "UpdateResource", ExtUpdateResource, METH_VARARGS }, - { "EndUpdateResource", ExtEndUpdateResource, METH_VARARGS }, - { "AddIcon", ExtAddIcon, METH_VARARGS }, - { "GetDependentFiles", ExtGetDependentFiles, METH_VARARGS }, - { "GetSystemDir", ExtGetSystemDir, METH_NOARGS }, -#endif - { NULL } -}; - - -//----------------------------------------------------------------------------- -// initutil() -// Initialization routine for the shared libary. -//----------------------------------------------------------------------------- -void initutil(void) -{ - PyObject *module; - - module = Py_InitModule("cx_Freeze.util", g_ModuleMethods); - if (!module) - return; -#ifdef WIN32 - g_BindErrorException = PyErr_NewException("cx_Freeze.util.BindError", - NULL, NULL); - if (!g_BindErrorException) - return; - if (PyModule_AddObject(module, "BindError", g_BindErrorException) < 0) - return; -#endif -} - diff --git a/setup/installer/linux/__init__.py b/setup/installer/linux/__init__.py index f80efbd125..68f29362ee 100644 --- a/setup/installer/linux/__init__.py +++ b/setup/installer/linux/__init__.py @@ -17,7 +17,8 @@ class Linux32(VMInstaller): INSTALLER_EXT = 'tar.bz2' VM_NAME = 'gentoo32_build' VM = '/vmware/bin/gentoo32_build' - FREEZE_COMMAND = 'linux_freeze' + FREEZE_COMMAND = 'linux_freeze2' + FREEZE_TEMPLATE = 'sudo python -OO setup.py {freeze_command}' class Linux64(Linux32): diff --git a/setup/installer/linux/freeze.py b/setup/installer/linux/freeze.py index 954033fb1b..6cbe7accf6 100644 --- a/setup/installer/linux/freeze.py +++ b/setup/installer/linux/freeze.py @@ -46,7 +46,6 @@ class LinuxFreeze(Command): '/usr/lib/libunrar.so', '/usr/lib/libchm.so.0', '/usr/lib/libsqlite3.so.0', - '/usr/lib/libsqlite3.so.0', '/usr/lib/libmng.so.1', '/usr/lib/libpodofo.so.0.8.2', '/lib/libz.so.1', diff --git a/setup/installer/linux/freeze2.py b/setup/installer/linux/freeze2.py index cd8443e11c..b30762f4b6 100644 --- a/setup/installer/linux/freeze2.py +++ b/setup/installer/linux/freeze2.py @@ -6,10 +6,22 @@ __license__ = 'GPL v3' __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>' __docformat__ = 'restructuredtext en' -import sys, os, shutil, platform, subprocess, stat, py_compile, glob +import sys, os, shutil, platform, subprocess, stat, py_compile, glob, \ + textwrap, tarfile -from setup import Command, modules, basenames, functions +from setup import Command, modules, basenames, functions, __version__, \ + __appname__ +SITE_PACKAGES = ['IPython', 'PIL', 'dateutil', 'dns', 'PyQt4', 'mechanize', + 'sip.so', 'BeautifulSoup.py', 'cssutils', 'encutils', 'lxml', + 'sipconfig.py', 'xdg'] + + + +gcc = subprocess.Popen(["gcc-config", "-c"], stdout=subprocess.PIPE).communicate()[0] +chost, _, gcc = gcc.rpartition('-') +stdcpp = '/usr/lib/gcc/%s/%s/libstdc++.so.?'%(chost.strip(), gcc.strip()) +stdcpp = glob.glob(stdcpp)[-1] is64bit = platform.architecture()[0] == '64bit' arch = 'x86_64' if is64bit else 'i686' ffi = '/usr/lib/libffi.so.5' if is64bit else '/usr/lib/gcc/i686-pc-linux-gnu/4.4.1/libffi.so.4' @@ -25,38 +37,35 @@ binary_includes = [ '/usr/lib/liblcms.so.1', '/usr/lib/libunrar.so', '/usr/lib/libsqlite3.so.0', - '/usr/lib/libsqlite3.so.0', '/usr/lib/libmng.so.1', - '/usr/lib/libpodofo.so.0.6.99', + '/usr/lib/libpodofo.so.0.8.4', '/lib/libz.so.1', - '/usr/lib/libtiff.so.3', + '/usr/lib/libtiff.so.5', '/lib/libbz2.so.1', - '/usr/lib/libpoppler.so.5', + '/usr/lib/libpoppler.so.7', '/usr/lib/libxml2.so.2', '/usr/lib/libopenjpeg.so.2', '/usr/lib/libxslt.so.1', - '/usr/lib/libjpeg.so.7', + '/usr/lib/libjpeg.so.8', '/usr/lib/libxslt.so.1', '/usr/lib/libgthread-2.0.so.0', - '/usr/lib/gcc/***-pc-linux-gnu/4.4.1/libstdc++.so.6'.replace('***', - arch), + stdcpp, ffi, - '/usr/lib/libpng12.so.0', + '/usr/lib/libpng14.so.14', '/usr/lib/libexslt.so.0', - '/usr/lib/libMagickWand.so.2', - '/usr/lib/libMagickCore.so.2', + '/usr/lib/libMagickWand.so.4', + '/usr/lib/libMagickCore.so.4', '/usr/lib/libgcrypt.so.11', '/usr/lib/libgpg-error.so.0', '/usr/lib/libphonon.so.4', - '/usr/lib/libssl.so.0.9.8', - '/usr/lib/libcrypto.so.0.9.8', + '/usr/lib/libssl.so.1.0.0', + '/usr/lib/libcrypto.so.1.0.0', '/lib/libreadline.so.6', + '/usr/lib/libchm.so.0', + '/usr/lib/liblcms2.so.2', ] binary_includes += [os.path.join(QTDIR, 'lib%s.so.4'%x) for x in QTDLLS] -SITE_PACKAGES = ['IPython', 'PIL', 'dateutil', 'dns', 'PyQt4', 'mechanize', - 'sip.so', 'BeautifulSoup.py', 'ClientForm.py', 'lxml'] - class LinuxFreeze2(Command): def run(self, opts): @@ -68,11 +77,12 @@ class LinuxFreeze2(Command): self.lib_dir = self.j(self.base, 'lib') self.bin_dir = self.j(self.base, 'bin') - #self.initbase() - #self.copy_libs() - #self.copy_python() - #self.compile_mount_helper() + self.initbase() + self.copy_libs() + self.copy_python() + self.compile_mount_helper() self.build_launchers() + self.create_tarfile() def initbase(self): if os.path.exists(self.base): @@ -109,7 +119,7 @@ class LinuxFreeze2(Command): 'linux_mount_helper.c'), '-o', dest]) os.chown(dest, 0, 0) os.chmod(dest, stat.S_ISUID|stat.S_ISGID|stat.S_IRUSR|stat.S_IWUSR|\ - stat.S_IXUSR|stat.S_IXGRP|stat.S_IXOTH) + stat.S_IXUSR|stat.S_IXGRP|stat.S_IXOTH|stat.S_IRGRP|stat.S_IROTH) self.drop_privileges() def copy_python(self): @@ -117,27 +127,30 @@ class LinuxFreeze2(Command): def ignore_in_lib(base, items): ans = [] - for x in items: - x = os.path.join(base, x) + for y in items: + x = os.path.join(base, y) if (os.path.isfile(x) and os.path.splitext(x)[1] in ('.so', '.py')) or \ - (os.path.isdir(x) and x in ('.svn', '.bzr', 'test')): + (os.path.isdir(x) and x not in ('.svn', '.bzr', 'test', 'tests', + 'testing')): continue - ans.append(x) + ans.append(y) return ans srcdir = self.j('/usr/lib/python'+self.py_ver) self.py_dir = self.j(self.lib_dir, self.b(srcdir)) - os.mkdir(self.py_dir) + if not os.path.exists(self.py_dir): + os.mkdir(self.py_dir) for x in os.listdir(srcdir): y = self.j(srcdir, x) ext = os.path.splitext(x)[1] if os.path.isdir(y) and x not in ('test', 'hotshot', 'distutils', - 'site-packages', 'idlelib', 'test', 'lib2to3'): + 'site-packages', 'idlelib', 'lib2to3', 'dist-packages'): shutil.copytree(y, self.j(self.py_dir, x), ignore=ignore_in_lib) - if os.path.isfile(y) and ext in ('.py', '.so'): + if os.path.isfile(y) and ext in ('.py', '.so') and \ + self.b(y) not in ('pdflib_py.so',): shutil.copy2(y, self.py_dir) srcdir = self.j(srcdir, 'site-packages') @@ -155,13 +168,19 @@ class LinuxFreeze2(Command): for x in os.listdir(self.SRC): shutil.copytree(self.j(self.SRC, x), self.j(dest, x), ignore=ignore_in_lib) - for x in ('translations', 'manual'): + for x in ('manual', 'trac'): x = self.j(dest, 'calibre', x) - shutil.rmtree(x) + if os.path.exists(x): + shutil.rmtree(x) + + for x in glob.glob(self.j(dest, 'calibre', 'translations', '*.po')): + os.remove(x) shutil.copytree(self.j(self.src_root, 'resources'), self.j(self.base, 'resources')) + self.create_site_py() + for x in os.walk(self.py_dir): for f in x[-1]: if f.endswith('.py'): @@ -176,17 +195,37 @@ class LinuxFreeze2(Command): except: self.warn('Failed to byte-compile', y) - def run_builder(self, cmd): + + def run_builder(self, cmd, verbose=True): p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - self.info(*cmd) - self.info(p.stdout.read()) - self.info(p.stderr.read()) + if verbose: + self.info(*cmd) + x = p.stdout.read() + p.stderr.read() + if x.strip(): + self.info(x.strip()) if p.wait() != 0: self.info('Failed to run builder') sys.exit(1) + def create_tarfile(self): + self.info('Creating archive...') + dist = os.path.join(self.d(self.SRC), 'dist', + '%s-%s-%s.tar.bz2'%(__appname__, __version__, arch)) + with tarfile.open(dist, mode='w:bz2', + format=tarfile.PAX_FORMAT) as tf: + cwd = os.getcwd() + os.chdir(self.base) + try: + for x in os.listdir('.'): + tf.add(x) + finally: + os.chdir(cwd) + self.info('Archive %s created: %.2f MB'%(dist, + os.stat(dist).st_size/(1024.**2))) + + def build_launchers(self): self.obj_dir = self.j(self.src_root, 'build', 'launcher') if not os.path.exists(self.obj_dir): @@ -195,7 +234,7 @@ class LinuxFreeze2(Command): sources = [self.j(base, x) for x in ['util.c']] headers = [self.j(base, x) for x in ['util.h']] objects = [self.j(self.obj_dir, self.b(x)+'.o') for x in sources] - cflags = '-W -Wall -c -O2 -pipe -DPYTHON_VER="python%s"'%self.py_ver + cflags = '-fno-strict-aliasing -W -Wall -c -O2 -pipe -DPYTHON_VER="python%s"'%self.py_ver cflags = cflags.split() + ['-I/usr/include/python'+self.py_ver] for src, obj in zip(sources, objects): if not self.newer(obj, headers+[src, __file__]): continue @@ -210,34 +249,109 @@ class LinuxFreeze2(Command): self.run_builder(cmd) src = self.j(base, 'main.c') + + modules['console'].append('calibre.linux') + basenames['console'].append('calibre_postinstall') + functions['console'].append('main') for typ in ('console', 'gui', ): self.info('Processing %s launchers'%typ) for mod, bname, func in zip(modules[typ], basenames[typ], functions[typ]): xflags = list(cflags) - xflags += ['-DGUI_APP='+('1' if type == 'gui' else '0')] + xflags += ['-DGUI_APP='+('1' if typ == 'gui' else '0')] xflags += ['-DMODULE="%s"'%mod, '-DBASENAME="%s"'%bname, '-DFUNCTION="%s"'%func] + launcher = textwrap.dedent('''\ + #!/bin/sh + path=`readlink -e $0` + base=`dirname $path` + lib=$base/lib + export LD_LIBRARY_PATH=$lib:$LD_LIBRARY_PATH + export QT_PLUGIN_PATH=$lib/qt_plugins + export MAGICK_CONFIGURE_PATH=$lib/ImageMagick/config + export MAGICK_CODER_MODULE_PATH=$lib/ImageMagick/modules-Q16/coders + export MAGICK_CODER_FILTER_PATH=$lib/ImageMagick/modules-Q16/filters + $base/bin/{0} "$@" + ''') + dest = self.j(self.obj_dir, bname+'.o') if self.newer(dest, [src, __file__]+headers): self.info('Compiling', bname) cmd = ['gcc'] + xflags + [src, '-o', dest] - self.run_builder(cmd) + self.run_builder(cmd, verbose=False) exe = self.j(self.bin_dir, bname) + sh = self.j(self.base, bname) + with open(sh, 'wb') as f: + f.write(launcher.format(bname)) + os.chmod(sh, + stat.S_IREAD|stat.S_IEXEC|stat.S_IWRITE|stat.S_IRGRP|stat.S_IXGRP|stat.S_IROTH|stat.S_IXOTH) + if self.newer(exe, [dest, __file__]): self.info('Linking', bname) - cmd = ['gcc', '-O2', '-Wl,--rpath=$ORIGIN/../lib', + cmd = ['gcc', '-O2', '-o', exe, dest, '-L'+self.lib_dir, '-lcalibre-launcher', ] - self.run_builder(cmd) + self.run_builder(cmd, verbose=False) + def create_site_py(self): # {{{ + with open(self.j(self.py_dir, 'site.py'), 'wb') as f: + f.write(textwrap.dedent('''\ + import sys + import encodings + import __builtin__ + import locale + import os + import codecs + + def set_default_encoding(): + locale.setlocale(locale.LC_ALL, '') + enc = locale.getdefaultlocale()[1] + if not enc: + enc = locale.nl_langinfo(locale.CODESET) + if not enc or enc.lower() == 'ascii': + enc = 'UTF-8' + enc = codecs.lookup(enc).name + sys.setdefaultencoding(enc) + del sys.setdefaultencoding + + class _Helper(object): + """Define the builtin 'help'. + This is a wrapper around pydoc.help (with a twist). + + """ + + def __repr__(self): + return "Type help() for interactive help, " \ + "or help(object) for help about object." + def __call__(self, *args, **kwds): + import pydoc + return pydoc.help(*args, **kwds) + + def set_helper(): + __builtin__.help = _Helper() + def main(): + try: + sys.argv[0] = sys.calibre_basename + set_default_encoding() + set_helper() + mod = __import__(sys.calibre_module, fromlist=[1]) + func = getattr(mod, sys.calibre_function) + return func() + except SystemExit: + raise + except: + import traceback + traceback.print_exc() + return 1 + ''')) + # }}} diff --git a/setup/installer/linux/util.c b/setup/installer/linux/util.c index f7482d2501..dfbaaef62c 100644 --- a/setup/installer/linux/util.c +++ b/setup/installer/linux/util.c @@ -11,10 +11,8 @@ static char exe_path[PATH_MAX]; static char base_dir[PATH_MAX]; static char bin_dir[PATH_MAX]; static char lib_dir[PATH_MAX]; -static char qt_dir[PATH_MAX]; static char extensions_dir[PATH_MAX]; static char resources_dir[PATH_MAX]; -static char magick_dir[PATH_MAX]; void set_gui_app(bool yes) { GUI_APP = yes; } @@ -26,7 +24,8 @@ int report_error(const char *msg, int code) { int report_libc_error(const char *msg) { char buf[2000]; int err = errno; - snprintf("%s::%s", 2000, msg, strerror(err)); + + snprintf(buf, 2000, "%s::%s", msg, strerror(err)); return report_error(buf, err); } @@ -122,54 +121,31 @@ static void get_paths() exit(report_error("No path separators in executable path", EXIT_FAILURE)); } strncat(base_dir, exe_path, p - exe_path); - strcat(base_dir, "\0"); + p = rindex(base_dir, '/'); + if (p == NULL) { + exit(report_error("Only one path separator in executable path", EXIT_FAILURE)); + } + *p = 0; + snprintf(bin_dir, PATH_MAX, "%s/bin", base_dir); snprintf(lib_dir, PATH_MAX, "%s/lib", base_dir); - snprintf(magick_dir, PATH_MAX, "%s/ImageMagick", lib_dir); - snprintf(qt_dir, PATH_MAX, "%s/qt_plugins", lib_dir); snprintf(resources_dir, PATH_MAX, "%s/resources", base_dir); snprintf(extensions_dir, PATH_MAX, "%s/%s/site-packages/calibre/plugins", lib_dir, PYTHON_VER); } -void init_env() { - char buf[PATH_MAX]; - - if (setenv("QT_PLUGIN_PATH", qt_dir, 1) == -1) - exit(report_libc_error("Failed to set environment variable")); - - snprintf(buf, PATH_MAX, "%s/config", magick_dir); - if (setenv("MAGICK_CONFIGURE_PATH", buf, 1) == -1) - exit(report_libc_error("Failed to set environment variable")); - - snprintf(buf, PATH_MAX, "%s/modules-Q16/coders", magick_dir); - if (setenv("MAGICK_CODER_MODULE_PATH", buf, 1) == -1) - exit(report_libc_error("Failed to set environment variable")); - - snprintf(buf, PATH_MAX, "%s/modules-Q16/filters", magick_dir); - if (setenv("MAGICK_CODER_FILTER_PATH", buf, 1) == -1) - exit(report_libc_error("Failed to set environment variable")); - - if (setenv("PYTHONIOENCODING", "utf-8", 1) == -1) - exit(report_libc_error("Failed to set environment variable")); - - if (setenv("PYTHONHOME", base_dir, 1) == -1) - exit(report_libc_error("Failed to set environment variable")); - -} void setup_stream(const char *name, const char *errors) { PyObject *stream; - char *buf = (char *)calloc(100, sizeof(char)); - if (!buf) OOM; + char buf[100]; - snprintf(buf, 100, "%s", "utf-8"); + snprintf(buf, 20, "%s", name); + stream = PySys_GetObject(buf); - stream = PySys_GetObject(name); + snprintf(buf, 20, "%s", "utf-8"); + snprintf(buf+21, 30, "%s", errors); - if (!PyFile_SetEncodingAndErrors(stream, buf, errors)) + if (!PyFile_SetEncodingAndErrors(stream, buf, buf+21)) exit(report_python_error("Failed to set stream encoding", 1)); - - free(buf); } @@ -187,10 +163,9 @@ void setup_streams() { void initialize_interpreter(int argc, char **argv, char *outr, char *errr, const char *basename, const char *module, const char *function) { - char *path; + char *path, *encoding, *p; get_paths(); - init_env(); path = (char*)calloc(3*PATH_MAX, sizeof(char)); if (!path) OOM; @@ -213,6 +188,17 @@ void initialize_interpreter(int argc, char **argv, char *outr, char *errr, //printf("Path before Py_Initialize(): %s\r\n\n", Py_GetPath()); Py_Initialize(); + if (!Py_FileSystemDefaultEncoding) { + encoding = getenv("PYTHONIOENCODING"); + if (encoding != NULL) { + Py_FileSystemDefaultEncoding = strndup(encoding, 20); + p = index(Py_FileSystemDefaultEncoding, ':'); + if (p != NULL) *p = 0; + } else + Py_FileSystemDefaultEncoding = strndup("UTF-8", 10); + } + + setup_streams(); PySys_SetArgv(argc, argv); @@ -220,16 +206,21 @@ void initialize_interpreter(int argc, char **argv, char *outr, char *errr, PySys_SetPath(path); //printf("Path set by me: %s\r\n\n", path); PySys_SetObject("gui_app", PyBool_FromLong((long)GUI_APP)); - PySys_SetObject("app_dir", PyString_FromString(base_dir)); - PySys_SetObject("calibre_basename", PyBytes_FromString(basename)); PySys_SetObject("calibre_module", PyBytes_FromString(module)); PySys_SetObject("calibre_function", PyBytes_FromString(function)); + PySys_SetObject("extensions_location", PyBytes_FromString(extensions_dir)); + PySys_SetObject("resources_location", PyBytes_FromString(resources_dir)); + PySys_SetObject("executables_location", PyBytes_FromString(base_dir)); + PySys_SetObject("frozen_path", PyBytes_FromString(base_dir)); + PySys_SetObject("frozen", Py_True); + Py_INCREF(Py_True); - //if (GUI_APP && outr && errr) { + + if (GUI_APP && outr && errr) { // PySys_SetObject("stdout_redirect", PyUnicode_FromWideChar(outr, wcslen(outr))); // PySys_SetObject("stderr_redirect", PyUnicode_FromWideChar(errr, wcslen(outr))); - //} + } } @@ -256,6 +247,8 @@ int execute_python_entrypoint(int argc, char **argv, const char *basename, const if (res == NULL) ret = report_python_error("Python function terminated unexpectedly", 1); + + ret = pyobject_to_int(res); } } PyErr_Clear(); diff --git a/setup/installer/windows/notes.rst b/setup/installer/windows/notes.rst index ed78bf3158..9c553c42e8 100644 --- a/setup/installer/windows/notes.rst +++ b/setup/installer/windows/notes.rst @@ -21,7 +21,7 @@ This is where all dependencies will be installed. Add C:\Python27\Scripts and C:\Python27 to PATH -Edit mimetypes.py in C:\Python27\Lib and change line 250 UnicodeEncodeError to ValueError and set _winreg = None to prevent reading of mimetypes from the windows registry +Edit mimetypes.py in C:\Python27\Lib and set _winreg = None to prevent reading of mimetypes from the windows registry Install setuptools from http://pypi.python.org/pypi/setuptools If there are no windows binaries already compiled for the version of python you are using then download the source and run the following command in the folder where the source has been unpacked:: @@ -36,6 +36,7 @@ Install BeautifulSoup 3.0.x manually into site-packages (3.1.x parses broken HTM Install pywin32 and edit win32com\__init__.py setting _frozen = True and __gen_path__ to a temp dir (otherwise it tries to set it to a dir in the install tree which leads to permission errors) +Also edit win32com\client\gencache.py and change the except IOError on line 57 to catch all exceptions. SQLite --------- diff --git a/src/calibre/devices/usbms/device.py b/src/calibre/devices/usbms/device.py index f826167d16..af2948cf82 100644 --- a/src/calibre/devices/usbms/device.py +++ b/src/calibre/devices/usbms/device.py @@ -586,8 +586,8 @@ class Device(DeviceConfig, DevicePlugin): pass cmd = 'calibre-mount-helper' - if getattr(sys, 'frozen_path', False): - cmd = os.path.join(sys.frozen_path, cmd) + if getattr(sys, 'frozen', False): + cmd = os.path.join(sys.executables_location, 'bin', cmd) cmd = [cmd, 'mount'] try: p = subprocess.Popen(cmd + [node, '/media/'+label]) @@ -754,8 +754,8 @@ class Device(DeviceConfig, DevicePlugin): for drive in drives: cmd = 'calibre-mount-helper' - if getattr(sys, 'frozen_path', False): - cmd = os.path.join(sys.frozen_path, cmd) + if getattr(sys, 'frozen', False): + cmd = os.path.join(sys.executables_location, 'bin', cmd) cmd = [cmd, 'eject'] mp = getattr(self, "_linux_mount_map", {}).get(drive, 'dummy/')[:-1] @@ -787,8 +787,8 @@ class Device(DeviceConfig, DevicePlugin): if drive and mp: mp = mp[:-1] cmd = 'calibre-mount-helper' - if getattr(sys, 'frozen_path', False): - cmd = os.path.join(sys.frozen_path, cmd) + if getattr(sys, 'frozen', False): + cmd = os.path.join(sys.executables_location, 'bin', cmd) cmd = [cmd, 'cleanup'] if mp and os.path.exists(mp): try: diff --git a/src/calibre/ebooks/pdf/pdftohtml.py b/src/calibre/ebooks/pdf/pdftohtml.py index 971114a180..564ba14a32 100644 --- a/src/calibre/ebooks/pdf/pdftohtml.py +++ b/src/calibre/ebooks/pdf/pdftohtml.py @@ -23,8 +23,8 @@ if isosx and hasattr(sys, 'frameworks_dir'): if iswindows and hasattr(sys, 'frozen'): PDFTOHTML = os.path.join(os.path.dirname(sys.executable), 'pdftohtml.exe') popen = partial(subprocess.Popen, creationflags=0x08) # CREATE_NO_WINDOW=0x08 so that no ugly console is popped up -if (islinux or isfreebsd) and getattr(sys, 'frozen_path', False): - PDFTOHTML = os.path.join(getattr(sys, 'frozen_path'), 'pdftohtml') +if (islinux or isfreebsd) and getattr(sys, 'frozen', False): + PDFTOHTML = os.path.join(sys.executables_location, 'bin', 'pdftohtml') def pdftohtml(output_dir, pdf_path, no_images): ''' diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py index f035c40cb4..57b914877d 100644 --- a/src/calibre/gui2/__init__.py +++ b/src/calibre/gui2/__init__.py @@ -644,7 +644,7 @@ def open_url(qurl): '').split(os.pathsep) paths = [x for x in paths if x] if isfrozen and islinux and paths: - npaths = [x for x in paths if x != sys.frozen_path] + npaths = [x for x in paths if x != sys.frozen_path+'/lib'] os.environ['LD_LIBRARY_PATH'] = os.pathsep.join(npaths) QDesktopServices.openUrl(qurl) if isfrozen and islinux and paths: diff --git a/src/calibre/libunrar.py b/src/calibre/libunrar.py index e05afc4e38..4bfd5c537a 100644 --- a/src/calibre/libunrar.py +++ b/src/calibre/libunrar.py @@ -28,7 +28,7 @@ if hasattr(sys, 'frozen') and iswindows: lp = os.path.join(os.path.dirname(sys.executable), 'DLLs', 'unrar.dll') _libunrar = cdll.LoadLibrary(lp) elif hasattr(sys, 'frozen_path'): - lp = os.path.join(sys.frozen_path, 'libunrar.so') + lp = os.path.join(sys.frozen_path, 'lib', 'libunrar.so') _libunrar = cdll.LoadLibrary(lp) else: _libunrar = load_library(_librar_name, cdll) diff --git a/src/calibre/utils/ipc/launch.py b/src/calibre/utils/ipc/launch.py index a179f356be..28d5d889e3 100644 --- a/src/calibre/utils/ipc/launch.py +++ b/src/calibre/utils/ipc/launch.py @@ -8,7 +8,7 @@ __docformat__ = 'restructuredtext en' import subprocess, os, sys, time, binascii, cPickle -from calibre.constants import iswindows, isosx, isfrozen, isnewosx +from calibre.constants import iswindows, isosx, isfrozen from calibre.utils.config import prefs from calibre.ptempfile import PersistentTemporaryFile, base_dir @@ -51,17 +51,11 @@ class Worker(object): return os.path.join(os.path.dirname(sys.executable), e+'.exe' if isfrozen else \ 'Scripts\\%s.exe'%e) - if isnewosx: + if isosx: return os.path.join(sys.console_binaries_path, e) - if isosx: - if not isfrozen: return e - contents = os.path.join(self.osx_contents_dir, - 'console.app', 'Contents') - return os.path.join(contents, 'MacOS', self.osx_interpreter) - if isfrozen: - return os.path.join(getattr(sys, 'frozen_path'), e) + return os.path.join(sys.executables_location, e) c = os.path.join(sys.executables_location, e) if os.access(c, os.X_OK): @@ -71,13 +65,9 @@ class Worker(object): @property def gui_executable(self): - if isnewosx: + if isosx: return os.path.join(sys.binaries_path, self.exe_name) - if isfrozen and isosx: - return os.path.join(self.osx_contents_dir, - 'MacOS', self.osx_interpreter) - return self.executable @property @@ -123,27 +113,6 @@ class Worker(object): def __init__(self, env, gui=False): self._env = {} self.gui = gui - if isosx and isfrozen and not isnewosx: - contents = os.path.join(self.osx_contents_dir, 'console.app', 'Contents') - resources = os.path.join(contents, 'Resources') - fd = os.path.join(contents, 'Frameworks') - sp = os.path.join(resources, 'lib', 'python'+sys.version[:3], 'site-packages.zip') - self.osx_prefix = 'import sys, os; sys.frameworks_dir = "%s"; sys.frozen = "macosx_app"; '%fd - self.osx_prefix += 'sys.path.insert(0, %s); '%repr(sp) - self.osx_prefix += 'sys.extensions_location = os.path.join(sys.frameworks_dir, "plugins");' - self.osx_prefix += 'sys.resources_location = os.path.join(os.path.dirname(sys.frameworks_dir), "Resources", "resources"); ' - - self._env['PYTHONHOME'] = resources - self._env['MAGICK_HOME'] = os.path.join(fd, 'ImageMagick') - self._env['DYLD_LIBRARY_PATH'] = os.path.join(fd, 'ImageMagick', 'lib') - self._env['FONTCONFIG_PATH'] = \ - os.path.join(os.path.realpath(resources), 'fonts') - self._env['QT_PLUGIN_PATH'] = \ - os.path.join(self.osx_contents_dir, 'MacOS') - - if isfrozen and not (iswindows or isosx): - self._env['LD_LIBRARY_PATH'] = getattr(sys, 'frozen_path') + ':'\ - + os.environ.get('LD_LIBRARY_PATH', '') self._env.update(env) def __call__(self, redirect_output=True, cwd=None, priority=None): @@ -155,13 +124,9 @@ class Worker(object): env = self.env env['ORIGWD'] = cwd or os.path.abspath(os.getcwd()) _cwd = cwd - if isfrozen and not iswindows and not isosx: - _cwd = getattr(sys, 'frozen_path', None) if priority is None: priority = prefs['worker_process_priority'] cmd = [exe] - if isosx and not isnewosx: - cmd += ['-c', self.osx_prefix + 'from calibre.utils.ipc.worker import main; main()'] args = { 'env' : env, 'cwd' : _cwd, From b44e60f80d6fab30a05ad52732604350a51b7dc4 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Mon, 29 Nov 2010 09:44:39 -0700 Subject: [PATCH 216/377] La Rijoa nad NacionRed by Arturo Martinez Nieves --- resources/nacionred.recipe | 11 +++++++ resources/recipes/la_rioja.recipe | 54 +++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 resources/nacionred.recipe create mode 100644 resources/recipes/la_rioja.recipe diff --git a/resources/nacionred.recipe b/resources/nacionred.recipe new file mode 100644 index 0000000000..4108deab88 --- /dev/null +++ b/resources/nacionred.recipe @@ -0,0 +1,11 @@ +from calibre.web.feeds.news import BasicNewsRecipe + +class AdvancedUserRecipe1291022049(BasicNewsRecipe): + title = u'NacionRed.com' + oldest_article = 7 + max_articles_per_feed = 100 + language = 'es' + __author__ = 'Arturo Martinez Nieves' + + feeds = [(u'NacionRed.com', u'http://feeds.weblogssl.com/nacionred?format=xml')] + diff --git a/resources/recipes/la_rioja.recipe b/resources/recipes/la_rioja.recipe new file mode 100644 index 0000000000..eea3dd2687 --- /dev/null +++ b/resources/recipes/la_rioja.recipe @@ -0,0 +1,54 @@ +__license__ = 'GPL v3' +__copyright__ = '2010, Darko Miletic <darko.miletic at gmail.com>' +''' +www.larioja.com +''' + +from calibre.web.feeds.news import BasicNewsRecipe + +class LaRioja(BasicNewsRecipe): + title = 'La Rioja' + __author__ = 'Arturo Martinez Nieves' + description = 'Noticias de La Rioja y el resto del mundo' + publisher = 'La Rioja' + category = 'news, politics, Spain' + oldest_article = 2 + max_articles_per_feed = 200 + no_stylesheets = True + encoding = 'cp1252' + use_embedded_content = False + language = 'es' + remove_empty_feeds = True + masthead_url = 'http://www.larioja.com/includes/manuales/larioja/include-lariojapapeldigital-zonac-fondocabecera01.jpg' + extra_css = ' body{font-family: Arial,Helvetica,sans-serif } img{margin-bottom: 0.4em} .photo-caption{font-size: x-small} ' + + conversion_options = { + 'comment' : description + , 'tags' : category + , 'publisher' : publisher + , 'language' : language + } + + keep_only_tags = [ + dict(attrs={'id':'title'}) + ,dict(attrs={'class':['overhead','headline','subhead','date','text','noticia_cont','desarrollo']}) + ] + remove_tags = [dict(name='ul')] + remove_attributes = ['width','height'] + + + feeds = [ + (u'Ultimas Noticias' , u'http://www.larioja.com/rss/feeds/ultima.xml' ) + ,(u'Portada' , u'http://www.larioja.com/rss/feeds/portada.xml' ) + ,(u'Mundo' , u'http://www.larioja.com/rss/feeds/mundo.xml' ) + ,(u'Espana' , u'http://www.larioja.com/rss/feeds/espana.xml' ) + ,(u'Region' , u'http://www.larioja.com/rss/feeds/region.xml' ) + ,(u'Comarcas' , u'http://www.larioja.com/rss/feeds/comarcas.xml') + ,(u'Deportes' , u'http://www.larioja.com/rss/feeds/deportes.xml' ) + ,(u'Economia' , u'http://www.larioja.com/rss/feeds/economia.xml' ) + ,(u'Cultura' , u'http://www.larioja.com/rss/feeds/cultura.xml' ) + ,(u'Opinion' , u'http://www.larioja.com/rss/feeds/opinion.xml' ) + ,(u'Sociedad' , u'http://www.larioja.com/rss/feeds/sociedad.xml' ) + + ] + From 4bb388216a65dd86f70811ea3ee1d20906cd74e1 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Mon, 29 Nov 2010 16:58:54 +0000 Subject: [PATCH 217/377] Drag & drop onto user categories --- src/calibre/gui2/dialogs/tag_categories.py | 2 +- src/calibre/gui2/library/views.py | 2 + src/calibre/gui2/tag_view.py | 88 +++++++++++++++++++++- 3 files changed, 87 insertions(+), 5 deletions(-) diff --git a/src/calibre/gui2/dialogs/tag_categories.py b/src/calibre/gui2/dialogs/tag_categories.py index 679a5c9da9..7a9660a655 100644 --- a/src/calibre/gui2/dialogs/tag_categories.py +++ b/src/calibre/gui2/dialogs/tag_categories.py @@ -51,7 +51,7 @@ class TagCategories(QDialog, Ui_TagCategories): cc_map = self.db.custom_column_label_map for cc in cc_map: - if cc_map[cc]['datatype'] == 'text': + if cc_map[cc]['datatype'] in ['text', 'series']: self.category_labels.append(db.field_metadata.label_to_key(cc)) category_icons.append(cc_icon) category_values.append(lambda col=cc: self.db.all_custom(label=col)) diff --git a/src/calibre/gui2/library/views.py b/src/calibre/gui2/library/views.py index a972acfc13..fadb8314e3 100644 --- a/src/calibre/gui2/library/views.py +++ b/src/calibre/gui2/library/views.py @@ -517,6 +517,8 @@ class BooksView(QTableView): # {{{ md.setUrls([url_for_id(i) for i in selected]) drag = QDrag(self) + col = self.selectionModel().currentIndex().column() + md.column_name = self.column_map[col] drag.setMimeData(md) cover = self.drag_icon(m.cover(self.currentIndex().row()), len(selected) > 1) diff --git a/src/calibre/gui2/tag_view.py b/src/calibre/gui2/tag_view.py index 3ded769137..ed27026562 100644 --- a/src/calibre/gui2/tag_view.py +++ b/src/calibre/gui2/tag_view.py @@ -67,7 +67,7 @@ class TagsView(QTreeView): # {{{ author_sort_edit = pyqtSignal(object, object) tag_item_renamed = pyqtSignal() search_item_renamed = pyqtSignal() - drag_drop_finished = pyqtSignal(object) + drag_drop_finished = pyqtSignal(object, object) def __init__(self, parent=None): QTreeView.__init__(self, parent=None) @@ -252,6 +252,30 @@ class TagsView(QTreeView): # {{{ self.context_menu.popup(self.mapToGlobal(point)) return True + def dragMoveEvent(self, event): + self.setDropIndicatorShown(False) + index = self.indexAt(event.pos()) + if not index.isValid(): + self.setDropIndicatorShown(False) + return + item = index.internalPointer() + flags = self._model.flags(index) + if item.type == TagTreeItem.TAG and flags & Qt.ItemIsDropEnabled: + self.setDropIndicatorShown(True) + else: + item = index.internalPointer() + if item.type == TagTreeItem.CATEGORY: + fm_dest = self.db.metadata_for_field(item.category_key) + if fm_dest['kind'] == 'user': + md = event.mimeData() + fm_src = self.db.metadata_for_field(md.column_name) + if md.column_name in ['authors', 'publisher', 'series'] or \ + (fm_src['is_custom'] and + fm_src['datatype'] in ['series', 'text'] and + not fm_src['is_multiple']): + self.setDropIndicatorShown(True) + QTreeView.dragMoveEvent(self, event) + def clear(self): if self.model(): self.model().clear_state() @@ -448,8 +472,59 @@ class TagsModel(QAbstractItemModel): # {{{ ids = list(map(int, str(md.data(mime)).split())) self.handle_drop(node, ids) return True + elif node.type == TagTreeItem.CATEGORY: + fm_dest = self.db.metadata_for_field(node.category_key) + if fm_dest['kind'] == 'user': + fm_src = self.db.metadata_for_field(md.column_name) + if md.column_name in ['authors', 'publisher', 'series'] or \ + (fm_src['is_custom'] and + fm_src['datatype'] in ['series', 'text'] and + not fm_src['is_multiple']): + mime = 'application/calibre+from_library' + ids = list(map(int, str(md.data(mime)).split())) + self.handle_user_category_drop(node, ids, md.column_name) + return True return False + def handle_user_category_drop(self, on_node, ids, column): + categories = self.db.prefs.get('user_categories', {}) + category = categories.get(on_node.category_key[:-1], None) + if category is None: + return + fm_src = self.db.metadata_for_field(column) + for id in ids: + vmap = {} + label = fm_src['label'] + if not fm_src['is_custom']: + if label == 'authors': + items = self.db.get_authors_with_ids() + items = [(i[0], i[1].replace('|', ',')) for i in items] + value = self.db.authors(id, index_is_id=True) + value = [v.replace('|', ',') for v in value.split(',')] + elif label == 'publisher': + items = self.db.get_publishers_with_ids() + value = self.db.publisher(id, index_is_id=True) + elif label == 'series': + items = self.db.get_series_with_ids() + value = self.db.series(id, index_is_id=True) + else: + items = self.db.get_custom_items_with_ids(label=label) + value = self.db.get_custom(id, label=label, index_is_id=True) + if value is None: + return + if not isinstance(value, list): + value = [value] + for v in items: + vmap[v[1]] = v[0] + for val in value: + for (v, c, id) in category: + if v == val and c == column: + break + else: + category.append([val, column, vmap[val]]) + categories[on_node.category_key[:-1]] = category + self.db.prefs.set('user_categories', categories) + self.drag_drop_finished.emit(None, True) def handle_drop(self, on_node, ids): #print 'Dropped ids:', ids, on_node.tag @@ -499,7 +574,7 @@ class TagsModel(QAbstractItemModel): # {{{ self.db.set_metadata(id, mi, set_title=False, set_authors=set_authors, commit=False) self.db.commit() - self.drag_drop_finished.emit(ids) + self.drag_drop_finished.emit(ids, False) def set_search_restriction(self, s): self.search_restriction = s @@ -641,6 +716,8 @@ class TagsModel(QAbstractItemModel): # {{{ (fm['is_custom'] and \ fm['datatype'] in ['text', 'rating', 'series']): ans |= Qt.ItemIsDropEnabled + else: + ans |= Qt.ItemIsDropEnabled return ans def supportedDropActions(self): @@ -857,8 +934,11 @@ class TagBrowserMixin(object): # {{{ self.library_view.model().refresh() self.tags_view.recount() - def drag_drop_finished(self, ids): - self.library_view.model().refresh_ids(ids) + def drag_drop_finished(self, ids, is_category): + if is_category: + self.tags_view.recount() + else: + self.library_view.model().refresh_ids(ids) # }}} From fdf989c011f0bc7edffa68b6e9dbf585fa49b48d Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Mon, 29 Nov 2010 10:06:39 -0700 Subject: [PATCH 218/377] ... --- src/calibre/manual/faq.rst | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/calibre/manual/faq.rst b/src/calibre/manual/faq.rst index f9fe5bd3af..55451206b6 100644 --- a/src/calibre/manual/faq.rst +++ b/src/calibre/manual/faq.rst @@ -247,6 +247,18 @@ Also, :: must return ``CONFIG_SCSI_MULTI_LUN=y``. If you don't see either, you have to recompile your kernel with the correct settings. +My device is getting mounted read-only in linux, so |app| cannot connect to it? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +linux kernels mount devices read-only when their filesystems have errors. You can repair the filesystem with:: + + sudo fsck.vfat -y /dev/sdc + +Replace /dev/sdc with the path to the device node of your device. You can find the device node of your device, which +will always be under /dev by examining the output of:: + + mount + Why does |app| not support collection on the Kindle or shelves on the Nook? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From 25467ff22afa384a8945acee887b43ae053fd22d Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Mon, 29 Nov 2010 10:36:35 -0700 Subject: [PATCH 219/377] Fix #7729 (calibre network share not working) --- src/calibre/library/server/browse.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/library/server/browse.py b/src/calibre/library/server/browse.py index fbb35e598c..b6dbde4c77 100644 --- a/src/calibre/library/server/browse.py +++ b/src/calibre/library/server/browse.py @@ -368,7 +368,7 @@ class BrowseServer(object): for x, y, z in cats] main = u'<div class="toplevel"><h3>{0}</h3><ul>{1}</ul></div>'\ - .format(_('Choose a category to browse by:'), '\n\n'.join(cats)) + .format(_('Choose a category to browse by:'), u'\n\n'.join(cats)) return self.browse_template('name').format(title='', script='toplevel();', main=main) From eeda4caf10443bbdeeab1076cca2ca75e6ddb24d Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Mon, 29 Nov 2010 13:13:10 -0700 Subject: [PATCH 220/377] ... --- resources/{ => recipes}/nacionred.recipe | 0 setup/commands.py | 6 ++-- setup/installer/linux/__init__.py | 2 +- setup/installer/linux/freeze2.py | 44 +++++++++++++++--------- 4 files changed, 30 insertions(+), 22 deletions(-) rename resources/{ => recipes}/nacionred.recipe (100%) diff --git a/resources/nacionred.recipe b/resources/recipes/nacionred.recipe similarity index 100% rename from resources/nacionred.recipe rename to resources/recipes/nacionred.recipe diff --git a/setup/commands.py b/setup/commands.py index 06ab7b36f7..12fb5fe0af 100644 --- a/setup/commands.py +++ b/setup/commands.py @@ -18,7 +18,7 @@ __all__ = [ 'pypi_register', 'pypi_upload', 'upload_to_server', 'upload_user_manual', 'upload_to_mobileread', 'upload_demo', 'upload_to_sourceforge', 'upload_to_google_code', - 'linux32', 'linux64', 'linux', 'linux_freeze', 'linux_freeze2', + 'linux32', 'linux64', 'linux', 'linux_freeze', 'osx32_freeze', 'osx', 'rsync', 'push', 'win32_freeze', 'win32', 'win', 'stage1', 'stage2', 'stage3', 'stage4', 'publish' @@ -79,10 +79,8 @@ from setup.installer.linux import Linux, Linux32, Linux64 linux = Linux() linux32 = Linux32() linux64 = Linux64() -from setup.installer.linux.freeze import LinuxFreeze +from setup.installer.linux.freeze2 import LinuxFreeze linux_freeze = LinuxFreeze() -from setup.installer.linux.freeze2 import LinuxFreeze2 -linux_freeze2 = LinuxFreeze2() from setup.installer.osx import OSX osx = OSX() diff --git a/setup/installer/linux/__init__.py b/setup/installer/linux/__init__.py index 68f29362ee..3d759cff9a 100644 --- a/setup/installer/linux/__init__.py +++ b/setup/installer/linux/__init__.py @@ -17,7 +17,7 @@ class Linux32(VMInstaller): INSTALLER_EXT = 'tar.bz2' VM_NAME = 'gentoo32_build' VM = '/vmware/bin/gentoo32_build' - FREEZE_COMMAND = 'linux_freeze2' + FREEZE_COMMAND = 'linux_freeze' FREEZE_TEMPLATE = 'sudo python -OO setup.py {freeze_command}' diff --git a/setup/installer/linux/freeze2.py b/setup/installer/linux/freeze2.py index b30762f4b6..0379c0d839 100644 --- a/setup/installer/linux/freeze2.py +++ b/setup/installer/linux/freeze2.py @@ -16,21 +16,9 @@ SITE_PACKAGES = ['IPython', 'PIL', 'dateutil', 'dns', 'PyQt4', 'mechanize', 'sip.so', 'BeautifulSoup.py', 'cssutils', 'encutils', 'lxml', 'sipconfig.py', 'xdg'] - - -gcc = subprocess.Popen(["gcc-config", "-c"], stdout=subprocess.PIPE).communicate()[0] -chost, _, gcc = gcc.rpartition('-') -stdcpp = '/usr/lib/gcc/%s/%s/libstdc++.so.?'%(chost.strip(), gcc.strip()) -stdcpp = glob.glob(stdcpp)[-1] -is64bit = platform.architecture()[0] == '64bit' -arch = 'x86_64' if is64bit else 'i686' -ffi = '/usr/lib/libffi.so.5' if is64bit else '/usr/lib/gcc/i686-pc-linux-gnu/4.4.1/libffi.so.4' - - QTDIR = '/usr/lib/qt4' QTDLLS = ('QtCore', 'QtGui', 'QtNetwork', 'QtSvg', 'QtXml', 'QtWebKit', 'QtDBus') - binary_includes = [ '/usr/bin/pdftohtml', '/usr/lib/libwmflite-0.2.so.7', @@ -49,8 +37,6 @@ binary_includes = [ '/usr/lib/libjpeg.so.8', '/usr/lib/libxslt.so.1', '/usr/lib/libgthread-2.0.so.0', - stdcpp, - ffi, '/usr/lib/libpng14.so.14', '/usr/lib/libexslt.so.0', '/usr/lib/libMagickWand.so.4', @@ -66,7 +52,11 @@ binary_includes = [ ] binary_includes += [os.path.join(QTDIR, 'lib%s.so.4'%x) for x in QTDLLS] -class LinuxFreeze2(Command): +is64bit = platform.architecture()[0] == '64bit' +arch = 'x86_64' if is64bit else 'i686' + + +class LinuxFreeze(Command): def run(self, opts): self.drop_privileges() @@ -93,7 +83,21 @@ class LinuxFreeze2(Command): self.info('Copying libs...') os.mkdir(self.lib_dir) os.mkdir(self.bin_dir) - for x in binary_includes: + + gcc = subprocess.Popen(["gcc-config", "-c"], stdout=subprocess.PIPE).communicate()[0] + chost, _, gcc = gcc.rpartition('-') + gcc_lib = '/usr/lib/gcc/%s/%s/'%(chost.strip(), gcc.strip()) + stdcpp = gcc_lib+'libstdc++.so.?' + stdcpp = glob.glob(stdcpp)[-1] + ffi = gcc_lib+'libffi.so.?' + ffi = glob.glob(ffi) + if ffi: + ffi = ffi[-1] + else: + ffi = glob.glob('/usr/lib/libffi.so.?')[-1] + + + for x in binary_includes + [stdcpp, ffi]: dest = self.bin_dir if '/bin/' in x else self.lib_dir shutil.copy2(x, dest) shutil.copy2('/usr/lib/libpython%s.so.1.0'%self.py_ver, dest) @@ -268,7 +272,6 @@ class LinuxFreeze2(Command): base=`dirname $path` lib=$base/lib export LD_LIBRARY_PATH=$lib:$LD_LIBRARY_PATH - export QT_PLUGIN_PATH=$lib/qt_plugins export MAGICK_CONFIGURE_PATH=$lib/ImageMagick/config export MAGICK_CODER_MODULE_PATH=$lib/ImageMagick/modules-Q16/coders export MAGICK_CODER_FILTER_PATH=$lib/ImageMagick/modules-Q16/filters @@ -336,12 +339,19 @@ class LinuxFreeze2(Command): def set_helper(): __builtin__.help = _Helper() + def set_qt_plugin_path(): + from PyQt4.Qt import QCoreApplication + paths = list(map(unicode, QCoreApplication.libraryPaths())) + paths.insert(0, sys.frozen_path + '/lib/qt_plugins') + QCoreApplication.setLibraryPaths(paths) + def main(): try: sys.argv[0] = sys.calibre_basename set_default_encoding() set_helper() + set_qt_plugin_path() mod = __import__(sys.calibre_module, fromlist=[1]) func = getattr(mod, sys.calibre_function) return func() From 6f2a36949a9ce4d5f0311f70d6b4c2f8718c0e0f Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Mon, 29 Nov 2010 16:37:50 -0700 Subject: [PATCH 221/377] Fix #7733 (Updated gui.rst and associated image files) --- src/calibre/manual/customize.rst | 2 + src/calibre/manual/gui.rst | 278 ++++++++++++------ src/calibre/manual/images/actions.png | Bin 21712 -> 37220 bytes src/calibre/manual/images/add_books.png | Bin 4054 -> 2705 bytes .../manual/images/auto_author_sort.png | Bin 0 -> 1283 bytes src/calibre/manual/images/catalogs.png | Bin 8581 -> 13227 bytes src/calibre/manual/images/connect_share.png | Bin 0 -> 4929 bytes src/calibre/manual/images/convert_ebooks.png | Bin 4742 -> 3788 bytes src/calibre/manual/images/device.png | Bin 0 -> 3152 bytes .../manual/images/edit_meta_information.png | Bin 2555 -> 3574 bytes src/calibre/manual/images/fetch_news.png | Bin 3132 -> 3101 bytes src/calibre/manual/images/folder_device.png | Bin 0 -> 3685 bytes src/calibre/manual/images/jobs.png | Bin 3726 -> 1753 bytes src/calibre/manual/images/library.png | Bin 0 -> 5737 bytes src/calibre/manual/images/preferences.png | Bin 0 -> 4505 bytes src/calibre/manual/images/remove_books.png | Bin 3952 -> 4993 bytes src/calibre/manual/images/save_to_disk.png | Bin 4466 -> 3934 bytes src/calibre/manual/images/send_to_device.png | Bin 4292 -> 2896 bytes src/calibre/manual/images/show_tag_editor.png | Bin 0 -> 1094 bytes .../manual/images/swap_title_author.png | Bin 0 -> 1327 bytes src/calibre/manual/images/view.png | Bin 3575 -> 3101 bytes 21 files changed, 185 insertions(+), 95 deletions(-) create mode 100644 src/calibre/manual/images/auto_author_sort.png create mode 100644 src/calibre/manual/images/connect_share.png create mode 100644 src/calibre/manual/images/device.png create mode 100644 src/calibre/manual/images/folder_device.png create mode 100644 src/calibre/manual/images/library.png create mode 100644 src/calibre/manual/images/preferences.png create mode 100644 src/calibre/manual/images/show_tag_editor.png create mode 100644 src/calibre/manual/images/swap_title_author.png diff --git a/src/calibre/manual/customize.rst b/src/calibre/manual/customize.rst index 0d6f75b9cf..d7b4e931d9 100644 --- a/src/calibre/manual/customize.rst +++ b/src/calibre/manual/customize.rst @@ -104,6 +104,8 @@ A Hello World GUI plugin Here's a simple Hello World plugin for the |app| GUI. It will cause a box to popup with the message "Hellooo World!" when you press Ctrl+Shift+H +.. note:: Only available in calibre versions ``>= 0.7.32``. + .. code-block:: python from calibre.customize import InterfaceActionBase diff --git a/src/calibre/manual/gui.rst b/src/calibre/manual/gui.rst index a91124b214..28fd0307d3 100644 --- a/src/calibre/manual/gui.rst +++ b/src/calibre/manual/gui.rst @@ -12,6 +12,7 @@ for using |app| is to first add books to the library from your hard disk. to its internal database. Once they are in the database, you can perform a various :ref:`actions` on them that include conversion from one format to another, transfer to the reading device, viewing on your computer, editing metadata, including covers, etc. +Note that |app| creates copies of the files you add to it, your original files are left untouched. The interface is divided into various sections: @@ -27,7 +28,7 @@ Actions .. image:: images/actions.png :alt: The Actions Toolbar -The actions toolbar provides convenient shortcuts to commonly used actions. Most of the action buttons have little arrows next to them. By clicking the arrows, you can perform variations on the default action. +The actions toolbar provides convenient shortcuts to commonly used actions. Most of the action buttons have little arrows next to them. By clicking the arrows, you can perform variations on the default action. Please note that the actions toolbar will look slightly different depending on whether you have an ebook reader attached to your computer. .. contents:: :depth: 1 @@ -39,99 +40,51 @@ Add books ~~~~~~~~~~~~~~~~~~ .. |adbi| image:: images/add_books.png -|adbi| The :guilabel:`Add books` action has three variations, accessed by the arrow next to the button. +|adbi| The :guilabel:`Add books` action has five variations, accessed by the clicking the down arrow on the right side of the button. 1. **Add books from a single directory**: Opens a file chooser dialog and allows you to specify which books in a directory should be added. This action is *context sensitive*, i.e. it depends on which :ref:`catalog <catalogs>` you have selected. If you have selected the :guilabel:`Library`, books will be added to the library. If you have selected the ebook reader device, the books will be uploaded to the device, and so on. - 2. **Add books recursively (One book per directory)**: Allows you to choose a directory. The directory and all its sub-directories are scanned recursively and any ebooks found are added to the library.The algorithm assumes that each directory contains a single book. All ebook files in a directory are assumedto be the same book in different formats. This action is the inverse of the :ref:`Save to disk <save_to_disk_multiple>` action, i.e. you can :guilabel:`Save to disk`, delete the books and re-add them with no lost information (except date). + 2. **Add books from directories, including sub-directories (One book per directory, assumes every ebook file is the same book in a different format)**: Allows you to choose a directory. The directory and all its sub-directories are scanned recursively and any ebooks found are added to the library. The algorithm assumes that each directory contains a single book. All ebook files in a directory are assumedto be the same book in different formats. This action is the inverse of the :ref:`Save to disk <save_to_disk_multiple>` action, i.e. you can :guilabel:`Save to disk`, delete the books and re-add them with no lost information (except date). - 3. **Add books recursively (Multiple books per directory)**: Allows you to choose a directory. The directory and all its sub-directories are scanned recursively and any ebooks found are added to the library.The algorithm assumes that each directory contains many books. All ebook files with the same name in a directory are assumed to be the same book in different formats. This action is the inverse of the :ref:`Save to disk <save_to_disk_single>` action, i.e. you can :guilabel:`Save to disk`, delete the books and re-add them with no lost information (except date). + 3. **Add books directories, including sub-directories (Multiple books per directory, assumes every ebook file is a different book)**: Allows you to choose a directory. The directory and all its sub-directories are scanned recursively and any ebooks found are added to the library. The algorithm assumes that each directory contains many books. All ebook files with the same name in a directory are assumed to be the same book in different formats. Ebooks with different names are added as different books. This action is the inverse of the :ref:`Save to disk <save_to_disk_single>` action, i.e. you can :guilabel:`Save to disk`, delete the books and re-add them with no lost information (except date). + 4. **Add empty book. (Book Entry with blank formats)**: Allows you to create a blank book record. This can be used to then manually fill out the information about a book that you may not have yet in your collection. + + 5. **Add by ISBN**: Allows you to add one or more books by entering just their ISBN into a list or pasting the list of ISBNs from your clipboard. + +The :guilabel:`Add books` action can read metadata from a wide variety of e-book formats. In addition it tries to guess metadata from the filename. +See the :ref:`config_filename_metadata` section, to learn how to configure this. -The :guilabel:`Add books` action can read metadata from the following ebook formats: ``LRF, EPUB, LIT, MOBI, RTF, PDF, PRC, HTML``. In addition it tries to guess metadata from the filename. See the :ref:`config_filename_metadata` section, to learn how to configure this. - -To add a new format to an existing book, use the :ref:`edit_meta_information` action. - -.. _remove_books: - -Remove books -~~~~~~~~~~~~~~~~~~~~~ -.. |rbi| image:: images/remove_books.png - -|rbi| The :guilabel:`Remove books` action deletes books permanently, so use it with care. It is *context sensitive*, i.e. it depends on which :ref:`catalog <catalogs>` you have selected. If you have selected the :guilabel:`Library`, books will be removed from the library. If you have selected the ebook reader device, the books will be removed from the device. To remove only a particular format for a given book use the :ref:`edit_meta_information` action. +To add an additional format for an existing book, use the :ref:`edit_meta_information` action. .. _edit_meta_information: -Edit meta information +Edit metadata ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. |emii| image:: images/edit_meta_information.png -|emii| The :guilabel:`Edit meta information` action has two variations, accessed by the arrow next to the button. +|emii| The :guilabel:`Edit metadata` action has six variations, which can be accessed by clicking the down arrow on the right side of the button. 1. **Edit metadata individually**: This allows you to edit the metadata of books one-by-one, with the option of fetching metadata, including covers from the internet. It also allows you to add/remove particular ebook formats from a book. For more detail see :ref:`metadata`. - 2. **Edit metadata in bulk**: This allows you to edit common metadata fields for large numbers of books simulataneously. It operates on all the books you have selected in the :ref:`Library view <search_sort>`. + 3. **Download metadata and covers**: Downloads metadata and covers (if available), for the books that are selected in the book list. + 4. **Download only metadata**: Downloads only metadata (if available), for the books that are selected in the book list. + 5. **Download only covers**: Downloads only covers (if available), for the books that are selected in the book list. + 6. **Download only social metadata**: Downloads only social metadata such as tags and reviews (if available), for the books that are selected in the book list. + 7. **Merge Book Records**: Gives you the capability of merging the metadata and formats of two or more book records together. You can choose to either delete or keep the records that were not clicked first. -.. _send_to_device: - -Send to device -~~~~~~~~~~~~~~~~~~~~~~~~ -.. |stdi| image:: images/send_to_device.png - -|stdi| The :guilabel:`Send to device` action has two variations, accessed by the arrow next to the button. - - 1. **Send to main memory**: The selected books are transferred to the main memory of the ebook reader. - 2. **Send to card**: The selected books are transferred to the storage card on the ebook reader. - -You can control the file name and folder structure of files sent to the device by setting up a template in -:guilabel:`Preferences->Import/Export->Sending books to devices`. Also see :ref:`templatelangcalibre`. - -.. _save_to_disk: - -Save to disk -~~~~~~~~~~~~~~~~~~~~~~~~~ -.. |svdi| image:: images/save_to_disk.png - -|svdi| The :guilabel:`Save to disk` action has two variations, accessed by the arrow next to the button. - -.. _save_to_disk_multiple: - - 1. **Save to disk**: This will save the selected books to disk organized in directories. The directory structure looks like:: - - Author - Title - Book Files - -.. _save_to_disk_single: - - 2. **Save to disk in a single directory**: The selected books are saved to disk in a single directory. - -All available formats as well as metadata is stored to disk for each selected book. Metadata is stored in an OPF file. - -Saved books can be re-imported to the library without any loss of information by using the :ref:`Add books <add_books>` action. - -You can control the file name and folder structure of files saved to disk by setting up a template in -:guilabel:`Preferences->Import/Export->Saving books to disk`. Also see :ref:`templatelangcalibre`. - - -.. _fetch_news: - -Fetch news -~~~~~~~~~~~~~~~~~ -.. |fni| image:: images/fetch_news.png - -|fni| The :guilabel:`Fetch news` action downloads news from various websites and converts it into an ebook that can be read on your ebook reader. Normally, the newly created ebook is added to your ebook library, but if an ebook reader is connected at the time the download finishes, the news is uploaded to the reader directly. - -The :guilabel:`Fetch news` action uses simple recipes (10-15 lines of code) for each news site. To learn how to create recipes for your own news sources, see :ref:`news`. - + .. _convert_ebooks: Convert e-books ~~~~~~~~~~~~~~~~~~~~~~ .. |cei| image:: images/convert_ebooks.png -|cei| Ebooks can be converted from a number of formats into the LRF format (for the SONY Reader). Note that ebooks you purchase will typically have `Digital Rights Management <http://bugs.calibre-ebook.com/wiki/DRM>`_ *(DRM)*. |app| will not convert these ebooks. For many DRM formats, it is easy to remove the DRM, but as this is illegal, you have to find tools to liberate your books yourself and then use |app| to convert them. +|cei| Ebooks can be converted from a number of formats into whatever format your e-book reader prefers. +Note that ebooks you purchase will typically have `Digital Rights Management <http://bugs.calibre-ebook.com/wiki/DRM>`_ *(DRM)*. +|app| will not convert these ebooks. For many DRM formats, it is easy to remove the DRM, but as this may be illegal, +you have to find tools to liberate your books yourself and then use |app| to convert them. For most people, conversion should be a simple 1-click affair. But if you want to learn more about the conversion process, see :ref:`conversion`. @@ -141,29 +94,180 @@ The :guilabel:`Convert E-books` action has three variations, accessed by the arr 2. **Bulk convert**: This allows you to specify options only once to convert a number of ebooks in bulk. - 3. **Create catalog**: This action allows you to generate a complete listing with all metadata of the books in your library, in several formats, like XML, CSV, EPUB and MOBI. The catalog will contain all the books showing in the library view currently, so you can use the search features to limit the books to be catalogued. In addition, if you select multiple books using the mouse, only those books will be added to the catalog. If you generate the catalog in an e-book format such as EPUB or MOBI, the next time you connect your e-book reader, the catalog will be automatically sent to the device. For details on how catalogs work, see `here <http://www.mobileread.com/forums/showthread.php?p=755468#post755468>`_. - + 3. **Create catalog**: This action allows you to generate a complete listing with all metadata of the books in your library, + in several formats, like XML, CSV, BiBTeX, EPUB and MOBI. The catalog will contain all the books showing in the library view currently, + so you can use the search features to limit the books to be catalogued. In addition, if you select multiple books using the mouse, + only those books will be added to the catalog. If you generate the catalog in an e-book format such as EPUB or MOBI, + the next time you connect your e-book reader, the catalog will be automatically sent to the device. + For details on how catalogs work, see `here <http://www.mobileread.com/forums/showthread.php?p=755468#post755468>`. + .. _view: View ~~~~~~~~~~~ .. |vi| image:: images/view.png -|vi| The :guilabel:`View` action displays the book in an ebook viewer program. |app| has a builtin viewer for the LRF format. For other formats it uses the default operating system application. If a book has more than one format, you can view a particular format by clicking the arrow next to the :guilabel:`View` button. +|vi| The :guilabel:`View` action displays the book in an ebook viewer program. |app| has a builtin viewer for the most e-book formats. +For other formats it uses the default operating system application. You can configure which formats should open with the internal viewer via +Preferences->Behavior. If a book has more than one format, you can view a particular format by clicking the down arrow +on the right of the :guilabel:`View` button. + +.. _send_to_device: + +Send to device +~~~~~~~~~~~~~~~~~~~~~~~~ +.. |stdi| image:: images/send_to_device.png + +|stdi| The :guilabel:`Send to device` action has eight variations, accessed by clicking the down arrow on the right of the button. + + 1. **Send to main memory**: The selected books are transferred to the main memory of the ebook reader. + 2. **Send to card (A)**: The selected books are transferred to the storage card (A) on the ebook reader. + 3. **Send to card (B)**: The selected books are transferred to the storage card (B) on the ebook reader. + 4. **Send and delete from library>**: The selected books are transferred to the selected storage location on the device, and then **deleted** from the Library. + 5. **Send Specific format>**: The selected books are transferred to the selected storage location on the device, in the format that you specify. + 6. **Eject device**: The device is detached from |app|. + 7. **Set default send to device action>**: This action allows you to Specify which of the option 1) through 6) above will be the default action when you click the main button. + 8. **Fetch Annotations**: This is an experimental action which will transfer annotations you may have made on an ebook on your device, and add those annotations to the comments metadata of the book in the |app| library + +You can control the file name and folder structure of files sent to the device by setting up a template in +:guilabel:`Preferences->Import/Export->Sending books to devices`. Also see :ref:`templatelangcalibre`. + +.. _fetch_news: + +Fetch news +~~~~~~~~~~~~~~~~~ +.. |fni| image:: images/fetch_news.png + +|fni| The :guilabel:`Fetch news` action downloads news from various websites and converts it into an ebook that can be read on your ebook reader. Normally, the newly created ebook is added to your ebook library, but if an ebook reader is connected at the time the download finishes, the news is also uploaded to the reader automatically. + +The :guilabel:`Fetch news` action uses simple recipes (10-15 lines of code) for each news site. To learn how to create recipes for your own news sources, see :ref:`news`. + +The :guilabel:`Fetch news` action has three variations, accessed by clicking the down arrow on the right of the button. + + 1. **Schedule news download**: This action allows you to schedule the download of of your selected news sources from a list of hundreds of available. Scheduling can be set individually for each news source you select and the scheduling is flexible allowing you to select specific days of the week or a frequency of days between downloads. + 2. **Add a custom news service**: This action allows you to create a simple recipe for downloading news from a custom news site that you wish to access. Creating the recipe can be as simple as specifying an RSS news feed URL, or you can be more prescriptive by creating python based code for the task, see :ref:`news`. + 3. **Download all scheduled news sources**: This action causes |app| to immediately begin to download all news sources that you have previously scheduled. + + +.. _library: + +Library +~~~~~~~~~~~~~~~~~ +.. |lii| image:: images/library.png + +|lii| The :guilabel: `Library` action allows you to create, switch between, rename or delete a Library. |app| allows you to create as many libraries as you wish. You coudl for instance create a fiction library, a non fiction library, a foreign language library a project library, basically any structure that suits your needs. Libraries are the highest organizational structure within |app|, each library has its own set of books, tags, categories and base storage location. + + 1. **Switch\Create library..**: This action allows you to; a) connect to a pre-existing |app| library at another location from your currently open library, b) Create and empty library at a nw location or, c) Move the current Library to a newly specified location. + 2. **Quick Switch>**: This action allows you to switch between libraries that have been registered or created within |app|. + 3. **Rename Library>**: This action allows you to rename a Library. + 4. **Delete Library>**: This action allows you to **permanenetly delete** a Library. + 5. **<calibre library>**: Actions 5, 6 etc .. give you immediate switch access between multiple Libraries that you have created or attached to. + +.. _device: + +Device +~~~~~~~~~~~~~~~~~ +.. |dvi| image:: images/device.png + +|dvi| The :guilabel:`Device` action allows you to view the books in the main memory or storage cards of your device, or to eject the device (detach it from |app|). +This icon shows up automatically on the main |app| toolbar when you connect a supported device. You can click on it to see the books on your device. You can also drag and drop books from your |app| library onto the icon to transfer them to your device. Conversely, you can drag and drop books from your device onto the |app| icon on the toolbar to transfer books from your device to the |app| library. + + +.. _save_to_disk: + +Save to disk +~~~~~~~~~~~~~~~~~~~~~~~~~ +.. |svdi| image:: images/save_to_disk.png + +|svdi| The :guilabel:`Save to disk` action has five variations, accessed by the arrow next to the button. + +.. _save_to_disk_multiple: + + 1. **Save to disk**: This will save the selected books to disk organized in directories. The directory structure looks like:: + + Author_(sort) + Title + Book Files + + You can control the file name and folder structure of files saved to disk by setting up a template in + :guilabel:`Preferences->Import/Export->Saving books to disk`. Also see :ref:`templatelangcalibre`. + +.. _save_to_disk_single: + + 2. **Save to disk in a single directory**: The selected books are saved to disk in a single directory. + + For 1. and 2. All available formats as well as metadata is stored to disk for each selected book. Metadata is stored in an OPF file. + + Saved books can be re-imported to the library without any loss of information by using the :ref:`Add books <add_books>` action. + + 3. **Save only *<your preferred>* format to disk**: The selected books are saved to disk in the directory structure as shown in (1.) but only in your preferred ebook format you can set <your preferred> format in :guilabel:`Preferences->Behaviour->Preferred output format` + + 4. **Save only *<your preferred>* format to disk in a single directory**: The selected books are saved to disk in a single directory but only in <your preferred> ebook format you can set <your preferred> format in :guilabel:`Preferences->Behaviour->Preferred output format` + + 5. **Save single format to disk ..**: The selected books are saved to disk in the directory structure as shown in (1.) but only in the format you select from the pop-out list. There are currently 35 formats available and new ones are being added all the time. + +.. _connect_share: + +Connect/Share +~~~~~~~~~~~~~~~~~ +.. |csi| image:: images/connect_share.png + +|csi| The :guilabel:`Connect/Share` action allows you to manually connect to a device or folder on your computer, it also allows you to set up you |app| library for access via a web browser, or email. + + The :guilabel:`Connect/Share` action has four variations, accessed by clicking the down arrow on the right of the button. + + 1. **Connect to folder**: This action allows you to connect to any folder on your computer as though it were a device and use all the facilities |app| has for devices with that folder. Useful if your device cannot be supported by |app| but is available as a USB disk. + + 2. **Connect to iTunes**: Allows you to connect to your iTunes books database as though it were a device. Once the books are sent to iTunes, you can then use iTunes to make them available on your various iDevices. Useful if you would rather not have |app| send books to your iDevice directly. + + 3. **Start Content Server**: This action causes |app| to start up its built-in web server. When this is started, your |app| library will be accessible via a web browser from the internet (if you choose). You can configure how the web server is accessed by setting preferences at :guilabel:`Preferences->Sharing->Sharing over the net` + + 4. **Setup email based sharing of books**: This action allows you to setup |app| to share books (and news feeds) by email. After setting up email addresses for this option |app| will send news updates and book updates to the entered email addresses. You can configure how the |app| sends email by setting preferences at :guilabel:`Preferences->Sharing->Sharing books by email`. Once you have setup one or more email addresses, this menu entry get replaced by menu entries to send books to the setup email addresses. + +.. _remove_books: + +Remove books +~~~~~~~~~~~~~~~~~~~~~ +.. |rbi| image:: images/remove_books.png + +|rbi| The :guilabel:`Remove books` action **deletes books permanently**, so use it with care. It is *context sensitive*, i.e. it depends on which :ref:`catalog <catalogs>` you have selected. If you have selected the :guilabel:`Library`, books will be removed from the library. If you have selected the ebook reader device, the books will be removed from the device. To remove only a particular format for a given book use the :ref:`edit_meta_information` action. Remove books also has five variations which can be accessed by clicking the down arrow on the right side of the button. + + 1. **Remove Selected Books**: Allows you to **permanently** remove all books that are selected in the book list. + + 2. **Remove files of a specified format from selected books..**: Allows you to **permanently** remove ebook files of a specified format, from books that are selected in the book list. + + 3. **Remove all files of a specified format, except..**: Allows you to **permanently** remove ebook files of a multiple formats except a given format, from books that are selected in the book list. + + 4. **Remove covers from selected books**: Allows you to **permanently** remove cover images files, from books that are selected in the book list. + + 5. **Remove matching books from device**: Allows you to remove ebook files from a connected device, that match the books that are selected in the book list. + +.. note:: + Note that when you use Remove books to delete books from your |app| library, the book record is permanently deleted, but, on (Windows and OS X) the files are placed into the recycle bin, so you can recover them if you change your mind. + +.. _configuration: + +Preferences +--------------- +.. |cbi| image:: images/preferences.png + +The Preferences Action allows you to change the way various aspects of |app| work. To access it, click the |cbi|. + .. _catalogs: Catalogs ---------- .. image:: images/catalogs.png -A *catalog* is a collection of books. |app| can manage three different catalogs: +A *catalog* is a collection of books. |app| can manage two types of different catalogs: - 1. **Library**: This is a collection of books stored in a database file on your computers harddisk. + 1. **Library**: This is a collection of books stored in your |app| library on your computer - 2. **Reader**: This is a collection of books stored in the main memory of your ebook reader. It will be available when you connect the reader to your computer. - - 3. **Card**: This is a collection of books stored on the storage card in your reader. + 2. **Device**: This is a collection of books stored in the main memory of your ebook reader. It will be available when you connect the reader to your computer. + - In addition, you can see the books on the storage card (if any) in your reader device. + +Many operations, like Adding books, deleting, viewing, etc. are context sensitive. So, for example, if you click the View button when you have the **Device** catalog selected, |app| will open the files on the device to view. If you have the **Library** catalog selected, files in your |app| library will be opened instead. .. _search_sort: @@ -274,14 +378,6 @@ Searching for ``no`` or ``unchecked`` will find all books with ``No`` in the col :guilabel:`Advanced Search Dialog` -You can test for the number of items in multiple-value columns, such as tags, formats, authors, and tags-like custom columns. This is done using a syntax very similar to numeric tests (discussed above), except that the relational operator begins with a ``#`` character. For example:: - - tags:#>3 will give you books with more than three tags - tags:#!=3 will give you books that do not have three tags - authors:#=1 will give you books with exactly one author - #cust:#<5 will give you books with less than five items in custom column #cust - formats:#>1 will give you books with more than one format - Saving searches ----------------- @@ -289,14 +385,6 @@ Saving searches Now, you can access your saved search in the Tag Browser under "Searches". A single click will allow you to re-use any arbitrarily complex search easily, without needing to re-create it. -.. _configuration: - -Preferences ---------------- -The Preferences dialog allows you to change the way various aspects of |app| work. To access it, click the |cbi|. - -.. |cbi| image:: images/configuration.png - .. _config_filename_metadata: Guessing metadata from file names diff --git a/src/calibre/manual/images/actions.png b/src/calibre/manual/images/actions.png index efee432da25a21b367a3cffb6f35f7e50e6e6436..90f1ec4567c4fb4567b4232fbcfa929d53586d8e 100644 GIT binary patch literal 37220 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 literal 21712 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 LrVlE$?8E*C)+eu@ diff --git a/src/calibre/manual/images/add_books.png b/src/calibre/manual/images/add_books.png index 1a0b341bbd2627ba3f66c61538b4b57dc7db6876..624a5bf8a5febba4f76446c37c4c318e06a1ace6 100644 GIT binary patch literal 2705 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 literal 4054 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 IM6N<$f~+Xh{{R30 diff --git a/src/calibre/manual/images/auto_author_sort.png b/src/calibre/manual/images/auto_author_sort.png new file mode 100644 index 0000000000000000000000000000000000000000..9950b77c95fe044299ab13370efe3b7b0911730b GIT binary patch literal 1283 zcmeAS@N?(olHy`uVBq!ia0vp^;y^6M!3HF?%h*|g6k~CayA#8@b22Z19F}xPUq=Rp zjs4tz5<!xj1s;*b3=DinK$vl=HlH+5kiEpy*OmPimk_HQ*WW(2GO&<qM2TZ*Nk)DV z!^(AMJb*$xB|ssU)Z*l#%z~24{5%F>PDN#)I2TCVIlrK?C^J2ygkcT;87rVDA6T>~ zH4&s#p(HammBI8oKPOOz6C@LypH@<ySd_{TTks#GoEvO-W^r;(B2Z}&!}bGP`hmh6 zAmQ-DqP)z!bcO@c&)R`v>=6B>MaiiQU;j71hADH-&&^HED`EI{X4-zB7#m1gNM=b+ zD#MC*m(+nGiXahZn3F<4PBJnuG_V383k3s1D<exQQ-h__Zz32Nm|Hwu978<3w@$t9 zKRZ<7xc&Rv>vaFRF0?<^uc(%?xv}xgPS^EUjvSe><7js8_Y+eu?s$`LaIwO4Z=n8} zGm8ujFH4KF&yJoGX6~>_k;^DTQ+C6@q}=<{zSq9C)ZZeuqDf`mli8oQJ-3<vdCqg2 z^Ojz&CjXW%3wd~0zUK6o=F(HUcD`RKQ#SQ@6T8LtU)*AcoA&>D=Q=Ao%Cfj>!nv^X z`yO_$w0R#RqdwcO@ZZ|YD<+B5uPFHTG<gfFP0YTU){iHxRg5c*mY%Agv}L-?$;oG% zW-GnPWi-F}mFuVz<KiWTb&surg_GB;O`X_yt9!}bCmwOUd9|JQmrY2VA!B*x@MZtG zN8WBI{QX>F^2YfdYu7|P-tAem>g=bQ$+>G^6j^@!HS6R|MmF}oqEAPJx0qGWoH^&g zwXdu1#P=l6SZ2C?;;Z0%?mGg?cl%2|9$s^B=fz1Jt-M#$l!Z7A4K8@6N6$F&=KT@3 zead#<)t{EiW(KcsD|oqgj!0)q=h>HE<Tou`Km7tPvumg>YZTL$Z?3L4<Wwj3d_Mg` z^_`#p!px}L#$O?uuOHeZd0uV%?4Rsvdu5gGZC~z@zG=<6Wh<`T`Zg<i#=qVte`5RW z|37l8cpdX!df&^Rlin%l+sunHv-p!@@3zlrd%E&gk<`WcSDvg}oxc6CgE!lq$dv}u z);##Us>Xip=cB%JANHH385QWS=Q#QAzN+QbZAU+MS~hcsd$a82>g+lBr0L)VV?RDk z)^q(T8&-0yn($`nn=;mR-=msAW>s5~+n+~2P+z2Vv7vjry?&5J_=nvhZSzWlw5C}W zui~D5S+Bt?h`+S%kMij=f0+($=npv3y-)JZv71V4yn%|gYo+4(sy~=(^4LFjG3?4n zy?g5A%q2GtZe@}0Rr8o>*7s$raNhUD9PgK|4f)%dcedE@$H}RzyO>qi&HZYq^5FAH z6XDO<kN&IflkyJ!SoKo+jY7!<b^je~YY$0_Pt;*!oW9%p`KKq>gJO1-_H%EPF`v%k z6zlj){`~^g7u%kNB;Nl0E96et!b4sa#mQ#p+m%oM*_CwR@@>EPdh2}-lQl#(evRF7 zxOgVx=|^3*a&`^Qb82EX8yBpZobg3LuAe#hO@{uYZ<CZO!(vYyf3)@czGF}GANEdX z<NP`M-^PG4>4>wUmH%fKZi$)Yf8S;+<8-(69oI7gV?JHoU11)uxG=P3%jM{Y#vi$^ g+T7>Q&^N1Rd~(=-wUgs%P;tlL>FVdQ&MBb@01T`_mjD0& literal 0 HcmV?d00001 diff --git a/src/calibre/manual/images/catalogs.png b/src/calibre/manual/images/catalogs.png index 8e5ba480e30141723ec1be9dfdb856eb755e8576..49357d15b2f7bde2cbaa51512d97731a010217d3 100644 GIT binary patch literal 13227 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 Blz#vK literal 8581 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 diff --git a/src/calibre/manual/images/connect_share.png b/src/calibre/manual/images/connect_share.png new file mode 100644 index 0000000000000000000000000000000000000000..0275089d1cf512635fd0fd73cb18f65537cf791e GIT binary patch literal 4929 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 literal 0 HcmV?d00001 diff --git a/src/calibre/manual/images/convert_ebooks.png b/src/calibre/manual/images/convert_ebooks.png index e82725e17079684e79fc5ca4da2469af12ba9a65..2218a541b8d15504a1da075b8f7e84806e08d913 100644 GIT binary patch literal 3788 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 literal 4742 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 U67gQu5C8xG07*qoM6N<$g5mZcjsO4v diff --git a/src/calibre/manual/images/device.png b/src/calibre/manual/images/device.png new file mode 100644 index 0000000000000000000000000000000000000000..ce16ea67b49470ae75a4f100b72257c1e01514be GIT binary patch literal 3152 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 literal 0 HcmV?d00001 diff --git a/src/calibre/manual/images/edit_meta_information.png b/src/calibre/manual/images/edit_meta_information.png index 061653a60acba6452d61d27acbc148a8e2270c60..9f6805076746311b3aff27b062c8d06bfb7836fb 100644 GIT binary patch literal 3574 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 literal 2555 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 P!<Z~gtwD_@UP=D|0_o@4 diff --git a/src/calibre/manual/images/fetch_news.png b/src/calibre/manual/images/fetch_news.png index f93108db4963f7c6487fd6a26032595f907f87ca..a0116b15aa7765dd444bb85526434c6c6fa76a0b 100644 GIT binary patch literal 3101 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 literal 3132 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 WFykG)QH)Cf0000<MNUMnLSTY6Bm+7C diff --git a/src/calibre/manual/images/folder_device.png b/src/calibre/manual/images/folder_device.png new file mode 100644 index 0000000000000000000000000000000000000000..87b2d7862f27fe5891c00c3db90ed750ba7a74e9 GIT binary patch literal 3685 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 literal 0 HcmV?d00001 diff --git a/src/calibre/manual/images/jobs.png b/src/calibre/manual/images/jobs.png index ab0716af481147c48494a19cfc2a0804d8f9fa20..2c70a947d447c386ff426b1c9b5a9fe38a93de86 100644 GIT binary patch literal 1753 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 literal 3726 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 diff --git a/src/calibre/manual/images/library.png b/src/calibre/manual/images/library.png new file mode 100644 index 0000000000000000000000000000000000000000..781c87430fa84e52d3ec05eec4186ec5d69955db GIT binary patch literal 5737 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 bUkmv^J=K?7D{|~f00000NkvXXu0mjfVi>>B literal 0 HcmV?d00001 diff --git a/src/calibre/manual/images/preferences.png b/src/calibre/manual/images/preferences.png new file mode 100644 index 0000000000000000000000000000000000000000..ad939d238872713ae0f7ea8df48ac7520a0639a2 GIT binary patch literal 4505 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 literal 0 HcmV?d00001 diff --git a/src/calibre/manual/images/remove_books.png b/src/calibre/manual/images/remove_books.png index 9d798394d90e1f93ab06db4b56b3aa688c6d4673..065de14be503302c401f5eafc4ed565d659189cf 100644 GIT binary patch literal 4993 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 DmqwaN literal 3952 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 KMNUMnLSTZ}Lx^_( diff --git a/src/calibre/manual/images/save_to_disk.png b/src/calibre/manual/images/save_to_disk.png index 74db6ba6b1b4be426b008cf8a95be12013d059f7..a4d3137349a4a4871659952f72cf27b853379918 100644 GIT binary patch literal 3934 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 literal 4466 zcmV-&5smJNP)<h;3K|Lk000e1NJLTq003qH002t}1^@s6g6;B(00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iO7` z0xC1MR|dxb000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}000opNkl<Z zc-rlqdvqLiy}&;^kKNf<Hk(J2Y)Y~XZ7O}Yw2=}xh!t*C5Yc+C*Yc)vcwBoA2q>Zy z1uS||@O4niQ7rWWS3z6Q%RO8@idP<OpthwnC2g7}=_YB?-R%20Gxv{lCcB&M%S)i% z?Dw2G^V`{(+1cM`zK`Gc_nlo!Fc{D&%V{S<xeLl*%5n-KP3FlHi6pPRww+KYL|<PY zOO`Cb?RMjGxv<%6=(>)@GPbX-gT*qo1|6^*U5|^VX{1tVbbWlguItBK0K(xg+qZA0 zsi_H%$HRH&Ek#k3sSPF^4r8;~c;}sWSg~RS;cyt2%SCf@Gqts~q|<5A=`@01A(KfT zg)s)mVzH3TX3Y*(6opJC!`{7J2!dcjIi6^mMmn8FQ55#=+edqQJK=Ej?*fcvGM)dn zZQB6}S(cF`2~|}Q1cB=6YV3A9nx>f@2s*lMXn=<0s48jNSleQ;plKT6aD-qmh^nfH zqG-Y~)|pHOhr@x>=|s~sbX`XjMRK_unM?**h9yfDPIXh3pt7>Y?Bs!g0VGKx91bIj zV!<K^g1Ht1!92#0WHM=*z`c9-a=`@`lr(3tSd7ljP8Ka%WNy<m4M7mF*=$52!LpB0 zRSij!5Cnm6I81kUHy2%Wk=gM^=jXSL*Tv#?yGbMxsH%#?;Xsn43EHCTI*Ou@&1R8h z+0+<K)6BN2s%0=1i(rE3?d_$yx*AE6Oc42CO05l16a~NEPk(<ud-m+1xw(0QpE1@} ztCd_XXKJ4TW_)cagAql^1e43<sHv$z6vbm|ODV0Xsi~o+riMr)LO2{I5{WQx-aPaD zd@#DMo6(-(e{@|h03?c18H_AjO%MPT6%_?$?08yZx7%rGXh0N2hK7b19v-H*x0m_z z=Oc>Z1pkuXHq2Z;oUzc{f-K8rFm}7WKtntpPr>U_n&NOcsI9HVYPAxN#~B(LVrXcH zTrNjzYwH9vm;c%TpePEesv^ts1TczXFN3k$?WTsvvW&ywD9|ADA|#25iV7+#D-lJJ zWHL#2cefc9S5{V@@J=^6-eR#}x7$l<jHYRS7h{-71*2&?vMie*6h$!|zu}~vPA3%= z71(SxG)*HGi*fMaL2|jAsbPkbKNWE}9A=1ItT9%r)of2mF!6Z8bo>^Jh5Gt>ve_(t zzuz=*s;ZJor5G3(V03g8UDt6soj4qhQ~Ippj&?eo1>5omtFkPUOr~%+>{Am=BoaZA zY^Hhf`~BuPA`}V{jYdf(lO&T#WLd`TcK;v3^1{2{<#J6J8yV5r*Z?<j+Jl+2>~b_3 zLzZQ7xg61G6pO`zAP9_%j4(Pn%E-tF*=&}|%1WG0=Lr*%CrVc4i`8mHlB9xgJQ|In zsw$Es5sk*Cu8&Ej#uAi|Jn{&NqHyuW7c+0(JTy&XaBz^?+S-EA`^h9FkEJd7$5|{E zDl01)9v;T+b|VM^J9g~gx4-=@qA0R<?OKw_)YJu&%W2r{b}qZ@GUD+#bLY-Q(=>W} zd-3^v6QKO9U`l=|Nus8vhQ7W&nwpxJKYu=nL;{b;gQ6(pa_ZCtW8A%S=gu`>_xAQu zRaI3o&-HGC85`Wnc)eZ|&hq8U3nIqTT_(-P<cGPst`mtwNTpJ^T(0B#ic;H*jPr^7 zQ1SaNmy2XFNi-TQ(kOW<gDD)`_4M>mS66q^4qcKYL{TK2P7{m8h{xmPaye`^n>iLa znWe6-j-H;LqCmkibxoPgrkHndI-NFWFH5EBi`Rl6FgQ4f!{NYcwH9d0=;$b_s^ax} zNu^Q~!s6n9!0mPu3WZ3g(^#$6qt|Aex*C(8rwWBaW@i+qNJ=fcckjmKav@35g!e>I zM3!at@84hY9HmT~&1NGM3Yo9}9uk?80>&6&8yyslj?J^52#BU>jE;_yNF>bjlv)6~ zy1IzR<Hy`5ACRIbM59p?mT_%U&Xh%?u>y0VX_|TWAJ1VMo#ylT5Jiz}Hhav#!sqju zkc;PbikJLkrg3~cp1|dDPAxEzNEAu3o1N}-I?Y^|amODks*+`yY15|B($YdAksufh zn!dzlvr%1LjjrotvsnZ|I3XB85KvVWkH=$vhA4`J!_lb+CK`?5^*YQBuc)YCWMst5 z8lNcKO{dcwIB<aa`g&SgT1=mi$z+H`A`A`=nwppoAwTtR1Pr-c4pmjDsHiZ{FNz|g zqd}m4YJo{4QdCu0ObxNwZ049E-`5-q3_vUvW8c1g1xd={)JrKX$@g;>i-lw|iQDZq zrxuJc(dnL+nG`TaB}#q~gxBjuRn?MyrWBY`nSo*;$MY-3VuaQP6k~n5r)4GujILXX zDpSTn)?6-!)oLZ3PL~XAjcq3ab23l_LBMLYVzpY$C@de&>7JIE6flOpFNR}GG288S zjvP61T<s|Zrnrj608k7?k|exdFWGFCbUHl&%GfcdcRl^2T%D1mECnYPi=ikAGiJ=d zYPF(i8mg+E(vm-3Dc)wY*=TNV#%8k-kH-r>yLg&;%4v)shy|UI4@Xs10)YU{&CM)W zuz)}yKwn=UnM~%SHKvr=5=D`wrY7p^>j{NI1Ofq5JB;(>*8y0q?|oXPs>*l5eS*Qj z<blbz>7`6mCX=DFvy+B~2K;_Mjg5^20s#Vn0O4@>l)!jA9(+C@KA#U&Rq5&JVQ6T` zjJ}FZm~mak4Ci|(!C>IHa11Du0w%u-zc??JuQi&c(bv~Ue}6xXjg2%mHqzA8L^_@3 z$dMyNA`#;8IH^?1jPfK&LQxbP4hJ5OhpMV7(`4=6zn_7D0W%4jpCu@+m@&4$A13Ws zaPpzRBs_)@43089JXXrOZQC}Qnwn^BZJpp3O69g(E*G`6wRpW=bGEURB$G)ZkqDts zh~eR3;_<ktA;pVPJ|zeOot>TZ_xID*)`rXF!sn~T?RLE{J|rJbF_cNsm~c3PD2jA; zcCvEiO15m-!pxa7Pnf(k5}3hYu)smvY&NqbR#jEg7v=kxVr?jn5Dl&A>gwXc3om5P zo;|d+wJ|yxe&4_tno|nOq-e~pU3+jiDzI2A1Ofr->+8+5NWP|&(wgE3?pPgN94Z%U zNO9X(OOnLEzyQ;yPe1zDV3av?W>1Z%?Df~TarW8EfU%0mNF*{LLdzda7K1R}KVBN9 zILazM{#ft;GocF5(Xn;vfa&hu&(^ISc)i|&?KL$u?Ao=9hK7cdI!|L`qd70*a5xIu zhYlTj7feZz+S;nAGmf!Zt%O1$B9TbJ_Dm*2M@I(>7A!bP=U9a-%M1(*P+MDD&^~zZ z;3=kv^a&cLsw$0*Qz*M!S?OiLf(7RMdOk4VqzlCrMZs#d;&QpL+wI7*Y_=CKUVKW| zv{BoLpb1<dU14s^X0y0lj;RAi*T<r(;=*vJ(@8iS=EWCZWY(-%)YaAD@p#M!UMFS` zgo2cdQG~9lDzVt9mAIajI}1S<h{@x}#p7|DPG#zVnK7f8uC8v=iI1DIH0|x}W<iBf zYZi~kktET4<a{iG645jjkEfD&JVq{;!|U~$?NsX2=2Du4W&mR8aWJV=ik24t)B&@6 zc^j|2_B!cwrU=Zb*mRXdB1R$+JKBkH1_t70`&32KCeFQhJWkF%_k*V`m`V8ohD0L4 z=xF$~twga{EO@<@*zNYIqcKKEd#Vo~m8HnXmb;(~rYvPJWiVwagDHb4OBqaA%3$&( z@+zNLw2Hq(Ci$2$nD-dc`vFFc{FRM&UCoCV&A~UV3E!FL@R2L-VZ)yek<$Mkc3Q=9 zw*2*1v{#(YV6p+8y7~s5;1a&I`4zeY-Ryt;-+5qFJ#TM#khfx#<$VE@>}PY2k2}A( zie=4}D3XM|riBlF@@5|1^aGZ<0W=Z^UgE*kEBL?}P1M%Uq3tv4dFgNt_3#UPX6b6S z94^e}s)wIv)v_zcwr2+T-F;WlKKo4Sr!VHh&u`$(s8(8A7Ji!l>3xMu{XVK@jBAdb z=wj1tm$TUKr`~@KAHVHs-box=o%LiFPp-X$xo0%vo4taozxz6)YALPEGW6nueD1u( zoKfG5fAQtq`t#kyCS0CI^vxgh*@bPaesouf_up+W_C_u}qmTR6{e%}f4lt4`)nOfc z{+7*D-S{}Kb{$|~-+yxdyg%{f+g~PJeF1lz+sF6*qmS{Vf0l#KJWAlhUu4C!ES=xI zhP&Tx=i7hS$-%dO#lN~Yal==(5z$MSm>th@Uemce-xDBsz%Vy)wtwR~z7_a5k8SOw zXX}r+B=8Vd+_#g`69Nf#-oJ)_8@ZgHzp<C@KYyEZ_WYF2QraKi&AP8V&-A;V<E`F( zytU;n7Ir_w{zN|IEQ7yW$0t@lOVj<E`PohLaS4+RMs8&FlRxE_x*hyv?JAbFwBTR( zQC8o*i8sPWZ?TFte(}2>a>MyE@G2sbtC@>#xs`@@eoarx&BC>-P&YlsTk-KP`{>gW z*WNN0XR@0ow!rn@ypHxpC$@?+x%AGpRBwH%@XH@h5(n7$2Zc4?yozPh6qIRabKL{i zVE_FuN}nUq&Cmba%9{JHVyUtJH*a8OsmV)=ghSAX1P;<SlE!{U8`pgO8!R+R&$Jl3 zHr&WZzue8`Pd>|omo{L1ubjW=S;*(^d6eg0d4mIo-l5~!uksJ6C%ERSXXwuYsDxhq zF*kp#o!QfysHyf*-Fhvr9v&pAf^Eh>@r8z$dFbUMXlRVQ{5@W2y_HW-mmwQr@6cP^ zb9OUTRX(b!eALeQ0v*GLNSy3*M7bCTvlT4#j(3TzY60$S53yY7{SRa+Sm2cl_OB{c zQ|>s6b&uVQ_m2;8&4(6o=F-n{&kKX&+Mn*_smEW%@!8wC?(B+54QY>mZi|(gneAM8 z*PWcv`vQGQAhC!0);@{t`p5X=+g%Ke1Q_XjjHRxlwn&`DMRzP^|HE78PxSNL_XDiF zV>wj<AiJ4aw}^*!93&VFn9GswUmi0mvS9q)|51@#G|LfogvO0!I=GXl?8jAVc1dzE z!y090X#5H2OlTLubg54h@hrKL^}l$5j=gX3=k*`pzt*j1x1s&^Ieh)s-{S1eYq;_U zJ151rlm-)hlbf#m5<mFOR`v}i$ZA=lhj#GXBahHqcM**Wpyx=a78Iuww?iZq=-|nF zA7E!}yelh~{0pB-ZRFu!|A?oQ>$$%5sNJxi$(m1U{P0T~_)~X;bS}x^-7oR|+wWp~ zv{XMS)JYL`4W-8ae!=1Ast+Z3{O%{|IGiSR_ziw`_s>Xt=$~mRH8<y&!Id9Q@%TNP zcyl;SYWPi_`08WqFI6@W-NEg5JjzR*K~gylETE$m{Ply}cq!l6d>{U&uVwZ3wiDIf z3ox#^+`Z;32A}%||9H+^e08&!fAOts3SYvHHeNxK6>!dF-Mt@S&)qAT+0eqAmFsw= zX*I3+Pi8BAuDYd)EqDH&vu<BWgLx+_%)WIa54Y{+flsyJZ=A>ZH*O-h{CZ}WDj{~v z;^tMAJi4Nl8Z#<$vH0G{xntTEu3t7A|FWCdTz4BA?_EUcDr6^%zP5qeDu2o9MYEXE zemj3@y|(n{xn^<0IU{Vi=6w9q=kt+u2e@qg*O*`Q)VW;$F~0qq^|U^_hR=QH4I+~O z$5Q^srE;#UEM+idFl8x&DT66X8BAHqV9H?1@@~lg0=G*kXO^-^DF6Tf07*qoM6N<$ Eg49X2{{R30 diff --git a/src/calibre/manual/images/send_to_device.png b/src/calibre/manual/images/send_to_device.png index 1cc45f020f60b23056a37aee080d083036550c30..ed325ed753ecdb5d20601a0afa25f64fa0d9d8cf 100644 GIT binary patch literal 2896 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 literal 4292 zcmV;#5IgUQP)<h;3K|Lk000e1NJLTq004jh002q|1^@s6b4^?s00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iO7` z0xA!gIC?+;000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}000mlNkl<Z zc-rlqd3Y3cn#Vs?eb7m|LlR={m~fcjH6WKb2#Uy#uE?OGuA+d*dJF4;GcJmwsE>@U zj5-dBvWgf-c4c&6SREb*89-nK1Vv7fgn&dja&@k*d;h4e>TXC#bBt+Yz0XrmrK^A4 zb-dsA`yRjd*AZ%Jstg?Y$%?xpPhMWWkBW-DagP@S!QNXNfGC>B48z=uV)Qrw^O!l_ z-0QkdZf*{Rh4~HuI!cx=U&E`fz8lwAkH?M2<HGHB<Mq1jy>;B<F^@&Yx$t^Dc)hOh zagTjG6q1l6nF}xM`;!NN_+z+8Q@Ji%!RFo-qina^6*bOOz6BWbxM(Y1mSrSKM$;Vc z=T4-H$;%6nk&zj5%;j<+iXx&YAc`U`m$|v!ZUlkwF#)&R8fPlnas_U;h|6WZ-nHv% za&vPDg=8d2Lf3T%0Eu)lcinXxLxx;*%HLxc28LnS3by`Ux9<Pguwf&zED;JxXqx5# zAdxOc5TK!<f!f;IQ~DlF(*Y9%761wg3Q!aUNs<VKWMo+hk8=Q!P~!LdNl8gLjh1g< z7&@A!q3e2>{$)ZT30-$$fP@1;Fc_q|y84s=U|GJd>oy1q3ky+I6<Jo0B$ELQ!*Kx# z2Y|G+G}6-2PSWx%i#Az6*9|mHMbmUtRYg^GI|Y;^2`2<dAON^rB7$Htz=_5HmZe9( zwl-DOFbsp7oE#KIu~R@vlF@Ys0q#UmzSrvp1X5E|Nli^XA?2HUBg*o1G|lw;)}|;b znx=*6UqX^348sWm-HD=nx7%&U0P!+FbiikUK-aY>5NI|Kva+&KRn-mvWm!R09RPGF z07OxUsqBGp!hSzi`4Q{4=wH)x6h%Q*RTM=-l1$}?LJk8Y1Or6Mw;lw6xLiPVv>%=N zMbo~ia1~Y6P*ueSh%84KAR0gp06K&LMBHxCo~Qw#T^De4s%I%b*7DV`-&gD)FfT6; zP16X4WSbEj>2Lr*Qc@DRxmi?KSI5Nw(SAQV+K&W#T9ootyWDFSW`$6eWfa9xzO93f zJ-xutp%-%Fjic=>Af9wDn)Y?wuzkI`SHn5KYL|LVwlM5$z>x$B0t*Xs$;-<nIoTI( z-e^DQGYl|{)@k4L`RXzA0p{nNpf8~SAP53UNj`e?C=S!UL0w(lF{NNrhq0D#7=~Tn zk0@TVt>5Yp0uum*g=d~nmf-;42MPjJRYep9WLb#{4Bf5xd?BjvBcSUVf*^*0A%t1M z9Pe_uVm@#728ebGnIj400_y7O`SjCuVS0|O1h$syMVEL@YmZd=WLdVEBEkTKm5;*! zi3R|dOW^a*zo4?RG8_c99_>d5fL5+=`FUN}kYxo$QKEeQ(aIO1K;TFM#Q@d>Py-&1 zD@H+<6<d*hB;8Y^KwzbN3ZRFTF4%#e)e2^{lR1)rL11?F8T9Vmi_M$20N6pGW&Ktj z9|`!5R=#Tc{xEcGa9P&xa)}fb6*<~Yv^s#xCD6NfFG@;E@cF#91)GhYE_-kG@{3qK z{Z<-i7>3;lDhOt?s3;!YJ?z2l_BfhOL<Rr>zdwNApG>!I>3~5X5Filn$E12zpl1bp z(N(_KNg*K$5Rr~zM-tctxLhIy1qF8MR$pI7ZEbB#p0BD}xZ<bS^ZKf)*|CBd{1IjV zF^WY*8yNZdd5*RdF$+*t1;0N9NeThxT!7#2x7)aM-JH&iSig#@Dlt}XxdJojBZ>u_ zus^|F0DS-b_bgks3_&ohxxPNgkt2u0{d^JXmu1yX|BmhjuojM3fnQ`DAPxg0b|FZl zuCA7?TZ7>?ZJnefA2~U>c75Npc-8j(R`6$8zUAkwbk9ot9Qly|z;LDTT}xL|ly5K$ zgNBAiYHMpyRkO$wY3h)}UA&P#fQX-uEFH5}1|J=4=Hz5M+D=3O?2$^SaGlM7#_i!i zPYw6$MM}M@s-S6BiPr>yAc)}^K><O~F$^)h0HpP7qdk#Sfkm4=EcwdA_U}cSB!O-z zIs=O|ZtSNpte4s;D~TNn08P`#S2ofuw8~zrX*P)Dp(u)7-#@zT+Y0ic7mc1uy7$>$ z7k9nurLsl{GmHip)HTDN!?19phv6k6bN)ppE0B0f%*bdzzNx9HO1wglu500i8ZCrE za!fy;>Gu_MU5m2(Smj4Y{3k0P?-2Oqe+pDqt6(VMO^*88+*a(;8TqoC19gc<18pfc zp7%Q#0EWF%SCZtIE?zU=SHtxJ>|g(gp4d56<<}^FCM__Km00CxrfB@f4L(F-L9o9@ zVf=iZMC>MSOUdnlqk{pU)6yc@>-DT&J}cL^g1yL3zr<(xjg1Y+vP^w_9kMKQ@Zh0V z$NlfYJ~T;k*y7F2>rz>GXMm}fC-cPUq+^(1^FD<?u20O)qNA1Fp7IkS2C#bcWm)E( zci!f{`=*9Fc8xIoo4@lD`<p<=FY>gsgz$PjXqtw{6AUj2lUTj_lL+{HnQUvwF%@f9 zCSmrC=?p9J0x*44Dm$tq7Jk+k^Zl=_(ilHDDPcj7k&zdd@)H06y1i026p~R@H?wBF zXoJFHg;p;-+%<Hv?cH*>z8Ja^bL^hs0VZ7>yEOg3CY`~agDq^R2-(NBSHZzx7qU~u z9|aR6tP3y<-Cn6{t=DT$`I(vBm^g79)2Bbc)Twvy(o4@#Qqt?h!IzR7L+vAayLoPG z20Ol!`NJpXx`dgF4+HSQlzj5jh#9~8VCU#A?(iT`k|cYzZnQgSP5FL*3ggDzz@S0> zC@3hTfBy>@Htb?%&3cNQoU9WApCH=GJSz+4PdbB*6)lXIRZdln1i;cSY8g3eH$IQR z2UE`^$)nkykyOJ0!0B=Ursd1F@~xS^qh;{mLG<d?gOrpMs;duESy@SWc?DTnXE1v7 zRVQ}ia-FTrysoh3n<hrh-a~C;C|m~s43)KC*D-YFc3NbO^km%*7Q3Z%j;c_H#sH=Z zu#_*`6~MM6EiILgKVHVjk(b-;;8j%zSi5!|EiH{FcH{NC?ErA)&U#kvtdF{|2mmk? zb{tT+Wabz4+dhxL*|{DE0H==u<gn!*->)VoCo^Hf&D7V|QBzY(VPOG*Kv%M|a#*|e zvlBYEw{8~!cQXx2Yl_rk01$p*zdNc=SGssQ2LmL83utS-p4aQ;rkk$krkk$E<#Mrl z^;*)?(<v?O%{k|sL)Wh9q@|^il$6Yh6{`_NkpTlPV9c0Nbm`Kiod85*c-FVa<oV_n z%K*`pL6@NN&@Z~tStKDCpe@V4_S(_(>vulI#YOmhU3l}&G9G{Y8Kz9Rlf8Q@si-Jt z=+I%j_0~eRY}rb`etj4;s6W?Sb2YiSIn0?e@3`l`DDw!xl(YEz&S1>(zimB4(_0Gr zk2ILdkCMkn7f_n(a{zF9vH-1J+Rw_$qI>sZg24s=R;*ab`t=*=*RKx%Wo3V|-wOl+ zOqw*F{rkVAuCBg)`V(Nmojtg9?$<Ffz^007HdP$^OJ&pkxq$me=Fpj>g8^{-RO-F= zK0wzs7A;!L(xrd3k2f_nvwHQqW5%yqwT363d=60*S-SM2xURwPbFt|D-ppHhklBB& z;!sdNW=!9r6rLDU#3j8`>1-l&<o^p;wrn{oR;=l;n;$V^C?iJ>w_huo&W7?vwjF4p zNz%v+co^8-PibxvomB+qA4dGN#c7&%0N{uN07o1EIN|`n5eEPXB*Arz?mLz>!A^co z2LPQ=endcu3jkX13l=;&fy?@yLtfUI<n<iP<+se>^_2$*8O{SfMp7?g$rp<llG+&n zpj7ehggcneC}u5QOL<i}dp`Rk&y3As`|HoKwb3#7&g}wPzGd;=JRW&yECY+u@VVV2 zW%l60G50XL>=g!BD`n*G_;BWUhLrXsr{DsH|Lf~)YS1GV`?Fv0hZi5@iaw>}WcT8n z;rB9kYm+_8ZnW&??J1);x3Gx3(h*E}@iXeQHmtwTb$q&SEms%kk<mTE1V;02${xIi z3yO=$DIUyK4=&{E=C&!S-E+2aPuiiSTt8qOOAf_epmyjlj2(C@OZKdZVJIWCkHs^_ zF}S2Bxjips!tXZ`)Z=(=2?2nle6B9s&&((0vUFnwM?$S#T!@`7PGtJ_A^i4}EmUq_ z#MD3;cl`SXg4XkI+{N6TeVO^uCiYjZW&U*sdFB2xDrJCXwmdzV=Z{>&Tc7WueD!Y` zyyFdaHnu^pU;c@U&-^)m*;_?Tg+;YZY<_AIv#PG*we>sMyZ%*1RlUG1Gq=#x>W#H` z&bIHVDf1Gh{d_+!{m*_PQ%4Gw|2>DQ%N}CH8Dh+NwmmnI$F>jQ`Q=-v*f^JKTRx<+ zInL+S;Q;XDGw$s-xHtPt=1v*Qz#cs)?sFyMrkC+~eb@q8%9+0eZhv+XL-JGTlG>B2 zADKe8_3yH$Is82-=Q91NaSY5$!Q;zf;LUeaRJW4vLO^plZ~e{7<fq3oAj^j@t3Q*T zy@OsSGVR`6!GceGOn!De1Fi3PW+F+;--%p9%=mWBdAxgS3D9TCShTX&*lMAxX&ZAE zy1DJ%bBSpzZ>iwTk6cWeHJPD>DfrS$`Q^07INu-VbNdHNT+_j>u6?+9#vE>*0T?nz z_H5w8IZrTgyvRq3Zl*v9vg_bhUh7}PjHu5EX+vnXSkje5esbg&JOy_$E<-k(uhd2= z<WxqdN7}QxWc-YbE`N{zPSi#!l~l&0dt<&Mpsb=%ZGHT4&)LpBb?JU1_vc>63#+Or zyE2`cRWGr&<N+Qn@IW+kDGij%0j|#Qwh~{(@!S$F4HUd&_8P*ik3K@-zNPGM0XzYE zW%uQUFDt33sj|1~^7rD4gx!9+dmGqN8(F9!*M3E~JG=GE0Al{%gWFG$C&-tz5mJ_F zw$R`y#_v9fbGCO+t}I4Q8^E5~OZc|=Ti$=UiYumFM8?ri)Dxhmw}H(yax3h5iqGu_ z0YJkh?!NU`yz=Mud~>)NMOSDz@Fnm6?sx3V9!b6rNb1StF*?8h)$6P*4<e~89NP9V zFF*V!n;YV|isbIxdRd5hGs@U>SR!<I6Z0Q?jXj~ZD9J~*JIGfDLy=a^<YLBO+QPi) zZ?o}`MCj1xygB_%nlHVH9?2(h&UWufAhq9pTpL=z><?b$UEl58Ueb!sO6typD^=e3 z^*q)bXhy2r#p36m=Bvij@Z5e70Qk>k`sB0u{{5%8Veq-+WuL|Q|MUQ5^`m%o!7ZHW z1@KY&zyf9u+Qu{24x%{!Jciy?M$JXHQ|gcBGE(UK`0G5F_8#N<o<;W|53{D^wzfZ; zd=~eNO=Hf85;E;9z|RH0na8xOCEPx+l;VMRvpD-f7W}3!{*yXq9QWiaX8gSwEO}%( zXFq%exve_XWX}8be4Z>>#lH<ZkK+D!@#o~LC`vvZ&+XL3X$W!Z0FF2SaKr(CBMtx@ maRA_m0{}-H066l~k^cwU^RHQPfqH!a0000<MNUMnLSTYEu0C%7 diff --git a/src/calibre/manual/images/show_tag_editor.png b/src/calibre/manual/images/show_tag_editor.png new file mode 100644 index 0000000000000000000000000000000000000000..55b7a855e46752c37b0047facff270e3a4a03253 GIT binary patch literal 1094 zcmeAS@N?(olHy`uVBq!ia0vp^;y^6M!3HF?%h*|g6k~CayA#8@b22Z19F}xPUq=Rp zjs4tz5<!xj1s;*b3=DinK$vl=HlH+5kiEpy*OmPimk_Hw_vA_J3&BFJ5haeLB^mie z3@g{2@c;_(lmLZXQj3#|G7CyF^Ya*lITe+G;#?qc=lp`oqRjM+5{5PWXRLstd|=U{ z)I^X{g_6wNR0h-U{G31;PLND+ep*R+Vo@qXY{7q!a&EBUnZ?ODi9n@A4BHQE=?4mP zfP}*ni}Et_(isj&KWhhyu|xEi7A2=LeEr}28m7!SKQ}iuuY}>-nQ8lhVr(E~A(<sP zsSGRLT~Y^%D1t<sVNMDGImyVt(7+0WEEEh3t&9z<OpUl}U;8mIFdg@FaSZYB-Wuwi z9qcIb@7-R{m1h@cUSd%c6J$BKB%nZ>Bk#_Qb-Osc>KmFAxbnKA9R*o_Gk3j<+E9AA z_r;;s6%q5dbT<Wc_0L+?xi>ei{Fr62@#L4eQYsHP+h<xE-!DH`Q=FDmnE1m#P4m-g zWA6xEvw-|f^PIo7=FIVG{rKS&>q*6v`uAfGJO~ilu6AsKuUnPc{ToGv>4}n0FNw+B zo%7-3`MYsP-faDR;s|@dO5-(aYuuE?8dD>!CfuAJDOqe?%CCIfUqNi!ht-?9SF)e~ zkW?jOrkmpQZE+{#6lodXV@DL6jpSUj4Ag2Z1gFoFlbSNmQ|;T=^6%eRn1uXoj<~Cx zT-up`t!UP!+~_p-wMAcLWz_XrRpn9@o1@)Sw!cvCc>etP*KbpKu4tWqT6E(1=LJo{ zH-&a7?^ItjDY!ss#+*4<T%Pe=Sr_8an$5Z3<n2uz3(YF6t(A&o+^aN1UcFedUGhP~ zvt@Z}&pdzj>|3VXnTnDUktbfoGj~?1t`s@%Xa6v-`Qz2MYX5`Qe4L(t|8vmFBd4Dl zmB&sGUmbcc!^9%lr|QDAxY`L3MUNEijA|E{@<)^(UD<u@TTNusO!n;9)P0exGL5R< z-{pgJ=dDnmIAcd-ou(KU>)NfWCYWuxyVy(d%|dpsVBd`$b2_U6Qyk}7PpsCJN%TG0 z>;1(2yRk(@rPah$hD{l33Kz|qqj8nV^u8~bv4rQ!jmKPO-|6t1%`F$V{fy_dgrqHX z_rET8-O`+Y-~8jASHBovm|YIb=(}|-dquhGzHDFjm_^QfSGFAu-ud>CkCo19)tWaZ z`>Z6_TwDAjg7abQ#D`z|rSAP%bNb(M`@}U@lp-E$uKAuiQN~iUuti<&k@DpCKd<a{ z{c^m$;O`@ew#V+fG%u9CD^KPBK3{KflxE_$V>|r)I=mm<&qzLgX??W5V2)y-*{P2a jf4E<ssaE_YekNYWZ}t4SQyQ{>>7T*V)z4*}Q$iB}7Sha5 literal 0 HcmV?d00001 diff --git a/src/calibre/manual/images/swap_title_author.png b/src/calibre/manual/images/swap_title_author.png new file mode 100644 index 0000000000000000000000000000000000000000..e4d7470a44dc63622783cab5871240e7dd8183b9 GIT binary patch literal 1327 zcmXxjdpOg390%~9$joh$hhuWwsx><mttC4;#jI_ZTd1K&(#(?IoNa}};owNQ9C1jk zti*E5G7obt9&(wKY95Kglv|xcYFRsB=eK%#p6~Vbd4Ipp_n+@YUvH9uE>af&00Roy z-5;9Gpl+(84UL#{u#M29!SN@#0m8>y7NCt5!<Fg^0HQp-)o^tY9!sWi0Ko8px@#0+ z3@sppaVb<HY)sd9<BzCjzhKR;L_EfIJ<E+^v4JY#AQ>WkE=2BhP6V47%Vn}aU^Cpt z4su<!6IihcY$hX$3*12r;vqHss%(0=I%>^j#?S$r0s)6AaCPMfE0P-*&ZYy$V^!+7 z-q*{SoQN~wP?QZcbvEQdtfS_m;cSozGJsBt*-Xe_-_D<9N6>*!s`Pi?V+2-A3?1YG zD}$FiAk$XI0+`%0bf9wa843~`wGh5PDM0<CJr0fzcy-%v?cj*VLJQ~5-HI*%(5$1l zy9SUw8;gdbLjz6v4lYq63zSd23cQoYZTAYYZ#A?UxjGSzN)4vFGN!F=VygVPf+@E; zd!b2aGul2)Trfi1<kzt7wYlK-O-hwup@Df#vYK3?n0=+_<*@JzIh0}T_SksEy||${ z{>OWB6VbTx<%75yc#14tI(YZ<aA5OH)k({JiDFWMO4(=7-Ff48MjDr8Me0>JjupS$ zvwC_$R(sLhBg4h2WA9(Jlo!=K7@tK(C5rMix`B4Twd=!&-6m`XdUm_yxGFzsTN8MF zMY_%_OK3HZ-%*eFv~>sG?EOGkS%#mz4=&LpQK@q;fA@U0RfSV>+Qg_<zM!~jXM5@g zkSC&Ilr>u(g`{8OxBom7MrjH2libfunF%~!Kof7ni;`f0JCWUYFL|Kmhu*|SB97eu z)%yg#Gf;Xx5}Q96Db>-$2OR1sDI!N`@w?(SR2Q3~y{Side1W*x%NGu}%#+DL;hG%p z&6K#;)Hce;row-iZp(UdSN7!>ke*?|so1X?S6p9><ok5E^bOsxV$2LO-}dlMP1ncW z$;6^2wi;E74P=KCC7$s8zI+$YLiVI+{(><g=|SpqA!mMG_pNB?3Qdk4N{XHmAGM=h zy;T^t=l#ez6uY*i?7hcxt$&Pyca>-oa&naVTh|K(d0A)c6tap@rQEUl-1*?rtgz@h z2Fb~6F4=+C1WNYN3J(mtTuO1kIZNbn;;h*jU4ee`A_2LW(K!6tE^pev#qId^$`JEs z3mOAGtF!g-8UbJU*87sL3e$@(SY8n<KcRuI;`q<j^g@H$T5OG(5Ami&!bJ4p^Zjjp zy0~j0q8w#~vqg}nbpnpM(SK8_txj4a>rqN++n*)K+x*egac3`^`oHB<yRe}2w4d!U z>4pVZF0gIp#ma$7%BzQ6y|86tg|E+I`IDCH;eHSczCQi5?sEU90SsQ}0$E;q<y2{? z<gmTOL)NEV8E44rU;Foq4bo}77BeQk854`m9~LI_km7RWDch6vm(cBG-fw#eIK10W zSh4A7Z++CE=r`~FE1*QlGB-&o_2{T7QY+lJj4kdjZ|Y+OXVu_U=@fG<_6YixEp^Mm zdg@C0A0bI2L~z{HDccaSLVC1o?dax<IbJCiHETH1M=rLwhqJ^luW2hbLoC`!Em@P@ zam$x6&*PVd^}&`-QFmsLY)oa|k}DjrnRLlsN=sl!kC~QLY2WDI*<h*+I;85E+f8^Z Va<1$M%7s2UKp}d&3*Ann{SOVuSKI&q literal 0 HcmV?d00001 diff --git a/src/calibre/manual/images/view.png b/src/calibre/manual/images/view.png index c16ec58bcfcfa3aebf22278c2db4ed90c892bdca..7c3346383f7803856bff07277ce6d104adf97d5f 100644 GIT binary patch literal 3101 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 a9sd=h<Z?~*bKL2-7Jz~q>6Yp^g#8a!qQ5}^ literal 3575 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 From f826dcd050ae262aaef1aa7d6a75188515f54b67 Mon Sep 17 00:00:00 2001 From: Timothy Legge <timlegge@gmail.com> Date: Mon, 29 Nov 2010 22:14:23 -0400 Subject: [PATCH 222/377] Fix deleting txt documents --- src/calibre/devices/kobo/driver.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/calibre/devices/kobo/driver.py b/src/calibre/devices/kobo/driver.py index 0eddf26549..ebb3f60101 100644 --- a/src/calibre/devices/kobo/driver.py +++ b/src/calibre/devices/kobo/driver.py @@ -220,6 +220,7 @@ class KOBO(USBMS): # 2) volume_shorcover # 2) content +# debug_print('delete_via_sql: ContentID: ', ContentID, 'ContentType: ', ContentType) connection = sqlite.connect(self.normalize_path(self._main_prefix + '.kobo/KoboReader.sqlite')) cursor = connection.cursor() t = (ContentID,) @@ -400,6 +401,9 @@ class KOBO(USBMS): elif extension == '.pdf' or extension == '.epub': # print "ePub or pdf" ContentType = 16 + elif extension == '.txt': + # print "txt" + ContentType = 901 else: # if extension == '.html' or extension == '.txt': ContentType = 999 # Yet another hack: to get around Kobo changing how ContentID is stored return ContentType From 26aef9cc53b91b2c94d096597adc435e2bf5f823 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Mon, 29 Nov 2010 20:17:33 -0700 Subject: [PATCH 223/377] Conversion pipeline: Do not override CSS for images with the value of the img width/height attributes, unless no CSS is specified for the image --- src/calibre/ebooks/oeb/stylizer.py | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/calibre/ebooks/oeb/stylizer.py b/src/calibre/ebooks/oeb/stylizer.py index d10ea12394..4f8ae68943 100644 --- a/src/calibre/ebooks/oeb/stylizer.py +++ b/src/calibre/ebooks/oeb/stylizer.py @@ -240,18 +240,26 @@ class Stylizer(object): else: for elem in matches: self.style(elem)._update_cssdict(cssdict) - for elem in xpath(tree, '//h:img[@width or @height]'): - base = elem.get('style', '').strip() - if base: - base += ';' - for prop in ('width', 'height'): - val = elem.get(prop, False) - if val: - base += '%s: %s;'%(prop, val) - del elem.attrib[prop] - elem.set('style', base) for elem in xpath(tree, '//h:*[@style]'): self.style(elem)._apply_style_attr() + num_pat = re.compile(r'\d+$') + for elem in xpath(tree, '//h:img[@width or @height]'): + style = self.style(elem) + # Check if either height or width is not default + is_styled = style._style.get('width', 'auto') != 'auto' or \ + style._style.get('height', 'auto') != 'auto' + if not is_styled: + # Update img style dimension using width and height + upd = {} + for prop in ('width', 'height'): + val = elem.get(prop, '').strip() + del elem.attrib[prop] + if val: + if num_pat.match(val) is not None: + val += 'px' + upd[prop] = val + if upd: + style._update_cssdict(upd) def _fetch_css_file(self, path): hrefs = self.oeb.manifest.hrefs From a5d7a19c341326d3359798a724ed4e4d1de1d916 Mon Sep 17 00:00:00 2001 From: Timothy Legge <timlegge@gmail.com> Date: Mon, 29 Nov 2010 23:24:31 -0400 Subject: [PATCH 224/377] Allow html, htm and rtf documents to be deleted --- src/calibre/devices/kobo/driver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/devices/kobo/driver.py b/src/calibre/devices/kobo/driver.py index ebb3f60101..981bf3decb 100644 --- a/src/calibre/devices/kobo/driver.py +++ b/src/calibre/devices/kobo/driver.py @@ -401,7 +401,7 @@ class KOBO(USBMS): elif extension == '.pdf' or extension == '.epub': # print "ePub or pdf" ContentType = 16 - elif extension == '.txt': + elif extension == '.rtf' or extension == '.txt' or extension == '.htm' or extension == '.html': # print "txt" ContentType = 901 else: # if extension == '.html' or extension == '.txt': From 8a6e316e9fdcfd36c61b9a52a8a65c5ac6d0e1a2 Mon Sep 17 00:00:00 2001 From: Timothy Legge <timlegge@gmail.com> Date: Mon, 29 Nov 2010 23:51:55 -0400 Subject: [PATCH 225/377] Fix the deletion of html, htm, txt and rtf by firmware version --- src/calibre/devices/kobo/driver.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/calibre/devices/kobo/driver.py b/src/calibre/devices/kobo/driver.py index 981bf3decb..b76ee4b1c3 100644 --- a/src/calibre/devices/kobo/driver.py +++ b/src/calibre/devices/kobo/driver.py @@ -79,11 +79,11 @@ class KOBO(USBMS): # Determine the firmware version f = open(self.normalize_path(self._main_prefix + '.kobo/version'), 'r') - fwversion = f.readline().split(',')[2] + self.fwversion = f.readline().split(',')[2] f.close() - if fwversion != '1.0' and fwversion != '1.4': + if self.fwversion != '1.0' and self.fwversion != '1.4': self.has_kepubs = True - debug_print('Version of firmware: ', fwversion, 'Has kepubs:', self.has_kepubs) + debug_print('Version of firmware: ', self.fwversion, 'Has kepubs:', self.has_kepubs) self.booklist_class.rebuild_collections = self.rebuild_collections @@ -220,7 +220,7 @@ class KOBO(USBMS): # 2) volume_shorcover # 2) content -# debug_print('delete_via_sql: ContentID: ', ContentID, 'ContentType: ', ContentType) + debug_print('delete_via_sql: ContentID: ', ContentID, 'ContentType: ', ContentType) connection = sqlite.connect(self.normalize_path(self._main_prefix + '.kobo/KoboReader.sqlite')) cursor = connection.cursor() t = (ContentID,) @@ -403,7 +403,10 @@ class KOBO(USBMS): ContentType = 16 elif extension == '.rtf' or extension == '.txt' or extension == '.htm' or extension == '.html': # print "txt" - ContentType = 901 + if self.fwversion == '1.0' or self.fwversion == '1.4' or self.fwversion == '1.7.4': + ContentType = 999 + else: + ContentType = 901 else: # if extension == '.html' or extension == '.txt': ContentType = 999 # Yet another hack: to get around Kobo changing how ContentID is stored return ContentType From 549b73e248e0ec3a38b64843b0d2feb8d97de2d6 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Mon, 29 Nov 2010 21:10:36 -0700 Subject: [PATCH 226/377] Force overwrite title/author metadata to True when downloading metadata for books added by ISBN --- src/calibre/gui2/actions/add.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/calibre/gui2/actions/add.py b/src/calibre/gui2/actions/add.py index 5cc72c3ff0..9b348d8285 100644 --- a/src/calibre/gui2/actions/add.py +++ b/src/calibre/gui2/actions/add.py @@ -18,6 +18,7 @@ from calibre.ebooks import BOOK_EXTENSIONS from calibre.utils.filenames import ascii_filename from calibre.constants import preferred_encoding, filesystem_encoding from calibre.gui2.actions import InterfaceAction +from calibre.gui2 import config class AddAction(InterfaceAction): @@ -101,7 +102,12 @@ class AddAction(InterfaceAction): else: ids.add(db.import_book(mi, [])) self.gui.library_view.model().books_added(len(books)) - self.gui.iactions['Edit Metadata'].do_download_metadata(ids) + orig = config['overwrite_author_title_metadata'] + config['overwrite_author_title_metadata'] = True + try: + self.gui.iactions['Edit Metadata'].do_download_metadata(ids) + finally: + config['overwrite_author_title_metadata'] = orig def files_dropped(self, paths): From ab93cea8b0193330a54cf5cd32fe22670aba8964 Mon Sep 17 00:00:00 2001 From: Translators <> Date: Tue, 30 Nov 2010 04:46:15 +0000 Subject: [PATCH 227/377] Launchpad automatic translations update. --- src/calibre/translations/cs.po | 103 +- src/calibre/translations/es.po | 2 +- src/calibre/translations/fr.po | 8 +- src/calibre/translations/he.po | 2205 ++++++++++++++++------------- src/calibre/translations/zh_CN.po | 8 +- 5 files changed, 1331 insertions(+), 995 deletions(-) diff --git a/src/calibre/translations/cs.po b/src/calibre/translations/cs.po index 108a4e0e16..830d85b321 100644 --- a/src/calibre/translations/cs.po +++ b/src/calibre/translations/cs.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2010-11-27 20:21+0000\n" -"PO-Revision-Date: 2010-11-28 20:16+0000\n" +"PO-Revision-Date: 2010-11-29 19:40+0000\n" "Last-Translator: Marek Sušický <Unknown>\n" "Language-Team: Czech <cs@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-29 04:47+0000\n" +"X-Launchpad-Export-Date: 2010-11-30 04:45+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -3010,6 +3010,14 @@ msgid "" "\n" "Manipulate a PDF.\n" msgstr "" +"příkaz...\n" +"\n" +"příkaz může být jeden z následujících:\n" +"[%%commands]\n" +"\n" +"Použijte %prog příkaz --help pro získání více informací o příkazu\n" +"\n" +"Měnit PDF.\n" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:29 msgid "" @@ -3197,6 +3205,17 @@ msgid "" "\n" "Split a PDF.\n" msgstr "" +"\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" +"Rozdělit PDF.\n" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:61 msgid "Split Options:" @@ -3367,6 +3386,8 @@ 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 "" +"Vynuť rozdělení podle maximální délky řádku když není místo. Dovoluje, aby " +"maximální délka řádku byla pod minimem" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:67 msgid "Send file to storage card instead of main memory by default" @@ -4950,6 +4971,13 @@ msgid "" " wil be selected.\n" " -For time field, only the date will be used. " msgstr "" +"Vysvětlení této šablony:\n" +" -Dostupná pole jsou 'author_sort', 'authors', 'id',\n" +" 'isbn','pubdate','publisher','series_index','series',\n" +" 'tags','timestamp','title','uuid'\n" +" -Pro typy seznamů, tj. autory a tagy, je označen\n" +" jen první prvek.\n" +" -Pro časové pole je použité jen datum. " #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:16 msgid "CSV/XML Options" @@ -5143,6 +5171,10 @@ msgid "" "understanding the conversion process and figuring out the correct values for " "conversion parameters like Table of Contents and Chapter Detection." msgstr "" +"Zvolte složku, do které budou ukládány ladící informace. Pokud zvolíte " +"složku, calibre do ní uloží mnoho ladících hlášek. Toto může být použito při " +"pochopení konverzních procesů a nalezení správných hodnot pro konverzní " +"parametry jako Obsah a detekce kapitol." #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:59 msgid "" @@ -6661,7 +6693,7 @@ msgstr "&Zastavit označenou úlohu" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:51 msgid "Show job &details" -msgstr "Ukázat &detaily úlohy" +msgstr "Zobrazit &detaily úlohy" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:52 msgid "Stop &all non device jobs" @@ -6903,6 +6935,9 @@ msgid "" "for that series. Checking this box will tell calibre to start numbering\n" "from the value in the box" msgstr "" +"Série budou přečíslovány od nejvyššího čísla v databázi\n" +"pro tuto sérii. Zaškrtnutí tohoto pole říká calibre, aby\n" +"začalo číslovat od hodnoty v tomto poli" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:368 msgid "Remove &format:" @@ -6918,6 +6953,9 @@ msgid "" "checked,\n" "title and author are swapped before the title case is set" msgstr "" +"Vynutit název knihy velkými písmeny. Pokud je zaškrtnuta tato volba a prohoď " +"autora, \n" +"název a autor budou prohozeni před tím, než se nastaví velikost písma." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:372 msgid "Change title to title case" @@ -7012,6 +7050,10 @@ msgid "" "field is processed. In regular expression mode, only the matched text is " "processed" msgstr "" +"Zvolte, jak bude zpracován text po nalezení a nahrazení. Ve znakovém módu " +"je\n" +"zprocesované celé pole. V módu regulárních výrazů je zprocesován jen " +"nalezený text." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:392 msgid "&Destination field:" @@ -8955,6 +8997,9 @@ msgid "" "used. Also applied when switching to this library. Note that this setting is " "per library. " msgstr "" +"Použít toto omezení při startu Calibre, pokud je používána stávající " +"knihovna. Také bude použito při přepnutí na tuto knihovnu. Všimněte si, že " +"toto nastavení je na knihovnu. " #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:152 msgid "" @@ -8999,6 +9044,8 @@ msgid "" "book list. You can hide columns by unchecking them. You can also create your " "own, custom columns." msgstr "" +"Zde můžete přeskupit rozložení sloupců v seznamu calibre knihovny. Můžete " +"schovávat sloupce odškrtnutím. Můžete si také vytvořit své vlastní." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:84 @@ -9030,7 +9077,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:19 msgid "Text, column shown in the tag browser" -msgstr "" +msgstr "Text, sloupec zobrazen v prohlížeči tagů" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:22 msgid "Comma separated text, like tags, shown in the tag browser" @@ -9093,6 +9140,8 @@ msgid "" "Lookup names cannot end with _index, because these names are reserved for " "the index of a series column." msgstr "" +"Lookup names nemohou končit _index, protože tato jména jsou rezervována pro " +"index sloupec sérií." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:126 msgid "No column heading was provided" @@ -9134,7 +9183,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:131 msgid "" "Column heading in the library view and category name in the tag browser" -msgstr "" +msgstr "Nadpis sloupce v knihovním pohledu a kategorii v prohlížeči tagů" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:132 msgid "Column &type" @@ -9604,7 +9653,7 @@ msgstr "Libovolné pole" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:34 msgid "The lookup name of any custom field. These names begin with \"#\")" -msgstr "" +msgstr "Lookup name libovolného pole. Tato jména začínají s \"#\")" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template_ui.py:47 msgid "Save &template" @@ -9752,7 +9801,7 @@ msgstr "Maximum OPDS položek v dotaze:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:132 msgid "Max. OPDS &ungrouped items:" -msgstr "" +msgstr "Max. OPDS &neseskupených položek:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:133 msgid "Restriction (saved search) to apply:" @@ -10087,7 +10136,7 @@ msgstr "Seřadit podle průměrného hodnocení" #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:882 msgid "Set the sort order for entries in the Tag Browser" -msgstr "" +msgstr "Nastavit pořadí položek v Tag prohlížeči" #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:888 msgid "Match all" @@ -10197,6 +10246,9 @@ msgid "" "you find it useful, please consider donating to support its development. " "Your donation helps keep calibre development going." msgstr "" +"je výsledek přispění mnoha dobrovolníků z celého světa. Pokud se Vám produkt " +"líbí, podpořte jejich práci nějakým příspěvkem. Váš dar pomůže udržet vývoj " +"calibre v chodu." #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:543 msgid "There are active jobs. Are you sure you want to quit?" @@ -10239,7 +10291,7 @@ msgstr "Dostupný update!" #: /home/kovid/work/calibre/src/calibre/gui2/update.py:64 msgid "Show this notification for future updates" -msgstr "Ukázat toto upozornění pro budoucí updaty" +msgstr "Zobrazit toto upozornění pro budoucí aktualizace" #: /home/kovid/work/calibre/src/calibre/gui2/update.py:69 msgid "&Get update" @@ -10442,11 +10494,11 @@ msgstr "Patkové písmo" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:58 msgid "The sans-serif font family" -msgstr "" +msgstr "Rodina fontů sans-serif" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 msgid "The monospaced font family" -msgstr "" +msgstr "Rodina fontů monospaced" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:61 msgid "The standard font size in px" @@ -10745,7 +10797,7 @@ msgstr "Táhněte pro změnu velikosti" #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:893 msgid "Show" -msgstr "Ukázat" +msgstr "Zobrazit" #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:900 msgid "Hide" @@ -11043,7 +11095,7 @@ msgstr "Vaše heslo na e-mailovém serveru" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:137 msgid "&Show" -msgstr "&Ukázat" +msgstr "&Zobrazit" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:138 msgid "&Encryption:" @@ -11095,6 +11147,10 @@ msgid "" "directly on the device. To do this you have to turn on the calibre content " "server." msgstr "" +"<p> Pokud používáte <a href=\"http://www.lexcycle.com/download\">Stanza</a> " +"e-book aplikaci na Vašem iPhone/iTouch, můžete si zpřístupnit Vaši calibre " +"sbírku přímo na přístroji. Pro přístup budete muset zapnout calibre content " +"server." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:50 msgid "Turn on the &content server" @@ -11188,6 +11244,10 @@ msgid "" "Default: '%default'\n" "Applies to: BIBTEX output format" msgstr "" +"Vytvořit citaci pro BibTeX záznamy.\n" +"Boolská hodnota: True, False\n" +"Výchozí: '%default'\n" +"Používá se na: BIBTEX výstupní formát" #: /home/kovid/work/calibre/src/calibre/library/catalog.py:242 msgid "" @@ -11818,6 +11878,8 @@ msgid "" "Perform some checks on the filesystem representing a library. Reports are " "{0}\n" msgstr "" +"%prog check_library [options]\n" +"Provede nějaké kontroly na filesystému, kde je knihovna. Reporty jsou {0}\n" #: /home/kovid/work/calibre/src/calibre/library/cli.py:886 #: /home/kovid/work/calibre/src/calibre/library/cli.py:1036 @@ -11885,12 +11947,18 @@ msgid "" "Produce a report of the category information in the database. The\n" "information is the equivalent of what is shown in the tags pane.\n" msgstr "" +"%prog list_categories [options]\n" +"\n" +"Vytvoří report kategorií informací v databázi.\n" +"Informace je ekvivalentem toho, co se zobrazuje v panelu tagů.\n" #: /home/kovid/work/calibre/src/calibre/library/cli.py:1033 msgid "" "Output only the number of items in a category instead of the counts per item " "within the category" msgstr "" +"Výstupem je jen počet položek v kategorii namísto počtu položek v rámci " +"kategorie." #: /home/kovid/work/calibre/src/calibre/library/cli.py:1038 msgid "" @@ -12053,6 +12121,7 @@ msgid "" "Normally, calibre will update the metadata in the saved files from what is " "in the calibre library. Makes saving to disk slower." msgstr "" +"Calibre upraví metadata v uložených souborech. Zpomalí ukládání na disk." #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:65 msgid "" @@ -12173,6 +12242,8 @@ msgid "" "Prefix to prepend to all URLs. Useful for reverseproxying to this server " "from Apache/nginx/etc." msgstr "" +"Prefix pro přidání ke všem URL. Použitelné pro reverzní proxy na tento " +"server z Apache/nginx/atd." #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:59 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:437 @@ -12452,7 +12523,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/formatter.py:56 msgid "switch requires an odd number of arguments" -msgstr "" +msgstr "přepnutí potřebuje lichý počet parametrů" #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:43 msgid "Waiting..." @@ -12583,7 +12654,7 @@ msgid "" "Interpreter dies while excuting a command. To see the command, click Show " "details" msgstr "" -"Interpretr vytuhl během provádění příkazu. Klikněte na Ukázat detaily pro " +"Interpretr vytuhl během provádění příkazu. Klikněte na Zobrazit detaily pro " "zobrazení problémového příkazu" #: /home/kovid/work/calibre/src/calibre/utils/pyconsole/main.py:20 @@ -12728,7 +12799,7 @@ msgstr "Stahování obálky z %s" #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1032 msgid "Masthead image downloaded" -msgstr "" +msgstr "Obrázek z tiráže stažen" #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1200 msgid "Untitled Article" diff --git a/src/calibre/translations/es.po b/src/calibre/translations/es.po index df742bfe80..1150dfb8e2 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: 2010-11-29 04:48+0000\n" +"X-Launchpad-Export-Date: 2010-11-30 04:46+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:502 diff --git a/src/calibre/translations/fr.po b/src/calibre/translations/fr.po index 565d894183..38933f4a69 100644 --- a/src/calibre/translations/fr.po +++ b/src/calibre/translations/fr.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre 0.4.22\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-11-27 20:21+0000\n" -"PO-Revision-Date: 2010-11-28 08:41+0000\n" -"Last-Translator: sengian <Unknown>\n" +"PO-Revision-Date: 2010-11-29 05:41+0000\n" +"Last-Translator: Vincent C. <Unknown>\n" "Language-Team: Français <kde-i18n-doc@kde.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-29 04:47+0000\n" +"X-Launchpad-Export-Date: 2010-11-30 04:45+0000\n" "X-Generator: Launchpad (build Unknown)\n" "X-Poedit-Bookmarks: 1177,1104,-1,-1,-1,-1,-1,-1,-1,-1\n" "Generated-By: pygettext.py 1.5\n" @@ -9763,7 +9763,7 @@ msgstr "Annuler et retourner à la vue d'ensemble" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:269 msgid "Restoring to defaults not supported for" -msgstr "La restauration des valeurs par défaut n'est pas suppotée pour" +msgstr "La restauration des valeurs par défaut n'est pas supportée pour" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:304 msgid "" diff --git a/src/calibre/translations/he.po b/src/calibre/translations/he.po index 3af329b358..2ceaca90cb 100644 --- a/src/calibre/translations/he.po +++ b/src/calibre/translations/he.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-10-28 00:31+0000\n" -"PO-Revision-Date: 2010-10-28 02:18+0000\n" -"Last-Translator: Kovid Goyal <Unknown>\n" +"POT-Creation-Date: 2010-11-27 20:21+0000\n" +"PO-Revision-Date: 2010-11-30 00:56+0000\n" +"Last-Translator: Eran Cohen <Unknown>\n" "Language-Team: Hebrew <he@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-10-29 05:24+0000\n" +"X-Launchpad-Export-Date: 2010-11-30 04:45+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -27,21 +27,21 @@ msgstr "לא עושה דבר" #: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:74 #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:76 #: /home/kovid/work/calibre/src/calibre/devices/kobo/books.py:24 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:444 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:448 #: /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/sony_cache.py:643 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:657 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:56 #: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:407 #: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:124 -#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:70 -#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:72 -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:336 -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:339 +#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:93 +#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:95 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:338 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:341 #: /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 @@ -54,8 +54,8 @@ msgstr "לא עושה דבר" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:606 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:36 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:61 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:49 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:333 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:50 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:357 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:36 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 @@ -74,14 +74,14 @@ msgstr "לא עושה דבר" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:78 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:119 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:153 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:611 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:817 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:819 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:627 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:833 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:835 #: /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:911 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:916 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:982 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:913 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:918 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:984 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:143 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:150 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:64 @@ -89,7 +89,7 @@ msgstr "לא עושה דבר" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:118 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:173 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:174 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:40 #: /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 @@ -109,43 +109,43 @@ msgstr "לא עושה דבר" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:98 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:239 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:241 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:356 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:363 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:277 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:280 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:304 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:279 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:282 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:137 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:144 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:114 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:141 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:915 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:924 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1231 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1234 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1039 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1042 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:571 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:383 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:402 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:925 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1119 +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:244 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:395 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:918 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1112 #: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:112 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:189 #: /home/kovid/work/calibre/src/calibre/library/cli.py:215 -#: /home/kovid/work/calibre/src/calibre/library/database.py:913 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:399 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:411 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1283 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1387 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2161 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2163 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2295 -#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:224 +#: /home/kovid/work/calibre/src/calibre/library/database.py:914 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:375 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:387 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1254 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1355 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2151 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2153 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2284 +#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:229 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:139 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:142 #: /home/kovid/work/calibre/src/calibre/library/server/xml.py:78 @@ -185,14 +185,14 @@ msgstr "פעולה בממשק משתמש" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:386 #: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:22 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:251 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:283 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:206 msgid "Preferences" msgstr "הגדרות" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:17 +#: /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 " @@ -201,7 +201,7 @@ msgstr "" "עקוב אחר כל הקישורים המקומיים בקובץ HTML וצור קובץ ZIP המכיל את כל הקבצים " "המקושרים. תוסף זה רץ בכל פעם שמתווסף קובץ HTML לספרייה." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:53 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:51 msgid "" "Character encoding for the input HTML files. Common choices include: cp1252, " "latin1, iso-8859-1 and utf-8." @@ -209,7 +209,7 @@ msgstr "" "קידוד תווים עבור קבצי ה HTML הנכנסים. בחירות נפוצות כוללות: cp1252, latin1, " "iso-8859-1 ו-utf-8." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:60 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:58 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 " @@ -218,7 +218,7 @@ msgstr "" "צור ארכיון PMLZ אשר מכיל את קובץ הPML וכל התמונות בתוך תיקיית pmlname_img או " "images. תוסף זה רץ בכל פעם שמוסיפים קובץ PML לספריה." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:94 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:92 msgid "Extract cover from comic files" msgstr "חלץ עטיפה מקובץ קומיקס" @@ -265,98 +265,98 @@ msgstr "כתוב תגיות מטא מ- %s קבצים" msgid "Set metadata from %s files" msgstr "כתוב תגיות מטא מ- %s קבצים" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:706 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:717 msgid "Look and Feel" msgstr "מראה ותחושה" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:708 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:720 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:719 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:731 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:742 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:753 msgid "Interface" msgstr "ממשק" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:712 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:723 msgid "Adjust the look and feel of the calibre interface to suit your tastes" msgstr "התאם את המראה והמרגש של ממשק קליבר לטעם האישי שלך" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:718 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:729 msgid "Behavior" msgstr "אופן הפעולה" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:724 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735 msgid "Change the way calibre behaves" msgstr "שנה את אופן הפעולה של קליבר" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:729 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:740 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:209 msgid "Add your own columns" msgstr "הוסף טורים אישיים" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746 msgid "Add/remove your own columns to the calibre book list" msgstr "הוסף/הסר טורים אישיים לרשימת הספרים של קליבר" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:740 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:751 msgid "Customize the toolbar" msgstr "התאם אישית את סרגל הכלים" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:757 msgid "" "Customize the toolbars and context menus, changing which actions are " "available in each" msgstr "התאם אישית סרגלי כלים ותפריטי מידע, שנה את הפעולות האפשריות בכל אחד." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:752 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:763 msgid "Input Options" msgstr "אפשרויות קלט" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:754 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:765 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:776 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:787 msgid "Conversion" msgstr "המרה" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:758 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769 msgid "Set conversion options specific to each input format" msgstr "קבע אפשרויות המרה ספציפיות לפי סוג הקלט" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:763 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:774 msgid "Common Options" msgstr "אפשרויות נפוצות" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780 msgid "Set conversion options common to all formats" msgstr "קבע אפשרויות המרה המשותפות לכל סוגי הקבצים" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:774 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:785 msgid "Output Options" msgstr "אפשריות פלט" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791 msgid "Set conversion options specific to each output format" msgstr "קבע אפשרויות המרה ספציפיות לפי סוג הפלט" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:785 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:796 msgid "Adding books" msgstr "הוספת ספרים" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:787 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:799 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:811 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:823 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:798 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:810 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:822 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:834 msgid "Import/Export" msgstr "ייבוא/ייצוא" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:802 msgid "Control how calibre reads metadata from files when adding books" msgstr "שלוט בצורה שקליבר קורא מידע מטא מקבצים בזמן הוספת ספרים" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:797 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:808 msgid "Saving books to disk" msgstr "שומר ספרים לדיסק" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:803 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:814 msgid "" "Control how calibre exports files from its database to disk when using Save " "to disk" @@ -364,75 +364,75 @@ msgstr "" "קבע איך calibre מיצא קבצים ממסד הנתונים לדיסק הקשיח בבחירת \"שמירה לדיסק " "הקשיח\"" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:809 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:820 msgid "Sending books to devices" msgstr "שולח ספרים להתקנים" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:815 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:826 msgid "Control how calibre transfers files to your ebook reader" msgstr "שלוט בצורת ההעברה של קליבר לקורא הספרים שלך" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:821 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:832 msgid "Metadata plugboards" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:827 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838 msgid "Change metadata fields before saving/sending" msgstr "שנה שדות נתוני מטא לפני שמירה/שליחה" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:832 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:843 msgid "Sharing books by email" msgstr "שיתוף ספרים במייל" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:834 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:846 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:845 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:857 msgid "Sharing" msgstr "שיתוף" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:849 msgid "" "Setup sharing of books via email. Can be used for automatic sending of " "downloaded news to your devices" msgstr "" "הגדר שיתוף ספרים דרך מייל. יכול לשמש לשליחה אוטומטית של חדשות להתקנים" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:844 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:855 msgid "Sharing over the net" msgstr "שיתוף ברשת" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:850 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:861 msgid "" "Setup the calibre Content Server which will give you access to your calibre " "library from anywhere, on any device, over the internet" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:857 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:868 msgid "Plugins" msgstr "תוספים" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:859 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:871 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:870 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:882 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:893 msgid "Advanced" msgstr "הגדרות מתקדמות" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:874 msgid "Add/remove/customize various bits of calibre functionality" msgstr "הוסף/הסר/הגדר חלקים שונים של תפקודיות calibre" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:869 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:880 msgid "Tweaks" msgstr "שיפורים" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:875 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886 msgid "Fine tune how calibre behaves in various contexts" -msgstr "" +msgstr "כוונן את התנהגות קליבר בהקשרים שונים" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:880 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:891 msgid "Miscellaneous" msgstr "שונות" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:897 msgid "Miscellaneous advanced configuration" msgstr "הגדרות מתקדמות שונות" @@ -475,7 +475,7 @@ msgstr "" "מקור המסמך." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:59 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:433 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:444 msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "פרופיל זה מיועד עבור SONY PRS line מדגמים 500/505/600/700 ועוד." @@ -485,62 +485,62 @@ msgid "This profile is intended for the SONY PRS 300." msgstr "פרופיל זה מיועד עבור SONY PRS 300." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:80 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:470 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:484 msgid "This profile is intended for the SONY PRS-900." msgstr "פרופיל זה מיועד עבור SONY PRS-900." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:88 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:500 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:513 msgid "This profile is intended for the Microsoft Reader." msgstr "פרופיל זה מיועד עבור Microsoft Reader" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:99 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:511 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:524 msgid "This profile is intended for the Mobipocket books." msgstr "פרופיל זה מיועד עבור Mobipocket books." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:112 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:524 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:537 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "פרופיל זה מיועד עבור Hanlin V3 ומכשירים דומים." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:124 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:536 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:549 msgid "This profile is intended for the Hanlin V5 and its clones." msgstr "פרופיל זה מיועד עבור Hanlin V5 ומכשירים דומים" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:134 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:544 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:557 msgid "This profile is intended for the Cybook G3." msgstr "פרופיל זה מיועד עבור Cybook G3." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:147 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:557 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:570 msgid "This profile is intended for the Cybook Opus." msgstr "פרופיל זה מיועד עבור Cybook Opus." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:159 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:568 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:583 msgid "This profile is intended for the Amazon Kindle." msgstr "פרופיל זה מיועד עבור Amazon Kindle." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:171 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:609 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:631 msgid "This profile is intended for the Irex Illiad." msgstr "פרופיל זה מיועד עבור Irex Illiad." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:183 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:622 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "פרופיל זה מיועד עבור IRex Digital Reader 1000." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:196 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:636 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 msgid "This profile is intended for the IRex Digital Reader 800." msgstr "פרופיל זה מיועד עבור IRex Digital Reader 800" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:208 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:650 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 msgid "This profile is intended for the B&N Nook." msgstr "פרופיל זה מיועד עבור B&N Nook." @@ -557,28 +557,28 @@ msgstr "" "פרופיל זה מנסה לת ברירות מחדל סבירות והוא יעיל במידה ואתה רוצה להפיק מסמך " "שנועד להקרא במחשב או על מגוון מכשירים." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:270 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:276 msgid "" "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "מיועד ל-iPad ומכשירים דומים עם רזולוציה של 768x1024" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:424 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:435 msgid "Intended for generic tablet devices, does no resizing of images" -msgstr "" +msgstr "מיועד למכשירי קריאה גנריים, לא משנה מידות של תמונות" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:448 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:462 msgid "This profile is intended for the Kobo Reader." msgstr "פרופיל זה מיועד ל-Kobo Reader" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:461 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:475 msgid "This profile is intended for the SONY PRS-300." msgstr "פרופיל זה מיועד למכשיר SONY PRS-300." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:479 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:493 msgid "This profile is intended for the 5-inch JetBook." msgstr "פרופיל זה מיועד למכשיר 5-inch JetBook." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:488 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:502 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." @@ -586,11 +586,15 @@ msgstr "" "פרופיל זה מיועד למכשיר מקו SONY PRS. ה- 500/505/700 וכדומה בתצוגה " "אופקית.שימושי במיוחד עבור קומיקס." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:589 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:609 msgid "This profile is intended for the Amazon Kindle DX." msgstr "פרופיל זה מיועד למכשיר Amazon Kindle DX." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:663 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:684 +msgid "This profile is intended for the B&N Nook Color." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:695 msgid "This profile is intended for the Sanda Bambook." msgstr "הפרופיל הזה מיועד ל'סאנדה במבוק' (Sanda Bambook)." @@ -664,13 +668,13 @@ msgstr "הפסק את הרכיב המצויין" msgid "Communicate with Android phones." msgstr "מתקשר עם טלפון Android." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:53 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:56 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" msgstr "רשימת ספריות מופרדות בפסיקל שליחת ספרשת למכשיר." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:95 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:98 msgid "Communicate with S60 phones." msgstr "תקשר עם סלולרי S60" @@ -703,14 +707,14 @@ msgstr "מעדכן רישום נתוני מטא של החומרה" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:378 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:947 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:987 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2949 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2989 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2956 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2996 msgid "%d of %d" msgstr "%d מתוך %d" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:385 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:992 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2995 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3002 msgid "finished" msgstr "הסתיים" @@ -740,29 +744,29 @@ msgstr "" "לא היה אפשר להמיר חלק מתמונות השער.\n" "לחץ על 'הצג פרטים' לקבלת רשימה." -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2546 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2553 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:444 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:467 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:882 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:888 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:918 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:257 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:212 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:225 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2021 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:187 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:200 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2015 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:149 msgid "News" msgstr "חדשות" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2547 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2554 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:556 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1984 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2002 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:560 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1978 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1996 msgid "Catalog" msgstr "קטלוג" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2853 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2860 msgid "Communicate with iTunes." msgstr "תקשר עם אייטונס" @@ -784,6 +788,10 @@ msgstr "Kovid Goyal" msgid "Communicate with the Cybook Gen 3 / Opus eBook reader." msgstr "מחליף נתונים עם Cybook Gen 3 / Opus eBook reader." +#: /home/kovid/work/calibre/src/calibre/devices/cybook/driver.py:64 +msgid "Communicate with the Cybook Orizon eBook reader." +msgstr "תקשר עם הקורא האלקטרוני Cybook Orizon." + #: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:24 msgid "Communicate with the EB600 eBook reader." msgstr "מחליף נתונים עם EB600 eBook reader." @@ -796,6 +804,10 @@ msgstr "תקשר עם אצטק מנטור EB600" msgid "Communicate with the PocketBook 301 reader." msgstr "תקשר עם קורא הספריםפוקטבוק 301" +#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:233 +msgid "Communicate with the PocketBook 602 reader." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/edge/driver.py:17 msgid "Entourage Edge" msgstr "Entourage Edge" @@ -854,8 +866,8 @@ msgstr "מתקשר עם SpringDesign Alex eBook reader." #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:102 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:113 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:264 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:296 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:268 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:300 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:256 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:274 msgid "Removing books from device..." @@ -944,26 +956,26 @@ msgstr "" msgid "Getting list of books on device..." msgstr "קורא את רשימת הספרים מההתקן..." -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:300 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:307 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:304 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:311 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:281 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:286 msgid "Removing books from device metadata listing..." msgstr "מסיר ספרים מרשימת הספרים במכשיר" -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:312 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:347 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:316 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:351 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:219 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:250 msgid "Adding books to device metadata listing..." msgstr "מוסיף ספרים לרשימת הספרים במכשיר" -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:424 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:258 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:428 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:262 msgid "Not Implemented" msgstr "לא יושם" -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:425 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:429 msgid "" "\".kobo\" files do not exist on the device as books instead, they are rows " "in the sqlite database. Currently they cannot be exported or viewed." @@ -982,29 +994,37 @@ msgid "Communicate with the Sweex MM300" msgstr "תקשר עם סוויקס MM300" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:79 +msgid "Communicate with the Digma Q600" +msgstr "תקשר עם ה-Digma Q600" + +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:88 msgid "Communicate with the Kogan" msgstr "תקשר עם קוגן" -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:87 -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:114 +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:96 +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:123 msgid "Communicate with the Pandigital Novel" msgstr "תקשר עם פאן דיגיטאל נובל" -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:124 -msgid "Communicate with the VelocityMicro" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/devices/misc.py:142 +msgid "Communicate with the VelocityMicro" +msgstr "תקשר עם ה-VelocityMicro" + +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:160 msgid "Communicate with the GM2000" msgstr "תקשר עם GM2000" +#: /home/kovid/work/calibre/src/calibre/devices/misc.py:180 +msgid "Communicate with the Acer Lumiread" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:17 msgid "Communicate with the Nokia 770 internet tablet." msgstr "תקשר עם מחשב טאבלט נוקיה 770" #: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:40 msgid "Communicate with the Nokia 810/900 internet tablet." -msgstr "" +msgstr "תקשר עם ה-Nokia 810/900 internet tablet" #: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:74 msgid "Communicate with the Nokia E52" @@ -1018,6 +1038,14 @@ msgstr "מכשיר ה-Nook" msgid "Communicate with the Nook eBook reader." msgstr "מתקשר עם Nook eBook reader." +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 +msgid "Nook Color" +msgstr "נוק צבעוני (Nook Color)" + +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 +msgid "Communicate with the Nook Color eBook reader." +msgstr "תקשר עם הקורא האלקטרוני, נוק הצבעוני (Nook Color)." + #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." msgstr "מתקשר עם Nuut2 eBook reader" @@ -1053,11 +1081,15 @@ msgstr "תקשר עם קורא הספרים טקלסט K3/K5" msgid "Communicate with the Newsmy reader." msgstr "תקשר עם קורא הספרים ניוסמי" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:48 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:47 +msgid "Communicate with the Pico reader." +msgstr "תקשר עם ה-Pico reader" + +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:57 msgid "Communicate with the iPapyrus reader." msgstr "תקשר עם קורא הספרים אייפפירוס" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:59 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:68 msgid "Communicate with the Sovos reader." msgstr "תקשר עם קורא הספרים סובוס" @@ -1068,6 +1100,7 @@ msgstr "לא מצליח למצוא את כונן %s. נסה לאתחל את המ #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:438 msgid "Unable to detect the %s mount point. Try rebooting." msgstr "" +"לא מצליח למצוא את עיגון החומרה (mount point) ה-%s. נסה לאתחל את המחשב." #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:503 msgid "Unable to detect the %s disk drive." @@ -1075,7 +1108,7 @@ msgstr "לא מצליח למצוא את כונן %s." #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:596 msgid "Could not find mount helper: %s." -msgstr "" +msgstr "לא הצליח למצוא את עזר עיגון חומרה (mount helper): %s" #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:608 msgid "" @@ -1092,6 +1125,8 @@ msgid "" "The main memory of %s is read only. This usually happens because of file " "system errors." msgstr "" +"הזיכרון של %s הינו לקריאה בלבד. דבר זה לרוב קורה בגלל שגיאות במערכת הקבצים " +"(file system)." #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:815 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:817 @@ -1164,7 +1199,7 @@ msgstr "שולח מטא תגיות למכשיר" #: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:182 msgid "Rendered %s" -msgstr "" +msgstr "חובר %s" #: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:185 msgid "Failed %s" @@ -1321,15 +1356,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:183 msgid "List builtin recipes" -msgstr "" +msgstr "פרט מתכונים מובנים" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:256 msgid "Output saved to" -msgstr "" +msgstr "הפלט נשמר אל" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:99 msgid "Level of verbosity. Specify multiple times for greater verbosity." -msgstr "" +msgstr "רמת פירוט אודות המתבצע. בחר מספר פעמים לרמת פירוט גבוהה." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:106 msgid "" @@ -1419,13 +1454,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:217 msgid "Don't add auto-detected chapters to the Table of Contents." -msgstr "" +msgstr "את תוסיף פרקים שנמצאו אוטומטית לטבלת תוכן-העניינים." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:224 msgid "" "If fewer than this number of chapters is detected, then links are added to " "the Table of Contents. Default: %default" msgstr "" +"אם מספר הפרקים שנמצאו קטן מהמספר הנקוב, אז קישורים (לינקים) יווצרו בתוכן-" +"העניינים. ברירת מחדל: %default" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:231 msgid "" @@ -1603,15 +1640,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:449 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:38 msgid "Set the title." -msgstr "" +msgstr "קבע את הכותרת." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:453 msgid "Set the authors. Multiple authors should be separated by ampersands." -msgstr "" +msgstr "קבע את המחברים. אם יש כמה, הפרד בינהם בעזרת התו אמפרסנד (&)." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:458 msgid "The version of the title to be used for sorting. " -msgstr "" +msgstr "גרסת המסמך, לשימוש במיון. " #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:462 msgid "String to be used when sorting by author. " @@ -1619,64 +1656,64 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:466 msgid "Set the cover to the specified file or URL" -msgstr "" +msgstr "קבע את הכריכה כקובץ המצויין או כתובת אינטרנט (URL)" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:470 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:54 msgid "Set the ebook description." -msgstr "" +msgstr "קבע את תיאור הספר." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:474 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:56 msgid "Set the ebook publisher." -msgstr "" +msgstr "קבע את המוציא לאור." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:478 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:60 msgid "Set the series this ebook belongs to." -msgstr "" +msgstr "קבע את הסדרה לה הספר שייך." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:482 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:62 msgid "Set the index of the book in this series." -msgstr "" +msgstr "קבע את מספר הספר בסדרה." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:486 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:64 msgid "Set the rating. Should be a number between 1 and 5." -msgstr "" +msgstr "קבע את דירוג הספר. מספר זה צריך להיות בין 1 ל-5." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:490 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:66 msgid "Set the ISBN of the book." -msgstr "" +msgstr "קבע את המספר הסטנדרטי של הספר (ISBN)." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:494 #: /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 "" +msgstr "קבע תוייות לספר זה. הפרד תוויות עם פסיקים." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:498 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:70 msgid "Set the book producer." -msgstr "" +msgstr "קבע את מפיק הספר." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:502 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:72 msgid "Set the language." -msgstr "" +msgstr "קבע את השפה." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:506 msgid "Set the publication date." -msgstr "" +msgstr "קבע את תאריך היציאה לאור." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:510 msgid "Set the book timestamp (used by the date column in calibre)." -msgstr "" +msgstr "קבע את זמן הספר (יופיע בעמודת 'תאריך' בקליבר)." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:610 msgid "Could not find an ebook inside the archive" -msgstr "" +msgstr "הספר לא נמצא בתוך הארכיון" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:668 msgid "Values of series index and rating must be numbers. Ignoring" @@ -1684,23 +1721,23 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:675 msgid "Failed to parse date/time" -msgstr "" +msgstr "קריאת התאריך/זמן נכשלה." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:830 msgid "Converting input to HTML..." -msgstr "" +msgstr "ממיר את הקלט ל-HTML..." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:858 msgid "Running transforms on ebook..." -msgstr "" +msgstr "מריץ שינויים על הספר..." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:945 msgid "Creating" -msgstr "" +msgstr "מייצר" #: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/__init__.py:20 msgid "Failed to parse: %s with error: %s" -msgstr "" +msgstr "קריאת %s נכשלה עם השגיאה: %s" #: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/__init__.py:26 msgid "ePub Fixer" @@ -1794,19 +1831,19 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:170 -#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:205 +#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:203 msgid "Start" -msgstr "" +msgstr "התחל" #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/fb2ml.py:147 #: /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 "תוכן העניינים:" #: /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 "" +msgstr "אל תשים את תוכן העניינים בתחילת הספר." #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/output.py:21 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/output.py:32 @@ -1814,7 +1851,7 @@ msgstr "" #: /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 "" +msgstr "הוסף את תוכן העניינים בתחילת הספר." #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/output.py:24 msgid "" @@ -1822,12 +1859,16 @@ msgid "" "experimental. It can cause conversion to fail. It can also produce " "unexpected output." msgstr "" +"נסה להפוך את הפרקים לחלקים נפרדים. אזהרה: אופציה זו הינה ניסיונית. היא עלולה " +"לגרום להמרה להיכשל. היא גם עלולה לגרום לפלט לא צפוי." #: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:249 msgid "" "Traverse links in HTML files breadth first. Normally, they are traversed " "depth first." msgstr "" +"עבור על הקישורים בקבצי ה-HTML בצורה רוחבית (breadth first). לרוב המעבר נעשה " +"לעומק כל קישור (depth first)." #: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:256 msgid "" @@ -1844,10 +1885,26 @@ msgid "" "pipeline." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:273 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/output.py:33 +msgid "CSS file used for the output instead of the default file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/html/output.py:36 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." +"Template used for generation of the html index file instead of the default " +"file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/html/output.py:39 +msgid "" +"Template used for the generation of the html contents of the book instead of " +"the default file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/html/output.py:42 +msgid "" +"Extract the contents of the generated ZIP file to the specified directory. " +"WARNING: The contents of the directory will be deleted." msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/lit/from_any.py:47 @@ -1881,23 +1938,23 @@ 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 "" +msgstr "עיבוד הקובץ %s כשל" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:544 msgid "%s is an empty file" -msgstr "" +msgstr "%s הינה תיקייה ריקה" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:564 msgid "Failed to parse link %s %s" -msgstr "" +msgstr "עיבוד הקישור %s %s כשל" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:608 msgid "Cannot add link %s to TOC" -msgstr "" +msgstr "הוספת הקישור %s לתוכן העניינים לא הצליחה" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:957 msgid "Unable to process image %s. Error: %s" -msgstr "" +msgstr "לא מצליח לעבד את התמונה %s. שגיאה: %s" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1002 msgid "Unable to process interlaced PNG %s" @@ -1908,33 +1965,37 @@ msgid "" "Could not process image: %s\n" "%s" msgstr "" +"עיבוד התמונה לא הצליח: %s\n" +"%s" #: /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 "" +msgstr "שגיאה קרתה בעת עיבוד הטבלה: %s. מתעלם מהגדרת הטבלה." #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1774 msgid "" "Bad table:\n" "%s" msgstr "" +"טבלה בלתי תקינה:\n" +"%s" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1796 msgid "Table has cell that is too large" -msgstr "" +msgstr "לטבלה תא גדול מדי" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1862 msgid "Could not read cover image: %s" -msgstr "" +msgstr "קריאת תמונת הכריכה לא הצליחה: %s" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1865 msgid "Cannot read from: %s" -msgstr "" +msgstr "לא יכול לקרוא מ: %s" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1994 msgid "Failed to process opf file" -msgstr "" +msgstr "עיבוד קובץ ה-opf לא הצליח" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:136 msgid "" @@ -1948,7 +2009,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:139 msgid "Do not save embedded image and font files to disk" -msgstr "" +msgstr "אל תשמור קבצי תמונות מקובעות ופונטים לדיסק הקשיח." #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:158 msgid "Parsing LRF..." @@ -1956,7 +2017,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:161 msgid "Creating XML..." -msgstr "" +msgstr "יוצר XML..." #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:163 msgid "LRS written to " @@ -1964,7 +2025,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrs/convert_from.py:267 msgid "Could not read from thumbnail file:" -msgstr "" +msgstr "הקריאה מקובץ התמונות הממוזערות לא הצליחה:" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrs/convert_from.py:287 msgid "" @@ -1977,7 +2038,7 @@ 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:128 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:126 msgid "Verbose processing" msgstr "" @@ -2138,23 +2199,23 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:605 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:45 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:102 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:65 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:380 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:930 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:373 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:923 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:303 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:570 msgid "Title" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:606 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:67 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:385 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:931 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:924 msgid "Author(s)" msgstr "" @@ -2170,37 +2231,36 @@ msgid "Producer" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:609 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:37 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:212 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:206 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:189 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:104 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:72 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:332 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1138 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1131 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:178 msgid "Comments" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:611 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:154 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:27 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:29 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:73 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:320 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1134 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:313 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1127 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:160 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:608 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:655 msgid "Tags" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:613 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:152 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:26 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:337 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1143 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1136 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:108 msgid "Series" msgstr "" @@ -2210,12 +2270,12 @@ msgid "Language" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:616 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1126 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1119 msgid "Timestamp" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:618 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:151 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:157 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:70 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:258 @@ -2320,6 +2380,7 @@ msgid "No cover found" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:28 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:44 msgid "Cover download" msgstr "" @@ -2365,49 +2426,53 @@ msgstr "" msgid "Downloads metadata from Douban.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:51 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:57 msgid "Metadata download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:128 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:141 msgid "ratings" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:128 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:141 msgid "tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:129 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:142 msgid "description/reviews" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:130 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:143 msgid "Download %s from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:156 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:150 +msgid "Convert comments downloaded from %s to plain text" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:178 msgid "Downloads metadata from Google Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:173 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:195 msgid "Downloads metadata from isbndb.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:201 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:223 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:211 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:233 msgid "Downloads social metadata from amazon.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:230 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:254 msgid "Downloads series/tags/rating information from librarything.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:109 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:107 msgid "" "\n" "%prog [options] key\n" @@ -2421,23 +2486,24 @@ msgid "" "\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:120 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:118 msgid "The ISBN ID of the book you want metadata for." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:122 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:120 msgid "The author whose book to search for." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:124 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:122 msgid "The title of the book to search for." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:126 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:124 msgid "The publisher of the book to search for." msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:77 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:336 msgid " not found." msgstr "" @@ -2450,8 +2516,24 @@ msgid "" "LibraryThing.com\n" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:25 +msgid "Downloads metadata from french Nicebooks" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:41 +msgid "Downloads covers from french Nicebooks" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:332 +msgid "Nicebooks timed out. Try again later." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/nicebooks.py:337 +msgid "An errror occured with Nicebooks cover fetcher" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1399 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 msgid "Cover" msgstr "" @@ -2486,74 +2568,74 @@ msgstr "" msgid "All articles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:259 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:262 msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1400 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 msgid "Title Page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1401 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 #: /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:199 msgid "Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1402 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 msgid "Index" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1403 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 msgid "Glossary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1404 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 msgid "Acknowledgements" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1405 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 msgid "Bibliography" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1406 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 msgid "Colophon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1407 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 msgid "Copyright" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1408 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 msgid "Dedication" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1409 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 msgid "Epigraph" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1410 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 msgid "Foreword" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1411 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 msgid "List of Illustrations" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1412 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 msgid "List of Tables" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1413 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 msgid "Notes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1414 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1416 msgid "Preface" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1415 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1417 msgid "Main Text" msgstr "" @@ -2561,7 +2643,7 @@ msgstr "" msgid "%s format books are not supported" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:103 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:156 msgid "Book %s of %s" msgstr "" @@ -2570,9 +2652,9 @@ msgstr "" msgid "HTML TOC generation options." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:153 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:71 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:606 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:653 msgid "Rating" msgstr "" @@ -2602,7 +2684,7 @@ msgstr "" msgid "Sidebar" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:22 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:23 #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/input.py:23 #: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:24 msgid "" @@ -2610,7 +2692,7 @@ msgid "" "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/pdb/input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:28 msgid "" @@ -2857,20 +2939,20 @@ msgid "" "Specify the character encoding of the output document. The default is cp1252." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:196 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:256 msgid "" "This RTF file has a feature calibre does not support. Convert it to HTML " "first and then try it.\n" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:25 #: /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/snb/output.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:29 #: /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 " @@ -2879,17 +2961,34 @@ msgid "" "minimum of 25 characters. Use 0 to disable line splitting." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:124 +#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:36 +msgid "" +"Specify whether or not to insert an empty line between two paragraphs." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:40 +msgid "" +"Specify whether or not to insert two space characters to indent the first " +"line of each paragraph." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:44 +msgid "" +"Specify whether or not to hide the chapter title for each chapter. Useful " +"for image-only output (eg. comics)." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:122 msgid "Start Page" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:132 #: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:134 -#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:136 msgid "Cover Pages" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:149 -#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:152 +#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:147 +#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:150 msgid " (Preface)" msgstr "" @@ -3046,7 +3145,7 @@ msgid "Disable UI animations" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:487 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:509 msgid "Copied" msgstr "" @@ -3106,101 +3205,101 @@ msgstr "" msgid "How many empty books should be added?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:143 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:206 msgid "Uploading books to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:170 msgid "Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:165 msgid "EPUB Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 msgid "LRF Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:167 msgid "HTML Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:168 msgid "LIT Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:169 msgid "MOBI Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:170 msgid "Topaz books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:171 msgid "Text books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:172 msgid "PDF Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:173 msgid "SNB Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:174 msgid "Comics" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:175 msgid "Archives" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:179 msgid "Supported books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:215 msgid "Merged some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:216 msgid "" "Some duplicates were found and merged into the following existing books:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:225 msgid "Failed to read metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:226 msgid "Failed to read metadata from the following" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:241 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:246 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:265 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:250 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:269 msgid "Add to library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:246 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:250 #: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:56 #: /home/kovid/work/calibre/src/calibre/gui2/actions/tweak_epub.py:28 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:95 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:119 msgid "No book selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:259 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:263 msgid "" "The following books are virtual and cannot be added to the calibre library:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:265 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:269 msgid "No book files found" msgstr "" @@ -3213,7 +3312,7 @@ msgid "Add books to your calibre library from the connected device" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:20 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:536 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:542 msgid "Fetch annotations (experimental)" msgstr "" @@ -3308,7 +3407,7 @@ msgid "Checking database integrity" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:128 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:645 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:593 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc.py:41 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:54 msgid "Error" @@ -3324,15 +3423,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:135 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." +"The following books had formats or covers listed in the database that are " +"not actually available. The entries for the formats/covers 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/actions/choose_library.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:51 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:139 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:162 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:112 msgid "%d books" msgstr "" @@ -3468,7 +3567,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:391 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:734 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 msgid "Not allowed" msgstr "" @@ -3500,6 +3599,10 @@ msgstr "" msgid "Starting conversion of %d book(s)" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:170 +msgid "Empty output file, probably the conversion process crashed" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:83 msgid "Copy to library" msgstr "" @@ -3534,9 +3637,9 @@ msgid "Could not copy books: " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:147 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:708 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:679 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:664 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:687 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:190 msgid "Failed" msgstr "" @@ -3597,14 +3700,14 @@ msgid "Main memory" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:473 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:482 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:467 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:476 msgid "Storage Card A" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:117 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:475 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:484 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:478 msgid "Storage Card B" msgstr "" @@ -3745,7 +3848,7 @@ msgid "covers" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:96 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:224 msgid "metadata" msgstr "" @@ -3767,26 +3870,26 @@ msgstr "" msgid "At least two books must be selected for merging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:197 msgid "" "Book formats and metadata from the selected books will be added to the " -"<b>first selected book.</b> ISBN will <i>not</i> be merged.<br><br> The " +"<b>first selected book</b> (%s). ISBN will <i>not</i> be merged.<br><br> The " "second and subsequently selected books will not be deleted or " "changed.<br><br>Please confirm you want to proceed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:208 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:209 msgid "" "Book formats and metadata from the selected books will be merged into the " -"<b>first selected book</b>. ISBN will <i>not</i> be merged.<br><br>After " -"merger the second and subsequently selected books will be <b>deleted</b>. " -"<br><br>All book formats of the first selected book will be kept and any " -"duplicate formats in the second and subsequently selected books will be " -"permanently <b>deleted</b> from your computer.<br><br> Are you <b>sure</b> " -"you want to proceed?" +"<b>first selected book</b> (%s). ISBN will <i>not</i> be " +"merged.<br><br>After merger the second and subsequently selected books will " +"be <b>deleted</b>. <br><br>All book formats of the first selected book will " +"be kept and any duplicate formats in the second and subsequently selected " +"books will be permanently <b>deleted</b> from your computer.<br><br> Are " +"you <b>sure</b> you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:222 msgid "" "You are about to merge more than 5 books. Are you <b>sure</b> you want to " "proceed?" @@ -3833,6 +3936,7 @@ msgid "Ctrl+P" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:23 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:200 msgid "Run welcome wizard" msgstr "" @@ -3918,7 +4022,7 @@ msgid "Click the show details button to see which ones." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:16 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:613 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:660 msgid "Show book details" msgstr "" @@ -4005,21 +4109,21 @@ msgstr "" msgid "View specific format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:95 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:158 msgid "Cannot view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:100 #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77 msgid "Choose the format to view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:108 msgid "Multiple Books Selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:109 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 " @@ -4027,11 +4131,11 @@ msgid "" "continue?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:118 msgid "Cannot open folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:159 msgid "%s has no available formats." msgstr "" @@ -4056,7 +4160,7 @@ msgid "The specified directory could not be processed." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:229 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:857 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:813 msgid "No books" msgstr "" @@ -4241,49 +4345,49 @@ msgid "" "&Multiple books per folder, assumes every ebook file is a different book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:23 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:47 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:313 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:119 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:120 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:121 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:137 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:327 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1124 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1117 msgid "Path" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:24 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:50 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:123 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:124 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:127 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:319 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:24 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:117 msgid "Formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:25 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:934 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1127 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:927 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1120 msgid "Collections" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:49 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:60 msgid "Click to open" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:50 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:319 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:325 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:331 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1133 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1137 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:324 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1126 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1130 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:83 @@ -4291,8 +4395,8 @@ msgstr "" msgid "None" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:312 -msgid "Click to open Book Details window" +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:404 +msgid "Double-click to open Book Details window" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:16 @@ -4336,7 +4440,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:82 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:54 @@ -4353,7 +4457,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:43 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:33 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:39 #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:80 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:51 @@ -4379,7 +4483,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar_ui.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/tweaks_ui.py:49 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:123 msgid "Form" msgstr "" @@ -4459,23 +4563,23 @@ msgstr "" msgid "E-book options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:83 msgid "'Don't include this book' tag:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:84 msgid "'Mark this book as read' tag:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:85 msgid "Additional note tag prefix:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:86 msgid "Regex pattern describing tags to exclude as genres:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:87 msgid "" "Regex tips:\n" "- The default regex - \\[.+\\] - excludes genre tags of the form [tag], " @@ -4484,26 +4588,43 @@ msgid "" "Genre Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:90 msgid "Include 'Titles' Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:91 msgid "Include 'Recently Added' Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:92 msgid "Sort numbers as text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:93 msgid "Include 'Series' Section" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:94 +msgid "Wishlist tag:" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:33 msgid "Tab template for catalog.ui" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:25 +msgid "Bold" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:26 +msgid "Italic" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:28 +msgid "Underline" +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 " @@ -4511,11 +4632,11 @@ msgid "" "specified in the Preferences" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:70 msgid "Bulk Convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 msgid "Options specific to the output format." msgstr "" @@ -4962,7 +5083,7 @@ msgid "Change the title of this book" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:179 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:333 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:336 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:377 msgid "&Author(s): " msgstr "" @@ -4978,7 +5099,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:182 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:342 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:345 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:388 msgid "&Publisher: " msgstr "" @@ -4989,7 +5110,7 @@ msgid "Ta&gs: " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:184 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:347 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:390 msgid "" "Tags categorize the book. This is particularly useful while searching. " @@ -4997,15 +5118,16 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:185 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:354 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 msgid "&Series:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:352 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:356 #: /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 "List of known series. You can add new series." @@ -5184,7 +5306,7 @@ msgid "Options specific to the input format." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:117 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:53 msgid "Dialog" @@ -5202,6 +5324,18 @@ msgstr "" msgid "SNB Output" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:40 +msgid "Hide chapter name" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:41 +msgid "Insert space before the first line for each paragraph" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:42 +msgid "Insert empty line between paragraphs" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17 msgid "" "Structure\n" @@ -5359,8 +5493,8 @@ msgid "Force maximum line length" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:70 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:62 @@ -5495,7 +5629,7 @@ msgid "Automatically number books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:499 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:367 msgid "Force numbers to start with " msgstr "" @@ -5511,228 +5645,171 @@ msgstr "" msgid "tags to remove" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:44 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:136 msgid "No details available." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:183 msgid "Device no longer connected." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:301 msgid "Get device information" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:312 msgid "Get list of books on device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:322 msgid "Get annotations from device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:334 msgid "Send metadata to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:339 msgid "Send collections to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:380 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:374 msgid "Upload %d books to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:395 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:389 msgid "Delete books from device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:412 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:406 msgid "Download books from device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:422 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:416 msgid "View book on device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:456 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:450 msgid "Set default send to device action" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:462 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:456 msgid "Send to main memory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:464 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:458 msgid "Send to storage card A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:460 msgid "Send to storage card B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:471 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:480 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:465 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:474 msgid "Main Memory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:491 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:486 +msgid "Send specific format to" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:487 msgid "Send and delete from library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:492 -msgid "Send specific format" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:528 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:530 msgid "Eject device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:646 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:594 msgid "Error communicating with device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:667 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:605 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1089 +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:296 +msgid "No suitable formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:623 msgid "Select folder to open as device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:714 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:670 msgid "Error talking to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:715 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:671 msgid "" "There was a temporary error talking to the device. Please unplug and " "reconnect the device and or reboot." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:758 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:714 msgid "Device: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:760 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:716 msgid " detected." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:858 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:814 msgid "selected to send" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:863 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:819 msgid "Choose format to send to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:872 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:828 msgid "No device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:873 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:829 msgid "Cannot send: No device is connected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:876 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:880 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:832 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:836 msgid "No card" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:877 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:833 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:837 msgid "Cannot send: Device has no storage card" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:922 -msgid "E-book:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:925 -msgid "Attached, you will find the e-book" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:926 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:107 -msgid "by" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:927 -msgid "in the %s format." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:940 -msgid "Sending email to" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:970 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:978 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1071 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1156 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1275 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1283 -msgid "No suitable formats" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:971 -msgid "Auto convert the following books before sending via email?" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:979 -msgid "" -"Could not email the following books as no suitable formats were found:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:997 -msgid "Failed to email books" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:998 -msgid "Failed to email the following books:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1002 -msgid "Sent by email:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1030 -msgid "News:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1031 -msgid "Attached is the" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1042 -msgid "Sent news to" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1072 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1157 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1276 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:883 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:966 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1083 msgid "Auto convert the following books before uploading to the device?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1102 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:912 msgid "Sending catalogs to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1189 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:997 msgid "Sending news to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1242 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1050 msgid "Sending books to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1284 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1090 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:1348 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1154 msgid "No space on device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1349 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1155 msgid "" "<p>Cannot upload books to device there is no more free space available " msgstr "" @@ -5775,23 +5852,26 @@ msgstr "" msgid "" "<p>Enter a list of ISBNs in the box to the left, one per line. calibre will " "automatically create entries for books based on the ISBN and download " -"metadata and covers for them.<p>Any invalid ISBNs in the list will be " -"ignored." +"metadata and covers for them.</p>\n" +"<p>Any invalid ISBNs in the list will be ignored.</p>\n" +"<p>You can also specify a file that will be added with each ISBN. To do this " +"enter the full path to the file after a <code>>></code>. For example:</p>\n" +"<p><code>9788842915232 >> %s</code></p>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:53 msgid "&Paste from clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:80 msgid "Fit &cover within view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:81 msgid "&Previous" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:82 msgid "&Next" msgstr "" @@ -5841,21 +5921,32 @@ msgstr "" msgid "Names to ignore:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:59 +msgid "" +"Enter comma-separated standard file name wildcards, such as synctoy*.dat" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:62 msgid "Extensions to ignore" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:67 +msgid "" +"Enter comma-separated extensions without a leading dot. Used only in book " +"folders" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:119 msgid "Path from library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:119 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:89 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:225 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:248 msgid "Name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:136 msgid "" "The marked files and folders will be <b>permanently deleted</b>. Are you " "sure?" @@ -5902,7 +5993,7 @@ msgid "No location selected" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:628 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:654 msgid "Bad location" msgstr "" @@ -5943,6 +6034,7 @@ msgid "Set options for converting %s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:211 msgid "&Title:" msgstr "" @@ -5978,15 +6070,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:69 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:932 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:925 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:31 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:294 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:568 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569 msgid "Date" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1123 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1116 msgid "Format" msgstr "" @@ -5999,12 +6091,12 @@ msgid "Author sort" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:115 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:590 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:597 msgid "Invalid author name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:591 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:598 msgid "Author names cannot contain & characters." msgstr "" @@ -6147,59 +6239,58 @@ msgstr "" msgid "Working" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:184 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:386 msgid "Lower Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:385 msgid "Upper Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:188 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:388 msgid "Title Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:191 msgid "Character match" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:192 msgid "Regular Expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:195 msgid "Replace field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:196 msgid "Prepend to field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:197 msgid "Append to field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:208 msgid "Editing meta information for <b>%d books</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:259 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:261 msgid "Book %d:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:276 msgid "" "<b>You can destroy your library using this feature.</b> Changes are " -"permanent. There is no undo function. This feature is experimental, and " -"there may be bugs. You are strongly encouraged to back up your library " -"before proceeding.<p>Search and replace in text fields using character " -"matching or regular expressions. " +"permanent. There is no undo function. You are strongly encouraged to back up " +"your library before proceeding.<p>Search and replace in text fields using " +"character matching or regular expressions. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:284 msgid "" "In character mode, the field is searched for the entered search text. The " "text is replaced by the specified replacement text everywhere it is found in " @@ -6209,7 +6300,7 @@ msgid "" "text will match both upper- and lower-case letters" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:295 msgid "" "In regular expression mode, the search text is an arbitrary python-" "compatible regular expression. The replacement text can contain " @@ -6224,110 +6315,110 @@ msgid "" "function." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:436 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:440 msgid "You must specify a destination when source is a composite field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:528 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:536 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:627 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:540 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:635 msgid "Search/replace invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:533 msgid "" "Authors cannot be set to the empty string. Book title %s not processed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:537 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:541 msgid "Title cannot be set to the empty string. Book title %s not processed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:628 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:636 msgid "Search pattern is invalid: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:665 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:673 msgid "" "Applying changes to %d books.\n" "Phase {0} {1}%%." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:332 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:335 msgid "Edit Meta information" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:337 msgid "A&utomatically set author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:335 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:338 msgid "Author s&ort: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:336 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:339 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:337 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:340 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:384 msgid "&Rating:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:338 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:339 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:341 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:342 #: /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 "Rating of this book. 0-5 stars" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:343 msgid "No change" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:341 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:344 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:387 msgid " stars" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:343 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:346 msgid "Add ta&gs: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:345 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:346 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:349 #: /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 "Open Tag Editor" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:350 msgid "&Remove tags:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:351 msgid "Comma separated list of tags to remove from the books. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:349 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:352 msgid "Check this box to remove all tags from the books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:353 msgid "Remove all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:357 msgid "If checked, the series will be cleared" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:358 msgid "Clear series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:359 msgid "" "If not checked, the series number for the books will be set to 1.\n" "If checked, selected books will be automatically numbered, in the order\n" @@ -6335,110 +6426,110 @@ msgid "" "Book A will have series number 1 and Book B series number 2." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:363 msgid "Automatically number books in this series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:364 msgid "" "Series will normally be renumbered from the highest number in the database\n" "for that series. Checking this box will tell calibre to start numbering\n" "from the value in the box" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:365 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:368 msgid "Remove &format:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:366 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:369 msgid "&Swap title and author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:367 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:370 msgid "" "Force the title to be in title case. If both this and swap authors are " "checked,\n" "title and author are swapped before the title case is set" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:369 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:372 msgid "Change title to title case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:370 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:373 msgid "" "Remove stored conversion settings for the selected books.\n" "\n" "Future conversion of these books will use the default settings." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:373 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:376 msgid "Remove &stored conversion settings for the selected books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:377 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:424 msgid "&Basic metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:375 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:378 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:425 msgid "&Custom metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:379 msgid "Search &field:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:377 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:380 msgid "The name of the field that you want to search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:381 msgid "Search mode:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:379 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:382 msgid "" "Choose whether to use basic text matching or advanced regular expression " "matching" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:380 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:383 msgid "&Search for:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:381 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:384 msgid "" "Enter the what you are looking for, either plain text or a regular " "expression, depending on the mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:385 msgid "" "Check this box if the search string must match exactly upper and lower case. " "Uncheck it if case is to be ignored" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:383 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:386 msgid "Case sensitive" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:387 msgid "&Replace with:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:388 msgid "" "The replacement text. The matched search text will be replaced with this " "string" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:386 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:389 msgid "Apply function after replace:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:387 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:390 msgid "" "Specify how the text is to be processed after matching and replacement. In " "character mode, the entire\n" @@ -6446,49 +6537,49 @@ msgid "" "processed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:392 msgid "&Destination field:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:390 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:393 msgid "" "The field that the text will be put into after all replacements. If blank, " "the source field is used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:391 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:394 msgid "Mode:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:392 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:395 msgid "Specify how the text should be copied into the destination." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:396 msgid "" "If the replace mode is prepend or append, then this box indicates whether a " "comma or\n" "nothing should be put between the original text and the inserted text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:395 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:398 msgid "use comma" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:396 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:399 msgid "Test &text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:397 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:400 msgid "Test re&sult" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:398 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:401 msgid "Your test:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:399 -msgid "&Search and replace (experimental)" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:402 +msgid "&Search and replace" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:91 @@ -6571,72 +6662,74 @@ msgid "This ISBN number is invalid" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:611 -msgid "Cannot use tag editor" +msgid "Tags changed" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:612 -msgid "The tags editor cannot be used if you have modified the tags" +msgid "" +"You have changed the tags. In order to use the tags editor, you must either " +"discard or apply these changes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:632 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:639 msgid "Downloading cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:644 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:649 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:655 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:660 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:651 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:656 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:662 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:667 msgid "Cannot fetch cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:645 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:656 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:661 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:652 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:663 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:668 msgid "<b>Could not fetch cover.</b><br/>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:646 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:653 msgid "The download timed out." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:650 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:657 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:662 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:669 msgid "" "For the error message from each cover source, click Show details below." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:669 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:676 msgid "Bad cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:670 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:677 msgid "The cover is not a valid picture" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:703 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:710 msgid "There were errors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:704 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:711 msgid "There were errors downloading social metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:735 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:742 msgid "Cannot fetch metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:736 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:743 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:823 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:833 msgid "Permission denied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:824 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:834 msgid "Could not open %s. Is it being used by another program?" msgstr "" @@ -6755,20 +6848,21 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:217 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:125 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133 msgid "&Username:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:64 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:218 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:126 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:135 msgid "&Password:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:219 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:167 msgid "&Show password" msgstr "" @@ -6996,61 +7090,98 @@ msgstr "" msgid "Negate" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 msgid "Advanced Search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:119 -msgid "Find entries that have..." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:120 -msgid "&All these words:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:121 -msgid "This exact &phrase:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:122 -msgid "&One or more of these words:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:123 -msgid "But dont show entries that have..." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:124 -msgid "Any of these &unwanted words:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 msgid "What kind of match to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:126 -msgid "Contains: the word or phrase matches anywhere in the metadata" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:127 -msgid "Equals: the word or phrase must match an entire metadata field" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +msgid "Equals: the word or phrase must match the entire metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 msgid "" -"Regular expression: the expression must match anywhere in the metadata" +"Regular expression: the expression must match anywhere in the metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:129 -msgid " " -msgstr " " +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +msgid "Find entries that have..." +msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +msgid "&All these words:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +msgid "This exact &phrase:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +msgid "&One or more of these words:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 +msgid "But dont show entries that have..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 +msgid "Any of these &unwanted words:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 msgid "" "See the <a href=\"http://calibre-ebook.com/user_manual/gui.html#the-search-" "interface\">User Manual</a> for more help" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:210 +msgid "A&dvanced Search" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:212 +msgid "Enter the title." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:213 +msgid "&Author:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 +msgid "Ta&gs:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:216 +msgid "Enter an author's name. Only one author can be used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:217 +msgid "" +"Enter a series name, without an index. Only one series name can be used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:218 +msgid "Enter tags separated by spaces" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:219 +msgid "&Clear" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:220 +msgid "Search only in specific fields:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:221 +msgid "Titl&e/Author/Series ..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/select_formats.py:45 msgid "Choose formats" msgstr "" @@ -7178,12 +7309,12 @@ msgid "%s (was %s)" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:580 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:587 msgid "Item is blank" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:581 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:588 msgid "An item cannot be set to nothing. Delete it instead." msgstr "" @@ -7264,7 +7395,7 @@ msgid "Discard changes" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tweak_epub_ui.py:60 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:225 msgid "&Cancel" msgstr "" @@ -7453,6 +7584,60 @@ msgstr "" msgid "Recipe source code (python)" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:145 +msgid "Email %s to %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:187 +msgid "News:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:189 +msgid "Attached is the %s periodical downloaded by calibre." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:242 +msgid "E-book:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:245 +msgid "Attached, you will find the e-book" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:246 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:107 +msgid "by" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:247 +msgid "in the %s format." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:260 +msgid "Sending email to" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:290 +msgid "Auto convert the following books before sending via email?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:297 +msgid "" +"Could not email the following books as no suitable formats were found:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:303 +msgid "Failed to email book" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:306 +msgid "sent" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:329 +msgid "Sent news to" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:112 msgid "" "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" " @@ -7628,23 +7813,23 @@ msgstr "" msgid "Job has already run" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:262 msgid "Unavailable" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:294 msgid "Jobs:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:296 msgid "Shift+Alt+J" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:313 msgid "Click to see list of jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:371 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:382 msgid " - Jobs" msgstr "" @@ -7670,7 +7855,7 @@ msgid "Show books in the main memory of the device" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:67 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:848 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:820 msgid "Card A" msgstr "" @@ -7679,7 +7864,7 @@ msgid "Show books in storage card A" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:69 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:850 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:822 msgid "Card B" msgstr "" @@ -7691,38 +7876,46 @@ msgstr "" msgid "available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:159 msgid "" "Books display will be restricted to those matching the selected saved search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:171 -msgid "Advanced search" +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:170 +msgid "Shift+Ctrl+F" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:173 -msgid "&Search:" +msgid "Advanced search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:178 msgid "" "<p>Search the list of books by title, author, publisher, tags, comments, " "etc.<br><br>Words separated by spaces are ANDed" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:181 +msgid "&Go!" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:187 +msgid "Do Quick Search (you can also press the Enter key)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:193 msgid "Reset Quick Search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:205 msgid "Copy current search text (instead of search name)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:211 msgid "Save current search under the name shown in the box" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:217 msgid "Delete current saved search" msgstr "" @@ -7744,79 +7937,82 @@ msgstr "" msgid "Size (MB)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:338 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1143 -msgid "Book <font face=\"serif\">%s</font> of %s." +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:331 +msgid "Book %s of %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:700 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1243 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:407 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:693 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1236 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:414 msgid "The lookup/search name is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:706 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1245 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:699 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1238 msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:929 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:922 msgid "In Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:933 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:926 msgid "Size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1223 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1136 +msgid "Book <font face=\"serif\">%s</font> of %s." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1216 msgid "Marked for deletion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1226 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1219 msgid "Double click to <b>edit</b> me<br><br>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:147 msgid "Hide column %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 msgid "Sort on %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 msgid "Ascending" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:156 msgid "Descending" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 msgid "Change text alignment for %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:171 msgid "Center" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:183 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:190 msgid "Show column" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202 msgid "Restore default layout" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:735 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:743 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -7847,7 +8043,7 @@ msgid "<b>No matches</b> for the search phrase <i>%s</i> 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:442 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:446 msgid "No matches found" msgstr "" @@ -7864,12 +8060,12 @@ msgid "LRF Viewer toolbar" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:487 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:503 msgid "Next Page" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:488 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:504 msgid "Previous Page" msgstr "" @@ -7913,7 +8109,7 @@ msgid "Do not check for updates" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:636 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:662 msgid "Calibre Library" msgstr "" @@ -8040,37 +8236,37 @@ msgstr "" msgid "No matches found for this book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:191 msgid "Failed to download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:224 msgid "cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:225 msgid "Downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:225 msgid "Failed to get" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:225 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:229 msgid "%s %s for: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:284 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:288 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:162 msgid "Done" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:289 msgid "Successfully downloaded metadata for %d out of %d books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:287 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:612 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:291 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:659 msgid "Details" msgstr "" @@ -8566,39 +8762,39 @@ msgstr "" msgid "&Split the toolbar into two toolbars" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:222 msgid "&Apply" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:229 msgid "Restore &defaults" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:230 msgid "Save changes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:231 msgid "Cancel and return to overview" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:259 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:269 msgid "Restoring to defaults not supported for" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:304 msgid "" "Some of the changes you made require a restart. Please restart calibre as " "soon as possible." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:307 msgid "" "The changes you have made require calibre be restarted immediately. You will " "not be allowed set any more preferences, until you restart." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:312 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:120 msgid "Restart needed" msgstr "" @@ -8904,7 +9100,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:331 msgid "Failed to start content server" msgstr "" @@ -9098,24 +9294,25 @@ msgid "&Current tweaks" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:270 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:574 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:272 msgid "Search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:315 +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:322 msgid "The selected search will be <b>permanently deleted</b>. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:364 msgid "Search (For Advanced Search click the button to the left)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:399 +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:406 msgid "Saved Searches" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:407 +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:414 msgid "Choose saved search or enter name for new saved search" msgstr "" @@ -9196,26 +9393,22 @@ msgstr "" msgid "&Alternate shortcut:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:202 msgid "Rename '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:206 msgid "Edit sort for '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:211 msgid "Hide category %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:214 msgid "Show category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:216 -msgid "Show all categories" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:223 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:227 msgid "Manage %s" @@ -9230,63 +9423,67 @@ msgstr "" msgid "Manage User Categories" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:248 +msgid "Show all categories" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:458 msgid "" "Changing the authors for several books can take a while. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:456 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:463 msgid "" "Changing the metadata for that many books can take a while. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:512 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:519 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:296 msgid "Searches" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:595 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:602 msgid "Duplicate search name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:596 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:603 msgid "The saved search name %s is already used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:870 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:878 msgid "Sort by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:870 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:878 msgid "Sort by popularity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:871 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:879 msgid "Sort by average rating" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:874 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:882 msgid "Set the sort order for entries in the Tag Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:880 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:888 msgid "Match all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:880 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:888 msgid "Match any" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:885 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:893 msgid "" "When selecting multiple entries in the Tag Browser match any or all of them" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:889 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:897 msgid "Manage &user categories" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:892 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:900 msgid "Add your own categories to the Tag Browser" msgstr "" @@ -9329,64 +9526,64 @@ msgid "" "reconvert them?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:171 msgid "&Restore" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:173 msgid "&Donate to support calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:177 msgid "&Eject connected device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:218 msgid "Calibre Quick Start Guide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:437 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:465 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:439 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:450 msgid "Conversion Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:438 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:451 msgid "" "<p>Could not convert: %s<p>It is a <a href=\"%s\">DRM</a>ed book. You must " "first remove the DRM using third party tools." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:465 msgid "Recipe Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:481 msgid "<b>Failed</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:517 msgid "" "is the result of the efforts of many volunteers from all over the world. If " "you find it useful, please consider donating to support its development. " "Your donation helps keep calibre development going." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:528 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:543 msgid "There are active jobs. Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:546 msgid "" " is communicating with the device!<br>\n" " Quitting may cause corruption on the device.<br>\n" " Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:550 msgid "WARNING: Active jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:613 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:628 msgid "" "will keep running in the system tray. To close it, choose <b>Quit</b> in the " "context menu of the system tray." @@ -9558,96 +9755,96 @@ msgstr "" msgid "No results found for:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:36 msgid "Options to customize the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:703 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:711 msgid "Remember last used window size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:44 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:82 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:46 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 msgid "Maximum width of the viewer window, in pixels." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 msgid "Resize images larger than the viewer window to fit inside it" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:50 msgid "Hyphenate text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:52 msgid "Default language for hyphenation rules" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:54 msgid "Font options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:56 msgid "The serif font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:58 msgid "The sans-serif font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 msgid "The monospaced font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:61 msgid "The standard font size in px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:62 msgid "The monospaced font size in px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:63 msgid "The standard font type" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:463 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:479 msgid "&Lookup in dictionary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:482 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:138 msgid "Go to..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:478 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:494 msgid "Next Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:479 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:495 msgid "Previous Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:481 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:497 msgid "Document Start" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:482 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:498 msgid "Document End" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:484 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:500 msgid "Section Start" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:485 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:501 msgid "Section End" msgstr "" @@ -9715,85 +9912,85 @@ msgstr "" msgid "Search for text in book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:275 msgid "Print Preview" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:309 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:312 msgid "Connecting to dict.org to lookup: <b>%s</b>…" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:409 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:413 msgid "Choose ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:410 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:414 msgid "Ebooks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:447 msgid "No matches found for: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:480 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:488 msgid "Loading flow..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:524 msgid "Laying out %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:555 msgid "Bookmark #%d" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:559 msgid "Add bookmark" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:560 msgid "Enter title for bookmark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:570 msgid "Manage Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:599 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 msgid "Loading ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:615 msgid "DRM Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:616 msgid "<p>This book is protected by <a href=\"%s\">DRM</a>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:612 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:620 msgid "Could not open ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:690 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:698 msgid "Options to control the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:697 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:705 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:700 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:708 msgid "" "If specified, viewer window will try to open full screen when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:705 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:713 msgid "Print javascript alert and console messages to the console" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:711 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:719 msgid "" "%prog [options] file\n" "\n" @@ -9908,59 +10105,59 @@ msgstr "" msgid "Toggle" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:400 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:382 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:404 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:384 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:406 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:461 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:483 msgid "Moving library..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:477 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:478 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:499 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:500 msgid "Failed to move library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:554 msgid "Invalid database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:555 msgid "" "<p>An invalid library already exists at %s, delete it before trying to move " "the existing library.<br>Error: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:544 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:566 msgid "Could not move library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:615 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:641 msgid "Select location for books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:629 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:655 msgid "" "You must choose an empty folder for the calibre library. %s is not empty." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:703 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:729 msgid "welcome wizard" msgstr "" @@ -10032,8 +10229,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:58 msgid "" -"Choose a location for your books. When you add books to calibre, they will " -"be copied here:" +"<p>Choose a location for your books. When you add books to calibre, they " +"will be copied here. Use an <b>empty folder</b> for a new calibre library:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 @@ -10047,121 +10244,158 @@ msgid "" "will switch to using it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:34 msgid "Using: %s:%s@%s:%s and %s encryption" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:37 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:39 msgid "Sending..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:44 msgid "Mail successfully sent" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:124 -msgid "Finish gmail setup" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:136 msgid "" -"Dont forget to enter your gmail username and password. You can sign up for a " -"free gmail account at http://gmail.com" +"If you are setting up a new hotmail account, you must log in to it once " +"before you will be able to send mails." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:147 +msgid "" +"You can sign up for a free {name} email account at <a " +"href=\"http://{url}\">http://{url}</a>. {extra}" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:154 +msgid "Your %s &email address:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:155 +msgid "Your %s &username:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:156 +msgid "Your %s &password:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:174 +msgid "" +"If you plan to use email to send books to your Kindle, remember to add the " +"your %s email address to the allowed email addresses in your Amazon.com " +"Kindle management page." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:181 +msgid "Setup" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:203 msgid "Bad configuration" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:197 msgid "You must set the From email address" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:204 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:113 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:124 msgid "Send email &from:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:125 msgid "" "<p>This is what will be present in the From: field of emails sent by " "calibre.<br> Set it to your email address" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:126 msgid "" "<p>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:116 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:127 msgid "Mail &Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:128 msgid "calibre can <b>optionally</b> use a server to send mail" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:129 msgid "&Hostname:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:130 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:120 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:131 msgid "&Port:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:132 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:123 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:134 msgid "Your username on the mail server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:136 msgid "Your password on the mail server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:137 msgid "&Show" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:138 msgid "&Encryption:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:139 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:129 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:140 msgid "&TLS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:141 msgid "Use SSL encryption when connecting to the mail server." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:142 msgid "&SSL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:143 +msgid "WARNING: Using no encryption is highly insecure" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:144 +msgid "&None" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:145 msgid "Use Gmail" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:146 +msgid "Use Hotmail" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:147 msgid "&Test email" msgstr "" @@ -10224,7 +10458,7 @@ msgstr "" msgid "empty" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:48 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:50 msgid "" "The fields to output when cataloging books in the database. Should be a " "comma-separated list of fields.\n" @@ -10233,7 +10467,7 @@ msgid "" "Applies to: CSV, XML output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:58 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:60 msgid "" "Output field to sort on.\n" "Available fields: author_sort, id, rating, size, timestamp, title.\n" @@ -10241,7 +10475,7 @@ msgid "" "Applies to: CSV, XML output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:212 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:214 msgid "" "The fields to output when cataloging books in the database. Should be a " "comma-separated list of fields.\n" @@ -10250,7 +10484,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:222 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:224 msgid "" "Output field to sort on.\n" "Available fields: author_sort, id, rating, size, timestamp, title.\n" @@ -10258,7 +10492,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:231 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:233 msgid "" "Create a citation for BibTeX entries.\n" "Boolean value: True, False\n" @@ -10266,7 +10500,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:240 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:242 msgid "" "The template for citation creation from database fields.\n" " Should be a template with {} enclosed fields.\n" @@ -10275,7 +10509,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:250 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:252 msgid "" "BibTeX file encoding output.\n" "Available types: utf8, cp1252, ascii.\n" @@ -10283,7 +10517,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:259 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:261 msgid "" "BibTeX file encoding flag.\n" "Available types: strict, replace, ignore, backslashreplace.\n" @@ -10291,7 +10525,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:268 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:270 msgid "" "Entry type for BibTeX catalog.\n" "Available types: book, misc, mixed.\n" @@ -10299,14 +10533,14 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:536 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:540 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:543 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:547 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 " @@ -10315,14 +10549,14 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:553 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:557 msgid "" "Regex describing tags to exclude as genres.\n" "Default: '%default' excludes bracketed tags, e.g. '[<tag>]'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:559 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:563 msgid "" "Comma-separated list of tag words indicating book should be excluded from " "output. Case-insensitive.\n" @@ -10331,35 +10565,35 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:567 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:571 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:574 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:578 msgid "" "Include 'Series' section in catalog.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:581 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:585 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:588 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:592 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:595 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:599 msgid "" "Sort titles with leading numbers as text, e.g.,\n" "'2001: A Space Odyssey' sorts as \n" @@ -10368,7 +10602,7 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:602 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:606 msgid "" "Specifies the output profile. In some cases, an output profile is required " "to optimize the catalog for the device. For example, 'kindle' or " @@ -10378,13 +10612,20 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:609 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:613 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:619 +msgid "" +"Tag indicating book to be displayed as wishlist item.\n" +"Default: '%default'\n" +"Applies to: ePub, MOBI output formats" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/library/check_library.py:17 msgid "Invalid titles" msgstr "" @@ -10696,7 +10937,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/cli.py:665 -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:505 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:499 msgid "Show detailed output information. Useful for debugging" msgstr "" @@ -10926,35 +11167,35 @@ msgid "" "start with a letter" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:82 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:57 msgid "%sAverage rating is %3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:846 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:818 msgid "Main" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2321 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2310 msgid "<p>Migrating old database to ebook library in %s<br><center>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2350 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2339 msgid "Copying <b>%s</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2367 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2356 msgid "Compacting database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2460 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2449 msgid "Checking SQL integrity..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2499 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2488 msgid "Checking for missing files." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2521 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2516 msgid "Checked id" msgstr "" @@ -11138,124 +11379,139 @@ msgid "" "disable grouping." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/base.py:131 -msgid "Password to access your calibre library. Username is " +#: /home/kovid/work/calibre/src/calibre/library/server/__init__.py:48 +msgid "" +"Prefix to prepend to all URLs. Useful for reverseproxying to this server " +"from Apache/nginx/etc." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:51 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:399 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:59 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:437 msgid "Loading, please wait" -msgstr "" +msgstr "טוען, נא להמתין" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:80 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:85 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:106 +msgid "Go to" +msgstr "לך ל..." + +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:101 msgid "First" -msgstr "" +msgstr "ראשון" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:80 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:101 msgid "Last" -msgstr "" +msgstr "אחרון" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:80 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:101 msgid "Previous" -msgstr "" +msgstr "הקודם" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:81 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:102 msgid "Next" -msgstr "" +msgstr "הבא" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:83 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:104 msgid "Browsing %d books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:99 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:224 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:121 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:247 msgid "Average rating" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:100 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:122 msgid "%s: %.1f stars" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:132 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:155 msgid "%d stars" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:225 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:248 msgid "Popularity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:244 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:267 msgid "Sort by" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:307 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:505 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:568 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:270 +msgid "library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:271 +msgid "home" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:332 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:548 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569 msgid "Newest" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:308 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:506 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:333 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:549 msgid "All books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:340 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:366 msgid "Browse books by" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:345 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:371 msgid "Choose a category to browse by:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:418 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:457 msgid "Browsing by" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:419 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:458 msgid "Up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:535 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:579 msgid "in" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:538 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:582 msgid "Books in" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:588 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:634 msgid "Other formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:595 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:641 msgid "Read %s in the %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:600 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:646 msgid "Get" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:614 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:661 msgid "Permalink" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:615 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:662 msgid "A permanent link to this book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:626 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:673 msgid "This book has been deleted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:707 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:757 msgid "in search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:709 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:759 msgid "Matching books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/main.py:28 +#: /home/kovid/work/calibre/src/calibre/library/server/main.py:39 msgid "" "[options]\n" "\n" @@ -11268,20 +11524,26 @@ msgid "" "The OPDS interface is advertised via BonJour automatically.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/main.py:41 +#: /home/kovid/work/calibre/src/calibre/library/server/main.py:52 msgid "Path to the library folder to serve with the content server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/main.py:43 +#: /home/kovid/work/calibre/src/calibre/library/server/main.py:54 msgid "Write process PID to the specified file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/main.py:47 +#: /home/kovid/work/calibre/src/calibre/library/server/main.py:58 msgid "" "Specifies a restriction to be used for this invocation. This option " "overrides any per-library settings specified in the GUI" msgstr "" +#: /home/kovid/work/calibre/src/calibre/library/server/main.py:62 +msgid "" +"Auto reload server when source code changes. May not work in all " +"environments." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:112 msgid "%d book" msgstr "" @@ -11402,27 +11664,27 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:43 msgid "Waiting..." -msgstr "" +msgstr "מחכה..." #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:52 msgid "Stopped" -msgstr "" +msgstr "נעצר" #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:54 msgid "Finished" -msgstr "" +msgstr "סיים" #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:76 msgid "Working..." -msgstr "" +msgstr "עובד..." #: /home/kovid/work/calibre/src/calibre/utils/localization.py:95 msgid "Brazilian Portuguese" -msgstr "" +msgstr "פורטוגזית ברזילאית" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:96 msgid "English (UK)" -msgstr "" +msgstr "אנגלית (הממלכה המאוחדת)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:97 msgid "Simplified Chinese" @@ -11430,7 +11692,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:98 msgid "Chinese (HK)" -msgstr "" +msgstr "סינית (הונג-קונג)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:99 msgid "Traditional Chinese" @@ -11438,23 +11700,23 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:100 msgid "English" -msgstr "" +msgstr "אנגלית" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:101 msgid "English (Australia)" -msgstr "" +msgstr "אנגלית (אוסטרליה)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:102 msgid "English (New Zealand)" -msgstr "" +msgstr "אנגלית (ניו-זילנד)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:103 msgid "English (Canada)" -msgstr "" +msgstr "אנגלית (קנדה)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:104 msgid "English (India)" -msgstr "" +msgstr "אנגלית (הודו)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:105 msgid "English (Thailand)" @@ -11470,7 +11732,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:108 msgid "English (Israel)" -msgstr "" +msgstr "אנגלית (ישראל)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:109 msgid "English (Singapore)" @@ -11562,7 +11824,7 @@ msgstr "" msgid "Failed to authenticate with server: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/smtp.py:234 +#: /home/kovid/work/calibre/src/calibre/utils/smtp.py:249 msgid "Control email delivery" msgstr "" @@ -11604,95 +11866,95 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:47 msgid "Unknown News Source" -msgstr "" +msgstr "מקור חדשות בלתי ידוע" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:615 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:628 msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:714 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:727 msgid "Download finished" -msgstr "" +msgstr "ההורדה הסתיימה" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:716 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:729 msgid "Failed to download the following articles:" -msgstr "" +msgstr "הורדת הכתבות הבאות כשלה:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:722 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:735 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:724 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:737 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:726 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:739 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:815 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:834 msgid "Could not fetch article. Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:836 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:855 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:841 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:860 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:850 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:869 msgid "Trying to download cover..." -msgstr "" +msgstr "מנסה להוריד עמוד שער/כריכה..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:852 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:871 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:933 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:952 msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:949 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:968 msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:958 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:977 msgid "Could not download cover: %s" -msgstr "" +msgstr "לא הצליח להוריד כריכה: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:965 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:986 msgid "Downloading cover from %s" -msgstr "" +msgstr "מוריד כריכה מ-%s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1010 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1032 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1178 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1200 msgid "Untitled Article" -msgstr "" +msgstr "כתבה ללא שם" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1249 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1271 msgid "Article downloaded: %s" -msgstr "" +msgstr "כתבה הורדה: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1260 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1282 msgid "Article download failed: %s" -msgstr "" +msgstr "הורדת הכתבה כשלה: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1277 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1299 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1424 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1446 msgid "" "Failed to log in, check your username and password for the calibre " "Periodicals service." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1439 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1461 msgid "" "You do not have permission to download this issue. Either your subscription " "has expired or you have exceeded the maximum allowed downloads for today." @@ -11702,7 +11964,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:47 msgid "You" -msgstr "" +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 @@ -11715,30 +11977,30 @@ msgstr "" msgid "Custom" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:482 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:476 msgid "" "%prog URL\n" "\n" "Where URL is for example http://google.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:485 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:479 msgid "Base directory into which URL is saved. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:488 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:482 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:491 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:485 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:494 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:488 msgid "" "The maximum number of files to download. This only applies to files from <a " "href> tags. Default is %default" @@ -11746,27 +12008,27 @@ msgstr "" "מקסימום קבצים להורדה. רק לגבי קבצים מתגיות <a href>. ברירת המחדל היא " "%default ." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:496 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:490 msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" msgstr "פרק הזמן בין הורדות. ברירת המחדל היא %default שניות." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:498 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:492 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:500 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:494 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:502 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:496 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 " @@ -11775,13 +12037,16 @@ msgid "" "applied first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:504 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:498 msgid "Do not download CSS stylesheets." msgstr "לא להוריד דפי-סגנון CSS" #~ msgid "Path to a txt file containing a comment." #~ msgstr "נתיב לקובץ TXT המכיל הערה." +#~ msgid " " +#~ msgstr " " + #~ msgid "Communicate with the Sony PRS-300/505/500 eBook reader." #~ msgstr "מתקשר עם Sony PRS-300/505/500 eBook reader." diff --git a/src/calibre/translations/zh_CN.po b/src/calibre/translations/zh_CN.po index ee6a1bea51..7ae2090006 100644 --- a/src/calibre/translations/zh_CN.po +++ b/src/calibre/translations/zh_CN.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2010-11-27 20:21+0000\n" -"PO-Revision-Date: 2010-11-28 00:33+0000\n" -"Last-Translator: Jimmie Lin <Unknown>\n" +"PO-Revision-Date: 2010-11-30 01:34+0000\n" +"Last-Translator: kesalin <Unknown>\n" "Language-Team: Simplified Chinese <wanglihao@gmail.com>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-29 04:49+0000\n" +"X-Launchpad-Export-Date: 2010-11-30 04:46+0000\n" "X-Generator: Launchpad (build Unknown)\n" "X-Poedit-Country: CHINA\n" "X-Poedit-Language: Chinese\n" @@ -1020,7 +1020,7 @@ msgstr "与 Nook 通信。" #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 msgid "Nook Color" -msgstr "" +msgstr "Nook Color(一款B&N 旗下电子阅读器)" #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 msgid "Communicate with the Nook Color eBook reader." From 449de8255f19acb1fd8bab750efe67885fcaf22d Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Tue, 30 Nov 2010 12:56:27 +0000 Subject: [PATCH 228/377] Refactor search boxes to use placeholders, emit refocus events when appropriate, and improve the selected-text model. Also many general cleanups, such as renaming clear_to_help to clear. --- src/calibre/gui2/lrf_renderer/main.py | 2 +- src/calibre/gui2/search_box.py | 214 ++++++++----------- src/calibre/gui2/search_restriction_mixin.py | 4 +- src/calibre/gui2/tag_view.py | 10 +- src/calibre/gui2/ui.py | 4 +- src/calibre/gui2/viewer/main.py | 4 +- 6 files changed, 97 insertions(+), 141 deletions(-) diff --git a/src/calibre/gui2/lrf_renderer/main.py b/src/calibre/gui2/lrf_renderer/main.py index 8ddda175fa..2acfd3c9a7 100644 --- a/src/calibre/gui2/lrf_renderer/main.py +++ b/src/calibre/gui2/lrf_renderer/main.py @@ -127,7 +127,7 @@ class Main(MainWindow, Ui_MainWindow): self.progress_label.setText('Parsing '+ self.file_name) self.renderer = RenderWorker(self, stream, self.logger, self.opts) QObject.connect(self.renderer, SIGNAL('finished()'), self.parsed, Qt.QueuedConnection) - self.search.clear_to_help() + self.search.clear() self.last_search = None else: self.stack.setCurrentIndex(0) diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py index b37d74f51f..444ba156ca 100644 --- a/src/calibre/gui2/search_box.py +++ b/src/calibre/gui2/search_box.py @@ -8,9 +8,8 @@ __docformat__ = 'restructuredtext en' import re -from PyQt4.Qt import QComboBox, Qt, QLineEdit, QStringList, pyqtSlot, \ - pyqtSignal, SIGNAL, QObject, QDialog, QCompleter, \ - QAction, QKeySequence, QTimer +from PyQt4.Qt import QComboBox, Qt, QLineEdit, QStringList, pyqtSlot, QDialog, \ + pyqtSignal, QCompleter, QAction, QKeySequence, QTimer from calibre.gui2 import config from calibre.gui2.dialogs.confirm_delete import confirm @@ -20,35 +19,30 @@ from calibre.utils.search_query_parser import saved_searches class SearchLineEdit(QLineEdit): key_pressed = pyqtSignal(object) - mouse_released = pyqtSignal(object) - focus_out = pyqtSignal(object) def keyPressEvent(self, event): self.key_pressed.emit(event) QLineEdit.keyPressEvent(self, event) def mouseReleaseEvent(self, event): - self.mouse_released.emit(event) QLineEdit.mouseReleaseEvent(self, event) + QLineEdit.selectAll(self) - def focusOutEvent(self, event): - self.focus_out.emit(event) - QLineEdit.focusOutEvent(self, event) + def focusInEvent(self, event): + QLineEdit.focusInEvent(self, event) + QLineEdit.selectAll(self) def dropEvent(self, ev): - if self.parent().help_state: - self.parent().normalize_state() + self.parent().normalize_state() return QLineEdit.dropEvent(self, ev) def contextMenuEvent(self, ev): - if self.parent().help_state: - self.parent().normalize_state() + self.parent().normalize_state() return QLineEdit.contextMenuEvent(self, ev) @pyqtSlot() def paste(self, *args): - if self.parent().help_state: - self.parent().normalize_state() + self.parent().normalize_state() return QLineEdit.paste(self) class SearchBox2(QComboBox): @@ -59,14 +53,17 @@ class SearchBox2(QComboBox): * Call initialize() * Connect to the search() and cleared() signals from this widget. * Connect to the cleared() signal to know when the box content changes + * Connect to focus_to_library signal to be told to manually change focus * Call search_done() after every search is complete - * Use clear() to clear back to the help message ''' INTERVAL = 1500 #: Time to wait before emitting search signal MAX_COUNT = 25 - search = pyqtSignal(object) + search = pyqtSignal(object) + cleared = pyqtSignal() + changed = pyqtSignal() + focus_to_library = pyqtSignal() def __init__(self, parent=None): QComboBox.__init__(self, parent) @@ -75,13 +72,9 @@ class SearchBox2(QComboBox): self.setLineEdit(self.line_edit) c = self.line_edit.completer() c.setCompletionMode(c.PopupCompletion) - self.line_edit.key_pressed.connect(self.key_pressed, - type=Qt.DirectConnection) - self.line_edit.mouse_released.connect(self.mouse_released, - type=Qt.DirectConnection) + self.line_edit.key_pressed.connect(self.key_pressed, type=Qt.DirectConnection) self.activated.connect(self.history_selected) self.setEditable(True) - self.help_state = False self.as_you_type = True self.prev_search = '' self.timer = QTimer() @@ -98,54 +91,37 @@ class SearchBox2(QComboBox): self.as_you_type = config['search_as_you_type'] self.opt_name = opt_name self.addItems(QStringList(list(set(config[opt_name])))) - self.help_text = help_text + self.line_edit.setPlaceholderText(help_text) self.colorize = colorize - self.clear_to_help() + self.clear() def normalize_state(self): self.setToolTip(self.tool_tip_text) - if self.help_state: - self.setEditText('') - self.line_edit.setStyleSheet( - 'QLineEdit { color: black; background-color: %s; }' % - self.normal_background) - self.help_state = False - else: - self.line_edit.setStyleSheet( - 'QLineEdit { color: black; background-color: %s; }' % - self.normal_background) - - def clear_to_help(self): - self.setToolTip(self.tool_tip_text) - if self.help_state: - return - self.help_state = True - self.search.emit('') - self._in_a_search = False - self.setEditText(self.help_text) - self.line_edit.home(False) self.line_edit.setStyleSheet( - 'QLineEdit { color: gray; background-color: %s; }' % - self.normal_background) - self.emit(SIGNAL('cleared()')) + 'QLineEdit{color:black;background-color:%s;}' % self.normal_background) def text(self): return self.currentText() def clear(self): - self.clear_to_help() + self.normalize_state() + self.setEditText('') + self.search.emit('') + self._in_a_search = False + self.cleared.emit() def search_done(self, ok): if isinstance(ok, basestring): self.setToolTip(ok) ok = False if not unicode(self.currentText()).strip(): - return self.clear_to_help() + self.clear() + return self._in_a_search = ok col = 'rgba(0,255,0,20%)' if ok else 'rgb(255,0,0,20%)' if not self.colorize: col = self.normal_background - self.line_edit.setStyleSheet('QLineEdit { color: black; background-color: %s; }' % col) + self.line_edit.setStyleSheet('QLineEdit{color:black;background-color:%s;}' % col) def key_pressed(self, event): k = event.key() @@ -154,40 +130,25 @@ class SearchBox2(QComboBox): return self.normalize_state() if self._in_a_search: - self.emit(SIGNAL('changed()')) + self.changed.emit() self._in_a_search = False if event.key() in (Qt.Key_Return, Qt.Key_Enter): self.do_search() + self.focus_to_library.emit() if self.as_you_type: self.timer.start(1500) - def mouse_released(self, event): - self.normalize_state() - # Dont trigger a search since it make - # re-positioning the cursor using the mouse - # impossible - #if self.as_you_type: - # self.timer.start(1500) - def timer_event(self): self.do_search() def history_selected(self, text): - self.emit(SIGNAL('changed()')) + self.changed.emit() self.do_search() - @property - def smart_text(self): - text = unicode(self.currentText()).strip() - if not text or text == self.help_text: - return '' - return text - def do_search(self, *args): text = unicode(self.currentText()).strip() - if not text or text == self.help_text: + if not text: return self.clear() - self.help_state = False self.prev_search = text self.search.emit(text) @@ -220,7 +181,7 @@ class SearchBox2(QComboBox): def set_search_string(self, txt): if not txt: - self.clear_to_help() + self.clear() return self.normalize_state() self.setEditText(txt) @@ -243,25 +204,24 @@ class SavedSearchBox(QComboBox): if you care about changes to the list of saved searches. ''' + changed = pyqtSignal() + focus_to_library = pyqtSignal() + def __init__(self, parent=None): QComboBox.__init__(self, parent) self.normal_background = 'rgb(255, 255, 255, 0%)' self.line_edit = SearchLineEdit(self) self.setLineEdit(self.line_edit) - self.line_edit.key_pressed.connect(self.key_pressed, - type=Qt.DirectConnection) - self.line_edit.mouse_released.connect(self.mouse_released, - type=Qt.DirectConnection) - self.line_edit.focus_out.connect(self.focus_out, - type=Qt.DirectConnection) + self.line_edit.key_pressed.connect(self.key_pressed, type=Qt.DirectConnection) self.activated[str].connect(self.saved_search_selected) - completer = QCompleter(self) # turn off auto-completion + # Turn off auto-completion so that it doesn't interfere with typing + # names of new searches. + completer = QCompleter(self) self.setCompleter(completer) + self.setEditable(True) - self.help_state = True - self.prev_search = '' self.setInsertPolicy(self.NoInsert) self.setSizeAdjustPolicy(self.AdjustToMinimumContentsLengthWithIcon) self.setMinimumContentsLength(10) @@ -269,50 +229,40 @@ class SavedSearchBox(QComboBox): def initialize(self, _search_box, colorize=False, help_text=_('Search')): self.search_box = _search_box - self.help_text = help_text + self.line_edit.setPlaceholderText(help_text) self.colorize = colorize - self.clear_to_help() + self.clear() def normalize_state(self): - self.setEditText('') - self.line_edit.setStyleSheet( - 'QLineEdit { color: black; background-color: %s; }' % - self.normal_background) - self.help_state = False + # need this because line_edit will call it in some cases such as paste + pass - def clear_to_help(self): - self.setToolTip(self.tool_tip_text) + def clear(self): + QComboBox.clear(self) self.initialize_saved_search_names() - self.setEditText(self.help_text) + self.setEditText('') self.line_edit.home(False) - self.help_state = True - self.line_edit.setStyleSheet( - 'QLineEdit { color: gray; background-color: %s; }' % - self.normal_background) - - def focus_out(self, event): - if self.currentText() == '': - self.clear_to_help() def key_pressed(self, event): - if self.help_state: - self.normalize_state() - - def mouse_released(self, event): - if self.help_state: - self.normalize_state() + if event.key() in (Qt.Key_Return, Qt.Key_Enter): + self.saved_search_selected(self.currentText()) + self.focus_to_library.emit() def saved_search_selected(self, qname): qname = unicode(qname) if qname is None or not qname.strip(): + self.search_box.clear() + return + if not saved_searches().lookup(qname): + self.search_box.clear() + self.setEditText(qname) return - self.normalize_state() self.search_box.set_search_string(u'search:"%s"' % qname) self.setEditText(qname) self.setToolTip(saved_searches().lookup(qname)) + self.focus_to_library.emit() def initialize_saved_search_names(self): - self.clear() qnames = saved_searches().names() self.addItems(qnames) self.setCurrentIndex(-1) @@ -330,25 +280,24 @@ class SavedSearchBox(QComboBox): if ss is None: return saved_searches().delete(unicode(self.currentText())) - self.clear_to_help() - self.search_box.clear_to_help() - self.emit(SIGNAL('changed()')) + self.clear() + self.search_box.clear() + self.changed.emit() # SIGNALed from the main UI def save_search_button_clicked(self): name = unicode(self.currentText()) - if self.help_state or not name.strip(): + if not name.strip(): name = unicode(self.search_box.text()).replace('"', '') saved_searches().delete(name) saved_searches().add(name, unicode(self.search_box.text())) # now go through an initialization cycle to ensure that the combobox has # the new search in it, that it is selected, and that the search box # references the new search instead of the text in the search. - self.clear_to_help() - self.normalize_state() + self.clear() self.setCurrentIndex(self.findText(name)) self.saved_search_selected (name) - self.emit(SIGNAL('changed()')) + self.changed.emit() # SIGNALed from the main UI def copy_search_button_clicked (self): @@ -362,11 +311,11 @@ class SearchBoxMixin(object): def __init__(self): self.search.initialize('main_search_history', colorize=True, help_text=_('Search (For Advanced Search click the button to the left)')) - self.connect(self.search, SIGNAL('cleared()'), self.search_box_cleared) - self.connect(self.search, SIGNAL('changed()'), self.search_box_changed) - self.connect(self.clear_button, SIGNAL('clicked()'), self.search.clear) - QObject.connect(self.advanced_search_button, SIGNAL('clicked(bool)'), - self.do_advanced_search) + self.search.cleared.connect(self.search_box_cleared) + self.search.changed.connect(self.search_box_changed) + self.search.focus_to_library.connect(self.focus_to_library) + self.clear_button.clicked.connect(self.search.clear) + self.advanced_search_button.clicked[bool].connect(self.do_advanced_search) self.search.clear() self.search.setMaximumWidth(self.width()-150) @@ -384,11 +333,11 @@ class SearchBoxMixin(object): def search_box_cleared(self): self.tags_view.clear() - self.saved_search.clear_to_help() + self.saved_search.clear() self.set_number_of_books_shown() def search_box_changed(self): - self.saved_search.clear_to_help() + self.saved_search.clear() self.tags_view.clear() def do_advanced_search(self, *args): @@ -396,20 +345,24 @@ class SearchBoxMixin(object): if d.exec_() == QDialog.Accepted: self.search.set_search_string(d.search_string()) + def focus_to_library(self): + self.current_view().setFocus(Qt.OtherFocusReason) + class SavedSearchBoxMixin(object): def __init__(self): - self.connect(self.saved_search, SIGNAL('changed()'), self.saved_searches_changed) + self.saved_search.changed.connect(self.saved_searches_changed) + self.clear_button.clicked.connect(self.saved_search.clear) + self.saved_search.focus_to_library.connect(self.focus_to_library) + self.save_search_button.clicked.connect( + self.saved_search.save_search_button_clicked) + self.delete_search_button.clicked.connect( + self.saved_search.delete_search_button_clicked) + self.copy_search_button.clicked.connect( + self.saved_search.copy_search_button_clicked) self.saved_searches_changed() - self.connect(self.clear_button, SIGNAL('clicked()'), self.saved_search.clear_to_help) self.saved_search.initialize(self.search, colorize=True, help_text=_('Saved Searches')) - self.connect(self.save_search_button, SIGNAL('clicked()'), - self.saved_search.save_search_button_clicked) - self.connect(self.delete_search_button, SIGNAL('clicked()'), - self.saved_search.delete_search_button_clicked) - self.connect(self.copy_search_button, SIGNAL('clicked()'), - self.saved_search.copy_search_button_clicked) self.saved_search.setToolTip( _('Choose saved search or enter name for new saved search')) self.saved_search.setStatusTip(self.saved_search.toolTip()) @@ -420,7 +373,8 @@ class SavedSearchBoxMixin(object): def saved_searches_changed(self): p = sorted(saved_searches().names(), cmp=lambda x,y: cmp(x.lower(), y.lower())) t = unicode(self.search_restriction.currentText()) - self.search_restriction.clear() # rebuild the restrictions combobox using current saved searches + # rebuild the restrictions combobox using current saved searches + self.search_restriction.clear() self.search_restriction.addItem('') self.tags_view.recount() for s in p: @@ -433,6 +387,8 @@ class SavedSearchBoxMixin(object): d.exec_() if d.result() == d.Accepted: self.saved_searches_changed() - self.saved_search.clear_to_help() + self.saved_search.clear() + def focus_to_library(self): + self.current_view().setFocus(Qt.OtherFocusReason) diff --git a/src/calibre/gui2/search_restriction_mixin.py b/src/calibre/gui2/search_restriction_mixin.py index 139d7c551d..6373e452e5 100644 --- a/src/calibre/gui2/search_restriction_mixin.py +++ b/src/calibre/gui2/search_restriction_mixin.py @@ -49,8 +49,8 @@ class SearchRestrictionMixin(object): restriction = '' self.restriction_count_of_books_in_view = \ self.library_view.model().set_search_restriction(restriction) - self.search.clear_to_help() - self.saved_search.clear_to_help() + self.search.clear() + self.saved_search.clear() self.tags_view.set_search_restriction(restriction) self.set_number_of_books_shown() diff --git a/src/calibre/gui2/tag_view.py b/src/calibre/gui2/tag_view.py index 7210afd770..b841706439 100644 --- a/src/calibre/gui2/tag_view.py +++ b/src/calibre/gui2/tag_view.py @@ -843,7 +843,7 @@ class TagBrowserMixin(object): # {{{ self.tags_view.set_database(self.library_view.model().db, self.tag_match, self.sort_by) self.tags_view.tags_marked.connect(self.search.search_from_tags) - self.tags_view.tags_marked.connect(self.saved_search.clear_to_help) + self.tags_view.tags_marked.connect(self.saved_search.clear) self.tags_view.tag_list_edit.connect(self.do_tags_list_edit) self.tags_view.user_category_edit.connect(self.do_user_categories_edit) self.tags_view.saved_search_edit.connect(self.do_saved_search_edit) @@ -910,14 +910,14 @@ class TagBrowserMixin(object): # {{{ self.library_view.model().refresh() self.tags_view.set_new_model() self.tags_view.recount() - self.saved_search.clear_to_help() - self.search.clear_to_help() + self.saved_search.clear() + self.search.clear() def do_tag_item_renamed(self): # Clean up library view and search self.library_view.model().refresh() - self.saved_search.clear_to_help() - self.search.clear_to_help() + self.saved_search.clear() + self.search.clear() def do_author_sort_edit(self, parent, id): db = self.library_view.model().db diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index 00bba2b491..cb25f75d4a 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -383,8 +383,8 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{ self.tags_view.set_database(db, self.tag_match, self.sort_by) self.library_view.model().set_book_on_device_func(self.book_on_device) self.status_bar.clear_message() - self.search.clear_to_help() - self.saved_search.clear_to_help() + self.search.clear() + self.saved_search.clear() self.book_details.reset_info() self.library_view.model().count_changed() prefs['library_path'] = self.library_path diff --git a/src/calibre/gui2/viewer/main.py b/src/calibre/gui2/viewer/main.py index f9a2432099..8fe176751d 100644 --- a/src/calibre/gui2/viewer/main.py +++ b/src/calibre/gui2/viewer/main.py @@ -237,9 +237,9 @@ class EbookViewer(MainWindow, Ui_EbookViewer): self.connect(self.action_previous_page, SIGNAL('triggered(bool)'), lambda x:self.view.previous_page()) self.connect(self.action_find_next, SIGNAL('triggered(bool)'), - lambda x:self.find(self.search.smart_text, repeat=True)) + lambda x:self.find(self.search.text(), repeat=True)) self.connect(self.action_find_previous, SIGNAL('triggered(bool)'), - lambda x:self.find(self.search.smart_text, + lambda x:self.find(self.search.text(), repeat=True, backwards=True)) self.connect(self.action_full_screen, SIGNAL('triggered(bool)'), From 9d465361a0247cfe93638845283a52139dc1ee01 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Tue, 30 Nov 2010 08:47:14 -0700 Subject: [PATCH 229/377] ... --- resources/images/news/novaya_gazeta.png | Bin 0 -> 610 bytes resources/images/news/vedomosti.png | Bin 0 -> 693 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 resources/images/news/novaya_gazeta.png create mode 100644 resources/images/news/vedomosti.png diff --git a/resources/images/news/novaya_gazeta.png b/resources/images/news/novaya_gazeta.png new file mode 100644 index 0000000000000000000000000000000000000000..41886a64b9d1e72d5d91d260871719d982b0dbf6 GIT binary patch literal 610 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zK-vS0-A-oPfdtD69Mgd`SU*F|v9*U87#O=fT^vI!PT!sA>pdk=q;37@De@~=l9aTX zoN|@84)!}t>=9yNoj6T5+T$Msvm#eZ)NTPL@m-uEAp$LeET&3<D-JGj4bFPVGVPjx z^4?|Vinq@QRC`={byan-h0MFxH3$EzR<3`t-udgfx}cvAR>{ThT=#3A;oX^W!Ed4! z-tT>~cayE2^-bFkTl)8>zlv>IcOv-IHuINVJjUM*Pxhu8-h0Qwp)68RZ+EW!h@Itc z#;+G6c@{r<&8GL%Q`7anlZ?;9hLbnS4-~%*y;Za1SO&|(ioIVayG-C>Z#ZmF#Lus= zI`H5<eg>Y3eKT!%89Z2aTBfYu6&*2Yo=3q(3wxP@&AT`n#Ch+sRJJNK9`VYRK2*HW zqThSzat1k*(4u3OXKaLJzcaXhDdJAa`@dxCt0%nw|8#!8bm_Uu_T|?YGUDbvON~{( zC#gKw^v)_vcBbcZS{e2nkf_}3{6EPi)@(=hSDXGQEr!D?Iy?%VGfx~|D0xkMI)j9) z^nsqo*Js___+Cfx)k@u`r{f}zeF$G)zx=+R(>#NpVl}6Maim(}8c~v5l$uzQs+$5N z7>o=I4Rj3+b&ZTejEt;|4Xg|;wGE7|3=CLP)KXy@a`RI%(<%vQh`JgO2-Lvf>FVdQ I&MBb@0Ocj^tpET3 literal 0 HcmV?d00001 diff --git a/resources/images/news/vedomosti.png b/resources/images/news/vedomosti.png new file mode 100644 index 0000000000000000000000000000000000000000..3187308f4e9ff62fc547475a1a69523dd39b0e88 GIT binary patch literal 693 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zK-vS0-A-oPfdtD69Mgd`SU*F|v9*U87#Qz)x;TbdoSr(#H(NMRq;0;nv6fztc%4db zx7(ubIt3OhDG}2h0a||rMO`Lz#qKD08DF5yvGzigW3R|AO)+QgjXNf2?a=TQX*F5# zK&hv#%&54(yKvb|KkljrhisqU`@HY`UK!W$H6hPh>pPM*Mg+0<>!|XDX?<3jdtd3^ zvX1v`-oFoiGIQOcFMn^}w56?^a<<Nz&JeOsfBW)mt*MVrzA^dR>>T*^?rc}CR;H_2 zqPMqsbDenhyGZ(B>(i&KVd3^hhK1q`zkANUxhxrwR`4&2Z>=dqTjBzSU7D|6zrR^z z&BJ$dV)oz9RU3Y4f7%>*yfijztCU+)bhXTl{rX<UGfg}mbo@}TYu~K?@+|Lyt;cTN z)K{7kzo+L@xA-~s-ozC<(w!cJ)HlrYluu51!nOT)ejc|*@ocx5KlaV9aY`-hbLW@; z@b)*q+VW+ZvHRQ>U+nn6?8EzL@m4>slxky<^L*|*AOCsub92#^E4rJW%SVLmx%0Bb zp*rEn>v_*rIbF);YYTF^I8C~cv%Nbzduv2)$(JmZHM=~b){0#_7bs^@t9NVpWp~N_ zrOkgjV|w&N3T4<|U%sw?{BYav@9%PYV&$D#nY%J)%Dj4c(16E<Wod}dlDm1yjAt|4 zrhKT#n)JWZ{#?ten~j1J5x{6yEpd$~NiIrFEJ@W(0TK*G28IT@hK9NZW+4W~Rz^lv oCWhKThJk@*uVoTULvDUbW?Cfy4P`d|VL%NGp00i_>zopr093dcqyPW_ literal 0 HcmV?d00001 From 2791f02c3dca565d9bc24f33613ebdadd852f4e8 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Tue, 30 Nov 2010 16:37:55 +0000 Subject: [PATCH 230/377] Enhancement #7732: add an 'apply' button to bulk edit --- src/calibre/gui2/dialogs/metadata_bulk.py | 44 +++++++++++++++++------ src/calibre/gui2/dialogs/metadata_bulk.ui | 2 +- 2 files changed, 34 insertions(+), 12 deletions(-) diff --git a/src/calibre/gui2/dialogs/metadata_bulk.py b/src/calibre/gui2/dialogs/metadata_bulk.py index f8177b7680..f2a2394e9e 100644 --- a/src/calibre/gui2/dialogs/metadata_bulk.py +++ b/src/calibre/gui2/dialogs/metadata_bulk.py @@ -6,7 +6,7 @@ __copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>' import re from PyQt4.Qt import Qt, QDialog, QGridLayout, QVBoxLayout, QFont, QLabel, \ - pyqtSignal + pyqtSignal, QDialogButtonBox from PyQt4 import QtGui from calibre.gui2.dialogs.metadata_bulk_ui import Ui_MetadataBulkDialog @@ -198,15 +198,30 @@ class MetadataBulkDialog(QDialog, Ui_MetadataBulkDialog): ] def __init__(self, window, rows, model): + self.model = model + self.db = self.model.db + self.ids = [self.db.id(r) for r in rows] QDialog.__init__(self, window) Ui_MetadataBulkDialog.__init__(self) + self._initialize() + self.exec_() + + def _initialize(self): + # Remove all controls from the dialog box by deleting the top layout + if self.layout(): + import sip + sip.delete(self.layout()) + self.setupUi(self) - self.model = model - self.db = model.db - self.ids = [self.db.id(r) for r in rows] + self.button_box.clicked.connect(self.button_clicked) + self.button_box.button(QDialogButtonBox.Apply).setToolTip(_( + 'Immediately make all changes without closing the dialog. ' + 'This operation cannot be canceled or undone')) + self.box_title.setText('<p>' + _('Editing meta information for <b>%d books</b>') % - len(rows)) + len(self.ids)) + self.write_series = False self.changed = False @@ -232,7 +247,11 @@ class MetadataBulkDialog(QDialog, Ui_MetadataBulkDialog): self.create_custom_column_editors() self.prepare_search_and_replace() - self.exec_() + + def button_clicked(self, which): + if which == self.button_box.button(QDialogButtonBox.Apply): + self._do_the_work() + self._initialize() def prepare_search_and_replace(self): self.search_for.initialize('bulk_edit_search_for') @@ -627,10 +646,7 @@ class MetadataBulkDialog(QDialog, Ui_MetadataBulkDialog): self.series_start_number.setEnabled(False) self.series_start_number.setValue(1) - def accept(self): - if len(self.ids) < 1: - return QDialog.accept(self) - + def _do_the_work(self): if self.s_r_error is not None: error_dialog(self, _('Search/replace invalid'), _('Search pattern is invalid: %s')%self.s_r_error.message, @@ -690,8 +706,14 @@ class MetadataBulkDialog(QDialog, Ui_MetadataBulkDialog): dynamic['s_r_search_mode'] = self.search_mode.currentIndex() self.db.clean() - return QDialog.accept(self) + return True + def accept(self): + if len(self.ids) < 1: + return QDialog.accept(self) + if not self._do_the_work(): + return False + return QDialog.accept(self) def series_changed(self, *args): self.write_series = True diff --git a/src/calibre/gui2/dialogs/metadata_bulk.ui b/src/calibre/gui2/dialogs/metadata_bulk.ui index 44839bbacd..344bde0fa0 100644 --- a/src/calibre/gui2/dialogs/metadata_bulk.ui +++ b/src/calibre/gui2/dialogs/metadata_bulk.ui @@ -710,7 +710,7 @@ nothing should be put between the original text and the inserted text</string> <enum>Qt::Horizontal</enum> </property> <property name="standardButtons"> - <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> </property> </widget> </item> From 243fcf5b3825d757c32db3f63c1db0704c052a66 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Tue, 30 Nov 2010 10:15:53 -0700 Subject: [PATCH 231/377] Search box: Only trigger as you type timer if text content has changed --- src/calibre/gui2/search_box.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py index c82489d218..547dc32c53 100644 --- a/src/calibre/gui2/search_box.py +++ b/src/calibre/gui2/search_box.py @@ -140,7 +140,7 @@ class SearchBox2(QComboBox): if event.key() in (Qt.Key_Return, Qt.Key_Enter): self.do_search() self.focus_to_library.emit() - if self.as_you_type: + elif self.as_you_type and unicode(event.text()): self.timer.start(1500) def timer_event(self): From ae9fcef78828834081ae54c825fd1969a964a3f3 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Tue, 30 Nov 2010 10:17:23 -0700 Subject: [PATCH 232/377] ... --- src/calibre/gui2/search_box.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py index 547dc32c53..f8d5d4777e 100644 --- a/src/calibre/gui2/search_box.py +++ b/src/calibre/gui2/search_box.py @@ -76,7 +76,6 @@ class SearchBox2(QComboBox): self.activated.connect(self.history_selected) self.setEditable(True) self.as_you_type = True - self.prev_search = '' self.timer = QTimer() self.timer.setSingleShot(True) self.timer.timeout.connect(self.timer_event, type=Qt.QueuedConnection) @@ -154,7 +153,6 @@ class SearchBox2(QComboBox): text = unicode(self.currentText()).strip() if not text: return self.clear() - self.prev_search = text self.search.emit(text) idx = self.findText(text, Qt.MatchFixedString) From 1063a52c121b5ee76e62f1d4773d14d8b4ad73e0 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Tue, 30 Nov 2010 10:22:01 -0700 Subject: [PATCH 233/377] ... --- src/calibre/gui2/search_box.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py index f8d5d4777e..6624acf35f 100644 --- a/src/calibre/gui2/search_box.py +++ b/src/calibre/gui2/search_box.py @@ -106,10 +106,11 @@ class SearchBox2(QComboBox): def text(self): return self.currentText() - def clear(self, emit_search=False): + def clear(self, emit_search=True): self.normalize_state() self.setEditText('') - self.search.emit('') + if emit_search: + self.search.emit('') self._in_a_search = False self.cleared.emit() From d2960c801f8a6416c909d11db52a309399c9346e Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Tue, 30 Nov 2010 10:31:36 -0700 Subject: [PATCH 234/377] Restore operation of clear search button --- src/calibre/gui2/search_box.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py index 6624acf35f..4d598a3bbb 100644 --- a/src/calibre/gui2/search_box.py +++ b/src/calibre/gui2/search_box.py @@ -114,6 +114,9 @@ class SearchBox2(QComboBox): self._in_a_search = False self.cleared.emit() + def clear_clicked(self, *args): + self.clear() + def search_done(self, ok): if isinstance(ok, basestring): self.setToolTip(ok) @@ -318,7 +321,7 @@ class SearchBoxMixin(object): self.search.cleared.connect(self.search_box_cleared) self.search.changed.connect(self.search_box_changed) self.search.focus_to_library.connect(self.focus_to_library) - self.clear_button.clicked.connect(self.search.clear) + self.clear_button.clicked.connect(self.search.clear_clicked) self.advanced_search_button.clicked[bool].connect(self.do_advanced_search) self.search.clear() From 2c45204996f9b29b0b1ba0b66f82b4a7b5ff57e2 Mon Sep 17 00:00:00 2001 From: GRiker <griker@hotmail.com> Date: Tue, 30 Nov 2010 10:34:41 -0700 Subject: [PATCH 235/377] GwR update to catalog read tag handling, jacket updates --- resources/jacket/stylesheet.css | 42 +++++-- resources/jacket/template.xhtml | 23 ++-- src/calibre/ebooks/oeb/transforms/jacket.py | 30 +++-- src/calibre/gui2/catalog/catalog_epub_mobi.py | 106 ++++++++++++++++-- src/calibre/gui2/catalog/catalog_epub_mobi.ui | 82 +++++++++----- src/calibre/library/catalog.py | 67 ++++++++--- src/calibre/library/cli.py | 2 +- 7 files changed, 276 insertions(+), 76 deletions(-) diff --git a/resources/jacket/stylesheet.css b/resources/jacket/stylesheet.css index 5f4f012d01..c45f8fe977 100644 --- a/resources/jacket/stylesheet.css +++ b/resources/jacket/stylesheet.css @@ -36,22 +36,37 @@ /* ** Title */ -.cbj_title { +table.cbj_header td.cbj_title { font-size: x-large; + font-style: italic; + text-align: center; +} + +/* +** Series +*/ +table.cbj_header td.cbj_series { + font-size: medium; text-align: center; } /* ** Author */ -.cbj_author { +table.cbj_header td.cbj_author { font-size: medium; text-align: center; - margin-bottom: 1ex; } /* -** Table containing Series, Publication Year, Rating and Tags +** Publisher/published +*/ +table.cbj_header td.cbj_pubdata { + text-align: center; +} + +/* +** Table containing Rating and Tags */ table.cbj_header { width: 100%; @@ -62,9 +77,8 @@ table.cbj_header { */ table.cbj_header td.cbj_label { font-family: sans-serif; - font-weight: bold; text-align: right; - width: 40%; + width: 33%; } /* @@ -73,9 +87,23 @@ table.cbj_header td.cbj_label { table.cbj_header td.cbj_content { font-family: sans-serif; text-align: left; - width:60%; + width:67%; } +/* +** Metadata divider +*/ +hr.metadata_divider { + width:90%; + margin-left:5%; + border-top: solid white 0px; + border-right: solid white 0px; + border-bottom: solid black 1px; + border-left: solid white 0px; + } + + + /* ** To skip a banner item (Series|Published|Rating|Tags), ** edit the appropriate CSS rule below. diff --git a/resources/jacket/template.xhtml b/resources/jacket/template.xhtml index 8447b1d6b3..056ac0aad3 100644 --- a/resources/jacket/template.xhtml +++ b/resources/jacket/template.xhtml @@ -6,17 +6,24 @@ </head> <body> <div class="cbj_banner"> - <div class="cbj_title">{title}</div> - <div class="cbj_author">{author}</div> <table class="cbj_header"> - <tr class="cbj_series"> - <td class="cbj_label">{series_label}:</td> - <td class="cbj_content">{series}</td> + <tr> + <td class="cbj_title" colspan="2">{title}</td> + </tr> + <tr> + <td class="cbj_series" colspan="2">{series}</td> </tr> - <tr class="cbj_pubdate"> - <td class="cbj_label">{pubdate_label}:</td> - <td class="cbj_content">{pubdate}</td> + <tr> + <td class="cbj_author" colspan="2">{author}</td> + </tr> + <tr> + <td class="cbj_pubdata" colspan="2">{publisher} ({pubdate})</td> </tr> + + <tr> + <td class="cbj_author" colspan="2"><hr class="metadata_divider" /></td> + </tr> + <tr class="cbj_rating"> <td class="cbj_label">{rating_label}:</td> <td class="cbj_content">{rating}</td> diff --git a/src/calibre/ebooks/oeb/transforms/jacket.py b/src/calibre/ebooks/oeb/transforms/jacket.py index e744a14389..1a4a402a31 100644 --- a/src/calibre/ebooks/oeb/transforms/jacket.py +++ b/src/calibre/ebooks/oeb/transforms/jacket.py @@ -93,7 +93,7 @@ class Jacket(object): # Render Jacket {{{ -def get_rating(rating, rchar): +def get_rating(rating, rchar, e_rchar): ans = '' try: num = float(rating)/2 @@ -104,12 +104,12 @@ def get_rating(rating, rchar): if num < 1: return ans - ans = rchar * int(num) + ans = ("%s%s") % (rchar * int(num), e_rchar * (5 - int(num))) return ans - def render_jacket(mi, output_profile, - alt_title=_('Unknown'), alt_tags=[], alt_comments=''): + alt_title=_('Unknown'), alt_tags=[], alt_comments='', + alt_publisher=('Unknown publisher')): css = P('jacket/stylesheet.css', data=True).decode('utf-8') try: @@ -124,12 +124,17 @@ def render_jacket(mi, output_profile, if not mi.series: series = '' + try: + publisher = mi.publisher if mi.publisher else alt_publisher + except: + publisher = _('Unknown publisher') + try: pubdate = strftime(u'%Y', mi.pubdate.timetuple()) except: pubdate = '' - rating = get_rating(mi.rating, output_profile.ratings_char) + rating = get_rating(mi.rating, output_profile.ratings_char, output_profile.empty_ratings_char) tags = mi.tags if mi.tags else alt_tags if tags: @@ -154,6 +159,7 @@ def render_jacket(mi, output_profile, css=css, title=title, author=author, + publisher=publisher, pubdate_label=_('Published'), pubdate=pubdate, series_label=_('Series'), series=series, rating_label=_('Rating'), rating=rating, @@ -165,19 +171,25 @@ def render_jacket(mi, output_profile, generated_html = P('jacket/template.xhtml', data=True).decode('utf-8').format(**args) + print generated_html + # Post-process the generated html to strip out empty header items soup = BeautifulSoup(generated_html) if not series: - series_tag = soup.find('tr', attrs={'class':'cbj_series'}) + #series_tag = soup.find('tr', attrs={'class':'cbj_series'}) + series_tag = soup.find(attrs={'class':'cbj_series'}) series_tag.extract() if not rating: - rating_tag = soup.find('tr', attrs={'class':'cbj_rating'}) + #rating_tag = soup.find('tr', attrs={'class':'cbj_rating'}) + rating_tag = soup.find(attrs={'class':'cbj_rating'}) rating_tag.extract() if not tags: - tags_tag = soup.find('tr', attrs={'class':'cbj_tags'}) + #tags_tag = soup.find('tr', attrs={'class':'cbj_tags'}) + tags_tag = soup.find(attrs={'class':'cbj_tags'}) tags_tag.extract() if not pubdate: - pubdate_tag = soup.find('tr', attrs={'class':'cbj_pubdate'}) + #pubdate_tag = soup.find('tr', attrs={'class':'cbj_pubdate'}) + pubdate_tag = soup.find(attrs={'class':'cbj_pubdate'}) pubdate_tag.extract() if output_profile.short_name != 'kindle': hr_tag = soup.find('hr', attrs={'class':'cbj_kindle_banner_hr'}) diff --git a/src/calibre/gui2/catalog/catalog_epub_mobi.py b/src/calibre/gui2/catalog/catalog_epub_mobi.py index ea4edb10b9..7ac6010896 100644 --- a/src/calibre/gui2/catalog/catalog_epub_mobi.py +++ b/src/calibre/gui2/catalog/catalog_epub_mobi.py @@ -7,9 +7,15 @@ __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>' __docformat__ = 'restructuredtext en' -from calibre.gui2 import gprefs -from catalog_epub_mobi_ui import Ui_Form +import os + from calibre.ebooks.conversion.config import load_defaults +from calibre.gui2 import gprefs +from calibre.library.database2 import LibraryDatabase2 +from calibre.utils.config import prefs + +from catalog_epub_mobi_ui import Ui_Form +from PyQt4 import QtGui from PyQt4.Qt import QWidget class PluginWidget(QWidget,Ui_Form): @@ -23,7 +29,8 @@ class PluginWidget(QWidget,Ui_Form): ('generate_recently_added', True), ('note_tag','*'), ('numbers_as_text', False), - ('read_tag','+'), + ('read_pattern','+'), + ('read_source_field_cb','Tag'), ('wishlist_tag','Wishlist'), ] @@ -40,14 +47,55 @@ class PluginWidget(QWidget,Ui_Form): def initialize(self, name): self.name = name + + # Populate the 'Read book' source fields + dbpath = os.path.abspath(prefs['library_path']) + db = LibraryDatabase2(dbpath) + all_custom_fields = db.custom_field_keys() + custom_fields = {} + custom_fields['Tag'] = {'field':'tag', 'datatype':u'text'} + for custom_field in all_custom_fields: + field_md = db.metadata_for_field(custom_field) + if field_md['datatype'] in ['bool','composite','datetime','text']: + custom_fields[field_md['name']] = {'field':custom_field, + 'datatype':field_md['datatype']} + + # Add the sorted eligible fields to the combo box + for cf in sorted(custom_fields): + self.read_source_field_cb.addItem(cf) + + self.read_source_fields = custom_fields + self.read_source_field_cb.currentIndexChanged.connect(self.read_source_field_changed) + # Update dialog fields from stored options for opt in self.OPTION_FIELDS: opt_value = gprefs.get(self.name + '_' + opt[0], opt[1]) - if opt[0] in ['numbers_as_text','generate_titles','generate_series','generate_recently_added']: + if opt[0] in [ + 'generate_recently_added', + 'generate_series', + 'generate_titles', + 'numbers_as_text', + ]: getattr(self, opt[0]).setChecked(opt_value) + + # Combo box + elif opt[0] in ['read_source_field_cb']: + # Look for last-stored combo box value + index = self.read_source_field_cb.findText(opt_value) + print "last index: %d" % index + if index == -1: + index = self.read_source_field_cb.findText('Tag') + self.read_source_field_cb.setCurrentIndex(index) + + # Text fields else: getattr(self, opt[0]).setText(opt_value) + # Init self.read_source_field + cs = str(self.read_source_field_cb.currentText()) + read_source_spec = self.read_source_fields[str(cs)] + self.read_source_field = read_source_spec['field'] + def options(self): # Save/return the current options # exclude_genre stores literally @@ -55,16 +103,60 @@ class PluginWidget(QWidget,Ui_Form): # others store as lists opts_dict = {} for opt in self.OPTION_FIELDS: - if opt[0] in ['numbers_as_text','generate_titles','generate_series','generate_recently_added']: + # Save values to gprefs + if opt[0] in [ + 'generate_recently_added', + 'generate_series', + 'generate_titles', + 'numbers_as_text', + ]: opt_value = getattr(self,opt[0]).isChecked() + + # Combo box uses .currentText() + elif opt[0] in ['read_source_field_cb']: + opt_value = unicode(getattr(self, opt[0]).currentText()) + + # text fields use .text() else: opt_value = unicode(getattr(self, opt[0]).text()) gprefs.set(self.name + '_' + opt[0], opt_value) - if opt[0] in ['exclude_genre','numbers_as_text','generate_titles','generate_series','generate_recently_added']: + # Construct opts + if opt[0] in [ + 'exclude_genre', + 'generate_recently_added', + 'generate_series', + 'generate_titles', + 'numbers_as_text', + ]: opts_dict[opt[0]] = opt_value else: opts_dict[opt[0]] = opt_value.split(',') - opts_dict['output_profile'] = [load_defaults('page_setup')['output_profile']] + # Generate read_book_marker + opts_dict['read_book_marker'] = "%s:%s" % (self.read_source_field, self.read_pattern.text()) + + # Append the output profile + opts_dict['output_profile'] = [load_defaults('page_setup')['output_profile']] return opts_dict + + def read_source_field_changed(self,new_index): + ''' + Process changes in the read_source_field combo box + Currently using QLineEdit for all field types + Possible to modify to switch QWidget type + ''' + new_source = str(self.read_source_field_cb.currentText()) + read_source_spec = self.read_source_fields[str(new_source)] + self.read_source_field = read_source_spec['field'] + + # Change pattern input widget to match the source field datatype + if read_source_spec['datatype'] in ['bool','composite','datetime','text']: + if type(self.read_pattern) != type(QtGui.QLineEdit()): + self.read_spec_hl.removeWidget(self.read_pattern) + dw = QtGui.QLineEdit() + dw.setObjectName('read_pattern') + dw.setToolTip('Pattern for read book') + self.read_pattern = dw + self.read_spec_hl.addWidget(dw) + diff --git a/src/calibre/gui2/catalog/catalog_epub_mobi.ui b/src/calibre/gui2/catalog/catalog_epub_mobi.ui index 3956886c4a..d72566f581 100644 --- a/src/calibre/gui2/catalog/catalog_epub_mobi.ui +++ b/src/calibre/gui2/catalog/catalog_epub_mobi.ui @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>579</width> - <height>411</height> + <width>627</width> + <height>549</height> </rect> </property> <property name="windowTitle"> @@ -28,42 +28,28 @@ </property> </widget> </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_3"> - <property name="text"> - <string>'Mark this book as read' tag:</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QLineEdit" name="read_tag"> - <property name="toolTip"> - <string extracomment="Default: +"/> - </property> - </widget> - </item> - <item row="3" column="0"> + <item row="4" column="0"> <widget class="QLabel" name="label_4"> <property name="text"> <string>Additional note tag prefix:</string> </property> </widget> </item> - <item row="3" column="1"> + <item row="4" column="1"> <widget class="QLineEdit" name="note_tag"> <property name="toolTip"> <string extracomment="Default: *"/> </property> </widget> </item> - <item row="5" column="1"> + <item row="6" column="1"> <widget class="QLineEdit" name="exclude_genre"> <property name="toolTip"> <string extracomment="Default: \[[\w]*\]"/> </property> </widget> </item> - <item row="5" column="0"> + <item row="6" column="0"> <widget class="QLabel" name="label"> <property name="text"> <string>Regex pattern describing tags to exclude as genres:</string> @@ -76,7 +62,7 @@ </property> </widget> </item> - <item row="6" column="1"> + <item row="7" column="1"> <widget class="QLabel" name="label_6"> <property name="text"> <string>Regex tips: @@ -88,7 +74,7 @@ </property> </widget> </item> - <item row="7" column="0"> + <item row="8" column="0"> <spacer name="verticalSpacer"> <property name="orientation"> <enum>Qt::Vertical</enum> @@ -101,44 +87,84 @@ </property> </spacer> </item> - <item row="9" column="0"> + <item row="10" column="0"> <widget class="QCheckBox" name="generate_titles"> <property name="text"> <string>Include 'Titles' Section</string> </property> </widget> </item> - <item row="11" column="0"> + <item row="12" column="0"> <widget class="QCheckBox" name="generate_recently_added"> <property name="text"> <string>Include 'Recently Added' Section</string> </property> </widget> </item> - <item row="12" column="0"> + <item row="13" column="0"> <widget class="QCheckBox" name="numbers_as_text"> <property name="text"> <string>Sort numbers as text</string> </property> </widget> </item> - <item row="10" column="0"> + <item row="11" column="0"> <widget class="QCheckBox" name="generate_series"> <property name="text"> <string>Include 'Series' Section</string> </property> </widget> </item> - <item row="2" column="1"> + <item row="3" column="1"> <widget class="QLineEdit" name="wishlist_tag"/> </item> - <item row="2" column="0"> + <item row="3" column="0"> <widget class="QLabel" name="label_5"> <property name="text"> <string>Wishlist tag:</string> </property> </widget> </item> + <item row="2" column="1"> + <layout class="QHBoxLayout" name="read_spec_hl"> + <property name="sizeConstraint"> + <enum>QLayout::SetMinimumSize</enum> + </property> + <item> + <widget class="QComboBox" name="read_source_field_cb"> + <property name="sizePolicy"> + <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip"> + <string>Source column for read book</string> + </property> + <property name="statusTip"> + <string/> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="read_pattern"> + <property name="toolTip"> + <string>Pattern for read book</string> + </property> + <property name="statusTip"> + <string/> + </property> + </widget> + </item> + </layout> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="label_3"> + <property name="text"> + <string>Books marked as read:</string> + </property> + </widget> + </item> </layout> </widget> <resources/> diff --git a/src/calibre/library/catalog.py b/src/calibre/library/catalog.py index 2ee55851de..b7dbd3c35f 100644 --- a/src/calibre/library/catalog.py +++ b/src/calibre/library/catalog.py @@ -606,12 +606,12 @@ class EPUB_MOBI(CatalogPlugin): help=_("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")), - Option('--read-tag', - default='+', - dest='read_tag', + Option('--read-book-marker', + default='tag:+', + dest='read_book_marker', action = None, - help=_("Tag indicating book has been read.\n" "Default: '%default'\n" - "Applies to: ePub, MOBI output formats")), + help=_("field:pattern indicating book has been read.\n" "Default: '%default'\n" + "Applies to ePub, MOBI output formats")), Option('--wishlist-tag', default='Wishlist', dest='wishlist_tag', @@ -898,6 +898,8 @@ class EPUB_MOBI(CatalogPlugin): self.__plugin = plugin self.__progressInt = 0.0 self.__progressString = '' + self.__read_book_marker = {'field':opts.read_book_marker.split(':')[0], + 'pattern':opts.read_book_marker.split(':')[1]} self.__reporter = report_progress self.__stylesheet = stylesheet self.__thumbs = None @@ -936,7 +938,6 @@ class EPUB_MOBI(CatalogPlugin): if self.opts.generate_series: self.__totalSteps += 2 - # Accessors if True: ''' @@ -1402,7 +1403,7 @@ class EPUB_MOBI(CatalogPlugin): this_title['cover'] = re.sub('&', '&', record['cover']) # This may be updated in self.processSpecialTags() - this_title['read'] = False + this_title['read'] = self.discoverReadStatus(record) if record['tags']: this_title['tags'] = self.processSpecialTags(record['tags'], @@ -2675,13 +2676,14 @@ class EPUB_MOBI(CatalogPlugin): pBookTag = Tag(soup, "p") ptc = 0 + # THIS SHOULDN'T BE NECESSARY # book with read/reading/unread symbol - for tag in book['tags']: - if tag == self.opts.read_tag: - book['read'] = True - break - else: - book['read'] = False +# for tag in book['tags']: +# if tag == self.opts.read_tag: +# book['read'] = True +# break +# else: +# book['read'] = False # book with read|reading|unread symbol or wishlist item if self.opts.wishlist_tag in book.get('tags', []): @@ -4027,6 +4029,37 @@ class EPUB_MOBI(CatalogPlugin): if not os.path.isdir(images_path): os.makedirs(images_path) + def discoverReadStatus(self, record): + ''' + Given a field:pattern spec, discover if this book marked as read + + if field == tag, scan tags for pattern + if custom field, try regex match for pattern + This allows maximum flexibility with fields of type + datatype bool: #field_name:True + datatype text: #field_name:<string> + datatype datetime: #field_name:.* + + ''' + # Legacy handling of special 'read' tag + if self.__read_book_marker['field'] == 'tag': + return self.__read_book_marker['pattern'] in record['tags'] + + # Custom fields + elif self.__read_book_marker['field'].startswith('#'): + field_contents = self.__db.get_field(record['id'], + self.__read_book_marker['field'], + index_is_id=True) + if field_contents == '': + field_contents = None + + if field_contents is not None: + if re.match(self.__read_book_marker['pattern'],str(field_contents), re.IGNORECASE): + return True + + return False + + def filterDbTags(self, tags): # Remove the special marker tags from the database's tag list, # return sorted list of normalized genre tags @@ -4648,10 +4681,12 @@ class EPUB_MOBI(CatalogPlugin): tag = self.convertHTMLEntities(tag) if tag.startswith(opts.note_tag): this_title['notes'] = tag[len(self.opts.note_tag):] - elif tag == opts.read_tag: - this_title['read'] = True elif re.search(opts.exclude_genre, tag): continue + elif self.__read_book_marker['field'] == 'tag' and \ + tag == self.__read_book_marker['pattern']: + # remove 'read' tag + continue else: tag_list.append(tag) return tag_list @@ -4760,7 +4795,7 @@ class EPUB_MOBI(CatalogPlugin): for key in keys: if key in ['catalog_title','authorClip','connected_kindle','descriptionClip', 'exclude_genre','exclude_tags','note_tag','numbers_as_text', - 'output_profile','read_tag', + 'output_profile','read_book_marker','read_tag', 'search_text','sort_by','sort_descriptions_by_author','sync', 'wishlist_tag']: build_log.append(" %s: %s" % (key, opts_dict[key])) diff --git a/src/calibre/library/cli.py b/src/calibre/library/cli.py index 7d3fb329e0..747cd59abb 100644 --- a/src/calibre/library/cli.py +++ b/src/calibre/library/cli.py @@ -640,7 +640,7 @@ def catalog_option_parser(args): log = Log() parser = get_parser(_( ''' - %prog catalog /path/to/destination.(csv|epub|mobi|xml ...) [options] + %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options] Export a catalog in format specified by path/to/destination extension. Options control how entries are displayed in the generated catalog ouput. From bfdc51a2dda552c99b5570c5a2becc61165d4dfe Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Tue, 30 Nov 2010 17:37:56 +0000 Subject: [PATCH 236/377] Make the 'clear' button respect the search emit flag. --- src/calibre/gui2/search_box.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py index 6624acf35f..065520b4c5 100644 --- a/src/calibre/gui2/search_box.py +++ b/src/calibre/gui2/search_box.py @@ -107,6 +107,7 @@ class SearchBox2(QComboBox): return self.currentText() def clear(self, emit_search=True): + print 'in clear', emit_search self.normalize_state() self.setEditText('') if emit_search: @@ -318,7 +319,7 @@ class SearchBoxMixin(object): self.search.cleared.connect(self.search_box_cleared) self.search.changed.connect(self.search_box_changed) self.search.focus_to_library.connect(self.focus_to_library) - self.clear_button.clicked.connect(self.search.clear) + self.clear_button.clicked.connect(lambda:self.search.clear(True)) self.advanced_search_button.clicked[bool].connect(self.do_advanced_search) self.search.clear() From ff978282c72f6fea76d79a5d90dab5af00298b95 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Tue, 30 Nov 2010 18:03:52 +0000 Subject: [PATCH 237/377] Remove widgets with removing the layout in bulk edit. --- src/calibre/gui2/dialogs/metadata_bulk.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/calibre/gui2/dialogs/metadata_bulk.py b/src/calibre/gui2/dialogs/metadata_bulk.py index f2a2394e9e..e67a80e5d1 100644 --- a/src/calibre/gui2/dialogs/metadata_bulk.py +++ b/src/calibre/gui2/dialogs/metadata_bulk.py @@ -210,6 +210,11 @@ class MetadataBulkDialog(QDialog, Ui_MetadataBulkDialog): # Remove all controls from the dialog box by deleting the top layout if self.layout(): import sip + while True: + child = self.layout().takeAt(0) + if not child: + break; + sip.delete(child) sip.delete(self.layout()) self.setupUi(self) From 566d56e71e7ca8fabb3ffa812a9b9e59ed790de0 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Tue, 30 Nov 2010 18:55:24 +0000 Subject: [PATCH 238/377] Another attempt at apply in bulk edit --- src/calibre/gui2/actions/edit_metadata.py | 9 +++- src/calibre/gui2/dialogs/metadata_bulk.py | 51 ++++++++--------------- 2 files changed, 24 insertions(+), 36 deletions(-) diff --git a/src/calibre/gui2/actions/edit_metadata.py b/src/calibre/gui2/actions/edit_metadata.py index 9b3f2c5bb9..8b57b4b455 100644 --- a/src/calibre/gui2/actions/edit_metadata.py +++ b/src/calibre/gui2/actions/edit_metadata.py @@ -162,9 +162,14 @@ class EditMetadataAction(InterfaceAction): return # Prevent the TagView from updating due to signals from the database self.gui.tags_view.blockSignals(True) + changed = False try: - changed = MetadataBulkDialog(self.gui, rows, - self.gui.library_view.model()).changed + while True: + dialog = MetadataBulkDialog(self.gui, rows, self.gui.library_view.model()) + if dialog.changed: + changed = True + if not dialog.do_again: + break finally: self.gui.tags_view.blockSignals(False) if changed: diff --git a/src/calibre/gui2/dialogs/metadata_bulk.py b/src/calibre/gui2/dialogs/metadata_bulk.py index e67a80e5d1..4fd34e4c4c 100644 --- a/src/calibre/gui2/dialogs/metadata_bulk.py +++ b/src/calibre/gui2/dialogs/metadata_bulk.py @@ -198,35 +198,15 @@ class MetadataBulkDialog(QDialog, Ui_MetadataBulkDialog): ] def __init__(self, window, rows, model): - self.model = model - self.db = self.model.db - self.ids = [self.db.id(r) for r in rows] QDialog.__init__(self, window) Ui_MetadataBulkDialog.__init__(self) - self._initialize() - self.exec_() - - def _initialize(self): - # Remove all controls from the dialog box by deleting the top layout - if self.layout(): - import sip - while True: - child = self.layout().takeAt(0) - if not child: - break; - sip.delete(child) - sip.delete(self.layout()) - self.setupUi(self) - self.button_box.clicked.connect(self.button_clicked) - self.button_box.button(QDialogButtonBox.Apply).setToolTip(_( - 'Immediately make all changes without closing the dialog. ' - 'This operation cannot be canceled or undone')) - + self.model = model + self.db = model.db + self.ids = [self.db.id(r) for r in rows] self.box_title.setText('<p>' + _('Editing meta information for <b>%d books</b>') % - len(self.ids)) - + len(rows)) self.write_series = False self.changed = False @@ -253,10 +233,17 @@ class MetadataBulkDialog(QDialog, Ui_MetadataBulkDialog): self.prepare_search_and_replace() + self.button_box.clicked.connect(self.button_clicked) + self.button_box.button(QDialogButtonBox.Apply).setToolTip(_( + 'Immediately make all changes without closing the dialog. ' + 'This operation cannot be canceled or undone')) + self.do_again = False + self.exec_() + def button_clicked(self, which): if which == self.button_box.button(QDialogButtonBox.Apply): - self._do_the_work() - self._initialize() + self.do_again = True + self.accept() def prepare_search_and_replace(self): self.search_for.initialize('bulk_edit_search_for') @@ -651,7 +638,10 @@ class MetadataBulkDialog(QDialog, Ui_MetadataBulkDialog): self.series_start_number.setEnabled(False) self.series_start_number.setValue(1) - def _do_the_work(self): + def accept(self): + if len(self.ids) < 1: + return QDialog.accept(self) + if self.s_r_error is not None: error_dialog(self, _('Search/replace invalid'), _('Search pattern is invalid: %s')%self.s_r_error.message, @@ -711,13 +701,6 @@ class MetadataBulkDialog(QDialog, Ui_MetadataBulkDialog): dynamic['s_r_search_mode'] = self.search_mode.currentIndex() self.db.clean() - return True - - def accept(self): - if len(self.ids) < 1: - return QDialog.accept(self) - if not self._do_the_work(): - return False return QDialog.accept(self) def series_changed(self, *args): From 5fa54ef9adda206a6022be495095dfaec1001ef5 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Tue, 30 Nov 2010 13:52:58 -0700 Subject: [PATCH 239/377] Use the same MIME database on all platforms that calibre runs on --- resources/mime.types | 1381 +++++++++++++++++++++++++++++++++++++++ src/calibre/__init__.py | 35 +- src/calibre/startup.py | 5 + 3 files changed, 1390 insertions(+), 31 deletions(-) create mode 100644 resources/mime.types diff --git a/resources/mime.types b/resources/mime.types new file mode 100644 index 0000000000..ab98b3bf4a --- /dev/null +++ b/resources/mime.types @@ -0,0 +1,1381 @@ +## Mimetypes from my linux system + +application/activemessage +application/andrew-inset ez +application/applefile +application/applixware aw +application/atom+xml atom +application/atomcat+xml atomcat +application/atomicmail +application/atomsvc+xml atomsvc +application/auth-policy+xml +application/batch-smtp +application/beep+xml +application/cals-1840 +application/ccxml+xml ccxml +application/cea-2018+xml +application/cellml+xml +application/cnrp+xml +application/commonground +application/conference-info+xml +application/cpl+xml +application/csta+xml +application/cstadata+xml +application/cu-seeme cu +application/cybercash +application/davmount+xml davmount +application/dca-rft +application/dec-dx +application/dialog-info+xml +application/dicom +application/dns +application/dsptype tsp +application/dvcs +application/ecmascript ecma +application/edi-consent +application/edi-x12 +application/edifact +application/emma+xml emma +application/epp+xml +application/epub+zip epub +application/eshop +application/example +application/fastinfoset +application/fastsoap +application/fits +application/font-tdpfr pfr +application/futuresplash spl +application/h224 +application/hta hta +application/http +application/hyperstudio stk +application/ibe-key-request+xml +application/ibe-pkg-reply+xml +application/ibe-pp-data +application/iges +application/im-iscomposing+xml +application/index +application/index.cmd +application/index.obj +application/index.response +application/index.vnd +application/iotp +application/ipp +application/isup +application/java-archive jar +application/java-serialized-object ser +application/java-vm class +application/javascript js +application/json json +application/kpml-request+xml +application/kpml-response+xml +application/lost+xml lostxml +application/mac-binhex40 hqx +application/mac-compactpro cpt +application/macwriteii +application/marc mrc +application/mathematica ma mb nb +application/mathml+xml mathml +application/mbms-associated-procedure-description+xml +application/mbms-deregister+xml +application/mbms-envelope+xml +application/mbms-msk+xml +application/mbms-msk-response+xml +application/mbms-protection-description+xml +application/mbms-reception-report+xml +application/mbms-register+xml +application/mbms-register-response+xml +application/mbms-user-service-description+xml +application/mbox mbox +application/media_control+xml +application/mediaservercontrol+xml mscml +application/mikey +application/moss-keys +application/moss-signature +application/mosskey-data +application/mosskey-request +application/mp4 mp4s +application/mpeg4-generic +application/mpeg4-iod +application/mpeg4-iod-xmt +application/msaccess mdb +application/msword doc dot +application/mxf mxf +application/nasdata +application/news-checkgroups +application/news-groupinfo +application/news-transmission +application/nss +application/ocsp-request +application/ocsp-response +application/octet-stream bin bpk deploy dist distz dmg dms dump elc iso lha lrf lzh pkg so +application/oda oda +application/oebps-package+xml opf +application/ogg ogg ogx +application/onenote onepkg onetmp onetoc onetoc2 +application/parityfec +application/patch-ops-error+xml xer +application/pdf pdf +application/pgp-encrypted pgp +application/pgp-keys key +application/pgp-signature asc pgp sig +application/pics-rules prf +application/pidf+xml +application/pidf-diff+xml +application/pkcs10 p10 +application/pkcs7-mime p7c p7m +application/pkcs7-signature p7s +application/pkix-cert cer +application/pkix-crl crl +application/pkix-pkipath pkipath +application/pkixcmp pki +application/pls+xml pls +application/poc-settings+xml +application/postscript ai eps ps +application/prs.alvestrand.titrax-sheet +application/prs.cww cww +application/prs.nprend +application/prs.plucker +application/qsig +application/rar rar +application/rdf+xml rdf +application/reginfo+xml rif +application/relax-ng-compact-syntax rnc +application/remote-printing +application/resource-lists+xml rl +application/resource-lists-diff+xml rld +application/riscos +application/rlmi+xml +application/rls-services+xml rs +application/rsd+xml rsd +application/rss+xml rss +application/rtf rtf +application/rtx +application/samlassertion+xml +application/samlmetadata+xml +application/sbml+xml sbml +application/scvp-cv-request scq +application/scvp-cv-response scs +application/scvp-vp-request spq +application/scvp-vp-response spp +application/sdp sdp +application/set-payment +application/set-payment-initiation setpay +application/set-registration +application/set-registration-initiation setreg +application/sgml +application/sgml-open-catalog +application/shf+xml shf +application/sieve +application/simple-filter+xml +application/simple-message-summary +application/simplesymbolcontainer +application/slate +application/smil smi smil +application/smil+xml smi smil +application/soap+fastinfoset +application/soap+xml +application/sparql-query rq +application/sparql-results+xml srx +application/spirits-event+xml +application/srgs gram +application/srgs+xml grxml +application/ssml+xml ssml +application/timestamp-query +application/timestamp-reply +application/tve-trigger +application/ulpfec +application/vemmi +application/vividence.scriptfile +application/vnd.3gpp.bsf+xml +application/vnd.3gpp.pic-bw-large plb +application/vnd.3gpp.pic-bw-small psb +application/vnd.3gpp.pic-bw-var pvb +application/vnd.3gpp.sms +application/vnd.3gpp2.bcmcsinfo+xml +application/vnd.3gpp2.sms +application/vnd.3gpp2.tcap tcap +application/vnd.3m.post-it-notes pwn +application/vnd.accpac.simply.aso aso +application/vnd.accpac.simply.imp imp +application/vnd.acucobol acu +application/vnd.acucorp acutc atc +application/vnd.adobe.air-application-installer-package+zip air +application/vnd.adobe.xdp+xml xdp +application/vnd.adobe.xfdf xfdf +application/vnd.aether.imp +application/vnd.airzip.filesecure.azf azf +application/vnd.airzip.filesecure.azs azs +application/vnd.amazon.ebook azw +application/vnd.americandynamics.acc acc +application/vnd.amiga.ami ami +application/vnd.android.package-archive apk +application/vnd.anser-web-certificate-issue-initiation cii +application/vnd.anser-web-funds-transfer-initiation fti +application/vnd.antix.game-component atx +application/vnd.apple.installer+xml mpkg +application/vnd.arastra.swi swi +application/vnd.audiograph aep +application/vnd.autopackage +application/vnd.avistar+xml +application/vnd.blueice.multipass mpm +application/vnd.bluetooth.ep.oob +application/vnd.bmi bmi +application/vnd.businessobjects rep +application/vnd.cab-jscript +application/vnd.canon-cpdl +application/vnd.canon-lips +application/vnd.cendio.thinlinc.clientconf +application/vnd.chemdraw+xml cdxml +application/vnd.chipnuts.karaoke-mmd mmd +application/vnd.cinderella cdy +application/vnd.cirpack.isdn-ext +application/vnd.claymore cla +application/vnd.clonk.c4group c4d c4f c4g c4p c4u +application/vnd.commerce-battelle +application/vnd.commonspace csp +application/vnd.contact.cmsg cdbcmsg +application/vnd.cosmocaller cmc +application/vnd.crick.clicker clkx +application/vnd.crick.clicker.keyboard clkk +application/vnd.crick.clicker.palette clkp +application/vnd.crick.clicker.template clkt +application/vnd.crick.clicker.wordbank clkw +application/vnd.criticaltools.wbs+xml wbs +application/vnd.ctc-posml pml +application/vnd.ctct.ws+xml +application/vnd.cups-pdf +application/vnd.cups-postscript +application/vnd.cups-ppd ppd +application/vnd.cups-raster +application/vnd.cups-raw +application/vnd.curl.car car +application/vnd.curl.pcurl pcurl +application/vnd.cybank +application/vnd.data-vision.rdz rdz +application/vnd.denovo.fcselayout-link fe_launch +application/vnd.dir-bi.plate-dl-nosuffix +application/vnd.dna dna +application/vnd.dolby.mlp mlp +application/vnd.dolby.mobile.1 +application/vnd.dolby.mobile.2 +application/vnd.dpgraph dpg +application/vnd.dreamfactory dfac +application/vnd.dvb.esgcontainer +application/vnd.dvb.ipdcdftnotifaccess +application/vnd.dvb.ipdcesgaccess +application/vnd.dvb.ipdcroaming +application/vnd.dvb.iptv.alfec-base +application/vnd.dvb.iptv.alfec-enhancement +application/vnd.dvb.notif-aggregate-root+xml +application/vnd.dvb.notif-container+xml +application/vnd.dvb.notif-generic+xml +application/vnd.dvb.notif-ia-msglist+xml +application/vnd.dvb.notif-ia-registration-request+xml +application/vnd.dvb.notif-ia-registration-response+xml +application/vnd.dvb.notif-init+xml +application/vnd.dxr +application/vnd.dynageo geo +application/vnd.ecdis-update +application/vnd.ecowin.chart mag +application/vnd.ecowin.filerequest +application/vnd.ecowin.fileupdate +application/vnd.ecowin.series +application/vnd.ecowin.seriesrequest +application/vnd.ecowin.seriesupdate +application/vnd.emclient.accessrequest+xml +application/vnd.enliven nml +application/vnd.epson.esf esf +application/vnd.epson.msf msf +application/vnd.epson.quickanime qam +application/vnd.epson.salt slt +application/vnd.epson.ssf ssf +application/vnd.ericsson.quickcall +application/vnd.eszigno3+xml es3 et3 +application/vnd.etsi.aoc+xml +application/vnd.etsi.cug+xml +application/vnd.etsi.iptvcommand+xml +application/vnd.etsi.iptvdiscovery+xml +application/vnd.etsi.iptvprofile+xml +application/vnd.etsi.iptvsad-bc+xml +application/vnd.etsi.iptvsad-cod+xml +application/vnd.etsi.iptvsad-npvr+xml +application/vnd.etsi.iptvueprofile+xml +application/vnd.etsi.mcid+xml +application/vnd.etsi.sci+xml +application/vnd.etsi.simservs+xml +application/vnd.eudora.data +application/vnd.ezpix-album ez2 +application/vnd.ezpix-package ez3 +application/vnd.f-secure.mobile +application/vnd.fdf fdf +application/vnd.fdsn.mseed mseed +application/vnd.fdsn.seed dataless seed +application/vnd.ffsns +application/vnd.fints +application/vnd.flographit gph +application/vnd.fluxtime.clip ftc +application/vnd.font-fontforge-sfd +application/vnd.framemaker book fm frame maker +application/vnd.frogans.fnc fnc +application/vnd.frogans.ltf ltf +application/vnd.fsc.weblaunch fsc +application/vnd.fujitsu.oasys oas +application/vnd.fujitsu.oasys2 oa2 +application/vnd.fujitsu.oasys3 oa3 +application/vnd.fujitsu.oasysgp fg5 +application/vnd.fujitsu.oasysprs bh2 +application/vnd.fujixerox.art-ex +application/vnd.fujixerox.art4 +application/vnd.fujixerox.ddd ddd +application/vnd.fujixerox.docuworks xdw +application/vnd.fujixerox.docuworks.binder xbd +application/vnd.fujixerox.hbpl +application/vnd.fut-misnet +application/vnd.fuzzysheet fzs +application/vnd.genomatix.tuxedo txd +application/vnd.geogebra.file ggb +application/vnd.geogebra.tool ggt +application/vnd.geometry-explorer gex gre +application/vnd.gmx gmx +application/vnd.google-earth.kml+xml kml +application/vnd.google-earth.kmz kmz +application/vnd.grafeq gqf gqs +application/vnd.gridmp +application/vnd.groove-account gac +application/vnd.groove-help ghf +application/vnd.groove-identity-message gim +application/vnd.groove-injector grv +application/vnd.groove-tool-message gtm +application/vnd.groove-tool-template tpl +application/vnd.groove-vcard vcg +application/vnd.handheld-entertainment+xml zmm +application/vnd.hbci hbci +application/vnd.hcl-bireports +application/vnd.hhe.lesson-player les +application/vnd.hp-hpgl hpgl +application/vnd.hp-hpid hpid +application/vnd.hp-hps hps +application/vnd.hp-jlyt jlt +application/vnd.hp-pcl pcl +application/vnd.hp-pclxl pclxl +application/vnd.httphone +application/vnd.hydrostatix.sof-data sfd-hdstx +application/vnd.hzn-3d-crossword x3d +application/vnd.ibm.afplinedata +application/vnd.ibm.electronic-media +application/vnd.ibm.minipay mpy +application/vnd.ibm.modcap afp list3820 listafp +application/vnd.ibm.rights-management irm +application/vnd.ibm.secure-container sc +application/vnd.iccprofile icc icm +application/vnd.igloader igl +application/vnd.immervision-ivp ivp +application/vnd.immervision-ivu ivu +application/vnd.informedcontrol.rms+xml +application/vnd.informix-visionary +application/vnd.intercon.formnet xpw xpx +application/vnd.intertrust.digibox +application/vnd.intertrust.nncp +application/vnd.intu.qbo qbo +application/vnd.intu.qfx qfx +application/vnd.iptc.g2.conceptitem+xml +application/vnd.iptc.g2.knowledgeitem+xml +application/vnd.iptc.g2.newsitem+xml +application/vnd.iptc.g2.packageitem+xml +application/vnd.ipunplugged.rcprofile rcprofile +application/vnd.irepository.package+xml irp +application/vnd.is-xpr xpr +application/vnd.jam jam +application/vnd.japannet-directory-service +application/vnd.japannet-jpnstore-wakeup +application/vnd.japannet-payment-wakeup +application/vnd.japannet-registration +application/vnd.japannet-registration-wakeup +application/vnd.japannet-setstore-wakeup +application/vnd.japannet-verification +application/vnd.japannet-verification-wakeup +application/vnd.jcp.javame.midlet-rms rms +application/vnd.jisp jisp +application/vnd.joost.joda-archive joda +application/vnd.kahootz ktr ktz +application/vnd.kde.karbon karbon +application/vnd.kde.kchart chrt +application/vnd.kde.kformula kfo +application/vnd.kde.kivio flw +application/vnd.kde.kontour kon +application/vnd.kde.kpresenter kpr kpt +application/vnd.kde.kspread ksp +application/vnd.kde.kword kwd kwt +application/vnd.kenameaapp htke +application/vnd.kidspiration kia +application/vnd.kinar kne knp +application/vnd.koan skd skm skp skt +application/vnd.kodak-descriptor sse +application/vnd.liberty-request+xml +application/vnd.llamagraphics.life-balance.desktop lbd +application/vnd.llamagraphics.life-balance.exchange+xml lbe +application/vnd.lotus-1-2-3 123 +application/vnd.lotus-approach apr +application/vnd.lotus-freelance pre +application/vnd.lotus-notes nsf +application/vnd.lotus-organizer org +application/vnd.lotus-screencam scm +application/vnd.lotus-wordpro lwp +application/vnd.macports.portpkg portpkg +application/vnd.marlin.drm.actiontoken+xml +application/vnd.marlin.drm.conftoken+xml +application/vnd.marlin.drm.license+xml +application/vnd.marlin.drm.mdcf +application/vnd.mcd mcd +application/vnd.medcalcdata mc1 +application/vnd.mediastation.cdkey cdkey +application/vnd.meridian-slingshot +application/vnd.mfer mwf +application/vnd.mfmp mfm +application/vnd.micrografx.flo flo +application/vnd.micrografx.igx igx +application/vnd.mif mif +application/vnd.minisoft-hp3000-save +application/vnd.mitsubishi.misty-guard.trustweb +application/vnd.mobius.daf daf +application/vnd.mobius.dis dis +application/vnd.mobius.mbk mbk +application/vnd.mobius.mqy mqy +application/vnd.mobius.msl msl +application/vnd.mobius.plc plc +application/vnd.mobius.txf txf +application/vnd.mophun.application mpn +application/vnd.mophun.certificate mpc +application/vnd.motorola.flexsuite +application/vnd.motorola.flexsuite.adsi +application/vnd.motorola.flexsuite.fis +application/vnd.motorola.flexsuite.gotap +application/vnd.motorola.flexsuite.kmr +application/vnd.motorola.flexsuite.ttc +application/vnd.motorola.flexsuite.wem +application/vnd.motorola.iprm +application/vnd.mozilla.xul+xml xul +application/vnd.ms-artgalry cil +application/vnd.ms-asf +application/vnd.ms-cab-compressed cab +application/vnd.ms-excel xla xlb xlc xlm xls xlt xlw +application/vnd.ms-excel.addin.macroenabled.12 xlam +application/vnd.ms-excel.sheet.binary.macroenabled.12 xlsb +application/vnd.ms-excel.sheet.macroenabled.12 xlsm +application/vnd.ms-excel.template.macroenabled.12 xltm +application/vnd.ms-fontobject eot +application/vnd.ms-htmlhelp chm +application/vnd.ms-ims ims +application/vnd.ms-lrm lrm +application/vnd.ms-pki.seccat cat +application/vnd.ms-pki.stl stl +application/vnd.ms-playready.initiator+xml +application/vnd.ms-powerpoint pot pps ppt +application/vnd.ms-powerpoint.addin.macroenabled.12 ppam +application/vnd.ms-powerpoint.presentation.macroenabled.12 pptm +application/vnd.ms-powerpoint.slide.macroenabled.12 sldm +application/vnd.ms-powerpoint.slideshow.macroenabled.12 ppsm +application/vnd.ms-powerpoint.template.macroenabled.12 potm +application/vnd.ms-project mpp mpt +application/vnd.ms-tnef +application/vnd.ms-wmdrm.lic-chlg-req +application/vnd.ms-wmdrm.lic-resp +application/vnd.ms-wmdrm.meter-chlg-req +application/vnd.ms-wmdrm.meter-resp +application/vnd.ms-word.document.macroenabled.12 docm +application/vnd.ms-word.template.macroenabled.12 dotm +application/vnd.ms-works wcm wdb wks wps +application/vnd.ms-wpl wpl +application/vnd.ms-xpsdocument xps +application/vnd.mseq mseq +application/vnd.msign +application/vnd.multiad.creator +application/vnd.multiad.creator.cif +application/vnd.music-niff +application/vnd.musician mus +application/vnd.muvee.style msty +application/vnd.ncd.control +application/vnd.ncd.reference +application/vnd.nervana +application/vnd.netfpx +application/vnd.neurolanguage.nlu nlu +application/vnd.noblenet-directory nnd +application/vnd.noblenet-sealer nns +application/vnd.noblenet-web nnw +application/vnd.nokia.catalogs +application/vnd.nokia.conml+wbxml +application/vnd.nokia.conml+xml +application/vnd.nokia.iptv.config+xml +application/vnd.nokia.isds-radio-presets +application/vnd.nokia.landmark+wbxml +application/vnd.nokia.landmark+xml +application/vnd.nokia.landmarkcollection+xml +application/vnd.nokia.n-gage.ac+xml +application/vnd.nokia.n-gage.data ngdat +application/vnd.nokia.n-gage.symbian.install n-gage +application/vnd.nokia.ncd +application/vnd.nokia.pcd+wbxml +application/vnd.nokia.pcd+xml +application/vnd.nokia.radio-preset rpst +application/vnd.nokia.radio-presets rpss +application/vnd.novadigm.edm edm +application/vnd.novadigm.edx edx +application/vnd.novadigm.ext ext +application/vnd.oasis.opendocument.chart odc +application/vnd.oasis.opendocument.chart-template otc +application/vnd.oasis.opendocument.database odb +application/vnd.oasis.opendocument.formula odf +application/vnd.oasis.opendocument.formula-template odft +application/vnd.oasis.opendocument.graphics odg +application/vnd.oasis.opendocument.graphics-template otg +application/vnd.oasis.opendocument.image odi +application/vnd.oasis.opendocument.image-template oti +application/vnd.oasis.opendocument.presentation odp +application/vnd.oasis.opendocument.presentation-template otp +application/vnd.oasis.opendocument.spreadsheet ods +application/vnd.oasis.opendocument.spreadsheet-template ots +application/vnd.oasis.opendocument.text odt +application/vnd.oasis.opendocument.text-master odm otm +application/vnd.oasis.opendocument.text-template ott +application/vnd.oasis.opendocument.text-web oth +application/vnd.obn +application/vnd.olpc-sugar xo +application/vnd.oma-scws-config +application/vnd.oma-scws-http-request +application/vnd.oma-scws-http-response +application/vnd.oma.bcast.associated-procedure-parameter+xml +application/vnd.oma.bcast.drm-trigger+xml +application/vnd.oma.bcast.imd+xml +application/vnd.oma.bcast.ltkm +application/vnd.oma.bcast.notification+xml +application/vnd.oma.bcast.provisioningtrigger +application/vnd.oma.bcast.sgboot +application/vnd.oma.bcast.sgdd+xml +application/vnd.oma.bcast.sgdu +application/vnd.oma.bcast.simple-symbol-container +application/vnd.oma.bcast.smartcard-trigger+xml +application/vnd.oma.bcast.sprov+xml +application/vnd.oma.bcast.stkm +application/vnd.oma.dcd +application/vnd.oma.dcdc +application/vnd.oma.dd2+xml dd2 +application/vnd.oma.drm.risd+xml +application/vnd.oma.group-usage-list+xml +application/vnd.oma.poc.detailed-progress-report+xml +application/vnd.oma.poc.final-report+xml +application/vnd.oma.poc.groups+xml +application/vnd.oma.poc.invocation-descriptor+xml +application/vnd.oma.poc.optimized-progress-report+xml +application/vnd.oma.xcap-directory+xml +application/vnd.omads-email+xml +application/vnd.omads-file+xml +application/vnd.omads-folder+xml +application/vnd.omaloc-supl-init +application/vnd.openofficeorg.extension oxt +application/vnd.openxmlformats-officedocument.presentationml.presentation pptx +application/vnd.openxmlformats-officedocument.presentationml.slide sldx +application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx +application/vnd.openxmlformats-officedocument.presentationml.template potx +application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx +application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx +application/vnd.openxmlformats-officedocument.wordprocessingml.document docx +application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx +application/vnd.osa.netdeploy +application/vnd.osgi.bundle +application/vnd.osgi.dp dp +application/vnd.otps.ct-kip+xml +application/vnd.palm oprc pdb pqa +application/vnd.paos.xml +application/vnd.pg.format str +application/vnd.pg.osasli ei6 +application/vnd.piaccess.application-licence +application/vnd.picsel efif +application/vnd.poc.group-advertisement+xml +application/vnd.pocketlearn plf +application/vnd.powerbuilder6 pbd +application/vnd.powerbuilder6-s +application/vnd.powerbuilder7 +application/vnd.powerbuilder7-s +application/vnd.powerbuilder75 +application/vnd.powerbuilder75-s +application/vnd.preminet +application/vnd.previewsystems.box box +application/vnd.proteus.magazine mgz +application/vnd.publishare-delta-tree qps +application/vnd.pvi.ptid1 ptid +application/vnd.pwg-multiplexed +application/vnd.pwg-xhtml-print+xml +application/vnd.qualcomm.brew-app-res +application/vnd.quark.quarkxpress qwd qwt qxb qxd qxl qxt +application/vnd.rapid +application/vnd.recordare.musicxml mxl +application/vnd.recordare.musicxml+xml musicxml +application/vnd.renlearn.rlprint +application/vnd.rim.cod cod +application/vnd.rn-realmedia rm +application/vnd.route66.link66+xml link66 +application/vnd.ruckus.download +application/vnd.s3sms +application/vnd.sbm.cid +application/vnd.sbm.mid2 +application/vnd.scribus +application/vnd.sealed.3df +application/vnd.sealed.csf +application/vnd.sealed.doc +application/vnd.sealed.eml +application/vnd.sealed.mht +application/vnd.sealed.net +application/vnd.sealed.ppt +application/vnd.sealed.tiff +application/vnd.sealed.xls +application/vnd.sealedmedia.softseal.html +application/vnd.sealedmedia.softseal.pdf +application/vnd.seemail see +application/vnd.sema sema +application/vnd.semd semd +application/vnd.semf semf +application/vnd.shana.informed.formdata ifm +application/vnd.shana.informed.formtemplate itp +application/vnd.shana.informed.interchange iif +application/vnd.shana.informed.package ipk +application/vnd.simtech-mindmapper twd twds +application/vnd.smaf mmf +application/vnd.smart.teacher teacher +application/vnd.software602.filler.form+xml +application/vnd.software602.filler.form-xml-zip +application/vnd.solent.sdkm+xml sdkd sdkm +application/vnd.spotfire.dxp dxp +application/vnd.spotfire.sfs sfs +application/vnd.sss-cod +application/vnd.sss-dtf +application/vnd.sss-ntf +application/vnd.stardivision.calc sdc +application/vnd.stardivision.draw sda +application/vnd.stardivision.impress sdd sdp +application/vnd.stardivision.math sdf smf +application/vnd.stardivision.writer sdw vor +application/vnd.stardivision.writer-global sgl +application/vnd.street-stream +application/vnd.sun.wadl+xml +application/vnd.sun.xml.calc sxc +application/vnd.sun.xml.calc.template stc +application/vnd.sun.xml.draw sxd +application/vnd.sun.xml.draw.template std +application/vnd.sun.xml.impress sxi +application/vnd.sun.xml.impress.template sti +application/vnd.sun.xml.math sxm +application/vnd.sun.xml.writer sxw +application/vnd.sun.xml.writer.global sxg +application/vnd.sun.xml.writer.template stw +application/vnd.sus-calendar sus susp +application/vnd.svd svd +application/vnd.swiftview-ics +application/vnd.symbian.install sis sisx +application/vnd.syncml+xml xsm +application/vnd.syncml.dm+wbxml bdm +application/vnd.syncml.dm+xml xdm +application/vnd.syncml.dm.notification +application/vnd.syncml.ds.notification +application/vnd.tao.intent-module-archive tao +application/vnd.tmobile-livetv tmo +application/vnd.trid.tpt tpt +application/vnd.triscape.mxs mxs +application/vnd.trueapp tra +application/vnd.truedoc +application/vnd.ufdl ufd ufdl +application/vnd.uiq.theme utz +application/vnd.umajin umj +application/vnd.unity unityweb +application/vnd.uoml+xml uoml +application/vnd.uplanet.alert +application/vnd.uplanet.alert-wbxml +application/vnd.uplanet.bearer-choice +application/vnd.uplanet.bearer-choice-wbxml +application/vnd.uplanet.cacheop +application/vnd.uplanet.cacheop-wbxml +application/vnd.uplanet.channel +application/vnd.uplanet.channel-wbxml +application/vnd.uplanet.list +application/vnd.uplanet.list-wbxml +application/vnd.uplanet.listcmd +application/vnd.uplanet.listcmd-wbxml +application/vnd.uplanet.signal +application/vnd.vcx vcx +application/vnd.vd-study +application/vnd.vectorworks +application/vnd.vidsoft.vidconference +application/vnd.visio vsd vss vst vsw +application/vnd.visionary vis +application/vnd.vividence.scriptfile +application/vnd.vsf vsf +application/vnd.wap.sic +application/vnd.wap.slc +application/vnd.wap.wbxml wbxml +application/vnd.wap.wmlc wmlc +application/vnd.wap.wmlscriptc wmlsc +application/vnd.webturbo wtb +application/vnd.wfa.wsc +application/vnd.wmc +application/vnd.wmf.bootstrap +application/vnd.wordperfect wpd +application/vnd.wqd wqd +application/vnd.wrq-hp3000-labelled +application/vnd.wt.stf stf +application/vnd.wv.csp+wbxml +application/vnd.wv.csp+xml +application/vnd.wv.ssp+xml +application/vnd.xara xar +application/vnd.xfdl xfdl +application/vnd.xfdl.webform +application/vnd.xmi+xml +application/vnd.xmpie.cpkg +application/vnd.xmpie.dpkg +application/vnd.xmpie.plan +application/vnd.xmpie.ppkg +application/vnd.xmpie.xlim +application/vnd.yamaha.hv-dic hvd +application/vnd.yamaha.hv-script hvs +application/vnd.yamaha.hv-voice hvp +application/vnd.yamaha.openscoreformat osf +application/vnd.yamaha.openscoreformat.osfpvg+xml osfpvg +application/vnd.yamaha.smaf-audio saf +application/vnd.yamaha.smaf-phrase spf +application/vnd.yellowriver-custom-menu cmp +application/vnd.zul zir zirz +application/vnd.zzazz.deck+xml zaz +application/voicexml+xml vxml +application/watcherinfo+xml +application/whoispp-query +application/whoispp-response +application/winhlp hlp +application/wita +application/wordperfect wpd +application/wordperfect5.1 wp5 +application/wsdl+xml wsdl +application/wspolicy+xml wspolicy +application/x-123 wk +application/x-abiword abw +application/x-ace-compressed ace +application/x-apple-diskimage dmg +application/x-authorware-bin aab u32 vox x32 +application/x-authorware-map aam +application/x-authorware-seg aas +application/x-bcpio bcpio +application/x-bittorrent torrent +application/x-bzip bz +application/x-bzip2 boz bz2 +application/x-cdf cdf +application/x-cdlink vcd +application/x-chat chat +application/x-chess-pgn pgn +application/x-compress +application/x-cpio cpio +application/x-csh csh +application/x-debian-package deb udeb +application/x-director cct cst cxt dcr dir dxr fgd swa w3d +application/x-dms dms +application/x-doom wad +application/x-dtbncx+xml ncx +application/x-dtbook+xml dtb +application/x-dtbresource+xml res +application/x-dvi dvi +application/x-flac flac +application/x-font gsf pcf pcf.Z pfa pfb +application/x-font-bdf bdf +application/x-font-dos +application/x-font-framemaker +application/x-font-ghostscript gsf +application/x-font-libgrx +application/x-font-linux-psf psf +application/x-font-otf otf +application/x-font-pcf pcf +application/x-font-snf snf +application/x-font-speedo +application/x-font-sunos-news +application/x-font-ttf ttc ttf +application/x-font-type1 afm pfa pfb pfm +application/x-font-vfont +application/x-freemind mm +application/x-futuresplash spl +application/x-gnumeric gnumeric +application/x-go-sgf sgf +application/x-graphing-calculator gcf +application/x-gtar gtar taz tgz +application/x-gzip +application/x-hdf hdf +application/x-ica ica +application/x-internet-signup ins isp +application/x-iphone iii +application/x-iso9660-image iso +application/x-java-jnlp-file jnlp +application/x-javascript js +application/x-jmol jmz +application/x-kchart chrt +application/x-killustrator kil +application/x-koan skd skm skp skt +application/x-kpresenter kpr kpt +application/x-kspread ksp +application/x-kword kwd kwt +application/x-latex latex +application/x-lha lha +application/x-lzh lzh +application/x-lzx lzx +application/x-maker book fb fbdoc fm frame frm maker +application/x-mif mif +application/x-mobipocket-ebook mobi prc +application/x-ms-application application +application/x-ms-wmd wmd +application/x-ms-wmz wmz +application/x-ms-xbap xbap +application/x-msaccess mdb +application/x-msbinder obd +application/x-mscardfile crd +application/x-msclip clp +application/x-msdos-program bat com dll exe +application/x-msdownload bat com dll exe msi +application/x-msi msi +application/x-msmediaview m13 m14 mvb +application/x-msmetafile wmf +application/x-msmoney mny +application/x-mspublisher pub +application/x-msschedule scd +application/x-msterminal trm +application/x-mswrite wri +application/x-netcdf cdf nc +application/x-ns-proxy-autoconfig pac +application/x-nwc nwc +application/x-object o +application/x-oz-application oza +application/x-pkcs12 p12 pfx +application/x-pkcs7-certificates p7b spc +application/x-pkcs7-certreqresp p7r +application/x-pkcs7-crl crl +application/x-python-code pyc pyo +application/x-quicktimeplayer qtl +application/x-rar-compressed rar +application/x-redhat-package-manager rpm +application/x-sh sh +application/x-shar shar +application/x-shockwave-flash swf swfl +application/x-silverlight-app xap +application/x-stuffit sit sitx +application/x-stuffitx sitx +application/x-sv4cpio sv4cpio +application/x-sv4crc sv4crc +application/x-tar tar +application/x-tcl tcl +application/x-tex tex +application/x-tex-gf gf +application/x-tex-pk pk +application/x-tex-tfm tfm +application/x-texinfo texi texinfo +application/x-trash % bak old sik ~ +application/x-troff roff t tr +application/x-troff-man man +application/x-troff-me me +application/x-troff-ms ms +application/x-ustar ustar +application/x-wais-source src +application/x-wingz wz +application/x-x509-ca-cert crt der +application/x-xcf xcf +application/x-xfig fig +application/x-xpinstall xpi +application/x400-bp +application/xcap-att+xml +application/xcap-caps+xml +application/xcap-el+xml +application/xcap-error+xml +application/xcap-ns+xml +application/xcon-conference-info+xml +application/xcon-conference-info-diff+xml +application/xenc+xml xenc +application/xhtml+xml xht xhtml +application/xhtml-voice+xml +application/xml xml xsl +application/xml-dtd dtd +application/xml-external-parsed-entity +application/xmpp+xml +application/xop+xml xop +application/xslt+xml xslt +application/xspf+xml xspf +application/xv+xml mxml xhvml xvm xvml +application/zip zip +audio/32kadpcm +audio/3gpp +audio/3gpp2 +audio/ac3 +audio/adpcm adp +audio/amr +audio/amr-wb +audio/amr-wb+ +audio/asc +audio/basic au snd +audio/bv16 +audio/bv32 +audio/clearmode +audio/cn +audio/dat12 +audio/dls +audio/dsr-es201108 +audio/dsr-es202050 +audio/dsr-es202211 +audio/dsr-es202212 +audio/dvi4 +audio/eac3 +audio/evrc +audio/evrc-qcp +audio/evrc0 +audio/evrc1 +audio/evrcb +audio/evrcb0 +audio/evrcb1 +audio/evrcwb +audio/evrcwb0 +audio/evrcwb1 +audio/example +audio/g719 +audio/g722 +audio/g7221 +audio/g723 +audio/g726-16 +audio/g726-24 +audio/g726-32 +audio/g726-40 +audio/g728 +audio/g729 +audio/g7291 +audio/g729d +audio/g729e +audio/gsm +audio/gsm-efr +audio/ilbc +audio/l16 +audio/l20 +audio/l24 +audio/l8 +audio/lpc +audio/midi kar mid midi rmi +audio/mobile-xmf +audio/mp4 mp4a +audio/mp4a-latm +audio/mpa +audio/mpa-robust +audio/mpeg m2a m3a m4a mp2 mp2a mp3 mpega mpga +audio/mpeg4-generic +audio/mpegurl m3u +audio/ogg oga ogg spx +audio/parityfec +audio/pcma +audio/pcma-wb +audio/pcmu +audio/pcmu-wb +audio/prs.sid sid +audio/qcelp +audio/red +audio/rtp-enc-aescm128 +audio/rtp-midi +audio/rtx +audio/smv +audio/smv-qcp +audio/smv0 +audio/sp-midi +audio/t140c +audio/t38 +audio/telephone-event +audio/tone +audio/ulpfec +audio/vdvi +audio/vmr-wb +audio/vnd.3gpp.iufp +audio/vnd.4sb +audio/vnd.audiokoz +audio/vnd.celp +audio/vnd.cisco.nse +audio/vnd.cmles.radio-events +audio/vnd.cns.anp1 +audio/vnd.cns.inf1 +audio/vnd.digital-winds eol +audio/vnd.dlna.adts +audio/vnd.dolby.heaac.1 +audio/vnd.dolby.heaac.2 +audio/vnd.dolby.mlp +audio/vnd.dolby.mps +audio/vnd.dolby.pl2 +audio/vnd.dolby.pl2x +audio/vnd.dolby.pl2z +audio/vnd.dts dts +audio/vnd.dts.hd dtshd +audio/vnd.everad.plj +audio/vnd.hns.audio +audio/vnd.lucent.voice lvp +audio/vnd.ms-playready.media.pya pya +audio/vnd.nokia.mobile-xmf +audio/vnd.nortel.vbk +audio/vnd.nuera.ecelp4800 ecelp4800 +audio/vnd.nuera.ecelp7470 ecelp7470 +audio/vnd.nuera.ecelp9600 ecelp9600 +audio/vnd.octel.sbc +audio/vnd.qcelp +audio/vnd.rhetorex.32kadpcm +audio/vnd.sealedmedia.softseal.mpeg +audio/vnd.vmx.cvsd +audio/vorbis +audio/vorbis-config +audio/x-aac aac +audio/x-aiff aif aifc aiff +audio/x-gsm gsm +audio/x-mpegurl m3u +audio/x-ms-wax wax +audio/x-ms-wma wma +audio/x-pn-realaudio ra ram rm +audio/x-pn-realaudio-plugin rmp +audio/x-realaudio ra +audio/x-scpls pls +audio/x-sd2 sd2 +audio/x-wav wav +chemical/x-alchemy alc +chemical/x-cache cac cache +chemical/x-cache-csf csf +chemical/x-cactvs-binary cascii cbin ctab +chemical/x-cdx cdx +chemical/x-cerius cer +chemical/x-chem3d c3d +chemical/x-chemdraw chm +chemical/x-cif cif +chemical/x-cmdf cmdf +chemical/x-cml cml +chemical/x-compass cpa +chemical/x-crossfire bsd +chemical/x-csml csm csml +chemical/x-ctx ctx +chemical/x-cxf cef cxf +chemical/x-embl-dl-nucleotide emb embl +chemical/x-galactic-spc spc +chemical/x-gamess-input gam gamin inp +chemical/x-gaussian-checkpoint fch fchk +chemical/x-gaussian-cube cub +chemical/x-gaussian-input gau gjc gjf +chemical/x-gaussian-log gal +chemical/x-gcg8-sequence gcg +chemical/x-genbank gen +chemical/x-hin hin +chemical/x-isostar ist istr +chemical/x-jcamp-dx dx jdx +chemical/x-kinemage kin +chemical/x-macmolecule mcm +chemical/x-macromodel-input mmd mmod +chemical/x-mdl-molfile mol +chemical/x-mdl-rdfile rd +chemical/x-mdl-rxnfile rxn +chemical/x-mdl-sdfile sd sdf +chemical/x-mdl-tgf tgf +chemical/x-mmcif mcif +chemical/x-mol2 mol2 +chemical/x-molconn-Z b +chemical/x-mopac-graph gpt +chemical/x-mopac-input dat mop mopcrt mpc zmt +chemical/x-mopac-out moo +chemical/x-mopac-vib mvb +chemical/x-ncbi-asn1 asn +chemical/x-ncbi-asn1-ascii ent prt +chemical/x-ncbi-asn1-binary aso val +chemical/x-ncbi-asn1-spec asn +chemical/x-pdb ent pdb +chemical/x-rosdal ros +chemical/x-swissprot sw +chemical/x-vamas-iso14976 vms +chemical/x-vmd vmd +chemical/x-xtel xtel +chemical/x-xyz xyz +image/bmp bmp +image/cgm cgm +image/example +image/fits +image/g3fax g3 +image/gif gif +image/ief ief +image/jp2 +image/jpeg jpe jpeg jpg +image/jpm +image/jpx +image/naplps +image/pcx pcx +image/png png +image/prs.btif btif +image/prs.pti +image/svg+xml svg svgz +image/t38 +image/tiff tif tiff +image/tiff-fx +image/vnd.adobe.photoshop psd +image/vnd.cns.inf2 +image/vnd.djvu djv djvu +image/vnd.dwg dwg +image/vnd.dxf dxf +image/vnd.fastbidsheet fbs +image/vnd.fpx fpx +image/vnd.fst fst +image/vnd.fujixerox.edmics-mmr mmr +image/vnd.fujixerox.edmics-rlc rlc +image/vnd.globalgraphics.pgb +image/vnd.microsoft.icon +image/vnd.mix +image/vnd.ms-modi mdi +image/vnd.net-fpx npx +image/vnd.radiance +image/vnd.sealed.png +image/vnd.sealedmedia.softseal.gif +image/vnd.sealedmedia.softseal.jpg +image/vnd.svf +image/vnd.wap.wbmp wbmp +image/vnd.xiff xif +image/x-cmu-raster ras +image/x-cmx cmx +image/x-coreldraw cdr +image/x-coreldrawpattern pat +image/x-coreldrawtemplate cdt +image/x-corelphotopaint cpt +image/x-freehand fh fh4 fh5 fh7 fhc +image/x-icon ico +image/x-jg art +image/x-jng jng +image/x-ms-bmp bmp +image/x-pcx pcx +image/x-photoshop psd +image/x-pict pct pic +image/x-portable-anymap pnm +image/x-portable-bitmap pbm +image/x-portable-graymap pgm +image/x-portable-pixmap ppm +image/x-rgb rgb +image/x-xbitmap xbm +image/x-xpixmap xpm +image/x-xwindowdump xwd +message/cpim +message/delivery-status +message/disposition-notification +message/example +message/external-body +message/global +message/global-delivery-status +message/global-disposition-notification +message/global-headers +message/http +message/imdn+xml +message/news +message/partial +message/rfc822 eml mime +message/s-http +message/sip +message/sipfrag +message/tracking-status +message/vnd.si.simp +model/example +model/iges iges igs +model/mesh mesh msh silo +model/vnd.dwf dwf +model/vnd.flatland.3dml +model/vnd.gdl gdl +model/vnd.gs-gdl +model/vnd.gs.gdl +model/vnd.gtw gtw +model/vnd.moml+xml +model/vnd.mts mts +model/vnd.parasolid.transmit.binary +model/vnd.parasolid.transmit.text +model/vnd.vtu vtu +model/vrml vrml wrl +multipart/alternative +multipart/appledouble +multipart/byteranges +multipart/digest +multipart/encrypted +multipart/example +multipart/form-data +multipart/header-set +multipart/mixed +multipart/parallel +multipart/related +multipart/report +multipart/signed +multipart/voice-message +text/calendar ics icz ifb +text/comma-separated-values csv +text/css css +text/csv csv +text/directory +text/dns +text/ecmascript +text/enriched +text/example +text/h323 323 +text/html htm html shtml +text/iuls uls +text/javascript +text/mathml mml +text/parityfec +text/plain asc conf def diff in list log pot text txt +text/prs.fallenstein.rst +text/prs.lines.tag dsc +text/red +text/rfc822-headers +text/richtext rtx +text/rtf rtf +text/rtp-enc-aescm128 +text/rtx +text/scriptlet sct wsc +text/sgml sgm sgml +text/t140 +text/tab-separated-values tsv +text/texmacs tm ts +text/troff man me ms roff t tr +text/ulpfec +text/uri-list uri uris urls +text/vnd.abc +text/vnd.curl curl +text/vnd.curl.dcurl dcurl +text/vnd.curl.mcurl mcurl +text/vnd.curl.scurl scurl +text/vnd.dmclientscript +text/vnd.esmertec.theme-descriptor +text/vnd.fly fly +text/vnd.fmi.flexstor flx +text/vnd.graphviz gv +text/vnd.in3d.3dml 3dml +text/vnd.in3d.spot spot +text/vnd.iptc.newsml +text/vnd.iptc.nitf +text/vnd.latex-z +text/vnd.motorola.reflex +text/vnd.ms-mediapackage +text/vnd.net2phone.commcenter.command +text/vnd.si.uricatalogue +text/vnd.sun.j2me.app-descriptor jad +text/vnd.trolltech.linguist +text/vnd.wap.si +text/vnd.wap.sl +text/vnd.wap.wml wml +text/vnd.wap.wmlscript wmls +text/x-asm asm s +text/x-bibtex bib +text/x-c c cc cpp cxx dic h hh +text/x-c++hdr h++ hh hpp hxx +text/x-c++src c++ cc cpp cxx +text/x-chdr h +text/x-csh csh +text/x-csrc c +text/x-fortran f f77 f90 for +text/x-haskell hs +text/x-java java +text/x-java-source java +text/x-literate-haskell lhs +text/x-moc moc +text/x-pascal p pas +text/x-pcs-gcd gcd +text/x-perl pl pm +text/x-psp psp +text/x-python py +text/x-setext etx +text/x-sh sh +text/x-tcl tcl tk +text/x-tex cls ltx sty tex +text/x-uuencode uu +text/x-vcalendar vcs +text/x-vcard vcf +text/xml +text/xml-external-parsed-entity +video/3gpp 3gp +video/3gpp-tt +video/3gpp2 3g2 +video/bmpeg +video/bt656 +video/celb +video/dl dl +video/dv dif dv +video/example +video/fli fli +video/gl gl +video/h261 h261 +video/h263 h263 +video/h263-1998 +video/h263-2000 +video/h264 h264 +video/jpeg jpgv +video/jpeg2000 +video/jpm jpgm jpm +video/mj2 mj2 mjp2 +video/mp1s +video/mp2p +video/mp2t +video/mp4 mp4 mp4v mpg4 +video/mp4v-es +video/mpeg m1v m2v mpe mpeg mpg +video/mpeg4-generic +video/mpv +video/nv +video/ogg ogv +video/parityfec +video/pointer +video/quicktime mov qt +video/raw +video/rtp-enc-aescm128 +video/rtx +video/smpte292m +video/ulpfec +video/vc1 +video/vnd.cctv +video/vnd.dlna.mpeg-tts +video/vnd.fvt fvt +video/vnd.hns.video +video/vnd.iptvforum.1dparityfec-1010 +video/vnd.iptvforum.1dparityfec-2005 +video/vnd.iptvforum.2dparityfec-1010 +video/vnd.iptvforum.2dparityfec-2005 +video/vnd.iptvforum.ttsavc +video/vnd.iptvforum.ttsmpeg2 +video/vnd.motorola.video +video/vnd.motorola.videop +video/vnd.mpegurl m4u mxu +video/vnd.ms-playready.media.pyv pyv +video/vnd.nokia.interleaved-multimedia +video/vnd.nokia.videovoip +video/vnd.objectvideo +video/vnd.sealed.mpeg1 +video/vnd.sealed.mpeg4 +video/vnd.sealed.swf +video/vnd.sealedmedia.softseal.mov +video/vnd.vivo viv +video/x-f4v f4v +video/x-fli fli +video/x-flv flv +video/x-la-asf lsf lsx +video/x-m4v m4v +video/x-mng mng +video/x-ms-asf asf asx +video/x-ms-wm wm +video/x-ms-wmv wmv +video/x-ms-wmx wmx +video/x-ms-wvx wvx +video/x-msvideo avi +video/x-sgi-movie movie +x-conference/x-cooltalk ice +x-world/x-vrml vrm vrml wrl + + + +## calibre specific mime types + +text/fb2+xml fb2 +text/x-sony-bbeb+xml lrs +application/x-sony-bbeb lrf lrx +application/adobe-page-template+xml xpgt +application/x-font-opentype otf +application/x-font-truetype ttf +application/x-mobipocket-ebook mobi prc azw +application/x-cbz cbz +application/x-cbr cbr +application/x-cb7 cb7 +application/x-koboreader-ebook kobo +image/wmf wmf diff --git a/src/calibre/__init__.py b/src/calibre/__init__.py index 688d7793a4..096a02854f 100644 --- a/src/calibre/__init__.py +++ b/src/calibre/__init__.py @@ -3,7 +3,7 @@ __license__ = 'GPL v3' __copyright__ = '2008, Kovid Goyal <kovid@kovidgoyal.net>' __docformat__ = 'restructuredtext en' -import uuid, sys, os, re, logging, time, mimetypes, \ +import uuid, sys, os, re, logging, time, \ __builtin__, warnings, multiprocessing from urllib import getproxies __builtin__.__dict__['dynamic_property'] = lambda(func): func(None) @@ -19,43 +19,16 @@ from calibre.constants import iswindows, isosx, islinux, isfreebsd, isfrozen, \ __appname__, __version__, __author__, \ win32event, win32api, winerror, fcntl, \ filesystem_encoding, plugins, config_dir -from calibre.startup import winutil, winutilerror +from calibre.startup import winutil, winutilerror, guess_type uuid.uuid4() # Imported before PyQt4 to workaround PyQt4 util-linux conflict on gentoo if False: + # Prevent pyflakes from complaining winutil, winutilerror, __appname__, islinux, __version__ fcntl, win32event, isfrozen, __author__, terminal_controller - winerror, win32api, isfreebsd + winerror, win32api, isfreebsd, guess_type -mimetypes.add_type('application/epub+zip', '.epub') -mimetypes.add_type('text/x-sony-bbeb+xml', '.lrs') -mimetypes.add_type('application/xhtml+xml', '.xhtml') -mimetypes.add_type('image/svg+xml', '.svg') -mimetypes.add_type('text/fb2+xml', '.fb2') -mimetypes.add_type('application/x-sony-bbeb', '.lrf') -mimetypes.add_type('application/x-sony-bbeb', '.lrx') -mimetypes.add_type('application/x-dtbncx+xml', '.ncx') -mimetypes.add_type('application/adobe-page-template+xml', '.xpgt') -mimetypes.add_type('application/x-font-opentype', '.otf') -mimetypes.add_type('application/x-font-truetype', '.ttf') -mimetypes.add_type('application/oebps-package+xml', '.opf') -mimetypes.add_type('application/vnd.palm', '.pdb') -mimetypes.add_type('application/x-mobipocket-ebook', '.mobi') -mimetypes.add_type('application/x-mobipocket-ebook', '.prc') -mimetypes.add_type('application/x-mobipocket-ebook', '.azw') -mimetypes.add_type('application/x-cbz', '.cbz') -mimetypes.add_type('application/x-cbr', '.cbr') -mimetypes.add_type('application/x-koboreader-ebook', '.kobo') -mimetypes.add_type('image/wmf', '.wmf') -mimetypes.add_type('image/jpeg', '.jpg') -mimetypes.add_type('image/jpeg', '.jpeg') -mimetypes.add_type('image/png', '.png') -mimetypes.add_type('image/gif', '.gif') -mimetypes.add_type('image/bmp', '.bmp') -mimetypes.add_type('image/svg+xml', '.svg') - -guess_type = mimetypes.guess_type import cssutils cssutils.log.setLevel(logging.WARN) diff --git a/src/calibre/startup.py b/src/calibre/startup.py index e74660d0bc..9c9c7651b7 100644 --- a/src/calibre/startup.py +++ b/src/calibre/startup.py @@ -199,6 +199,11 @@ if not _run_once: __builtin__.__dict__['lopen'] = local_open + + import mimetypes + mimetypes.init([P('mime.types')]) + guess_type = mimetypes.guess_type + def test_lopen(): from calibre.ptempfile import TemporaryDirectory from calibre import CurrentDir From 788138cd97cf4cc44f33748e377311e183e581b5 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Tue, 30 Nov 2010 14:40:31 -0700 Subject: [PATCH 240/377] ... --- setup/installer/linux/freeze2.py | 2 ++ src/calibre/__init__.py | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/setup/installer/linux/freeze2.py b/setup/installer/linux/freeze2.py index 0379c0d839..684b33b80d 100644 --- a/setup/installer/linux/freeze2.py +++ b/setup/installer/linux/freeze2.py @@ -340,6 +340,8 @@ class LinuxFreeze(Command): __builtin__.help = _Helper() def set_qt_plugin_path(): + import uuid + uuid.uuid4() # Workaround for libuuid/PyQt conflict from PyQt4.Qt import QCoreApplication paths = list(map(unicode, QCoreApplication.libraryPaths())) paths.insert(0, sys.frozen_path + '/lib/qt_plugins') diff --git a/src/calibre/__init__.py b/src/calibre/__init__.py index 096a02854f..a8cbe87e3e 100644 --- a/src/calibre/__init__.py +++ b/src/calibre/__init__.py @@ -21,7 +21,9 @@ from calibre.constants import iswindows, isosx, islinux, isfreebsd, isfrozen, \ filesystem_encoding, plugins, config_dir from calibre.startup import winutil, winutilerror, guess_type -uuid.uuid4() # Imported before PyQt4 to workaround PyQt4 util-linux conflict on gentoo +if islinux and not getattr(sys, 'frozen', False): + # Imported before PyQt4 to workaround PyQt4 util-linux conflict on gentoo + uuid.uuid4() if False: # Prevent pyflakes from complaining From 065edc6a1f8680f2c7bc5f2c851cd4a1a1fbfff4 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Tue, 30 Nov 2010 15:38:40 -0700 Subject: [PATCH 241/377] Fix #7751 (Does not detect after 2.2 upgrade on Android) --- src/calibre/devices/android/driver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/devices/android/driver.py b/src/calibre/devices/android/driver.py index 2d944c8519..811acbe55b 100644 --- a/src/calibre/devices/android/driver.py +++ b/src/calibre/devices/android/driver.py @@ -19,7 +19,7 @@ class ANDROID(USBMS): VENDOR_ID = { # HTC - 0x0bb4 : { 0x0c02 : [0x100, 0x0227], 0x0c01 : [0x100, 0x0227], 0x0ff9 + 0x0bb4 : { 0x0c02 : [0x100, 0x0227, 0x0226], 0x0c01 : [0x100, 0x0227], 0x0ff9 : [0x0100, 0x0227, 0x0226], 0x0c87: [0x0100, 0x0227, 0x0226], 0xc92 : [0x100]}, From a4649e5e31cd5da2421b6d6184da53adbd7c8d23 Mon Sep 17 00:00:00 2001 From: GRiker <griker@hotmail.com> Date: Tue, 30 Nov 2010 15:42:40 -0700 Subject: [PATCH 242/377] GwR fixes for read tag code --- src/calibre/gui2/catalog/catalog_epub_mobi.py | 1 - src/calibre/library/catalog.py | 10 +--------- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/src/calibre/gui2/catalog/catalog_epub_mobi.py b/src/calibre/gui2/catalog/catalog_epub_mobi.py index 7ac6010896..4a330900b1 100644 --- a/src/calibre/gui2/catalog/catalog_epub_mobi.py +++ b/src/calibre/gui2/catalog/catalog_epub_mobi.py @@ -82,7 +82,6 @@ class PluginWidget(QWidget,Ui_Form): elif opt[0] in ['read_source_field_cb']: # Look for last-stored combo box value index = self.read_source_field_cb.findText(opt_value) - print "last index: %d" % index if index == -1: index = self.read_source_field_cb.findText('Tag') self.read_source_field_cb.setCurrentIndex(index) diff --git a/src/calibre/library/catalog.py b/src/calibre/library/catalog.py index b7dbd3c35f..631e635937 100644 --- a/src/calibre/library/catalog.py +++ b/src/calibre/library/catalog.py @@ -2676,14 +2676,7 @@ class EPUB_MOBI(CatalogPlugin): pBookTag = Tag(soup, "p") ptc = 0 - # THIS SHOULDN'T BE NECESSARY - # book with read/reading/unread symbol -# for tag in book['tags']: -# if tag == self.opts.read_tag: -# book['read'] = True -# break -# else: -# book['read'] = False + book['read'] = self.discoverReadStatus(book) # book with read|reading|unread symbol or wishlist item if self.opts.wishlist_tag in book.get('tags', []): @@ -4552,7 +4545,6 @@ class EPUB_MOBI(CatalogPlugin): markerTags = [] markerTags.extend(self.opts.exclude_tags.split(',')) markerTags.extend(self.opts.note_tag.split(',')) - markerTags.extend(self.opts.read_tag.split(',')) return markerTags def letter_or_symbol(self,char): From acac5a479b925bc8b981b42e395b8fa9279517b0 Mon Sep 17 00:00:00 2001 From: John Schember <john@nachtimwald.com> Date: Tue, 30 Nov 2010 18:27:09 -0500 Subject: [PATCH 243/377] Implement bug #7738: FB2 Output option to create section per HTML file. Implement FB2 options to wrap h1-3 tags with title elments. --- src/calibre/ebooks/fb2/fb2ml.py | 14 +++++++++++- src/calibre/ebooks/fb2/output.py | 14 ++++++++++++ src/calibre/gui2/convert/fb2_output.py | 4 +++- src/calibre/gui2/convert/fb2_output.ui | 30 +++++++++++++++++++++++++- 4 files changed, 59 insertions(+), 3 deletions(-) diff --git a/src/calibre/ebooks/fb2/fb2ml.py b/src/calibre/ebooks/fb2/fb2ml.py index 3987ffa1b8..2a9a92612e 100644 --- a/src/calibre/ebooks/fb2/fb2ml.py +++ b/src/calibre/ebooks/fb2/fb2ml.py @@ -91,6 +91,10 @@ class FB2MLizer(object): return u'<?xml version="1.0" encoding="UTF-8"?>\n%s' % etree.tostring(etree.fromstring(output), encoding=unicode, pretty_print=True) def clean_text(self, text): + text = re.sub(r'(?miu)<section>\s*</section>', '', text) + text = re.sub(r'(?miu)\s+</section>', '</section>', text) + text = re.sub(r'(?miu)</section><section>', '</section>\n\n<section>', text) + text = re.sub(r'(?miu)<p>\s*</p>', '', text) text = re.sub(r'(?miu)\s+</p>', '</p>', text) text = re.sub(r'(?miu)</p><p>', '</p>\n\n<p>', text) @@ -166,11 +170,15 @@ class FB2MLizer(object): def get_text(self): text = [] - for item in self.oeb_book.spine: + for i, item in enumerate(self.oeb_book.spine): + if self.opts.sectionize_chapters_using_file_structure and i is not 0: + text.append('<section>') self.log.debug('Converting %s to FictionBook2 XML' % item.href) stylizer = Stylizer(item.data, item.href, self.oeb_book, self.opts, self.opts.output_profile) text.append(self.add_page_anchor(item)) text += self.dump_text(item.data.find(XHTML('body')), stylizer, item) + if self.opts.sectionize_chapters_using_file_structure and i is not len(self.oeb_book.spine) - 1: + text.append('</section>') return ''.join(text) def fb2_body_footer(self): @@ -258,6 +266,10 @@ class FB2MLizer(object): if id_name: fb2_text.append(self.get_anchor(page, id_name)) + if tag == 'h1' and self.opts.h1_to_title or tag == 'h2' and self.opts.h2_to_title or tag == 'h3' and self.opts.h3_to_title: + fb2_text.append('<title>') + tags.append('title') + fb2_tag = TAG_MAP.get(tag, None) if fb2_tag == 'p': if 'p' in tag_stack+tags: diff --git a/src/calibre/ebooks/fb2/output.py b/src/calibre/ebooks/fb2/output.py index d6c7a25a90..bacaf0da91 100644 --- a/src/calibre/ebooks/fb2/output.py +++ b/src/calibre/ebooks/fb2/output.py @@ -25,6 +25,20 @@ class FB2Output(OutputFormatPlugin): 'WARNING: ' \ 'This option is experimental. It can cause conversion ' \ 'to fail. It can also produce unexpected output.')), + OptionRecommendation(name='sectionize_chapters_using_file_structure', + recommended_value=False, level=OptionRecommendation.LOW, + help=_('Try to turn chapters into individual sections using the ' \ + 'internal structure of the ebook. This works well for EPUB ' \ + 'books that have been internally split by chapter.')), + OptionRecommendation(name='h1_to_title', + recommended_value=False, level=OptionRecommendation.LOW, + help=_('Wrap all h1 tags with fb2 title elements.')), + OptionRecommendation(name='h2_to_title', + recommended_value=False, level=OptionRecommendation.LOW, + help=_('Wrap all h2 tags with fb2 title elements.')), + OptionRecommendation(name='h3_to_title', + recommended_value=False, level=OptionRecommendation.LOW, + help=_('Wrap all h3 tags with fb2 title elements.')), ]) def convert(self, oeb_book, output_path, input_plugin, opts, log): diff --git a/src/calibre/gui2/convert/fb2_output.py b/src/calibre/gui2/convert/fb2_output.py index a3cbe0e647..5d927146a5 100644 --- a/src/calibre/gui2/convert/fb2_output.py +++ b/src/calibre/gui2/convert/fb2_output.py @@ -17,6 +17,8 @@ class PluginWidget(Widget, Ui_Form): ICON = I('mimetypes/fb2.png') def __init__(self, parent, get_option, get_help, db=None, book_id=None): - Widget.__init__(self, parent, ['inline_toc', 'sectionize_chapters']) + Widget.__init__(self, parent, ['inline_toc', 'sectionize_chapters', + 'sectionize_chapters_using_file_structure', 'h1_to_title', + 'h2_to_title', 'h3_to_title']) self.db, self.book_id = db, book_id self.initialize_options(get_option, get_help, db, book_id) diff --git a/src/calibre/gui2/convert/fb2_output.ui b/src/calibre/gui2/convert/fb2_output.ui index a43a8b72ea..a90ecd615e 100644 --- a/src/calibre/gui2/convert/fb2_output.ui +++ b/src/calibre/gui2/convert/fb2_output.ui @@ -14,7 +14,7 @@ <string>Form</string> </property> <layout class="QGridLayout" name="gridLayout"> - <item row="2" column="0"> + <item row="6" column="0"> <spacer name="verticalSpacer"> <property name="orientation"> <enum>Qt::Vertical</enum> @@ -41,6 +41,34 @@ </property> </widget> </item> + <item row="2" column="0"> + <widget class="QCheckBox" name="opt_sectionize_chapters_using_file_structure"> + <property name="text"> + <string>Sectionize Chapters using file structure</string> + </property> + </widget> + </item> + <item row="3" column="0"> + <widget class="QCheckBox" name="opt_h1_to_title"> + <property name="text"> + <string>Wrap h1 tags with <title> elements</string> + </property> + </widget> + </item> + <item row="4" column="0"> + <widget class="QCheckBox" name="opt_h2_to_title"> + <property name="text"> + <string>Wrap h2 tags with <title> elements</string> + </property> + </widget> + </item> + <item row="5" column="0"> + <widget class="QCheckBox" name="opt_h3_to_title"> + <property name="text"> + <string>Wrap h3 tags with <title> elements</string> + </property> + </widget> + </item> </layout> </widget> <resources/> From 37cde21c6d96b9b385f85d543227b0b3806db879 Mon Sep 17 00:00:00 2001 From: John Schember <john@nachtimwald.com> Date: Tue, 30 Nov 2010 18:48:21 -0500 Subject: [PATCH 244/377] Fix bug #7745: PML output should ignore external links as it is not support by the spec. Fix part of bug #7742: PML output extra % sign. --- src/calibre/ebooks/pml/pmlml.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/calibre/ebooks/pml/pmlml.py b/src/calibre/ebooks/pml/pmlml.py index 560a132ce1..f97f74f4a0 100644 --- a/src/calibre/ebooks/pml/pmlml.py +++ b/src/calibre/ebooks/pml/pmlml.py @@ -216,7 +216,7 @@ class PMLMLizer(object): w = '\\w' width = elem.get('width') if width: - w += '="%s%%"' % width + w += '="%s"' % width else: w += '="50%"' text.append(w) @@ -252,8 +252,8 @@ class PMLMLizer(object): if href not in self.link_hrefs.keys(): self.link_hrefs[href] = 'calibre_link-%s' % len(self.link_hrefs.keys()) href = '#%s' % self.link_hrefs[href] - text.append('\\q="%s"' % href) - tags.append('q') + text.append('\\q="%s"' % href) + tags.append('q') # Anchor ids id_name = elem.get('id') From c38eb08018ca9eb404247de0ccc84bf73196ed20 Mon Sep 17 00:00:00 2001 From: John Schember <john@nachtimwald.com> Date: Tue, 30 Nov 2010 19:04:26 -0500 Subject: [PATCH 245/377] PML Output: ensure \w always ends with a %. --- src/calibre/ebooks/pml/pmlml.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/calibre/ebooks/pml/pmlml.py b/src/calibre/ebooks/pml/pmlml.py index f97f74f4a0..ceb7f36124 100644 --- a/src/calibre/ebooks/pml/pmlml.py +++ b/src/calibre/ebooks/pml/pmlml.py @@ -216,6 +216,8 @@ class PMLMLizer(object): w = '\\w' width = elem.get('width') if width: + if not width.endswith('%'): + width += '%' w += '="%s"' % width else: w += '="50%"' From fa0799597d686a4e870bf0a6d76a9addb8114756 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Tue, 30 Nov 2010 18:35:14 -0700 Subject: [PATCH 246/377] Fix #7746 (Converting prc->epub: names of streets and lakes) --- src/calibre/ebooks/mobi/reader.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/calibre/ebooks/mobi/reader.py b/src/calibre/ebooks/mobi/reader.py index f80d15359c..48ece79f45 100644 --- a/src/calibre/ebooks/mobi/reader.py +++ b/src/calibre/ebooks/mobi/reader.py @@ -504,6 +504,9 @@ class MobiReader(object): 'x-large': '5', 'xx-large': '6', } + def barename(x): + return x.rpartition(':')[-1] + mobi_version = self.book_header.mobi_version for x in root.xpath('//ncx'): x.getparent().remove(x) @@ -512,8 +515,9 @@ class MobiReader(object): for x in tag.attrib: if ':' in x: del tag.attrib[x] - if tag.tag in ('country-region', 'place', 'placetype', 'placename', - 'state', 'city', 'street', 'address', 'content', 'form'): + if tag.tag and barename(tag.tag.lower()) in \ + ('country-region', 'place', 'placetype', 'placename', + 'state', 'city', 'street', 'address', 'content', 'form'): tag.tag = 'div' if tag.tag in ('content', 'form') else 'span' for key in tag.attrib.keys(): tag.attrib.pop(key) From 983da070950ca74aab2d9f05cda3b4143cd66322 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Tue, 30 Nov 2010 18:37:34 -0700 Subject: [PATCH 247/377] Fix #7753 (setPlaceholderText not found) --- src/calibre/gui2/search_box.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py index 4d598a3bbb..94c9bbe33d 100644 --- a/src/calibre/gui2/search_box.py +++ b/src/calibre/gui2/search_box.py @@ -236,7 +236,11 @@ class SavedSearchBox(QComboBox): def initialize(self, _search_box, colorize=False, help_text=_('Search')): self.search_box = _search_box - self.line_edit.setPlaceholderText(help_text) + try: + self.line_edit.setPlaceholderText(help_text) + except: + # Using Qt < 4.7 + pass self.colorize = colorize self.clear() From ba831d21e38f0d0bad7ff0f791126d95ec2c417a Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Tue, 30 Nov 2010 19:03:01 -0700 Subject: [PATCH 248/377] Search box: Remove select all on focus event as focus events are fired when completion fails/succeeds. Instead select all only when search box is focussed via the keyboard shortcut --- src/calibre/gui2/search_box.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py index 94c9bbe33d..dabd88ff9f 100644 --- a/src/calibre/gui2/search_box.py +++ b/src/calibre/gui2/search_box.py @@ -28,10 +28,6 @@ class SearchLineEdit(QLineEdit): QLineEdit.mouseReleaseEvent(self, event) QLineEdit.selectAll(self) - def focusInEvent(self, event): - QLineEdit.focusInEvent(self, event) - QLineEdit.selectAll(self) - def dropEvent(self, ev): self.parent().normalize_state() return QLineEdit.dropEvent(self, ev) @@ -334,14 +330,17 @@ class SearchBoxMixin(object): shortcuts = QKeySequence.keyBindings(QKeySequence.Find) shortcuts = list(shortcuts) + [QKeySequence('/'), QKeySequence('Alt+S')] self.action_focus_search.setShortcuts(shortcuts) - self.action_focus_search.triggered.connect(lambda x: - self.search.setFocus(Qt.OtherFocusReason)) + self.action_focus_search.triggered.connect(self.focus_search_box) self.addAction(self.action_focus_search) self.search.setStatusTip(re.sub(r'<\w+>', ' ', unicode(self.search.toolTip()))) self.advanced_search_button.setStatusTip(self.advanced_search_button.toolTip()) self.clear_button.setStatusTip(self.clear_button.toolTip()) + def focus_search_box(self, *args): + self.search.setFocus(Qt.OtherFocusReason) + self.search.lineEdit().selectAll() + def search_box_cleared(self): self.tags_view.clear() self.saved_search.clear() From 4ab34dff95f00ce8d76af0873975e8648a4fc3bf Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Tue, 30 Nov 2010 19:12:24 -0700 Subject: [PATCH 249/377] Fix #7749 (Book details panel does not always display correct selected book) --- src/calibre/gui2/book_details.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/book_details.py b/src/calibre/gui2/book_details.py index 4ffc8da650..b101d4c44f 100644 --- a/src/calibre/gui2/book_details.py +++ b/src/calibre/gui2/book_details.py @@ -208,8 +208,9 @@ class BookInfo(QWebView): rows = u'\n'.join([u'<tr><td valign="top"><b>%s:</b></td><td valign="top">%s</td></tr>'%(k,t) for k, t in rows]) comments = data.get(_('Comments'), '') - if comments and comments != u'None': - self.renderer.queue.put((rows, comments)) + if not comments or comments == u'None': + comments = '' + self.renderer.queue.put((rows, comments)) self._show_data(rows, '') From c63425f0b030811981b89ce1185b84588ec5176e Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Tue, 30 Nov 2010 19:43:16 -0700 Subject: [PATCH 250/377] Fix #7686 (Updated recipes for Newswek Polska and Polityka, new recipes for Esensja, Histmag and Wprost) --- resources/recipes/esenja.recipe | 87 ++++++++++++++++++++++ resources/recipes/histmag.recipe | 59 +++++++++++++++ resources/recipes/newsweek_polska.recipe | 53 ++++++++++---- resources/recipes/polityka.recipe | 7 +- resources/recipes/wprost.recipe | 91 ++++++++++++++++++++++++ 5 files changed, 278 insertions(+), 19 deletions(-) create mode 100644 resources/recipes/esenja.recipe create mode 100644 resources/recipes/histmag.recipe create mode 100644 resources/recipes/wprost.recipe diff --git a/resources/recipes/esenja.recipe b/resources/recipes/esenja.recipe new file mode 100644 index 0000000000..b8b94ad66e --- /dev/null +++ b/resources/recipes/esenja.recipe @@ -0,0 +1,87 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' +__copyright__ = '2010, matek09, matek09@gmail.com' + +from calibre.web.feeds.news import BasicNewsRecipe +import re + +class Esensja(BasicNewsRecipe): + + title = u'Esensja' + __author__ = 'matek09' + description = 'Monthly magazine' + encoding = 'utf-8' + no_stylesheets = True + language = 'pl' + remove_javascript = True + HREF = '0' + + #keep_only_tags =[] + #keep_only_tags.append(dict(name = 'div', attrs = {'class' : 'article'}) + remove_tags_before = dict(dict(name = 'div', attrs = {'class' : 't-title'})) + remove_tags_after = dict(dict(name = 'img', attrs = {'src' : '../../../2000/01/img/tab_bot.gif'})) + + remove_tags =[] + remove_tags.append(dict(name = 'img', attrs = {'src' : '../../../2000/01/img/tab_top.gif'})) + remove_tags.append(dict(name = 'img', attrs = {'src' : '../../../2000/01/img/tab_bot.gif'})) + remove_tags.append(dict(name = 'div', attrs = {'class' : 't-title2 nextpage'})) + + extra_css = ''' + .t-title {font-size: x-large; font-weight: bold; text-align: left} + .t-author {font-size: x-small; text-align: left} + .t-title2 {font-size: x-small; font-style: italic; text-align: left} + .text {font-size: small; text-align: left} + .annot-ref {font-style: italic; text-align: left} + ''' + + preprocess_regexps = [(re.compile(r'alt="[^"]*"'), + lambda match: '')] + + def parse_index(self): + soup = self.index_to_soup('http://www.esensja.pl/magazyn/') + a = soup.find('a', attrs={'href' : re.compile('.*/index.html')}) + year = a['href'].split('/')[0] + month = a['href'].split('/')[1] + self.HREF = 'http://www.esensja.pl/magazyn/' + year + '/' + month + '/iso/' + soup = self.index_to_soup(self.HREF + '01.html') + self.cover_url = 'http://www.esensja.pl/magazyn/' + year + '/' + month + '/img/ilustr/cover_b.jpg' + feeds = [] + intro = soup.find('div', attrs={'class' : 'n-title'}) + introduction = {'title' : self.tag_to_string(intro.a), + 'url' : self.HREF + intro.a['href'], + 'date' : '', + 'description' : ''} + chapter = 'Wprowadzenie' + subchapter = '' + articles = [] + articles.append(introduction) + for tag in intro.findAllNext(attrs={'class': ['chapter', 'subchapter', 'n-title']}): + if tag.name in 'td': + if len(articles) > 0: + section = chapter + if len(subchapter) > 0: + section += ' - ' + subchapter + feeds.append((section, articles)) + articles = [] + if tag['class'] == 'chapter': + chapter = self.tag_to_string(tag).capitalize() + subchapter = '' + else: + subchapter = self.tag_to_string(tag) + subchapter = self.tag_to_string(tag) + continue + articles.append({'title' : self.tag_to_string(tag.a), 'url' : self.HREF + tag.a['href'], 'date' : '', 'description' : ''}) + + a = self.index_to_soup(self.HREF + tag.a['href']) + i = 1 + while True: + div = a.find('div', attrs={'class' : 't-title2 nextpage'}) + if div is not None: + a = self.index_to_soup(self.HREF + div.a['href']) + articles.append({'title' : self.tag_to_string(tag.a) + ' c. d. ' + str(i), 'url' : self.HREF + div.a['href'], 'date' : '', 'description' : ''}) + i = i + 1 + else: + break + + return feeds diff --git a/resources/recipes/histmag.recipe b/resources/recipes/histmag.recipe new file mode 100644 index 0000000000..38956e7995 --- /dev/null +++ b/resources/recipes/histmag.recipe @@ -0,0 +1,59 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' +__copyright__ = '2010, matek09, matek09@gmail.com' + +from calibre.web.feeds.news import BasicNewsRecipe +import re + +class Histmag(BasicNewsRecipe): + + title = u'Histmag' + __author__ = 'matek09' + description = u"Artykuly historyczne i publicystyczne" + encoding = 'utf-8' + no_stylesheets = True + language = 'pl' + remove_javascript = True + #max_articles_per_feed = 1 + remove_tags_before = dict(dict(name = 'div', attrs = {'id' : 'article'})) + remove_tags_after = dict(dict(name = 'h2', attrs = {'class' : 'komentarze'})) + #keep_only_tags =[] + #keep_only_tags.append(dict(name = 'h2')) + #keep_only_tags.append(dict(name = 'p')) + + remove_tags =[] + remove_tags.append(dict(name = 'p', attrs = {'class' : 'podpis'})) + remove_tags.append(dict(name = 'h2', attrs = {'class' : 'komentarze'})) + remove_tags.append(dict(name = 'img', attrs = {'src' : 'style/buttons/wesprzyjnas-1.jpg'})) + + preprocess_regexps = [(re.compile(r'</span>'), lambda match: '</span><br><br>'), + (re.compile(r'<span>'), lambda match: '<br><br><span>')] + extra_css = ''' + .left {font-size: x-small} + .right {font-size: x-small} + ''' + + def find_articles(self, soup): + articles = [] + for div in soup.findAll('div', attrs={'class' : 'text'}): + articles.append({ + 'title' : self.tag_to_string(div.h3.a), + 'url' : 'http://www.histmag.org/' + div.h3.a['href'], + 'date' : self.tag_to_string(div.next('p')).split('|')[0], + 'description' : self.tag_to_string(div.next('p', podpis=False)), + }) + return articles + + def parse_index(self): + soup = self.index_to_soup('http://histmag.org/?arc=4&dx=0') + feeds = [] + feeds.append((u"Artykuly historyczne", self.find_articles(soup))) + soup = self.index_to_soup('http://histmag.org/?arc=5&dx=0') + feeds.append((u"Artykuly publicystyczne", self.find_articles(soup))) + soup = self.index_to_soup('http://histmag.org/?arc=1&dx=0') + feeds.append((u"Wydarzenia", self.find_articles(soup))) + + return feeds + + diff --git a/resources/recipes/newsweek_polska.recipe b/resources/recipes/newsweek_polska.recipe index 31dd8ccddd..4227a88026 100644 --- a/resources/recipes/newsweek_polska.recipe +++ b/resources/recipes/newsweek_polska.recipe @@ -1,19 +1,22 @@ #!/usr/bin/env python __license__ = 'GPL v3' -__copyright__ = '2010, Mateusz Kielar, matek09@gmail.com' +__copyright__ = '2010, matek09, matek09@gmail.com' from calibre.web.feeds.news import BasicNewsRecipe class Newsweek(BasicNewsRecipe): - EDITION = 0 + FIND_LAST_FULL_ISSUE = True + EDITION = '0' + EXCLUDE_LOCKED = True + LOCKED_ICO = 'http://www.newsweek.pl/bins/media/static/newsweek/img/ico_locked.gif' title = u'Newsweek Polska' - __author__ = 'Mateusz Kielar' + __author__ = 'matek09' description = 'Weekly magazine' encoding = 'utf-8' no_stylesheets = True - language = 'en' + language = 'pl' remove_javascript = True keep_only_tags =[] @@ -33,34 +36,54 @@ class Newsweek(BasicNewsRecipe): def print_version(self, url): return url.replace("http://www.newsweek.pl/artykuly/wydanie/" + str(self.EDITION), "http://www.newsweek.pl/artykuly") + '/print' + def is_locked(self, a): + if a.findNext('img')['src'] == 'http://www.newsweek.pl/bins/media/static/newsweek/img/ico_locked.gif': + return True + else: + return False + + def is_full(self, issue_soup): + if len(issue_soup.findAll('img', attrs={'src' : 'http://www.newsweek.pl/bins/media/static/newsweek/img/ico_locked.gif'})) > 1: + return False + else: + return True + def find_last_full_issue(self): - page = self.index_to_soup('http://www.newsweek.pl/Frames/IssueCover.aspx') - issue = 'http://www.newsweek.pl/Frames/' + page.find(lambda tag: tag.name == 'span' and not tag.attrs).a['href'] - page = self.index_to_soup(issue) - issue = 'http://www.newsweek.pl/Frames/' + page.find(lambda tag: tag.name == 'span' and not tag.attrs).a['href'] - page = self.index_to_soup(issue) - self.EDITION = page.find('a', attrs={'target' : '_parent'})['href'].replace('/wydania/','') + frame_url = 'http://www.newsweek.pl/Frames/IssueCover.aspx' + while True: + frame_soup = self.index_to_soup(frame_url) + self.EDITION = frame_soup.find('a', attrs={'target' : '_parent'})['href'].replace('/wydania/','') + issue_soup = self.index_to_soup('http://www.newsweek.pl/wydania/' + self.EDITION) + if self.is_full(issue_soup): + break + frame_url = 'http://www.newsweek.pl/Frames/' + frame_soup.find(lambda tag: tag.name == 'span' and not tag.attrs).a['href'] + + def parse_index(self): - self.find_last_full_issue() - soup = self.index_to_soup('http://www.newsweek.pl/wydania/' + str(self.EDITION)) + if self.FIND_LAST_FULL_ISSUE: + self.find_last_full_issue() + soup = self.index_to_soup('http://www.newsweek.pl/wydania/' + self.EDITION) img = soup.find('img', id="ctl00_C1_PaperIsssueView_IssueImage", src=True) self.cover_url = img['src'] feeds = [] parent = soup.find(id='content-left-big') for txt in parent.findAll(attrs={'class':'txt_normal_red strong'}): - section = self.tag_to_string(txt).capitalize() articles = list(self.find_articles(txt)) - feeds.append((section, articles)) + if len(articles) > 0: + section = self.tag_to_string(txt).capitalize() + feeds.append((section, articles)) return feeds def find_articles(self, txt): for a in txt.findAllNext( attrs={'class':['strong','hr']}): if a.name in "div": break + if (not self.FIND_LAST_FULL_ISSUE) & self.EXCLUDE_LOCKED & self.is_locked(a): + continue yield { 'title' : self.tag_to_string(a), - 'url' : 'http://www.newsweek.pl'+a['href'], + 'url' : 'http://www.newsweek.pl' + a['href'], 'date' : '', 'description' : '' } diff --git a/resources/recipes/polityka.recipe b/resources/recipes/polityka.recipe index ab31e148aa..16ccae6085 100644 --- a/resources/recipes/polityka.recipe +++ b/resources/recipes/polityka.recipe @@ -1,18 +1,18 @@ #!/usr/bin/env python __license__ = 'GPL v3' -__copyright__ = '2010, Mateusz Kielar, matek09@gmail.com' +__copyright__ = '2010, matek09, matek09@gmail.com' from calibre.web.feeds.news import BasicNewsRecipe class Polityka(BasicNewsRecipe): title = u'Polityka' - __author__ = 'Mateusz Kielar' + __author__ = 'matek09' description = 'Weekly magazine. Last archive issue' encoding = 'utf-8' no_stylesheets = True - language = 'en' + language = 'pl' remove_javascript = True remove_tags_before = dict(dict(name = 'h2', attrs = {'class' : 'box_nag'})) @@ -48,7 +48,6 @@ class Polityka(BasicNewsRecipe): for div in box.findAll('div', attrs={'class': 'list_tresc'}): article_page = self.index_to_soup('http://archiwum.polityka.pl' + div.a['href'],) section = self.tag_to_string(article_page.find('h2', attrs = {'class' : 'box_nag'})).split('/')[0].lstrip().rstrip() - print section if not articles.has_key(section): articles[section] = [] articles[section].append( { diff --git a/resources/recipes/wprost.recipe b/resources/recipes/wprost.recipe new file mode 100644 index 0000000000..b317571981 --- /dev/null +++ b/resources/recipes/wprost.recipe @@ -0,0 +1,91 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' +__copyright__ = '2010, matek09, matek09@gmail.com' + +from calibre.web.feeds.news import BasicNewsRecipe +import re + +class Wprost(BasicNewsRecipe): + EDITION = 0 + FIND_LAST_FULL_ISSUE = True + EXCLUDE_LOCKED = True + ICO_BLOCKED = 'http://www.wprost.pl/G/icons/ico_blocked.gif' + + title = u'Wprost' + __author__ = 'matek09' + description = 'Weekly magazine' + encoding = 'ISO-8859-2' + no_stylesheets = True + language = 'pl' + remove_javascript = True + + remove_tags_before = dict(dict(name = 'div', attrs = {'id' : 'print-layer'})) + remove_tags_after = dict(dict(name = 'div', attrs = {'id' : 'print-layer'})) + + '''keep_only_tags =[] + keep_only_tags.append(dict(name = 'table', attrs = {'id' : 'title-table'})) + keep_only_tags.append(dict(name = 'div', attrs = {'class' : 'div-header'})) + keep_only_tags.append(dict(name = 'div', attrs = {'class' : 'div-content'})) + keep_only_tags.append(dict(name = 'div', attrs = {'class' : 'def element-autor'}))''' + + preprocess_regexps = [(re.compile(r'style="display: none;"'), lambda match: ''), + (re.compile(r'display: block;'), lambda match: '')] + + + remove_tags =[] + remove_tags.append(dict(name = 'div', attrs = {'class' : 'def element-date'})) + remove_tags.append(dict(name = 'div', attrs = {'class' : 'def silver'})) + remove_tags.append(dict(name = 'div', attrs = {'id' : 'content-main-column-right'})) + + + extra_css = ''' + .div-header {font-size: x-small; font-weight: bold} + ''' +#h2 {font-size: x-large; font-weight: bold} + def is_blocked(self, a): + if a.findNextSibling('img') is None: + return False + else: + return True + + + + def find_last_issue(self): + soup = self.index_to_soup('http://www.wprost.pl/archiwum/') + a = 0 + if self.FIND_LAST_FULL_ISSUE: + ico_blocked = soup.findAll('img', attrs={'src' : self.ICO_BLOCKED}) + a = ico_blocked[-1].findNext('a', attrs={'title' : re.compile('Zobacz spis tre.ci')}) + else: + a = soup.find('a', attrs={'title' : re.compile('Zobacz spis tre.ci')}) + self.EDITION = a['href'].replace('/tygodnik/?I=', '') + self.cover_url = a.img['src'] + + + + def parse_index(self): + self.find_last_issue() + soup = self.index_to_soup('http://www.wprost.pl/tygodnik/?I=' + self.EDITION) + feeds = [] + for main_block in soup.findAll(attrs={'class':'main-block-s3 s3-head head-red3'}): + articles = list(self.find_articles(main_block)) + if len(articles) > 0: + section = self.tag_to_string(main_block) + feeds.append((section, articles)) + return feeds + + def find_articles(self, main_block): + for a in main_block.findAllNext( attrs={'style':['','padding-top: 15px;']}): + if a.name in "td": + break + if self.EXCLUDE_LOCKED & self.is_blocked(a): + continue + yield { + 'title' : self.tag_to_string(a), + 'url' : 'http://www.wprost.pl' + a['href'], + 'date' : '', + 'description' : '' + } + + From aef657b0993aaad9647c13a6970963938e8c8268 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Tue, 30 Nov 2010 19:53:21 -0700 Subject: [PATCH 251/377] Fix #7723 (View Specific Format Does Not Allow More Than One Selection) --- src/calibre/gui2/actions/view.py | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/src/calibre/gui2/actions/view.py b/src/calibre/gui2/actions/view.py index 5f4f7ce428..0a26653771 100644 --- a/src/calibre/gui2/actions/view.py +++ b/src/calibre/gui2/actions/view.py @@ -12,7 +12,7 @@ from PyQt4.Qt import Qt, QMenu from calibre.constants import isosx from calibre.gui2 import error_dialog, Dispatcher, question_dialog, config, \ - open_local_file + open_local_file, info_dialog from calibre.gui2.dialogs.choose_format import ChooseFormatDialog from calibre.utils.config import prefs from calibre.ptempfile import PersistentTemporaryFile @@ -89,18 +89,34 @@ class ViewAction(InterfaceAction): self._launch_viewer(name, viewer, internal) def view_specific_format(self, triggered): - rows = self.gui.library_view.selectionModel().selectedRows() + rows = list(self.gui.library_view.selectionModel().selectedRows()) if not rows or len(rows) == 0: d = error_dialog(self.gui, _('Cannot view'), _('No book selected')) d.exec_() return - row = rows[0].row() - formats = self.gui.library_view.model().db.formats(row).upper().split(',') - d = ChooseFormatDialog(self.gui, _('Choose the format to view'), formats) + db = self.gui.library_view.model().db + rows = [r.row() for r in rows] + formats = [db.formats(row) for row in rows] + formats = [list(f.upper().split(',')) if f else None for f in formats] + all_fmts = set([]) + for x in formats: + for f in x: all_fmts.add(f) + d = ChooseFormatDialog(self.gui, _('Choose the format to view'), + list(sorted(all_fmts))) if d.exec_() == d.Accepted: - format = d.format() - self.view_format(row, format) + fmt = d.format() + orig_num = len(rows) + rows = [rows[i] for i in range(len(rows)) if formats[i] and fmt in + formats[i]] + if self._view_check(len(rows)): + for row in rows: + self.view_format(row, fmt) + if len(rows) < orig_num: + info_dialog(self.gui, _('Format unavailable'), + _('Not all the selected books were available in' + ' the %s format. You should convert' + ' them first.')%fmt, show=True) def _view_check(self, num, max_=3): if num <= max_: From 50b082fa8f9ed5ef14530dc57b0a3a412c5944b4 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Tue, 30 Nov 2010 19:55:24 -0700 Subject: [PATCH 252/377] Fix #7704 (Updated recipe for NIN) --- resources/recipes/nin.recipe | 79 +++++++++++++++++++++++++++++++----- 1 file changed, 69 insertions(+), 10 deletions(-) diff --git a/resources/recipes/nin.recipe b/resources/recipes/nin.recipe index 70fd998a09..27942f7d43 100644 --- a/resources/recipes/nin.recipe +++ b/resources/recipes/nin.recipe @@ -8,12 +8,15 @@ www.nin.co.rs import re from calibre import strftime from calibre.web.feeds.news import BasicNewsRecipe +from contextlib import nested, closing +from calibre.ebooks.BeautifulSoup import BeautifulSoup, NavigableString, CData, Tag +from calibre import entity_to_unicode class Nin(BasicNewsRecipe): title = 'NIN online' __author__ = 'Darko Miletic' description = 'Nedeljne Informativne Novine' - publisher = 'NIN d.o.o.' + publisher = 'NIN d.o.o. - Ringier d.o.o.' category = 'news, politics, Serbia' no_stylesheets = True delay = 1 @@ -26,18 +29,29 @@ class Nin(BasicNewsRecipe): use_embedded_content = False language = 'sr' publication_type = 'magazine' - extra_css = ' @font-face {font-family: "sans1";src:url(res:///opt/sony/ebook/FONT/tt0003m_.ttf)} body{font-family: Verdana, Lucida, sans1, sans-serif} .article_description{font-family: Verdana, Lucida, sans1, sans-serif} .artTitle{font-size: x-large; font-weight: bold; color: #900} .izjava{font-size: x-large; font-weight: bold} .columnhead{font-size: small; font-weight: bold;} img{margin-top:0.5em; margin-bottom: 0.7em} b{margin-top: 1em} ' + extra_css = """ + @font-face {font-family: "sans1";src:url(res:///opt/sony/ebook/FONT/tt0003m_.ttf)} + body{font-family: Verdana, Lucida, sans1, sans-serif} + .article_description{font-family: Verdana, Lucida, sans1, sans-serif} + .artTitle{font-size: x-large; font-weight: bold; color: #900} + .izjava{font-size: x-large; font-weight: bold} + .columnhead{font-size: small; font-weight: bold;} + img{margin-top:0.5em; margin-bottom: 0.7em; display: block} + b{margin-top: 1em} + """ conversion_options = { - 'comment' : description - , 'tags' : category - , 'publisher' : publisher - , 'language' : language - , 'linearize_tables' : True + 'comment' : description + , 'tags' : category + , 'publisher' : publisher + , 'language' : language } - preprocess_regexps = [(re.compile(u'\u0110'), lambda match: u'\u00D0')] - remove_attributes = ['height','width'] + preprocess_regexps = [ + (re.compile(r'</body>.*?<html>', re.DOTALL|re.IGNORECASE),lambda match: '</body>') + ,(re.compile(r'</html>.*?</html>', re.DOTALL|re.IGNORECASE),lambda match: '</html>') + ,(re.compile(u'\u0110'), lambda match: u'\u00D0') + ] def get_browser(self): br = BasicNewsRecipe.get_browser() @@ -50,7 +64,10 @@ class Nin(BasicNewsRecipe): return br keep_only_tags =[dict(name='td', attrs={'width':'520'})] + remove_tags_before =dict(name='span', attrs={'class':'izjava'}) remove_tags_after =dict(name='html') + remove_tags = [dict(name=['object','link','iframe','meta','base'])] + remove_attributes=['border','background','height','width','align','valign'] def get_cover_url(self): cover_url = None @@ -63,7 +80,7 @@ class Nin(BasicNewsRecipe): def parse_index(self): articles = [] count = 0 - soup = self.index_to_soup(self.PREFIX) + soup = self.index_to_soup(self.INDEX) for item in soup.findAll('a',attrs={'class':'lmeninavFont'}): count = count +1 if self.test and count > 2: @@ -90,3 +107,45 @@ class Nin(BasicNewsRecipe): articles.append((section,inarts)) return articles + def index_to_soup(self, url_or_raw, raw=False): + if re.match(r'\w+://', url_or_raw): + open_func = getattr(self.browser, 'open_novisit', self.browser.open) + with closing(open_func(url_or_raw)) as f: + _raw = f.read() + if not _raw: + raise RuntimeError('Could not fetch index from %s'%url_or_raw) + else: + _raw = url_or_raw + if raw: + return _raw + if not isinstance(_raw, unicode) and self.encoding: + if callable(self.encoding): + _raw = self.encoding(_raw) + else: + _raw = _raw.decode(self.encoding, 'replace') + massage = list(BeautifulSoup.MARKUP_MASSAGE) + enc = 'cp1252' if callable(self.encoding) or self.encoding is None else self.encoding + massage.append((re.compile(r'&(\S+?);'), lambda match: + entity_to_unicode(match, encoding=enc))) + massage.append((re.compile(r'[\x00-\x08]+'), lambda match: + '')) + return BeautifulSoup(_raw, markupMassage=massage) + + def preprocess_html(self, soup): + for item in soup.findAll(style=True): + del item['style'] + for item in soup.findAll('div'): + if len(item.contents) == 0: + item.extract() + for item in soup.findAll(['td','tr']): + item.name='div' + for item in soup.findAll('img'): + if not item.has_key('alt'): + item['alt'] = 'image' + for tbl in soup.findAll('table'): + img = tbl.find('img') + if img: + img.extract() + tbl.replaceWith(img) + return soup + \ No newline at end of file From ab63633295b892cc18b58cc2427c85351b1d4ca2 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Tue, 30 Nov 2010 20:29:54 -0700 Subject: [PATCH 253/377] ABC Australia by Dean Cording --- resources/recipes/abc_au.recipe | 54 +++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 resources/recipes/abc_au.recipe diff --git a/resources/recipes/abc_au.recipe b/resources/recipes/abc_au.recipe new file mode 100644 index 0000000000..1330f8e4b5 --- /dev/null +++ b/resources/recipes/abc_au.recipe @@ -0,0 +1,54 @@ +__license__ = 'GPL v3' +__copyright__ = '2010, Dean Cording' +''' +abc.net.au/news +''' +import re +from calibre.web.feeds.recipes import BasicNewsRecipe + +class ABCNews(BasicNewsRecipe): + title = 'ABC News' + __author__ = 'Dean Cording' + description = 'News from Australia' + masthead_url = 'http://www.abc.net.au/news/assets/v5/images/common/logo-news.png' + cover_url = 'http://www.abc.net.au/news/assets/v5/images/common/logo-news.png' + + oldest_article = 2 + max_articles_per_feed = 100 + no_stylesheets = False + #delay = 1 + use_embedded_content = False + encoding = 'utf8' + publisher = 'ABC News' + category = 'News, Australia, World' + language = 'en_AU' + publication_type = 'newsportal' + preprocess_regexps = [(re.compile(r'<!--.*?-->', re.DOTALL), lambda m: '')] + conversion_options = { + 'comments' : description + ,'tags' : category + ,'language' : language + ,'publisher' : publisher + ,'linearize_tables': False + } + + keep_only_tags = dict(id='article') + + remove_tags = [dict(attrs={'class':['related', 'tags']}), + dict(id='statepromo') + ] + + remove_attributes = ['width','height'] + + feeds = [ + ('Top Stories', 'http://www.abc.net.au/news/syndicate/topstoriesrss.xml'), + ('Canberra', 'http://www.abc.net.au/news/indexes/idx-act/rss.xml'), + ('Sydney', 'http://www.abc.net.au/news/indexes/sydney/rss.xml'), + ('Melbourne', 'http://www.abc.net.au/news/indexes/melbourne/rss.xml'), + ('Brisbane', 'http://www.abc.net.au/news/indexes/brisbane/rss.xml'), + ('Perth', 'http://www.abc.net.au/news/indexes/perth/rss.xml'), + ('Australia', 'http://www.abc.net.au/news/indexes/idx-australia/rss.xml'), + ('World', 'http://www.abc.net.au/news/indexes/world/rss.xml'), + ('Business', 'http://www.abc.net.au/news/indexes/business/rss.xml'), + ('Science and Technology', 'http://www.abc.net.au/news/tag/science-and-technology/rss.xml'), + ] From d5b9dd944a9041d416c54748b5d080b151c92a9b Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Tue, 30 Nov 2010 20:30:43 -0700 Subject: [PATCH 254/377] Business Spectator by Dean Cording --- resources/recipes/business_spectator.recipe | 48 +++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 resources/recipes/business_spectator.recipe diff --git a/resources/recipes/business_spectator.recipe b/resources/recipes/business_spectator.recipe new file mode 100644 index 0000000000..ef58424c6c --- /dev/null +++ b/resources/recipes/business_spectator.recipe @@ -0,0 +1,48 @@ +__license__ = 'GPL v3' +__copyright__ = '2010, Dean Cording' +''' +abc.net.au/news +''' +import re +from calibre.web.feeds.recipes import BasicNewsRecipe + +class BusinessSpectator(BasicNewsRecipe): + title = 'Business Spectator' + __author__ = 'Dean Cording' + description = 'Australian Business News & commentary delivered the way you want it.' + masthead_url = 'http://www.businessspectator.com.au/bs.nsf/logo-business-spectator.gif' + cover_url = masthead_url + + oldest_article = 2 + max_articles_per_feed = 100 + no_stylesheets = True + #delay = 1 + use_embedded_content = False + encoding = 'utf8' + publisher = 'Business Spectator' + category = 'News, Australia, Business' + language = 'en_AU' + publication_type = 'newsportal' + preprocess_regexps = [(re.compile(r'<!--.*?-->', re.DOTALL), lambda m: '')] + conversion_options = { + 'comments' : description + ,'tags' : category + ,'language' : language + ,'publisher' : publisher + ,'linearize_tables': False + } + + keep_only_tags = [dict(id='storyHeader'), dict(id='body-html')] + + remove_tags = [dict(attrs={'class':'hql'})] + + remove_attributes = ['width','height','style'] + + feeds = [ + ('Top Stories', 'http://www.businessspectator.com.au/top-stories.rss'), + ('Alan Kohler', 'http://www.businessspectator.com.au/bs.nsf/RSS?readform&type=spectators&cat=Alan%20Kohler'), + ('Robert Gottliebsen', 'http://www.businessspectator.com.au/bs.nsf/RSS?readform&type=spectators&cat=Robert%20Gottliebsen'), + ('Stephen Bartholomeusz', 'http://www.businessspectator.com.au/bs.nsf/RSS?readform&type=spectators&cat=Stephen%20Bartholomeusz'), + ('Daily Dossier', 'http://www.businessspectator.com.au/bs.nsf/RSS?readform&type=kgb&cat=dossier'), + ('Australia', 'http://www.businessspectator.com.au/bs.nsf/RSS?readform&type=region&cat=australia'), + ] From c14726e5bb98b9f40912c414a17a63ea209827a7 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Tue, 30 Nov 2010 20:38:32 -0700 Subject: [PATCH 255/377] Update Frankfurter Rundschau --- resources/recipes/fr_online.recipe | 106 ++++++++++++++--------------- 1 file changed, 50 insertions(+), 56 deletions(-) diff --git a/resources/recipes/fr_online.recipe b/resources/recipes/fr_online.recipe index e4a817d0d6..b3448c17dc 100644 --- a/resources/recipes/fr_online.recipe +++ b/resources/recipes/fr_online.recipe @@ -1,67 +1,61 @@ -__license__ = 'GPL v3' -__copyright__ = '2009, Justus Bisser <justus.bisser at gmail.com>' +#!/usr/bin/env python + +__license__ = 'GPL v3' +__copyright__ = '2010, Christian Schmitt' + ''' fr-online.de ''' -import re -from calibre.web.feeds.news import BasicNewsRecipe +from calibre.web.feeds.recipes import BasicNewsRecipe -class Spiegel_ger(BasicNewsRecipe): - title = 'Frankfurter Rundschau' - __author__ = 'Justus Bisser' - description = "Dies ist die Online-Ausgabe der Frankfurter Rundschau. Um die abgerufenen individuell einzustellen bearbeiten sie die Liste im erweiterten Modus. Die Feeds findet man auf http://www.fr-online.de/verlagsservice/fr_newsreader/?em_cnt=574255" - publisher = 'Druck- und Verlagshaus Frankfurt am Main GmbH' - category = 'FR Online, Frankfurter Rundschau, Nachrichten, News,Dienste, RSS, RSS, Feedreader, Newsfeed, iGoogle, Netvibes, Widget' - oldest_article = 7 - max_articles_per_feed = 100 - language = 'de' - lang = 'de-DE' - no_stylesheets = True - use_embedded_content = False - #encoding = 'cp1252' +class FROnlineRecipe(BasicNewsRecipe): + title = 'Frankfurter Rundschau' + __author__ = 'maccs' + description = 'Nachrichten aus D und aller Welt' + encoding = 'utf-8' + masthead_url = 'http://www.fr-online.de/image/view/-/1474018/data/823552/-/logo.png' + publisher = 'Druck- und Verlagshaus Frankfurt am Main GmbH' + category = 'news, germany, world' + language = 'de' + publication_type = 'newspaper' + use_embedded_content = False + remove_javascript = True + no_stylesheets = True + oldest_article = 1 # Increase this number if you're interested in older articles + max_articles_per_feed = 50 # Seems a reasonable number to me + extra_css = ''' + body { font-family: "arial", "verdana", "geneva", sans-serif; font-size: 12px; margin: 0px; background-color: #ffffff;} + .imgSubline{background-color: #f4f4f4; font-size: 0.8em;} + .p--heading-1 {font-weight: bold;} + .calibre_navbar {font-size: 0.8em; font-family: "arial", "verdana", "geneva", sans-serif;} + ''' + remove_tags = [dict(name='div', attrs={'id':'Logo'})] + cover_url = 'http://www.fr-online.de/image/view/-/1474018/data/823552/-/logo.png' + cover_margins = (100, 150, '#ffffff') - conversion_options = { - 'comment' : description - , 'tags' : category - , 'publisher' : publisher - , 'language' : lang - } - recursions = 0 - max_articles_per_feed = 100 - #keep_only_tags = [dict(name='div', attrs={'class':'text'})] - #tags_remove = [dict(name='div', attrs={'style':'text-align: left; margin: 4px 0px 0px 4px; width: 200px; float: right;'})] - remove_attributes = ['style'] - feeds = [] - #remove_tags_before = [dict(name='div', attrs={'style':'padding-left: 0px;'})] - #remove_tags_after = [dict(name='div', attrs={'class':'box_head_text'})] + feeds = [] + feeds.append(('Startseite', u'http://www.fr-online.de/home/-/1472778/1472778/-/view/asFeed/-/index.xml')) + feeds.append(('Politik', u'http://www.fr-online.de/politik/-/1472596/1472596/-/view/asFeed/-/index.xml')) + feeds.append(('Meinung', u'http://www.fr-online.de/politik/meinung/-/1472602/1472602/-/view/asFeed/-/index.xml')) + feeds.append(('Wirtschaft', u'http://www.fr-online.de/wirtschaft/-/1472780/1472780/-/view/asFeed/-/index.xml')) + feeds.append(('Sport', u'http://www.fr-online.de/sport/-/1472784/1472784/-/view/asFeed/-/index.xml')) + feeds.append(('Eintracht Frankfurt', u'http://www.fr-online.de/sport/eintracht-frankfurt/-/1473446/1473446/-/view/asFeed/-/index.xml')) + feeds.append(('Kultur und Medien', u'http://www.fr-online.de/kultur/-/1472786/1472786/-/view/asFeed/-/index.xml')) + feeds.append(('Panorama', u'http://www.fr-online.de/panorama/-/1472782/1472782/-/view/asFeed/-/index.xml')) + feeds.append(('Frankfurt', u'http://www.fr-online.de/frankfurt/-/1472798/1472798/-/view/asFeed/-/index.xml')) + feeds.append(('Rhein-Main', u'http://www.fr-online.de/rhein-main/-/1472796/1472796/-/view/asFeed/-/index.xml')) + feeds.append(('Hanau', u'http://www.fr-online.de/rhein-main/hanau/-/1472866/1472866/-/view/asFeed/-/index.xml')) + feeds.append(('Darmstadt', u'http://www.fr-online.de/rhein-main/darmstadt/-/1472858/1472858/-/view/asFeed/-/index.xml')) + feeds.append(('Wiesbaden', u'http://www.fr-online.de/rhein-main/wiesbaden/-/1472860/1472860/-/view/asFeed/-/index.xml')) + feeds.append(('Offenbach', u'http://www.fr-online.de/rhein-main/offenbach/-/1472856/1472856/-/view/asFeed/-/index.xml')) + feeds.append(('Bad Homburg', u'http://www.fr-online.de/rhein-main/bad-homburg/-/1472864/1472864/-/view/asFeed/-/index.xml')) + feeds.append(('Digital', u'http://www.fr-online.de/digital/-/1472406/1472406/-/view/asFeed/-/index.xml')) + feeds.append(('Wissenschaft', u'http://www.fr-online.de/wissenschaft/-/1472788/1472788/-/view/asFeed/-/index.xml')) - # enable for all news - allNews = 0 - if allNews: - feeds = [(u'Frankfurter Rundschau', u'http://www.fr-online.de/rss/sport/index.xml')] - else: - #select the feeds you like - feeds = [(u'Nachrichten', u'http://www.fr-online.de/rss/politik/index.xml')] - feeds.append((u'Kommentare und Analysen', u'http://www.fr-online.de/rss/meinung/index.xml')) - feeds.append((u'Dokumentationen', u'http://www.fr-online.de/rss/dokumentation/index.xml')) - feeds.append((u'Deutschlandtrend', u'http://www.fr-online.de/rss/deutschlandtrend/index.xml')) - feeds.append((u'Wirtschaft', u'http://www.fr-online.de/rss/wirtschaft/index.xml')) - feeds.append((u'Sport', u'http://www.fr-online.de/rss/sport/index.xml')) - feeds.append((u'Feuilleton', u'http://www.fr-online.de/rss/feuilleton/index.xml')) - feeds.append((u'Panorama', u'http://www.fr-online.de/rss/panorama/index.xml')) - feeds.append((u'Rhein Main und Hessen', u'http://www.fr-online.de/rss/hessen/index.xml')) - feeds.append((u'Fitness und Gesundheit', u'http://www.fr-online.de/rss/fit/index.xml')) - feeds.append((u'Multimedia', u'http://www.fr-online.de/rss/multimedia/index.xml')) - feeds.append((u'Wissen und Bildung', u'http://www.fr-online.de/rss/wissen/index.xml')) - def get_article_url(self, article): - url = article.link - regex = re.compile("0C[0-9]{6,8}0A?") + def print_version(self, url): + return url.replace('index.html', 'view/printVersion/-/index.html') - liste = regex.findall(url) - string = liste.pop(0) - string = string[2:len(string)-1] - return "http://www.fr-online.de/_em_cms/_globals/print.php?em_cnt=" + string From db760d3005bf5123f478c903aa314c5ec4db9fb5 Mon Sep 17 00:00:00 2001 From: Translators <> Date: Wed, 1 Dec 2010 04:56:17 +0000 Subject: [PATCH 256/377] Launchpad automatic translations update. --- src/calibre/translations/he.po | 8 ++++---- src/calibre/translations/zh_CN.po | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/calibre/translations/he.po b/src/calibre/translations/he.po index 2ceaca90cb..9e7e4296ad 100644 --- a/src/calibre/translations/he.po +++ b/src/calibre/translations/he.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2010-11-27 20:21+0000\n" -"PO-Revision-Date: 2010-11-30 00:56+0000\n" -"Last-Translator: Eran Cohen <Unknown>\n" +"PO-Revision-Date: 2010-11-30 11:45+0000\n" +"Last-Translator: Ddorda <Ddorda@ubuntu.com>\n" "Language-Team: Hebrew <he@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-30 04:45+0000\n" +"X-Launchpad-Export-Date: 2010-12-01 04:56+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -190,7 +190,7 @@ msgstr "פעולה בממשק משתמש" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:283 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:206 msgid "Preferences" -msgstr "הגדרות" +msgstr "העדפות" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:15 msgid "" diff --git a/src/calibre/translations/zh_CN.po b/src/calibre/translations/zh_CN.po index 7ae2090006..3100aa4ecf 100644 --- a/src/calibre/translations/zh_CN.po +++ b/src/calibre/translations/zh_CN.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-11-30 04:46+0000\n" +"X-Launchpad-Export-Date: 2010-12-01 04:56+0000\n" "X-Generator: Launchpad (build Unknown)\n" "X-Poedit-Country: CHINA\n" "X-Poedit-Language: Chinese\n" From 5d254ef842fac1eab35260f294a69c74aa85c1ff Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Wed, 1 Dec 2010 08:18:36 +0000 Subject: [PATCH 257/377] Restore the focus to the library view when the search button is clicked --- src/calibre/gui2/layout.py | 2 +- src/calibre/gui2/search_box.py | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/calibre/gui2/layout.py b/src/calibre/gui2/layout.py index fd42bfe671..aaaf1b0267 100644 --- a/src/calibre/gui2/layout.py +++ b/src/calibre/gui2/layout.py @@ -182,7 +182,7 @@ class SearchBar(QWidget): # {{{ l.addWidget(self.search_button) self.search_button.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum) - self.search_button.clicked.connect(parent.search.do_search) + self.search_button.clicked.connect(parent.do_search_button) self.search_button.setToolTip( _('Do Quick Search (you can also press the Enter key)')) diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py index 4d598a3bbb..fbb52e5781 100644 --- a/src/calibre/gui2/search_box.py +++ b/src/calibre/gui2/search_box.py @@ -352,6 +352,10 @@ class SearchBoxMixin(object): if d.exec_() == QDialog.Accepted: self.search.set_search_string(d.search_string()) + def do_search_button(self): + self.search.do_search() + self.focus_to_library() + def focus_to_library(self): self.current_view().setFocus(Qt.OtherFocusReason) From 6132fa1385b9d647ac03d1e9b8b23fdf8688c38e Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Wed, 1 Dec 2010 08:54:41 +0000 Subject: [PATCH 258/377] Make completion and search_as_you_type play together more nicely --- src/calibre/gui2/search_box.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py index fbb52e5781..2c40665187 100644 --- a/src/calibre/gui2/search_box.py +++ b/src/calibre/gui2/search_box.py @@ -9,7 +9,8 @@ __docformat__ = 'restructuredtext en' import re from PyQt4.Qt import QComboBox, Qt, QLineEdit, QStringList, pyqtSlot, QDialog, \ - pyqtSignal, QCompleter, QAction, QKeySequence, QTimer + pyqtSignal, QCompleter, QAction, QKeySequence, QTimer, \ + QString from calibre.gui2 import config from calibre.gui2.dialogs.confirm_delete import confirm @@ -70,8 +71,11 @@ class SearchBox2(QComboBox): self.normal_background = 'rgb(255, 255, 255, 0%)' self.line_edit = SearchLineEdit(self) self.setLineEdit(self.line_edit) + c = self.line_edit.completer() c.setCompletionMode(c.PopupCompletion) + c.highlighted[QString].connect(self.completer_used) + self.line_edit.key_pressed.connect(self.key_pressed, type=Qt.DirectConnection) self.activated.connect(self.history_selected) self.setEditable(True) @@ -130,6 +134,7 @@ class SearchBox2(QComboBox): col = self.normal_background self.line_edit.setStyleSheet('QLineEdit{color:black;background-color:%s;}' % col) + # Comes from the lineEdit control def key_pressed(self, event): k = event.key() if k in (Qt.Key_Left, Qt.Key_Right, Qt.Key_Up, Qt.Key_Down, @@ -146,6 +151,21 @@ class SearchBox2(QComboBox): elif self.as_you_type and unicode(event.text()): self.timer.start(1500) + # Comes from the combobox itself + def keyPressEvent(self, event): + k = event.key() + if k not in (Qt.Key_Up, Qt.Key_Down): + QComboBox.keyPressEvent(self, event) + else: + self.blockSignals(True) + self.normalize_state() + QComboBox.keyPressEvent(self, event) + self.blockSignals(False) + + def completer_used(self, text): + self.timer.stop() + self.normalize_state() + def timer_event(self): self.do_search() From 4bf7bc6b7b3a7b5ae6d0c675d57afeb64a643d70 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Wed, 1 Dec 2010 11:08:51 +0000 Subject: [PATCH 259/377] Remember current tab when using apply in bulk edit --- src/calibre/gui2/actions/edit_metadata.py | 5 ++++- src/calibre/gui2/dialogs/metadata_bulk.py | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/actions/edit_metadata.py b/src/calibre/gui2/actions/edit_metadata.py index 8b57b4b455..559ea4a6f7 100644 --- a/src/calibre/gui2/actions/edit_metadata.py +++ b/src/calibre/gui2/actions/edit_metadata.py @@ -164,12 +164,15 @@ class EditMetadataAction(InterfaceAction): self.gui.tags_view.blockSignals(True) changed = False try: + current_tab = 0 while True: - dialog = MetadataBulkDialog(self.gui, rows, self.gui.library_view.model()) + dialog = MetadataBulkDialog(self.gui, rows, + self.gui.library_view.model(), current_tab) if dialog.changed: changed = True if not dialog.do_again: break + current_tab = dialog.central_widget.currentIndex() finally: self.gui.tags_view.blockSignals(False) if changed: diff --git a/src/calibre/gui2/dialogs/metadata_bulk.py b/src/calibre/gui2/dialogs/metadata_bulk.py index 4fd34e4c4c..e30e0e16e1 100644 --- a/src/calibre/gui2/dialogs/metadata_bulk.py +++ b/src/calibre/gui2/dialogs/metadata_bulk.py @@ -197,7 +197,7 @@ class MetadataBulkDialog(QDialog, Ui_MetadataBulkDialog): _('Append to field'), ] - def __init__(self, window, rows, model): + def __init__(self, window, rows, model, tab): QDialog.__init__(self, window) Ui_MetadataBulkDialog.__init__(self) self.setupUi(self) @@ -238,6 +238,7 @@ class MetadataBulkDialog(QDialog, Ui_MetadataBulkDialog): 'Immediately make all changes without closing the dialog. ' 'This operation cannot be canceled or undone')) self.do_again = False + self.central_widget.setCurrentIndex(tab) self.exec_() def button_clicked(self, which): From 7e76be47b9bd34c2e4143c095dee7650dbb65c21 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Wed, 1 Dec 2010 14:57:32 +0000 Subject: [PATCH 260/377] fix focus problems when using tags browser and keyboard shortcuts to initiate searching --- src/calibre/gui2/search_box.py | 22 +++++++------------- src/calibre/gui2/search_restriction_mixin.py | 3 +++ 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py index ab5b1e06e9..16c697a8fd 100644 --- a/src/calibre/gui2/search_box.py +++ b/src/calibre/gui2/search_box.py @@ -203,14 +203,16 @@ class SearchBox2(QComboBox): self.set_search_string(joiner.join(tags)) def set_search_string(self, txt): + self.setFocus(Qt.OtherFocusReason) if not txt: self.clear() - return - self.normalize_state() - self.setEditText(txt) - self.search.emit(txt) - self.line_edit.end(False) - self.initial_state = False + else: + self.normalize_state() + self.setEditText(txt) + self.search.emit(txt) + self.line_edit.end(False) + self.initial_state = False + self.focus_to_library.emit() def search_as_you_type(self, enabled): self.as_you_type = enabled @@ -228,7 +230,6 @@ class SavedSearchBox(QComboBox): ''' changed = pyqtSignal() - focus_to_library = pyqtSignal() def __init__(self, parent=None): QComboBox.__init__(self, parent) @@ -273,7 +274,6 @@ class SavedSearchBox(QComboBox): def key_pressed(self, event): if event.key() in (Qt.Key_Return, Qt.Key_Enter): self.saved_search_selected(self.currentText()) - self.focus_to_library.emit() def saved_search_selected(self, qname): qname = unicode(qname) @@ -287,7 +287,6 @@ class SavedSearchBox(QComboBox): self.search_box.set_search_string(u'search:"%s"' % qname) self.setEditText(qname) self.setToolTip(saved_searches().lookup(qname)) - self.focus_to_library.emit() def initialize_saved_search_names(self): qnames = saved_searches().names() @@ -387,7 +386,6 @@ class SavedSearchBoxMixin(object): def __init__(self): self.saved_search.changed.connect(self.saved_searches_changed) self.clear_button.clicked.connect(self.saved_search.clear) - self.saved_search.focus_to_library.connect(self.focus_to_library) self.save_search_button.clicked.connect( self.saved_search.save_search_button_clicked) self.delete_search_button.clicked.connect( @@ -422,7 +420,3 @@ class SavedSearchBoxMixin(object): if d.result() == d.Accepted: self.saved_searches_changed() self.saved_search.clear() - - def focus_to_library(self): - self.current_view().setFocus(Qt.OtherFocusReason) - diff --git a/src/calibre/gui2/search_restriction_mixin.py b/src/calibre/gui2/search_restriction_mixin.py index 6373e452e5..74132ae610 100644 --- a/src/calibre/gui2/search_restriction_mixin.py +++ b/src/calibre/gui2/search_restriction_mixin.py @@ -4,6 +4,8 @@ Created on 10 Jun 2010 @author: charles ''' +from PyQt4.Qt import Qt + class SearchRestrictionMixin(object): def __init__(self): @@ -53,6 +55,7 @@ class SearchRestrictionMixin(object): self.saved_search.clear() self.tags_view.set_search_restriction(restriction) self.set_number_of_books_shown() + self.current_view().setFocus(Qt.OtherFocusReason) def set_number_of_books_shown(self): if self.current_view() == self.library_view and self.restriction_in_effect: From 450a39413727d101bfc4a3c625db1d337308b643 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Wed, 1 Dec 2010 08:59:08 -0700 Subject: [PATCH 261/377] Driver for PocketBook 902 --- src/calibre/devices/eb600/driver.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/calibre/devices/eb600/driver.py b/src/calibre/devices/eb600/driver.py index 4b3d4498c4..54d73d9c1d 100644 --- a/src/calibre/devices/eb600/driver.py +++ b/src/calibre/devices/eb600/driver.py @@ -229,7 +229,7 @@ class POCKETBOOK301(USBMS): class POCKETBOOK602(USBMS): - name = 'PocketBook Pro 602 Device Interface' + name = 'PocketBook Pro 602/902 Device Interface' description = _('Communicate with the PocketBook 602 reader.') author = 'Kovid Goyal' supported_platforms = ['windows', 'osx', 'linux'] @@ -244,5 +244,5 @@ class POCKETBOOK602(USBMS): BCD = [0x0324] VENDOR_NAME = '' - WINDOWS_MAIN_MEM = WINDOWS_CARD_A_MEM = 'PB602' + WINDOWS_MAIN_MEM = WINDOWS_CARD_A_MEM = ['PB602', 'PB902'] From c6410c1fcbff8dc1c573aad29687b4cc53c5501f Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Wed, 1 Dec 2010 09:04:07 -0700 Subject: [PATCH 262/377] Fix #7682 (Cybook Orizon not detected) --- src/calibre/devices/cybook/driver.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/calibre/devices/cybook/driver.py b/src/calibre/devices/cybook/driver.py index becb7912a9..c1a62fdbf3 100644 --- a/src/calibre/devices/cybook/driver.py +++ b/src/calibre/devices/cybook/driver.py @@ -65,8 +65,8 @@ class ORIZON(CYBOOK): BCD = [0x319] - WINDOWS_MAIN_MEM = re.compile(r'CYBOOK_ORIZON__-FD') - WINDOWS_CARD_A_MEM = re.compile('CYBOOK_ORIZON__-SD') + WINDOWS_MAIN_MEM = re.compile(r'(CYBOOK_ORIZON__-FD)|(FILE-STOR_GADGET)') + WINDOWS_CARD_A_MEM = re.compile('(CYBOOK_ORIZON__-SD)|(FILE-STOR_GADGET)') EBOOK_DIR_MAIN = EBOOK_DIR_CARD_A = 'Digital Editions' From b5901ead756753dcb9df75d9f3d6f46f09063d4d Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Wed, 1 Dec 2010 16:53:23 +0000 Subject: [PATCH 263/377] More search box changes --- src/calibre/devices/cybook/driver.py | 4 ++-- src/calibre/devices/eb600/driver.py | 4 ++-- src/calibre/gui2/search_box.py | 5 +---- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/calibre/devices/cybook/driver.py b/src/calibre/devices/cybook/driver.py index becb7912a9..c1a62fdbf3 100644 --- a/src/calibre/devices/cybook/driver.py +++ b/src/calibre/devices/cybook/driver.py @@ -65,8 +65,8 @@ class ORIZON(CYBOOK): BCD = [0x319] - WINDOWS_MAIN_MEM = re.compile(r'CYBOOK_ORIZON__-FD') - WINDOWS_CARD_A_MEM = re.compile('CYBOOK_ORIZON__-SD') + WINDOWS_MAIN_MEM = re.compile(r'(CYBOOK_ORIZON__-FD)|(FILE-STOR_GADGET)') + WINDOWS_CARD_A_MEM = re.compile('(CYBOOK_ORIZON__-SD)|(FILE-STOR_GADGET)') EBOOK_DIR_MAIN = EBOOK_DIR_CARD_A = 'Digital Editions' diff --git a/src/calibre/devices/eb600/driver.py b/src/calibre/devices/eb600/driver.py index 4b3d4498c4..54d73d9c1d 100644 --- a/src/calibre/devices/eb600/driver.py +++ b/src/calibre/devices/eb600/driver.py @@ -229,7 +229,7 @@ class POCKETBOOK301(USBMS): class POCKETBOOK602(USBMS): - name = 'PocketBook Pro 602 Device Interface' + name = 'PocketBook Pro 602/902 Device Interface' description = _('Communicate with the PocketBook 602 reader.') author = 'Kovid Goyal' supported_platforms = ['windows', 'osx', 'linux'] @@ -244,5 +244,5 @@ class POCKETBOOK602(USBMS): BCD = [0x0324] VENDOR_NAME = '' - WINDOWS_MAIN_MEM = WINDOWS_CARD_A_MEM = 'PB602' + WINDOWS_MAIN_MEM = WINDOWS_CARD_A_MEM = ['PB602', 'PB902'] diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py index 16c697a8fd..1832520cec 100644 --- a/src/calibre/gui2/search_box.py +++ b/src/calibre/gui2/search_box.py @@ -25,10 +25,6 @@ class SearchLineEdit(QLineEdit): self.key_pressed.emit(event) QLineEdit.keyPressEvent(self, event) - def mouseReleaseEvent(self, event): - QLineEdit.mouseReleaseEvent(self, event) - QLineEdit.selectAll(self) - def dropEvent(self, ev): self.parent().normalize_state() return QLineEdit.dropEvent(self, ev) @@ -71,6 +67,7 @@ class SearchBox2(QComboBox): c = self.line_edit.completer() c.setCompletionMode(c.PopupCompletion) c.highlighted[QString].connect(self.completer_used) + c.activated[QString].connect(self.history_selected) self.line_edit.key_pressed.connect(self.key_pressed, type=Qt.DirectConnection) self.activated.connect(self.history_selected) From e74606e35f382ecc7bf93c67c4e71786e7e7a12e Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Wed, 1 Dec 2010 17:10:49 +0000 Subject: [PATCH 264/377] Fix (I hope) strange selection behavior in viewer when searching --- src/calibre/gui2/viewer/main.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/calibre/gui2/viewer/main.py b/src/calibre/gui2/viewer/main.py index 70fa99b4b6..7c19567804 100644 --- a/src/calibre/gui2/viewer/main.py +++ b/src/calibre/gui2/viewer/main.py @@ -253,6 +253,7 @@ class EbookViewer(MainWindow, Ui_EbookViewer): self.connect(self.vertical_scrollbar, SIGNAL('valueChanged(int)'), lambda x: self.goto_page(x/100.)) self.search.search.connect(self.find) + self.search.focus_to_library.connect(lambda: self.view.setFocus(Qt.OtherFocusReason)) self.connect(self.toc, SIGNAL('clicked(QModelIndex)'), self.toc_clicked) self.connect(self.reference, SIGNAL('goto(PyQt_PyObject)'), self.goto) From 8cc1c798f5896d704c260eb82059f48840f108bf Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Wed, 1 Dec 2010 10:40:25 -0700 Subject: [PATCH 265/377] Fix #7758 (Add device: samsung fascinate android running aldiko and wordplayer) --- src/calibre/devices/android/driver.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/calibre/devices/android/driver.py b/src/calibre/devices/android/driver.py index 811acbe55b..0deef5eb92 100644 --- a/src/calibre/devices/android/driver.py +++ b/src/calibre/devices/android/driver.py @@ -38,7 +38,7 @@ class ANDROID(USBMS): 0x227]}, # Samsung - 0x04e8 : { 0x681d : [0x0222, 0x0224, 0x0400], + 0x04e8 : { 0x681d : [0x0222, 0x0223, 0x0224, 0x0400], 0x681c : [0x0222, 0x0224, 0x0400], 0x6640 : [0x0100], }, @@ -62,7 +62,8 @@ class ANDROID(USBMS): 'GT-I5700', 'SAMSUNG', 'DELL', 'LINUX'] WINDOWS_MAIN_MEM = ['ANDROID_PHONE', 'A855', 'A853', 'INC.NEXUS_ONE', '__UMS_COMPOSITE', '_MB200', 'MASS_STORAGE', '_-_CARD', 'SGH-I897', - 'GT-I9000', 'FILE-STOR_GADGET', 'SGH-T959', 'SAMSUNG_ANDROID'] + 'GT-I9000', 'FILE-STOR_GADGET', 'SGH-T959', 'SAMSUNG_ANDROID', + 'SCH-I500_CARD'] WINDOWS_CARD_A_MEM = ['ANDROID_PHONE', 'GT-I9000_CARD', 'SGH-I897', 'FILE-STOR_GADGET', 'SGH-T959', 'SAMSUNG_ANDROID'] From 039d4653b0def7f3bedf07fa3e59b858ce3efac4 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Wed, 1 Dec 2010 12:02:42 -0700 Subject: [PATCH 266/377] Fix #7616 (Add "similar books" searches to the search history) --- src/calibre/gui2/actions/similar_books.py | 3 +- src/calibre/gui2/search_box.py | 83 +++++++++++++---------- src/calibre/gui2/tag_view.py | 17 +++-- 3 files changed, 64 insertions(+), 39 deletions(-) diff --git a/src/calibre/gui2/actions/similar_books.py b/src/calibre/gui2/actions/similar_books.py index 644cd3160a..b1ee04a4d4 100644 --- a/src/calibre/gui2/actions/similar_books.py +++ b/src/calibre/gui2/actions/similar_books.py @@ -58,6 +58,7 @@ class SimilarBooksAction(InterfaceAction): for a in authors.split(',')] join = ' or ' if search: - self.gui.search.set_search_string(join.join(search)) + self.gui.search.set_search_string(join.join(search), + store_in_history=True) diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py index 1832520cec..0c8eb84a37 100644 --- a/src/calibre/gui2/search_box.py +++ b/src/calibre/gui2/search_box.py @@ -18,7 +18,7 @@ from calibre.gui2.dialogs.saved_search_editor import SavedSearchEditor from calibre.gui2.dialogs.search import SearchDialog from calibre.utils.search_query_parser import saved_searches -class SearchLineEdit(QLineEdit): +class SearchLineEdit(QLineEdit): # {{{ key_pressed = pyqtSignal(object) def keyPressEvent(self, event): @@ -37,17 +37,23 @@ class SearchLineEdit(QLineEdit): def paste(self, *args): self.parent().normalize_state() return QLineEdit.paste(self) +# }}} -class SearchBox2(QComboBox): +class SearchBox2(QComboBox): # {{{ ''' To use this class: * Call initialize() * Connect to the search() and cleared() signals from this widget. - * Connect to the cleared() signal to know when the box content changes - * Connect to focus_to_library signal to be told to manually change focus + * Connect to the changed() signal to know when the box content changes + * Connect to focus_to_library() signal to be told to manually change focus * Call search_done() after every search is complete + * Call set_search_string() to perform a search programmatically + * You can use the current_text property to get the current search text + Be aware that if you are using it in a slow connected to the + changed() signal, if the connection is not queued it will not be + accurate. ''' INTERVAL = 1500 #: Time to wait before emitting search signal @@ -166,49 +172,43 @@ class SearchBox2(QComboBox): self.changed.emit() self.do_search() - def do_search(self, *args): + def _do_search(self, store_in_history=True): text = unicode(self.currentText()).strip() if not text: return self.clear() self.search.emit(text) - idx = self.findText(text, Qt.MatchFixedString) - self.block_signals(True) - if idx < 0: - self.insertItem(0, text) - else: - t = self.itemText(idx) - self.removeItem(idx) - self.insertItem(0, t) + if store_in_history: + idx = self.findText(text, Qt.MatchFixedString) + self.block_signals(True) + if idx < 0: + self.insertItem(0, text) + else: + t = self.itemText(idx) + self.removeItem(idx) + self.insertItem(0, t) self.setCurrentIndex(0) - self.block_signals(False) - config[self.opt_name] = [unicode(self.itemText(i)) for i in - range(self.count())] + self.block_signals(False) + config[self.opt_name] = [unicode(self.itemText(i)) for i in + range(self.count())] + + def do_search(self, *args): + self._do_search() def block_signals(self, yes): self.blockSignals(yes) self.line_edit.blockSignals(yes) - def search_from_tokens(self, tokens, all): - ans = u' '.join([u'%s:%s'%x for x in tokens]) - if not all: - ans = '[' + ans + ']' - self.set_search_string(ans) - - def search_from_tags(self, tags, all): - joiner = ' and ' if all else ' or ' - self.set_search_string(joiner.join(tags)) - - def set_search_string(self, txt): + def set_search_string(self, txt, store_in_history=False): self.setFocus(Qt.OtherFocusReason) if not txt: self.clear() else: self.normalize_state() self.setEditText(txt) - self.search.emit(txt) self.line_edit.end(False) - self.initial_state = False + self.changed.emit() + self._do_search(store_in_history=store_in_history) self.focus_to_library.emit() def search_as_you_type(self, enabled): @@ -217,7 +217,13 @@ class SearchBox2(QComboBox): def in_a_search(self): return self._in_a_search -class SavedSearchBox(QComboBox): + @property + def current_text(self): + return unicode(self.lineEdit().text()) + + # }}} + +class SavedSearchBox(QComboBox): # {{{ ''' To use this class: @@ -329,13 +335,17 @@ class SavedSearchBox(QComboBox): return self.search_box.set_search_string(saved_searches().lookup(unicode(self.currentText()))) -class SearchBoxMixin(object): + # }}} + +class SearchBoxMixin(object): # {{{ def __init__(self): self.search.initialize('main_search_history', colorize=True, help_text=_('Search (For Advanced Search click the button to the left)')) self.search.cleared.connect(self.search_box_cleared) - self.search.changed.connect(self.search_box_changed) + # Queued so that search.current_text will be correct + self.search.changed.connect(self.search_box_changed, + type=Qt.QueuedConnection) self.search.focus_to_library.connect(self.focus_to_library) self.clear_button.clicked.connect(self.search.clear_clicked) self.advanced_search_button.clicked[bool].connect(self.do_advanced_search) @@ -364,7 +374,7 @@ class SearchBoxMixin(object): def search_box_changed(self): self.saved_search.clear() - self.tags_view.clear() + self.tags_view.conditional_clear(self.search.current_text) def do_advanced_search(self, *args): d = SearchDialog(self, self.library_view.model().db) @@ -378,7 +388,9 @@ class SearchBoxMixin(object): def focus_to_library(self): self.current_view().setFocus(Qt.OtherFocusReason) -class SavedSearchBoxMixin(object): + # }}} + +class SavedSearchBoxMixin(object): # {{{ def __init__(self): self.saved_search.changed.connect(self.saved_searches_changed) @@ -417,3 +429,6 @@ class SavedSearchBoxMixin(object): if d.result() == d.Accepted: self.saved_searches_changed() self.saved_search.clear() + + # }}} + diff --git a/src/calibre/gui2/tag_view.py b/src/calibre/gui2/tag_view.py index b841706439..972a1eeba3 100644 --- a/src/calibre/gui2/tag_view.py +++ b/src/calibre/gui2/tag_view.py @@ -60,7 +60,7 @@ class TagDelegate(QItemDelegate): # {{{ class TagsView(QTreeView): # {{{ refresh_required = pyqtSignal() - tags_marked = pyqtSignal(object, object) + tags_marked = pyqtSignal(object) user_category_edit = pyqtSignal(object) tag_list_edit = pyqtSignal(object, object) saved_search_edit = pyqtSignal(object) @@ -135,11 +135,21 @@ class TagsView(QTreeView): # {{{ # swallow these to avoid toggling and editing at the same time pass + @property + def search_string(self): + tokens = self._model.tokens() + joiner = ' and ' if self.match_all else ' or ' + return joiner.join(tokens) + def toggle(self, index): modifiers = int(QApplication.keyboardModifiers()) exclusive = modifiers not in (Qt.CTRL, Qt.SHIFT) if self._model.toggle(index, exclusive): - self.tags_marked.emit(self._model.tokens(), self.match_all) + self.tags_marked.emit(self.search_string) + + def conditional_clear(self, search_string): + if search_string != self.search_string: + self.clear() def context_menu_handler(self, action=None, category=None, key=None, index=None): @@ -842,8 +852,7 @@ class TagBrowserMixin(object): # {{{ self.library_view.model().count_changed_signal.connect(self.tags_view.recount) self.tags_view.set_database(self.library_view.model().db, self.tag_match, self.sort_by) - self.tags_view.tags_marked.connect(self.search.search_from_tags) - self.tags_view.tags_marked.connect(self.saved_search.clear) + self.tags_view.tags_marked.connect(self.search.set_search_string) self.tags_view.tag_list_edit.connect(self.do_tags_list_edit) self.tags_view.user_category_edit.connect(self.do_user_categories_edit) self.tags_view.saved_search_edit.connect(self.do_saved_search_edit) From 7704ca4a0534885e66e4a0d371a46aff76d9159b Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Wed, 1 Dec 2010 19:07:29 +0000 Subject: [PATCH 267/377] First pass at enum custom type --- src/calibre/gui2/custom_column_widgets.py | 82 +++++++++++++++++++ src/calibre/gui2/library/delegates.py | 33 ++++++++ src/calibre/gui2/library/models.py | 4 +- src/calibre/gui2/library/views.py | 6 +- .../gui2/preferences/create_custom_column.py | 17 +++- .../gui2/preferences/create_custom_column.ui | 44 ++++++++-- src/calibre/library/custom_columns.py | 7 +- src/calibre/library/field_metadata.py | 2 +- 8 files changed, 176 insertions(+), 19 deletions(-) diff --git a/src/calibre/gui2/custom_column_widgets.py b/src/calibre/gui2/custom_column_widgets.py index 053dd7a743..7ea4fa679f 100644 --- a/src/calibre/gui2/custom_column_widgets.py +++ b/src/calibre/gui2/custom_column_widgets.py @@ -310,6 +310,37 @@ class Series(Base): self.db.set_custom(book_id, val, extra=s_index, num=self.col_id, notify=notify, commit=False) +class Enumeration(Base): + + def setup_ui(self, parent): + self.widgets = [QLabel('&'+self.col_metadata['name']+':', parent), + QComboBox(parent)] + w = self.widgets[1] + print self.col_metadata['display'] + vals = self.col_metadata['display']['enum_values'] + w.addItem('') + for v in vals: + w.addItem(v) + + def initialize(self, book_id): + val = self.db.get_custom(book_id, num=self.col_id, index_is_id=True) + if val is None: + val = '' + self.initial_val = val + val = self.normalize_db_val(val) + idx = self.widgets[1].findText(val) + if idx < 0: + idx = 0 + self.widgets[1].setCurrentIndex(idx) + + def setter(self, val): + if val is None: + val = '' + self.widgets[1].setCurrentIndex(self.widgets[1].findText(val)) + + def getter(self): + return unicode(self.widgets[1].currentText()) + widgets = { 'bool' : Bool, 'rating' : Rating, @@ -319,6 +350,7 @@ widgets = { 'text' : Text, 'comments': Comments, 'series': Series, + 'enumeration': Enumeration } def field_sort(y, z, x=None): @@ -551,6 +583,55 @@ class BulkSeries(BulkBase): self.db.set_custom_bulk(book_ids, val, extras=extras, num=self.col_id, notify=notify) +class BulkEnumeration(BulkBase, Enumeration): + + def get_initial_value(self, book_ids): + value = None + for book_id in book_ids: + val = self.db.get_custom(book_id, num=self.col_id, index_is_id=True) + if value is not None and value != val: + return ' nochange ' + value = val + return value + + def setup_ui(self, parent): + self.widgets = [QLabel('&'+self.col_metadata['name']+':', parent), + QComboBox(parent)] + w = self.widgets[1] + print self.col_metadata['display'] + vals = self.col_metadata['display']['enum_values'] + w.addItem('Do Not Change') + w.addItem('') + for v in vals: + w.addItem(v) + + def getter(self): + if self.widgets[1].currentIndex() == 0: + return ' nochange ' + return unicode(self.widgets[1].currentText()) + + def setter(self, val): + if val == ' nochange ': + self.widgets[1].setCurrentIndex(0) + else: + self.widgets[1].setCurrentIndex(self.widgets[1].findText(val)) + + def commit(self, book_ids, notify=False): + val = self.gui_val + val = self.normalize_ui_val(val) + if val != self.initial_val and val != ' nochange ': + self.db.set_custom_bulk(book_ids, val, num=self.col_id, notify=notify) + + def normalize_ui_val(self, val): + if val == '': + return None + return val + + def normalize_db_val(self, val): + if val is None: + return '' + return val + class RemoveTags(QWidget): def __init__(self, parent, values): @@ -656,4 +737,5 @@ bulk_widgets = { 'datetime': BulkDateTime, 'text' : BulkText, 'series': BulkSeries, + 'enumeration': BulkEnumeration, } diff --git a/src/calibre/gui2/library/delegates.py b/src/calibre/gui2/library/delegates.py index f9ba612bc9..f5610bf849 100644 --- a/src/calibre/gui2/library/delegates.py +++ b/src/calibre/gui2/library/delegates.py @@ -254,6 +254,39 @@ class CcTextDelegate(QStyledItemDelegate): # {{{ # }}} +class CcEnumDelegate(QStyledItemDelegate): # {{{ + ''' + Delegate for text/int/float data. + ''' + + def createEditor(self, parent, option, index): + m = index.model() + col = m.column_map[index.column()] + print 'delegate' + editor = QComboBox(parent) + editor.addItem('') + for v in m.custom_columns[col]['display']['enum_values']: + editor.addItem(v) + return editor + + def setModelData(self, editor, model, index): + val = unicode(editor.currentText()) + if val == '': + val = None + model.setData(index, QVariant(val), Qt.EditRole) + + def setEditorData(self, editor, index): + m = index.model() + val = m.db.data[index.row()][m.custom_columns[m.column_map[index.column()]]['rec_index']] + if val is None: + val = '' + idx = editor.findText(val) + if idx < 0: + editor.setCurrentIndex(0) + else: + editor.setCurrentIndex(idx) +# }}} + class CcCommentsDelegate(QStyledItemDelegate): # {{{ ''' Delegate for comments data. diff --git a/src/calibre/gui2/library/models.py b/src/calibre/gui2/library/models.py index 4ef2c34c03..99639ed0a7 100644 --- a/src/calibre/gui2/library/models.py +++ b/src/calibre/gui2/library/models.py @@ -634,7 +634,7 @@ class BooksModel(QAbstractTableModel): # {{{ for col in self.custom_columns: idx = self.custom_columns[col]['rec_index'] datatype = self.custom_columns[col]['datatype'] - if datatype in ('text', 'comments', 'composite'): + if datatype in ('text', 'comments', 'composite', 'enumeration'): self.dc[col] = functools.partial(text_type, idx=idx, mult=self.custom_columns[col]['is_multiple']) elif datatype in ('int', 'float'): @@ -719,7 +719,7 @@ class BooksModel(QAbstractTableModel): # {{{ typ = cc['datatype'] label=self.db.field_metadata.key_to_label(colhead) s_index = None - if typ in ('text', 'comments'): + if typ in ('text', 'comments', 'enumeration'): val = unicode(value.toString()).strip() val = val if val else None if typ == 'bool': diff --git a/src/calibre/gui2/library/views.py b/src/calibre/gui2/library/views.py index fadb8314e3..f724ca7b58 100644 --- a/src/calibre/gui2/library/views.py +++ b/src/calibre/gui2/library/views.py @@ -14,7 +14,8 @@ from PyQt4.Qt import QTableView, Qt, QAbstractItemView, QMenu, pyqtSignal, \ from calibre.gui2.library.delegates import RatingDelegate, PubDateDelegate, \ TextDelegate, DateDelegate, TagsDelegate, CcTextDelegate, \ - CcBoolDelegate, CcCommentsDelegate, CcDateDelegate, CcTemplateDelegate + CcBoolDelegate, CcCommentsDelegate, CcDateDelegate, CcTemplateDelegate, \ + CcEnumDelegate from calibre.gui2.library.models import BooksModel, DeviceBooksModel from calibre.utils.config import tweaks, prefs from calibre.gui2 import error_dialog, gprefs @@ -76,6 +77,7 @@ class BooksView(QTableView): # {{{ self.publisher_delegate = TextDelegate(self) self.text_delegate = TextDelegate(self) self.cc_text_delegate = CcTextDelegate(self) + self.cc_enum_delegate = CcEnumDelegate(self) self.cc_bool_delegate = CcBoolDelegate(self) self.cc_comments_delegate = CcCommentsDelegate(self) self.cc_template_delegate = CcTemplateDelegate(self) @@ -427,6 +429,8 @@ class BooksView(QTableView): # {{{ self.setItemDelegateForColumn(cm.index(colhead), self.rating_delegate) elif cc['datatype'] == 'composite': self.setItemDelegateForColumn(cm.index(colhead), self.cc_template_delegate) + elif cc['datatype'] == 'enumeration': + self.setItemDelegateForColumn(cm.index(colhead), self.cc_enum_delegate) else: dattr = colhead+'_delegate' delegate = colhead if hasattr(self, dattr) else 'text' diff --git a/src/calibre/gui2/preferences/create_custom_column.py b/src/calibre/gui2/preferences/create_custom_column.py index ebf33784d4..d4d2b2678c 100644 --- a/src/calibre/gui2/preferences/create_custom_column.py +++ b/src/calibre/gui2/preferences/create_custom_column.py @@ -40,6 +40,8 @@ class CreateCustomColumn(QDialog, Ui_QCreateCustomColumn): 'text':_('Yes/No'), 'is_multiple':False}, 9:{'datatype':'composite', 'text':_('Column built from other columns'), 'is_multiple':False}, + 10:{'datatype':'enumeration', + 'text':_('Fixed set of text values'), 'is_multiple':False}, } def __init__(self, parent, editing, standard_colheads, standard_colnames): @@ -90,7 +92,7 @@ class CreateCustomColumn(QDialog, Ui_QCreateCustomColumn): if c['display'].get('date_format', None): self.date_format_box.setText(c['display'].get('date_format', '')) elif ct == 'composite': - self.composite_box.setText(c['display'].get('composite_template', '')) + self.composite_box.setText(c['display'].get('enum_values', '')) self.datatype_changed() self.exec_() @@ -103,7 +105,8 @@ class CreateCustomColumn(QDialog, Ui_QCreateCustomColumn): getattr(self, 'date_format_'+x).setVisible(col_type == 'datetime') for x in ('box', 'default_label', 'label'): getattr(self, 'composite_'+x).setVisible(col_type == 'composite') - + for x in ('box', 'default_label', 'label'): + getattr(self, 'enum_'+x).setVisible(col_type == 'enumeration') def accept(self): col = unicode(self.column_name_box.text()) @@ -145,17 +148,23 @@ class CreateCustomColumn(QDialog, Ui_QCreateCustomColumn): return self.simple_error('', _('The heading %s is already used')%col_heading) display_dict = {} + if col_type == 'datetime': if self.date_format_box.text(): display_dict = {'date_format':unicode(self.date_format_box.text())} else: display_dict = {'date_format': None} - - if col_type == 'composite': + elif col_type == 'composite': if not self.composite_box.text(): return self.simple_error('', _('You must enter a template for' ' composite columns')) display_dict = {'composite_template':unicode(self.composite_box.text())} + elif col_type == 'enumeration': + if not self.enum_box.text(): + return self.simple_error('', _('You must enter at least one' + ' value for enumeration columns')) + display_dict = {'enum_values': + [v.strip() for v in unicode(self.enum_box.text()).split(',')]} db = self.parent.gui.library_view.model().db key = db.field_metadata.custom_field_prefix+col diff --git a/src/calibre/gui2/preferences/create_custom_column.ui b/src/calibre/gui2/preferences/create_custom_column.ui index 640becca8c..03c191d34e 100644 --- a/src/calibre/gui2/preferences/create_custom_column.ui +++ b/src/calibre/gui2/preferences/create_custom_column.ui @@ -10,7 +10,7 @@ <x>0</x> <y>0</y> <width>528</width> - <height>199</height> + <height>212</height> </rect> </property> <property name="sizePolicy"> @@ -24,7 +24,7 @@ </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> - <layout class="QGridLayout" name="gridLayout_2" rowstretch="0,0,0,0"> + <layout class="QGridLayout" name="gridLayout_2" rowstretch="0,0,0,0,0,0,0,0,0,0,0,0"> <property name="sizeConstraint"> <enum>QLayout::SetDefaultConstraint</enum> </property> @@ -56,7 +56,7 @@ </property> </widget> </item> - <item row="0" column="1"> + <item row="0" column="2"> <widget class="QLineEdit" name="column_name_box"> <property name="minimumSize"> <size> @@ -69,7 +69,7 @@ </property> </widget> </item> - <item row="1" column="1"> + <item row="1" column="2"> <widget class="QLineEdit" name="column_heading_box"> <property name="toolTip"> <string>Column heading in the library view and category name in the tag browser</string> @@ -86,7 +86,7 @@ </property> </widget> </item> - <item row="2" column="1"> + <item row="2" column="2"> <widget class="QComboBox" name="column_type_box"> <property name="sizePolicy"> <sizepolicy hsizetype="Maximum" vsizetype="Fixed"> @@ -105,7 +105,7 @@ </property> </widget> </item> - <item row="4" column="1"> + <item row="4" column="2"> <layout class="QHBoxLayout" name="horizontalLayout_3"> <item> <widget class="QLineEdit" name="date_format_box"> @@ -147,7 +147,7 @@ </property> </widget> </item> - <item row="5" column="1"> + <item row="5" column="2"> <layout class="QHBoxLayout" name="horizontalLayout_4"> <item> <widget class="QLineEdit" name="composite_box"> @@ -184,7 +184,7 @@ </property> </widget> </item> - <item row="10" column="0" colspan="3"> + <item row="11" column="0" colspan="4"> <spacer name="verticalSpacer_2"> <property name="orientation"> <enum>Qt::Vertical</enum> @@ -197,6 +197,34 @@ </property> </spacer> </item> + <item row="6" column="0"> + <widget class="QLabel" name="enum_label"> + <property name="text"> + <string>Values</string> + </property> + </widget> + </item> + <item row="6" column="2"> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <item> + <widget class="QLineEdit" name="enum_box"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Maximum" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="enum_default_label"> + <property name="text"> + <string>Default: (nothing)</string> + </property> + </widget> + </item> + </layout> + </item> </layout> </item> <item row="11" column="0"> diff --git a/src/calibre/library/custom_columns.py b/src/calibre/library/custom_columns.py index fdd78e89f8..b477c89fe5 100644 --- a/src/calibre/library/custom_columns.py +++ b/src/calibre/library/custom_columns.py @@ -18,7 +18,7 @@ from calibre.utils.date import parse_date class CustomColumns(object): CUSTOM_DATA_TYPES = frozenset(['rating', 'text', 'comments', 'datetime', - 'int', 'float', 'bool', 'series', 'composite']) + 'int', 'float', 'bool', 'series', 'composite', 'enumeration']) def custom_table_names(self, num): return 'custom_column_%d'%num, 'books_custom_column_%d_link'%num @@ -144,7 +144,8 @@ class CustomColumns(object): 'comments': lambda x,d: adapt_text(x, {'is_multiple':False}), 'datetime' : adapt_datetime, 'text':adapt_text, - 'series':adapt_text + 'series':adapt_text, + 'enumeration': adapt_text } # Create Tag Browser categories for custom columns @@ -558,7 +559,7 @@ class CustomColumns(object): if datatype in ('rating', 'int'): dt = 'INT' - elif datatype in ('text', 'comments', 'series', 'composite'): + elif datatype in ('text', 'comments', 'series', 'composite', 'enumeration'): dt = 'TEXT' elif datatype in ('float',): dt = 'REAL' diff --git a/src/calibre/library/field_metadata.py b/src/calibre/library/field_metadata.py index d10dc5da71..f5a156d3a7 100644 --- a/src/calibre/library/field_metadata.py +++ b/src/calibre/library/field_metadata.py @@ -83,7 +83,7 @@ class FieldMetadata(dict): ''' VALID_DATA_TYPES = frozenset([None, 'rating', 'text', 'comments', 'datetime', - 'int', 'float', 'bool', 'series', 'composite']) + 'int', 'float', 'bool', 'series', 'composite', 'enumeration']) # Builtin metadata {{{ From 1a0d182067fbf02a8bf3e5f06e912c4ced52f406 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Wed, 1 Dec 2010 12:19:32 -0700 Subject: [PATCH 268/377] After a search, always select the first result row --- src/calibre/gui2/init.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/calibre/gui2/init.py b/src/calibre/gui2/init.py index 223efcf95b..27a6a2352a 100644 --- a/src/calibre/gui2/init.py +++ b/src/calibre/gui2/init.py @@ -86,6 +86,10 @@ class LibraryViewMixin(object): # {{{ if view is self.current_view(): self.search.search_done(ok) self.set_number_of_books_shown() + if ok: + v = self.current_view() + if hasattr(v, 'set_current_row'): + v.set_current_row(0) # }}} From 769d4e9502e2e46641e0b32bee083703a625b690 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Wed, 1 Dec 2010 12:55:15 -0700 Subject: [PATCH 269/377] Fix #7726 (Search history incorrect when closing/reopening calibre) --- src/calibre/gui2/search_box.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py index 0c8eb84a37..a0faa4c0a1 100644 --- a/src/calibre/gui2/search_box.py +++ b/src/calibre/gui2/search_box.py @@ -92,7 +92,11 @@ class SearchBox2(QComboBox): # {{{ def initialize(self, opt_name, colorize=False, help_text=_('Search')): self.as_you_type = config['search_as_you_type'] self.opt_name = opt_name - self.addItems(QStringList(list(set(config[opt_name])))) + items = [] + for item in config[opt_name]: + if item not in items: + items.append(item) + self.addItems(QStringList(items)) try: self.line_edit.setPlaceholderText(help_text) except: @@ -189,8 +193,9 @@ class SearchBox2(QComboBox): # {{{ self.insertItem(0, t) self.setCurrentIndex(0) self.block_signals(False) - config[self.opt_name] = [unicode(self.itemText(i)) for i in + history = [unicode(self.itemText(i)) for i in range(self.count())] + config[self.opt_name] = history def do_search(self, *args): self._do_search() From 8460d35fa7be2637e722db79aa4d89d079380b5e Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Wed, 1 Dec 2010 13:01:42 -0700 Subject: [PATCH 270/377] Fix #7715 (OS X - Viewer window taller than non-standard display, can't resize) --- src/calibre/gui2/viewer/main.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/calibre/gui2/viewer/main.py b/src/calibre/gui2/viewer/main.py index 7c19567804..1ea1aca733 100644 --- a/src/calibre/gui2/viewer/main.py +++ b/src/calibre/gui2/viewer/main.py @@ -17,7 +17,7 @@ from calibre.gui2.viewer.bookmarkmanager import BookmarkManager from calibre.gui2.widgets import ProgressIndicator from calibre.gui2.main_window import MainWindow from calibre.gui2 import Application, ORG_NAME, APP_UID, choose_files, \ - info_dialog, error_dialog, open_url + info_dialog, error_dialog, open_url, available_height from calibre.ebooks.oeb.iterator import EbookIterator from calibre.ebooks import DRMError from calibre.constants import islinux, isfreebsd, isosx @@ -694,6 +694,9 @@ class EbookViewer(MainWindow, Ui_EbookViewer): if ss is not None: self.splitter.restoreState(ss) self.show_toc_on_open = dynamic.get('viewer_toc_isvisible', False) + av = available_height() - 30 + if self.height() > av: + self.resize(self.width(), av) def config(defaults=None): desc = _('Options to control the ebook viewer') From 0c7df44df5bbe78dcb7740d6a2e941f23b2591ff Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Wed, 1 Dec 2010 13:22:54 -0700 Subject: [PATCH 271/377] ... --- src/calibre/gui2/search_box.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py index a0faa4c0a1..1cdf622537 100644 --- a/src/calibre/gui2/search_box.py +++ b/src/calibre/gui2/search_box.py @@ -51,7 +51,7 @@ class SearchBox2(QComboBox): # {{{ * Call search_done() after every search is complete * Call set_search_string() to perform a search programmatically * You can use the current_text property to get the current search text - Be aware that if you are using it in a slow connected to the + Be aware that if you are using it in a slot connected to the changed() signal, if the connection is not queued it will not be accurate. ''' From 6143392ee9c21f118a90c397fea8ce5af05833e6 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Wed, 1 Dec 2010 16:27:17 -0700 Subject: [PATCH 272/377] Fix #7706 (show cover Image info in tool tip) --- src/calibre/gui2/dialogs/metadata_single.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/calibre/gui2/dialogs/metadata_single.py b/src/calibre/gui2/dialogs/metadata_single.py index 2b951a7b2b..7beeb56378 100644 --- a/src/calibre/gui2/dialogs/metadata_single.py +++ b/src/calibre/gui2/dialogs/metadata_single.py @@ -98,9 +98,16 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): COVER_FETCH_TIMEOUT = 240 # seconds view_format = pyqtSignal(object) + def update_cover_tooltip(self): + p = self.cover.pixmap() + self.cover.setToolTip(_('Cover size: %dx%d pixels') % + (p.width(), p.height())) + + def do_reset_cover(self, *args): pix = QPixmap(I('default_cover.png')) self.cover.setPixmap(pix) + self.update_cover_tooltip() self.cover_changed = True self.cover_data = None @@ -136,6 +143,7 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): else: self.cover_path.setText(_file) self.cover.setPixmap(pix) + self.update_cover_tooltip() self.cover_changed = True self.cpixmap = pix self.cover_data = cover @@ -161,6 +169,7 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): pix = QPixmap() pix.loadFromData(self.cover_data) self.cover.setPixmap(pix) + self.update_cover_tooltip() self.cover_changed = True self.cpixmap = pix @@ -296,6 +305,7 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): _('The cover in the %s format is invalid')%ext).exec_() return self.cover.setPixmap(pix) + self.update_cover_tooltip() self.cover_changed = True self.cpixmap = pix self.cover_data = cdata @@ -312,6 +322,7 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): pix = QPixmap() pix.loadFromData(cdata) self.cover.setPixmap(pix) + self.update_cover_tooltip() self.cover_changed = True self.cpixmap = pix self.cover_data = cdata @@ -472,6 +483,7 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): else: self.cover_data = cover self.cover.setPixmap(pm) + self.update_cover_tooltip() self.original_series_name = unicode(self.series.text()).strip() if len(db.custom_column_label_map) == 0: self.central_widget.tabBar().setVisible(False) @@ -677,6 +689,7 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): _('The cover is not a valid picture')).exec_() else: self.cover.setPixmap(pix) + self.update_cover_tooltip() self.cover_changed = True self.cpixmap = pix self.cover_data = self.cover_fetcher.cover_data From 88a60c1610d5ccd0c154d5aa3df08faebb9f873a Mon Sep 17 00:00:00 2001 From: John Schember <john@nachtimwald.com> Date: Wed, 1 Dec 2010 18:27:33 -0500 Subject: [PATCH 273/377] TXT Output: Turn br tags into spaces. --- src/calibre/ebooks/txt/txtml.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/calibre/ebooks/txt/txtml.py b/src/calibre/ebooks/txt/txtml.py index 3ecb6940f8..48c94c2543 100644 --- a/src/calibre/ebooks/txt/txtml.py +++ b/src/calibre/ebooks/txt/txtml.py @@ -35,6 +35,7 @@ BLOCK_STYLES = [ SPACE_TAGS = [ 'td', + 'br', ] class TXTMLizer(object): From 04e3ba0e812c0b2443d19a6eb6a331b94695ed56 Mon Sep 17 00:00:00 2001 From: John Schember <john@nachtimwald.com> Date: Wed, 1 Dec 2010 18:51:49 -0500 Subject: [PATCH 274/377] TXT Output: Basic Markdown formatted output. --- src/calibre/ebooks/txt/output.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/calibre/ebooks/txt/output.py b/src/calibre/ebooks/txt/output.py index 15db4b1974..3c0d475460 100644 --- a/src/calibre/ebooks/txt/output.py +++ b/src/calibre/ebooks/txt/output.py @@ -8,6 +8,7 @@ import os from calibre.customize.conversion import OutputFormatPlugin, \ OptionRecommendation +from calibre.ebooks.txt.markdownml import MarkdownMLizer from calibre.ebooks.txt.txtml import TXTMLizer from calibre.ebooks.txt.newlines import TxtNewlines, specified_newlines @@ -44,10 +45,17 @@ class TXTOutput(OutputFormatPlugin): recommended_value=False, level=OptionRecommendation.LOW, help=_('Force splitting on the max-line-length value when no space ' 'is present. Also allows max-line-length to be below the minimum')), + OptionRecommendation(name='markdown_format', + recommended_value=False, level=OptionRecommendation.LOW, + help=_('Produce Markdown formatted text.')), ]) def convert(self, oeb_book, output_path, input_plugin, opts, log): - writer = TXTMLizer(log) + if opts.markdown_format: + writer = MarkdownMLizer(log) + else: + writer = TXTMLizer(log) + txt = writer.extract_content(oeb_book, opts) log.debug('\tReplacing newlines with selected type...') From 113ff417d66c6997aaf8428733026d8a50c61c2e Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Wed, 1 Dec 2010 18:05:35 -0700 Subject: [PATCH 275/377] Conversion pipeline: Respect max-width and max-height when calculating the effective size of an element --- src/calibre/ebooks/oeb/stylizer.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/calibre/ebooks/oeb/stylizer.py b/src/calibre/ebooks/oeb/stylizer.py index 4f8ae68943..84bce3864e 100644 --- a/src/calibre/ebooks/oeb/stylizer.py +++ b/src/calibre/ebooks/oeb/stylizer.py @@ -253,7 +253,10 @@ class Stylizer(object): upd = {} for prop in ('width', 'height'): val = elem.get(prop, '').strip() - del elem.attrib[prop] + try: + del elem.attrib[prop] + except: + pass if val: if num_pat.match(val) is not None: val += 'px' @@ -584,6 +587,13 @@ class Style(object): if isinstance(result, (unicode, str, bytes)): result = self._profile.width self._width = result + if 'max-width' in self._style: + result = self._unit_convert(self._style['max-width'], base=base) + if isinstance(result, (unicode, str, bytes)): + result = self._width + if result < self._width: + self._width = result + return self._width @property @@ -607,6 +617,13 @@ class Style(object): if isinstance(result, (unicode, str, bytes)): result = self._profile.height self._height = result + if 'max-height' in self._style: + result = self._unit_convert(self._style['max-height'], base=base) + if isinstance(result, (unicode, str, bytes)): + result = self._height + if result < self._height: + self._height = result + return self._height @property From 98a0970f02ed7d953085377f5b5afa69563546e3 Mon Sep 17 00:00:00 2001 From: John Schember <john@nachtimwald.com> Date: Wed, 1 Dec 2010 20:33:52 -0500 Subject: [PATCH 276/377] Add markdownml.py. TXT Output: Remove links option to make markdown output cleaner. --- src/calibre/ebooks/txt/markdownml.py | 40 ++++++++++++++++++++++++++++ src/calibre/ebooks/txt/output.py | 5 ++++ 2 files changed, 45 insertions(+) create mode 100644 src/calibre/ebooks/txt/markdownml.py diff --git a/src/calibre/ebooks/txt/markdownml.py b/src/calibre/ebooks/txt/markdownml.py new file mode 100644 index 0000000000..2ea3e7dafe --- /dev/null +++ b/src/calibre/ebooks/txt/markdownml.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- + +__license__ = 'GPL 3' +__copyright__ = '2009, John Schember <john@nachtimwald.com>' +__docformat__ = 'restructuredtext en' + +''' +Transform OEB content into Markdown formatted plain text +''' + +import re + +from lxml import etree + +from calibre.utils.html2text import html2text + +class MarkdownMLizer(object): + + def __init__(self, log): + self.log = log + + def extract_content(self, oeb_book, opts): + self.log.info('Converting XHTML to Markdown formatted TXT...') + self.oeb_book = oeb_book + self.opts = opts + + return self.mlize_spine() + + def mlize_spine(self): + output = [u''] + for item in self.oeb_book.spine: + self.log.debug('Converting %s to Markdown formatted TXT...' % item.href) + html = unicode(etree.tostring(item.data, encoding=unicode)) + if self.opts.remove_links: + html = re.sub(r'<\s*a[^>]*>', '', html) + html = re.sub(r'<\s*/\s*a\s*>', '', html) + output += html2text(html) + output = u''.join(output) + + return output diff --git a/src/calibre/ebooks/txt/output.py b/src/calibre/ebooks/txt/output.py index 3c0d475460..a6f52f92ca 100644 --- a/src/calibre/ebooks/txt/output.py +++ b/src/calibre/ebooks/txt/output.py @@ -48,6 +48,11 @@ class TXTOutput(OutputFormatPlugin): OptionRecommendation(name='markdown_format', recommended_value=False, level=OptionRecommendation.LOW, help=_('Produce Markdown formatted text.')), + OptionRecommendation(name='remove_links', + recommended_value=False, level=OptionRecommendation.LOW, + help=_('Remove links within the document. This is only ' \ + 'useful when paried with the markdown-format option because' \ + 'links are removed with plain text output.')), ]) def convert(self, oeb_book, output_path, input_plugin, opts, log): From f078aceb6cf5f9b1a1c589303ca6f24d5adb0d71 Mon Sep 17 00:00:00 2001 From: John Schember <john@nachtimwald.com> Date: Wed, 1 Dec 2010 21:03:54 -0500 Subject: [PATCH 277/377] TXT Output: Add GUI support for new markdown related options. --- src/calibre/gui2/convert/txt_output.py | 2 +- src/calibre/gui2/convert/txt_output.ui | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/calibre/gui2/convert/txt_output.py b/src/calibre/gui2/convert/txt_output.py index 8b2e131ec6..3d35151bb8 100644 --- a/src/calibre/gui2/convert/txt_output.py +++ b/src/calibre/gui2/convert/txt_output.py @@ -21,7 +21,7 @@ class PluginWidget(Widget, Ui_Form): def __init__(self, parent, get_option, get_help, db=None, book_id=None): Widget.__init__(self, parent, ['newline', 'max_line_length', 'force_max_line_length', - 'inline_toc']) + 'inline_toc', 'markdown_format', 'remove_links']) self.db, self.book_id = db, book_id self.initialize_options(get_option, get_help, db, book_id) diff --git a/src/calibre/gui2/convert/txt_output.ui b/src/calibre/gui2/convert/txt_output.ui index 9eae5a8115..75eac8f5fc 100644 --- a/src/calibre/gui2/convert/txt_output.ui +++ b/src/calibre/gui2/convert/txt_output.ui @@ -6,7 +6,7 @@ <rect> <x>0</x> <y>0</y> - <width>400</width> + <width>470</width> <height>300</height> </rect> </property> @@ -27,7 +27,7 @@ <item row="0" column="1"> <widget class="QComboBox" name="opt_newline"/> </item> - <item row="4" column="0"> + <item row="6" column="0"> <spacer name="verticalSpacer"> <property name="orientation"> <enum>Qt::Vertical</enum> @@ -67,6 +67,20 @@ </property> </widget> </item> + <item row="4" column="0"> + <widget class="QCheckBox" name="opt_markdown_format"> + <property name="text"> + <string>Apply Markdown formatting to text</string> + </property> + </widget> + </item> + <item row="5" column="0"> + <widget class="QCheckBox" name="opt_remove_links"> + <property name="text"> + <string>Remove links (<a> tags) before processing</string> + </property> + </widget> + </item> </layout> </widget> <resources/> From b343837f65305b2729f78383260cc3944472d78d Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Wed, 1 Dec 2010 20:31:01 -0700 Subject: [PATCH 278/377] Conversion pipeline: Fix bug that caused height/width specified in %/em of screen size to be incorrectly calculated by a factor of 72./DPI --- src/calibre/customize/profiles.py | 2 ++ src/calibre/ebooks/oeb/stylizer.py | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/calibre/customize/profiles.py b/src/calibre/customize/profiles.py index 2ca3bb0c54..0a3945304a 100644 --- a/src/calibre/customize/profiles.py +++ b/src/calibre/customize/profiles.py @@ -37,6 +37,8 @@ class Plugin(_Plugin): self.fsizes.append((name, num, float(size))) self.fnames = dict((name, sz) for name, _, sz in self.fsizes if name) self.fnums = dict((num, sz) for _, num, sz in self.fsizes if num) + self.width_pts = self.width * 72./self.dpi + self.height_pts = self.height * 72./self.dpi # Input profiles {{{ class InputProfile(Plugin): diff --git a/src/calibre/ebooks/oeb/stylizer.py b/src/calibre/ebooks/oeb/stylizer.py index 84bce3864e..6c0c384eb3 100644 --- a/src/calibre/ebooks/oeb/stylizer.py +++ b/src/calibre/ebooks/oeb/stylizer.py @@ -575,7 +575,7 @@ class Style(object): if parent is not None: base = parent.width else: - base = self._profile.width + base = self._profile.width_pts if 'width' in self._element.attrib: width = self._element.attrib['width'] elif 'width' in self._style: @@ -605,7 +605,7 @@ class Style(object): if parent is not None: base = parent.height else: - base = self._profile.height + base = self._profile.height_pts if 'height' in self._element.attrib: height = self._element.attrib['height'] elif 'height' in self._style: From 63ef5a542510cc4556560cc2ace0b2395b5e7dc2 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Wed, 1 Dec 2010 20:35:08 -0700 Subject: [PATCH 279/377] MOBI Output: When the input document does not explicitly specify a size for images, set the size to be the natural size of the image. This works around Amazon's *truly wonderful* MOBI renderer's tendency to expand images that do not have a width and height specified. --- src/calibre/ebooks/mobi/mobiml.py | 41 ++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/src/calibre/ebooks/mobi/mobiml.py b/src/calibre/ebooks/mobi/mobiml.py index 98e7b6023c..8d20179250 100644 --- a/src/calibre/ebooks/mobi/mobiml.py +++ b/src/calibre/ebooks/mobi/mobiml.py @@ -10,9 +10,10 @@ import copy import re from lxml import etree from calibre.ebooks.oeb.base import namespace, barename -from calibre.ebooks.oeb.base import XHTML, XHTML_NS, OEB_DOCS +from calibre.ebooks.oeb.base import XHTML, XHTML_NS, OEB_DOCS, urlnormalize from calibre.ebooks.oeb.stylizer import Stylizer from calibre.ebooks.oeb.transforms.flatcss import KeyMapper +from calibre.utils.magick.draw import identify_data MBP_NS = 'http://mobipocket.com/ns/mbp' def MBP(name): return '{%s}%s' % (MBP_NS, name) @@ -121,6 +122,7 @@ class MobiMLizer(object): body = item.data.find(XHTML('body')) nroot = etree.Element(XHTML('html'), nsmap=MOBI_NSMAP) nbody = etree.SubElement(nroot, XHTML('body')) + self.current_spine_item = item self.mobimlize_elem(body, stylizer, BlockState(nbody), [FormatState()]) item.data = nroot @@ -357,8 +359,9 @@ class MobiMLizer(object): if tag == 'img' and 'src' in elem.attrib: istate.attrib['src'] = elem.attrib['src'] istate.attrib['align'] = 'baseline' + cssdict = style.cssdict() for prop in ('width', 'height'): - if style[prop] != 'auto': + if cssdict[prop] != 'auto': value = style[prop] if value == getattr(self.profile, prop): result = '100%' @@ -371,8 +374,40 @@ class MobiMLizer(object): (72./self.profile.dpi))) except: continue - result = "%d"%pixs + result = str(pixs) istate.attrib[prop] = result + if 'width' not in istate.attrib or 'height' not in istate.attrib: + href = self.current_spine_item.abshref(elem.attrib['src']) + try: + item = self.oeb.manifest.hrefs[urlnormalize(href)] + except: + self.oeb.logger.warn('Failed to find image:', + href) + else: + try: + width, height = identify_data(item.data)[:2] + except: + self.oeb.logger.warn('Invalid image:', href) + else: + if 'width' not in istate.attrib and 'height' not in \ + istate.attrib: + istate.attrib['width'] = str(width) + istate.attrib['height'] = str(height) + else: + ar = float(width)/float(height) + if 'width' not in istate.attrib: + try: + width = int(istate.attrib['height'])*ar + except: + pass + istate.attrib['width'] = str(int(width)) + else: + try: + height = int(istate.attrib['width'])/ar + except: + pass + istate.attrib['height'] = str(int(height)) + item.unload_data_from_memory() elif tag == 'hr' and asfloat(style['width']) > 0: prop = style['width'] / self.profile.width istate.attrib['width'] = "%d%%" % int(round(prop * 100)) From 51a2f3d65208060e3470f78a4754631234a02872 Mon Sep 17 00:00:00 2001 From: Translators <> Date: Thu, 2 Dec 2010 04:45:22 +0000 Subject: [PATCH 280/377] Launchpad automatic translations update. --- src/calibre/translations/cs.po | 28 ++++++++++++++++++++++++++-- src/calibre/translations/fr.po | 24 +++++++++++++++++------- 2 files changed, 43 insertions(+), 9 deletions(-) diff --git a/src/calibre/translations/cs.po b/src/calibre/translations/cs.po index 830d85b321..919be301bc 100644 --- a/src/calibre/translations/cs.po +++ b/src/calibre/translations/cs.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2010-11-27 20:21+0000\n" -"PO-Revision-Date: 2010-11-29 19:40+0000\n" +"PO-Revision-Date: 2010-12-01 22:11+0000\n" "Last-Translator: Marek Sušický <Unknown>\n" "Language-Team: Czech <cs@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-30 04:45+0000\n" +"X-Launchpad-Export-Date: 2010-12-02 04:45+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -5011,6 +5011,10 @@ msgid "" "- A regex pattern of a single dot excludes all genre tags, generating no " "Genre Section" msgstr "" +"Tipy k regulárním výrazům:\n" +"- Výchozí regex - \\[.+\\] - vylučuje žánrové tagy z formy [tag], t.j. " +"[Amazon Freebie]\n" +"- Vzor regexpu . vylučuje všechny tagy žánrů, negeneruje sekci žánrů" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:90 msgid "Include 'Titles' Section" @@ -7296,6 +7300,10 @@ msgid "" "Using this button to create author sort will change author sort from red to " "green." msgstr "" +"Automaticky vytvoří třídění dle autora založené na aktuálně zadaných " +"autorech.\n" +"Použitím tohoto tlačítka k vytvoření třídění dle autora změní třídění z " +"červené na zelenou." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:396 msgid "Remove unused series (Series that have no books)" @@ -11277,6 +11285,10 @@ msgid "" "Default: '%default'\n" "Applies to: BIBTEX output format" msgstr "" +"BibTeX flag kódování.\n" +"Dostupné typy: strict, replace, ignore, backslashreplace.\n" +"Výchozí: '%default'\n" +"Použije se na: BIBTEX výstupní formát" #: /home/kovid/work/calibre/src/calibre/library/catalog.py:270 msgid "" @@ -11341,6 +11353,9 @@ msgid "" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" +"Zahrnout 'Série' sekci do katalogu.\n" +"Výchozí: '%default'\n" +"Použije se na: ePub, MOBI výstupní formáty" #: /home/kovid/work/calibre/src/calibre/library/catalog.py:585 msgid "" @@ -11358,6 +11373,10 @@ msgid "" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" +"Tag předpona pro uživatelské poznámky, např. '*Jeff might enjoy reading " +"this'.\n" +"Výchozí: '%default'\n" +"Použije se na: ePub, MOBI výstupní formáty" #: /home/kovid/work/calibre/src/calibre/library/catalog.py:599 msgid "" @@ -11628,6 +11647,11 @@ msgid "" "id.\n" "id is an id number from the list command.\n" msgstr "" +"\n" +"%prog show_metadata [options] id\n" +"\n" +"Ukázat metadata uložená v calibre databázi pro knihu identifikovanou id.\n" +"id je číslo ze seznamu příkazů.\n" #: /home/kovid/work/calibre/src/calibre/library/cli.py:439 msgid "Print metadata in OPF form (XML)" diff --git a/src/calibre/translations/fr.po b/src/calibre/translations/fr.po index 38933f4a69..cca9e97072 100644 --- a/src/calibre/translations/fr.po +++ b/src/calibre/translations/fr.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: calibre 0.4.22\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-11-27 20:21+0000\n" -"PO-Revision-Date: 2010-11-29 05:41+0000\n" -"Last-Translator: Vincent C. <Unknown>\n" +"PO-Revision-Date: 2010-12-02 02:39+0000\n" +"Last-Translator: sengian <Unknown>\n" "Language-Team: Français <kde-i18n-doc@kde.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-30 04:45+0000\n" +"X-Launchpad-Export-Date: 2010-12-02 04:45+0000\n" "X-Generator: Launchpad (build Unknown)\n" "X-Poedit-Bookmarks: 1177,1104,-1,-1,-1,-1,-1,-1,-1,-1\n" "Generated-By: pygettext.py 1.5\n" @@ -837,7 +837,7 @@ msgstr "Communiquer avec le lecteur PocketBook 301" #: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:233 msgid "Communicate with the PocketBook 602 reader." -msgstr "" +msgstr "Communiquer avec le lecteur PocketBook 602." #: /home/kovid/work/calibre/src/calibre/devices/edge/driver.py:17 msgid "Entourage Edge" @@ -1052,7 +1052,7 @@ msgstr "Communiquer avec le GM2000" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:180 msgid "Communicate with the Acer Lumiread" -msgstr "" +msgstr "Communiquer avec l'Acer Lumiread" #: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:17 msgid "Communicate with the Nokia 770 internet tablet." @@ -6529,6 +6529,14 @@ msgid "" "enter the full path to the file after a <code>>></code>. For example:</p>\n" "<p><code>9788842915232 >> %s</code></p>" msgstr "" +"<p>Entrer une liste d'ISBNs dans la boite à gauche, une par ligne. Calibre " +"va automatiquement créer des entrées pour ces livres à partir de l'ISBN et " +"télécharger les métadonnées et la couverture correspondantes.</p>\n" +"<p>Tous les ISBNs invalides de la liste seront ignorés.</p>\n" +"<p>Vous pouvez aussi spécifier un fichier qui sera ajouté avec chaque ISBN. " +"Pour faire celà, entrez le chemin complet du fichier après <code>>></code>. " +"Par exemple :</p>\n" +"<p><code>9788842915232 >> %s</code></p>" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:53 msgid "&Paste from clipboard" @@ -8451,7 +8459,7 @@ msgstr "News :" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:189 msgid "Attached is the %s periodical downloaded by calibre." -msgstr "" +msgstr "Trouvez en pièce jointe le périodique %s téléchargé par Calibre." #: /home/kovid/work/calibre/src/calibre/gui2/email.py:242 msgid "E-book:" @@ -8489,7 +8497,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:303 msgid "Failed to email book" -msgstr "" +msgstr "Echec de l'envoi du livre par mél" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:306 msgid "sent" @@ -11549,6 +11557,8 @@ msgstr "&SSL" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:143 msgid "WARNING: Using no encryption is highly insecure" msgstr "" +"ATTENTION : Ne pas utiliser de système d'encryptage présente un fort risque " +"au niveau de la sécurité" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:144 msgid "&None" From 28732ccbdbd17e7946a0cfea67bdcc9f9d50893b Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Wed, 1 Dec 2010 21:55:02 -0700 Subject: [PATCH 281/377] Fix #7424 (Formats hyperlinks are inconsistently launched) --- src/calibre/gui2/actions/show_book_details.py | 3 ++- src/calibre/gui2/dialogs/book_info.py | 8 +++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/calibre/gui2/actions/show_book_details.py b/src/calibre/gui2/actions/show_book_details.py index 18b0a694bf..67903a7d58 100644 --- a/src/calibre/gui2/actions/show_book_details.py +++ b/src/calibre/gui2/actions/show_book_details.py @@ -29,5 +29,6 @@ class ShowBookDetailsAction(InterfaceAction): return index = self.gui.library_view.currentIndex() if index.isValid(): - BookInfo(self.gui, self.gui.library_view, index).show() + BookInfo(self.gui, self.gui.library_view, index, + self.gui.iactions['View'].view_format_by_id).show() diff --git a/src/calibre/gui2/dialogs/book_info.py b/src/calibre/gui2/dialogs/book_info.py index 4cbe0ace7f..df21314712 100644 --- a/src/calibre/gui2/dialogs/book_info.py +++ b/src/calibre/gui2/dialogs/book_info.py @@ -15,12 +15,13 @@ from calibre.library.comments import comments_to_html class BookInfo(QDialog, Ui_BookInfo): - def __init__(self, parent, view, row): + def __init__(self, parent, view, row, view_func): QDialog.__init__(self, parent) Ui_BookInfo.__init__(self) self.setupUi(self) self.cover_pixmap = None self.comments.sizeHint = self.comments_size_hint + self.view_func = view_func desktop = QCoreApplication.instance().desktop() screen_height = desktop.availableGeometry().height() - 100 @@ -58,10 +59,7 @@ class BookInfo(QDialog, Ui_BookInfo): if os.sep in path: open_local_file(path) else: - path = self.view.model().db.format_abspath(self.current_row, path) - if path is not None: - open_local_file(path) - + self.view_func(self.view.model().id(self.current_row), path) def next(self): row = self.view.currentIndex().row() From 882d16ffd19db7926eb0fc2457cec1269de1f75b Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Thu, 2 Dec 2010 09:15:11 +0000 Subject: [PATCH 282/377] Make advanced_search save history --- src/calibre/gui2/search_box.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py index 1cdf622537..c85dafc6d8 100644 --- a/src/calibre/gui2/search_box.py +++ b/src/calibre/gui2/search_box.py @@ -384,7 +384,7 @@ class SearchBoxMixin(object): # {{{ def do_advanced_search(self, *args): d = SearchDialog(self, self.library_view.model().db) if d.exec_() == QDialog.Accepted: - self.search.set_search_string(d.search_string()) + self.search.set_search_string(d.search_string(), store_in_history=True) def do_search_button(self): self.search.do_search() From 6ba2d854fa5253900a61a04576ff5b91ffe78be4 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Thu, 2 Dec 2010 09:16:27 +0000 Subject: [PATCH 283/377] Fix #7740: CC ratings showing doubled on book info (and mobile browser) --- src/calibre/ebooks/metadata/book/base.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/calibre/ebooks/metadata/book/base.py b/src/calibre/ebooks/metadata/book/base.py index 125cd542b8..f0844e3711 100644 --- a/src/calibre/ebooks/metadata/book/base.py +++ b/src/calibre/ebooks/metadata/book/base.py @@ -531,6 +531,8 @@ class Metadata(object): res = format_date(res, cmeta['display'].get('date_format','dd MMM yyyy')) elif datatype == 'bool': res = _('Yes') if res else _('No') + elif datatype == 'rating': + res = res/2 return (name, unicode(res), orig_res, cmeta) # Translate aliases into the standard field name From 438e0d5305c314c55768b6f3996a7c6f45a6226d Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Thu, 2 Dec 2010 09:16:45 +0000 Subject: [PATCH 284/377] Better enum-type help text --- .../gui2/preferences/create_custom_column.py | 17 +++++++++-------- .../gui2/preferences/create_custom_column.ui | 5 ++++- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/calibre/gui2/preferences/create_custom_column.py b/src/calibre/gui2/preferences/create_custom_column.py index ff44080022..47fcb58afb 100644 --- a/src/calibre/gui2/preferences/create_custom_column.py +++ b/src/calibre/gui2/preferences/create_custom_column.py @@ -27,21 +27,21 @@ class CreateCustomColumn(QDialog, Ui_QCreateCustomColumn): 3:{'datatype':'series', 'text':_('Text column for keeping series-like information'), 'is_multiple':False}, - 4:{'datatype':'datetime', + 4:{'datatype':'enumeration', + 'text':_('Text, but with a fixed set of permitted values'), 'is_multiple':False}, + 5:{'datatype':'datetime', 'text':_('Date'), 'is_multiple':False}, - 5:{'datatype':'float', + 6:{'datatype':'float', 'text':_('Floating point numbers'), 'is_multiple':False}, - 6:{'datatype':'int', + 7:{'datatype':'int', 'text':_('Integers'), 'is_multiple':False}, - 7:{'datatype':'rating', + 8:{'datatype':'rating', 'text':_('Ratings, shown with stars'), 'is_multiple':False}, - 8:{'datatype':'bool', + 9:{'datatype':'bool', 'text':_('Yes/No'), 'is_multiple':False}, - 9:{'datatype':'composite', + 10:{'datatype':'composite', 'text':_('Column built from other columns'), 'is_multiple':False}, - 10:{'datatype':'enumeration', - 'text':_('Fixed set of text values'), 'is_multiple':False}, } def __init__(self, parent, editing, standard_colheads, standard_colnames): @@ -61,6 +61,7 @@ class CreateCustomColumn(QDialog, Ui_QCreateCustomColumn): self.editing_col = editing self.standard_colheads = standard_colheads self.standard_colnames = standard_colnames + self.column_type_box.setMaxVisibleItems(len(self.column_types)) for t in self.column_types: self.column_type_box.addItem(self.column_types[t]['text']) self.column_type_box.currentIndexChanged.connect(self.datatype_changed) diff --git a/src/calibre/gui2/preferences/create_custom_column.ui b/src/calibre/gui2/preferences/create_custom_column.ui index 3e4c6f59ca..1328f99690 100644 --- a/src/calibre/gui2/preferences/create_custom_column.ui +++ b/src/calibre/gui2/preferences/create_custom_column.ui @@ -212,7 +212,7 @@ <item> <widget class="QLineEdit" name="enum_box"> <property name="toolTip"> - <string>A comma-separated list of valid values.</string> + <string>A comma-separated list of permitted values. The empty value is always permitted</string> </property> <property name="sizePolicy"> <sizepolicy hsizetype="Maximum" vsizetype="Fixed"> @@ -227,6 +227,9 @@ <property name="text"> <string>Default: (nothing)</string> </property> + <property name="toolTip"> + <string>Note that the empty value is always permitted, but is not shown in the list</string> + </property> </widget> </item> </layout> From d744fb698b96870249a72402cc1db39d0fe81cc2 Mon Sep 17 00:00:00 2001 From: John Schember <john@nachtimwald.com> Date: Thu, 2 Dec 2010 06:54:36 -0500 Subject: [PATCH 285/377] TXT Output: change remove links to keep links and remove links by default with Markdown format output. TXT Output: Add keep image references option and remove images by default with Markdown format output. --- src/calibre/ebooks/txt/markdownml.py | 5 ++++- src/calibre/ebooks/txt/output.py | 13 +++++++++---- src/calibre/gui2/convert/txt_output.py | 2 +- src/calibre/gui2/convert/txt_output.ui | 15 +++++++++++---- 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/src/calibre/ebooks/txt/markdownml.py b/src/calibre/ebooks/txt/markdownml.py index 2ea3e7dafe..2f7960e94c 100644 --- a/src/calibre/ebooks/txt/markdownml.py +++ b/src/calibre/ebooks/txt/markdownml.py @@ -31,9 +31,12 @@ class MarkdownMLizer(object): for item in self.oeb_book.spine: self.log.debug('Converting %s to Markdown formatted TXT...' % item.href) html = unicode(etree.tostring(item.data, encoding=unicode)) - if self.opts.remove_links: + if not self.opts.keep_links: html = re.sub(r'<\s*a[^>]*>', '', html) html = re.sub(r'<\s*/\s*a\s*>', '', html) + if not self.opts.keep_image_references: + html = re.sub(r'<\s*img[^>]*>', '', html) + html = re.sub(r'<\s*img\s*>', '', html) output += html2text(html) output = u''.join(output) diff --git a/src/calibre/ebooks/txt/output.py b/src/calibre/ebooks/txt/output.py index a6f52f92ca..a6369b6f0b 100644 --- a/src/calibre/ebooks/txt/output.py +++ b/src/calibre/ebooks/txt/output.py @@ -48,11 +48,16 @@ class TXTOutput(OutputFormatPlugin): OptionRecommendation(name='markdown_format', recommended_value=False, level=OptionRecommendation.LOW, help=_('Produce Markdown formatted text.')), - OptionRecommendation(name='remove_links', + OptionRecommendation(name='keep_links', recommended_value=False, level=OptionRecommendation.LOW, - help=_('Remove links within the document. This is only ' \ - 'useful when paried with the markdown-format option because' \ - 'links are removed with plain text output.')), + help=_('Do not remove links within the document. This is only ' \ + 'useful when paired with the markdown-format option because' \ + 'links are always removed with plain text output.')), + OptionRecommendation(name='keep_image_references', + recommended_value=False, level=OptionRecommendation.LOW, + help=_('Do not remove image references within the document. This is only ' \ + 'useful when paired with the markdown-format option because' \ + 'image references are always removed with plain text output.')), ]) def convert(self, oeb_book, output_path, input_plugin, opts, log): diff --git a/src/calibre/gui2/convert/txt_output.py b/src/calibre/gui2/convert/txt_output.py index 3d35151bb8..2fafad4b43 100644 --- a/src/calibre/gui2/convert/txt_output.py +++ b/src/calibre/gui2/convert/txt_output.py @@ -21,7 +21,7 @@ class PluginWidget(Widget, Ui_Form): def __init__(self, parent, get_option, get_help, db=None, book_id=None): Widget.__init__(self, parent, ['newline', 'max_line_length', 'force_max_line_length', - 'inline_toc', 'markdown_format', 'remove_links']) + 'inline_toc', 'markdown_format', 'keep_links', 'keep_image_references']) self.db, self.book_id = db, book_id self.initialize_options(get_option, get_help, db, book_id) diff --git a/src/calibre/gui2/convert/txt_output.ui b/src/calibre/gui2/convert/txt_output.ui index 75eac8f5fc..19e4ec52a1 100644 --- a/src/calibre/gui2/convert/txt_output.ui +++ b/src/calibre/gui2/convert/txt_output.ui @@ -6,7 +6,7 @@ <rect> <x>0</x> <y>0</y> - <width>470</width> + <width>477</width> <height>300</height> </rect> </property> @@ -27,7 +27,7 @@ <item row="0" column="1"> <widget class="QComboBox" name="opt_newline"/> </item> - <item row="6" column="0"> + <item row="7" column="0"> <spacer name="verticalSpacer"> <property name="orientation"> <enum>Qt::Vertical</enum> @@ -75,9 +75,16 @@ </widget> </item> <item row="5" column="0"> - <widget class="QCheckBox" name="opt_remove_links"> + <widget class="QCheckBox" name="opt_keep_links"> <property name="text"> - <string>Remove links (<a> tags) before processing</string> + <string>Do not remove links (<a> tags) before processing</string> + </property> + </widget> + </item> + <item row="6" column="0"> + <widget class="QCheckBox" name="opt_keep_image_references"> + <property name="text"> + <string>Do not remove image references before processing</string> </property> </widget> </item> From 5cdc87fc8962a830d940db7bfbf1756feb4ccfbe Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Thu, 2 Dec 2010 12:25:16 +0000 Subject: [PATCH 286/377] Enumeration type custom columns --- src/calibre/gui2/custom_column_widgets.py | 42 +++++++++++++------ src/calibre/gui2/library/delegates.py | 12 ++++-- .../gui2/preferences/create_custom_column.ui | 4 +- src/calibre/library/custom_columns.py | 39 +++++++++++------ src/calibre/library/sqlite.py | 13 ++++++ 5 files changed, 78 insertions(+), 32 deletions(-) diff --git a/src/calibre/gui2/custom_column_widgets.py b/src/calibre/gui2/custom_column_widgets.py index 0b2065888c..b0b68033bb 100644 --- a/src/calibre/gui2/custom_column_widgets.py +++ b/src/calibre/gui2/custom_column_widgets.py @@ -15,7 +15,7 @@ from PyQt4.Qt import QComboBox, QLabel, QSpinBox, QDoubleSpinBox, QDateEdit, \ from calibre.utils.date import qt_to_dt, now from calibre.gui2.widgets import TagsLineEdit, EnComboBox -from calibre.gui2 import UNDEFINED_QDATE +from calibre.gui2 import UNDEFINED_QDATE, error_dialog from calibre.utils.config import tweaks class Base(object): @@ -313,22 +313,29 @@ class Series(Base): class Enumeration(Base): def setup_ui(self, parent): + self.parent = parent self.widgets = [QLabel('&'+self.col_metadata['name']+':', parent), QComboBox(parent)] w = self.widgets[1] vals = self.col_metadata['display']['enum_values'] - w.addItem('') for v in vals: w.addItem(v) def initialize(self, book_id): val = self.db.get_custom(book_id, num=self.col_id, index_is_id=True) if val is None: - val = '' + # This really shouldn't happen + val = self.col_metadata['display']['enum_values'][0] self.initial_val = val val = self.normalize_db_val(val) idx = self.widgets[1].findText(val) if idx < 0: + error_dialog(self.parent, '', + _('The enumeration "{0}" contains an invalid value ' + 'that will be set to the default').format( + self.col_metadata['name']), + show=True, show_copy_button=False) + idx = 0 self.widgets[1].setCurrentIndex(idx) @@ -586,20 +593,33 @@ class BulkEnumeration(BulkBase, Enumeration): def get_initial_value(self, book_ids): value = None + ret_value = None + dialog_shown = False for book_id in book_ids: val = self.db.get_custom(book_id, num=self.col_id, index_is_id=True) - if value is not None and value != val: - return ' nochange ' + if val not in self.col_metadata['display']['enum_values']: + if not dialog_shown: + error_dialog(self.parent, '', + _('The enumeration "{0}" contains invalid values ' + 'that will not appear in the list').format( + self.col_metadata['name']), + show=True, show_copy_button=False) + dialog_shown = True + ret_value = ' nochange ' + elif value is not None and value != val: + ret_value = ' nochange ' value = val - return value + if ret_value is None: + return value + return ret_value def setup_ui(self, parent): + self.parent = parent self.widgets = [QLabel('&'+self.col_metadata['name']+':', parent), QComboBox(parent)] w = self.widgets[1] vals = self.col_metadata['display']['enum_values'] w.addItem('Do Not Change') - w.addItem('') for v in vals: w.addItem(v) @@ -620,14 +640,10 @@ class BulkEnumeration(BulkBase, Enumeration): if val != self.initial_val and val != ' nochange ': self.db.set_custom_bulk(book_ids, val, num=self.col_id, notify=notify) - def normalize_ui_val(self, val): - if val == '': - return None - return val - def normalize_db_val(self, val): if val is None: - return '' + # this really shouldn't happen + val = self.col_metadata['display']['enum_values'][0] return val class RemoveTags(QWidget): diff --git a/src/calibre/gui2/library/delegates.py b/src/calibre/gui2/library/delegates.py index f5610bf849..73d722e485 100644 --- a/src/calibre/gui2/library/delegates.py +++ b/src/calibre/gui2/library/delegates.py @@ -262,9 +262,7 @@ class CcEnumDelegate(QStyledItemDelegate): # {{{ def createEditor(self, parent, option, index): m = index.model() col = m.column_map[index.column()] - print 'delegate' editor = QComboBox(parent) - editor.addItem('') for v in m.custom_columns[col]['display']['enum_values']: editor.addItem(v) return editor @@ -272,14 +270,20 @@ class CcEnumDelegate(QStyledItemDelegate): # {{{ def setModelData(self, editor, model, index): val = unicode(editor.currentText()) if val == '': - val = None + # This shouldn't happen ... + m = index.model() + col = m.column_map[index.column()] + val = m.custom_columns[col]['display']['enum_values'][0] model.setData(index, QVariant(val), Qt.EditRole) def setEditorData(self, editor, index): m = index.model() val = m.db.data[index.row()][m.custom_columns[m.column_map[index.column()]]['rec_index']] if val is None: - val = '' + # This shouldn't happen + m = index.model() + col = m.column_map[index.column()] + val = m.custom_columns[col]['display']['enum_values'][0] idx = editor.findText(val) if idx < 0: editor.setCurrentIndex(0) diff --git a/src/calibre/gui2/preferences/create_custom_column.ui b/src/calibre/gui2/preferences/create_custom_column.ui index 1328f99690..54003cd770 100644 --- a/src/calibre/gui2/preferences/create_custom_column.ui +++ b/src/calibre/gui2/preferences/create_custom_column.ui @@ -212,7 +212,7 @@ <item> <widget class="QLineEdit" name="enum_box"> <property name="toolTip"> - <string>A comma-separated list of permitted values. The empty value is always permitted</string> + <string>A comma-separated list of permitted values. The first value is the default</string> </property> <property name="sizePolicy"> <sizepolicy hsizetype="Maximum" vsizetype="Fixed"> @@ -228,7 +228,7 @@ <string>Default: (nothing)</string> </property> <property name="toolTip"> - <string>Note that the empty value is always permitted, but is not shown in the list</string> + <string>The first value entered will be the default value for this enumeration</string> </property> </widget> </item> diff --git a/src/calibre/library/custom_columns.py b/src/calibre/library/custom_columns.py index 258b18e7ff..9444746c2a 100644 --- a/src/calibre/library/custom_columns.py +++ b/src/calibre/library/custom_columns.py @@ -177,6 +177,8 @@ class CustomColumns(object): ans = ans.split('|') if ans else [] if data['display'].get('sort_alpha', False): ans.sort(cmp=lambda x,y:cmp(x.lower(), y.lower())) + elif data['datatype'] == 'enumeration' and ans is None: + ans = data['display']['enum_values'][0] return ans def get_custom_extra(self, idx, label=None, num=None, index_is_id=False): @@ -442,7 +444,6 @@ class CustomColumns(object): if data['normalized']: if data['datatype'] == 'enumeration' and \ val not in data['display']['enum_values']: - print 'attempt to set enum to', val return None if not append or not data['is_multiple']: self.conn.execute('DELETE FROM %s WHERE book=?'%lt, (id_,)) @@ -524,18 +525,30 @@ class CustomColumns(object): display = data['display'] table, lt = self.custom_table_names(data['num']) if data['normalized']: - query = '%s.value' - if data['is_multiple']: - query = 'group_concat(%s.value, "|")' - if not display.get('sort_alpha', False): - query = 'sort_concat(link.id, %s.value)' - line = '''(SELECT {query} FROM {lt} AS link INNER JOIN - {table} ON(link.value={table}.id) WHERE link.book=books.id) - custom_{num} - '''.format(query=query%table, lt=lt, table=table, num=data['num']) - if data['datatype'] == 'series': - line += ''',(SELECT extra FROM {lt} WHERE {lt}.book=books.id) - custom_index_{num}'''.format(lt=lt, num=data['num']) + if data['datatype'] == 'enumeration': + query = '%s.value' + line = ''' + val_for_enum(\' + SELECT {table}.value FROM {lt} + AS link INNER JOIN {table} ON(link.value={table}.id) + WHERE link.book=?\', + \'{default}\', books.id) custom_{num} + '''.format(lt=lt, table=table, + default=data['display']['enum_values'][0], + num=data['num']) + else: + query = '%s.value' + if data['is_multiple']: + query = 'group_concat(%s.value, "|")' + if not display.get('sort_alpha', False): + query = 'sort_concat(link.id, %s.value)' + line = '''(SELECT {query} FROM {lt} AS link INNER JOIN + {table} ON(link.value={table}.id) WHERE link.book=books.id) + custom_{num} + '''.format(query=query%table, lt=lt, table=table, num=data['num']) + if data['datatype'] == 'series': + line += ''',(SELECT extra FROM {lt} WHERE {lt}.book=books.id) + custom_index_{num}'''.format(lt=lt, num=data['num']) else: line = ''' (SELECT value FROM {table} WHERE book=books.id) custom_{num} diff --git a/src/calibre/library/sqlite.py b/src/calibre/library/sqlite.py index 8aa76b2643..9682bd7ec6 100644 --- a/src/calibre/library/sqlite.py +++ b/src/calibre/library/sqlite.py @@ -115,6 +115,17 @@ def pynocase(one, two, encoding='utf-8'): pass return cmp(one.lower(), two.lower()) +def enum_col_value(select, def_val, id, conn=None): + try: + v = conn.get(select, (id,), all=False) + if v is None: + v = def_val + except Exception, e: + if DEBUG: + print 'enum_col_value failed' + print e + v = def_val + return v def load_c_extensions(conn, debug=DEBUG): try: @@ -165,6 +176,8 @@ class DBThread(Thread): self.conn.create_function('author_to_author_sort', 1, _author_to_author_sort) self.conn.create_function('uuid4', 0, lambda : str(uuid.uuid4())) + self.conn.create_function('val_for_enum', 3, + partial(enum_col_value, conn=self.conn)) # Dummy functions for dynamically created filters self.conn.create_function('books_list_filter', 1, lambda x: 1) From 8032890d0f352034b95bdf0482fbbf34b1d9f22d Mon Sep 17 00:00:00 2001 From: John Schember <john@nachtimwald.com> Date: Thu, 2 Dec 2010 07:37:38 -0500 Subject: [PATCH 287/377] TXT Output: Markdown output, ensure separation between sections. --- src/calibre/ebooks/txt/markdownml.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/calibre/ebooks/txt/markdownml.py b/src/calibre/ebooks/txt/markdownml.py index 2f7960e94c..116561f355 100644 --- a/src/calibre/ebooks/txt/markdownml.py +++ b/src/calibre/ebooks/txt/markdownml.py @@ -28,16 +28,36 @@ class MarkdownMLizer(object): def mlize_spine(self): output = [u''] + for item in self.oeb_book.spine: self.log.debug('Converting %s to Markdown formatted TXT...' % item.href) + html = unicode(etree.tostring(item.data, encoding=unicode)) + if not self.opts.keep_links: html = re.sub(r'<\s*a[^>]*>', '', html) html = re.sub(r'<\s*/\s*a\s*>', '', html) if not self.opts.keep_image_references: html = re.sub(r'<\s*img[^>]*>', '', html) html = re.sub(r'<\s*img\s*>', '', html) - output += html2text(html) + + text = html2text(html) + + # Ensure the section ends with at least two new line characters. + # This is to prevent the last paragraph from a section being + # combined into the fist paragraph of the next. + end_chars = text[-4:] + # Convert all newlines to \n + end_chars = end_chars.replace('\r\n', '\n') + end_chars = end_chars.replace('\r', '\n') + end_chars = end_chars[-2:] + if not end_chars[1] == '\n': + text += '\n\n' + if end_chars[1] == '\n' and not end_chars[0] == '\n': + text += '\n' + + output += text + output = u''.join(output) return output From da750b141071dab819145610a23d302181ac8ec8 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Thu, 2 Dec 2010 14:07:39 +0000 Subject: [PATCH 288/377] Some random changes: 1) added a 'count' function to the template language 2) changed the template language faq 3) made author_sort searchable 4) improved the help in calibredb create_custom_column --- src/calibre/library/cli.py | 6 ++++-- src/calibre/library/field_metadata.py | 2 +- src/calibre/manual/template_lang.rst | 5 +++-- src/calibre/utils/formatter.py | 13 +++++++++++-- 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/calibre/library/cli.py b/src/calibre/library/cli.py index 747cd59abb..5049476226 100644 --- a/src/calibre/library/cli.py +++ b/src/calibre/library/cli.py @@ -565,8 +565,9 @@ datatype is one of: {0} 'applies if datatype is text.')) parser.add_option('--display', default='{}', help=_('A dictionary of options to customize how ' - 'the data in this column will be interpreted.')) - + 'the data in this column will be interpreted. This is a JSON ' + ' string. For enumeration columns, use ' + '--display=\'{"enum_values":["val1", "val2"]}\'')) return parser @@ -579,6 +580,7 @@ def command_add_custom_column(args, dbpath): print print >>sys.stderr, _('You must specify label, name and datatype') return 1 + print opts.display do_add_custom_column(get_db(dbpath, opts), args[0], args[1], args[2], opts.is_multiple, json.loads(opts.display)) # Re-open the DB so that field_metadata is reflects the column changes diff --git a/src/calibre/library/field_metadata.py b/src/calibre/library/field_metadata.py index f5a156d3a7..1be6604d5d 100644 --- a/src/calibre/library/field_metadata.py +++ b/src/calibre/library/field_metadata.py @@ -177,7 +177,7 @@ class FieldMetadata(dict): 'is_multiple':None, 'kind':'field', 'name':None, - 'search_terms':[], + 'search_terms':['author_sort'], 'is_custom':False, 'is_category':False}), ('comments', {'table':None, diff --git a/src/calibre/manual/template_lang.rst b/src/calibre/manual/template_lang.rst index e1eb876cb7..1bef32fbd6 100644 --- a/src/calibre/manual/template_lang.rst +++ b/src/calibre/manual/template_lang.rst @@ -119,10 +119,11 @@ The functions available are: * ``ifempty(text)`` -- if the field is not empty, return the value of the field. Otherwise return `text`. * ``test(text if not empty, text if empty)`` -- return `text if not empty` if the field is not empty, otherwise return `text if empty`. * ``contains(pattern, text if match, text if not match`` -- checks if field contains matches for the regular expression `pattern`. Returns `text if match` if matches are found, otherwise it returns `text if no match`. - * ``switch(pattern, value, pattern, value, ..., else_value)`` -- for each ``pattern, value`` pair, checks if the field matches the regular expression ``pattern`` and if so, returns that ``value``. If no ``pattern`` matches, then ``else_value`` is returned. You can have as many ``pattern, value`` pairs as you want. + * ``count(separator)`` -- interprets the value as a list of items separated by `separator`, returning the number of items in the list. Most lists use a comma as the separator, but authors uses an ampersand. Examples: `{tags:count(,)}`, `{authors:count(&)}` + * ``lookup(pattern, field, pattern, field, ..., else_field)`` -- like switch, except the arguments are field (metadata) names, not text. The value of the appropriate field will be fetched and used. Note that because composite columns are fields, you can use this function in one composite field to use the value of some other composite field. This is extremely useful when constructing variable save paths (more later). * ``re(pattern, replacement)`` -- return the field after applying the regular expression. All instances of `pattern` are replaced with `replacement`. As in all of |app|, these are python-compatible regular expressions. * ``shorten(left chars, middle text, right chars)`` -- Return a shortened version of the field, consisting of `left chars` characters from the beginning of the field, followed by `middle text`, followed by `right chars` characters from the end of the string. `Left chars` and `right chars` must be integers. For example, assume the title of the book is `Ancient English Laws in the Times of Ivanhoe`, and you want it to fit in a space of at most 15 characters. If you use ``{title:shorten(9,-,5)}``, the result will be `Ancient E-nhoe`. If the field's length is less than ``left chars`` + ``right chars`` + the length of ``middle text``, then the field will be used intact. For example, the title `The Dome` would not be changed. - * ``lookup(pattern, field, pattern, field, ..., else_field)`` -- like switch, except the arguments are field (metadata) names, not text. The value of the appropriate field will be fetched and used. Note that because composite columns are fields, you can use this function in one composite field to use the value of some other composite field. This is extremely useful when constructing variable save paths (more later). + * ``switch(pattern, value, pattern, value, ..., else_value)`` -- for each ``pattern, value`` pair, checks if the field matches the regular expression ``pattern`` and if so, returns that ``value``. If no ``pattern`` matches, then ``else_value`` is returned. You can have as many ``pattern, value`` pairs as you want. Now, about using functions and formatting in the same field. Suppose you have an integer custom column called ``#myint`` that you want to see with leading zeros, as in ``003``. To do this, you would use a format of ``0>3s``. However, by default, if a number (integer or float) equals zero then the field produces the empty value, so zero values will produce nothing, not ``000``. If you really want to see ``000`` values, then you use both the format string and the ``ifempty`` function to change the empty value back to a zero. The field reference would be:: diff --git a/src/calibre/utils/formatter.py b/src/calibre/utils/formatter.py index 336ac2390b..15534a9c8a 100644 --- a/src/calibre/utils/formatter.py +++ b/src/calibre/utils/formatter.py @@ -79,6 +79,9 @@ class TemplateFormatter(string.Formatter): else: return val + def _count(self, val, sep): + return unicode(len(val.split(sep))) + functions = { 'uppercase' : (0, lambda s,x: x.upper()), 'lowercase' : (0, lambda s,x: x.lower()), @@ -91,6 +94,7 @@ class TemplateFormatter(string.Formatter): 'shorten' : (3, _shorten), 'switch' : (-1, _switch), 'test' : (2, _test), + 'count' : (1, _count), } format_string_re = re.compile(r'^(.*)\|(.*)\|(.*)$') @@ -136,8 +140,13 @@ class TemplateFormatter(string.Formatter): if fmt[colon:p] in self.functions: field = fmt[colon:p] func = self.functions[field] - args = self.arg_parser.scan(fmt[p+1:])[0] - args = [self.backslash_comma_to_comma.sub(',', a) for a in args] + if func[0] == 1: + # only one arg expected. Don't bother to scan. Avoids need + # for escaping characters + args = [fmt[p+1:-1]] + else: + args = self.arg_parser.scan(fmt[p+1:])[0] + args = [self.backslash_comma_to_comma.sub(',', a) for a in args] if (func[0] == 0 and (len(args) != 1 or args[0])) or \ (func[0] > 0 and func[0] != len(args)): raise ValueError('Incorrect number of arguments for function '+ fmt[0:p]) From 9c025f4736d477b8478ae0684dff8aeeca41fe4c Mon Sep 17 00:00:00 2001 From: Hiroshi Miura <miurahr@linux.com> Date: Fri, 3 Dec 2010 00:43:59 +0900 Subject: [PATCH 289/377] recipe: fix japanese recipes - mainichi news: handle ad pages - yomiuri: remove table tag - nikkei life: reduce feeds --- resources/recipes/mainichi.recipe | 16 ++++++++++++++++ resources/recipes/mainichi_it_news.recipe | 16 +++++++++++++++- resources/recipes/nikkei_sub_life.recipe | 5 +---- resources/recipes/yomiuri.recipe | 2 +- resources/recipes/yomiuri_world.recipe | 2 +- 5 files changed, 34 insertions(+), 7 deletions(-) diff --git a/resources/recipes/mainichi.recipe b/resources/recipes/mainichi.recipe index 2a44fa0980..baa7f409ec 100644 --- a/resources/recipes/mainichi.recipe +++ b/resources/recipes/mainichi.recipe @@ -4,6 +4,7 @@ __copyright__ = '2010, Hiroshi Miura <miurahr@linux.com>' www.mainichi.jp ''' +import re from calibre.web.feeds.news import BasicNewsRecipe class MainichiDailyNews(BasicNewsRecipe): @@ -22,3 +23,18 @@ class MainichiDailyNews(BasicNewsRecipe): remove_tags = [{'class':"RelatedArticle"}] remove_tags_after = {'class':"Credit"} + def parse_feeds(self): + + feeds = BasicNewsRecipe.parse_feeds(self) + + for curfeed in feeds: + delList = [] + for a,curarticle in enumerate(curfeed.articles): + if re.search(r'pheedo.jp', curarticle.url): + delList.append(curarticle) + if len(delList)>0: + for d in delList: + index = curfeed.articles.index(d) + curfeed.articles[index:index+1] = [] + + return feeds diff --git a/resources/recipes/mainichi_it_news.recipe b/resources/recipes/mainichi_it_news.recipe index 8e15496e57..4c285a2c01 100644 --- a/resources/recipes/mainichi_it_news.recipe +++ b/resources/recipes/mainichi_it_news.recipe @@ -14,5 +14,19 @@ class MainichiDailyITNews(BasicNewsRecipe): remove_tags_before = {'class':"NewsTitle"} remove_tags = [{'class':"RelatedArticle"}] - remove_tags_after = {'class':"Credit"} + def parse_feeds(self): + + feeds = BasicNewsRecipe.parse_feeds(self) + + for curfeed in feeds: + delList = [] + for a,curarticle in enumerate(curfeed.articles): + if re.search(r'pheedo.jp', curarticle.url): + delList.append(curarticle) + if len(delList)>0: + for d in delList: + index = curfeed.articles.index(d) + curfeed.articles[index:index+1] = [] + + return feeds remove_tags_after = {'class':"Credit"} diff --git a/resources/recipes/nikkei_sub_life.recipe b/resources/recipes/nikkei_sub_life.recipe index 1bfa08a55f..60e5b170ca 100644 --- a/resources/recipes/nikkei_sub_life.recipe +++ b/resources/recipes/nikkei_sub_life.recipe @@ -32,12 +32,9 @@ class NikkeiNet_sub_life(BasicNewsRecipe): remove_tags_after = {'class':"cmn-pr_list"} feeds = [ (u'\u304f\u3089\u3057', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=kurashi'), - (u'\u30b9\u30dd\u30fc\u30c4', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=sports'), - (u'\u793e\u4f1a', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=shakai'), (u'\u30a8\u30b3', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=eco'), (u'\u5065\u5eb7', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=kenkou'), - (u'\u7279\u96c6', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=special'), - (u'\u30e9\u30f3\u30ad\u30f3\u30b0', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=ranking') + (u'\u7279\u96c6', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=special') ] def get_browser(self): diff --git a/resources/recipes/yomiuri.recipe b/resources/recipes/yomiuri.recipe index d30aa9066f..fb17bb1210 100644 --- a/resources/recipes/yomiuri.recipe +++ b/resources/recipes/yomiuri.recipe @@ -21,7 +21,7 @@ class YOLNews(BasicNewsRecipe): remove_javascript = True masthead_title = u'YOMIURI ONLINE' - remove_tags_before = {'class':"article-def"} + keep_only_tags = [{'class':"article-def"}] remove_tags = [{'class':"RelatedArticle"}, {'class':"sbtns"} ] diff --git a/resources/recipes/yomiuri_world.recipe b/resources/recipes/yomiuri_world.recipe index f5f21c4aab..41ee4fd23d 100644 --- a/resources/recipes/yomiuri_world.recipe +++ b/resources/recipes/yomiuri_world.recipe @@ -21,7 +21,7 @@ class YOLNews(BasicNewsRecipe): remove_javascript = True masthead_title = u"YOMIURI ONLINE" - remove_tags_before = {'class':"article-def"} + keep_only_tags = [{'class':"article-def"}] remove_tags = [{'class':"RelatedArticle"}, {'class':"sbtns"} ] From 6173ff8c591f5205555758a5cc94dc0b8a44eb94 Mon Sep 17 00:00:00 2001 From: Hiroshi Miura <miurahr@linux.com> Date: Fri, 3 Dec 2010 00:46:25 +0900 Subject: [PATCH 290/377] recipe: add nikkei news about social --- resources/recipes/nikkei_sub_shakai.recipe | 102 +++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 resources/recipes/nikkei_sub_shakai.recipe diff --git a/resources/recipes/nikkei_sub_shakai.recipe b/resources/recipes/nikkei_sub_shakai.recipe new file mode 100644 index 0000000000..ed86493265 --- /dev/null +++ b/resources/recipes/nikkei_sub_shakai.recipe @@ -0,0 +1,102 @@ +__license__ = 'GPL v3' +__copyright__ = '2010, Hiroshi Miura <miurahr@linux.com>' +''' +www.nikkei.com +''' + +import re +from calibre.web.feeds.recipes import BasicNewsRecipe +import mechanize +from calibre.ptempfile import PersistentTemporaryFile + + +class NikkeiNet_sub_life(BasicNewsRecipe): + title = u'\u65e5\u7d4c\u65b0\u805e\u96fb\u5b50\u7248(\u751f\u6d3b)' + __author__ = 'Hiroshi Miura' + description = 'News and current market affairs from Japan' + cover_url = 'http://parts.nikkei.com/parts/ds/images/common/logo_r1.svg' + masthead_url = 'http://parts.nikkei.com/parts/ds/images/common/logo_r1.svg' + needs_subscription = True + oldest_article = 2 + max_articles_per_feed = 20 + language = 'ja' + remove_javascript = False + temp_files = [] + + remove_tags_before = {'class':"cmn-section cmn-indent"} + remove_tags = [ + {'class':"JSID_basePageMove JSID_baseAsyncSubmit cmn-form_area JSID_optForm_utoken"}, + {'class':"cmn-article_keyword cmn-clearfix"}, + {'class':"cmn-print_headline cmn-clearfix"}, + ] + remove_tags_after = {'class':"cmn-pr_list"} + + feeds = [ + (u'\u793e\u4f1a', u'http://www.zou3.net/php/rss/nikkei2rss.php?head=shakai') + ] + + def get_browser(self): + br = BasicNewsRecipe.get_browser() + + cj = mechanize.LWPCookieJar() + br.set_cookiejar(cj) + + #br.set_debug_http(True) + #br.set_debug_redirects(True) + #br.set_debug_responses(True) + + if self.username is not None and self.password is not None: + #print "----------------------------get login form--------------------------------------------" + # open login form + br.open('https://id.nikkei.com/lounge/nl/base/LA0010.seam') + response = br.response() + #print "----------------------------get login form---------------------------------------------" + #print "----------------------------set login form---------------------------------------------" + # remove disabled input which brings error on mechanize + response.set_data(response.get_data().replace("<input id=\"j_id48\"", "<!-- ")) + response.set_data(response.get_data().replace("gm_home_on.gif\" />", " -->")) + br.set_response(response) + br.select_form(name='LA0010Form01') + br['LA0010Form01:LA0010Email'] = self.username + br['LA0010Form01:LA0010Password'] = self.password + br.form.find_control(id='LA0010Form01:LA0010AutoLoginOn',type="checkbox").get(nr=0).selected = True + br.submit() + br.response() + #print "----------------------------send login form---------------------------------------------" + #print "----------------------------open news main page-----------------------------------------" + # open news site + br.open('http://www.nikkei.com/') + br.response() + #print "----------------------------www.nikkei.com BODY --------------------------------------" + #print response2.get_data() + #print "-------------------------^^-got auto redirect form----^^--------------------------------" + # forced redirect in default + br.select_form(nr=0) + br.submit() + response3 = br.response() + # return some cookie which should be set by Javascript + #print response3.geturl() + raw = response3.get_data() + #print "---------------------------response to form --------------------------------------------" + # grab cookie from JS and set it + redirectflag = re.search(r"var checkValue = '(\d+)';", raw, re.M).group(1) + br.select_form(nr=0) + + self.temp_files.append(PersistentTemporaryFile('_fa.html')) + self.temp_files[-1].write("#LWP-Cookies-2.0\n") + + self.temp_files[-1].write("Set-Cookie3: Cookie-dummy=Cookie-value; domain=\".nikkei.com\"; path=\"/\"; path_spec; secure; expires=\"2029-12-21 05:07:59Z\"; version=0\n") + self.temp_files[-1].write("Set-Cookie3: redirectFlag="+redirectflag+"; domain=\".nikkei.com\"; path=\"/\"; path_spec; secure; expires=\"2029-12-21 05:07:59Z\"; version=0\n") + self.temp_files[-1].close() + cj.load(self.temp_files[-1].name) + + br.submit() + + #br.set_debug_http(False) + #br.set_debug_redirects(False) + #br.set_debug_responses(False) + return br + + + + From ac23ca750309ce5802cde2ab2c8f789506027235 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Thu, 2 Dec 2010 09:07:23 -0700 Subject: [PATCH 291/377] Poughkeepsie Journal by weebl --- resources/recipes/poughkeepsie_journal.recipe | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 resources/recipes/poughkeepsie_journal.recipe diff --git a/resources/recipes/poughkeepsie_journal.recipe b/resources/recipes/poughkeepsie_journal.recipe new file mode 100644 index 0000000000..2fa5c1951b --- /dev/null +++ b/resources/recipes/poughkeepsie_journal.recipe @@ -0,0 +1,19 @@ +from calibre.web.feeds.news import BasicNewsRecipe + +class AdvancedUserRecipe1291143841(BasicNewsRecipe): + title = u'Poughkeepsipe Journal' + language = 'en' + __author__ = 'weebl' + oldest_article = 7 + max_articles_per_feed = 100 + no_stylesheets = True + timefmt = ' [%a, %d %b, %Y]' + feeds = [(u'Local News', u'http://poughkeepsiejournal.com/apps/pbcs.dll/oversikt?Category=RSS01&mime=xml'), + (u'Local Business', u'http://poughkeepsiejournal.com/apps/pbcs.dll/oversikt?Category=RSS02&mime=xml'), + (u'Local Sports', u'http://poughkeepsiejournal.com/apps/pbcs.dll/oversikt?Category=RSS03&mime=xml'), + (u'Life', u'http://poughkeepsiejournal.com/apps/pbcs.dll/oversikt?Category=RSS04&mime=xml')] + remove_tags = [dict(name='img', attrs={'src':'/graphics/mastlogo.gif'})] + + def print_version(self, url): + return url.replace('http://www.poughkeepsiejournal.com', 'http://www.poughkeepsiejournal.com/print') + From b7518b0b4e2c980be583a9aa25423fffea2177f0 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Thu, 2 Dec 2010 09:12:03 -0700 Subject: [PATCH 292/377] Fix #7740 (Star count from added columns doubled in book detatils block). Also store queries generated by the advanced search dialog in the search history --- src/calibre/ebooks/metadata/book/base.py | 2 ++ src/calibre/gui2/search_box.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/calibre/ebooks/metadata/book/base.py b/src/calibre/ebooks/metadata/book/base.py index 125cd542b8..f0844e3711 100644 --- a/src/calibre/ebooks/metadata/book/base.py +++ b/src/calibre/ebooks/metadata/book/base.py @@ -531,6 +531,8 @@ class Metadata(object): res = format_date(res, cmeta['display'].get('date_format','dd MMM yyyy')) elif datatype == 'bool': res = _('Yes') if res else _('No') + elif datatype == 'rating': + res = res/2 return (name, unicode(res), orig_res, cmeta) # Translate aliases into the standard field name diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py index 1cdf622537..c85dafc6d8 100644 --- a/src/calibre/gui2/search_box.py +++ b/src/calibre/gui2/search_box.py @@ -384,7 +384,7 @@ class SearchBoxMixin(object): # {{{ def do_advanced_search(self, *args): d = SearchDialog(self, self.library_view.model().db) if d.exec_() == QDialog.Accepted: - self.search.set_search_string(d.search_string()) + self.search.set_search_string(d.search_string(), store_in_history=True) def do_search_button(self): self.search.do_search() From 3b71c89655aacc563e85823b7b0fada24e755042 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Thu, 2 Dec 2010 09:15:34 -0700 Subject: [PATCH 293/377] Add a count function to the template language. Make author_sort searchable. --- src/calibre/library/cli.py | 5 +++-- src/calibre/library/field_metadata.py | 2 +- src/calibre/manual/template_lang.rst | 5 +++-- src/calibre/utils/formatter.py | 13 +++++++++++-- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/calibre/library/cli.py b/src/calibre/library/cli.py index 747cd59abb..01e8ad449b 100644 --- a/src/calibre/library/cli.py +++ b/src/calibre/library/cli.py @@ -565,8 +565,9 @@ datatype is one of: {0} 'applies if datatype is text.')) parser.add_option('--display', default='{}', help=_('A dictionary of options to customize how ' - 'the data in this column will be interpreted.')) - + 'the data in this column will be interpreted. This is a JSON ' + ' string. For enumeration columns, use ' + '--display=\'{"enum_values":["val1", "val2"]}\'')) return parser diff --git a/src/calibre/library/field_metadata.py b/src/calibre/library/field_metadata.py index d10dc5da71..9217aca566 100644 --- a/src/calibre/library/field_metadata.py +++ b/src/calibre/library/field_metadata.py @@ -177,7 +177,7 @@ class FieldMetadata(dict): 'is_multiple':None, 'kind':'field', 'name':None, - 'search_terms':[], + 'search_terms':['author_sort'], 'is_custom':False, 'is_category':False}), ('comments', {'table':None, diff --git a/src/calibre/manual/template_lang.rst b/src/calibre/manual/template_lang.rst index e1eb876cb7..1bef32fbd6 100644 --- a/src/calibre/manual/template_lang.rst +++ b/src/calibre/manual/template_lang.rst @@ -119,10 +119,11 @@ The functions available are: * ``ifempty(text)`` -- if the field is not empty, return the value of the field. Otherwise return `text`. * ``test(text if not empty, text if empty)`` -- return `text if not empty` if the field is not empty, otherwise return `text if empty`. * ``contains(pattern, text if match, text if not match`` -- checks if field contains matches for the regular expression `pattern`. Returns `text if match` if matches are found, otherwise it returns `text if no match`. - * ``switch(pattern, value, pattern, value, ..., else_value)`` -- for each ``pattern, value`` pair, checks if the field matches the regular expression ``pattern`` and if so, returns that ``value``. If no ``pattern`` matches, then ``else_value`` is returned. You can have as many ``pattern, value`` pairs as you want. + * ``count(separator)`` -- interprets the value as a list of items separated by `separator`, returning the number of items in the list. Most lists use a comma as the separator, but authors uses an ampersand. Examples: `{tags:count(,)}`, `{authors:count(&)}` + * ``lookup(pattern, field, pattern, field, ..., else_field)`` -- like switch, except the arguments are field (metadata) names, not text. The value of the appropriate field will be fetched and used. Note that because composite columns are fields, you can use this function in one composite field to use the value of some other composite field. This is extremely useful when constructing variable save paths (more later). * ``re(pattern, replacement)`` -- return the field after applying the regular expression. All instances of `pattern` are replaced with `replacement`. As in all of |app|, these are python-compatible regular expressions. * ``shorten(left chars, middle text, right chars)`` -- Return a shortened version of the field, consisting of `left chars` characters from the beginning of the field, followed by `middle text`, followed by `right chars` characters from the end of the string. `Left chars` and `right chars` must be integers. For example, assume the title of the book is `Ancient English Laws in the Times of Ivanhoe`, and you want it to fit in a space of at most 15 characters. If you use ``{title:shorten(9,-,5)}``, the result will be `Ancient E-nhoe`. If the field's length is less than ``left chars`` + ``right chars`` + the length of ``middle text``, then the field will be used intact. For example, the title `The Dome` would not be changed. - * ``lookup(pattern, field, pattern, field, ..., else_field)`` -- like switch, except the arguments are field (metadata) names, not text. The value of the appropriate field will be fetched and used. Note that because composite columns are fields, you can use this function in one composite field to use the value of some other composite field. This is extremely useful when constructing variable save paths (more later). + * ``switch(pattern, value, pattern, value, ..., else_value)`` -- for each ``pattern, value`` pair, checks if the field matches the regular expression ``pattern`` and if so, returns that ``value``. If no ``pattern`` matches, then ``else_value`` is returned. You can have as many ``pattern, value`` pairs as you want. Now, about using functions and formatting in the same field. Suppose you have an integer custom column called ``#myint`` that you want to see with leading zeros, as in ``003``. To do this, you would use a format of ``0>3s``. However, by default, if a number (integer or float) equals zero then the field produces the empty value, so zero values will produce nothing, not ``000``. If you really want to see ``000`` values, then you use both the format string and the ``ifempty`` function to change the empty value back to a zero. The field reference would be:: diff --git a/src/calibre/utils/formatter.py b/src/calibre/utils/formatter.py index 336ac2390b..15534a9c8a 100644 --- a/src/calibre/utils/formatter.py +++ b/src/calibre/utils/formatter.py @@ -79,6 +79,9 @@ class TemplateFormatter(string.Formatter): else: return val + def _count(self, val, sep): + return unicode(len(val.split(sep))) + functions = { 'uppercase' : (0, lambda s,x: x.upper()), 'lowercase' : (0, lambda s,x: x.lower()), @@ -91,6 +94,7 @@ class TemplateFormatter(string.Formatter): 'shorten' : (3, _shorten), 'switch' : (-1, _switch), 'test' : (2, _test), + 'count' : (1, _count), } format_string_re = re.compile(r'^(.*)\|(.*)\|(.*)$') @@ -136,8 +140,13 @@ class TemplateFormatter(string.Formatter): if fmt[colon:p] in self.functions: field = fmt[colon:p] func = self.functions[field] - args = self.arg_parser.scan(fmt[p+1:])[0] - args = [self.backslash_comma_to_comma.sub(',', a) for a in args] + if func[0] == 1: + # only one arg expected. Don't bother to scan. Avoids need + # for escaping characters + args = [fmt[p+1:-1]] + else: + args = self.arg_parser.scan(fmt[p+1:])[0] + args = [self.backslash_comma_to_comma.sub(',', a) for a in args] if (func[0] == 0 and (len(args) != 1 or args[0])) or \ (func[0] > 0 and func[0] != len(args)): raise ValueError('Incorrect number of arguments for function '+ fmt[0:p]) From 46614c19e0feded0aad7f3fd39aa5730c8be8af4 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Thu, 2 Dec 2010 16:19:09 +0000 Subject: [PATCH 294/377] Fixes to allow an empty value in an enum --- src/calibre/gui2/library/delegates.py | 7 ++++--- src/calibre/gui2/library/models.py | 6 ++++-- src/calibre/gui2/preferences/create_custom_column.py | 8 ++++++-- src/calibre/gui2/preferences/create_custom_column.ui | 5 ++++- src/calibre/library/cli.py | 1 - 5 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/calibre/gui2/library/delegates.py b/src/calibre/gui2/library/delegates.py index 73d722e485..bb73a55fc9 100644 --- a/src/calibre/gui2/library/delegates.py +++ b/src/calibre/gui2/library/delegates.py @@ -269,10 +269,11 @@ class CcEnumDelegate(QStyledItemDelegate): # {{{ def setModelData(self, editor, model, index): val = unicode(editor.currentText()) - if val == '': + m = index.model() + col = m.column_map[index.column()] + if val not in m.custom_columns[col]['display']['enum_values']: # This shouldn't happen ... - m = index.model() - col = m.column_map[index.column()] + print 'shouldnt happen' val = m.custom_columns[col]['display']['enum_values'][0] model.setData(index, QVariant(val), Qt.EditRole) diff --git a/src/calibre/gui2/library/models.py b/src/calibre/gui2/library/models.py index 99639ed0a7..bee90fc44c 100644 --- a/src/calibre/gui2/library/models.py +++ b/src/calibre/gui2/library/models.py @@ -719,10 +719,12 @@ class BooksModel(QAbstractTableModel): # {{{ typ = cc['datatype'] label=self.db.field_metadata.key_to_label(colhead) s_index = None - if typ in ('text', 'comments', 'enumeration'): + if typ in ('text', 'comments'): val = unicode(value.toString()).strip() val = val if val else None - if typ == 'bool': + elif typ == 'enumeration': + val = unicode(value.toString()).strip() + elif typ == 'bool': val = value.toPyObject() elif typ == 'rating': val = value.toInt()[0] diff --git a/src/calibre/gui2/preferences/create_custom_column.py b/src/calibre/gui2/preferences/create_custom_column.py index 47fcb58afb..419fed046d 100644 --- a/src/calibre/gui2/preferences/create_custom_column.py +++ b/src/calibre/gui2/preferences/create_custom_column.py @@ -166,8 +166,12 @@ class CreateCustomColumn(QDialog, Ui_QCreateCustomColumn): if not self.enum_box.text(): return self.simple_error('', _('You must enter at least one' ' value for enumeration columns')) - display_dict = {'enum_values': - [v.strip() for v in unicode(self.enum_box.text()).split(',')]} + l = [v.strip() for v in unicode(self.enum_box.text()).split(',')] + for i in range(0, len(l)-1): + if l[i] in l[i+1:]: + return self.simple_error('', _('The value "{0}" is in the ' + 'list more than once').format(l[i])) + display_dict = {'enum_values': l} db = self.parent.gui.library_view.model().db key = db.field_metadata.custom_field_prefix+col diff --git a/src/calibre/gui2/preferences/create_custom_column.ui b/src/calibre/gui2/preferences/create_custom_column.ui index 54003cd770..360c1a4345 100644 --- a/src/calibre/gui2/preferences/create_custom_column.ui +++ b/src/calibre/gui2/preferences/create_custom_column.ui @@ -212,7 +212,10 @@ <item> <widget class="QLineEdit" name="enum_box"> <property name="toolTip"> - <string>A comma-separated list of permitted values. The first value is the default</string> + <string>A comma-separated list of permitted values. You can specify +empty values by entering only the comma. For example, the list +',one,two,three' has 4 valid values, one of them empty. The first +value in the list is the default.</string> </property> <property name="sizePolicy"> <sizepolicy hsizetype="Maximum" vsizetype="Fixed"> diff --git a/src/calibre/library/cli.py b/src/calibre/library/cli.py index 5049476226..01e8ad449b 100644 --- a/src/calibre/library/cli.py +++ b/src/calibre/library/cli.py @@ -580,7 +580,6 @@ def command_add_custom_column(args, dbpath): print print >>sys.stderr, _('You must specify label, name and datatype') return 1 - print opts.display do_add_custom_column(get_db(dbpath, opts), args[0], args[1], args[2], opts.is_multiple, json.loads(opts.display)) # Re-open the DB so that field_metadata is reflects the column changes From d3aacc01d563c0eed79ab00fdafca2c3c439a33f Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Thu, 2 Dec 2010 09:29:30 -0700 Subject: [PATCH 295/377] ... --- resources/recipes/nin.recipe | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/resources/recipes/nin.recipe b/resources/recipes/nin.recipe index 27942f7d43..66dd58330e 100644 --- a/resources/recipes/nin.recipe +++ b/resources/recipes/nin.recipe @@ -8,8 +8,8 @@ www.nin.co.rs import re from calibre import strftime from calibre.web.feeds.news import BasicNewsRecipe -from contextlib import nested, closing -from calibre.ebooks.BeautifulSoup import BeautifulSoup, NavigableString, CData, Tag +from contextlib import closing +from calibre.ebooks.BeautifulSoup import BeautifulSoup from calibre import entity_to_unicode class Nin(BasicNewsRecipe): @@ -29,14 +29,14 @@ class Nin(BasicNewsRecipe): use_embedded_content = False language = 'sr' publication_type = 'magazine' - extra_css = """ + extra_css = """ @font-face {font-family: "sans1";src:url(res:///opt/sony/ebook/FONT/tt0003m_.ttf)} - body{font-family: Verdana, Lucida, sans1, sans-serif} - .article_description{font-family: Verdana, Lucida, sans1, sans-serif} - .artTitle{font-size: x-large; font-weight: bold; color: #900} - .izjava{font-size: x-large; font-weight: bold} - .columnhead{font-size: small; font-weight: bold;} - img{margin-top:0.5em; margin-bottom: 0.7em; display: block} + body{font-family: Verdana, Lucida, sans1, sans-serif} + .article_description{font-family: Verdana, Lucida, sans1, sans-serif} + .artTitle{font-size: x-large; font-weight: bold; color: #900} + .izjava{font-size: x-large; font-weight: bold} + .columnhead{font-size: small; font-weight: bold;} + img{margin-top:0.5em; margin-bottom: 0.7em; display: block} b{margin-top: 1em} """ @@ -148,4 +148,4 @@ class Nin(BasicNewsRecipe): img.extract() tbl.replaceWith(img) return soup - \ No newline at end of file + From e6db8b13a67164040c68529e4a67296bfbdb143a Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Thu, 2 Dec 2010 10:43:42 -0700 Subject: [PATCH 296/377] Clean up metadata_single.py --- src/calibre/gui2/dialogs/metadata_single.py | 242 ++++++++++---------- 1 file changed, 127 insertions(+), 115 deletions(-) diff --git a/src/calibre/gui2/dialogs/metadata_single.py b/src/calibre/gui2/dialogs/metadata_single.py index 7beeb56378..b57ff318ad 100644 --- a/src/calibre/gui2/dialogs/metadata_single.py +++ b/src/calibre/gui2/dialogs/metadata_single.py @@ -31,7 +31,7 @@ from calibre.gui2.preferences.social import SocialMetadata from calibre.gui2.custom_column_widgets import populate_metadata_page from calibre import strftime -class CoverFetcher(QThread): +class CoverFetcher(QThread): # {{{ def __init__(self, username, password, isbn, timeout, title, author): self.username = username.strip() if username else username @@ -74,9 +74,9 @@ class CoverFetcher(QThread): self.traceback = traceback.format_exc() print self.traceback +# }}} - -class Format(QListWidgetItem): +class Format(QListWidgetItem): # {{{ def __init__(self, parent, ext, size, path=None, timestamp=None): self.path = path @@ -92,12 +92,60 @@ class Format(QListWidgetItem): self.setToolTip(text) self.setStatusTip(text) +# }}} + class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): COVER_FETCH_TIMEOUT = 240 # seconds view_format = pyqtSignal(object) + # Cover processing {{{ + + def set_cover(self): + mi, ext = self.get_selected_format_metadata() + if mi is None: + return + cdata = None + if mi.cover and os.access(mi.cover, os.R_OK): + cdata = open(mi.cover).read() + elif mi.cover_data[1] is not None: + cdata = mi.cover_data[1] + if cdata is None: + error_dialog(self, _('Could not read cover'), + _('Could not read cover from %s format')%ext).exec_() + return + pix = QPixmap() + pix.loadFromData(cdata) + if pix.isNull(): + error_dialog(self, _('Could not read cover'), + _('The cover in the %s format is invalid')%ext).exec_() + return + self.cover.setPixmap(pix) + self.update_cover_tooltip() + self.cover_changed = True + self.cpixmap = pix + self.cover_data = cdata + + def trim_cover(self, *args): + from calibre.utils.magick import Image + cdata = self.cover_data + if not cdata: + return + im = Image() + im.load(cdata) + im.trim(10) + cdata = im.export('png') + pix = QPixmap() + pix.loadFromData(cdata) + self.cover.setPixmap(pix) + self.update_cover_tooltip() + self.cover_changed = True + self.cpixmap = pix + self.cover_data = cdata + + + def update_cover_tooltip(self): p = self.cover.pixmap() self.cover.setToolTip(_('Cover size: %dx%d pixels') % @@ -173,6 +221,76 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): self.cover_changed = True self.cpixmap = pix + def cover_dropped(self, cover_data): + self.cover_changed = True + self.cover_data = cover_data + self.update_cover_tooltip() + + def fetch_cover(self): + isbn = re.sub(r'[^0-9a-zA-Z]', '', unicode(self.isbn.text())).strip() + self.fetch_cover_button.setEnabled(False) + self.setCursor(Qt.WaitCursor) + title, author = map(unicode, (self.title.text(), self.authors.text())) + self.cover_fetcher = CoverFetcher(None, None, isbn, + self.timeout, title, author) + self.cover_fetcher.start() + self._hangcheck = QTimer(self) + self.connect(self._hangcheck, SIGNAL('timeout()'), self.hangcheck) + self.cf_start_time = time.time() + self.pi.start(_('Downloading cover...')) + self._hangcheck.start(100) + + def hangcheck(self): + if not self.cover_fetcher.isFinished() and \ + time.time()-self.cf_start_time < self.COVER_FETCH_TIMEOUT: + return + + self._hangcheck.stop() + try: + if self.cover_fetcher.isRunning(): + self.cover_fetcher.terminate() + error_dialog(self, _('Cannot fetch cover'), + _('<b>Could not fetch cover.</b><br/>')+ + _('The download timed out.')).exec_() + return + if self.cover_fetcher.needs_isbn: + error_dialog(self, _('Cannot fetch cover'), + _('Could not find cover for this book. Try ' + 'specifying the ISBN first.')).exec_() + return + if self.cover_fetcher.exception is not None: + err = self.cover_fetcher.exception + error_dialog(self, _('Cannot fetch cover'), + _('<b>Could not fetch cover.</b><br/>')+unicode(err)).exec_() + return + if self.cover_fetcher.errors and self.cover_fetcher.cover_data is None: + details = u'\n\n'.join([e[-1] + ': ' + e[1] for e in self.cover_fetcher.errors]) + error_dialog(self, _('Cannot fetch cover'), + _('<b>Could not fetch cover.</b><br/>') + + _('For the error message from each cover source, ' + 'click Show details below.'), det_msg=details, show=True) + return + + pix = QPixmap() + pix.loadFromData(self.cover_fetcher.cover_data) + if pix.isNull(): + error_dialog(self, _('Bad cover'), + _('The cover is not a valid picture')).exec_() + else: + self.cover.setPixmap(pix) + self.update_cover_tooltip() + self.cover_changed = True + self.cpixmap = pix + self.cover_data = self.cover_fetcher.cover_data + finally: + self.fetch_cover_button.setEnabled(True) + self.unsetCursor() + self.pi.stop() + + + # }}} + + # Formats processing {{{ def add_format(self, x): files = choose_files(self, 'add formats dialog', _("Choose formats for ") + unicode((self.title.text())), @@ -285,50 +403,6 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): self.comments.setPlainText(mi.comments) - def set_cover(self): - mi, ext = self.get_selected_format_metadata() - if mi is None: - return - cdata = None - if mi.cover and os.access(mi.cover, os.R_OK): - cdata = open(mi.cover).read() - elif mi.cover_data[1] is not None: - cdata = mi.cover_data[1] - if cdata is None: - error_dialog(self, _('Could not read cover'), - _('Could not read cover from %s format')%ext).exec_() - return - pix = QPixmap() - pix.loadFromData(cdata) - if pix.isNull(): - error_dialog(self, _('Could not read cover'), - _('The cover in the %s format is invalid')%ext).exec_() - return - self.cover.setPixmap(pix) - self.update_cover_tooltip() - self.cover_changed = True - self.cpixmap = pix - self.cover_data = cdata - - def trim_cover(self, *args): - from calibre.utils.magick import Image - cdata = self.cover_data - if not cdata: - return - im = Image() - im.load(cdata) - im.trim(10) - cdata = im.export('png') - pix = QPixmap() - pix.loadFromData(cdata) - self.cover.setPixmap(pix) - self.update_cover_tooltip() - self.cover_changed = True - self.cpixmap = pix - self.cover_data = cdata - - - def sync_formats(self): old_extensions, new_extensions, paths = set(), set(), {} for row in range(self.formats.count()): @@ -349,6 +423,12 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): if ext not in extensions: self.db.remove_format(self.row, ext, notify=False) + def show_format(self, item, *args): + fmt = item.ext + self.view_format.emit(fmt) + + # }}} + def do_cancel_all(self): self.cancel_all = True self.reject() @@ -543,10 +623,6 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): self.isbn.setStyleSheet('QLineEdit { background-color: rgba(255,0,0,20%) }') self.isbn.setToolTip(_('This ISBN number is invalid')) - def show_format(self, item, *args): - fmt = item.ext - self.view_format.emit(fmt) - def deduce_author_sort(self): au = unicode(self.authors.text()) au = re.sub(r'\s+et al\.$', '', au) @@ -559,9 +635,6 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): self.authors.setText(title) self.author_sort.setText('') - def cover_dropped(self, cover_data): - self.cover_changed = True - self.cover_data = cover_data def initialize_combos(self): self.initalize_authors() @@ -637,67 +710,6 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): self.tags.setText(tag_string) self.tags.update_tags_cache(self.db.all_tags()) - def fetch_cover(self): - isbn = re.sub(r'[^0-9a-zA-Z]', '', unicode(self.isbn.text())).strip() - self.fetch_cover_button.setEnabled(False) - self.setCursor(Qt.WaitCursor) - title, author = map(unicode, (self.title.text(), self.authors.text())) - self.cover_fetcher = CoverFetcher(None, None, isbn, - self.timeout, title, author) - self.cover_fetcher.start() - self._hangcheck = QTimer(self) - self.connect(self._hangcheck, SIGNAL('timeout()'), self.hangcheck) - self.cf_start_time = time.time() - self.pi.start(_('Downloading cover...')) - self._hangcheck.start(100) - - def hangcheck(self): - if not self.cover_fetcher.isFinished() and \ - time.time()-self.cf_start_time < self.COVER_FETCH_TIMEOUT: - return - - self._hangcheck.stop() - try: - if self.cover_fetcher.isRunning(): - self.cover_fetcher.terminate() - error_dialog(self, _('Cannot fetch cover'), - _('<b>Could not fetch cover.</b><br/>')+ - _('The download timed out.')).exec_() - return - if self.cover_fetcher.needs_isbn: - error_dialog(self, _('Cannot fetch cover'), - _('Could not find cover for this book. Try ' - 'specifying the ISBN first.')).exec_() - return - if self.cover_fetcher.exception is not None: - err = self.cover_fetcher.exception - error_dialog(self, _('Cannot fetch cover'), - _('<b>Could not fetch cover.</b><br/>')+unicode(err)).exec_() - return - if self.cover_fetcher.errors and self.cover_fetcher.cover_data is None: - details = u'\n\n'.join([e[-1] + ': ' + e[1] for e in self.cover_fetcher.errors]) - error_dialog(self, _('Cannot fetch cover'), - _('<b>Could not fetch cover.</b><br/>') + - _('For the error message from each cover source, ' - 'click Show details below.'), det_msg=details, show=True) - return - - pix = QPixmap() - pix.loadFromData(self.cover_fetcher.cover_data) - if pix.isNull(): - error_dialog(self, _('Bad cover'), - _('The cover is not a valid picture')).exec_() - else: - self.cover.setPixmap(pix) - self.update_cover_tooltip() - self.cover_changed = True - self.cpixmap = pix - self.cover_data = self.cover_fetcher.cover_data - finally: - self.fetch_cover_button.setEnabled(True) - self.unsetCursor() - self.pi.stop() - def fetch_metadata(self): isbn = re.sub(r'[^0-9a-zA-Z]', '', unicode(self.isbn.text())) From 2633b89d63644d36302ba801106815b7b1da82fd Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Thu, 2 Dec 2010 11:09:45 -0700 Subject: [PATCH 297/377] Implement #7711 (Add "Previous" Button to edit metadata form) --- src/calibre/gui2/actions/edit_metadata.py | 41 ++++++++++++++------- src/calibre/gui2/dialogs/metadata_single.py | 40 +++++++++++++------- 2 files changed, 54 insertions(+), 27 deletions(-) diff --git a/src/calibre/gui2/actions/edit_metadata.py b/src/calibre/gui2/actions/edit_metadata.py index 559ea4a6f7..725bf35993 100644 --- a/src/calibre/gui2/actions/edit_metadata.py +++ b/src/calibre/gui2/actions/edit_metadata.py @@ -8,7 +8,7 @@ __docformat__ = 'restructuredtext en' import os from functools import partial -from PyQt4.Qt import Qt, QMenu +from PyQt4.Qt import Qt, QMenu, QModelIndex from calibre.gui2 import error_dialog, config from calibre.gui2.dialogs.metadata_single import MetadataSingleDialog @@ -126,20 +126,35 @@ class EditMetadataAction(InterfaceAction): if bulk or (bulk is None and len(rows) > 1): return self.edit_bulk_metadata(checked) - def accepted(id): - self.gui.library_view.model().refresh_ids([id]) + row_list = [r.row() for r in rows] + current_row = 0 + changed = set([]) + db = self.gui.library_view.model().db - for row in rows: - self.gui.iactions['View'].metadata_view_id = self.gui.library_view.model().db.id(row.row()) - d = MetadataSingleDialog(self.gui, row.row(), - self.gui.library_view.model().db, - accepted_callback=accepted, - cancel_all=rows.index(row) < len(rows)-1) - d.view_format.connect(self.gui.iactions['View'].metadata_view_format) - d.exec_() - if d.cancel_all: + if len(row_list) == 1: + cr = row_list[0] + row_list = \ + list(range(self.gui.library_view.model().rowCount(QModelIndex()))) + current_row = row_list.index(cr) + + while True: + prev = next_ = None + if current_row > 0: + prev = db.title(row_list[current_row-1]) + if current_row < len(row_list) - 1: + next_ = db.title(row_list[current_row+1]) + + d = MetadataSingleDialog(self.gui, row_list[current_row], db, + prev=prev, next_=next_) + if d.exec_() != d.Accepted: break - if rows: + changed.add(d.id) + if d.row_delta == 0: + break + current_row += d.row_delta + + if changed: + self.gui.library_view.model().refresh_ids(list(changed)) current = self.gui.library_view.currentIndex() m = self.gui.library_view.model() if self.gui.cover_flow: diff --git a/src/calibre/gui2/dialogs/metadata_single.py b/src/calibre/gui2/dialogs/metadata_single.py index b57ff318ad..2c08252266 100644 --- a/src/calibre/gui2/dialogs/metadata_single.py +++ b/src/calibre/gui2/dialogs/metadata_single.py @@ -7,9 +7,11 @@ add/remove formats ''' import os, re, time, traceback, textwrap +from functools import partial from PyQt4.Qt import SIGNAL, QObject, Qt, QTimer, QThread, QDate, \ - QPixmap, QListWidgetItem, QDialog, pyqtSignal, QMessageBox + QPixmap, QListWidgetItem, QDialog, pyqtSignal, QMessageBox, QIcon, \ + QPushButton from calibre.gui2 import error_dialog, file_icon_provider, dynamic, \ choose_files, choose_images, ResizableDialog, \ @@ -429,11 +431,8 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): # }}} - def do_cancel_all(self): - self.cancel_all = True - self.reject() - - def __init__(self, window, row, db, accepted_callback=None, cancel_all=False): + def __init__(self, window, row, db, prev=None, + next_=None): ResizableDialog.__init__(self, window) self.bc_box.layout().setAlignment(self.cover, Qt.AlignCenter|Qt.AlignHCenter) self.cancel_all = False @@ -445,16 +444,27 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): _(' The red color indicates that the current ' 'author sort does not match the current author')) - if cancel_all: - self.__abort_button = self.button_box.addButton(self.button_box.Abort) - self.__abort_button.setToolTip(_('Abort the editing of all remaining books')) - self.connect(self.__abort_button, SIGNAL('clicked()'), - self.do_cancel_all) + self.row_delta = 0 + if prev: + self.prev_button = QPushButton(QIcon(I('back.png')), _('Previous'), + self) + self.button_box.addButton(self.prev_button, self.button_box.ActionRole) + tip = _('Edit the metadata of %s')%prev + self.prev_button.setToolTip(tip) + self.prev_button.clicked.connect(partial(self.next_triggered, + -1)) + if next_: + self.next_button = QPushButton(QIcon(I('forward.png')), _('Next'), + self) + self.button_box.addButton(self.next_button, self.button_box.ActionRole) + tip = _('Edit the metadata of %s')%next_ + self.next_button.setToolTip(tip) + self.next_button.clicked.connect(partial(self.next_triggered, 1)) + self.splitter.setStretchFactor(100, 1) self.read_state() self.db = db self.pi = ProgressIndicator(self) - self.accepted_callback = accepted_callback self.id = db.id(row) self.row = row self.cover_data = None @@ -801,6 +811,10 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): unicode(self.tags.text()).split(',')], notify=notify, commit=commit) + def next_triggered(self, row_delta, *args): + self.row_delta = row_delta + self.accept() + def accept(self): cf = getattr(self, 'cover_fetcher', None) if cf is not None and hasattr(cf, 'terminate'): @@ -862,8 +876,6 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): raise self.save_state() QDialog.accept(self) - if callable(self.accepted_callback): - self.accepted_callback(self.id) def reject(self, *args): cf = getattr(self, 'cover_fetcher', None) From 37241833663b6b00801a409506ad3b6fc1f251a6 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Thu, 2 Dec 2010 11:21:47 -0700 Subject: [PATCH 298/377] Edit metadata dialog: Only set title and authors if they have changed --- src/calibre/gui2/dialogs/metadata_single.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/calibre/gui2/dialogs/metadata_single.py b/src/calibre/gui2/dialogs/metadata_single.py index 2c08252266..f50be281d7 100644 --- a/src/calibre/gui2/dialogs/metadata_single.py +++ b/src/calibre/gui2/dialogs/metadata_single.py @@ -449,7 +449,7 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): self.prev_button = QPushButton(QIcon(I('back.png')), _('Previous'), self) self.button_box.addButton(self.prev_button, self.button_box.ActionRole) - tip = _('Edit the metadata of %s')%prev + tip = _('Save changes and edit the metadata of %s')%prev self.prev_button.setToolTip(tip) self.prev_button.clicked.connect(partial(self.next_triggered, -1)) @@ -457,7 +457,7 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): self.next_button = QPushButton(QIcon(I('forward.png')), _('Next'), self) self.button_box.addButton(self.next_button, self.button_box.ActionRole) - tip = _('Edit the metadata of %s')%next_ + tip = _('Save changes and edit the metadata of %s')%next_ self.next_button.setToolTip(tip) self.next_button.clicked.connect(partial(self.next_triggered, 1)) @@ -513,6 +513,8 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): self.connect(self.reset_cover, SIGNAL('clicked()'), self.do_reset_cover) self.connect(self.swap_button, SIGNAL('clicked()'), self.swap_title_author) self.timeout = float(prefs['network_timeout']) + + self.title.setText(db.title(row)) isbn = db.isbn(self.id, index_is_id=True) if not isbn: @@ -581,6 +583,9 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): self.create_custom_column_editors() self.generate_cover_button.clicked.connect(self.generate_cover) + self.original_author = unicode(self.authors.text()).strip() + self.original_title = unicode(self.title.text()).strip() + def create_custom_column_editors(self): w = self.central_widget.widget(1) layout = w.layout() @@ -824,9 +829,10 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): if self.formats_changed: self.sync_formats() title = unicode(self.title.text()).strip() - self.db.set_title(self.id, title, notify=False) + if title != self.original_title: + self.db.set_title(self.id, title, notify=False) au = unicode(self.authors.text()).strip() - if au: + if au and au != self.original_author: self.db.set_authors(self.id, string_to_authors(au), notify=False) aus = unicode(self.author_sort.text()).strip() if aus: From 5fa0b8941a2df6cfb5f7e46a77e79cbb0a23256b Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Thu, 2 Dec 2010 19:07:37 +0000 Subject: [PATCH 299/377] Change enums to not use the user defined function in meta2 --- src/calibre/library/caches.py | 18 ++++++++++++++ src/calibre/library/custom_columns.py | 36 +++++++++------------------ src/calibre/library/sqlite.py | 14 ----------- 3 files changed, 30 insertions(+), 38 deletions(-) diff --git a/src/calibre/library/caches.py b/src/calibre/library/caches.py index 7b4c66c8b8..8365cfe773 100644 --- a/src/calibre/library/caches.py +++ b/src/calibre/library/caches.py @@ -254,6 +254,12 @@ class ResultCache(SearchQueryParser): # {{{ if field_metadata[key]['datatype'] == 'composite': self.composites.append((key, field_metadata[key]['rec_index'])) + self.enumerations = [] + for key in field_metadata: + if field_metadata[key]['datatype'] == 'enumeration': + self.enumerations.append((field_metadata[key]['display']['enum_values'][0], + field_metadata[key]['rec_index'])) + def __getitem__(self, row): return self._data[self._map_filtered[row]] @@ -691,6 +697,10 @@ class ResultCache(SearchQueryParser): # {{{ mi = db.get_metadata(id, index_is_id=True) for k,c in self.composites: self._data[id][c] = mi.get(k, None) + if len(self.enumerations) > 0: + for v,c in self.enumerations: + if self._data[id][c] is None: + self._data[id][c] = v except IndexError: return None try: @@ -711,6 +721,10 @@ class ResultCache(SearchQueryParser): # {{{ mi = db.get_metadata(id, index_is_id=True) for k,c in self.composites: self._data[id][c] = mi.get(k) + if len(self.enumerations) > 0: + for v,c in self.self._data[id][c]: + if self._data[id][c] is None: + self._data[id][c] = v self._map[0:0] = ids self._map_filtered[0:0] = ids @@ -740,6 +754,10 @@ class ResultCache(SearchQueryParser): # {{{ mi = db.get_metadata(item[0], index_is_id=True) for k,c in self.composites: item[c] = mi.get(k) + if len(self.enumerations) > 0: + for v,c in self.enumerations: + if item[c] is None: + item[c] = v self._map = [i[0] for i in self._data if i is not None] if field is not None: diff --git a/src/calibre/library/custom_columns.py b/src/calibre/library/custom_columns.py index 9444746c2a..dc3a67e860 100644 --- a/src/calibre/library/custom_columns.py +++ b/src/calibre/library/custom_columns.py @@ -525,30 +525,18 @@ class CustomColumns(object): display = data['display'] table, lt = self.custom_table_names(data['num']) if data['normalized']: - if data['datatype'] == 'enumeration': - query = '%s.value' - line = ''' - val_for_enum(\' - SELECT {table}.value FROM {lt} - AS link INNER JOIN {table} ON(link.value={table}.id) - WHERE link.book=?\', - \'{default}\', books.id) custom_{num} - '''.format(lt=lt, table=table, - default=data['display']['enum_values'][0], - num=data['num']) - else: - query = '%s.value' - if data['is_multiple']: - query = 'group_concat(%s.value, "|")' - if not display.get('sort_alpha', False): - query = 'sort_concat(link.id, %s.value)' - line = '''(SELECT {query} FROM {lt} AS link INNER JOIN - {table} ON(link.value={table}.id) WHERE link.book=books.id) - custom_{num} - '''.format(query=query%table, lt=lt, table=table, num=data['num']) - if data['datatype'] == 'series': - line += ''',(SELECT extra FROM {lt} WHERE {lt}.book=books.id) - custom_index_{num}'''.format(lt=lt, num=data['num']) + query = '%s.value' + if data['is_multiple']: + query = 'group_concat(%s.value, "|")' + if not display.get('sort_alpha', False): + query = 'sort_concat(link.id, %s.value)' + line = '''(SELECT {query} FROM {lt} AS link INNER JOIN + {table} ON(link.value={table}.id) WHERE link.book=books.id) + custom_{num} + '''.format(query=query%table, lt=lt, table=table, num=data['num']) + if data['datatype'] == 'series': + line += ''',(SELECT extra FROM {lt} WHERE {lt}.book=books.id) + custom_index_{num}'''.format(lt=lt, num=data['num']) else: line = ''' (SELECT value FROM {table} WHERE book=books.id) custom_{num} diff --git a/src/calibre/library/sqlite.py b/src/calibre/library/sqlite.py index 9682bd7ec6..7a86447090 100644 --- a/src/calibre/library/sqlite.py +++ b/src/calibre/library/sqlite.py @@ -115,18 +115,6 @@ def pynocase(one, two, encoding='utf-8'): pass return cmp(one.lower(), two.lower()) -def enum_col_value(select, def_val, id, conn=None): - try: - v = conn.get(select, (id,), all=False) - if v is None: - v = def_val - except Exception, e: - if DEBUG: - print 'enum_col_value failed' - print e - v = def_val - return v - def load_c_extensions(conn, debug=DEBUG): try: conn.enable_load_extension(True) @@ -176,8 +164,6 @@ class DBThread(Thread): self.conn.create_function('author_to_author_sort', 1, _author_to_author_sort) self.conn.create_function('uuid4', 0, lambda : str(uuid.uuid4())) - self.conn.create_function('val_for_enum', 3, - partial(enum_col_value, conn=self.conn)) # Dummy functions for dynamically created filters self.conn.create_function('books_list_filter', 1, lambda x: 1) From 1f91663c2255dd6de6444a14d07f26fc4654641b Mon Sep 17 00:00:00 2001 From: John Schember <john@nachtimwald.com> Date: Thu, 2 Dec 2010 18:43:50 -0500 Subject: [PATCH 300/377] PMLZ Output: Reduce image depth and size by default to accommodate Dropbook. Includes option to output un-modified images. --- src/calibre/ebooks/pml/output.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/calibre/ebooks/pml/output.py b/src/calibre/ebooks/pml/output.py index 774fc4c8d1..7e3729aa4a 100644 --- a/src/calibre/ebooks/pml/output.py +++ b/src/calibre/ebooks/pml/output.py @@ -35,6 +35,12 @@ class PMLOutput(OutputFormatPlugin): OptionRecommendation(name='inline_toc', recommended_value=False, level=OptionRecommendation.LOW, help=_('Add Table of Contents to beginning of the book.')), + OptionRecommendation(name='full_image_depth', + recommended_value=False, level=OptionRecommendation.LOW, + help=_('Do not reduce the size or bit depth of images. Images ' \ + 'have their size and depth reduced by default to accommodate ' \ + 'applications that can not convert images on their ' \ + 'own such as Dropbook.')), ]) def convert(self, oeb_book, output_path, input_plugin, opts, log): @@ -44,16 +50,20 @@ class PMLOutput(OutputFormatPlugin): with open(os.path.join(tdir, 'index.pml'), 'wb') as out: out.write(pml.encode(opts.output_encoding, 'replace')) - self.write_images(oeb_book.manifest, pmlmlizer.image_hrefs, tdir) + self.write_images(oeb_book.manifest, pmlmlizer.image_hrefs, tdir, opts) log.debug('Compressing output...') pmlz = ZipFile(output_path, 'w') pmlz.add_dir(tdir) - def write_images(self, manifest, image_hrefs, out_dir): + def write_images(self, manifest, image_hrefs, out_dir, opts): for item in manifest: if item.media_type in OEB_RASTER_IMAGES and item.href in image_hrefs.keys(): - im = Image.open(cStringIO.StringIO(item.data)) + if opts.full_image_depth: + im = Image.open(cStringIO.StringIO(item.data)) + else: + im = Image.open(cStringIO.StringIO(item.data)).convert('P') + im.thumbnail((300,300), Image.ANTIALIAS) data = cStringIO.StringIO() im.save(data, 'PNG') From 6798036d8487844ee5a740e28b3cb68718929f81 Mon Sep 17 00:00:00 2001 From: John Schember <john@nachtimwald.com> Date: Thu, 2 Dec 2010 19:06:35 -0500 Subject: [PATCH 301/377] PMLZ Output: UI options. --- src/calibre/gui2/convert/pml_output.py | 22 ++++++++++++ src/calibre/gui2/convert/pmlz_output.ui | 48 +++++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 src/calibre/gui2/convert/pml_output.py create mode 100644 src/calibre/gui2/convert/pmlz_output.ui diff --git a/src/calibre/gui2/convert/pml_output.py b/src/calibre/gui2/convert/pml_output.py new file mode 100644 index 0000000000..61207d3de5 --- /dev/null +++ b/src/calibre/gui2/convert/pml_output.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- + +__license__ = 'GPL 3' +__copyright__ = '2009, John Schember <john@nachtimwald.com>' +__docformat__ = 'restructuredtext en' + +from calibre.gui2.convert.pmlz_output_ui import Ui_Form +from calibre.gui2.convert import Widget + +format_model = None + +class PluginWidget(Widget, Ui_Form): + + TITLE = _('PMLZ Output') + HELP = _('Options specific to')+' PMLZ '+_('output') + COMMIT_NAME = 'pmlz_output' + ICON = I('mimetypes/unknown.png') + + def __init__(self, parent, get_option, get_help, db=None, book_id=None): + Widget.__init__(self, parent, ['inline_toc', 'full_image_depth']) + self.db, self.book_id = db, book_id + self.initialize_options(get_option, get_help, db, book_id) diff --git a/src/calibre/gui2/convert/pmlz_output.ui b/src/calibre/gui2/convert/pmlz_output.ui new file mode 100644 index 0000000000..3573e14210 --- /dev/null +++ b/src/calibre/gui2/convert/pmlz_output.ui @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Form</class> + <widget class="QWidget" name="Form"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>300</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="2" column="0"> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>246</height> + </size> + </property> + </spacer> + </item> + <item row="0" column="0"> + <widget class="QCheckBox" name="opt_inline_toc"> + <property name="text"> + <string>&Inline TOC</string> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QCheckBox" name="opt_full_image_depth"> + <property name="text"> + <string>Do not reduce image size and depth</string> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> From e87b6e367945d0d31f99e1532c1da41128729104 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Thu, 2 Dec 2010 17:56:55 -0700 Subject: [PATCH 302/377] Global Times by malfi --- resources/recipes/globaltimes.recipe | 46 ++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 resources/recipes/globaltimes.recipe diff --git a/resources/recipes/globaltimes.recipe b/resources/recipes/globaltimes.recipe new file mode 100644 index 0000000000..0d281a01fd --- /dev/null +++ b/resources/recipes/globaltimes.recipe @@ -0,0 +1,46 @@ +from calibre.web.feeds.news import BasicNewsRecipe +import re + +class globaltimes(BasicNewsRecipe): + title = u'Global Times' + __author__ = 'malfi' + language = 'zh' + oldest_article = 7 + max_articles_per_feed = 100 + no_stylesheets = True + cover_url = 'http://enhimg2.huanqiu.com/images/logo.png' + language = 'en' + keep_only_tags = [] + keep_only_tags.append(dict(name = 'div', attrs = {'id': 'content'})) + remove_tags = [] + remove_tags.append(dict(name = 'div', attrs = {'class': 'location'})) + remove_tags.append(dict(name = 'div', attrs = {'class': 'contentpage'})) + remove_tags.append(dict(name = 'li', attrs = {'id': 'pl'})) + + extra_css = ''' + h1{font-family:Arial,Helvetica,sans-serif; font-weight:bold;font-size:large;} + h2{font-family:Arial,Helvetica,sans-serif; font-weight:normal;font-size:small;} + p{font-family:Arial,Helvetica,sans-serif;font-size:small;} + body{font-family:Helvetica,Arial,sans-serif;font-size:small;} + ''' + def parse_index(self): + catnames = {} + catnames["http://china.globaltimes.cn/chinanews/"] = "China Politics" + catnames["http://china.globaltimes.cn/diplomacy/"] = "China Diplomacy" + catnames["http://military.globaltimes.cn/china/"] = "China Military" + catnames["http://business.globaltimes.cn/china-economy/"] = "China Economy" + catnames["http://world.globaltimes.cn/asia-pacific/"] = "Asia Pacific" + feeds = [] + + for cat in catnames.keys(): + articles = [] + soup = self.index_to_soup(cat) + for a in soup.findAll('a',attrs={'href' : re.compile(cat+"201[0-9]-[0-1][0-9]/[0-9][0-9][0-9][0-9][0-9][0-9].html")}): + url = a['href'].strip() + myarticle=({'title':self.tag_to_string(a), 'url':url, 'description':'', 'date':''}) + self.log("found %s" % url) + articles.append(myarticle) + self.log("Adding URL %s\n" %url) + if articles: + feeds.append((catnames[cat], articles)) + return feeds From 59d9872a1152eb453c57b5cac5306b1e348ac0dc Mon Sep 17 00:00:00 2001 From: Translators <> Date: Fri, 3 Dec 2010 05:03:00 +0000 Subject: [PATCH 303/377] Launchpad automatic translations update. --- src/calibre/translations/de.po | 8 ++++---- src/calibre/translations/fr.po | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/calibre/translations/de.po b/src/calibre/translations/de.po index 8eaba806fe..3643d34f86 100644 --- a/src/calibre/translations/de.po +++ b/src/calibre/translations/de.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: de\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-11-27 20:21+0000\n" -"PO-Revision-Date: 2010-11-28 12:13+0000\n" -"Last-Translator: Manichean <Unknown>\n" +"PO-Revision-Date: 2010-12-02 13:54+0000\n" +"Last-Translator: miwie <Unknown>\n" "Language-Team: American English <kde-i18n-doc@lists.kde.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-11-29 04:48+0000\n" +"X-Launchpad-Export-Date: 2010-12-03 05:02+0000\n" "X-Generator: Launchpad (build Unknown)\n" "Generated-By: pygettext.py 1.5\n" @@ -13333,7 +13333,7 @@ msgstr "Feeds der Index-Seite erhalten" #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:869 msgid "Trying to download cover..." -msgstr "Umschlagbild versuchen heruterzuladen ..." +msgstr "Umschlagbild versuchen herunterzuladen ..." #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:871 msgid "Generating masthead..." diff --git a/src/calibre/translations/fr.po b/src/calibre/translations/fr.po index cca9e97072..9befbd5b16 100644 --- a/src/calibre/translations/fr.po +++ b/src/calibre/translations/fr.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-12-02 04:45+0000\n" +"X-Launchpad-Export-Date: 2010-12-03 05:02+0000\n" "X-Generator: Launchpad (build Unknown)\n" "X-Poedit-Bookmarks: 1177,1104,-1,-1,-1,-1,-1,-1,-1,-1\n" "Generated-By: pygettext.py 1.5\n" From 825a3f984b435b481fcd6c0d38ffa1d4c38fffc5 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Thu, 2 Dec 2010 23:47:29 -0700 Subject: [PATCH 304/377] Fix NYTimes login page change --- resources/recipes/nytimes.recipe | 6 +++--- resources/recipes/nytimes_sub.recipe | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/resources/recipes/nytimes.recipe b/resources/recipes/nytimes.recipe index fbb4641580..eaa428e731 100644 --- a/resources/recipes/nytimes.recipe +++ b/resources/recipes/nytimes.recipe @@ -282,9 +282,9 @@ class NYTimes(BasicNewsRecipe): br = BasicNewsRecipe.get_browser() if self.username is not None and self.password is not None: br.open('http://www.nytimes.com/auth/login') - br.select_form(name='login') - br['USERID'] = self.username - br['PASSWORD'] = self.password + br.form = br.forms().next() + br['userid'] = self.username + br['password'] = self.password raw = br.submit().read() if 'Please try again' in raw: raise Exception('Your username and password are incorrect') diff --git a/resources/recipes/nytimes_sub.recipe b/resources/recipes/nytimes_sub.recipe index ad98b466e1..e56fd9cdec 100644 --- a/resources/recipes/nytimes_sub.recipe +++ b/resources/recipes/nytimes_sub.recipe @@ -282,9 +282,9 @@ class NYTimes(BasicNewsRecipe): br = BasicNewsRecipe.get_browser() if self.username is not None and self.password is not None: br.open('http://www.nytimes.com/auth/login') - br.select_form(name='login') - br['USERID'] = self.username - br['PASSWORD'] = self.password + br.form = br.forms().next() + br['userid'] = self.username + br['password'] = self.password raw = br.submit().read() if 'Please try again' in raw: raise Exception('Your username and password are incorrect') From 741ff46083118dc1f77d84d4611eb094311903b8 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Fri, 3 Dec 2010 09:18:38 +0000 Subject: [PATCH 305/377] Change enums back to having None as the default value --- src/calibre/gui2/custom_column_widgets.py | 32 +++++++++++-------- src/calibre/gui2/library/delegates.py | 14 +++----- src/calibre/gui2/library/models.py | 4 ++- .../gui2/preferences/create_custom_column.py | 4 +++ .../gui2/preferences/create_custom_column.ui | 9 +++--- src/calibre/library/caches.py | 18 ----------- src/calibre/library/custom_columns.py | 14 +++++--- 7 files changed, 42 insertions(+), 53 deletions(-) diff --git a/src/calibre/gui2/custom_column_widgets.py b/src/calibre/gui2/custom_column_widgets.py index b0b68033bb..6b6669f4e0 100644 --- a/src/calibre/gui2/custom_column_widgets.py +++ b/src/calibre/gui2/custom_column_widgets.py @@ -318,16 +318,14 @@ class Enumeration(Base): QComboBox(parent)] w = self.widgets[1] vals = self.col_metadata['display']['enum_values'] + w.addItem('') for v in vals: w.addItem(v) def initialize(self, book_id): val = self.db.get_custom(book_id, num=self.col_id, index_is_id=True) - if val is None: - # This really shouldn't happen - val = self.col_metadata['display']['enum_values'][0] - self.initial_val = val val = self.normalize_db_val(val) + self.initial_val = val idx = self.widgets[1].findText(val) if idx < 0: error_dialog(self.parent, '', @@ -340,13 +338,21 @@ class Enumeration(Base): self.widgets[1].setCurrentIndex(idx) def setter(self, val): - if val is None: - val = '' self.widgets[1].setCurrentIndex(self.widgets[1].findText(val)) def getter(self): return unicode(self.widgets[1].currentText()) + def normalize_db_val(self, val): + if val is None: + val = '' + return val + + def normalize_ui_val(self, val): + if not val: + val = None + return val + widgets = { 'bool' : Bool, 'rating' : Rating, @@ -597,7 +603,7 @@ class BulkEnumeration(BulkBase, Enumeration): dialog_shown = False for book_id in book_ids: val = self.db.get_custom(book_id, num=self.col_id, index_is_id=True) - if val not in self.col_metadata['display']['enum_values']: + if val and val not in self.col_metadata['display']['enum_values']: if not dialog_shown: error_dialog(self.parent, '', _('The enumeration "{0}" contains invalid values ' @@ -620,6 +626,7 @@ class BulkEnumeration(BulkBase, Enumeration): w = self.widgets[1] vals = self.col_metadata['display']['enum_values'] w.addItem('Do Not Change') + w.addItem('') for v in vals: w.addItem(v) @@ -632,7 +639,10 @@ class BulkEnumeration(BulkBase, Enumeration): if val == ' nochange ': self.widgets[1].setCurrentIndex(0) else: - self.widgets[1].setCurrentIndex(self.widgets[1].findText(val)) + if val is None: + self.widgets[1].setCurrentIndex(1) + else: + self.widgets[1].setCurrentIndex(self.widgets[1].findText(val)) def commit(self, book_ids, notify=False): val = self.gui_val @@ -640,12 +650,6 @@ class BulkEnumeration(BulkBase, Enumeration): if val != self.initial_val and val != ' nochange ': self.db.set_custom_bulk(book_ids, val, num=self.col_id, notify=notify) - def normalize_db_val(self, val): - if val is None: - # this really shouldn't happen - val = self.col_metadata['display']['enum_values'][0] - return val - class RemoveTags(QWidget): def __init__(self, parent, values): diff --git a/src/calibre/gui2/library/delegates.py b/src/calibre/gui2/library/delegates.py index bb73a55fc9..03309d1fba 100644 --- a/src/calibre/gui2/library/delegates.py +++ b/src/calibre/gui2/library/delegates.py @@ -263,28 +263,22 @@ class CcEnumDelegate(QStyledItemDelegate): # {{{ m = index.model() col = m.column_map[index.column()] editor = QComboBox(parent) + editor.addItem('') for v in m.custom_columns[col]['display']['enum_values']: editor.addItem(v) return editor def setModelData(self, editor, model, index): val = unicode(editor.currentText()) - m = index.model() - col = m.column_map[index.column()] - if val not in m.custom_columns[col]['display']['enum_values']: - # This shouldn't happen ... - print 'shouldnt happen' - val = m.custom_columns[col]['display']['enum_values'][0] + if not val: + val = None model.setData(index, QVariant(val), Qt.EditRole) def setEditorData(self, editor, index): m = index.model() val = m.db.data[index.row()][m.custom_columns[m.column_map[index.column()]]['rec_index']] if val is None: - # This shouldn't happen - m = index.model() - col = m.column_map[index.column()] - val = m.custom_columns[col]['display']['enum_values'][0] + val = '' idx = editor.findText(val) if idx < 0: editor.setCurrentIndex(0) diff --git a/src/calibre/gui2/library/models.py b/src/calibre/gui2/library/models.py index bee90fc44c..e09f85dc6b 100644 --- a/src/calibre/gui2/library/models.py +++ b/src/calibre/gui2/library/models.py @@ -724,6 +724,8 @@ class BooksModel(QAbstractTableModel): # {{{ val = val if val else None elif typ == 'enumeration': val = unicode(value.toString()).strip() + if not val: + val = None elif typ == 'bool': val = value.toPyObject() elif typ == 'rating': @@ -732,7 +734,7 @@ class BooksModel(QAbstractTableModel): # {{{ val *= 2 elif typ in ('int', 'float'): val = unicode(value.toString()).strip() - if val is None or not val: + if not val: val = None elif typ == 'datetime': val = value.toDate() diff --git a/src/calibre/gui2/preferences/create_custom_column.py b/src/calibre/gui2/preferences/create_custom_column.py index 419fed046d..3eed04f709 100644 --- a/src/calibre/gui2/preferences/create_custom_column.py +++ b/src/calibre/gui2/preferences/create_custom_column.py @@ -167,6 +167,10 @@ class CreateCustomColumn(QDialog, Ui_QCreateCustomColumn): return self.simple_error('', _('You must enter at least one' ' value for enumeration columns')) l = [v.strip() for v in unicode(self.enum_box.text()).split(',')] + for v in l: + if not v: + return self.simple_error('', _('You cannot provide the empty ' + 'value, as it is included by default')) for i in range(0, len(l)-1): if l[i] in l[i+1:]: return self.simple_error('', _('The value "{0}" is in the ' diff --git a/src/calibre/gui2/preferences/create_custom_column.ui b/src/calibre/gui2/preferences/create_custom_column.ui index 360c1a4345..bdf4f624a4 100644 --- a/src/calibre/gui2/preferences/create_custom_column.ui +++ b/src/calibre/gui2/preferences/create_custom_column.ui @@ -212,10 +212,9 @@ <item> <widget class="QLineEdit" name="enum_box"> <property name="toolTip"> - <string>A comma-separated list of permitted values. You can specify -empty values by entering only the comma. For example, the list -',one,two,three' has 4 valid values, one of them empty. The first -value in the list is the default.</string> + <string>A comma-separated list of permitted values. The empty value is always +included, and is the default. For example, the list 'one,two,three' has +four values, the first of them being the empty value.</string> </property> <property name="sizePolicy"> <sizepolicy hsizetype="Maximum" vsizetype="Fixed"> @@ -231,7 +230,7 @@ value in the list is the default.</string> <string>Default: (nothing)</string> </property> <property name="toolTip"> - <string>The first value entered will be the default value for this enumeration</string> + <string>The empty string is always the first value</string> </property> </widget> </item> diff --git a/src/calibre/library/caches.py b/src/calibre/library/caches.py index 8365cfe773..7b4c66c8b8 100644 --- a/src/calibre/library/caches.py +++ b/src/calibre/library/caches.py @@ -254,12 +254,6 @@ class ResultCache(SearchQueryParser): # {{{ if field_metadata[key]['datatype'] == 'composite': self.composites.append((key, field_metadata[key]['rec_index'])) - self.enumerations = [] - for key in field_metadata: - if field_metadata[key]['datatype'] == 'enumeration': - self.enumerations.append((field_metadata[key]['display']['enum_values'][0], - field_metadata[key]['rec_index'])) - def __getitem__(self, row): return self._data[self._map_filtered[row]] @@ -697,10 +691,6 @@ class ResultCache(SearchQueryParser): # {{{ mi = db.get_metadata(id, index_is_id=True) for k,c in self.composites: self._data[id][c] = mi.get(k, None) - if len(self.enumerations) > 0: - for v,c in self.enumerations: - if self._data[id][c] is None: - self._data[id][c] = v except IndexError: return None try: @@ -721,10 +711,6 @@ class ResultCache(SearchQueryParser): # {{{ mi = db.get_metadata(id, index_is_id=True) for k,c in self.composites: self._data[id][c] = mi.get(k) - if len(self.enumerations) > 0: - for v,c in self.self._data[id][c]: - if self._data[id][c] is None: - self._data[id][c] = v self._map[0:0] = ids self._map_filtered[0:0] = ids @@ -754,10 +740,6 @@ class ResultCache(SearchQueryParser): # {{{ mi = db.get_metadata(item[0], index_is_id=True) for k,c in self.composites: item[c] = mi.get(k) - if len(self.enumerations) > 0: - for v,c in self.enumerations: - if item[c] is None: - item[c] = v self._map = [i[0] for i in self._data if i is not None] if field is not None: diff --git a/src/calibre/library/custom_columns.py b/src/calibre/library/custom_columns.py index dc3a67e860..f544a9bf7e 100644 --- a/src/calibre/library/custom_columns.py +++ b/src/calibre/library/custom_columns.py @@ -136,6 +136,12 @@ class CustomColumns(object): x = bool(int(x)) return x + def adapt_enum(x, d): + v = adapt_text(x, d) + if not v: + v = None + return v + self.custom_data_adapters = { 'float': lambda x,d : x if x is None else float(x), 'int': lambda x,d : x if x is None else int(x), @@ -145,7 +151,7 @@ class CustomColumns(object): 'datetime' : adapt_datetime, 'text':adapt_text, 'series':adapt_text, - 'enumeration': adapt_text + 'enumeration': adapt_enum } # Create Tag Browser categories for custom columns @@ -177,8 +183,6 @@ class CustomColumns(object): ans = ans.split('|') if ans else [] if data['display'].get('sort_alpha', False): ans.sort(cmp=lambda x,y:cmp(x.lower(), y.lower())) - elif data['datatype'] == 'enumeration' and ans is None: - ans = data['display']['enum_values'][0] return ans def get_custom_extra(self, idx, label=None, num=None, index_is_id=False): @@ -442,8 +446,8 @@ class CustomColumns(object): val = self.custom_data_adapters[data['datatype']](val, data) if data['normalized']: - if data['datatype'] == 'enumeration' and \ - val not in data['display']['enum_values']: + if data['datatype'] == 'enumeration' and ( + val and val not in data['display']['enum_values']): return None if not append or not data['is_multiple']: self.conn.execute('DELETE FROM %s WHERE book=?'%lt, (id_,)) From eac8447e478b7e1fad8d3378ec7077c2c163a2b8 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Fri, 3 Dec 2010 13:09:20 +0000 Subject: [PATCH 306/377] Speed up manage_authors by orders of magnitude. In the process, make database_changed notification sane, doing the operation once even if many emits were done. --- src/calibre/gui2/tag_view.py | 10 ++++++++-- src/calibre/library/database2.py | 7 ++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/calibre/gui2/tag_view.py b/src/calibre/gui2/tag_view.py index 972a1eeba3..768b699ca9 100644 --- a/src/calibre/gui2/tag_view.py +++ b/src/calibre/gui2/tag_view.py @@ -106,10 +106,13 @@ class TagsView(QTreeView): # {{{ self.refresh_required.connect(self.recount, type=Qt.QueuedConnection) self.sort_by.currentIndexChanged.connect(self.sort_changed) self.made_connections = True + self.refresh_signal_processed = True db.add_listener(self.database_changed) def database_changed(self, event, ids): - self.refresh_required.emit() + if self.refresh_signal_processed: + self.refresh_signal_processed = False + self.refresh_required.emit() @property def match_all(self): @@ -295,6 +298,7 @@ class TagsView(QTreeView): # {{{ return self.isExpanded(idx) def recount(self, *args): + self.refresh_signal_processed = True ci = self.currentIndex() if not ci.isValid(): ci = self.indexAt(QPoint(10, 10)) @@ -937,7 +941,9 @@ class TagBrowserMixin(object): # {{{ if old_author != new_author: # The id might change if the new author already exists id = db.rename_author(id, new_author) - db.set_sort_field_for_author(id, unicode(new_sort)) + db.set_sort_field_for_author(id, unicode(new_sort), + commit=False, notify=False) + db.commit() self.library_view.model().refresh() self.tags_view.recount() diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index a07e46577e..4e05aa3a95 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -1639,15 +1639,16 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): return [] return result - def set_sort_field_for_author(self, old_id, new_sort): + def set_sort_field_for_author(self, old_id, new_sort, commit=True, notify=False): self.conn.execute('UPDATE authors SET sort=? WHERE id=?', \ (new_sort.strip(), old_id)) - self.conn.commit() + if commit: + self.conn.commit() # Now change all the author_sort fields in books by this author bks = self.conn.get('SELECT book from books_authors_link WHERE author=?', (old_id,)) for (book_id,) in bks: ss = self.author_sort_from_book(book_id, index_is_id=True) - self.set_author_sort(book_id, ss) + self.set_author_sort(book_id, ss, notify=notify, commit=commit) def rename_author(self, old_id, new_name): # Make sure that any commas in new_name are changed to '|'! From 40780b84eab5d6d407ba87782dc3e9880eb7ecb1 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Fri, 3 Dec 2010 09:20:10 -0700 Subject: [PATCH 307/377] Fix #7777 (New recipe for The Philosophers' Magazine) --- resources/images/news/tpm_uk.png | Bin 0 -> 873 bytes resources/recipes/tpm_uk.recipe | 72 +++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 resources/images/news/tpm_uk.png create mode 100644 resources/recipes/tpm_uk.recipe diff --git a/resources/images/news/tpm_uk.png b/resources/images/news/tpm_uk.png new file mode 100644 index 0000000000000000000000000000000000000000..d8c586a296d8e29f285a679177732f8386428e15 GIT binary patch literal 873 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zK-vS0-A-oPfdtD69Mgd`SU*F|v9*U87?>t`x;TbdoOYeOJ1-_x;CQ|9{ikd8zKNQB zBkV@gf{?Hdm&u_T69k!dE@0qNxu^VyRbxVhf_a{TKyr-5>yGY)g|C@nZl!;p^WI2= z{Y;4QC6WKD&y<z<x(F0ri83?}k<nD0wQS*(rof3=IXNb4!epgv+9qggXw=SMxiu)8 zmBG;I%ab`D?=4<s@jT<Un4scPmWG)R=N6mz9)9~)x4OFe%=6-qsi#kSuUoh7MX>wY zso%x?XZkI_67}<Kzx~hG@3Z&xZz!$5o@ULTV|07l`u#tzg{_P--5g){_iozvZMi_P z<L~!mFP$|tYg*CP^ZS2XQu|((TlL@fvRdB(mgh2-=~DVL4o+6@zj^D{qD-lIw$T%U z+*s!b%QOkAy7jNS{@S{4v4COo_2=sk_VnBTnsDc<ju`i>7m<3?IVJ?LCoP#0@ZR>E zWzhWhM=Wh^9bInRzpw6g{@_8z(@!UD%ROl+oa_?H-gvfU-}{gEKHratk1wvPJIDU} zz483>m0w=u_VxF#-1=zm^4C@&Qzsc^F+G~1_ch}~hlAG4!-t*kRsERYZ~vR6Ve?aM z0ryh|QoSozE_fBVxoMS9vdU5yuhz3?eb1dcXCOS!{(o1Dk-NM5l%NlCd3kvP&sUf( zUgdSYG=bShTxRvQ$4|bb3nW_2<om$Qv%mH1NePKO)(*P|bCS141+Ee_ce}!*ANPmj z!1w!qfgwLf+2ozx*4XO{{hpqiB*5g?8r0MD@zWD^20cB!fUi$%T=q_J((5!=OHSGL z`M{YT0j8~CzxKJia2WC(ESk41SF->3mb<eAn9{!4v&xoTd;Rr-OQ=)Ne=%>3r9w^$ zSDh}KT(P=inO<}*L$kA2LO_tAhT}@s5)+e)XFhCHTwZkj$U)wt)lcOwWMm0^*|w1b zm{e6uTq8<S5=&C8l8aJ-6oZk0p@FWUk*<Mph=HY*p}Cc@sjh*!m4QLwoY&SU8glbf iGSe!NH5eLN8JGc;LNu6~{Z#{MVDNPHb6Mw<&;$U`BYS-S literal 0 HcmV?d00001 diff --git a/resources/recipes/tpm_uk.recipe b/resources/recipes/tpm_uk.recipe new file mode 100644 index 0000000000..aa042de951 --- /dev/null +++ b/resources/recipes/tpm_uk.recipe @@ -0,0 +1,72 @@ +__license__ = 'GPL v3' +__copyright__ = '2010, Darko Miletic <darko.miletic at gmail.com>' +''' +www.philosophypress.co.uk +''' + +from calibre.web.feeds.news import BasicNewsRecipe + +class TPM_uk(BasicNewsRecipe): + title = "The Philosophers' Magazine" + __author__ = 'Darko Miletic' + description = 'Title says it all' + publisher = "The Philosophers' Magazine" + category = 'philosophy, news' + oldest_article = 25 + max_articles_per_feed = 200 + no_stylesheets = True + encoding = 'utf8' + use_embedded_content = False + language = 'en_GB' + remove_empty_feeds = True + publication_type = 'magazine' + masthead_url = 'http://www.philosophypress.co.uk/wp-content/themes/masterplan/tma/images/bg/sitelogo.png' + extra_css = """ + body{font-family: Helvetica,Arial,"Lucida Grande",Verdana,sans-serif } + img{margin-bottom: 0.4em; display:block} + """ + + conversion_options = { + 'comment' : description + , 'tags' : category + , 'publisher' : publisher + , 'language' : language + } + + remove_tags = [ + dict(name=['meta','link','base','iframe','embed','object','img']) + ,dict(attrs={'id':['respond','sharethis_0']}) + ,dict(attrs={'class':'wp-caption-text'}) + ] + keep_only_tags=[ + dict(attrs={'class':['post_cat','post_name','post_meta','post_text']}) + ,dict(attrs={'id':'comments'}) + ] + remove_attributes=['lang','width','height'] + + + feeds = [ + (u'Columns' , u'http://www.philosophypress.co.uk/?feed=rss2&cat=15' ) + ,(u'Essays' , u'http://www.philosophypress.co.uk/?feed=rss2&cat=19' ) + ,(u"21'st Century" , u'http://www.philosophypress.co.uk/?feed=rss2&cat=101') + ,(u'Interviews' , u'http://www.philosophypress.co.uk/?feed=rss2&cat=9' ) + ,(u'News' , u'http://www.philosophypress.co.uk/?feed=rss2&cat=28' ) + ,(u'Profiles' , u'http://www.philosophypress.co.uk/?feed=rss2&cat=59' ) + ,(u'Reviews' , u'http://www.philosophypress.co.uk/?feed=rss2&cat=12' ) + ] + + def get_cover_url(self): + soup = self.index_to_soup('http://www.philosophypress.co.uk/') + for image in soup.findAll('img',title=True): + if image['title'].startswith('Click to Subscribe'): + return image['src'] + return None + + def preprocess_html(self, soup): + for item in soup.findAll(style=True): + del item['style'] + for alink in soup.findAll('a', rel=True): + if alink.string is not None: + tstr = alink.string + alink.replaceWith(tstr) + return soup From 72a41ea70ce2f547bb836f8d44ca9540f8ce123a Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Fri, 3 Dec 2010 09:20:56 -0700 Subject: [PATCH 308/377] Fix #7776 (Updated recipe for NZZ site) --- resources/recipes/nzz_ger.recipe | 35 +++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/resources/recipes/nzz_ger.recipe b/resources/recipes/nzz_ger.recipe index 66e22f50ef..09e011a1dc 100644 --- a/resources/recipes/nzz_ger.recipe +++ b/resources/recipes/nzz_ger.recipe @@ -1,6 +1,6 @@ __license__ = 'GPL v3' -__copyright__ = '2009, Darko Miletic <darko.miletic at gmail.com>' +__copyright__ = '2009-2010, Darko Miletic <darko.miletic at gmail.com>' ''' www.nzz.ch @@ -20,6 +20,19 @@ class Nzz(BasicNewsRecipe): encoding = 'utf-8' use_embedded_content = False language = 'de' + extra_css = """ + body{font-family: Georgia,"Times New Roman",Times,serif } + .artikel h3,.artikel h4,.bildLegende,.question,.autor{font-family: Arial,Verdana,Helvetica,sans-serif} + .bildLegende{font-size: small} + .autor{font-size: 0.9375em; color: #666666} + .quote{font-size: large !important; + font-style: italic; + font-weight: normal !important; + border-bottom: 1px dotted #BFBFBF; + border-top: 1px dotted #BFBFBF; + line-height: 1.25em} + .quelle{color: #666666; font-style: italic; white-space: nowrap} + """ conversion_options = { 'comments' : description @@ -28,12 +41,14 @@ class Nzz(BasicNewsRecipe): ,'publisher' : publisher } - keep_only_tags = [dict(name='div', attrs={'class':'article'})] - + keep_only_tags = [dict(name='div', attrs={'class':'zone'})] + remove_tags_before = dict(name='p', attrs={'class':'dachzeile'}) + remove_tags_after=dict(name='p', attrs={'class':'fussnote'}) + remove_attributes=['width','height','lang'] remove_tags = [ - dict(name=['object','link','base']) - ,dict(name='div',attrs={'class':['more','teaser','advXertXoriXals','legal']}) - ,dict(name='div',attrs={'id':['popup-src','readercomments','google-ad','advXertXoriXals']}) + dict(name=['object','link','base','meta','iframe']) + ,dict(attrs={'id':'content_rectangle_1'}) + ,dict(attrs={'class':['weiterfuehrendeLinks','fussnote','video']}) ] feeds = [ @@ -50,7 +65,7 @@ class Nzz(BasicNewsRecipe): ,(u'Reisen' , u'http://www.nzz.ch/magazin/reisen?rss=true') ] - def print_version(self, url): - return url + '?printview=true' - - + def preprocess_html(self, soup): + for item in soup.findAll(style=True): + del item['style'] + return self.adeify_images(soup) From a172785529e3c0acd8a22e1999bcf21da9e7ac7c Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Fri, 3 Dec 2010 09:51:35 -0700 Subject: [PATCH 309/377] E-book viewer: Fix broken backwards searching --- src/calibre/ebooks/oeb/iterator.py | 5 ++++- src/calibre/gui2/viewer/documentview.py | 2 +- src/calibre/gui2/viewer/main.py | 13 +++++++++---- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/calibre/ebooks/oeb/iterator.py b/src/calibre/ebooks/oeb/iterator.py index 91028c2bc5..10180541a1 100644 --- a/src/calibre/ebooks/oeb/iterator.py +++ b/src/calibre/ebooks/oeb/iterator.py @@ -96,7 +96,10 @@ class EbookIterator(object): def search(self, text, index, backwards=False): text = text.lower() - for i, path in enumerate(self.spine): + pmap = [(i, path) for i, path in enumerate(self.spine)] + if backwards: + pmap.reverse() + for i, path in pmap: if (backwards and i < index) or (not backwards and i > index): if text in open(path, 'rb').read().decode(path.encoding).lower(): return i diff --git a/src/calibre/gui2/viewer/documentview.py b/src/calibre/gui2/viewer/documentview.py index 92c06a47f0..8ce0b46a6d 100644 --- a/src/calibre/gui2/viewer/documentview.py +++ b/src/calibre/gui2/viewer/documentview.py @@ -614,7 +614,7 @@ class DocumentView(QWebView): def search(self, text, backwards=False): if backwards: - return self.findText(text, self.document.FindBackwards) + return self.findText(text, self.document.FindBackward) return self.findText(text) def path(self): diff --git a/src/calibre/gui2/viewer/main.py b/src/calibre/gui2/viewer/main.py index 1ea1aca733..96fe758ca6 100644 --- a/src/calibre/gui2/viewer/main.py +++ b/src/calibre/gui2/viewer/main.py @@ -172,6 +172,7 @@ class EbookViewer(MainWindow, Ui_EbookViewer): self.iterator = None self.current_page = None self.pending_search = None + self.pending_search_dir= None self.pending_anchor = None self.pending_reference = None self.pending_bookmark = None @@ -435,7 +436,7 @@ class EbookViewer(MainWindow, Ui_EbookViewer): if not text: self.view.search('') return self.search.search_done(False) - if self.view.search(text): + if self.view.search(text, backwards=backwards): self.scrolled(self.view.scroll_fraction) return self.search.search_done(True) index = self.iterator.search(text, self.current_index, @@ -449,11 +450,13 @@ class EbookViewer(MainWindow, Ui_EbookViewer): return self.search.search_done(True) return self.search.search_done(True) self.pending_search = text + self.pending_search_dir = 'backwards' if backwards else 'forwards' self.load_path(self.iterator.spine[index]) - def do_search(self, text): + def do_search(self, text, backwards): self.pending_search = None - if self.view.search(text): + self.pending_search_dir = None + if self.view.search(text, backwards=backwards): self.scrolled(self.view.scroll_fraction) def keyPressEvent(self, event): @@ -499,8 +502,10 @@ class EbookViewer(MainWindow, Ui_EbookViewer): self.current_index = index self.set_page_number(self.view.scroll_fraction) if self.pending_search is not None: - self.do_search(self.pending_search) + self.do_search(self.pending_search, + self.pending_search_dir=='backwards') self.pending_search = None + self.pending_search_dir = None if self.pending_anchor is not None: self.view.scroll_to(self.pending_anchor) self.pending_anchor = None From 2e3e4a254c5fa737cfadbbcc365afcfb38606eda Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Fri, 3 Dec 2010 10:52:39 -0700 Subject: [PATCH 310/377] version 0.7.32 --- Changelog.yaml | 101 +++++++++++++++++++++++++++++++++++++++ src/calibre/constants.py | 2 +- 2 files changed, 102 insertions(+), 1 deletion(-) diff --git a/Changelog.yaml b/Changelog.yaml index 3e5dbb06fc..068afbb42d 100644 --- a/Changelog.yaml +++ b/Changelog.yaml @@ -4,6 +4,107 @@ # for important features/bug fixes. # Also, each release can have new and improved recipes. +- version: 0.7.32 + date: 2010-12-03 + + new features: + - title: "All new linux binary build. With updated libraries and replacing cx_Freeze with my own C python launcher code." + + - title: "Edit metadata dialog: Add Next and Previous buttons and show cover size in tooltip" + tickets: [7706, 7711] + + - title: "A new custom column type: Enumeration. This column can take one of a user defined set of values." + + - title: "PML Output: Add option to reduce image sizes/bit depth to allow PML Output to be used with DropBook" + + - title: "TXT Output: Add option to generate Markdown output. Turn <br> tags into spaces." + + - title: "Add a count function to the template language. Make author_sort searchable." + + - title: "Various consistency and usability enhancements to the search box." + tickets: [7726] + description: > + "Always select first book in result set of a search. Similar books searches added to search history. Search history order is no longer randomized. When focussing the search box with a keyboard shortcut, select all text. If you press enter in the search box, the search is executed and the book list os automatically focussed." + + - title: "Driver for samsung fascinate and PocketBook 902" + + - title: "FB2 Output: Add option to create FB2 sections based on internal file structure of input file (useful for EPUB files that have been split on chapter boundaries). Also add options to mark h1/h2/h3 tags as section titles in the FB2 file." + tickets: [7738] + + - title: "Metadata jacket: Add publisher information to jacket." + + - title: "Catalog generation: Allow use of custom columns as well as tags to indicate read books. Note that your previously saved read books setting will be lost." + + - title: "Bulk metadata edit dialog: Add an Apply button to allow you to perform multiple operations in sequence" + + - title: "Allow drag and drop of books onto user categories. If you drag a book from a particular column (say authors) and drop it onto a user category, the column value will be added to the user category. So for authors, the authros will be added to the user category." + + - title: "Check Library can now check and repair the has_cover cache" + + - title: "Allow GUI plugins to be distributed in ZIP files. See http://www.mobileread.com/forums/showthread.php?t=108774" + + - title: "Allow searching by the number of tags/authors/formats/etc. See User Manual for details." + + - title: "Tiny speed up when loading large libraries and make various metadata editing tasks a little faster by reducing the number of times the Tag Browser is refreshed" + + bug fixes: + - title: "E-book viewer: Fix broken backwards searching" + + - title: "Fix custom ratings column values being displayed incorrectly in book details area" + tickets: [7740] + + - title: "Fix book details dialog not using internal viewer to view ebooks" + tickets: [7424] + + - title: "MOBI Output: When the input document does not explicitly specify a size for images, set the size to be the natural size of the image. This works around Amazon's *truly wonderful* MOBI renderer's tendency to expand images that do not have a width and height specified." + + - title: "Conversion pipeline: Fix bug that caused height/width specified in %/em of screen size to be incorrectly calculated by a factor of 72./DPI" + + - title: "Conversion pipeline: Respect max-width and max-height when calculating the effective size of an element" + + - title: "Conversion pipeline: Do not override CSS for images with the value of the img width/height attributes, unless no CSS is specified for the image" + + - title: "E-book viewer: Resize automatically to fit on smaller screens" + + - title: "Use the same MIME database on all platforms that calibre runs on, works around python 2.7's crazy insistence on reading MIME data from the registry" + + - title: "Kobo driver: Allow html, txt and rtf documents to be deleted" + + - title: "Always overwrite title/author metadata when downloading metadata for books added by ISBN" + + - title: "Nook Color profile: Reduce screen height to 900px" + + - title: "Fix regression that broke RTF conversion on some linux systems" + + - title: "Fix bug that could break searching after copying and deleting a book from the current library" + tickets: [7459] + + improved recipes: + - NZZ + - Frankfurter Rundschau + - JiJi Press + - Revista Muy Intersante + + new recipes: + - title: "Global Times" + author: "malfi" + + - title: "The Philosopher's Magazine" + author: "Darko Miletic" + + - title: "Poughkeepsie Journal" + author: "weebl" + + - title: "Business Spectator and ABC Australia" + author: "Dean Cording" + + - title: "La Rijoa and NacionRed" + author: "Arturo Martinez Nieves" + + - title: "Animal Politico" + author: "leamsi" + + - version: 0.7.31 date: 2010-11-27 diff --git a/src/calibre/constants.py b/src/calibre/constants.py index fc33067f49..197fe5888a 100644 --- a/src/calibre/constants.py +++ b/src/calibre/constants.py @@ -2,7 +2,7 @@ __license__ = 'GPL v3' __copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net' __docformat__ = 'restructuredtext en' __appname__ = 'calibre' -__version__ = '0.7.31' +__version__ = '0.7.32' __author__ = "Kovid Goyal <kovid@kovidgoyal.net>" import re From 36fc63cf3683b6da59d48f69418a2f8a388af2ac Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Fri, 3 Dec 2010 11:35:08 -0700 Subject: [PATCH 311/377] IGN:Tag release --- src/calibre/translations/calibre.pot | 1377 +++++++++++++++----------- 1 file changed, 779 insertions(+), 598 deletions(-) diff --git a/src/calibre/translations/calibre.pot b/src/calibre/translations/calibre.pot index c513e267e3..0eeae72c07 100644 --- a/src/calibre/translations/calibre.pot +++ b/src/calibre/translations/calibre.pot @@ -4,9 +4,9 @@ # msgid "" msgstr "" -"Project-Id-Version: calibre 0.7.31\n" -"POT-Creation-Date: 2010-11-27 11:31+MST\n" -"PO-Revision-Date: 2010-11-27 11:31+MST\n" +"Project-Id-Version: calibre 0.7.32\n" +"POT-Creation-Date: 2010-12-03 10:53+MST\n" +"PO-Revision-Date: 2010-12-03 10:53+MST\n" "Last-Translator: Automatically generated\n" "Language-Team: LANGUAGE\n" "MIME-Version: 1.0\n" @@ -25,7 +25,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:74 #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:76 #: /home/kovid/work/calibre/src/calibre/devices/kobo/books.py:24 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:448 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:465 #: /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 @@ -49,7 +49,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:71 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:373 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:378 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:606 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:608 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:36 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:61 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:50 @@ -72,9 +72,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:78 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:119 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:153 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:627 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:833 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:835 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:631 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:837 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:839 #: /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:913 @@ -83,7 +83,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:143 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:150 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:64 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:112 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:111 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:118 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:173 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:174 @@ -107,12 +107,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:98 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:304 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:306 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:305 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:307 #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:355 #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:362 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:279 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:282 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:305 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:137 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:144 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:42 @@ -124,25 +124,25 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:571 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:671 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:235 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:244 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:376 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:395 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:918 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1112 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:922 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1116 #: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:112 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:190 #: /home/kovid/work/calibre/src/calibre/library/cli.py:215 #: /home/kovid/work/calibre/src/calibre/library/database.py:914 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:375 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:387 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1254 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1355 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2151 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2153 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2284 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:373 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:385 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1260 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1361 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2158 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2160 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2291 #: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:229 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:139 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:142 @@ -180,7 +180,7 @@ msgstr "" msgid "User Interface Action" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:386 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:395 #: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:22 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:189 @@ -273,7 +273,7 @@ msgid "Change the way calibre behaves" msgstr "" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:740 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:211 msgid "Add your own columns" msgstr "" @@ -425,124 +425,124 @@ msgstr "" 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:47 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:49 msgid "Input profile" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:51 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:53 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:59 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:444 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:61 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:446 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:71 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:73 msgid "This profile is intended for the SONY PRS 300." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:80 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:484 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:82 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:486 msgid "This profile is intended for the SONY PRS-900." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:88 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:513 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:90 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:515 msgid "This profile is intended for the Microsoft Reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:99 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:524 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:101 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:526 msgid "This profile is intended for the Mobipocket books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:112 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:537 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:114 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:539 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:124 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:549 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:126 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:551 msgid "This profile is intended for the Hanlin V5 and its clones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:134 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:557 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:136 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:559 msgid "This profile is intended for the Cybook G3." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:147 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:570 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:149 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:572 msgid "This profile is intended for the Cybook Opus." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:159 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:583 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:161 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:585 msgid "This profile is intended for the Amazon Kindle." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:171 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:631 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:173 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:633 msgid "This profile is intended for the Irex Illiad." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:183 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:644 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:185 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:646 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:196 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:658 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:198 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:660 msgid "This profile is intended for the IRex Digital Reader 800." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:208 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:672 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:210 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:674 msgid "This profile is intended for the B&N Nook." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:230 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:232 msgid "Output profile" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:234 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:236 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:276 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:278 msgid "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:435 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:437 msgid "Intended for generic tablet devices, does no resizing of images" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:462 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:464 msgid "This profile is intended for the Kobo Reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:475 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:477 msgid "This profile is intended for the SONY PRS-300." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:493 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:495 msgid "This profile is intended for the 5-inch JetBook." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:502 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:504 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:609 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:611 msgid "This profile is intended for the Amazon Kindle DX." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:684 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:686 msgid "This profile is intended for the B&N Nook Color." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:695 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:697 msgid "This profile is intended for the Sanda Bambook." msgstr "" @@ -614,7 +614,7 @@ msgstr "" msgid "Comma separated list of directories to send e-books to on the device. The first one that exists will be used" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:98 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:99 msgid "Communicate with S60 phones." msgstr "" @@ -681,19 +681,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:882 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:888 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:918 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:257 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:264 #: /home/kovid/work/calibre/src/calibre/library/database2.py:187 #: /home/kovid/work/calibre/src/calibre/library/database2.py:200 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2015 -#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:149 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2022 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:150 msgid "News" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2554 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:21 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:560 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1978 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1996 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1985 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2003 msgid "Catalog" msgstr "" @@ -795,8 +795,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:102 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:113 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:268 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:300 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:279 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:311 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:256 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:274 msgid "Removing books from device..." @@ -864,14 +864,14 @@ msgstr "" msgid "Communicate with the Kobo Reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:49 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:51 msgid "The Kobo supports only one collection currently: the \"Im_Reading\" list. Create a tag called \"Im_Reading\" " msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:65 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:68 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:71 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:204 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:67 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:70 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:73 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:214 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:68 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:71 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:74 @@ -881,26 +881,26 @@ msgstr "" msgid "Getting list of books on device..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:304 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:311 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:315 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:322 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:281 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:286 msgid "Removing books from device metadata listing..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:316 -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:351 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:327 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:362 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:219 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:250 msgid "Adding books to device metadata listing..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:428 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:262 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:445 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:268 msgid "Not Implemented" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:429 +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:446 msgid "\".kobo\" files do not exist on the device as books instead, they are rows in the sqlite database. Currently they cannot be exported or viewed." msgstr "" @@ -1578,9 +1578,9 @@ msgstr "" msgid "Start" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/fb2ml.py:147 +#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/fb2ml.py:151 #: /home/kovid/work/calibre/src/calibre/ebooks/rb/rbml.py:102 -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/txtml.py:77 +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/txtml.py:78 msgid "Table of Contents:" msgstr "" @@ -1592,7 +1592,7 @@ msgstr "" #: /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 +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:36 msgid "Add Table of Contents to beginning of the book." msgstr "" @@ -1600,6 +1600,22 @@ msgstr "" msgid "Try to turn chapters into individual sections. WARNING: This option is experimental. It can cause conversion to fail. It can also produce unexpected output." msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/output.py:30 +msgid "Try to turn chapters into individual sections using the internal structure of the ebook. This works well for EPUB books that have been internally split by chapter." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/output.py:35 +msgid "Wrap all h1 tags with fb2 title elements." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/output.py:38 +msgid "Wrap all h2 tags with fb2 title elements." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/output.py:41 +msgid "Wrap all h3 tags with fb2 title elements." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:249 msgid "Traverse links in HTML files breadth first. Normally, they are traversed depth first." msgstr "" @@ -1889,102 +1905,102 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:533 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:59 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:448 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:492 msgid "No" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:533 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:59 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:448 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:492 msgid "Yes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:605 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:607 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:45 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:373 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:923 -#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:927 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:304 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:570 msgid "Title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:606 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:608 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:378 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:924 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:928 msgid "Author(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:607 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:609 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:61 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:72 msgid "Publisher" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:608 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:610 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:49 msgid "Producer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:609 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:611 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:39 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:189 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:108 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:79 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:325 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1131 -#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1135 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:188 msgid "Comments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:611 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:160 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:613 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:166 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:29 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:73 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:313 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1127 -#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1131 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:161 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:655 msgid "Tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:613 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:158 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:615 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:74 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:330 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1136 -#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1140 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:109 msgid "Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:614 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:616 msgid "Language" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:616 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1119 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:618 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1123 msgid "Timestamp" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:618 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:157 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:620 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:163 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:70 -#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:258 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:259 msgid "Published" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:620 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:622 msgid "Rights" msgstr "" @@ -2327,7 +2343,7 @@ msgid "%s format books are not supported" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:98 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:214 msgid "Book %s of %s" msgstr "" @@ -2335,7 +2351,11 @@ msgstr "" msgid "HTML TOC generation options." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:159 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:130 +msgid "Unknown publisher" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:165 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:71 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:653 msgid "Rating" @@ -2597,6 +2617,10 @@ msgstr "" msgid "Specify the character encoding of the output document. The default is cp1252." msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/pml/output.py:40 +msgid "Do not reduce the size or bit depth of images. Images have their size and depth reduced by default to accommodate applications that can not convert images on their own such as Dropbook." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:256 msgid "" "This RTF file has a feature calibre does not support. Convert it to HTML first and then try it.\n" @@ -2609,7 +2633,7 @@ msgid "Specify the character encoding of the output document. The default is utf msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:29 -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:38 +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:39 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 "" @@ -2655,18 +2679,30 @@ msgstr "" msgid "Do not insert a Table of Contents into the output text." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:24 +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:25 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 +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:31 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:45 +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:46 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:50 +msgid "Produce Markdown formatted text." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:53 +msgid "Do not remove links within the document. This is only useful when paired with the markdown-format option becauselinks are always removed with plain text output." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:58 +msgid "Do not remove image references within the document. This is only useful when paired with the markdown-format option becauseimage references are always removed with plain text output." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:67 msgid "Send file to storage card instead of main memory by default" msgstr "" @@ -2792,139 +2828,139 @@ msgstr "" msgid "Choose Files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:26 msgid "Add books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:27 msgid "Add books to the calibre library/device from files on your computer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:28 msgid "A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:33 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:34 msgid "Add books from a single directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:36 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/actions/add.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:40 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/actions/add.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:44 msgid "Add Empty book. (Book entry with no formats)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:46 msgid "Add from ISBN" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:85 msgid "How many empty books?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:86 msgid "How many empty books should be added?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:147 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:212 msgid "Uploading books to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:164 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:299 msgid "Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:171 msgid "EPUB Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:172 msgid "LRF Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:173 msgid "HTML Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:174 msgid "LIT Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:175 msgid "MOBI Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:176 msgid "Topaz books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:177 msgid "Text books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:178 msgid "PDF Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:179 msgid "SNB Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:180 msgid "Comics" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:181 msgid "Archives" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:185 msgid "Supported books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:221 msgid "Merged some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:222 msgid "Some duplicates were found and merged into the following existing books:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:225 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:231 msgid "Failed to read metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:226 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:232 msgid "Failed to read metadata from the following" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:245 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:250 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:269 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:256 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:275 msgid "Add to library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:250 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:256 #: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:56 #: /home/kovid/work/calibre/src/calibre/gui2/actions/tweak_epub.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:94 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:135 msgid "No book selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:269 msgid "The following books are virtual and cannot be added to the calibre library:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:269 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:275 msgid "No book files found" msgstr "" @@ -2957,8 +2993,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:124 #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:212 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:92 msgid "No books selected" msgstr "" @@ -3000,30 +3036,30 @@ msgstr "" msgid "No books selected to generate catalog for" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:54 msgid "Generating %s catalog..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:230 msgid "No books found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:60 msgid "" "No books to catalog\n" "Check exclude tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:70 msgid "Catalog generated." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:73 msgid "Export Catalog Directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:74 msgid "Select destination for %s.%s" msgstr "" @@ -3178,7 +3214,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:391 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:742 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:748 msgid "Not allowed" msgstr "" @@ -3249,7 +3285,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:664 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:687 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:699 #: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:190 msgid "Failed" msgstr "" @@ -3464,28 +3500,28 @@ msgid "Downloading %s for %d book(s)" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:159 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:174 msgid "Cannot edit metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:188 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:214 msgid "Cannot merge books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:215 msgid "At least two books must be selected for merging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:220 msgid "Book formats and metadata from the selected books will be added to the <b>first selected book</b> (%s). ISBN will <i>not</i> be merged.<br><br> The second and subsequently selected books will not be deleted or changed.<br><br>Please confirm you want to proceed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:232 msgid "Book formats and metadata from the selected books will be merged into the <b>first selected book</b> (%s). ISBN will <i>not</i> be merged.<br><br>After merger the second and subsequently selected books will be <b>deleted</b>. <br><br>All book formats of the first selected book will be kept and any duplicate formats in the second and subsequently selected books will be permanently <b>deleted</b> from your computer.<br><br> Are you <b>sure</b> you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:245 msgid "You are about to merge more than 5 books. Are you <b>sure</b> you want to proceed?" msgstr "" @@ -3701,28 +3737,36 @@ msgid "View specific format" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:94 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:174 msgid "Cannot view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:105 #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77 msgid "Choose the format to view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:116 +msgid "Format unavailable" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:117 +msgid "Not all the selected books were available in the %s format. You should convert them first." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:124 msgid "Multiple Books Selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:125 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/actions/view.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:134 msgid "Cannot open folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:159 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:175 msgid "%s has no available formats." msgstr "" @@ -3921,32 +3965,32 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:25 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:49 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:417 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:124 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:125 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:126 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:127 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:135 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:320 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1117 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1121 msgid "Path" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:26 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:127 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:129 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:130 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:131 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:319 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:24 -#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:117 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:118 msgid "Formats" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:27 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:927 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1120 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:931 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1124 msgid "Collections" msgstr "" @@ -3959,8 +4003,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:312 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:318 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:324 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1126 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1130 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1134 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:83 @@ -3968,7 +4012,7 @@ msgstr "" msgid "None" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:416 msgid "Double-click to open Book Details window" msgstr "" @@ -3978,7 +4022,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /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/catalog/catalog_epub_mobi.py:19 #: /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 @@ -3989,6 +4033,7 @@ msgstr "" #: /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/pml_output.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:13 @@ -3998,13 +4043,14 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /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/catalog/catalog_epub_mobi.py:19 #: /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/pml_output.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:17 @@ -4013,13 +4059,13 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:95 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:53 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:33 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:36 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:127 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:171 @@ -4029,12 +4075,13 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:40 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:43 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:36 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:33 #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:39 #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:80 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:51 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:55 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:72 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:82 @@ -4132,32 +4179,27 @@ msgstr "" msgid "CSV/XML Options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:18 msgid "E-book options" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:96 msgid "'Don't include this book' tag:" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:84 -msgid "'Mark this book as read' tag:" -msgstr "" - -#: -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:97 msgid "Additional note tag prefix:" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:98 msgid "Regex pattern describing tags to exclude as genres:" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:99 msgid "" "Regex tips:\n" "- The default regex - \\[.+\\] - excludes genre tags of the form [tag], e.g., [Amazon Freebie]\n" @@ -4165,30 +4207,45 @@ msgid "" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:102 msgid "Include 'Titles' Section" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:103 msgid "Include 'Recently Added' Section" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:104 msgid "Sort numbers as text" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:105 msgid "Include 'Series' Section" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:106 msgid "Wishlist tag:" msgstr "" +#: +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:107 +msgid "Source column for read book" +msgstr "" + +#: +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:108 +msgid "Pattern for read book" +msgstr "" + +#: +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:109 +msgid "Books marked as read:" +msgstr "" + #: #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:33 msgid "Tab template for catalog.ui" @@ -4364,17 +4421,34 @@ msgstr "" msgid "FB2 Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:37 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:49 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:37 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:34 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:61 msgid "&Inline TOC" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:50 msgid "Sectionize Chapters (Use with care!)" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:51 +msgid "Sectionize Chapters using file structure" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:52 +msgid "Wrap h1 tags with <title> elements" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:53 +msgid "Wrap h2 tags with <title> elements" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:54 +msgid "Wrap h3 tags with <title> elements" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:104 msgid "Font rescaling wizard" msgstr "" @@ -4582,33 +4656,33 @@ msgid "Set the metadata. The output file will contain as much of this metadata a msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:168 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:166 msgid "Choose cover for " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:175 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:173 msgid "Cannot read" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:174 msgid "You do not have permission to read the file: " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:184 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:191 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:182 msgid "Error reading file" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:185 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:183 msgid "<p>There was an error reading from file: <br /><b>" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:192 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:191 msgid " is not a valid picture" msgstr "" @@ -4818,6 +4892,14 @@ msgstr "" msgid "Preserve &aspect ratio of cover" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pml_output.py:14 +msgid "PMLZ Output" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:38 +msgid "Do not reduce image size and depth" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output.py:14 msgid "RB Output" msgstr "" @@ -5037,18 +5119,30 @@ msgstr "" msgid "TXT Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:60 msgid "&Line ending style:" msgstr "" -#: /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:62 msgid "&Maximum line length:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:63 msgid "Force maximum line length" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:64 +msgid "Apply Markdown formatting to text" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:65 +msgid "Do not remove links (<a> tags) before processing" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:66 +msgid "Do not remove image references before processing" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:56 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:78 @@ -5146,7 +5240,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:145 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:270 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:448 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:492 #: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:131 #: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:206 @@ -5171,28 +5265,40 @@ msgstr "" msgid " index:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:493 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:332 +msgid "The enumeration \"{0}\" contains an invalid value that will be set to the default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:492 +msgid "Do not change" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:541 msgid "Remove series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:496 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:544 msgid "Automatically number books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:499 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:547 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:367 msgid "Force numbers to start with " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:609 +msgid "The enumeration \"{0}\" contains invalid values that will not appear in the list" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:665 msgid "Remove all tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:583 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:686 msgid "tags to add" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:588 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:691 msgid "tags to remove" msgstr "" @@ -5361,14 +5467,14 @@ msgid "<p>Cannot upload books to device there is no more free space available " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget.py:89 -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:324 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:356 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:234 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:57 msgid "Invalid template" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget.py:90 -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:357 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:235 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:58 msgid "The template %s is invalid:" @@ -5463,33 +5569,45 @@ msgstr "" msgid "Copy &to clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:45 +msgid "Delete marked files (checked subitems)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:51 +msgid "Fix marked sections (checked fixable items)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:61 msgid "Names to ignore:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:66 msgid "Enter comma-separated standard file name wildcards, such as synctoy*.dat" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:69 msgid "Extensions to ignore" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:74 msgid "Enter comma-separated extensions without a leading dot. Used only in book folders" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:111 +msgid "(fixable)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:134 msgid "Path from library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:134 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:89 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:248 msgid "Name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:158 msgid "The marked files and folders will be <b>permanently deleted</b>. Are you sure?" msgstr "" @@ -5612,16 +5730,16 @@ msgstr "" #: #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:69 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:925 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:31 -#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:929 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:33 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:295 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569 msgid "Date" msgstr "" #: #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1116 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1120 msgid "Format" msgstr "" @@ -5636,13 +5754,13 @@ msgstr "" #: #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:115 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:684 msgid "Invalid author name" msgstr "" #: #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:598 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:685 msgid "Author names cannot contain & characters." msgstr "" @@ -5819,45 +5937,49 @@ msgstr "" msgid "Editing meta information for <b>%d books</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:237 +msgid "Immediately make all changes without closing the dialog. This operation cannot be canceled or undone" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:273 msgid "Book %d:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:276 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:288 msgid "<b>You can destroy your library using this feature.</b> Changes are permanent. There is no undo function. You are strongly encouraged to back up your library before proceeding.<p>Search and replace in text fields using character matching or regular expressions. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:284 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:296 msgid "In character mode, the field is searched for the entered search text. The text is replaced by the specified replacement text everywhere it is found in the specified field. After replacement is finished, the text can be changed to upper-case, lower-case, or title-case. If the case-sensitive check box is checked, the search text must match exactly. If it is unchecked, the search text will match both upper- and lower-case letters" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:307 msgid "In regular expression mode, the search text is an arbitrary python-compatible regular expression. The replacement text can contain backreferences to parenthesized expressions in the pattern. The search is not anchored, and can match and replace multiple times on the same string. The modification functions (lower-case etc) are applied to the matched text, not to the field as a whole. The destination box specifies the field where the result after matching and replacement is to be assigned. You can replace the text in the field, or prepend or append the matched text. See <a href=\"http://docs.python.org/library/re.html\"> this reference</a> for more information on python's regular expressions, and in particular the 'sub' function." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:452 msgid "You must specify a destination when source is a composite field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:532 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:540 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:635 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:544 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:647 msgid "Search/replace invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:545 msgid "Authors cannot be set to the empty string. Book title %s not processed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:541 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:553 msgid "Title cannot be set to the empty string. Book title %s not processed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:636 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:648 msgid "Search pattern is invalid: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:673 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:685 msgid "" "Applying changes to %d books.\n" "Phase {0} {1}%%." @@ -6085,147 +6207,162 @@ msgstr "" msgid "&Search and replace" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:93 msgid "Last modified: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:133 -msgid "Not a valid picture" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:150 -msgid "Specify title and author" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:151 -msgid "You must specify a title and author before generating a cover" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:169 -msgid "Choose formats for " -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:200 -msgid "No permission" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:201 -msgid "You do not have permission to read the following files:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:228 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:229 -msgid "No format selected" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:240 -msgid "Could not read metadata" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:241 -msgid "Could not read metadata from %s format" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:289 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:123 msgid "Could not read cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:118 msgid "Could not read cover from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:296 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:124 msgid "The cover in the %s format is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:351 -msgid " The green color indicates that the current author sort matches the current author" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:153 +msgid "Cover size: %dx%d pixels" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:354 -msgid " The red color indicates that the current author sort does not match the current author" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:190 +msgid "Not a valid picture" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:359 -msgid "Abort the editing of all remaining books" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:208 +msgid "Specify title and author" 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 -msgid "This ISBN number is valid" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:209 +msgid "You must specify a title and author before generating a cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:532 -msgid "This ISBN number is invalid" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:611 -msgid "Tags changed" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:612 -msgid "You have changed the tags. In order to use the tags editor, you must either discard or apply these changes" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:639 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:242 msgid "Downloading cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:651 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:656 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:662 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:667 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:254 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:259 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:265 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:270 msgid "Cannot fetch cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:652 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:663 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:668 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:255 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:266 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:271 msgid "<b>Could not fetch cover.</b><br/>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:653 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:256 msgid "The download timed out." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:657 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:260 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:669 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:272 msgid "For the error message from each cover source, click Show details below." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:676 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:279 msgid "Bad cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:677 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:280 msgid "The cover is not a valid picture" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:710 -msgid "There were errors" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:298 +msgid "Choose formats for " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:329 +msgid "No permission" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:330 +msgid "You do not have permission to read the following files:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:358 +msgid "No format selected" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:369 +msgid "Could not read metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:370 +msgid "Could not read metadata from %s format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:441 +msgid " The green color indicates that the current author sort matches the current author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:444 +msgid " The red color indicates that the current author sort does not match the current author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:449 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:101 +msgid "Previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:452 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:460 +msgid "Save changes and edit the metadata of %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:457 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:102 +msgid "Next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:631 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:636 +msgid "This ISBN number is valid" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:639 +msgid "This ISBN number is invalid" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:711 +msgid "Tags changed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:712 +msgid "You have changed the tags. In order to use the tags editor, you must either discard or apply these changes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:750 +msgid "There were errors" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:751 msgid "There were errors downloading social metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:742 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:782 msgid "Cannot fetch metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:743 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:783 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:833 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:878 msgid "Permission denied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:834 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:879 msgid "Could not open %s. Is it being used by another program?" msgstr "" @@ -6401,60 +6538,64 @@ msgstr "" msgid "Change the contents of the saved search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:35 +msgid "&Search:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:133 msgid "Need username and password" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:134 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:166 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:173 msgid "Account" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:174 msgid "(optional)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:175 msgid "(required)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:192 msgid "Created by: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:199 msgid "Last downloaded: never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:207 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:214 msgid "%d days, %d hours and %d minutes ago" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:216 msgid "Last downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:240 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:197 msgid "Schedule news download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:236 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:243 msgid "Add a custom news source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:248 msgid "Download all scheduled new sources" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:341 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:348 msgid "No internet connection" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:342 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:349 msgid "Cannot download news as no internet connection is active" msgstr "" @@ -6675,12 +6816,12 @@ msgid "Choose formats" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 -#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:97 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:98 msgid "Authors" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50 -#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:128 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:129 msgid "Publishers" msgstr "" @@ -6790,12 +6931,12 @@ msgid "%s (was %s)" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:587 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:674 msgid "Item is blank" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:588 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:675 msgid "An item cannot be set to nothing. Delete it instead." msgstr "" @@ -7175,50 +7316,50 @@ msgstr "" msgid "Regular expression (?P<isbn>)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:104 msgid "Cover Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:109 msgid "Shift+Alt+B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:123 msgid "Tag Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:125 msgid "Shift+Alt+T" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:145 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29 msgid "version" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30 msgid "created by Kovid Goyal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:164 msgid "Connected " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:176 msgid "Update found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:207 -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:221 msgid "Book Details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:213 msgid "Alt+D" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:223 msgid "Shift+Alt+D" msgstr "" @@ -7307,7 +7448,7 @@ msgid "Show books in the main memory of the device" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:67 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:820 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:826 msgid "Card A" msgstr "" @@ -7316,7 +7457,7 @@ msgid "Show books in storage card A" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:69 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:822 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:828 msgid "Card B" msgstr "" @@ -7368,21 +7509,21 @@ msgstr "" msgid "Delete current saved search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:317 msgid "N" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:317 msgid "Y" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:66 -#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:240 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:241 msgid "On Device" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:68 -#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:285 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:286 msgid "Size (MB)" msgstr "" @@ -7391,77 +7532,77 @@ msgid "Book %s of %s." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:693 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1236 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:414 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1240 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:450 msgid "The lookup/search name is \"{0}\"" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:699 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1238 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1242 msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:922 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:926 msgid "In Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:926 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:930 msgid "Size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1136 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1140 msgid "Book <font face=\"serif\">%s</font> of %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1216 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1220 msgid "Marked for deletion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1219 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1223 msgid "Double click to <b>edit</b> me<br><br>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:149 msgid "Hide column %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:154 msgid "Sort on %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:155 msgid "Ascending" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:158 msgid "Descending" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 msgid "Change text alignment for %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:172 msgid "Left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:172 msgid "Right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:173 msgid "Center" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:192 msgid "Show column" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:204 msgid "Restore default layout" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:743 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:749 msgid "Dropping onto a device is not supported. First add the book to the calibre library." msgstr "" @@ -7490,7 +7631,7 @@ msgid "<b>No matches</b> for the search phrase <i>%s</i> 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:446 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:448 msgid "No matches found" msgstr "" @@ -7895,118 +8036,138 @@ msgid "Text column for keeping series-like information" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:33 -msgid "Floating point numbers" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:31 +msgid "Text, but with a fixed set of permitted values" msgstr "" #: #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:35 -msgid "Integers" +msgid "Floating point numbers" msgstr "" #: #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:37 +msgid "Integers" +msgstr "" + +#: +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:39 msgid "Ratings, shown with stars" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:40 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:42 msgid "Yes/No" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:44 msgid "Column built from other columns" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:74 msgid "No column selected" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:75 msgid "No column has been selected" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:79 msgid "Selected column is not a user-defined column" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:117 msgid "No lookup name was provided" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:119 msgid "The lookup name must contain only lower case letters, digits and underscores, and start with a letter" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:122 msgid "Lookup names cannot end with _index, because these names are reserved for the index of a series column." msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:132 msgid "No column heading was provided" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:139 msgid "The lookup name %s is already used" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:151 msgid "The heading %s is already used" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:162 msgid "You must enter a template for composite columns" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:127 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:167 +msgid "You must enter at least one value for enumeration columns" +msgstr "" + +#: +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:172 +msgid "You cannot provide the empty value, as it is included by default" +msgstr "" + +#: +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:176 +msgid "The value \"{0}\" is in the list more than once" +msgstr "" + +#: +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:172 msgid "Create or edit custom columns" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:146 msgid "&Lookup name" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:147 msgid "Column &heading" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:148 msgid "Used for searching the column. Must contain only digits and lower case letters." msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:149 msgid "Column heading in the library view and category name in the tag browser" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:150 msgid "Column &type" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:151 msgid "What kind of information will be kept in the column." msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:152 msgid "" "<p>Date format. Use 1-4 'd's for day, 1-4 'M's for month, and 2 or 4 'y's for year.</p>\n" "<p>For example:\n" @@ -8017,40 +8178,60 @@ msgid "" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:158 msgid "Use MMM yyyy for month + year, yyyy for year only" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:159 msgid "Default: dd MMM yyyy." msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:160 msgid "Format for &dates" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:143 -msgid "<p>Field template. Uses the same syntax as save templates." +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:161 +msgid "Field template. Uses the same syntax as save templates." msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:162 msgid "Similar to save templates. For example, {title} {isbn}" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:170 msgid "Default: (nothing)" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:164 msgid "&Template" msgstr "" +#: +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:165 +msgid "Values" +msgstr "" + +#: +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:166 +msgid "" +"A comma-separated list of permitted values. You can specify\n" +"empty values by entering only the comma. For example, the list\n" +"',one,two,three' has 4 valid values, one of them empty. The first\n" +"value in the list is the default." +msgstr "" + +#: +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:171 +msgid "The first value entered will be the default value for this enumeration" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/preferences/device_debug.py:21 msgid "Getting debug information" msgstr "" @@ -8508,7 +8689,7 @@ msgid "Here you can control how calibre will save your books when you click the msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:331 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:329 msgid "Failed to start content server" msgstr "" @@ -8683,43 +8864,43 @@ msgstr "" msgid "&Current tweaks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:270 +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:262 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:574 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:272 msgid "Search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:306 msgid "The selected search will be <b>permanently deleted</b>. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:349 msgid "Search (For Advanced Search click the button to the left)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:406 +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:411 msgid "Saved Searches" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:414 +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:413 msgid "Choose saved search or enter name for new saved search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/search_restriction_mixin.py:10 +#: /home/kovid/work/calibre/src/calibre/gui2/search_restriction_mixin.py:12 msgid "Restrict to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/search_restriction_mixin.py:16 -#: /home/kovid/work/calibre/src/calibre/gui2/search_restriction_mixin.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/search_restriction_mixin.py:18 +#: /home/kovid/work/calibre/src/calibre/gui2/search_restriction_mixin.py:68 msgid "(all books)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/search_restriction_mixin.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/search_restriction_mixin.py:62 msgid "({0} of {1})" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/search_restriction_mixin.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/search_restriction_mixin.py:70 msgid "({0} of all)" msgstr "" @@ -8783,94 +8964,94 @@ msgstr "" msgid "&Alternate shortcut:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:215 msgid "Rename '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:219 msgid "Edit sort for '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:224 msgid "Hide category %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:227 msgid "Show category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:236 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:240 msgid "Manage %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:230 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:243 msgid "Manage Saved Searches" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:237 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:250 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:254 msgid "Manage User Categories" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:261 msgid "Show all categories" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:458 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:545 msgid "Changing the authors for several books can take a while. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:463 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:550 msgid "Changing the metadata for that many books can take a while. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:519 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:296 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:606 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:294 msgid "Searches" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:602 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:689 msgid "Duplicate search name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:603 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:690 msgid "The saved search name %s is already used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:878 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:971 msgid "Sort by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:878 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:971 msgid "Sort by popularity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:879 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:972 msgid "Sort by average rating" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:882 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:975 msgid "Set the sort order for entries in the Tag Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:888 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:981 msgid "Match all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:888 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:981 msgid "Match any" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:893 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:986 msgid "When selecting multiple entries in the Tag Browser match any or all of them" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:897 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:990 msgid "Manage &user categories" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:900 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:993 msgid "Add your own categories to the Tag Browser" msgstr "" @@ -8909,59 +9090,59 @@ msgstr "" msgid "The following books have already been converted to %s format. Do you wish to reconvert them?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:169 msgid "&Restore" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:171 msgid "&Donate to support calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:175 msgid "&Eject connected device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:216 msgid "Calibre Quick Start Guide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:439 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:437 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:448 msgid "Conversion Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:449 msgid "<p>Could not convert: %s<p>It is a <a href=\"%s\">DRM</a>ed book. You must first remove the DRM using third party tools." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:465 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:463 msgid "Recipe Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:481 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:479 msgid "<b>Failed</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:517 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:515 msgid "is the result of the efforts of many volunteers from all over the world. If you find it useful, please consider donating to support its development. Your donation helps keep calibre development going." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:543 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:541 msgid "There are active jobs. Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:544 msgid "" " is communicating with the device!<br>\n" " Quitting may cause corruption on the device.<br>\n" " Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:548 msgid "WARNING: Active jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:628 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:626 msgid "will keep running in the system tray. To close it, choose <b>Quit</b> in the context menu of the system tray." msgstr "" @@ -9132,7 +9313,7 @@ msgid "Options to customize the ebook viewer" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:43 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:711 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:720 msgid "Remember last used window size" msgstr "" @@ -9270,95 +9451,95 @@ msgstr "" msgid "Book format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:189 msgid "Position in book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:196 msgid "Go to a reference. To get reference numbers, use the reference mode." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:204 msgid "Search for text in book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:277 msgid "Print Preview" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:314 msgid "Connecting to dict.org to lookup: <b>%s</b>…" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:413 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:415 msgid "Choose ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:414 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:416 msgid "Ebooks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:447 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:449 msgid "No matches found for: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:488 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:492 msgid "Loading flow..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:530 msgid "Laying out %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:561 msgid "Bookmark #%d" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:559 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:565 msgid "Add bookmark" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:566 msgid "Enter title for bookmark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:570 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:576 msgid "Manage Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:613 msgid "Loading ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:615 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:621 msgid "DRM Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:616 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:622 msgid "<p>This book is protected by <a href=\"%s\">DRM</a>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:620 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:626 msgid "Could not open ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:698 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:707 msgid "Options to control the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:705 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:714 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:708 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:717 msgid "If specified, viewer window will try to open full screen when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:713 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:722 msgid "Print javascript alert and console messages to the console" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:719 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:728 msgid "" "%prog [options] file\n" "\n" @@ -9749,33 +9930,33 @@ msgstr "" msgid "daysago" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:539 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:549 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:554 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:564 msgid "unchecked" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:539 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:549 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:554 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:564 #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:184 msgid "no" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:542 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:552 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:557 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:567 msgid "checked" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:542 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:552 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:557 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:567 #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:184 msgid "yes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:546 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:561 msgid "blank" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:546 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:561 msgid "empty" msgstr "" @@ -9927,9 +10108,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalog.py:613 msgid "" -"Tag indicating book has been read.\n" +"field:pattern indicating book has been read.\n" "Default: '%default'\n" -"Applies to: ePub, MOBI output formats" +"Applies to ePub, MOBI output formats" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalog.py:619 @@ -9939,35 +10120,43 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/check_library.py:17 +#: /home/kovid/work/calibre/src/calibre/library/check_library.py:26 msgid "Invalid titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/check_library.py:18 +#: /home/kovid/work/calibre/src/calibre/library/check_library.py:27 msgid "Extra titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/check_library.py:19 +#: /home/kovid/work/calibre/src/calibre/library/check_library.py:28 msgid "Invalid authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/check_library.py:20 +#: /home/kovid/work/calibre/src/calibre/library/check_library.py:29 msgid "Extra authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/check_library.py:21 +#: /home/kovid/work/calibre/src/calibre/library/check_library.py:30 msgid "Missing book formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/check_library.py:22 +#: /home/kovid/work/calibre/src/calibre/library/check_library.py:31 msgid "Extra book formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/check_library.py:23 +#: /home/kovid/work/calibre/src/calibre/library/check_library.py:32 msgid "Unknown files in books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/check_library.py:24 +#: /home/kovid/work/calibre/src/calibre/library/check_library.py:33 +msgid "Missing covers in books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/check_library.py:34 +msgid "Extra covers in books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/check_library.py:35 msgid "Folders raising exception" msgstr "" @@ -10005,7 +10194,7 @@ msgid "Filter the results by the search query. For the format of the search quer msgstr "" #: /home/kovid/work/calibre/src/calibre/library/cli.py:143 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1044 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1045 msgid "The maximum width of a single line in the output. Defaults to detecting screen size." msgstr "" @@ -10182,46 +10371,46 @@ msgid "This column stores tag like data (i.e. multiple comma separated values). msgstr "" #: /home/kovid/work/calibre/src/calibre/library/cli.py:567 -msgid "A dictionary of options to customize how the data in this column will be interpreted." +msgid "A dictionary of options to customize how the data in this column will be interpreted. This is a JSON string. For enumeration columns, use --display='{\"enum_values\":[\"val1\", \"val2\"]}'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:580 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:581 msgid "You must specify label, name and datatype" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:641 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:642 msgid "" "\n" -" %prog catalog /path/to/destination.(csv|epub|mobi|xml ...) [options]\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:655 +#: /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:659 +#: /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:665 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:666 #: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:499 msgid "Show detailed output information. Useful for debugging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:678 +#: /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:727 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:728 msgid "" "\n" " %prog set_custom [options] column id value\n" @@ -10233,15 +10422,15 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:738 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:739 msgid "If the column stores multiple values, append the specified values to the existing ones, instead of replacing them." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:749 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:750 msgid "Error: You must specify a field name, id and value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:768 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:769 msgid "" "\n" " %prog custom_columns [options]\n" @@ -10250,19 +10439,19 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:775 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:776 msgid "Show details for each column." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:787 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:788 msgid "You will lose all data in the column: %r. Are you sure (y/n)? " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:789 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:790 msgid "y" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:795 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:796 msgid "" "\n" " %prog remove_custom_column [options] label\n" @@ -10272,15 +10461,15 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:803 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:804 msgid "Do not ask for confirmation" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:813 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:814 msgid "Error: You must specify a column label" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:823 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:824 msgid "" "\n" " %prog saved_searches [options] list\n" @@ -10293,73 +10482,73 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:841 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:842 msgid "Error: You must specify an action (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:849 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:850 msgid "Name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:850 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:851 msgid "Search string:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:856 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:857 msgid "Error: You must specify a name and a search string" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:859 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:860 msgid "added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:864 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:865 msgid "Error: You must specify a name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:867 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:868 msgid "removed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:871 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:872 msgid "Error: Action %s not recognized, must be one of: (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:879 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:880 msgid "" "%prog check_library [options]\n" "\n" "Perform some checks on the filesystem representing a library. Reports are {0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:886 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1036 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:887 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1037 msgid "Output in CSV" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:889 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:890 msgid "" "Comma-separated list of reports.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:893 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:894 msgid "" "Comma-separated list of extensions to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:897 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:898 msgid "" "Comma-separated list of names to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:927 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:928 msgid "Unknown report check" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:960 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:961 msgid "" "%prog restore_database [options]\n" "\n" @@ -10374,15 +10563,15 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:975 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:976 msgid "Really do the recovery. The command will not run unless this option is specified." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:988 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:989 msgid "You must provide the --really-do-it option to do a recovery" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1025 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1026 msgid "" "%prog list_categories [options]\n" "\n" @@ -10390,29 +10579,29 @@ msgid "" "information is the equivalent of what is shown in the tags pane.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1033 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1034 msgid "Output only the number of items in a category instead of the counts per item within the category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1038 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039 msgid "The character to put around the category value in CSV mode. Default is quotes (\")." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1041 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1042 msgid "" "Comma-separated list of category lookup names.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1047 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1048 msgid "The string used to separate fields in CSV mode. Default is a comma." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1085 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1086 msgid "CATEGORY ITEMS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1154 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1155 msgid "" "%%prog command [options] [arguments]\n" "\n" @@ -10424,11 +10613,11 @@ msgid "" "For help on an individual command: %%prog command --help\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/custom_columns.py:544 +#: /home/kovid/work/calibre/src/calibre/library/custom_columns.py:554 msgid "No label was provided" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/custom_columns.py:546 +#: /home/kovid/work/calibre/src/calibre/library/custom_columns.py:556 msgid "The label must contain only lower case letters, digits and underscores, and start with a letter" msgstr "" @@ -10436,39 +10625,39 @@ msgstr "" msgid "%sAverage rating is %3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:818 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:824 msgid "Main" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2310 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2317 msgid "<p>Migrating old database to ebook library in %s<br><center>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2339 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2346 msgid "Copying <b>%s</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2356 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2363 msgid "Compacting database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2449 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2456 msgid "Checking SQL integrity..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2488 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2495 msgid "Checking for missing files." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2516 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2523 msgid "Checked id" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:139 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:140 msgid "Ratings" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:276 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:277 msgid "Title Sort" msgstr "" @@ -10635,14 +10824,6 @@ msgstr "" msgid "Last" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:101 -msgid "Previous" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:102 -msgid "Next" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:104 msgid "Browsing %d books" msgstr "" @@ -11184,12 +11365,12 @@ 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:193 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:194 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:194 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:195 msgid "Custom" msgstr "" From ca0df54bf3cd4dc9a2e8342685251e947a4653f6 Mon Sep 17 00:00:00 2001 From: Sengian <sengian1@gmail.com> Date: Fri, 3 Dec 2010 19:37:08 +0100 Subject: [PATCH 312/377] Add provisory fictionwise metadata --- src/calibre/ebooks/metadata/fictionwise.py | 370 +++++++++++++++++++++ 1 file changed, 370 insertions(+) create mode 100644 src/calibre/ebooks/metadata/fictionwise.py diff --git a/src/calibre/ebooks/metadata/fictionwise.py b/src/calibre/ebooks/metadata/fictionwise.py new file mode 100644 index 0000000000..828ea31c3a --- /dev/null +++ b/src/calibre/ebooks/metadata/fictionwise.py @@ -0,0 +1,370 @@ +from __future__ import with_statement +__license__ = 'GPL 3' +__copyright__ = '2010, sengian <sengian1@gmail.com>' +__docformat__ = 'restructuredtext en' + +import sys, textwrap, re +from urllib import urlencode + +from lxml import html, etree +from lxml.html import soupparser +from lxml.etree import tostring + +from calibre import browser, preferred_encoding +from calibre.ebooks.chardet import xml_to_unicode +from calibre.ebooks.metadata import MetaInformation, check_isbn, \ + authors_to_sort_string +from calibre.library.comments import sanitize_comments_html +from calibre.ebooks.metadata.fetch import MetadataSource +from calibre.utils.config import OptionParser +from calibre.utils.date import parse_date, utcnow + +class Fictionwise(MetadataSource): # {{{ + + author = 'Sengian' + name = 'Fictionwise' + description = _('Downloads metadata from Fictionwise') + + has_html_comments = True + + def fetch(self): + try: + self.results = search(self.title, self.book_author, self.publisher, + self.isbn, max_results=10, verbose=self.verbose) + except Exception, e: + self.exception = e + self.tb = traceback.format_exc() + + # }}} + + +def report(verbose): + if verbose: + import traceback + traceback.print_exc() + +class Query(object): + + BASE_URL = 'http://www.fictionwise.com/servlet/mw' + + def __init__(self, title=None, author=None, publisher=None, keywords=None, max_results=20): + assert not(title is None and author is None and publisher is None and keywords is None) + assert (max_results < 21) + + self.max_results = int(max_results) + + q = { 'template' : 'searchresults_adv.htm' , + 'searchtitle' : '', + 'searchauthor' : '', + 'searchpublisher' : '', + 'searchkeyword' : '', + #possibilities startoflast, fullname, lastfirst + 'searchauthortype' : 'startoflast', + 'searchcategory' : '', + 'searchcategory2' : '', + 'searchprice_s' : '0', + 'searchprice_e' : 'ANY', + 'searchformat' : '', + 'searchgeo' : 'US', + 'searchfwdatetype' : '', + #maybe use dates fields if needed? + #'sortorder' : 'DESC', + #many options available: b.SortTitle, a.SortName, + #b.DateFirstPublished, b.FWPublishDate + 'sortby' : 'b.SortTitle' + } + if title is not None: + q['searchtitle'] = title + if author is not None: + q['searchauthor'] = author + if publisher is not None: + q['searchpublisher'] = publisher + if keywords is not None: + q['searchkeyword'] = keywords + + if isinstance(q, unicode): + q = q.encode('utf-8') + self.urldata = urlencode(q) + + def __call__(self, browser, verbose): + if verbose: + print 'Query:', self.BASE_URL+self.urldata + + try: + raw = browser.open_novisit(self.BASE_URL, self.urldata).read() + except Exception, e: + report(verbose) + if callable(getattr(e, 'getcode', None)) and \ + e.getcode() == 404: + return + raise + if '<title>404 - ' in raw: + return + raw = xml_to_unicode(raw, strip_encoding_pats=True, + resolve_entities=True)[0] + try: + feed = soupparser.fromstring(raw) + except: + return + + # get list of results as links + results = feed.xpath("//table[3]/tr/td[2]/table/tr/td/p/table[2]/tr[@valign]") + results = results[:self.max_results] + results = [i.xpath('descendant-or-self::a')[0].get('href') for i in results] + #return feed if no links ie normally a single book or nothing + if not results: + results = [feed] + return results + +class ResultList(list): + + BASE_URL = 'http://www.fictionwise.com' + COLOR_VALUES = {'BLUE': 4, 'GREEN': 3, 'YELLOW': 2, 'RED': 1, 'NA': 0} + + def __init__(self): + self.retitle = re.compile(r'\[[^\[\]]+\]') + self.rechkauth = re.compile(r'.*book\s*by', re.I) + self.redesc = re.compile(r'book\s*description\s*:\s*(<br[^>]+>)*(?P<desc>.*)' \ + + '<br[^>]+>.{,15}publisher\s*:', re.I) + self.repub = re.compile(r'.*publisher\s*:\s*', re.I) + self.redate = re.compile(r'.*release\s*date\s*:\s*', re.I) + self.retag = re.compile(r'.*book\s*category\s*:\s*', re.I) + self.resplitbr = re.compile(r'<br[^>]+>', re.I) + self.recomment = re.compile(r'(?s)<!--.*?-->') + self.reimg = re.compile(r'<img[^>]*>', re.I) + self.resanitize = re.compile(r'\[HTML_REMOVED\]\s*', re.I) + self.renbcom = re.compile('(?P<nbcom>\d+)\s*Reader Ratings:') + self.recolor = re.compile('(?P<ncolor>[^/]+).gif') + self.resplitbrdiv = re.compile(r'(<br[^>]+>|</?div[^>]*>)', re.I) + self.reisbn = re.compile(r'.*ISBN\s*:\s*', re.I) + + def strip_tags_etree(self, etreeobj, invalid_tags): + for itag in invalid_tags: + for elt in etreeobj.getiterator(itag): + elt.drop_tag() + return etreeobj + + def clean_entry(self, entry, + invalid_tags = ('font', 'strong', 'b', 'ul', 'span', 'a'), + remove_tags_trees = ('script',)): + for it in entry[0].iterchildren(tag='table'): + entry[0].remove(it) + entry[0].remove(entry[0].xpath( 'descendant-or-self::p[1]')[0]) + entry = entry[0] + cleantree = self.strip_tags_etree(entry, invalid_tags) + for itag in remove_tags_trees: + for elts in cleantree.getiterator(itag): + elts.drop_tree() + return cleantree + + def output_entry(self, entry, prettyout = True, htmlrm="\d+"): + out = tostring(entry, pretty_print=prettyout) + reclean = re.compile('(\n+|\t+|\r+|&#'+htmlrm+';)') + return reclean.sub('', out) + + def get_title(self, entry): + title = entry.findtext('./') + return self.retitle.sub('', title).strip() + + def get_authors(self, entry): + authortext = entry.find('./br').tail + if not self.rechkauth.search(authortext): + return [] + #TODO: parse all tag if necessary + authortext = self.rechkauth.sub('', authortext) + return [a.strip() for a in authortext.split('&')] + + def get_rating(self, entrytable, verbose): + nbcomment = tostring(entrytable.getprevious()) + try: + nbcomment = self.renbcom.search(nbcomment).group("nbcom") + except: + report(verbose) + return None + hval = dict((self.COLOR_VALUES[self.recolor.search(image.get('src', default='NA.gif')).group("ncolor")], + float(image.get('height', default=0))) \ + for image in entrytable.getiterator('img')) + #ratings as x/5 + return 1.25*sum(k*v for (k, v) in hval.iteritems())/sum(hval.itervalues()) + + def get_description(self, entry): + description = self.output_entry(entry.find('./p'),htmlrm="") + description = self.redesc.search(description) + if not description and not description.group("desc"): + return None + #remove invalid tags + description = self.reimg.sub('', description.group("desc")) + description = self.recomment.sub('', description) + description = self.resanitize.sub('', sanitize_comments_html(description)) + return 'SUMMARY:\n' + re.sub(r'\n\s+</p>','\n</p>', description) + + def get_publisher(self, entry): + publisher = self.output_entry(entry.find('./p')) + publisher = filter(lambda x: self.repub.search(x) is not None, + self.resplitbr.split(publisher)) + if not len(publisher): + return None + publisher = self.repub.sub('', publisher[0]) + return publisher.split(',')[0].strip() + + def get_tags(self, entry): + tag = self.output_entry(entry.find('./p')) + tag = filter(lambda x: self.retag.search(x) is not None, + self.resplitbr.split(tag)) + if not len(tag): + return [] + return map(lambda x: x.strip(), self.retag.sub('', tag[0]).split('/')) + + def get_date(self, entry, verbose): + date = self.output_entry(entry.find('./p')) + date = filter(lambda x: self.redate.search(x) is not None, + self.resplitbr.split(date)) + if not len(date): + return None + #TODO: parse all tag if necessary + try: + d = self.redate.sub('', date[0]) + if d: + default = utcnow().replace(day=15) + d = parse_date(d, assume_utc=True, default=default) + else: + d = None + except: + report(verbose) + d = None + return d + + def get_ISBN(self, entry): + isbns = self.output_entry(entry.getchildren()[2]) + isbns = filter(lambda x: self.reisbn.search(x) is not None, + self.resplitbrdiv.split(isbns)) + if not len(isbns): + return None + #TODO: parse all tag if necessary + isbns = [self.reisbn.sub('', x) for x in isbns if check_isbn(self.reisbn.sub('', x))] + return sorted(isbns, cmp=lambda x,y:cmp(len(x), len(y)))[-1] + + def fill_MI(self, entry, title, authors, ratings, verbose): + mi = MetaInformation(title, authors) + mi.rating = ratings + mi.comments = self.get_description(entry) + mi.publisher = self.get_publisher(entry) + mi.tags = self.get_tags(entry) + mi.pubdate = self.get_date(entry, verbose) + mi.isbn = self.get_ISBN(entry) + mi.author_sort = authors_to_sort_string(authors) + # mi.language = self.get_language(x, verbose) + return mi + + def get_individual_metadata(self, browser, linkdata, verbose): + try: + raw = browser.open_novisit(self.BASE_URL + linkdata).read() + except Exception, e: + report(verbose) + if callable(getattr(e, 'getcode', None)) and \ + e.getcode() == 404: + return + raise + if '<title>404 - ' in raw: + report(verbose) + return + raw = xml_to_unicode(raw, strip_encoding_pats=True, + resolve_entities=True)[0] + try: + feed = soupparser.fromstring(raw) + except: + return + + # get results + return feed.xpath("//table[3]/tr/td[2]/table[1]/tr/td/font/table/tr/td") + + def populate(self, entries, browser, verbose=False): + for x in entries: + try: + entry = self.get_individual_metadata(browser, x, verbose) + entry = self.clean_entry(entry) + title = self.get_title(entry) + #ratings: get table for rating then drop + for elt in entry.getiterator('table'): + ratings = self.get_rating(elt, verbose) + elt.getprevious().drop_tree() + elt.drop_tree() + authors = self.get_authors(entry) + except Exception, e: + if verbose: + print 'Failed to get all details for an entry' + print e + continue + self.append(self.fill_MI(entry, title, authors, ratings, verbose)) + + def populate_single(self, feed, verbose=False): + try: + entry = feed.xpath("//table[3]/tr/td[2]/table[1]/tr/td/font/table/tr/td") + entry = self.clean_entry(entry) + title = self.get_title(entry) + #ratings: get table for rating then drop + for elt in entry.getiterator('table'): + ratings = self.get_rating(elt, verbose) + elt.getprevious().drop_tree() + elt.drop_tree() + authors = self.get_authors(entry) + except Exception, e: + if verbose: + print 'Failed to get all details for an entry' + print e + return + self.append(self.fill_MI(entry, title, authors, ratings, verbose)) + + +def search(title=None, author=None, publisher=None, isbn=None, + min_viewability='none', verbose=False, max_results=5, + keywords=None): + br = browser() + entries = Query(title=title, author=author, publisher=publisher, + keywords=keywords, max_results=max_results)(br, verbose) + + #List of entry + ans = ResultList() + if len(entries) > 1: + ans.populate(entries, br, verbose) + else: + ans.populate_single(entries[0], verbose) + return ans + + +def option_parser(): + parser = OptionParser(textwrap.dedent(\ + '''\ + %prog [options] + + Fetch book metadata from Fictionwise. You must specify one of title, author, + or keywords. No ISBN specification possible. Will fetch a maximum of 20 matches, + so you should make your query as specific as possible. + ''' + )) + parser.add_option('-t', '--title', help='Book title') + parser.add_option('-a', '--author', help='Book author(s)') + parser.add_option('-p', '--publisher', help='Book publisher') + parser.add_option('-k', '--keywords', help='Keywords') + parser.add_option('-m', '--max-results', default=20, + help='Maximum number of results to fetch') + parser.add_option('-v', '--verbose', default=0, action='count', + help='Be more verbose about errors') + return parser + +def main(args=sys.argv): + parser = option_parser() + opts, args = parser.parse_args(args) + try: + results = search(opts.title, opts.author, publisher=opts.publisher, + keywords=opts.keywords, verbose=opts.verbose, max_results=opts.max_results) + except AssertionError: + report(True) + parser.print_help() + return 1 + for result in results: + print unicode(result).encode(preferred_encoding, 'replace') + print + +if __name__ == '__main__': + sys.exit(main()) From 8fea5a64e5495833aac42124352012befefe998f Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Fri, 3 Dec 2010 12:09:31 -0700 Subject: [PATCH 313/377] ... --- src/calibre/utils/magick/magick.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/utils/magick/magick.c b/src/calibre/utils/magick/magick.c index 0aab5f1fd7..9dac37f2ff 100644 --- a/src/calibre/utils/magick/magick.c +++ b/src/calibre/utils/magick/magick.c @@ -414,7 +414,7 @@ magick_Image_load(magick_Image *self, PyObject *args, PyObject *kwargs) { // }}} -// Image.load {{{ +// Image.open {{{ static PyObject * magick_Image_read(magick_Image *self, PyObject *args, PyObject *kwargs) { const char *data; From 55e17f81a0af90476d265140d571d83143b462f3 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Fri, 3 Dec 2010 19:58:10 +0000 Subject: [PATCH 314/377] Fix #7780 - non-expanding boxes in create_custom_column.ui --- .../gui2/preferences/create_custom_column.ui | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/calibre/gui2/preferences/create_custom_column.ui b/src/calibre/gui2/preferences/create_custom_column.ui index bdf4f624a4..d4e85a24c9 100644 --- a/src/calibre/gui2/preferences/create_custom_column.ui +++ b/src/calibre/gui2/preferences/create_custom_column.ui @@ -152,7 +152,7 @@ <item> <widget class="QLineEdit" name="composite_box"> <property name="sizePolicy"> - <sizepolicy hsizetype="Maximum" vsizetype="Fixed"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> @@ -211,27 +211,27 @@ <layout class="QHBoxLayout" name="horizontalLayout_2"> <item> <widget class="QLineEdit" name="enum_box"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> <property name="toolTip"> <string>A comma-separated list of permitted values. The empty value is always included, and is the default. For example, the list 'one,two,three' has four values, the first of them being the empty value.</string> </property> - <property name="sizePolicy"> - <sizepolicy hsizetype="Maximum" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> </widget> </item> <item> <widget class="QLabel" name="enum_default_label"> - <property name="text"> - <string>Default: (nothing)</string> - </property> <property name="toolTip"> <string>The empty string is always the first value</string> </property> + <property name="text"> + <string>Default: (nothing)</string> + </property> </widget> </item> </layout> From d4f76eba5b58692fd4be1285cbc5e032f649484d Mon Sep 17 00:00:00 2001 From: John Schember <john@nachtimwald.com> Date: Fri, 3 Dec 2010 19:08:19 -0500 Subject: [PATCH 315/377] FB2 Output: Make FB2 output more compliant. This removes some features such as inline TOC and links. --- src/calibre/ebooks/fb2/fb2ml.py | 218 +++++++++++++------------------- 1 file changed, 87 insertions(+), 131 deletions(-) diff --git a/src/calibre/ebooks/fb2/fb2ml.py b/src/calibre/ebooks/fb2/fb2ml.py index 2a9a92612e..1c24213b46 100644 --- a/src/calibre/ebooks/fb2/fb2ml.py +++ b/src/calibre/ebooks/fb2/fb2ml.py @@ -32,7 +32,7 @@ TAG_MAP = { 'p' : 'p', 'li' : 'p', 'div': 'p', - 'br' : 'p', + 'br' : 'empty-line', } TAG_SPACE = [] @@ -42,7 +42,6 @@ TAG_IMAGES = [ ] TAG_LINKS = [ - 'a', ] BLOCK = [ @@ -56,9 +55,8 @@ STYLES = [ class FB2MLizer(object): ''' - Todo: * Ensure all style tags are inside of the p tags. - * Include more FB2 specific tags in the conversion. - * Handle reopening of a tag properly. + Todo: * Include more FB2 specific tags in the conversion. + * Handle a tags. * Figure out some way to turn oeb_book.toc items into <section><title> <p> to allow for readers to generate toc from the document. ''' @@ -66,7 +64,8 @@ class FB2MLizer(object): def __init__(self, log): self.log = log self.image_hrefs = {} - self.link_hrefs = {} + # Used to ensure text and tags are always within <p> and </p> + self.in_p = False def extract_content(self, oeb_book, opts): self.log.info('Converting XHTML to FB2 markup...') @@ -78,17 +77,13 @@ class FB2MLizer(object): self.image_hrefs = {} self.link_hrefs = {} output = [self.fb2_header()] - output.append(self.get_cover_page()) - output.append(u'ghji87yhjko0Caliblre-toc-placeholder-for-insertion-later8ujko0987yjk') output.append(self.get_text()) output.append(self.fb2_body_footer()) output.append(self.fb2mlize_images()) output.append(self.fb2_footer()) - output = ''.join(output).replace(u'ghji87yhjko0Caliblre-toc-placeholder-for-insertion-later8ujko0987yjk', self.get_toc()) - output = self.clean_text(output) - if self.opts.sectionize_chapters: - output = self.sectionize_chapters(output) - return u'<?xml version="1.0" encoding="UTF-8"?>\n%s' % etree.tostring(etree.fromstring(output), encoding=unicode, pretty_print=True) + output = self.clean_text(u''.join(output)) + #return u'<?xml version="1.0" encoding="UTF-8"?>\n%s' % etree.tostring(etree.fromstring(output), encoding=unicode, pretty_print=True) + return u'<?xml version="1.0" encoding="UTF-8"?>' + output def clean_text(self, text): text = re.sub(r'(?miu)<section>\s*</section>', '', text) @@ -116,88 +111,40 @@ class FB2MLizer(object): author_middle = ' '.join(author_parts[1:-2]) author_last = author_parts[-1] - return u'<FictionBook xmlns:xlink="http://www.w3.org/1999/xlink" ' \ - 'xmlns="http://www.gribuser.ru/xml/fictionbook/2.0">\n' \ - '<description>\n<title-info>\n ' \ - '<author>\n<first-name>%s</first-name>\n<middle-name>%s' \ - '</middle-name>\n<last-name>%s</last-name>\n</author>\n' \ - '<book-title>%s</book-title> ' \ - '</title-info><document-info> ' \ - '<program-used>%s - %s</program-used></document-info>\n' \ - '</description>\n<body>\n<section>' % tuple(map(prepare_string_for_xml, - (author_first, author_middle, - author_last, self.oeb_book.metadata.title[0].value, - __appname__, __version__))) - - def get_cover_page(self): - output = u'' - if 'cover' in self.oeb_book.guide: - output += '<image xlink:href="#cover.jpg" />' - self.image_hrefs[self.oeb_book.guide['cover'].href] = 'cover.jpg' - if 'titlepage' in self.oeb_book.guide: - self.log.debug('Generating cover page...') - href = self.oeb_book.guide['titlepage'].href - item = self.oeb_book.manifest.hrefs[href] - if item.spine_position is None: - stylizer = Stylizer(item.data, item.href, self.oeb_book, - self.opts, self.opts.output_profile) - output += ''.join(self.dump_text(item.data.find(XHTML('body')), stylizer, item)) - return output - - def get_toc(self): - toc = [] - if self.opts.inline_toc: - self.log.debug('Generating table of contents...') - toc.append(u'<p>%s</p>' % _('Table of Contents:')) - for item in self.oeb_book.toc: - if item.href in self.link_hrefs.keys(): - toc.append('<p><a xlink:href="#%s">%s</a></p>\n' % (self.link_hrefs[item.href], item.title)) - else: - self.oeb.warn('Ignoring toc item: %s not found in document.' % item) - return ''.join(toc) - - def sectionize_chapters(self, text): - def remove_p(t): - t = t.replace('<p>', '') - t = t.replace('</p>', '') - return t - text = re.sub(r'(?imsu)(<p>)\s*(?P<anchor><a\s+id="calibre_link-\d+"\s*/>)\s*(</p>)\s*(<p>)\s*(?P<strong><strong>.+?</strong>)\s*(</p>)', lambda mo: '</section><section>%s<title><p>%s</p>' % (mo.group('anchor'), remove_p(mo.group('strong'))), text) - text = re.sub(r'(?imsu)(

    )\s*(?P)\s*(

    )\s*(?P.+?)', lambda mo: '
    %s<p>%s</p>' % (mo.group('anchor'), remove_p(mo.group('strong'))), text) - text = re.sub(r'(?imsu)(?P)\s*(

    )\s*(?P.+?)\s*(

    )', lambda mo: '
    %s<p>%s</p>' % (mo.group('anchor'), remove_p(mo.group('strong'))), text) - text = re.sub(r'(?imsu)(

    )\s*(?P)\s*(?P.+?)\s*(

    )', lambda mo: '
    %s<p>%s</p>' % (mo.group('anchor'), remove_p(mo.group('strong'))), text) - text = re.sub(r'(?imsu)(?P)\s*(?P.+?)', lambda mo: '
    %s<p>%s</p>' % (mo.group('anchor'), remove_p(mo.group('strong'))), text) - return text + return u'' \ + '' \ + '' \ + '' \ + '' \ + '%s' \ + '%s' \ + '%s' \ + '' \ + '%s' \ + '

    ' \ + '' \ + '' \ + '%s - %s' \ + '' \ + '' % tuple(map(prepare_string_for_xml, (author_first, author_middle, author_last, + self.oeb_book.metadata.title[0].value, __appname__, __version__))) def get_text(self): text = [] - for i, item in enumerate(self.oeb_book.spine): - if self.opts.sectionize_chapters_using_file_structure and i is not 0: - text.append('

    ') + for item in self.oeb_book.spine: self.log.debug('Converting %s to FictionBook2 XML' % item.href) stylizer = Stylizer(item.data, item.href, self.oeb_book, self.opts, self.opts.output_profile) - text.append(self.add_page_anchor(item)) + text.append('
    ') text += self.dump_text(item.data.find(XHTML('body')), stylizer, item) - if self.opts.sectionize_chapters_using_file_structure and i is not len(self.oeb_book.spine) - 1: - text.append('
    ') + text.append('
    ') return ''.join(text) def fb2_body_footer(self): - return u'\n
    \n' + return u'' def fb2_footer(self): return u'' - def add_page_anchor(self, page): - return self.get_anchor(page, '') - - def get_anchor(self, page, aid): - aid = prepare_string_for_xml(aid) - aid = '%s#%s' % (page.href, aid) - if aid not in self.link_hrefs.keys(): - self.link_hrefs[aid] = 'calibre_link-%s' % len(self.link_hrefs.keys()) - aid = self.link_hrefs[aid] - return '' % aid - def fb2mlize_images(self): images = [] for item in self.oeb_book.manifest: @@ -218,12 +165,42 @@ class FB2MLizer(object): col = 1 col += 1 data += char - images.append('%s\n' % (self.image_hrefs.get(item.href, '0000.JPEG'), item.media_type, data)) + images.append('%s\n' % (self.image_hrefs.get(item.href, '_0000.JPEG'), item.media_type, data)) except Exception as e: - self.log.error('Error: Could not include file %s becuase ' \ + self.log.error('Error: Could not include file %s because ' \ '%s.' % (item.href, e)) return ''.join(images) + def ensure_p(self): + if self.in_p: + return [], [] + else: + self.in_p = True + return ['

    '], ['p'] + + def close_open_p(self, tags): + text = [''] + added_p = False + + if self.in_p: + # Close all up to p. Close p. Reopen all closed tags including p. + closed_tags = [] + tags.reverse() + for t in tags: + text.append('' % t) + closed_tags.append(t) + if t == 'p': + break + closed_tags.reverse() + for t in closed_tags: + text.append('<%s>' % t) + else: + text.append('

    ') + added_p = True + self.in_p = True + + return text, added_p + def dump_text(self, elem, stylizer, page, tag_stack=[]): if not isinstance(elem.tag, basestring) \ or namespace(elem.tag) != XHTML_NS: @@ -242,53 +219,26 @@ class FB2MLizer(object): if tag in TAG_IMAGES: if elem.attrib.get('src', None): if page.abshref(elem.attrib['src']) not in self.image_hrefs.keys(): - self.image_hrefs[page.abshref(elem.attrib['src'])] = '%s.jpg' % len(self.image_hrefs.keys()) + self.image_hrefs[page.abshref(elem.attrib['src'])] = '_%s.jpg' % len(self.image_hrefs.keys()) + p_txt, p_tag = self.ensure_p() + fb2_text += p_txt + tags += p_tag fb2_text.append('' % self.image_hrefs[page.abshref(elem.attrib['src'])]) - if tag in TAG_LINKS: - href = elem.get('href') - if href: - href = prepare_string_for_xml(page.abshref(href)) - href = href.replace('"', '"') - if '://' in href: - fb2_text.append('' % href) - else: - if href.startswith('#'): - href = href[1:] - if href not in self.link_hrefs.keys(): - self.link_hrefs[href] = 'calibre_link-%s' % len(self.link_hrefs.keys()) - href = self.link_hrefs[href] - fb2_text.append('' % href) - tags.append('a') - - # Anchor ids - id_name = elem.get('id') - if id_name: - fb2_text.append(self.get_anchor(page, id_name)) - if tag == 'h1' and self.opts.h1_to_title or tag == 'h2' and self.opts.h2_to_title or tag == 'h3' and self.opts.h3_to_title: fb2_text.append('') tags.append('title') fb2_tag = TAG_MAP.get(tag, None) if fb2_tag == 'p': - if 'p' in tag_stack+tags: - # Close all up to p. Close p. Reopen all closed tags including p. - all_tags = tag_stack+tags - closed_tags = [] - all_tags.reverse() - for t in all_tags: - fb2_text.append('</%s>' % t) - closed_tags.append(t) - if t == 'p': - break - closed_tags.reverse() - for t in closed_tags: - fb2_text.append('<%s>' % t) - else: - fb2_text.append('<p>') + p_text, added_p = self.close_open_p(tag_stack+tags) + fb2_text += p_text + if added_p: tags.append('p') elif fb2_tag and fb2_tag not in tag_stack+tags: + p_text, p_tags = self.ensure_p() + fb2_text += p_text + tags += p_tags fb2_text.append('<%s>' % fb2_tag) tags.append(fb2_tag) @@ -296,18 +246,21 @@ class FB2MLizer(object): for s in STYLES: style_tag = s[1].get(style[s[0]], None) if style_tag and style_tag not in tag_stack+tags: + p_text, p_tags = self.ensure_p() + fb2_text += p_text + tags += p_tags fb2_text.append('<%s>' % style_tag) tags.append(style_tag) if tag in TAG_SPACE: - if not fb2_text or fb2_text[-1] != ' ' or not fb2_text[-1].endswith(' '): - fb2_text.append(' ') + fb2_text.append(' ') if hasattr(elem, 'text') and elem.text: - if 'p' not in tag_stack+tags: - fb2_text.append('<p>%s</p>' % prepare_string_for_xml(elem.text)) - else: - fb2_text.append(prepare_string_for_xml(elem.text)) + if not self.in_p: + fb2_text.append('<p>') + fb2_text.append(prepare_string_for_xml(elem.text)) + if not self.in_p: + fb2_text.append('</p>') for item in elem: fb2_text += self.dump_text(item, stylizer, page, tag_stack+tags) @@ -316,10 +269,11 @@ class FB2MLizer(object): fb2_text += self.close_tags(tags) if hasattr(elem, 'tail') and elem.tail: - if 'p' not in tag_stack: - fb2_text.append('<p>%s</p>' % prepare_string_for_xml(elem.tail)) - else: - fb2_text.append(prepare_string_for_xml(elem.tail)) + if not self.in_p: + fb2_text.append('<p>') + fb2_text.append(prepare_string_for_xml(elem.tail)) + if not self.in_p: + fb2_text.append('</p>') return fb2_text @@ -327,5 +281,7 @@ class FB2MLizer(object): text = [] for tag in tags: text.append('</%s>' % tag) + if tag == 'p': + self.in_p = False return text From 692b6bcf02e6dbc75f5f5088a122626ece3e4d42 Mon Sep 17 00:00:00 2001 From: John Schember <john@nachtimwald.com> Date: Fri, 3 Dec 2010 19:11:33 -0500 Subject: [PATCH 316/377] FB2 Output: Remove FB2 options that are no longer implemented. --- src/calibre/ebooks/fb2/output.py | 14 ------------- src/calibre/gui2/convert/fb2_output.py | 4 +--- src/calibre/gui2/convert/fb2_output.ui | 27 +++----------------------- 3 files changed, 4 insertions(+), 41 deletions(-) diff --git a/src/calibre/ebooks/fb2/output.py b/src/calibre/ebooks/fb2/output.py index bacaf0da91..88508b83e0 100644 --- a/src/calibre/ebooks/fb2/output.py +++ b/src/calibre/ebooks/fb2/output.py @@ -16,20 +16,6 @@ class FB2Output(OutputFormatPlugin): file_type = 'fb2' options = set([ - OptionRecommendation(name='inline_toc', - recommended_value=False, level=OptionRecommendation.LOW, - help=_('Add Table of Contents to beginning of the book.')), - OptionRecommendation(name='sectionize_chapters', - recommended_value=False, level=OptionRecommendation.LOW, - help=_('Try to turn chapters into individual sections. ' \ - 'WARNING: ' \ - 'This option is experimental. It can cause conversion ' \ - 'to fail. It can also produce unexpected output.')), - OptionRecommendation(name='sectionize_chapters_using_file_structure', - recommended_value=False, level=OptionRecommendation.LOW, - help=_('Try to turn chapters into individual sections using the ' \ - 'internal structure of the ebook. This works well for EPUB ' \ - 'books that have been internally split by chapter.')), OptionRecommendation(name='h1_to_title', recommended_value=False, level=OptionRecommendation.LOW, help=_('Wrap all h1 tags with fb2 title elements.')), diff --git a/src/calibre/gui2/convert/fb2_output.py b/src/calibre/gui2/convert/fb2_output.py index 5d927146a5..6b1497a9db 100644 --- a/src/calibre/gui2/convert/fb2_output.py +++ b/src/calibre/gui2/convert/fb2_output.py @@ -17,8 +17,6 @@ class PluginWidget(Widget, Ui_Form): ICON = I('mimetypes/fb2.png') def __init__(self, parent, get_option, get_help, db=None, book_id=None): - Widget.__init__(self, parent, ['inline_toc', 'sectionize_chapters', - 'sectionize_chapters_using_file_structure', 'h1_to_title', - 'h2_to_title', 'h3_to_title']) + Widget.__init__(self, parent, ['h1_to_title', 'h2_to_title', 'h3_to_title']) self.db, self.book_id = db, book_id self.initialize_options(get_option, get_help, db, book_id) diff --git a/src/calibre/gui2/convert/fb2_output.ui b/src/calibre/gui2/convert/fb2_output.ui index a90ecd615e..436719aed4 100644 --- a/src/calibre/gui2/convert/fb2_output.ui +++ b/src/calibre/gui2/convert/fb2_output.ui @@ -14,7 +14,7 @@ <string>Form</string> </property> <layout class="QGridLayout" name="gridLayout"> - <item row="6" column="0"> + <item row="3" column="0"> <spacer name="verticalSpacer"> <property name="orientation"> <enum>Qt::Vertical</enum> @@ -28,41 +28,20 @@ </spacer> </item> <item row="0" column="0"> - <widget class="QCheckBox" name="opt_inline_toc"> - <property name="text"> - <string>&Inline TOC</string> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QCheckBox" name="opt_sectionize_chapters"> - <property name="text"> - <string>Sectionize Chapters (Use with care!)</string> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QCheckBox" name="opt_sectionize_chapters_using_file_structure"> - <property name="text"> - <string>Sectionize Chapters using file structure</string> - </property> - </widget> - </item> - <item row="3" column="0"> <widget class="QCheckBox" name="opt_h1_to_title"> <property name="text"> <string>Wrap h1 tags with <title> elements</string> </property> </widget> </item> - <item row="4" column="0"> + <item row="1" column="0"> <widget class="QCheckBox" name="opt_h2_to_title"> <property name="text"> <string>Wrap h2 tags with <title> elements</string> </property> </widget> </item> - <item row="5" column="0"> + <item row="2" column="0"> <widget class="QCheckBox" name="opt_h3_to_title"> <property name="text"> <string>Wrap h3 tags with <title> elements</string> From 1fd503a12ea53196d12a1969220e42a23c027a98 Mon Sep 17 00:00:00 2001 From: John Schember <john@nachtimwald.com> Date: Fri, 3 Dec 2010 19:14:09 -0500 Subject: [PATCH 317/377] FB2 Output: Use pretty print option. --- src/calibre/ebooks/fb2/fb2ml.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/calibre/ebooks/fb2/fb2ml.py b/src/calibre/ebooks/fb2/fb2ml.py index 1c24213b46..e658dce25a 100644 --- a/src/calibre/ebooks/fb2/fb2ml.py +++ b/src/calibre/ebooks/fb2/fb2ml.py @@ -82,8 +82,10 @@ class FB2MLizer(object): output.append(self.fb2mlize_images()) output.append(self.fb2_footer()) output = self.clean_text(u''.join(output)) - #return u'<?xml version="1.0" encoding="UTF-8"?>\n%s' % etree.tostring(etree.fromstring(output), encoding=unicode, pretty_print=True) - return u'<?xml version="1.0" encoding="UTF-8"?>' + output + if self.opts.pretty_print: + return u'<?xml version="1.0" encoding="UTF-8"?>\n%s' % etree.tostring(etree.fromstring(output), encoding=unicode, pretty_print=True) + else: + return u'<?xml version="1.0" encoding="UTF-8"?>' + output def clean_text(self, text): text = re.sub(r'(?miu)<section>\s*</section>', '', text) From 9409781f4a4446078e2a1637d7b4303abdc81bff Mon Sep 17 00:00:00 2001 From: John Schember <john@nachtimwald.com> Date: Fri, 3 Dec 2010 19:43:50 -0500 Subject: [PATCH 318/377] FB2 Output: Insert empty lines properly. --- src/calibre/ebooks/fb2/fb2ml.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/calibre/ebooks/fb2/fb2ml.py b/src/calibre/ebooks/fb2/fb2ml.py index e658dce25a..252453d25e 100644 --- a/src/calibre/ebooks/fb2/fb2ml.py +++ b/src/calibre/ebooks/fb2/fb2ml.py @@ -32,7 +32,6 @@ TAG_MAP = { 'p' : 'p', 'li' : 'p', 'div': 'p', - 'br' : 'empty-line', } TAG_SPACE = [] @@ -126,7 +125,7 @@ class FB2MLizer(object): '<annotation><p/></annotation>' \ '</title-info>' \ '<document-info>' \ - '<program-used>%s - %s</program-used>' \ + '<program-used>%s %s</program-used>' \ '</document-info>' \ '</description><body>' % tuple(map(prepare_string_for_xml, (author_first, author_middle, author_last, self.oeb_book.metadata.title[0].value, __appname__, __version__))) @@ -180,6 +179,24 @@ class FB2MLizer(object): self.in_p = True return ['<p>'], ['p'] + def insert_empty_line(self, tags): + if self.in_p: + text = [''] + closed_tags = [] + tags.reverse() + for t in tags: + text.append('</%s>' % t) + closed_tags.append(t) + if t == 'p': + break + text.append('<empty-line />') + closed_tags.reverse() + for t in closed_tags: + text.append('<%s>' % t) + return text + else: + return ['<empty-line />'] + def close_open_p(self, tags): text = [''] added_p = False @@ -230,6 +247,8 @@ class FB2MLizer(object): if tag == 'h1' and self.opts.h1_to_title or tag == 'h2' and self.opts.h2_to_title or tag == 'h3' and self.opts.h3_to_title: fb2_text.append('<title>') tags.append('title') + if tag == 'br': + fb2_text += self.insert_empty_line(tag_stack+tags) fb2_tag = TAG_MAP.get(tag, None) if fb2_tag == 'p': From 6ec27b1234d40ac866ab36d4f4d941fbecfc01d2 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Fri, 3 Dec 2010 19:36:31 -0700 Subject: [PATCH 319/377] ... --- setup/installer/linux/freeze2.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup/installer/linux/freeze2.py b/setup/installer/linux/freeze2.py index 684b33b80d..693bf28121 100644 --- a/setup/installer/linux/freeze2.py +++ b/setup/installer/linux/freeze2.py @@ -14,7 +14,7 @@ from setup import Command, modules, basenames, functions, __version__, \ SITE_PACKAGES = ['IPython', 'PIL', 'dateutil', 'dns', 'PyQt4', 'mechanize', 'sip.so', 'BeautifulSoup.py', 'cssutils', 'encutils', 'lxml', - 'sipconfig.py', 'xdg'] + 'sipconfig.py', 'xdg', 'dbus'] QTDIR = '/usr/lib/qt4' QTDLLS = ('QtCore', 'QtGui', 'QtNetwork', 'QtSvg', 'QtXml', 'QtWebKit', 'QtDBus') From 38be2c7fc60dc9f6285494388df3073e81833fc4 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Fri, 3 Dec 2010 20:06:13 -0700 Subject: [PATCH 320/377] ... --- setup/installer/linux/freeze2.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup/installer/linux/freeze2.py b/setup/installer/linux/freeze2.py index 693bf28121..cefc193f18 100644 --- a/setup/installer/linux/freeze2.py +++ b/setup/installer/linux/freeze2.py @@ -14,7 +14,8 @@ from setup import Command, modules, basenames, functions, __version__, \ SITE_PACKAGES = ['IPython', 'PIL', 'dateutil', 'dns', 'PyQt4', 'mechanize', 'sip.so', 'BeautifulSoup.py', 'cssutils', 'encutils', 'lxml', - 'sipconfig.py', 'xdg', 'dbus'] + 'sipconfig.py', 'xdg', 'dbus', '_dbus_bindings.so', 'dbus_bindings.py', + '_dbus_glib_bindings.so'] QTDIR = '/usr/lib/qt4' QTDLLS = ('QtCore', 'QtGui', 'QtNetwork', 'QtSvg', 'QtXml', 'QtWebKit', 'QtDBus') From 67367f521d7c640ce046ed614b37f382e55653ec Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Fri, 3 Dec 2010 20:18:56 -0700 Subject: [PATCH 321/377] Use ICU for sorting --- setup/build_environment.py | 4 + setup/extensions.py | 14 +- setup/installer/windows/freeze.py | 2 +- setup/installer/windows/notes.rst | 9 ++ src/calibre/constants.py | 3 +- src/calibre/library/caches.py | 9 +- src/calibre/utils/icu.c | 220 ++++++++++++++++++++++++++++++ src/calibre/utils/icu.py | 53 +++++++ 8 files changed, 306 insertions(+), 8 deletions(-) create mode 100644 src/calibre/utils/icu.c create mode 100644 src/calibre/utils/icu.py diff --git a/setup/build_environment.py b/setup/build_environment.py index c021ebc6a6..d6581a907d 100644 --- a/setup/build_environment.py +++ b/setup/build_environment.py @@ -91,11 +91,15 @@ podofo_inc = '/usr/include/podofo' podofo_lib = '/usr/lib' chmlib_inc_dirs = chmlib_lib_dirs = [] sqlite_inc_dirs = [] +icu_inc_dirs = [] +icu_lib_dirs = [] if iswindows: prefix = r'C:\cygwin\home\kovid\sw' sw_inc_dir = os.path.join(prefix, 'include') sw_lib_dir = os.path.join(prefix, 'lib') + icu_inc_dirs = [sw_inc_dir] + icu_lib_dirs = [sw_lib_dir] sqlite_inc_dirs = [sw_inc_dir] fc_inc = os.path.join(sw_inc_dir, 'fontconfig') fc_lib = sw_lib_dir diff --git a/setup/extensions.py b/setup/extensions.py index d4ac8e188c..3862cce62a 100644 --- a/setup/extensions.py +++ b/setup/extensions.py @@ -18,7 +18,8 @@ from setup.build_environment import fc_inc, fc_lib, chmlib_inc_dirs, \ QMAKE, msvc, MT, win_inc, win_lib, png_inc_dirs, win_ddk, \ magick_inc_dirs, magick_lib_dirs, png_lib_dirs, png_libs, \ magick_error, magick_libs, ft_lib_dirs, ft_libs, jpg_libs, \ - jpg_lib_dirs, chmlib_lib_dirs, sqlite_inc_dirs + jpg_lib_dirs, chmlib_lib_dirs, sqlite_inc_dirs, icu_inc_dirs, \ + icu_lib_dirs MT isunix = islinux or isosx or isfreebsd @@ -56,8 +57,19 @@ pdfreflow_libs = [] if iswindows: pdfreflow_libs = ['advapi32', 'User32', 'Gdi32', 'zlib'] +icu_libs = ['icudata', 'icui18n', 'icuuc', 'icuio'] +if iswindows: + icu_libs = ['icudt', 'icuin', 'icuuc', 'icuio'] + extensions = [ + Extension('icu', + ['calibre/utils/icu.c'], + libraries=icu_libs, + lib_dirs=icu_lib_dirs, + inc_dirs=icu_inc_dirs, + ), + Extension('sqlite_custom', ['calibre/library/sqlite_custom.c'], inc_dirs=sqlite_inc_dirs diff --git a/setup/installer/windows/freeze.py b/setup/installer/windows/freeze.py index 30cc2a97af..7d8ea4d80a 100644 --- a/setup/installer/windows/freeze.py +++ b/setup/installer/windows/freeze.py @@ -199,7 +199,7 @@ class Win32Freeze(Command, WixMixIn): for pat in ('*.dll',): for f in glob.glob(os.path.join(bindir, pat)): ok = True - for ex in ('expatw',): + for ex in ('expatw', 'testplug'): if ex in f.lower(): ok = False if not ok: continue diff --git a/setup/installer/windows/notes.rst b/setup/installer/windows/notes.rst index 9c553c42e8..af4c871dac 100644 --- a/setup/installer/windows/notes.rst +++ b/setup/installer/windows/notes.rst @@ -77,6 +77,15 @@ Test it on the target system with calibre-debug -c "import _imaging, _imagingmath, _imagingft, _imagingcms" +ICU +------- + +Download the win32 msvc9 binary from http://www.icu-project.org/download/4.4.html + +Note that 4.4 is the last version of ICU that can be compiled (is precompiled) with msvc9 + +Put the dlls into sw/bin and the unicode dir into sw/include and the contents of lib int sw/lib + Libunrar ---------- diff --git a/src/calibre/constants.py b/src/calibre/constants.py index 197fe5888a..f9c177e7a8 100644 --- a/src/calibre/constants.py +++ b/src/calibre/constants.py @@ -67,7 +67,8 @@ if plugins is None: 'pdfreflow', 'progress_indicator', 'chmlib', - 'chm_extra' + 'chm_extra', + 'icu', ] + \ (['winutil'] if iswindows else []) + \ (['usbobserver'] if isosx else []): diff --git a/src/calibre/library/caches.py b/src/calibre/library/caches.py index 7b4c66c8b8..7c1dea792c 100644 --- a/src/calibre/library/caches.py +++ b/src/calibre/library/caches.py @@ -796,11 +796,13 @@ class SortKey(object): class SortKeyGenerator(object): def __init__(self, fields, field_metadata, data): + from calibre.utils.icu import sort_key self.field_metadata = field_metadata self.orders = [-1 if x[1] else 1 for x in fields] self.entries = [(x[0], field_metadata[x[0]]) for x in fields] self.library_order = tweaks['title_series_sorting'] == 'library_order' self.data = data + self.string_sort_key = sort_key def __call__(self, record): values = tuple(self.itervals(self.data[record])) @@ -821,17 +823,14 @@ class SortKeyGenerator(object): if val is None: val = ('', 1) else: - val = val.lower() if self.library_order: val = title_sort(val) sidx_fm = self.field_metadata[name + '_index'] sidx = record[sidx_fm['rec_index']] - val = (val, sidx) + val = (self.string_sort_key(val), sidx) elif dt in ('text', 'comments', 'composite', 'enumeration'): - if val is None: - val = '' - val = val.lower() + val = self.string_sort_key(val) elif dt == 'bool': val = {True: 1, False: 2, None: 3}.get(val, 3) diff --git a/src/calibre/utils/icu.c b/src/calibre/utils/icu.c new file mode 100644 index 0000000000..6e06d54dff --- /dev/null +++ b/src/calibre/utils/icu.c @@ -0,0 +1,220 @@ +#define UNICODE +#define PY_SSIZE_T_CLEAN +#include <Python.h> +#include <unicode/utypes.h> +#include <unicode/uclean.h> +#include <unicode/ucol.h> +#include <unicode/ustring.h> + + +// Collator object definition {{{ +typedef struct { + PyObject_HEAD + // Type-specific fields go here. + UCollator *collator; + +} icu_Collator; + +static void +icu_Collator_dealloc(icu_Collator* self) +{ + if (self->collator != NULL) ucol_close(self->collator); + self->collator = NULL; + self->ob_type->tp_free((PyObject*)self); +} + +static PyObject * +icu_Collator_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + icu_Collator *self; + const char *loc; + UErrorCode status = U_ZERO_ERROR; + + if (!PyArg_ParseTuple(args, "s", &loc)) return NULL; + + self = (icu_Collator *)type->tp_alloc(type, 0); + if (self != NULL) { + self->collator = ucol_open(loc, &status); + if (self->collator == NULL || U_FAILURE(status)) { + PyErr_SetString(PyExc_Exception, "Failed to create collator."); + self->collator = NULL; + Py_DECREF(self); + return NULL; + } + } + + return (PyObject *)self; +} + +// Collator.display_name {{{ +static PyObject * +icu_Collator_display_name(icu_Collator *self, void *closure) { + const char *loc = NULL; + UErrorCode status = U_ZERO_ERROR; + UChar dname[400]; + char buf[100]; + + loc = ucol_getLocaleByType(self->collator, ULOC_ACTUAL_LOCALE, &status); + if (loc == NULL || U_FAILURE(status)) { + PyErr_SetString(PyExc_Exception, "Failed to get actual locale"); return NULL; + } + ucol_getDisplayName(loc, "en", dname, 100, &status); + if (U_FAILURE(status)) return PyErr_NoMemory(); + + u_strToUTF8(buf, 100, NULL, dname, -1, &status); + if (U_FAILURE(status)) { + PyErr_SetString(PyExc_Exception, "Failed ot convert dname to UTF-8"); return NULL; + } + return Py_BuildValue("s", buf); +} + +// }}} + +// Collator.actual_locale {{{ +static PyObject * +icu_Collator_actual_locale(icu_Collator *self, void *closure) { + const char *loc = NULL; + UErrorCode status = U_ZERO_ERROR; + + loc = ucol_getLocaleByType(self->collator, ULOC_ACTUAL_LOCALE, &status); + if (loc == NULL || U_FAILURE(status)) { + PyErr_SetString(PyExc_Exception, "Failed to get actual locale"); return NULL; + } + return Py_BuildValue("s", loc); +} + +// }}} + +// Collator.sort_key {{{ +static PyObject * +icu_Collator_sort_key(icu_Collator *self, PyObject *args, PyObject *kwargs) { + PyObject *o; + Py_ssize_t sz; + wchar_t *buf; + UChar *buf2; + uint8_t *buf3; + PyObject *ans; + UErrorCode status = U_ZERO_ERROR; + + if (!PyArg_ParseTuple(args, "U", &o)) return NULL; + + sz = PyUnicode_GetSize(o); + + buf = (wchar_t*)calloc(sz*2 + 1, sizeof(wchar_t)); + buf2 = (UChar*)calloc(sz*2 + 1, sizeof(UChar)); + buf3 = (uint8_t*)calloc(sz*4 + 1, sizeof(uint8_t)); + + if (buf == NULL || buf2 == NULL || buf3 == NULL) return PyErr_NoMemory(); + + PyUnicode_AsWideChar((PyUnicodeObject *)o, buf, sz); + + u_strFromWCS(buf2, 2*sz+1, NULL, buf, -1, &status); + if (U_SUCCESS(status)) + ucol_getSortKey(self->collator, buf2, -1, buf3, sz*4+1); + + ans = PyBytes_FromString((char *)buf3); + free(buf3); free(buf); free(buf2); + if (ans == NULL) return PyErr_NoMemory(); + + return ans; +} + +static PyMethodDef icu_Collator_methods[] = { + {"sort_key", (PyCFunction)icu_Collator_sort_key, METH_VARARGS, + "sort_key(unicode object) -> Return a sort key for the given object as a bytestring. The idea is that these bytestring will sort using the builtin cmp function, just like the original unicode strings would sort in the current locale with ICU." + }, + + {NULL} /* Sentinel */ +}; + +static PyGetSetDef icu_Collator_getsetters[] = { + {(char *)"actual_locale", + (getter)icu_Collator_actual_locale, NULL, + (char *)"Actual locale used by this collator.", + NULL}, + + {(char *)"display_name", + (getter)icu_Collator_display_name, NULL, + (char *)"Display name of this collator in English. The name reflects the actual data source used.", + NULL}, + + {NULL} /* Sentinel */ +}; + +static PyTypeObject icu_CollatorType = { // {{{ + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "icu.Collator", /*tp_name*/ + sizeof(icu_Collator), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + (destructor)icu_Collator_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash */ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + "Collator", /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + icu_Collator_methods, /* tp_methods */ + 0, /* tp_members */ + icu_Collator_getsetters, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + icu_Collator_new, /* tp_new */ +}; // }}} + +// }} + + +// }}} + + +// Module initialization {{{ + +static PyMethodDef icu_methods[] = { + {NULL} /* Sentinel */ +}; + + +PyMODINIT_FUNC +initicu(void) +{ + PyObject* m; + UErrorCode status = U_ZERO_ERROR; + + u_init(&status); + + + if (PyType_Ready(&icu_CollatorType) < 0) + return; + + m = Py_InitModule3("icu", icu_methods, + "Wrapper for the ICU internationalization library"); + + Py_INCREF(&icu_CollatorType); + PyModule_AddObject(m, "Collator", (PyObject *)&icu_CollatorType); + // uint8_t must be the same size as char + PyModule_AddIntConstant(m, "ok", (U_SUCCESS(status) && sizeof(uint8_t) == sizeof(char)) ? 1 : 0); + +} +// }}} diff --git a/src/calibre/utils/icu.py b/src/calibre/utils/icu.py new file mode 100644 index 0000000000..5b432747f0 --- /dev/null +++ b/src/calibre/utils/icu.py @@ -0,0 +1,53 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai + +__license__ = 'GPL v3' +__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' +__docformat__ = 'restructuredtext en' + +from functools import partial + +from calibre.constants import plugins + +_icu = _collator = None + +_none = u'' +_none2 = b'' + +def load_icu(): + global _icu + if _icu is None: + _icu = plugins['icu'][0] + if _icu is None: + print plugins['icu'][1] + else: + if not _icu.ok: + print 'icu not ok' + _icu = None + return _icu + +def load_collator(): + global _collator + from calibre.utils.localization import get_lang + if _collator is None: + icu = load_icu() + if icu is not None: + _collator = icu.Collator(get_lang()) + return _collator + + +def py_sort_key(obj): + if not obj: + return _none + return obj.lower() + +def icu_sort_key(collator, obj): + if not obj: + return _none2 + return collator.sort_key(obj.lower()) + +load_icu() +load_collator() +sort_key = py_sort_key if _icu is None or _collator is None else \ + partial(icu_sort_key, _collator) + From 74a801f4cce869b25cd70277881b006fe3c145d8 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Fri, 3 Dec 2010 20:36:56 -0700 Subject: [PATCH 322/377] Add ICU to linux binary build --- setup/installer/linux/freeze2.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/setup/installer/linux/freeze2.py b/setup/installer/linux/freeze2.py index cefc193f18..df2c1d6480 100644 --- a/setup/installer/linux/freeze2.py +++ b/setup/installer/linux/freeze2.py @@ -50,6 +50,10 @@ binary_includes = [ '/lib/libreadline.so.6', '/usr/lib/libchm.so.0', '/usr/lib/liblcms2.so.2', + '/usr/lib/libicudata.so.46', + '/usr/lib/libicui18n.so.46', + '/usr/lib/libicuuc.so.46', + '/usr/lib/libicuio.so.46', ] binary_includes += [os.path.join(QTDIR, 'lib%s.so.4'%x) for x in QTDLLS] From 0b70f40709fca1197a8fb634b0dfa4958eedb8be Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Sat, 4 Dec 2010 00:06:49 -0700 Subject: [PATCH 323/377] Fix ICU py->UChar string conversion and add support for OS X --- setup/extensions.py | 6 ++++++ src/calibre/utils/icu.c | 37 ++++++++++++++++++++----------------- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/setup/extensions.py b/setup/extensions.py index 3862cce62a..6a9cce7625 100644 --- a/setup/extensions.py +++ b/setup/extensions.py @@ -58,8 +58,13 @@ if iswindows: pdfreflow_libs = ['advapi32', 'User32', 'Gdi32', 'zlib'] icu_libs = ['icudata', 'icui18n', 'icuuc', 'icuio'] +icu_cflags = [] if iswindows: icu_libs = ['icudt', 'icuin', 'icuuc', 'icuio'] +if isosx: + icu_libs = ['icucore'] + icu_cflags = ['-DU_DISABLE_RENAMING'] # Needed to use system libicucore.dylib + extensions = [ @@ -68,6 +73,7 @@ extensions = [ libraries=icu_libs, lib_dirs=icu_lib_dirs, inc_dirs=icu_inc_dirs, + cflags=icu_cflags ), Extension('sqlite_custom', diff --git a/src/calibre/utils/icu.c b/src/calibre/utils/icu.c index 6e06d54dff..1da14a0252 100644 --- a/src/calibre/utils/icu.c +++ b/src/calibre/utils/icu.c @@ -88,32 +88,34 @@ icu_Collator_actual_locale(icu_Collator *self, void *closure) { // Collator.sort_key {{{ static PyObject * icu_Collator_sort_key(icu_Collator *self, PyObject *args, PyObject *kwargs) { - PyObject *o; + char *input; Py_ssize_t sz; - wchar_t *buf; - UChar *buf2; - uint8_t *buf3; + UChar *buf; + uint8_t *buf2; PyObject *ans; + int32_t key_size; UErrorCode status = U_ZERO_ERROR; - - if (!PyArg_ParseTuple(args, "U", &o)) return NULL; + + if (!PyArg_ParseTuple(args, "es", "UTF-8", &input)) return NULL; - sz = PyUnicode_GetSize(o); + sz = strlen(input); - buf = (wchar_t*)calloc(sz*2 + 1, sizeof(wchar_t)); - buf2 = (UChar*)calloc(sz*2 + 1, sizeof(UChar)); - buf3 = (uint8_t*)calloc(sz*4 + 1, sizeof(uint8_t)); + buf = (UChar*)calloc(sz*4 + 1, sizeof(UChar)); - if (buf == NULL || buf2 == NULL || buf3 == NULL) return PyErr_NoMemory(); + if (buf == NULL) return PyErr_NoMemory(); - PyUnicode_AsWideChar((PyUnicodeObject *)o, buf, sz); + u_strFromUTF8(buf, sz*4 + 1, &key_size, input, sz, &status); - u_strFromWCS(buf2, 2*sz+1, NULL, buf, -1, &status); - if (U_SUCCESS(status)) - ucol_getSortKey(self->collator, buf2, -1, buf3, sz*4+1); + if (U_SUCCESS(status)) { + key_size = ucol_getSortKey(self->collator, buf, -1, NULL, 0); + buf2 = (uint8_t*)calloc(key_size + 1, sizeof(uint8_t)); + if (buf2 == NULL) return PyErr_NoMemory(); + ucol_getSortKey(self->collator, buf, -1, buf2, key_size+1); + ans = PyBytes_FromString((char *)buf2); + free(buf2); + } else ans = PyBytes_FromString(""); - ans = PyBytes_FromString((char *)buf3); - free(buf3); free(buf); free(buf2); + free(buf); if (ans == NULL) return PyErr_NoMemory(); return ans; @@ -188,6 +190,7 @@ static PyTypeObject icu_CollatorType = { // {{{ // }}} +// }}} // Module initialization {{{ From fc9ac1d715a26d0a567349d976c0ba2105032c5d Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Sat, 4 Dec 2010 00:30:42 -0700 Subject: [PATCH 324/377] Add ICU dorting test --- src/calibre/utils/icu.py | 107 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) diff --git a/src/calibre/utils/icu.py b/src/calibre/utils/icu.py index 5b432747f0..74fbe182f5 100644 --- a/src/calibre/utils/icu.py +++ b/src/calibre/utils/icu.py @@ -51,3 +51,110 @@ load_collator() sort_key = py_sort_key if _icu is None or _collator is None else \ partial(icu_sort_key, _collator) + +def test(): # {{{ + # Data {{{ + german = ''' + Sonntag +Montag +Dienstag +Januar +Februar +März +Fuße +Fluße +Flusse +flusse +fluße +flüße +flüsse +''' + german_good = ''' + Dienstag +Februar +flusse +Flusse +fluße +Fluße +flüsse +flüße +Fuße +Januar +März +Montag +Sonntag''' + french = ''' +dimanche +lundi +mardi +janvier +février +mars +déjà +Meme +deja +même +dejà +bpef +bœg +Boef +Mémé +bœf +boef +bnef +pêche +pèché +pêché +pêche +pêché''' + french_good = ''' + bnef + boef + Boef + bœf + bœg + bpef + deja + dejà + déjà + dimanche + février + janvier + lundi + mardi + mars + Meme + Mémé + même + pèché + pêche + pêche + pêché + pêché''' + # }}} + + def create(l): + l = l.decode('utf-8').splitlines() + return [x.strip() for x in l if x.strip()] + + german = create(german) + c = _icu.Collator('de') + print 'Sorted german:: (%s)'%c.actual_locale + gs = list(sorted(german, key=c.sort_key)) + for x in gs: + print '\t', x.encode('utf-8') + if gs != create(german_good): + print 'German failed' + return + print + french = create(french) + c = _icu.Collator('fr') + print 'Sorted french:: (%s)'%c.actual_locale + fs = list(sorted(french, key=c.sort_key)) + for x in fs: + print '\t', x.encode('utf-8') + if fs != create(french_good): + print 'French failed' + return +# }}} + From a9983208d7c992a393ce2c2bc6af965b3d5bc268 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Sat, 4 Dec 2010 00:40:38 -0700 Subject: [PATCH 325/377] ... --- src/calibre/utils/icu.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/utils/icu.py b/src/calibre/utils/icu.py index 74fbe182f5..7c2fd31f78 100644 --- a/src/calibre/utils/icu.py +++ b/src/calibre/utils/icu.py @@ -154,7 +154,7 @@ pêché''' for x in fs: print '\t', x.encode('utf-8') if fs != create(french_good): - print 'French failed' + print 'French failed (note that French fails with icu < 4.6 i.e. on windows and OS X)' return # }}} From f8920d18bb0b0825c0354abcaaebd91c51ba9a00 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Sat, 4 Dec 2010 12:26:13 +0000 Subject: [PATCH 326/377] Refactor to use new sort_keys function --- src/calibre/devices/usbms/books.py | 5 ++++- src/calibre/gui2/actions/edit_metadata.py | 4 ++-- src/calibre/gui2/book_details.py | 5 +++-- src/calibre/gui2/convert/metadata.py | 7 ++++--- src/calibre/gui2/custom_column_widgets.py | 11 ++++++----- src/calibre/gui2/dialogs/metadata_bulk.py | 7 ++++--- src/calibre/gui2/dialogs/metadata_single.py | 7 ++++--- src/calibre/gui2/dialogs/saved_search_editor.py | 3 ++- src/calibre/gui2/dialogs/search.py | 4 ++-- src/calibre/gui2/dialogs/tag_categories.py | 7 ++++--- src/calibre/gui2/dialogs/tag_editor.py | 16 +++++++--------- src/calibre/gui2/dialogs/tag_list_editor.py | 4 ++-- src/calibre/gui2/dialogs/user_profiles.py | 3 ++- src/calibre/gui2/library/delegates.py | 7 +++++-- src/calibre/gui2/library/models.py | 16 +++++++++------- src/calibre/gui2/preferences/behavior.py | 4 ++-- src/calibre/gui2/search_box.py | 3 ++- src/calibre/gui2/shortcuts.py | 4 ++-- src/calibre/gui2/tag_view.py | 16 +++++++++------- src/calibre/library/database2.py | 11 +++++++---- src/calibre/library/server/browse.py | 15 +++++---------- src/calibre/library/server/mobile.py | 4 ++-- src/calibre/library/server/opds.py | 9 ++++----- src/calibre/library/server/utils.py | 3 ++- src/calibre/library/server/xml.py | 4 ++-- src/calibre/library/sqlite.py | 5 +++++ src/calibre/utils/search_query_parser.py | 4 ++-- 27 files changed, 104 insertions(+), 84 deletions(-) diff --git a/src/calibre/devices/usbms/books.py b/src/calibre/devices/usbms/books.py index 5063daa29f..4a74f68349 100644 --- a/src/calibre/devices/usbms/books.py +++ b/src/calibre/devices/usbms/books.py @@ -13,6 +13,7 @@ from calibre.devices.interface import BookList as _BookList from calibre.constants import preferred_encoding from calibre import isbytestring from calibre.utils.config import prefs, tweaks +from calibre.utils.icu import sort_key class Book(Metadata): def __init__(self, prefix, lpath, size=None, other=None): @@ -230,14 +231,16 @@ class CollectionsBookList(BookList): x = xx[1] y = yy[1] if x is None and y is None: + # No sort_key needed here, because defaults are ascii return cmp(xx[2], yy[2]) if x is None: return 1 if y is None: return -1 - c = cmp(x, y) + c = cmp(sort_key(x), sort_key(y)) if c != 0: return c + # same as above -- no sort_key needed here return cmp(xx[2], yy[2]) for category, lpaths in collections.items(): diff --git a/src/calibre/gui2/actions/edit_metadata.py b/src/calibre/gui2/actions/edit_metadata.py index 725bf35993..6e2a4054c8 100644 --- a/src/calibre/gui2/actions/edit_metadata.py +++ b/src/calibre/gui2/actions/edit_metadata.py @@ -16,6 +16,7 @@ from calibre.gui2.dialogs.metadata_bulk import MetadataBulkDialog from calibre.gui2.dialogs.confirm_delete import confirm from calibre.gui2.dialogs.tag_list_editor import TagListEditor from calibre.gui2.actions import InterfaceAction +from calibre.utils.icu import sort_key class EditMetadataAction(InterfaceAction): @@ -363,8 +364,7 @@ class EditMetadataAction(InterfaceAction): def edit_device_collections(self, view, oncard=None): model = view.model() result = model.get_collections_with_ids() - compare = (lambda x,y:cmp(x.lower(), y.lower())) - d = TagListEditor(self.gui, tag_to_match=None, data=result, compare=compare) + d = TagListEditor(self.gui, tag_to_match=None, data=result, key=sort_key) d.exec_() if d.result() == d.Accepted: to_rename = d.to_rename # dict of new text to old ids diff --git a/src/calibre/gui2/book_details.py b/src/calibre/gui2/book_details.py index b101d4c44f..5214f1a1d5 100644 --- a/src/calibre/gui2/book_details.py +++ b/src/calibre/gui2/book_details.py @@ -19,6 +19,7 @@ from calibre.ebooks import BOOK_EXTENSIONS from calibre.constants import preferred_encoding from calibre.library.comments import comments_to_html from calibre.gui2 import config, open_local_file +from calibre.utils.icu import sort_key # render_rows(data) {{{ WEIGHTS = collections.defaultdict(lambda : 100) @@ -31,8 +32,8 @@ WEIGHTS[_('Tags')] = 4 def render_rows(data): keys = data.keys() # First sort by name. The WEIGHTS sort will preserve this sub-order - keys.sort(cmp=lambda x, y: cmp(x.lower(), y.lower())) - keys.sort(cmp=lambda x, y: cmp(WEIGHTS[x], WEIGHTS[y])) + keys.sort(key=sort_key) + keys.sort(key=lambda x: WEIGHTS[x]) rows = [] for key in keys: txt = data[key] diff --git a/src/calibre/gui2/convert/metadata.py b/src/calibre/gui2/convert/metadata.py index 7a02cf4429..d3744bb614 100644 --- a/src/calibre/gui2/convert/metadata.py +++ b/src/calibre/gui2/convert/metadata.py @@ -17,6 +17,7 @@ from calibre.ebooks.metadata import authors_to_string, string_to_authors, \ from calibre.ebooks.metadata.opf2 import metadata_to_opf from calibre.ptempfile import PersistentTemporaryFile from calibre.gui2.convert import Widget +from calibre.utils.icu import sort_key def create_opf_file(db, book_id): mi = db.get_metadata(book_id, index_is_id=True) @@ -102,7 +103,7 @@ class MetadataWidget(Widget, Ui_Form): def initalize_authors(self): all_authors = self.db.all_authors() - all_authors.sort(cmp=lambda x, y : cmp(x[1], y[1])) + all_authors.sort(key=lambda x : sort_key(x[1])) for i in all_authors: id, name = i @@ -117,7 +118,7 @@ class MetadataWidget(Widget, Ui_Form): def initialize_series(self): all_series = self.db.all_series() - all_series.sort(cmp=lambda x, y : cmp(x[1], y[1])) + all_series.sort(key=lambda x : sort_key(x[1])) for i in all_series: id, name = i @@ -126,7 +127,7 @@ class MetadataWidget(Widget, Ui_Form): def initialize_publisher(self): all_publishers = self.db.all_publishers() - all_publishers.sort(cmp=lambda x, y : cmp(x[1], y[1])) + all_publishers.sort(key=lambda x : sort_key(x[1])) for i in all_publishers: id, name = i diff --git a/src/calibre/gui2/custom_column_widgets.py b/src/calibre/gui2/custom_column_widgets.py index 6b6669f4e0..8c41e3def1 100644 --- a/src/calibre/gui2/custom_column_widgets.py +++ b/src/calibre/gui2/custom_column_widgets.py @@ -17,6 +17,7 @@ from calibre.utils.date import qt_to_dt, now from calibre.gui2.widgets import TagsLineEdit, EnComboBox from calibre.gui2 import UNDEFINED_QDATE, error_dialog from calibre.utils.config import tweaks +from calibre.utils.icu import sort_key class Base(object): @@ -207,7 +208,7 @@ class Text(Base): def setup_ui(self, parent): values = self.all_values = list(self.db.all_custom(num=self.col_id)) - values.sort(cmp = lambda x,y: cmp(x.lower(), y.lower())) + values.sort(key=sort_key) if self.col_metadata['is_multiple']: w = TagsLineEdit(parent, values) w.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred) @@ -256,7 +257,7 @@ class Series(Base): def setup_ui(self, parent): values = self.all_values = list(self.db.all_custom(num=self.col_id)) - values.sort(cmp = lambda x,y: cmp(x.lower(), y.lower())) + values.sort(key=sort_key) w = EnComboBox(parent) w.setSizeAdjustPolicy(w.AdjustToMinimumContentsLengthWithIcon) w.setMinimumContentsLength(25) @@ -369,7 +370,7 @@ def field_sort(y, z, x=None): m1, m2 = x[y], x[z] n1 = 'zzzzz' if m1['datatype'] == 'comments' else m1['name'] n2 = 'zzzzz' if m2['datatype'] == 'comments' else m2['name'] - return cmp(n1.lower(), n2.lower()) + return cmp(sort_key(n1), sort_key(n2)) def populate_metadata_page(layout, db, book_id, bulk=False, two_column=False, parent=None): def widget_factory(type, col): @@ -526,7 +527,7 @@ class BulkSeries(BulkBase): def setup_ui(self, parent): values = self.all_values = list(self.db.all_custom(num=self.col_id)) - values.sort(cmp = lambda x,y: cmp(x.lower(), y.lower())) + values.sort(key=sort_key) w = EnComboBox(parent) w.setSizeAdjustPolicy(w.AdjustToMinimumContentsLengthWithIcon) w.setMinimumContentsLength(25) @@ -678,7 +679,7 @@ class BulkText(BulkBase): def setup_ui(self, parent): values = self.all_values = list(self.db.all_custom(num=self.col_id)) - values.sort(cmp = lambda x,y: cmp(x.lower(), y.lower())) + values.sort(key=sort_key) if self.col_metadata['is_multiple']: w = TagsLineEdit(parent, values) w.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred) diff --git a/src/calibre/gui2/dialogs/metadata_bulk.py b/src/calibre/gui2/dialogs/metadata_bulk.py index 7c6125d537..362091eb2d 100644 --- a/src/calibre/gui2/dialogs/metadata_bulk.py +++ b/src/calibre/gui2/dialogs/metadata_bulk.py @@ -17,6 +17,7 @@ from calibre.gui2 import error_dialog from calibre.gui2.progress_indicator import ProgressIndicator from calibre.utils.config import dynamic from calibre.utils.titlecase import titlecase +from calibre.utils.icu import sort_key class MyBlockingBusy(QDialog): @@ -594,7 +595,7 @@ class MetadataBulkDialog(QDialog, Ui_MetadataBulkDialog): def initalize_authors(self): all_authors = self.db.all_authors() - all_authors.sort(cmp=lambda x, y : cmp(x[1].lower(), y[1].lower())) + all_authors.sort(key=lambda x : sort_key(x[1])) for i in all_authors: id, name = i @@ -604,7 +605,7 @@ class MetadataBulkDialog(QDialog, Ui_MetadataBulkDialog): def initialize_series(self): all_series = self.db.all_series() - all_series.sort(cmp=lambda x, y : cmp(x[1], y[1])) + all_series.sort(key=lambda x : sort_key(x[1])) for i in all_series: id, name = i @@ -613,7 +614,7 @@ class MetadataBulkDialog(QDialog, Ui_MetadataBulkDialog): def initialize_publisher(self): all_publishers = self.db.all_publishers() - all_publishers.sort(cmp=lambda x, y : cmp(x[1], y[1])) + all_publishers.sort(key=lambda x : sort_key(x[1])) for i in all_publishers: id, name = i diff --git a/src/calibre/gui2/dialogs/metadata_single.py b/src/calibre/gui2/dialogs/metadata_single.py index f50be281d7..8f068075cf 100644 --- a/src/calibre/gui2/dialogs/metadata_single.py +++ b/src/calibre/gui2/dialogs/metadata_single.py @@ -28,6 +28,7 @@ from calibre.ebooks.metadata.meta import get_metadata from calibre.ebooks.metadata import MetaInformation from calibre.utils.config import prefs, tweaks from calibre.utils.date import qt_to_dt, local_tz, utcfromtimestamp +from calibre.utils.icu import sort_key from calibre.customize.ui import run_plugins_on_import, get_isbndb_key from calibre.gui2.preferences.social import SocialMetadata from calibre.gui2.custom_column_widgets import populate_metadata_page @@ -660,7 +661,7 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): def initalize_authors(self): all_authors = self.db.all_authors() - all_authors.sort(cmp=lambda x, y : cmp(x[1], y[1])) + all_authors.sort(key=lambda x : sort_key(x[1])) for i in all_authors: id, name = i name = [name.strip().replace('|', ',') for n in name.split(',')] @@ -675,7 +676,7 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): def initialize_series(self): self.series.setSizeAdjustPolicy(self.series.AdjustToContentsOnFirstShow) all_series = self.db.all_series() - all_series.sort(cmp=lambda x, y : cmp(x[1], y[1])) + all_series.sort(key=lambda x : sort_key(x[1])) series_id = self.db.series_id(self.row) idx, c = None, 0 for i in all_series: @@ -692,7 +693,7 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): def initialize_publisher(self): all_publishers = self.db.all_publishers() - all_publishers.sort(cmp=lambda x, y : cmp(x[1], y[1])) + all_publishers.sort(key=lambda x : sort_key(x[1])) publisher_id = self.db.publisher_id(self.row) idx, c = None, 0 for i in all_publishers: diff --git a/src/calibre/gui2/dialogs/saved_search_editor.py b/src/calibre/gui2/dialogs/saved_search_editor.py index 3f9f7ad437..1143a6f06a 100644 --- a/src/calibre/gui2/dialogs/saved_search_editor.py +++ b/src/calibre/gui2/dialogs/saved_search_editor.py @@ -8,6 +8,7 @@ from PyQt4.QtGui import QDialog from calibre.gui2.dialogs.saved_search_editor_ui import Ui_SavedSearchEditor from calibre.utils.search_query_parser import saved_searches +from calibre.utils.icu import sort_key from calibre.gui2.dialogs.confirm_delete import confirm class SavedSearchEditor(QDialog, Ui_SavedSearchEditor): @@ -34,7 +35,7 @@ class SavedSearchEditor(QDialog, Ui_SavedSearchEditor): def populate_search_list(self): self.search_name_box.clear() - for name in sorted(self.searches.keys()): + for name in sorted(self.searches.keys(), key=sort_key): self.search_name_box.addItem(name) def add_search(self): diff --git a/src/calibre/gui2/dialogs/search.py b/src/calibre/gui2/dialogs/search.py index ba09a34a68..8e8fd09652 100644 --- a/src/calibre/gui2/dialogs/search.py +++ b/src/calibre/gui2/dialogs/search.py @@ -8,6 +8,7 @@ from PyQt4.QtGui import QDialog, QDialogButtonBox from calibre.gui2.dialogs.search_ui import Ui_Dialog from calibre.library.caches import CONTAINS_MATCH, EQUALS_MATCH from calibre.gui2 import gprefs +from calibre.utils.icu import sort_key box_values = {} @@ -18,8 +19,7 @@ class SearchDialog(QDialog, Ui_Dialog): self.setupUi(self) self.mc = '' searchables = sorted(db.field_metadata.searchable_fields(), - lambda x, y: cmp(x if x[0] != '#' else x[1:], - y if y[0] != '#' else y[1:])) + key=lambda x: sort_key(x if x[0] != '#' else x[1:])) self.general_combo.addItems(searchables) self.box_last_values = copy.deepcopy(box_values) diff --git a/src/calibre/gui2/dialogs/tag_categories.py b/src/calibre/gui2/dialogs/tag_categories.py index 7a9660a655..210a2704bf 100644 --- a/src/calibre/gui2/dialogs/tag_categories.py +++ b/src/calibre/gui2/dialogs/tag_categories.py @@ -9,6 +9,7 @@ from PyQt4.QtGui import QDialog, QIcon, QListWidgetItem from calibre.gui2.dialogs.tag_categories_ui import Ui_TagCategories from calibre.gui2.dialogs.confirm_delete import confirm from calibre.constants import islinux +from calibre.utils.icu import sort_key class Item: def __init__(self, name, label, index, icon, exists): @@ -85,7 +86,7 @@ class TagCategories(QDialog, Ui_TagCategories): # remove any references to a category that no longer exists del self.categories[cat][item] - self.all_items_sorted = sorted(self.all_items, cmp=lambda x,y: cmp(x.name.lower(), y.name.lower())) + self.all_items_sorted = sorted(self.all_items, key=lambda x: sort_key(x.name)) self.display_filtered_categories(0) for v in category_names: @@ -135,7 +136,7 @@ class TagCategories(QDialog, Ui_TagCategories): index = self.all_items[node.data(Qt.UserRole).toPyObject()].index if index not in self.applied_items: self.applied_items.append(index) - self.applied_items.sort(cmp=lambda x, y:cmp(self.all_items[x].name.lower(), self.all_items[y].name.lower())) + self.applied_items.sort(key=lambda x:sort_key(self.all_items[x])) self.display_filtered_categories(None) def unapply_tags(self, node=None): @@ -198,5 +199,5 @@ class TagCategories(QDialog, Ui_TagCategories): self.categories[self.current_cat_name] = l def populate_category_list(self): - for n in sorted(self.categories.keys(), cmp=lambda x,y: cmp(x.lower(), y.lower())): + for n in sorted(self.categories.keys(), key=sort_key): self.category_box.addItem(n) diff --git a/src/calibre/gui2/dialogs/tag_editor.py b/src/calibre/gui2/dialogs/tag_editor.py index 34c61914fe..48a07c4b9e 100644 --- a/src/calibre/gui2/dialogs/tag_editor.py +++ b/src/calibre/gui2/dialogs/tag_editor.py @@ -6,12 +6,10 @@ from PyQt4.QtGui import QDialog from calibre.gui2.dialogs.tag_editor_ui import Ui_TagEditor from calibre.gui2 import question_dialog, error_dialog from calibre.constants import islinux +from calibre.utils.icu import sort_key class TagEditor(QDialog, Ui_TagEditor): - def tag_cmp(self, x, y): - return cmp(x.lower(), y.lower()) - def __init__(self, window, db, index=None): QDialog.__init__(self, window) Ui_TagEditor.__init__(self) @@ -25,7 +23,7 @@ class TagEditor(QDialog, Ui_TagEditor): tags = [] if tags: tags = [tag.strip() for tag in tags.split(',') if tag.strip()] - tags.sort(cmp=self.tag_cmp) + tags.sort(key=sort_key) for tag in tags: self.applied_tags.addItem(tag) else: @@ -35,7 +33,7 @@ class TagEditor(QDialog, Ui_TagEditor): all_tags = [tag for tag in self.db.all_tags()] all_tags = list(set(all_tags)) - all_tags.sort(cmp=self.tag_cmp) + all_tags.sort(key=sort_key) for tag in all_tags: if tag not in tags: self.available_tags.addItem(tag) @@ -82,7 +80,7 @@ class TagEditor(QDialog, Ui_TagEditor): self.tags.append(tag) self.available_tags.takeItem(self.available_tags.row(item)) - self.tags.sort(cmp=self.tag_cmp) + self.tags.sort(key=sort_key) self.applied_tags.clear() for tag in self.tags: self.applied_tags.addItem(tag) @@ -96,14 +94,14 @@ class TagEditor(QDialog, Ui_TagEditor): self.tags.remove(tag) self.available_tags.addItem(tag) - self.tags.sort(cmp=self.tag_cmp) + self.tags.sort(key=sort_key) self.applied_tags.clear() for tag in self.tags: self.applied_tags.addItem(tag) items = [unicode(self.available_tags.item(x).text()) for x in range(self.available_tags.count())] - items.sort(cmp=self.tag_cmp) + items.sort(key=sort_key) self.available_tags.clear() for item in items: self.available_tags.addItem(item) @@ -117,7 +115,7 @@ class TagEditor(QDialog, Ui_TagEditor): if tag not in self.tags: self.tags.append(tag) - self.tags.sort(cmp=self.tag_cmp) + self.tags.sort(key=sort_key) self.applied_tags.clear() for tag in self.tags: self.applied_tags.addItem(tag) diff --git a/src/calibre/gui2/dialogs/tag_list_editor.py b/src/calibre/gui2/dialogs/tag_list_editor.py index 7cdc0a089a..a7d6fe03e7 100644 --- a/src/calibre/gui2/dialogs/tag_list_editor.py +++ b/src/calibre/gui2/dialogs/tag_list_editor.py @@ -39,7 +39,7 @@ class ListWidgetItem(QListWidgetItem): class TagListEditor(QDialog, Ui_TagListEditor): - def __init__(self, window, tag_to_match, data, compare): + def __init__(self, window, tag_to_match, data, key): QDialog.__init__(self, window) Ui_TagListEditor.__init__(self) self.setupUi(self) @@ -54,7 +54,7 @@ class TagListEditor(QDialog, Ui_TagListEditor): for k,v in data: self.all_tags[v] = k - for tag in sorted(self.all_tags.keys(), cmp=compare): + for tag in sorted(self.all_tags.keys(), key=key): item = ListWidgetItem(tag) item.setData(Qt.UserRole, self.all_tags[tag]) self.available_tags.addItem(item) diff --git a/src/calibre/gui2/dialogs/user_profiles.py b/src/calibre/gui2/dialogs/user_profiles.py index 6901e13968..71c9ebcd04 100644 --- a/src/calibre/gui2/dialogs/user_profiles.py +++ b/src/calibre/gui2/dialogs/user_profiles.py @@ -13,6 +13,7 @@ from calibre.gui2 import error_dialog, question_dialog, open_url, \ choose_files, ResizableDialog, NONE from calibre.gui2.widgets import PythonHighlighter from calibre.ptempfile import PersistentTemporaryFile +from calibre.utils.icu import sort_key class CustomRecipeModel(QAbstractListModel): @@ -256,7 +257,7 @@ class %(classname)s(%(base_class)s): def add_builtin_recipe(self): from calibre.web.feeds.recipes.collection import \ get_builtin_recipe_by_title, get_builtin_recipe_titles - items = sorted(get_builtin_recipe_titles()) + items = sorted(get_builtin_recipe_titles(), key=sort_key) title, ok = QInputDialog.getItem(self, _('Pick recipe'), _('Pick the recipe to customize'), diff --git a/src/calibre/gui2/library/delegates.py b/src/calibre/gui2/library/delegates.py index 03309d1fba..8b6c2a8ae5 100644 --- a/src/calibre/gui2/library/delegates.py +++ b/src/calibre/gui2/library/delegates.py @@ -20,6 +20,7 @@ from calibre.gui2.widgets import EnLineEdit, TagsLineEdit from calibre.utils.date import now, format_date from calibre.utils.config import tweaks from calibre.utils.formatter import validation_formatter +from calibre.utils.icu import sort_key from calibre.gui2.dialogs.comments_dialog import CommentsDialog class RatingDelegate(QStyledItemDelegate): # {{{ @@ -173,7 +174,8 @@ class TagsDelegate(QStyledItemDelegate): # {{{ editor = TagsLineEdit(parent, self.db.all_tags()) else: editor = TagsLineEdit(parent, - sorted(list(self.db.all_custom(label=self.db.field_metadata.key_to_label(col))))) + sorted(list(self.db.all_custom(label=self.db.field_metadata.key_to_label(col))), + key=sort_key)) return editor else: editor = EnLineEdit(parent) @@ -245,7 +247,8 @@ class CcTextDelegate(QStyledItemDelegate): # {{{ editor.setDecimals(2) else: editor = EnLineEdit(parent) - complete_items = sorted(list(m.db.all_custom(label=m.db.field_metadata.key_to_label(col)))) + complete_items = sorted(list(m.db.all_custom(label=m.db.field_metadata.key_to_label(col))), + key=sort_key) completer = QCompleter(complete_items, self) completer.setCaseSensitivity(Qt.CaseInsensitive) completer.setCompletionMode(QCompleter.PopupCompletion) diff --git a/src/calibre/gui2/library/models.py b/src/calibre/gui2/library/models.py index e09f85dc6b..e854ffc1bc 100644 --- a/src/calibre/gui2/library/models.py +++ b/src/calibre/gui2/library/models.py @@ -18,6 +18,7 @@ from calibre.ebooks.metadata import fmt_sidx, authors_to_string, string_to_autho from calibre.ptempfile import PersistentTemporaryFile from calibre.utils.config import tweaks, prefs from calibre.utils.date import dt_factory, qt_to_dt, isoformat +from calibre.utils.icu import sort_key from calibre.ebooks.metadata.meta import set_metadata as _set_metadata from calibre.utils.search_query_parser import SearchQueryParser from calibre.library.caches import _match, CONTAINS_MATCH, EQUALS_MATCH, \ @@ -305,9 +306,10 @@ class BooksModel(QAbstractTableModel): # {{{ cdata = self.cover(idx) if cdata: data['cover'] = cdata - tags = self.db.tags(idx) + tags = list(self.db.get_tags(self.db.id(idx))) if tags: - tags = tags.replace(',', ', ') + tags.sort(key=sort_key) + tags = ', '.join(tags) else: tags = _('None') data[_('Tags')] = tags @@ -544,7 +546,7 @@ class BooksModel(QAbstractTableModel): # {{{ def tags(r, idx=-1): tags = self.db.data[r][idx] if tags: - return QVariant(', '.join(sorted(tags.split(',')))) + return QVariant(', '.join(sorted(tags.split(','), key=sort_key))) return None def series_type(r, idx=-1, siix=-1): @@ -595,7 +597,7 @@ class BooksModel(QAbstractTableModel): # {{{ def text_type(r, mult=False, idx=-1): text = self.db.data[r][idx] if text and mult: - return QVariant(', '.join(sorted(text.split('|')))) + return QVariant(', '.join(sorted(text.split('|'),key=sort_key))) return QVariant(text) def number_type(r, idx=-1): @@ -1033,8 +1035,8 @@ class DeviceBooksModel(BooksModel): # {{{ x, y = int(self.db[x].size), int(self.db[y].size) return cmp(x, y) def tagscmp(x, y): - x = ','.join(sorted(getattr(self.db[x], 'device_collections', []))).lower() - y = ','.join(sorted(getattr(self.db[y], 'device_collections', []))).lower() + x = ','.join(sorted(getattr(self.db[x], 'device_collections', []),key=sort_key)) + y = ','.join(sorted(getattr(self.db[y], 'device_collections', []),key=sort_key)) return cmp(x, y) def libcmp(x, y): x, y = self.db[x].in_library, self.db[y].in_library @@ -1211,7 +1213,7 @@ class DeviceBooksModel(BooksModel): # {{{ elif cname == 'collections': tags = self.db[self.map[row]].device_collections if tags: - tags.sort(cmp=lambda x,y: cmp(x.lower(), y.lower())) + tags.sort(key=sort_key) return QVariant(', '.join(tags)) elif DEBUG and cname == 'inlibrary': return QVariant(self.db[self.map[row]].in_library) diff --git a/src/calibre/gui2/preferences/behavior.py b/src/calibre/gui2/preferences/behavior.py index d6d6d7be23..169a2b76fe 100644 --- a/src/calibre/gui2/preferences/behavior.py +++ b/src/calibre/gui2/preferences/behavior.py @@ -19,6 +19,7 @@ from calibre.utils.search_query_parser import saved_searches from calibre.ebooks import BOOK_EXTENSIONS from calibre.ebooks.oeb.iterator import is_supported from calibre.constants import iswindows +from calibre.utils.icu import sort_key class ConfigWidget(ConfigWidgetBase, Ui_Form): @@ -45,8 +46,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form): choices = [(x.upper(), x) for x in output_formats] r('output_format', prefs, choices=choices) - restrictions = sorted(saved_searches().names(), - cmp=lambda x,y: cmp(x.lower(), y.lower())) + restrictions = sorted(saved_searches().names(), key=sort_key) choices = [('', '')] + [(x, x) for x in restrictions] r('gui_restriction', db.prefs, choices=choices) r('new_book_tags', prefs, setting=CommaSeparatedList) diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py index c85dafc6d8..3d34d6c6e9 100644 --- a/src/calibre/gui2/search_box.py +++ b/src/calibre/gui2/search_box.py @@ -17,6 +17,7 @@ from calibre.gui2.dialogs.confirm_delete import confirm from calibre.gui2.dialogs.saved_search_editor import SavedSearchEditor from calibre.gui2.dialogs.search import SearchDialog from calibre.utils.search_query_parser import saved_searches +from calibre.utils.icu import sort_key class SearchLineEdit(QLineEdit): # {{{ key_pressed = pyqtSignal(object) @@ -417,7 +418,7 @@ class SavedSearchBoxMixin(object): # {{{ b.setStatusTip(b.toolTip()) def saved_searches_changed(self): - p = sorted(saved_searches().names(), cmp=lambda x,y: cmp(x.lower(), y.lower())) + p = sorted(saved_searches().names(), key=sort_key) t = unicode(self.search_restriction.currentText()) # rebuild the restrictions combobox using current saved searches self.search_restriction.clear() diff --git a/src/calibre/gui2/shortcuts.py b/src/calibre/gui2/shortcuts.py index 24395a22b6..bdd699a69d 100644 --- a/src/calibre/gui2/shortcuts.py +++ b/src/calibre/gui2/shortcuts.py @@ -14,6 +14,7 @@ from PyQt4.Qt import QAbstractListModel, Qt, QKeySequence, QListView, \ from calibre.gui2 import NONE, error_dialog from calibre.utils.config import XMLConfig +from calibre.utils.icu import sort_key from calibre.gui2.shortcuts_ui import Ui_Frame DEFAULTS = Qt.UserRole @@ -175,8 +176,7 @@ class Shortcuts(QAbstractListModel): for k, v in shortcuts.items(): self.keys[k] = v[0] self.order = list(shortcuts) - self.order.sort(cmp=lambda x,y : cmp(self.descriptions[x], - self.descriptions[y])) + self.order.sort(key=lambda x : sort_key(self.descriptions[x])) self.sequences = {} for k, v in self.keys.items(): self.sequences[k] = [QKeySequence(x) for x in v] diff --git a/src/calibre/gui2/tag_view.py b/src/calibre/gui2/tag_view.py index 768b699ca9..fdae1bdbc9 100644 --- a/src/calibre/gui2/tag_view.py +++ b/src/calibre/gui2/tag_view.py @@ -18,6 +18,7 @@ from PyQt4.Qt import Qt, QTreeView, QApplication, pyqtSignal, \ from calibre.ebooks.metadata import title_sort from calibre.gui2 import config, NONE from calibre.library.field_metadata import TagsIcons, category_icon_map +from calibre.utils.icu import sort_key from calibre.utils.search_query_parser import saved_searches from calibre.gui2 import error_dialog from calibre.gui2.dialogs.confirm_delete import confirm @@ -225,7 +226,7 @@ class TagsView(QTreeView): # {{{ partial(self.context_menu_handler, action='hide', category=category)) if self.hidden_categories: m = self.context_menu.addMenu(_('Show category')) - for col in sorted(self.hidden_categories, cmp=lambda x,y: cmp(x.lower(), y.lower())): + for col in sorted(self.hidden_categories, key=sort_key): m.addAction(col, partial(self.context_menu_handler, action='show', category=col)) @@ -599,7 +600,8 @@ class TagsModel(QAbstractItemModel): # {{{ # Reconstruct the user categories, putting them into metadata self.db.field_metadata.remove_dynamic_categories() tb_cats = self.db.field_metadata - for user_cat in sorted(self.db.prefs.get('user_categories', {}).keys()): + for user_cat in sorted(self.db.prefs.get('user_categories', {}).keys(), + key=sort_key): cat_name = user_cat+':' # add the ':' to avoid name collision tb_cats.add_user_category(label=cat_name, name=user_cat) if len(saved_searches().names()): @@ -878,13 +880,13 @@ class TagBrowserMixin(object): # {{{ db=self.library_view.model().db if category == 'tags': result = db.get_tags_with_ids() - compare = (lambda x,y:cmp(x.lower(), y.lower())) + key = sort_key elif category == 'series': result = db.get_series_with_ids() - compare = (lambda x,y:cmp(title_sort(x).lower(), title_sort(y).lower())) + key = lambda x:sort_key(title_sort(x)) elif category == 'publisher': result = db.get_publishers_with_ids() - compare = (lambda x,y:cmp(x.lower(), y.lower())) + key = sort_key else: # should be a custom field cc_label = None if category in db.field_metadata: @@ -892,9 +894,9 @@ class TagBrowserMixin(object): # {{{ result = db.get_custom_items_with_ids(label=cc_label) else: result = [] - compare = (lambda x,y:cmp(x.lower(), y.lower())) + key = sort_key - d = TagListEditor(self, tag_to_match=tag, data=result, compare=compare) + d = TagListEditor(self, tag_to_match=tag, data=result, key=key) d.exec_() if d.result() == d.Accepted: to_rename = d.to_rename # dict of new text to old id diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index 4e05aa3a95..4efb5e6233 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -14,6 +14,7 @@ from operator import itemgetter from PyQt4.QtGui import QImage + from calibre.ebooks.metadata import title_sort, author_to_author_sort from calibre.ebooks.metadata.opf2 import metadata_to_opf from calibre.library.database import LibraryDatabase @@ -33,6 +34,7 @@ from calibre import isbytestring from calibre.utils.filenames import ascii_filename from calibre.utils.date import utcnow, now as nowf, utcfromtimestamp from calibre.utils.config import prefs, tweaks +from calibre.utils.icu import sort_key from calibre.utils.search_query_parser import saved_searches, set_saved_searches from calibre.ebooks import BOOK_EXTENSIONS, check_ebook_format from calibre.utils.magick.draw import save_cover_data_to @@ -287,7 +289,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): # Assumption is that someone else will fix them if they change. self.field_metadata.remove_dynamic_categories() tb_cats = self.field_metadata - for user_cat in sorted(self.prefs.get('user_categories', {}).keys()): + for user_cat in sorted(self.prefs.get('user_categories', {}).keys(), key=sort_key): cat_name = user_cat+':' # add the ':' to avoid name collision tb_cats.add_user_category(label=cat_name, name=user_cat) if len(saved_searches().names()): @@ -1065,7 +1067,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): if sort == 'popularity': query += ' ORDER BY count DESC, sort ASC' elif sort == 'name': - query += ' ORDER BY sort ASC' + query += ' ORDER BY sort COLLATE icucollate' else: query += ' ORDER BY avg_rating DESC, sort ASC' data = self.conn.get(query) @@ -1137,6 +1139,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): if sort == 'popularity': categories['formats'].sort(key=lambda x: x.count, reverse=True) else: # no ratings exist to sort on + # No need for ICU here. categories['formats'].sort(key = lambda x:x.name) #### Now do the user-defined categories. #### @@ -1151,7 +1154,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): for c in categories.keys(): taglist[c] = dict(map(lambda t:(t.name, t), categories[c])) - for user_cat in sorted(user_categories.keys()): + for user_cat in sorted(user_categories.keys(), key=sort_key): items = [] for (name,label,ign) in user_categories[user_cat]: if label in taglist and name in taglist[label]: @@ -1167,7 +1170,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): sorted(items, key=lambda x: x.count, reverse=True) elif sort == 'name': categories[cat_name] = \ - sorted(items, key=lambda x: x.sort.lower()) + sorted(items, key=lambda x: sort_key(x.sort)) else: categories[cat_name] = \ sorted(items, key=lambda x:x.avg_rating, reverse=True) diff --git a/src/calibre/library/server/browse.py b/src/calibre/library/server/browse.py index b6dbde4c77..0a3a7f6fd2 100644 --- a/src/calibre/library/server/browse.py +++ b/src/calibre/library/server/browse.py @@ -16,6 +16,7 @@ from calibre import isbytestring, force_unicode, fit_image, \ from calibre.utils.ordered_dict import OrderedDict from calibre.utils.filenames import ascii_filename from calibre.utils.config import prefs +from calibre.utils.icu import sort_key from calibre.utils.magick import Image from calibre.library.comments import comments_to_html from calibre.library.server import custom_fields_to_display @@ -273,7 +274,7 @@ class BrowseServer(object): opts = ['<option %svalue="%s">%s</option>' % ( 'selected="selected" ' if k==sort else '', xml(k), xml(n), ) for k, n in - sorted(sort_opts, key=operator.itemgetter(1)) if k and n] + sorted(sort_opts, key=lambda x: sort_key(operator.itemgetter(1)(x))) if k and n] ans = ans.replace('{sort_select_options}', ('\n'+' '*20).join(opts)) lp = self.db.library_path if isbytestring(lp): @@ -337,8 +338,7 @@ class BrowseServer(object): return category_meta[x]['name'].lower() displayed_custom_fields = custom_fields_to_display(self.db) - for category in sorted(categories, - cmp=lambda x,y: cmp(getter(x), getter(y))): + for category in sorted(categories, key=lambda x: sort_key(getter(x))): if len(categories[category]) == 0: continue if category == 'formats': @@ -375,12 +375,7 @@ class BrowseServer(object): def browse_sort_categories(self, items, sort): if sort not in ('rating', 'name', 'popularity'): sort = 'name' - def sorter(x): - ans = getattr(x, 'sort', x.name) - if hasattr(ans, 'upper'): - ans = ans.upper() - return ans - items.sort(key=sorter) + items.sort(key=lambda x: sort_key(getattr(x, 'sort', x.name))) if sort == 'popularity': items.sort(key=operator.attrgetter('count'), reverse=True) elif sort == 'rating': @@ -703,7 +698,7 @@ class BrowseServer(object): args[field] fields.append((m['name'], r)) - fields.sort(key=lambda x: x[0].lower()) + fields.sort(key=lambda x: sort_key(x[0])) fields = [u'<div class="field">{0}</div>'.format(f[1]) for f in fields] fields = u'<div class="fields">%s</div>'%('\n\n'.join(fields)) diff --git a/src/calibre/library/server/mobile.py b/src/calibre/library/server/mobile.py index d38c2f206e..0992e6c30b 100644 --- a/src/calibre/library/server/mobile.py +++ b/src/calibre/library/server/mobile.py @@ -21,6 +21,7 @@ from calibre.constants import __appname__ from calibre import human_readable, isbytestring from calibre.utils.date import utcfromtimestamp from calibre.utils.filenames import ascii_filename +from calibre.utils.icu import sort_key def CLASS(*args, **kwargs): # class is a reserved word in Python kwargs['class'] = ' '.join(args) @@ -211,8 +212,7 @@ class MobileServer(object): CFM = self.db.field_metadata CKEYS = [key for key in sorted(custom_fields_to_display(self.db), - cmp=lambda x,y: cmp(CFM[x]['name'].lower(), - CFM[y]['name'].lower()))] + key=lambda x:sort_key(CFM[x]['name']))] # This method uses its own book dict, not the Metadata dict. The loop # below could be changed to use db.get_metadata instead of reading # info directly from the record made by the view, but it doesn't seem diff --git a/src/calibre/library/server/opds.py b/src/calibre/library/server/opds.py index 4b5db63ac3..af635ebf48 100644 --- a/src/calibre/library/server/opds.py +++ b/src/calibre/library/server/opds.py @@ -20,6 +20,7 @@ from calibre.library.comments import comments_to_html from calibre.library.server import custom_fields_to_display from calibre.library.server.utils import format_tag_string, Offsets from calibre import guess_type +from calibre.utils.icu import sort_key from calibre.utils.ordered_dict import OrderedDict BASE_HREFS = { @@ -279,8 +280,7 @@ class AcquisitionFeed(NavFeed): NavFeed.__init__(self, id_, updated, version, offsets, page_url, up_url) CFM = db.field_metadata CKEYS = [key for key in sorted(custom_fields_to_display(db), - cmp=lambda x,y: cmp(CFM[x]['name'].lower(), - CFM[y]['name'].lower()))] + key=lambda x: sort_key(CFM[x]['name']))] for item in items: self.root.append(ACQUISITION_ENTRY(item, version, db, updated, CFM, CKEYS, prefix)) @@ -492,7 +492,7 @@ class OPDSServer(object): val = 'A' starts.add(val[0].upper()) category_groups = OrderedDict() - for x in sorted(starts, cmp=lambda x,y:cmp(x.lower(), y.lower())): + for x in sorted(starts, key=sort_key): category_groups[x] = len([y for y in items if getattr(y, 'sort', y.name).startswith(x)]) items = [Group(x, y) for x, y in category_groups.items()] @@ -571,8 +571,7 @@ class OPDSServer(object): ] def getter(x): return category_meta[x]['name'].lower() - for category in sorted(categories, - cmp=lambda x,y: cmp(getter(x), getter(y))): + for category in sorted(categories, key=lambda x: sort_key(getter(x))): if len(categories[category]) == 0: continue if category == 'formats': diff --git a/src/calibre/library/server/utils.py b/src/calibre/library/server/utils.py index 1407487db3..e58dd2f19b 100644 --- a/src/calibre/library/server/utils.py +++ b/src/calibre/library/server/utils.py @@ -13,6 +13,7 @@ import cherrypy from calibre import strftime as _strftime, prints, isbytestring from calibre.utils.date import now as nowf from calibre.utils.config import tweaks +from calibre.utils.icu import sort_key class Offsets(object): 'Calculate offsets for a paginated view' @@ -73,7 +74,7 @@ def format_tag_string(tags, sep, ignore_max=False, no_tag_count=False): tlist = [t.strip() for t in tags.split(sep)] else: tlist = [] - tlist.sort(cmp=lambda x,y:cmp(x.lower(), y.lower())) + tlist.sort(key=sort_key) if len(tlist) > MAX: tlist = tlist[:MAX]+['...'] if no_tag_count: diff --git a/src/calibre/library/server/xml.py b/src/calibre/library/server/xml.py index e99fc2839c..efbceb9771 100644 --- a/src/calibre/library/server/xml.py +++ b/src/calibre/library/server/xml.py @@ -17,6 +17,7 @@ from calibre.ebooks.metadata import fmt_sidx from calibre.constants import preferred_encoding from calibre import isbytestring from calibre.utils.filenames import ascii_filename +from calibre.utils.icu import sort_key E = ElementMaker() @@ -101,8 +102,7 @@ class XMLServer(object): CFM = self.db.field_metadata CKEYS = [key for key in sorted(custom_fields_to_display(self.db), - cmp=lambda x,y: cmp(CFM[x]['name'].lower(), - CFM[y]['name'].lower()))] + key=lambda x: sort_key(CFM[x]['name']))] custcols = [] for key in CKEYS: def concat(name, val): diff --git a/src/calibre/library/sqlite.py b/src/calibre/library/sqlite.py index 7a86447090..b4cad8061e 100644 --- a/src/calibre/library/sqlite.py +++ b/src/calibre/library/sqlite.py @@ -115,6 +115,9 @@ def pynocase(one, two, encoding='utf-8'): pass return cmp(one.lower(), two.lower()) +def icu_collator(s1, s2, func=None): + return cmp(func(unicode(s1)), func(unicode(s2))) + def load_c_extensions(conn, debug=DEBUG): try: conn.enable_load_extension(True) @@ -166,6 +169,8 @@ class DBThread(Thread): self.conn.create_function('uuid4', 0, lambda : str(uuid.uuid4())) # Dummy functions for dynamically created filters self.conn.create_function('books_list_filter', 1, lambda x: 1) + from calibre.utils.icu import sort_key + self.conn.create_collation('icucollate', partial(icu_collator, func=sort_key)) def run(self): try: diff --git a/src/calibre/utils/search_query_parser.py b/src/calibre/utils/search_query_parser.py index 85a64956a8..db7c7bde5f 100644 --- a/src/calibre/utils/search_query_parser.py +++ b/src/calibre/utils/search_query_parser.py @@ -22,6 +22,7 @@ from calibre.utils.pyparsing import CaselessKeyword, Group, Forward, \ CharsNotIn, Suppress, OneOrMore, MatchFirst, CaselessLiteral, \ Optional, NoMatch, ParseException, QuotedString from calibre.constants import preferred_encoding +from calibre.utils.icu import sort_key @@ -65,8 +66,7 @@ class SavedSearchQueries(object): self.db.prefs[self.opt_name] = self.queries def names(self): - return sorted(self.queries.keys(), - cmp=lambda x,y: cmp(x.lower(), y.lower())) + return sorted(self.queries.keys(),key=sort_key) ''' Create a global instance of the saved searches. It is global so that the searches From 7f6c1712e14e04999ed4f2a7f9cf009491617d7b Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Sat, 4 Dec 2010 13:06:35 +0000 Subject: [PATCH 327/377] Provide a sort_order tweak --- resources/default_tweaks.py | 12 ++++++++++++ src/calibre/utils/icu.py | 6 +++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/resources/default_tweaks.py b/resources/default_tweaks.py index 692349283f..1a371e5610 100644 --- a/resources/default_tweaks.py +++ b/resources/default_tweaks.py @@ -217,3 +217,15 @@ generate_cover_foot_font = None # open_viewer, do_nothing, edit_cell. Default: open_viewer. # Example: doubleclick_on_library_view = 'do_nothing' doubleclick_on_library_view = 'open_viewer' + + +# Language to use when sorting. Setting this tweak will force sorting to use the +# collating order for the specified language. This might be useful if you run +# calibre in English but want sorting to work in the language where you live. +# Set the tweak to the desired ISO 639-1 language code, in lower case. +# You can find the list of supported locales at +# http://publib.boulder.ibm.com/infocenter/iseries/v5r3/topic/nls/rbagsicusortsequencetables.htm +# Default: locale_for_sorting = '' -- use the language calibre displays in +# Example: locale_for_sorting = 'fr' -- sort using French rules. +# Example: locale_for_sorting = 'nb' -- sort using Norwegian rules. +locale_for_sorting = '' diff --git a/src/calibre/utils/icu.py b/src/calibre/utils/icu.py index 7c2fd31f78..6b5fc0733a 100644 --- a/src/calibre/utils/icu.py +++ b/src/calibre/utils/icu.py @@ -8,6 +8,7 @@ __docformat__ = 'restructuredtext en' from functools import partial from calibre.constants import plugins +from calibre.utils.config import tweaks _icu = _collator = None @@ -32,7 +33,10 @@ def load_collator(): if _collator is None: icu = load_icu() if icu is not None: - _collator = icu.Collator(get_lang()) + if tweaks['locale_for_sorting']: + _collator = icu.Collator(tweaks['locale_for_sorting']) + else: + _collator = icu.Collator(get_lang()) return _collator From 9dd662ac0b21654a56e8909e18ee8769e6bdb2b3 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Sat, 4 Dec 2010 13:21:18 +0000 Subject: [PATCH 328/377] Fix #7787: saved search box is cleared whenever a saved search is selected. --- src/calibre/gui2/search_box.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py index 3d34d6c6e9..8849e2b2ec 100644 --- a/src/calibre/gui2/search_box.py +++ b/src/calibre/gui2/search_box.py @@ -205,7 +205,7 @@ class SearchBox2(QComboBox): # {{{ self.blockSignals(yes) self.line_edit.blockSignals(yes) - def set_search_string(self, txt, store_in_history=False): + def set_search_string(self, txt, store_in_history=False, emit_changed=True): self.setFocus(Qt.OtherFocusReason) if not txt: self.clear() @@ -213,7 +213,8 @@ class SearchBox2(QComboBox): # {{{ self.normalize_state() self.setEditText(txt) self.line_edit.end(False) - self.changed.emit() + if emit_changed: + self.changed.emit() self._do_search(store_in_history=store_in_history) self.focus_to_library.emit() @@ -293,7 +294,7 @@ class SavedSearchBox(QComboBox): # {{{ self.search_box.clear() self.setEditText(qname) return - self.search_box.set_search_string(u'search:"%s"' % qname) + self.search_box.set_search_string(u'search:"%s"' % qname, emit_changed=False) self.setEditText(qname) self.setToolTip(saved_searches().lookup(qname)) From d9cd3fd0b0b77185c7be38bf300815777e884be3 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Sat, 4 Dec 2010 14:10:35 +0000 Subject: [PATCH 329/377] Fix problem with sorting in collections --- src/calibre/devices/usbms/books.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/calibre/devices/usbms/books.py b/src/calibre/devices/usbms/books.py index 4a74f68349..9e19e9c66d 100644 --- a/src/calibre/devices/usbms/books.py +++ b/src/calibre/devices/usbms/books.py @@ -237,7 +237,10 @@ class CollectionsBookList(BookList): return 1 if y is None: return -1 - c = cmp(sort_key(x), sort_key(y)) + if isinstance(x, unicode): + c = cmp(sort_key(x), sort_key(y)) + else: + c = cmp(x, y) if c != 0: return c # same as above -- no sort_key needed here From 0aab245a1df8f6b4c44b5f64df85230f0819fd0b Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Sat, 4 Dec 2010 09:12:38 -0700 Subject: [PATCH 330/377] Fix memory leak in ICU sort_key --- src/calibre/utils/icu.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/calibre/utils/icu.c b/src/calibre/utils/icu.c index 1da14a0252..81f3ef4e9a 100644 --- a/src/calibre/utils/icu.c +++ b/src/calibre/utils/icu.c @@ -105,6 +105,7 @@ icu_Collator_sort_key(icu_Collator *self, PyObject *args, PyObject *kwargs) { if (buf == NULL) return PyErr_NoMemory(); u_strFromUTF8(buf, sz*4 + 1, &key_size, input, sz, &status); + PyMem_Free(input); if (U_SUCCESS(status)) { key_size = ucol_getSortKey(self->collator, buf, -1, NULL, 0); From d4c92f8d335c4fcbb652eb085db23b50c6caa739 Mon Sep 17 00:00:00 2001 From: John Schember <john@nachtimwald.com> Date: Sat, 4 Dec 2010 11:39:05 -0500 Subject: [PATCH 331/377] TXT Output: Fix br conversion to space. --- src/calibre/ebooks/txt/txtml.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/calibre/ebooks/txt/txtml.py b/src/calibre/ebooks/txt/txtml.py index 48c94c2543..a3b4ed7afe 100644 --- a/src/calibre/ebooks/txt/txtml.py +++ b/src/calibre/ebooks/txt/txtml.py @@ -179,8 +179,7 @@ class TXTMLizer(object): text.append(u'\n\n') if tag in SPACE_TAGS: - if not end.endswith('u ') and hasattr(elem, 'text') and elem.text: - text.append(u' ') + text.append(u' ') # Process tags that contain text. if hasattr(elem, 'text') and elem.text: From 97bd4f161cb970b9aacf1e3b2a33721aaa4988a2 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Sat, 4 Dec 2010 09:45:45 -0700 Subject: [PATCH 332/377] Speed up ICU key generation by not preflighting in most cases --- src/calibre/utils/icu.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/calibre/utils/icu.c b/src/calibre/utils/icu.c index 81f3ef4e9a..f981abe62e 100644 --- a/src/calibre/utils/icu.c +++ b/src/calibre/utils/icu.c @@ -108,11 +108,22 @@ icu_Collator_sort_key(icu_Collator *self, PyObject *args, PyObject *kwargs) { PyMem_Free(input); if (U_SUCCESS(status)) { - key_size = ucol_getSortKey(self->collator, buf, -1, NULL, 0); - buf2 = (uint8_t*)calloc(key_size + 1, sizeof(uint8_t)); + buf2 = (uint8_t*)calloc(7*sz+1, sizeof(uint8_t)); if (buf2 == NULL) return PyErr_NoMemory(); - ucol_getSortKey(self->collator, buf, -1, buf2, key_size+1); - ans = PyBytes_FromString((char *)buf2); + + key_size = ucol_getSortKey(self->collator, buf, -1, buf2, 7*sz+1); + + if (key_size == 0) { + ans = PyBytes_FromString(""); + } else { + if (key_size >= 7*sz+1) { + free(buf2); + buf2 = (uint8_t*)calloc(key_size+1, sizeof(uint8_t)); + if (buf2 == NULL) return PyErr_NoMemory(); + ucol_getSortKey(self->collator, buf, -1, buf2, key_size+1); + } + ans = PyBytes_FromString((char *)buf2); + } free(buf2); } else ans = PyBytes_FromString(""); From 0e3a2fc39d82fdb1d44e946f6ac33c3d22a9aa4b Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Sat, 4 Dec 2010 16:52:27 +0000 Subject: [PATCH 333/377] Better sorting in collection management --- src/calibre/devices/usbms/books.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/calibre/devices/usbms/books.py b/src/calibre/devices/usbms/books.py index 9e19e9c66d..e5a67463e7 100644 --- a/src/calibre/devices/usbms/books.py +++ b/src/calibre/devices/usbms/books.py @@ -216,14 +216,17 @@ class CollectionsBookList(BookList): elif is_series: if doing_dc: collections[cat_name][lpath] = \ - (book, book.get('series_index', sys.maxint), '') + (book, book.get('series_index', sys.maxint), + book.get('title_sort', 'zzzz')) else: collections[cat_name][lpath] = \ - (book, book.get(attr+'_index', sys.maxint), '') + (book, book.get(attr+'_index', sys.maxint), + book.get('title_sort', 'zzzz')) else: if lpath not in collections[cat_name]: collections[cat_name][lpath] = \ - (book, book.get('title_sort', 'zzzz'), '') + (book, book.get('title_sort', 'zzzz'), + book.get('title_sort', 'zzzz')) # Sort collections result = {} @@ -237,7 +240,7 @@ class CollectionsBookList(BookList): return 1 if y is None: return -1 - if isinstance(x, unicode): + if isinstance(x, (unicode, str)): c = cmp(sort_key(x), sort_key(y)) else: c = cmp(x, y) From 4aab356c6904a270c59c5956ec5e944bc6d65a3e Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Sat, 4 Dec 2010 17:21:44 +0000 Subject: [PATCH 334/377] Make sorting columns use a key function instead of cmp --- src/calibre/gui2/custom_column_widgets.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/calibre/gui2/custom_column_widgets.py b/src/calibre/gui2/custom_column_widgets.py index 8c41e3def1..5ab8bb6940 100644 --- a/src/calibre/gui2/custom_column_widgets.py +++ b/src/calibre/gui2/custom_column_widgets.py @@ -366,11 +366,10 @@ widgets = { 'enumeration': Enumeration } -def field_sort(y, z, x=None): - m1, m2 = x[y], x[z] +def field_sort_key(y, x=None): + m1 = x[y] n1 = 'zzzzz' if m1['datatype'] == 'comments' else m1['name'] - n2 = 'zzzzz' if m2['datatype'] == 'comments' else m2['name'] - return cmp(sort_key(n1), sort_key(n2)) + return sort_key(n1) def populate_metadata_page(layout, db, book_id, bulk=False, two_column=False, parent=None): def widget_factory(type, col): @@ -382,7 +381,7 @@ def populate_metadata_page(layout, db, book_id, bulk=False, two_column=False, pa return w x = db.custom_column_num_map cols = list(x) - cols.sort(cmp=partial(field_sort, x=x)) + cols.sort(key=partial(field_sort_key, x=x)) count_non_comment = len([c for c in cols if x[c]['datatype'] != 'comments']) layout.setColumnStretch(1, 10) From a6ad9f2c969c542b1e5b14a0d1fe8a378649045a Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Sat, 4 Dec 2010 10:30:04 -0700 Subject: [PATCH 335/377] Add an ICU implementation of strcmp --- src/calibre/utils/icu.c | 36 ++++++++++++++++++++++++++++++++++++ src/calibre/utils/icu.py | 36 ++++++++++++++++++++++++++++++++++-- 2 files changed, 70 insertions(+), 2 deletions(-) diff --git a/src/calibre/utils/icu.c b/src/calibre/utils/icu.c index f981abe62e..79a888f272 100644 --- a/src/calibre/utils/icu.c +++ b/src/calibre/utils/icu.c @@ -133,11 +133,47 @@ icu_Collator_sort_key(icu_Collator *self, PyObject *args, PyObject *kwargs) { return ans; } +// Collator.strcmp {{{ +static PyObject * +icu_Collator_strcmp(icu_Collator *self, PyObject *args, PyObject *kwargs) { + char *a_, *b_; + size_t asz, bsz; + UChar *a, *b; + UErrorCode status = U_ZERO_ERROR; + UCollationResult res = UCOL_EQUAL; + + if (!PyArg_ParseTuple(args, "eses", "UTF-8", &a_, "UTF-8", &b_)) return NULL; + + asz = strlen(a_); bsz = strlen(b_); + + a = (UChar*)calloc(asz*4 + 1, sizeof(UChar)); + b = (UChar*)calloc(bsz*4 + 1, sizeof(UChar)); + + + if (a == NULL || b == NULL) return PyErr_NoMemory(); + + u_strFromUTF8(a, asz*4 + 1, NULL, a_, asz, &status); + u_strFromUTF8(b, bsz*4 + 1, NULL, b_, bsz, &status); + PyMem_Free(a_); PyMem_Free(b_); + + if (U_SUCCESS(status)) + res = ucol_strcoll(self->collator, a, -1, b, -1); + + free(a); free(b); + + return Py_BuildValue("i", res); +} + + static PyMethodDef icu_Collator_methods[] = { {"sort_key", (PyCFunction)icu_Collator_sort_key, METH_VARARGS, "sort_key(unicode object) -> Return a sort key for the given object as a bytestring. The idea is that these bytestring will sort using the builtin cmp function, just like the original unicode strings would sort in the current locale with ICU." }, + {"strcmp", (PyCFunction)icu_Collator_strcmp, METH_VARARGS, + "strcmp(unicode object, unicode object) -> strcmp(a, b) <=> cmp(sorty_key(a), sort_key(b)), but faster." + }, + {NULL} /* Sentinel */ }; diff --git a/src/calibre/utils/icu.py b/src/calibre/utils/icu.py index 7c2fd31f78..5251380973 100644 --- a/src/calibre/utils/icu.py +++ b/src/calibre/utils/icu.py @@ -46,10 +46,35 @@ def icu_sort_key(collator, obj): return _none2 return collator.sort_key(obj.lower()) +def py_case_sensitive_sort_key(obj): + if not obj: + return _none + return obj + +def icu_case_sensitive_sort_key(collator, obj): + if not obj: + return _none2 + return collator.sort_key(obj) + +def icu_strcmp(collator, a, b): + return collator.strcmp(a.lower(), b.lower()) + +def py_strcmp(a, b): + return cmp(a.lower(), b.lower()) + +def icu_case_sensitive_strcmp(collator, a, b): + return collator.strcmp(a, b) + + load_icu() load_collator() -sort_key = py_sort_key if _icu is None or _collator is None else \ - partial(icu_sort_key, _collator) +_icu_not_ok = _icu is None or _collator is None + +sort_key = py_sort_key if _icu_not_ok else partial(icu_sort_key, _collator) +strcmp = py_strcmp if _icu_not_ok else partial(icu_strcmp, _collator) +case_sensitive_sort_key = py_case_sensitive_sort_key if _icu_not_ok else \ + icu_case_sensitive_sort_key +case_sensitive_strcmp = cmp if _icu_not_ok else icu_case_sensitive_strcmp def test(): # {{{ @@ -137,6 +162,12 @@ pêché''' l = l.decode('utf-8').splitlines() return [x.strip() for x in l if x.strip()] + def test_strcmp(entries): + for x in entries: + for y in entries: + if strcmp(x, y) != cmp(sort_key(x), sort_key(y)): + print 'strcmp failed for %r, %r'%(x, y) + german = create(german) c = _icu.Collator('de') print 'Sorted german:: (%s)'%c.actual_locale @@ -156,5 +187,6 @@ pêché''' if fs != create(french_good): print 'French failed (note that French fails with icu < 4.6 i.e. on windows and OS X)' return + test_strcmp(german + french) # }}} From f424743046ec5905a5e4c561714ac048f344e3cd Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Sat, 4 Dec 2010 11:29:08 -0700 Subject: [PATCH 336/377] News download: Localize the navigation bars in the downloaded news to the language the user has selected for their calibre interface --- src/calibre/web/feeds/templates.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/calibre/web/feeds/templates.py b/src/calibre/web/feeds/templates.py index 6e8168be31..eefd897614 100644 --- a/src/calibre/web/feeds/templates.py +++ b/src/calibre/web/feeds/templates.py @@ -115,14 +115,14 @@ class FeedTemplate(Template): hr.tail = '| ' if f+1 < len(feeds): - link = A('Next section', href='../feed_%d/index.html'%(f+1)) + link = A(_('Next section'), href='../feed_%d/index.html'%(f+1)) link.tail = ' | ' navbar.append(link) - link = A('Main menu', href="../index.html") + link = A(_('Main menu'), href="../index.html") link.tail = ' | ' navbar.append(link) if f > 0: - link = A('Previous section', href='../feed_%d/index.html'%(f-1)) + link = A(_('Previous section'), href='../feed_%d/index.html'%(f-1)) link.tail = ' |' navbar.append(link) if top: @@ -208,17 +208,17 @@ class NavBarTemplate(Template): up = '../..' if art == number_of_articles_in_feed - 1 else '..' href = '%s%s/%s/index.html'%(prefix, up, next) navbar.text = '| ' - navbar.append(A('Next', href=href)) + navbar.append(A(_('Next'), href=href)) href = '%s../index.html#article_%d'%(prefix, art) navbar.iterchildren(reversed=True).next().tail = ' | ' - navbar.append(A('Section Menu', href=href)) + navbar.append(A(_('Section Menu'), href=href)) href = '%s../../index.html#feed_%d'%(prefix, feed) navbar.iterchildren(reversed=True).next().tail = ' | ' - navbar.append(A('Main Menu', href=href)) + navbar.append(A(_('Main Menu'), href=href)) if art > 0 and not bottom: href = '%s../article_%d/index.html'%(prefix, art-1) navbar.iterchildren(reversed=True).next().tail = ' | ' - navbar.append(A('Previous', href=href)) + navbar.append(A(_('Previous'), href=href)) navbar.iterchildren(reversed=True).next().tail = ' | ' if not bottom: navbar.append(HR()) @@ -300,7 +300,7 @@ class TouchscreenFeedTemplate(Template): navbar_tr.append(TD(CLASS('feed_prev'),link)) # Up to Sections - link = A('Sections', href="../index.html") + link = A(_('Sections'), href="../index.html") navbar_tr.append(TD(CLASS('feed_up'),link)) # Next Section @@ -381,16 +381,16 @@ class TouchscreenNavBarTemplate(Template): # | Previous if art > 0: - link = A(CLASS('article_link'),'Previous',href='%s../article_%d/index.html'%(prefix, art-1)) + link = A(CLASS('article_link'),_('Previous'),href='%s../article_%d/index.html'%(prefix, art-1)) navbar_tr.append(TD(CLASS('article_prev'),link)) else: navbar_tr.append(TD(CLASS('article_prev'),'')) # | Articles | Sections | - link = A(CLASS('articles_link'),'Articles', href='%s../index.html#article_%d'%(prefix, art)) + link = A(CLASS('articles_link'),_('Articles'), href='%s../index.html#article_%d'%(prefix, art)) navbar_tr.append(TD(CLASS('article_articles_list'),link)) - link = A(CLASS('sections_link'),'Sections', href='%s../../index.html#feed_%d'%(prefix, feed)) + link = A(CLASS('sections_link'),_('Sections'), href='%s../../index.html#feed_%d'%(prefix, feed)) navbar_tr.append(TD(CLASS('article_sections_list'),link)) # | Next @@ -398,7 +398,7 @@ class TouchscreenNavBarTemplate(Template): else 'article_%d'%(art+1) up = '../..' if art == number_of_articles_in_feed - 1 else '..' - link = A(CLASS('article_link'),'Next', href='%s%s/%s/index.html'%(prefix, up, next)) + link = A(CLASS('article_link'), _('Next'), href='%s%s/%s/index.html'%(prefix, up, next)) navbar_tr.append(TD(CLASS('article_next'),link)) navbar_t.append(navbar_tr) navbar.append(navbar_t) From b3868a5ef425054e400ada6a4de35cdc12cc8983 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Sat, 4 Dec 2010 11:48:38 -0700 Subject: [PATCH 337/377] Add ICU case transform algorithms --- src/calibre/utils/icu.c | 154 ++++++++++++++++++++++++++++++++++++++- src/calibre/utils/icu.py | 26 ++++++- 2 files changed, 176 insertions(+), 4 deletions(-) diff --git a/src/calibre/utils/icu.c b/src/calibre/utils/icu.c index 79a888f272..51d9ac25ba 100644 --- a/src/calibre/utils/icu.c +++ b/src/calibre/utils/icu.c @@ -131,7 +131,7 @@ icu_Collator_sort_key(icu_Collator *self, PyObject *args, PyObject *kwargs) { if (ans == NULL) return PyErr_NoMemory(); return ans; -} +} // }}} // Collator.strcmp {{{ static PyObject * @@ -162,7 +162,8 @@ icu_Collator_strcmp(icu_Collator *self, PyObject *args, PyObject *kwargs) { free(a); free(b); return Py_BuildValue("i", res); -} +} // }}} + static PyMethodDef icu_Collator_methods[] = { @@ -242,7 +243,156 @@ static PyTypeObject icu_CollatorType = { // {{{ // Module initialization {{{ +// upper {{{ +static PyObject * +icu_upper(PyObject *self, PyObject *args) { + char *input, *ans, *buf3 = NULL; + const char *loc; + size_t sz; + UChar *buf, *buf2; + PyObject *ret; + UErrorCode status = U_ZERO_ERROR; + + + if (!PyArg_ParseTuple(args, "ses", &loc, "UTF-8", &input)) return NULL; + + sz = strlen(input); + + buf = (UChar*)calloc(sz*4 + 1, sizeof(UChar)); + buf2 = (UChar*)calloc(sz*8 + 1, sizeof(UChar)); + + + if (buf == NULL || buf2 == NULL) return PyErr_NoMemory(); + + u_strFromUTF8(buf, sz*4, NULL, input, sz, &status); + u_strToUpper(buf2, sz*8, buf, -1, loc, &status); + + ans = input; + sz = u_strlen(buf2); + free(buf); + + if (U_SUCCESS(status) && sz > 0) { + buf3 = (char*)calloc(sz*5+1, sizeof(char)); + if (buf3 == NULL) return PyErr_NoMemory(); + u_strToUTF8(buf3, sz*5, NULL, buf2, -1, &status); + if (U_SUCCESS(status)) ans = buf3; + } + + ret = PyUnicode_DecodeUTF8(ans, strlen(ans), "replace"); + if (ret == NULL) return PyErr_NoMemory(); + + free(buf2); + if (buf3 != NULL) free(buf3); + PyMem_Free(input); + + return ret; +} + +// lower {{{ +static PyObject * +icu_lower(PyObject *self, PyObject *args) { + char *input, *ans, *buf3 = NULL; + const char *loc; + size_t sz; + UChar *buf, *buf2; + PyObject *ret; + UErrorCode status = U_ZERO_ERROR; + + + if (!PyArg_ParseTuple(args, "ses", &loc, "UTF-8", &input)) return NULL; + + sz = strlen(input); + + buf = (UChar*)calloc(sz*4 + 1, sizeof(UChar)); + buf2 = (UChar*)calloc(sz*8 + 1, sizeof(UChar)); + + + if (buf == NULL || buf2 == NULL) return PyErr_NoMemory(); + + u_strFromUTF8(buf, sz*4, NULL, input, sz, &status); + u_strToLower(buf2, sz*8, buf, -1, loc, &status); + + ans = input; + sz = u_strlen(buf2); + free(buf); + + if (U_SUCCESS(status) && sz > 0) { + buf3 = (char*)calloc(sz*5+1, sizeof(char)); + if (buf3 == NULL) return PyErr_NoMemory(); + u_strToUTF8(buf3, sz*5, NULL, buf2, -1, &status); + if (U_SUCCESS(status)) ans = buf3; + } + + ret = PyUnicode_DecodeUTF8(ans, strlen(ans), "replace"); + if (ret == NULL) return PyErr_NoMemory(); + + free(buf2); + if (buf3 != NULL) free(buf3); + PyMem_Free(input); + + return ret; +} + +// title {{{ +static PyObject * +icu_title(PyObject *self, PyObject *args) { + char *input, *ans, *buf3 = NULL; + const char *loc; + size_t sz; + UChar *buf, *buf2; + PyObject *ret; + UErrorCode status = U_ZERO_ERROR; + + + if (!PyArg_ParseTuple(args, "ses", &loc, "UTF-8", &input)) return NULL; + + sz = strlen(input); + + buf = (UChar*)calloc(sz*4 + 1, sizeof(UChar)); + buf2 = (UChar*)calloc(sz*8 + 1, sizeof(UChar)); + + + if (buf == NULL || buf2 == NULL) return PyErr_NoMemory(); + + u_strFromUTF8(buf, sz*4, NULL, input, sz, &status); + u_strToTitle(buf2, sz*8, buf, -1, NULL, loc, &status); + + ans = input; + sz = u_strlen(buf2); + free(buf); + + if (U_SUCCESS(status) && sz > 0) { + buf3 = (char*)calloc(sz*5+1, sizeof(char)); + if (buf3 == NULL) return PyErr_NoMemory(); + u_strToUTF8(buf3, sz*5, NULL, buf2, -1, &status); + if (U_SUCCESS(status)) ans = buf3; + } + + ret = PyUnicode_DecodeUTF8(ans, strlen(ans), "replace"); + if (ret == NULL) return PyErr_NoMemory(); + + free(buf2); + if (buf3 != NULL) free(buf3); + PyMem_Free(input); + + return ret; +} + + + static PyMethodDef icu_methods[] = { + {"upper", icu_upper, METH_VARARGS, + "upper(locale, unicode object) -> upper cased unicode object using locale rules." + }, + + {"lower", icu_lower, METH_VARARGS, + "lower(locale, unicode object) -> lower cased unicode object using locale rules." + }, + + {"title", icu_title, METH_VARARGS, + "title(locale, unicode object) -> Title cased unicode object using locale rules." + }, + {NULL} /* Sentinel */ }; diff --git a/src/calibre/utils/icu.py b/src/calibre/utils/icu.py index 5251380973..398d2fe75c 100644 --- a/src/calibre/utils/icu.py +++ b/src/calibre/utils/icu.py @@ -10,10 +10,18 @@ from functools import partial from calibre.constants import plugins _icu = _collator = None +_locale = None _none = u'' _none2 = b'' +def get_locale(): + global _locale + if _locale is None: + from calibre.utils.localization import get_lang + _locale = get_lang() + return _locale + def load_icu(): global _icu if _icu is None: @@ -28,11 +36,10 @@ def load_icu(): def load_collator(): global _collator - from calibre.utils.localization import get_lang if _collator is None: icu = load_icu() if icu is not None: - _collator = icu.Collator(get_lang()) + _collator = icu.Collator(get_locale()) return _collator @@ -76,6 +83,13 @@ case_sensitive_sort_key = py_case_sensitive_sort_key if _icu_not_ok else \ icu_case_sensitive_sort_key case_sensitive_strcmp = cmp if _icu_not_ok else icu_case_sensitive_strcmp +upper = (lambda s: s.upper()) if _icu_not_ok else \ + partial(_icu.upper, get_locale()) +lower = (lambda s: s.lower()) if _icu_not_ok else \ + partial(_icu.lower, get_locale()) +title_case = (lambda s: s.title()) if _icu_not_ok else \ + partial(_icu.title, get_locale()) + def test(): # {{{ # Data {{{ @@ -188,5 +202,13 @@ pêché''' print 'French failed (note that French fails with icu < 4.6 i.e. on windows and OS X)' return test_strcmp(german + french) + + print '\nTesting case transforms in current locale' + for x in ('a', 'Alice\'s code'): + print 'Upper:', x, '->', 'py:', x.upper().encode('utf-8'), 'icu:', upper(x).encode('utf-8') + print 'Lower:', x, '->', 'py:', x.lower().encode('utf-8'), 'icu:', lower(x).encode('utf-8') + print 'Title:', x, '->', 'py:', x.title().encode('utf-8'), 'icu:', title_case(x).encode('utf-8') + print + # }}} From e021f02e3522958a64d28f67580fa57e07517901 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Sat, 4 Dec 2010 11:49:56 -0700 Subject: [PATCH 338/377] ... --- src/calibre/utils/icu.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/calibre/utils/icu.py b/src/calibre/utils/icu.py index 398d2fe75c..83ada4e23e 100644 --- a/src/calibre/utils/icu.py +++ b/src/calibre/utils/icu.py @@ -77,19 +77,26 @@ load_icu() load_collator() _icu_not_ok = _icu is None or _collator is None + +################# The string functions ######################################## sort_key = py_sort_key if _icu_not_ok else partial(icu_sort_key, _collator) + strcmp = py_strcmp if _icu_not_ok else partial(icu_strcmp, _collator) + case_sensitive_sort_key = py_case_sensitive_sort_key if _icu_not_ok else \ icu_case_sensitive_sort_key + case_sensitive_strcmp = cmp if _icu_not_ok else icu_case_sensitive_strcmp upper = (lambda s: s.upper()) if _icu_not_ok else \ partial(_icu.upper, get_locale()) + lower = (lambda s: s.lower()) if _icu_not_ok else \ partial(_icu.lower, get_locale()) + title_case = (lambda s: s.title()) if _icu_not_ok else \ partial(_icu.title, get_locale()) - +################################################################################ def test(): # {{{ # Data {{{ From 8716c5611fbee4432a71b261b1da809258f05930 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Sat, 4 Dec 2010 11:50:36 -0700 Subject: [PATCH 339/377] ... --- src/calibre/utils/icu.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/calibre/utils/icu.py b/src/calibre/utils/icu.py index 83ada4e23e..fed6e0b89b 100644 --- a/src/calibre/utils/icu.py +++ b/src/calibre/utils/icu.py @@ -5,6 +5,7 @@ __license__ = 'GPL v3' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __docformat__ = 'restructuredtext en' +# Setup code {{{ from functools import partial from calibre.constants import plugins @@ -77,8 +78,10 @@ load_icu() load_collator() _icu_not_ok = _icu is None or _collator is None +# }}} ################# The string functions ######################################## + sort_key = py_sort_key if _icu_not_ok else partial(icu_sort_key, _collator) strcmp = py_strcmp if _icu_not_ok else partial(icu_strcmp, _collator) @@ -96,6 +99,7 @@ lower = (lambda s: s.lower()) if _icu_not_ok else \ title_case = (lambda s: s.title()) if _icu_not_ok else \ partial(_icu.title, get_locale()) + ################################################################################ def test(): # {{{ From 2fe5c21da81535f1a20f99f910a25c81ac759543 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Sat, 4 Dec 2010 20:45:17 +0000 Subject: [PATCH 340/377] Make sort locale tweak work with new icu.py --- src/calibre/utils/icu.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/calibre/utils/icu.py b/src/calibre/utils/icu.py index eaf236083a..796eac9dbc 100644 --- a/src/calibre/utils/icu.py +++ b/src/calibre/utils/icu.py @@ -9,6 +9,7 @@ __docformat__ = 'restructuredtext en' from functools import partial from calibre.constants import plugins +from calibre.utils.config import tweaks _icu = _collator = None _locale = None From fc39c1ad11979b721830a6845a5f625229fc7f8f Mon Sep 17 00:00:00 2001 From: John Schember <john@nachtimwald.com> Date: Sat, 4 Dec 2010 16:57:13 -0500 Subject: [PATCH 341/377] FB2 Output: Rewrite and restructure. --- src/calibre/ebooks/fb2/fb2ml.py | 226 ++++++++++++++++---------------- 1 file changed, 114 insertions(+), 112 deletions(-) diff --git a/src/calibre/ebooks/fb2/fb2ml.py b/src/calibre/ebooks/fb2/fb2ml.py index 252453d25e..f27729ae8c 100644 --- a/src/calibre/ebooks/fb2/fb2ml.py +++ b/src/calibre/ebooks/fb2/fb2ml.py @@ -26,32 +26,6 @@ from calibre.ebooks.oeb.base import XHTML, XHTML_NS, barename, namespace from calibre.ebooks.oeb.stylizer import Stylizer from calibre.ebooks.oeb.base import OEB_RASTER_IMAGES -TAG_MAP = { - 'b' : 'strong', - 'i' : 'emphasis', - 'p' : 'p', - 'li' : 'p', - 'div': 'p', -} - -TAG_SPACE = [] - -TAG_IMAGES = [ - 'img', -] - -TAG_LINKS = [ -] - -BLOCK = [ - 'p', -] - -STYLES = [ - ('font-weight', {'bold' : 'strong', 'bolder' : 'strong'}), - ('font-style', {'italic' : 'emphasis'}), -] - class FB2MLizer(object): ''' Todo: * Include more FB2 specific tags in the conversion. @@ -63,24 +37,32 @@ class FB2MLizer(object): def __init__(self, log): self.log = log self.image_hrefs = {} + self.reset_state() + + def reset_state(self): # Used to ensure text and tags are always within <p> and </p> self.in_p = False + # Mapping of image names. OEB allows for images to have the same name but be stored + # in different directories. FB2 images are all in a flat layout so we rename all images + # into a sequential numbering system to ensure there are no collisions between image names. + self.image_hrefs = {} def extract_content(self, oeb_book, opts): self.log.info('Converting XHTML to FB2 markup...') self.oeb_book = oeb_book self.opts = opts + return self.fb2mlize_spine() def fb2mlize_spine(self): - self.image_hrefs = {} - self.link_hrefs = {} + self.reset_state() + output = [self.fb2_header()] output.append(self.get_text()) - output.append(self.fb2_body_footer()) output.append(self.fb2mlize_images()) output.append(self.fb2_footer()) output = self.clean_text(u''.join(output)) + if self.opts.pretty_print: return u'<?xml version="1.0" encoding="UTF-8"?>\n%s' % etree.tostring(etree.fromstring(output), encoding=unicode, pretty_print=True) else: @@ -127,24 +109,21 @@ class FB2MLizer(object): '<document-info>' \ '<program-used>%s %s</program-used>' \ '</document-info>' \ - '</description><body>' % tuple(map(prepare_string_for_xml, (author_first, author_middle, author_last, + '</description>' % tuple(map(prepare_string_for_xml, (author_first, author_middle, author_last, self.oeb_book.metadata.title[0].value, __appname__, __version__))) + def fb2_footer(self): + return u'</FictionBook>' + def get_text(self): - text = [] + text = ['<body>'] for item in self.oeb_book.spine: self.log.debug('Converting %s to FictionBook2 XML' % item.href) stylizer = Stylizer(item.data, item.href, self.oeb_book, self.opts, self.opts.output_profile) text.append('<section>') text += self.dump_text(item.data.find(XHTML('body')), stylizer, item) text.append('</section>') - return ''.join(text) - - def fb2_body_footer(self): - return u'</body>' - - def fb2_footer(self): - return u'</FictionBook>' + return ''.join(text) + '</body>' def fb2mlize_images(self): images = [] @@ -178,24 +157,6 @@ class FB2MLizer(object): else: self.in_p = True return ['<p>'], ['p'] - - def insert_empty_line(self, tags): - if self.in_p: - text = [''] - closed_tags = [] - tags.reverse() - for t in tags: - text.append('</%s>' % t) - closed_tags.append(t) - if t == 'p': - break - text.append('<empty-line />') - closed_tags.reverse() - for t in closed_tags: - text.append('<%s>' % t) - return text - else: - return ['<empty-line />'] def close_open_p(self, tags): text = [''] @@ -219,84 +180,125 @@ class FB2MLizer(object): self.in_p = True return text, added_p + + def handle_simple_tag(self, tag, tags): + s_out = [] + s_tags = [] + if tag not in tags: + p_out, p_tags = self.ensure_p() + s_out += p_out + s_tags += p_tags + s_out.append('<%s>' % tag) + s_tags.append(tag) + return s_out, s_tags - def dump_text(self, elem, stylizer, page, tag_stack=[]): - if not isinstance(elem.tag, basestring) \ - or namespace(elem.tag) != XHTML_NS: + def dump_text(self, elem_tree, stylizer, page, tag_stack=[]): + ''' + This function is intended to be used in a recursive manner. dump_text will + run though all elements in the elem_tree and call itself on each element. + + self.image_hrefs will be populated by calling this function. + + @param elem_tree: etree representation of XHTML content to be transformed. + @param stylizer: Used to track the style of elements within the tree. + @param page: OEB page used to determine absolute urls. + @param tag_stack: List of open FB2 tags to take into account. + + @return: List of string representing the XHTML converted to FB2 markup. + ''' + # Ensure what we are converting is not a string and that the fist tag is part of the XHTML namespace. + if not isinstance(elem_tree.tag, basestring) or namespace(elem_tree.tag) != XHTML_NS: return [] - style = stylizer.style(elem) - if style['display'] in ('none', 'oeb-page-head', 'oeb-page-foot') \ - or style['visibility'] == 'hidden': + style = stylizer.style(elem_tree) + if style['display'] in ('none', 'oeb-page-head', 'oeb-page-foot') or style['visibility'] == 'hidden': return [] - fb2_text = [] + # FB2 generated output. + fb2_out = [] + # FB2 tags in the order they are opened. This will be used to close the tags. tags = [] + # First tag in tree + tag = barename(elem_tree.tag) - tag = barename(elem.tag) - - if tag in TAG_IMAGES: - if elem.attrib.get('src', None): - if page.abshref(elem.attrib['src']) not in self.image_hrefs.keys(): - self.image_hrefs[page.abshref(elem.attrib['src'])] = '_%s.jpg' % len(self.image_hrefs.keys()) - p_txt, p_tag = self.ensure_p() - fb2_text += p_txt - tags += p_tag - fb2_text.append('<image xlink:href="#%s" />' % self.image_hrefs[page.abshref(elem.attrib['src'])]) - + # Process the XHTML tag if it needs to be converted to an FB2 tag. if tag == 'h1' and self.opts.h1_to_title or tag == 'h2' and self.opts.h2_to_title or tag == 'h3' and self.opts.h3_to_title: - fb2_text.append('<title>') + fb2_out.append('<title>') tags.append('title') - if tag == 'br': - fb2_text += self.insert_empty_line(tag_stack+tags) - - fb2_tag = TAG_MAP.get(tag, None) - if fb2_tag == 'p': + if tag == 'img': + # TODO: Check that the image is in the manifest and only write the tag if it is. + if elem_tree.attrib.get('src', None): + if page.abshref(elem_tree.attrib['src']) not in self.image_hrefs.keys(): + self.image_hrefs[page.abshref(elem_tree.attrib['src'])] = '_%s.jpg' % len(self.image_hrefs.keys()) + p_txt, p_tag = self.ensure_p() + fb2_out += p_txt + tags += p_tag + fb2_out.append('<image xlink:href="#%s" />' % self.image_hrefs[page.abshref(elem_tree.attrib['src'])]) + elif tag == 'br': + if self.in_p: + closed_tags = [] + open_tags = tag_stack+tags + open_tags.reverse() + for t in open_tags: + fb2_out.append('</%s>' % t) + closed_tags.append(t) + if t == 'p': + break + fb2_out.append('<empty-line />') + closed_tags.reverse() + for t in closed_tags: + fb2_out.append('<%s>' % t) + else: + fb2_out.append('<empty-line />') + elif tag in ('div', 'li', 'p'): p_text, added_p = self.close_open_p(tag_stack+tags) - fb2_text += p_text + fb2_out += p_text if added_p: tags.append('p') - elif fb2_tag and fb2_tag not in tag_stack+tags: - p_text, p_tags = self.ensure_p() - fb2_text += p_text - tags += p_tags - fb2_text.append('<%s>' % fb2_tag) - tags.append(fb2_tag) + elif tag == 'b': + s_out, s_tags = self.handle_simple_tag('strong', tag_stack+tags) + fb2_out += s_out + tags += s_tags + elif tag == 'i': + s_out, s_tags = self.handle_simple_tag('emphasis', tag_stack+tags) + fb2_out += s_out + tags += s_tags - # Processes style information - for s in STYLES: - style_tag = s[1].get(style[s[0]], None) - if style_tag and style_tag not in tag_stack+tags: - p_text, p_tags = self.ensure_p() - fb2_text += p_text - tags += p_tags - fb2_text.append('<%s>' % style_tag) - tags.append(style_tag) - - if tag in TAG_SPACE: - fb2_text.append(' ') - - if hasattr(elem, 'text') and elem.text: + # Processes style information. + if style['font-style'] == 'italic': + s_out, s_tags = self.handle_simple_tag('emphasis', tag_stack+tags) + fb2_out += s_out + tags += s_tags + elif style['font-weight'] in ('bold', 'bolder'): + s_out, s_tags = self.handle_simple_tag('strong', tag_stack+tags) + fb2_out += s_out + tags += s_tags + + # Process element text. + if hasattr(elem_tree, 'text') and elem_tree.text: if not self.in_p: - fb2_text.append('<p>') - fb2_text.append(prepare_string_for_xml(elem.text)) + fb2_out.append('<p>') + fb2_out.append(prepare_string_for_xml(elem_tree.text)) if not self.in_p: - fb2_text.append('</p>') + fb2_out.append('</p>') - for item in elem: - fb2_text += self.dump_text(item, stylizer, page, tag_stack+tags) + # Process sub-elements. + for item in elem_tree: + fb2_out += self.dump_text(item, stylizer, page, tag_stack+tags) + # Close open FB2 tags. tags.reverse() - fb2_text += self.close_tags(tags) + fb2_out += self.close_tags(tags) - if hasattr(elem, 'tail') and elem.tail: + # Process element text that comes after the close of the XHTML tag but before the next XHTML tag. + if hasattr(elem_tree, 'tail') and elem_tree.tail: if not self.in_p: - fb2_text.append('<p>') - fb2_text.append(prepare_string_for_xml(elem.tail)) + fb2_out.append('<p>') + fb2_out.append(prepare_string_for_xml(elem_tree.tail)) if not self.in_p: - fb2_text.append('</p>') + fb2_out.append('</p>') - return fb2_text + return fb2_out def close_tags(self, tags): text = [] From bc669a1f987d80523df4a4ac61b0c35039104ad7 Mon Sep 17 00:00:00 2001 From: John Schember <john@nachtimwald.com> Date: Sat, 4 Dec 2010 19:47:16 -0500 Subject: [PATCH 342/377] FB2 Output: Produce correct metadata header. --- src/calibre/ebooks/fb2/fb2ml.py | 55 +++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 19 deletions(-) diff --git a/src/calibre/ebooks/fb2/fb2ml.py b/src/calibre/ebooks/fb2/fb2ml.py index f27729ae8c..d83dc45a0f 100644 --- a/src/calibre/ebooks/fb2/fb2ml.py +++ b/src/calibre/ebooks/fb2/fb2ml.py @@ -10,6 +10,7 @@ Transform OEB content into FB2 markup import cStringIO from base64 import b64encode +from datetime import datetime import re try: @@ -79,38 +80,54 @@ class FB2MLizer(object): return text def fb2_header(self): - author_first = u'' - author_middle = u'' - author_last = u'' + metadata = {} + metadata['author_first'] = u'' + metadata['author_middle'] = u'' + metadata['author_last'] = u'' + metadata['title'] = self.oeb_book.metadata.title[0].value + metadata['appname'] = __appname__ + metadata['version'] = __version__ + metadata['date'] = '%i.%i.%i' % (datetime.now().day, datetime.now().month, datetime.now().year) + metadata['lang'] = u''.join(self.oeb_book.metadata.lang) if self.oeb_book.metadata.lang else 'en' + author_parts = self.oeb_book.metadata.creator[0].value.split(' ') - if len(author_parts) == 1: - author_last = author_parts[0] + metadata['author_last'] = author_parts[0] elif len(author_parts) == 2: - author_first = author_parts[0] - author_last = author_parts[1] + metadata['author_first'] = author_parts[0] + metadata['author_last'] = author_parts[1] else: - author_first = author_parts[0] - author_middle = ' '.join(author_parts[1:-2]) - author_last = author_parts[-1] + metadata['author_first'] = author_parts[0] + metadata['author_middle'] = ' '.join(author_parts[1:-2]) + metadata['author_last'] = author_parts[-1] + + for key, value in metadata.items(): + metadata[key] = prepare_string_for_xml(value) return u'<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0" xmlns:xlink="http://www.w3.org/1999/xlink">' \ '<description>' \ '<title-info>' \ - '<genre></genre>' \ + '<genre>antique</genre>' \ '<author>' \ - '<first-name>%s</first-name>' \ - '<middle-name>%s</middle-name>' \ - '<last-name>%s</last-name>' \ + '<first-name>%(author_first)s</first-name>' \ + '<middle-name>%(author_middle)s</middle-name>' \ + '<last-name>%(author_last)s</last-name>' \ '</author>' \ - '<book-title>%s</book-title>' \ - '<annotation><p/></annotation>' \ + '<book-title>%(title)s</book-title>' \ + '<lang>%(lang)s</lang>' \ '</title-info>' \ '<document-info>' \ - '<program-used>%s %s</program-used>' \ + '<author>' \ + '<first-name></first-name>' \ + '<middle-name></middle-name>' \ + '<last-name></last-name>' \ + '</author>' \ + '<program-used>%(appname)s %(version)s</program-used>' \ + '<date>%(date)s</date>' \ + '<id>1</id>' \ + '<version>1.0</version>' \ '</document-info>' \ - '</description>' % tuple(map(prepare_string_for_xml, (author_first, author_middle, author_last, - self.oeb_book.metadata.title[0].value, __appname__, __version__))) + '</description>' % metadata def fb2_footer(self): return u'</FictionBook>' From 1f7c291aeb3bae171e5bff44d0ea47ba3fdd5524 Mon Sep 17 00:00:00 2001 From: John Schember <john@nachtimwald.com> Date: Sat, 4 Dec 2010 20:37:16 -0500 Subject: [PATCH 343/377] FB2 Output: Use random uuid for book id. --- src/calibre/ebooks/fb2/fb2ml.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/calibre/ebooks/fb2/fb2ml.py b/src/calibre/ebooks/fb2/fb2ml.py index d83dc45a0f..d89570a44e 100644 --- a/src/calibre/ebooks/fb2/fb2ml.py +++ b/src/calibre/ebooks/fb2/fb2ml.py @@ -12,6 +12,7 @@ import cStringIO from base64 import b64encode from datetime import datetime import re +import uuid try: from PIL import Image @@ -88,7 +89,8 @@ class FB2MLizer(object): metadata['appname'] = __appname__ metadata['version'] = __version__ metadata['date'] = '%i.%i.%i' % (datetime.now().day, datetime.now().month, datetime.now().year) - metadata['lang'] = u''.join(self.oeb_book.metadata.lang) if self.oeb_book.metadata.lang else 'en' + metadata['lang'] = u''.join(self.oeb_book.metadata.lang) if self.oeb_book.metadata.lang else 'en' + metadata['id'] = '%s' % uuid.uuid4() author_parts = self.oeb_book.metadata.creator[0].value.split(' ') if len(author_parts) == 1: @@ -124,7 +126,7 @@ class FB2MLizer(object): '</author>' \ '<program-used>%(appname)s %(version)s</program-used>' \ '<date>%(date)s</date>' \ - '<id>1</id>' \ + '<id>%(id)s</id>' \ '<version>1.0</version>' \ '</document-info>' \ '</description>' % metadata From 63727bc608ddc2683ceb4ceca84a0e0776fb0ceb Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Sat, 4 Dec 2010 19:06:47 -0700 Subject: [PATCH 344/377] ... --- src/calibre/ebooks/oeb/base.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/calibre/ebooks/oeb/base.py b/src/calibre/ebooks/oeb/base.py index 2e480a9941..a077fb0225 100644 --- a/src/calibre/ebooks/oeb/base.py +++ b/src/calibre/ebooks/oeb/base.py @@ -775,6 +775,7 @@ class Manifest(object): return u'Item(id=%r, href=%r, media_type=%r)' \ % (self.id, self.href, self.media_type) + # Parsing {{{ def _parse_xml(self, data): data = xml_to_unicode(data, strip_encoding_pats=True, assume_utf8=True, resolve_entities=True)[0] @@ -1035,6 +1036,8 @@ class Manifest(object): data = item.data.cssText return ('utf-8', data) + # }}} + @dynamic_property def data(self): doc = """Provides MIME type sensitive access to the manifest From 0ea35abaf189ded4ba2e39a6201c545c21e8290e Mon Sep 17 00:00:00 2001 From: John Schember <john@nachtimwald.com> Date: Sat, 4 Dec 2010 22:04:37 -0500 Subject: [PATCH 345/377] FB2 Output: Check image is in document and manifest before referencing and writing. --- src/calibre/ebooks/fb2/fb2ml.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/calibre/ebooks/fb2/fb2ml.py b/src/calibre/ebooks/fb2/fb2ml.py index d89570a44e..3020c002a5 100644 --- a/src/calibre/ebooks/fb2/fb2ml.py +++ b/src/calibre/ebooks/fb2/fb2ml.py @@ -145,8 +145,14 @@ class FB2MLizer(object): return ''.join(text) + '</body>' def fb2mlize_images(self): + ''' + This function uses the self.image_hrefs dictionary mapping. It is populated by the dump_text function. + ''' images = [] for item in self.oeb_book.manifest: + # Don't write the image if it's not referenced in the document's text. + if item.href not in self.image_hrefs: + continue if item.media_type in OEB_RASTER_IMAGES: try: im = Image.open(cStringIO.StringIO(item.data)).convert('RGB') @@ -164,7 +170,7 @@ class FB2MLizer(object): col = 1 col += 1 data += char - images.append('<binary id="%s" content-type="%s">%s\n</binary>' % (self.image_hrefs.get(item.href, '_0000.JPEG'), item.media_type, data)) + images.append('<binary id="%s" content-type="%s">%s\n</binary>' % (self.image_hrefs[item.href], item.media_type, data)) except Exception as e: self.log.error('Error: Could not include file %s because ' \ '%s.' % (item.href, e)) @@ -245,14 +251,15 @@ class FB2MLizer(object): fb2_out.append('<title>') tags.append('title') if tag == 'img': - # TODO: Check that the image is in the manifest and only write the tag if it is. if elem_tree.attrib.get('src', None): - if page.abshref(elem_tree.attrib['src']) not in self.image_hrefs.keys(): - self.image_hrefs[page.abshref(elem_tree.attrib['src'])] = '_%s.jpg' % len(self.image_hrefs.keys()) - p_txt, p_tag = self.ensure_p() - fb2_out += p_txt - tags += p_tag - fb2_out.append('<image xlink:href="#%s" />' % self.image_hrefs[page.abshref(elem_tree.attrib['src'])]) + # Only write the image tag if it is in the manifest. + if page.abshref(elem_tree.attrib['src']) in self.oeb_book.manifest.hrefs.keys(): + if page.abshref(elem_tree.attrib['src']) not in self.image_hrefs.keys(): + self.image_hrefs[page.abshref(elem_tree.attrib['src'])] = '_%s.jpg' % len(self.image_hrefs.keys()) + p_txt, p_tag = self.ensure_p() + fb2_out += p_txt + tags += p_tag + fb2_out.append('<image xlink:href="#%s" />' % self.image_hrefs[page.abshref(elem_tree.attrib['src'])]) elif tag == 'br': if self.in_p: closed_tags = [] From 596c8b905bd7280093cc84eb57bef674326a63a0 Mon Sep 17 00:00:00 2001 From: John Schember <john@nachtimwald.com> Date: Sat, 4 Dec 2010 22:14:30 -0500 Subject: [PATCH 346/377] FB2 Output: SVG rasterization. --- src/calibre/ebooks/fb2/output.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/calibre/ebooks/fb2/output.py b/src/calibre/ebooks/fb2/output.py index 88508b83e0..33714c6e6e 100644 --- a/src/calibre/ebooks/fb2/output.py +++ b/src/calibre/ebooks/fb2/output.py @@ -29,6 +29,14 @@ class FB2Output(OutputFormatPlugin): def convert(self, oeb_book, output_path, input_plugin, opts, log): from calibre.ebooks.oeb.transforms.jacket import linearize_jacket + from calibre.ebooks.oeb.transforms.rasterize import SVGRasterizer, Unavailable + + try: + rasterizer = SVGRasterizer() + rasterizer(oeb_book, opts) + except Unavailable: + self.log.warn('SVG rasterizer unavailable, SVG will not be converted') + linearize_jacket(oeb_book) fb2mlizer = FB2MLizer(log) From cafe81f2e4528b596517108d501cd7a934864d15 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Sat, 4 Dec 2010 20:20:20 -0700 Subject: [PATCH 347/377] EPUB Output: Mangle filenames to ensure they are unique, to support broken EPUB Readers like Aldiko and Stanza. Currently disabled pending further testing. --- src/calibre/ebooks/epub/output.py | 3 + .../ebooks/oeb/transforms/filenames.py | 130 ++++++++++++++++++ 2 files changed, 133 insertions(+) create mode 100644 src/calibre/ebooks/oeb/transforms/filenames.py diff --git a/src/calibre/ebooks/epub/output.py b/src/calibre/ebooks/epub/output.py index 17f6eb9f46..c5d11edc2b 100644 --- a/src/calibre/ebooks/epub/output.py +++ b/src/calibre/ebooks/epub/output.py @@ -142,6 +142,9 @@ class EPUBOutput(OutputFormatPlugin): def convert(self, oeb, output_path, input_plugin, opts, log): self.log, self.opts, self.oeb = log, opts, oeb + #from calibre.ebooks.oeb.transforms.filenames import UniqueFilenames + #UniqueFilenames()(oeb, opts) + self.workaround_ade_quirks() self.workaround_webkit_quirks() self.upshift_markup() diff --git a/src/calibre/ebooks/oeb/transforms/filenames.py b/src/calibre/ebooks/oeb/transforms/filenames.py new file mode 100644 index 0000000000..2b22474d30 --- /dev/null +++ b/src/calibre/ebooks/oeb/transforms/filenames.py @@ -0,0 +1,130 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai + +__license__ = 'GPL v3' +__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' +__docformat__ = 'restructuredtext en' + +import posixpath +from urlparse import urldefrag + +from lxml import etree +import cssutils + +from calibre.ebooks.oeb.base import rewrite_links, urlnormalize + +class RenameFiles(object): + + ''' + Rename files and adjust all links pointing to them. Note that the spine + and manifest are not touched by this transform. + ''' + + def __init__(self, rename_map): + self.rename_map = rename_map + + def __call__(self, oeb, opts): + self.log = oeb.logger + self.opts = opts + self.oeb = oeb + + for item in oeb.manifest.items: + self.current_item = item + if etree.iselement(item.data): + rewrite_links(self.current_item.data, self.url_replacer) + elif hasattr(item.data, 'cssText'): + cssutils.replaceUrls(item.data, self.url_replacer) + + if self.oeb.guide: + for ref in self.oeb.guide.values(): + href = urlnormalize(ref.href) + href, frag = urldefrag(href) + replacement = self.rename_map.get(href, None) + if replacement is not None: + nhref = replacement + if frag: + nhref += '#' + frag + ref.href = nhref + + if self.oeb.toc: + self.fix_toc_entry(self.oeb.toc) + + + def fix_toc_entry(self, toc): + if toc.href: + href = urlnormalize(toc.href) + href, frag = urldefrag(href) + replacement = self.rename_map.get(href, None) + + if replacement is not None: + nhref = replacement + if frag: + nhref = '#'.join((nhref, frag)) + toc.href = nhref + + for x in toc: + self.fix_toc_entry(x) + + def url_replacer(self, orig_url): + url = urlnormalize(orig_url) + path, frag = urldefrag(url) + href = self.current_item.abshref(path) + replacement = self.rename_map.get(href, None) + if replacement is None: + return orig_url + replacement = self.current_item.relhref(replacement) + if frag: + replacement += '#' + frag + return replacement + +class UniqueFilenames(object): + + 'Ensure that every item in the manifest has a unique filename' + + def __call__(self, oeb, opts): + self.log = oeb.logger + self.opts = opts + self.oeb = oeb + + self.seen_filenames = set([]) + self.rename_map = {} + + for item in list(oeb.manifest.items): + fname = posixpath.basename(item.href) + if fname in self.seen_filenames: + suffix = self.unique_suffix(fname) + data = item.data + base, ext = posixpath.splitext(item.href) + nhref = base + suffix + ext + nhref = oeb.manifest.generate(href=nhref)[1] + nitem = oeb.manifest.add(item.id, nhref, item.media_type, data=data, + fallback=item.fallback) + self.seen_filenames.add(posixpath.basename(nhref)) + self.rename_map[item.href] = nhref + if item.spine_position is not None: + oeb.spine.insert(item.spine_position, nitem, item.linear) + oeb.spine.remove(item) + oeb.manifest.remove(item) + else: + self.seen_filenames.add(fname) + + if self.rename_map: + self.log('Found non-unique filenames, renaming to support broken' + ' EPUB readers like FBReader, Aldiko and Stanza...') + from pprint import pformat + self.log.debug(pformat(self.rename_map)) + + renamer = RenameFiles(self.rename_map) + renamer(oeb, opts) + + + def unique_suffix(self, fname): + base, ext = posixpath.splitext(fname) + c = 0 + while True: + c += 1 + suffix = '_u%d'%c + candidate = base + suffix + ext + if candidate not in self.seen_filenames: + return suffix + From f7d9571c4c51f8640841f3dfd45af7a71d3fff12 Mon Sep 17 00:00:00 2001 From: John Schember <john@nachtimwald.com> Date: Sat, 4 Dec 2010 22:37:34 -0500 Subject: [PATCH 348/377] FB2 Output: Replace PIL with ImageMagick. Don't convert JPG images to JPG because it's unnecessary. --- src/calibre/ebooks/fb2/fb2ml.py | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/calibre/ebooks/fb2/fb2ml.py b/src/calibre/ebooks/fb2/fb2ml.py index 3020c002a5..b04cb50d46 100644 --- a/src/calibre/ebooks/fb2/fb2ml.py +++ b/src/calibre/ebooks/fb2/fb2ml.py @@ -8,18 +8,12 @@ __docformat__ = 'restructuredtext en' Transform OEB content into FB2 markup ''' -import cStringIO from base64 import b64encode from datetime import datetime +from mimetypes import types_map import re import uuid -try: - from PIL import Image - Image -except ImportError: - import Image - from lxml import etree from calibre import prepare_string_for_xml @@ -27,6 +21,7 @@ from calibre.constants import __appname__, __version__ from calibre.ebooks.oeb.base import XHTML, XHTML_NS, barename, namespace from calibre.ebooks.oeb.stylizer import Stylizer from calibre.ebooks.oeb.base import OEB_RASTER_IMAGES +from calibre.utils.magick import Image class FB2MLizer(object): ''' @@ -155,11 +150,11 @@ class FB2MLizer(object): continue if item.media_type in OEB_RASTER_IMAGES: try: - im = Image.open(cStringIO.StringIO(item.data)).convert('RGB') - data = cStringIO.StringIO() - im.save(data, 'JPEG') - data = data.getvalue() - + if not item.media_type == types_map['.jpeg'] or not item.media_type == types_map['.jpg']: + im = Image() + im.load(item.data) + im.set_compression_quality(70) + data = im.export('jpg') raw_data = b64encode(data) # Don't put the encoded image on a single line. data = '' From 4d3e99af6733a7ed7bba89297971b8847d5483d9 Mon Sep 17 00:00:00 2001 From: John Schember <john@nachtimwald.com> Date: Sat, 4 Dec 2010 22:59:37 -0500 Subject: [PATCH 349/377] FB2 Output: Fix writing incorrect mimetype. --- src/calibre/ebooks/fb2/fb2ml.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/ebooks/fb2/fb2ml.py b/src/calibre/ebooks/fb2/fb2ml.py index 479cd4d789..0748970c60 100644 --- a/src/calibre/ebooks/fb2/fb2ml.py +++ b/src/calibre/ebooks/fb2/fb2ml.py @@ -165,7 +165,7 @@ class FB2MLizer(object): col = 1 col += 1 data += char - images.append('<binary id="%s" content-type="%s">%s\n</binary>' % (self.image_hrefs[item.href], item.media_type, data)) + images.append('<binary id="%s">%s\n</binary>' % (self.image_hrefs[item.href], data)) except Exception as e: self.log.error('Error: Could not include file %s because ' \ '%s.' % (item.href, e)) From fcd87f216c6172443f3245b1ad117435aca516c9 Mon Sep 17 00:00:00 2001 From: John Schember <john@nachtimwald.com> Date: Sat, 4 Dec 2010 23:02:55 -0500 Subject: [PATCH 350/377] FB2 Output: Add image mimetype back and set to jpg because that is what is written. --- src/calibre/ebooks/fb2/fb2ml.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/ebooks/fb2/fb2ml.py b/src/calibre/ebooks/fb2/fb2ml.py index 0748970c60..46861357e6 100644 --- a/src/calibre/ebooks/fb2/fb2ml.py +++ b/src/calibre/ebooks/fb2/fb2ml.py @@ -165,7 +165,7 @@ class FB2MLizer(object): col = 1 col += 1 data += char - images.append('<binary id="%s">%s\n</binary>' % (self.image_hrefs[item.href], data)) + images.append('<binary id="%s" content-type="image/jpeg">%s\n</binary>' % (self.image_hrefs[item.href], data)) except Exception as e: self.log.error('Error: Could not include file %s because ' \ '%s.' % (item.href, e)) From 9daa9486a2a5d85af1425546a00bc841f64b0115 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Sun, 5 Dec 2010 11:37:25 +0000 Subject: [PATCH 351/377] Change instances of title() to use the ICU function. Change a few lower() as well. --- src/calibre/devices/apple/driver.py | 8 +++--- src/calibre/ebooks/markdown/mdx_toc.py | 5 ++-- src/calibre/ebooks/mobi/langcodes.py | 2 +- src/calibre/ebooks/oeb/base.py | 2 +- .../ebooks/oeb/transforms/manglecase.py | 6 ++--- src/calibre/gui2/dialogs/metadata_bulk.py | 4 +-- src/calibre/library/caches.py | 4 +-- src/calibre/library/catalog.py | 6 ++--- src/calibre/startup.py | 4 +++ src/calibre/utils/titlecase.py | 26 ++++++++++++------- 10 files changed, 39 insertions(+), 28 deletions(-) diff --git a/src/calibre/devices/apple/driver.py b/src/calibre/devices/apple/driver.py index d42c51cedd..0f281ecc92 100644 --- a/src/calibre/devices/apple/driver.py +++ b/src/calibre/devices/apple/driver.py @@ -2637,7 +2637,7 @@ class ITUNES(DriverBase): lb_added.composer.set(metadata_x.uuid) lb_added.description.set("%s %s" % (self.description_prefix,strftime('%Y-%m-%d %H:%M:%S'))) lb_added.enabled.set(True) - lb_added.sort_artist.set(metadata_x.author_sort.title()) + lb_added.sort_artist.set(icu_title(metadata_x.author_sort)) lb_added.sort_name.set(metadata.title_sort) @@ -2648,7 +2648,7 @@ class ITUNES(DriverBase): db_added.composer.set(metadata_x.uuid) db_added.description.set("%s %s" % (self.description_prefix,strftime('%Y-%m-%d %H:%M:%S'))) db_added.enabled.set(True) - db_added.sort_artist.set(metadata_x.author_sort.title()) + db_added.sort_artist.set(icu_title(metadata_x.author_sort)) db_added.sort_name.set(metadata.title_sort) if metadata_x.comments: @@ -2729,7 +2729,7 @@ class ITUNES(DriverBase): lb_added.Composer = metadata_x.uuid lb_added.Description = ("%s %s" % (self.description_prefix,strftime('%Y-%m-%d %H:%M:%S'))) lb_added.Enabled = True - lb_added.SortArtist = metadata_x.author_sort.title() + lb_added.SortArtist = icu_title(metadata_x.author_sort) lb_added.SortName = metadata.title_sort if db_added: @@ -2739,7 +2739,7 @@ class ITUNES(DriverBase): db_added.Composer = metadata_x.uuid db_added.Description = ("%s %s" % (self.description_prefix,strftime('%Y-%m-%d %H:%M:%S'))) db_added.Enabled = True - db_added.SortArtist = metadata_x.author_sort.title() + db_added.SortArtist = icu_title(metadata_x.author_sort) db_added.SortName = metadata.title_sort if metadata_x.comments: diff --git a/src/calibre/ebooks/markdown/mdx_toc.py b/src/calibre/ebooks/markdown/mdx_toc.py index 15fd5061a0..322b820a4e 100644 --- a/src/calibre/ebooks/markdown/mdx_toc.py +++ b/src/calibre/ebooks/markdown/mdx_toc.py @@ -18,9 +18,10 @@ def extract_alphanumeric(in_str=None): """ # I'm sure this is really inefficient and # could be done with a lambda/map() - #x.strip().title().replace(' ', "") + #x.strip(). title().replace(' ', "") out_str=[] - for x in in_str.title(): + for x in in_str: + x = icu_title(x) if x.isalnum(): out_str.append(x) return ''.join(out_str) diff --git a/src/calibre/ebooks/mobi/langcodes.py b/src/calibre/ebooks/mobi/langcodes.py index 5d085906df..723b619590 100644 --- a/src/calibre/ebooks/mobi/langcodes.py +++ b/src/calibre/ebooks/mobi/langcodes.py @@ -322,7 +322,7 @@ def iana2mobi(icode): while len(subtags) > 0: subtag = subtags.pop(0) if subtag not in langdict: - subtag = subtag.title() + subtag = icu_title(subtag) if subtag not in langdict: subtag = subtag.upper() if subtag in langdict: diff --git a/src/calibre/ebooks/oeb/base.py b/src/calibre/ebooks/oeb/base.py index a077fb0225..0f364b8030 100644 --- a/src/calibre/ebooks/oeb/base.py +++ b/src/calibre/ebooks/oeb/base.py @@ -607,7 +607,7 @@ class Metadata(object): key = barename(key) attrib[key] = prefixname(value, nsrmap) if namespace(self.term) == DC11_NS: - name = DC(barename(self.term).title()) + name = DC(icu_title(barename(self.term))) elem = element(dcmeta, name, attrib=attrib) elem.text = self.value else: diff --git a/src/calibre/ebooks/oeb/transforms/manglecase.py b/src/calibre/ebooks/oeb/transforms/manglecase.py index 04bf63ac1d..240f7e7726 100644 --- a/src/calibre/ebooks/oeb/transforms/manglecase.py +++ b/src/calibre/ebooks/oeb/transforms/manglecase.py @@ -50,11 +50,11 @@ class CaseMangler(object): def text_transform(self, transform, text): if transform == 'capitalize': - return text.title() + return icu_title(text) elif transform == 'uppercase': - return text.upper() + return icu_upper(text) elif transform == 'lowercase': - return text.lower() + return icu_lower(text) return text def split_text(self, text): diff --git a/src/calibre/gui2/dialogs/metadata_bulk.py b/src/calibre/gui2/dialogs/metadata_bulk.py index 362091eb2d..4a44b0cefa 100644 --- a/src/calibre/gui2/dialogs/metadata_bulk.py +++ b/src/calibre/gui2/dialogs/metadata_bulk.py @@ -184,8 +184,8 @@ class MyBlockingBusy(QDialog): class MetadataBulkDialog(QDialog, Ui_MetadataBulkDialog): s_r_functions = { '' : lambda x: x, - _('Lower Case') : lambda x: x.lower(), - _('Upper Case') : lambda x: x.upper(), + _('Lower Case') : lambda x: icu_lower(x), + _('Upper Case') : lambda x: icu_upper(x), _('Title Case') : lambda x: titlecase(x), } diff --git a/src/calibre/library/caches.py b/src/calibre/library/caches.py index 7c1dea792c..5b6b79e3df 100644 --- a/src/calibre/library/caches.py +++ b/src/calibre/library/caches.py @@ -223,7 +223,7 @@ EQUALS_MATCH = 1 REGEXP_MATCH = 2 def _match(query, value, matchkind): for t in value: - t = t.lower() + t = icu_lower(t) try: ### ignore regexp exceptions, required because search-ahead tries before typing is finished if ((matchkind == EQUALS_MATCH and query == t) or (matchkind == REGEXP_MATCH and re.search(query, t, re.I)) or ### search unanchored @@ -505,7 +505,7 @@ class ResultCache(SearchQueryParser): # {{{ query = query[1:] if matchkind != REGEXP_MATCH: # leave case in regexps because it can be significant e.g. \S \W \D - query = query.lower() + query = icu_lower(query) if not isinstance(query, unicode): query = query.decode('utf-8') diff --git a/src/calibre/library/catalog.py b/src/calibre/library/catalog.py index eed258a6b0..0b317d6a6e 100644 --- a/src/calibre/library/catalog.py +++ b/src/calibre/library/catalog.py @@ -1476,20 +1476,20 @@ class EPUB_MOBI(CatalogPlugin): self.opts.log.warn(" '%s' != '%s'" % (author[1], current_author[1])) # New author, save the previous author/sort/count - unique_authors.append((current_author[0], current_author[1].title(), + unique_authors.append((current_author[0], icu_title(current_author[1]), books_by_current_author)) current_author = author books_by_current_author = 1 elif i==0 and len(authors) == 1: # Allow for single-book lists - unique_authors.append((current_author[0], current_author[1].title(), + unique_authors.append((current_author[0], icu_title(current_author[1]), books_by_current_author)) else: books_by_current_author += 1 else: # Add final author to list or single-author dataset if (current_author == author and len(authors) > 1) or not multiple_authors: - unique_authors.append((current_author[0], current_author[1].title(), + unique_authors.append((current_author[0], icu_title(current_author[1]), books_by_current_author)) if False and self.verbose: diff --git a/src/calibre/startup.py b/src/calibre/startup.py index 9c9c7651b7..41b20f3946 100644 --- a/src/calibre/startup.py +++ b/src/calibre/startup.py @@ -199,6 +199,10 @@ if not _run_once: __builtin__.__dict__['lopen'] = local_open + from calibre.utils.icu import title_case, lower as icu_lower, upper as icu_upper + __builtin__.__dict__['icu_lower'] = icu_lower + __builtin__.__dict__['icu_upper'] = icu_upper + __builtin__.__dict__['icu_title'] = title_case import mimetypes mimetypes.init([P('mime.types')]) diff --git a/src/calibre/utils/titlecase.py b/src/calibre/utils/titlecase.py index 3ead4848fd..cb0d840515 100755 --- a/src/calibre/utils/titlecase.py +++ b/src/calibre/utils/titlecase.py @@ -40,6 +40,12 @@ def titlecase(text): """ + def capitalize(w): + print 'in capitalize' + w = icu_lower(w) + w = w.replace(w[0], icu_upper(w[0])) + return w + all_caps = ALL_CAPS.match(text) words = re.split('\s', text) @@ -50,29 +56,29 @@ def titlecase(text): line.append(word) continue else: - word = word.lower() + word = icu_lower(word) if APOS_SECOND.match(word): - word = word.replace(word[0], word[0].upper()) - word = word.replace(word[2], word[2].upper()) + word = word.replace(word[0], icu_upper(word[0])) + word = word.replace(word[2], icu_upper(word[2])) line.append(word) continue if INLINE_PERIOD.search(word) or UC_ELSEWHERE.match(word): line.append(word) continue if SMALL_WORDS.match(word): - line.append(word.lower()) + line.append(icu_lower(word)) continue match = MAC_MC.match(word) if match: - line.append("%s%s" % (match.group(1).capitalize(), - match.group(2).capitalize())) + line.append("%s%s" % (capitalize(match.group(1)), + capitalize(match.group(2)))) continue hyphenated = [] for item in word.split('-'): - hyphenated.append(CAPFIRST.sub(lambda m: m.group(0).upper(), item)) + hyphenated.append(CAPFIRST.sub(lambda m: icu_upper(m.group(0)), item)) line.append("-".join(hyphenated)) @@ -80,14 +86,14 @@ def titlecase(text): result = SMALL_FIRST.sub(lambda m: '%s%s' % ( m.group(1), - m.group(2).capitalize() + capitalize(m.group(2)) ), result) - result = SMALL_LAST.sub(lambda m: m.group(0).capitalize(), result) + result = SMALL_LAST.sub(lambda m: capitalize(m.group(0)), result) result = SUBPHRASE.sub(lambda m: '%s%s' % ( m.group(1), - m.group(2).capitalize() + capitalize(m.group(2)) ), result) return result From 37e7cb6ec20ec0ecd63061aa8ac735b4df6b8113 Mon Sep 17 00:00:00 2001 From: John Schember <john@nachtimwald.com> Date: Sun, 5 Dec 2010 08:24:30 -0500 Subject: [PATCH 352/377] FB2 Output: Use precomputed uuid when avaliable. --- src/calibre/ebooks/fb2/fb2ml.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/calibre/ebooks/fb2/fb2ml.py b/src/calibre/ebooks/fb2/fb2ml.py index 46861357e6..51bfaa7293 100644 --- a/src/calibre/ebooks/fb2/fb2ml.py +++ b/src/calibre/ebooks/fb2/fb2ml.py @@ -20,7 +20,7 @@ from calibre import prepare_string_for_xml from calibre.constants import __appname__, __version__ from calibre.ebooks.oeb.base import XHTML, XHTML_NS, barename, namespace from calibre.ebooks.oeb.stylizer import Stylizer -from calibre.ebooks.oeb.base import OEB_RASTER_IMAGES +from calibre.ebooks.oeb.base import OEB_RASTER_IMAGES, OPF from calibre.utils.magick import Image class FB2MLizer(object): @@ -85,8 +85,8 @@ class FB2MLizer(object): metadata['version'] = __version__ metadata['date'] = '%i.%i.%i' % (datetime.now().day, datetime.now().month, datetime.now().year) metadata['lang'] = u''.join(self.oeb_book.metadata.lang) if self.oeb_book.metadata.lang else 'en' - metadata['id'] = '%s' % uuid.uuid4() - + metadata['id'] = None + author_parts = self.oeb_book.metadata.creator[0].value.split(' ') if len(author_parts) == 1: metadata['author_last'] = author_parts[0] @@ -98,6 +98,15 @@ class FB2MLizer(object): metadata['author_middle'] = ' '.join(author_parts[1:-2]) metadata['author_last'] = author_parts[-1] + identifiers = self.oeb_book.metadata['identifier'] + for x in identifiers: + if x.get(OPF('scheme'), None).lower() == 'uuid' or unicode(x).startswith('urn:uuid:'): + metadata['id'] = unicode(x).split(':')[-1] + break + if metadata['id'] is None: + self.log.warn('No UUID identifier found') + metadata['id'] = str(uuid.uuid4()) + for key, value in metadata.items(): metadata[key] = prepare_string_for_xml(value) From 37d51495d227b2ce2689477ff45109bbbd12c987 Mon Sep 17 00:00:00 2001 From: Sengian <sengian1@gmail.com> Date: Sun, 5 Dec 2010 15:28:41 +0100 Subject: [PATCH 353/377] Update of nicebooks --- src/calibre/ebooks/metadata/nicebooks.py | 113 ++++++++++------------- 1 file changed, 50 insertions(+), 63 deletions(-) diff --git a/src/calibre/ebooks/metadata/nicebooks.py b/src/calibre/ebooks/metadata/nicebooks.py index 4d19e9611b..01e20261b3 100644 --- a/src/calibre/ebooks/metadata/nicebooks.py +++ b/src/calibre/ebooks/metadata/nicebooks.py @@ -10,7 +10,8 @@ from copy import deepcopy from lxml.html import soupparser -from calibre.utils.date import parse_date, utcnow +from calibre.utils.date import parse_date, utcnow, replace_months +from calibre.utils.cleantext import clean_ascii_char from calibre import browser, preferred_encoding from calibre.ebooks.chardet import xml_to_unicode from calibre.ebooks.metadata import MetaInformation, check_isbn, \ @@ -71,31 +72,16 @@ class NiceBooksCovers(CoverDownload): traceback.format_exc(), self.name)) +class NiceBooksError(Exception): + pass + +class ISBNNotFound(NiceBooksError): + pass + def report(verbose): if verbose: - import traceback traceback.print_exc() -def replace_monthsfr(datefr): - # Replace french months by english equivalent for parse_date - frtoen = { - u'[jJ]anvier': u'jan', - u'[fF].vrier': u'feb', - u'[mM]ars': u'mar', - u'[aA]vril': u'apr', - u'[mM]ai': u'may', - u'[jJ]uin': u'jun', - u'[jJ]uillet': u'jul', - u'[aA]o.t': u'aug', - u'[sS]eptembre': u'sep', - u'[Oo]ctobre': u'oct', - u'[nN]ovembre': u'nov', - u'[dD].cembre': u'dec' } - for k in frtoen.iterkeys(): - tmp = re.sub(k, frtoen[k], datefr) - if tmp <> datefr: break - return tmp - class Query(object): BASE_URL = 'http://fr.nicebooks.com/' @@ -119,7 +105,7 @@ class Query(object): def __call__(self, browser, verbose, timeout = 5.): if verbose: - print 'Query:', self.BASE_URL+self.urldata + print _('Query: %s') % self.BASE_URL+self.urldata try: raw = browser.open_novisit(self.BASE_URL+self.urldata, timeout=timeout).read() @@ -128,7 +114,9 @@ class Query(object): if callable(getattr(e, 'getcode', None)) and \ e.getcode() == 404: return - raise + if isinstance(getattr(e, 'args', [None])[0], socket.timeout): + raise NiceBooksError(_('Nicebooks timed out. Try again later.')) + raise NiceBooksError(_('Nicebooks encountered an error.')) if '<title>404 - ' in raw: return raw = xml_to_unicode(raw, strip_encoding_pats=True, @@ -136,7 +124,11 @@ class Query(object): try: feed = soupparser.fromstring(raw) except: - return + try: + #remove ASCII invalid chars + feed = soupparser.fromstring(clean_ascii_char(raw)) + except: + return None #nb of page to call try: @@ -161,7 +153,11 @@ class Query(object): try: feed = soupparser.fromstring(raw) except: - continue + try: + #remove ASCII invalid chars + feed = soupparser.fromstring(clean_ascii_char(raw)) + except: + continue pages.append(feed) results = [] @@ -180,14 +176,12 @@ class ResultList(list): self.reautclean = re.compile(u'\s*\(.*\)\s*') def get_title(self, entry): - # title = deepcopy(entry.find("div[@id='book-info']")) title = deepcopy(entry) title.remove(title.find("dl[@title='Informations sur le livre']")) title = ' '.join([i.text_content() for i in title.iterchildren()]) return unicode(title.replace('\n', '')) def get_authors(self, entry): - # author = entry.find("div[@id='book-info']/dl[@title='Informations sur le livre']") author = entry.find("dl[@title='Informations sur le livre']") authortext = [] for x in author.getiterator('dt'): @@ -223,7 +217,7 @@ class ResultList(list): d = x.getnext().text_content() try: default = utcnow().replace(day=15) - d = replace_monthsfr(d) + d = replace_months(d, 'fr') d = parse_date(d, assume_utc=True, default=default) mi.pubdate = d except: @@ -234,11 +228,6 @@ class ResultList(list): mi = MetaInformation(title, authors) mi.author_sort = authors_to_sort_string(authors) mi.comments = self.get_description(entry, verbose) - # entry = entry.find("dl[@title='Informations sur le livre']") - # mi.publisher = self.get_publisher(entry) - # mi.pubdate = self.get_date(entry, verbose) - # mi.isbn = self.get_ISBN(entry) - # mi.language = self.get_language(entry) return self.get_book_info(entry, mi, verbose) def get_individual_metadata(self, browser, linkdata, verbose): @@ -249,7 +238,9 @@ class ResultList(list): if callable(getattr(e, 'getcode', None)) and \ e.getcode() == 404: return - raise + if isinstance(getattr(e, 'args', [None])[0], socket.timeout): + raise NiceBooksError(_('Nicebooks timed out. Try again later.')) + raise NiceBooksError(_('Nicebooks encountered an error.')) if '<title>404 - ' in raw: report(verbose) return @@ -258,7 +249,11 @@ class ResultList(list): try: feed = soupparser.fromstring(raw) except: - return + try: + #remove ASCII invalid chars + feed = soupparser.fromstring(clean_ascii_char(raw)) + except: + return None # get results return feed.xpath("//div[@id='container']")[0] @@ -292,13 +287,6 @@ class ResultList(list): continue self.append(self.fill_MI(entry, title, authors, verbose)) - -class NiceBooksError(Exception): - pass - -class ISBNNotFound(NiceBooksError): - pass - class Covers(object): def __init__(self, isbn = None): @@ -329,11 +317,10 @@ class Covers(object): return cover, ext if ext else 'jpg' except Exception, err: if isinstance(getattr(err, 'args', [None])[0], socket.timeout): - err = NiceBooksError(_('Nicebooks timed out. Try again later.')) - raise err + raise NiceBooksError(_('Nicebooks timed out. Try again later.')) if not len(self.urlimg): if not self.isbnf: - raise ISBNNotFound('ISBN: '+self.isbn+_(' not found.')) + raise ISBNNotFound(_('ISBN: %s not found.') % self.isbn) raise NiceBooksError(_('An errror occured with Nicebooks cover fetcher')) @@ -341,10 +328,10 @@ def search(title=None, author=None, publisher=None, isbn=None, max_results=5, verbose=False, keywords=None): br = browser() entries = Query(title=title, author=author, isbn=isbn, publisher=publisher, - keywords=keywords, max_results=max_results)(br, verbose) + keywords=keywords, max_results=max_results)(br, verbose,timeout = 10.) if entries is None or len(entries) == 0: - return + return None #List of entry ans = ResultList() @@ -364,28 +351,28 @@ def cover_from_isbn(isbn, timeout = 5.): def option_parser(): parser = OptionParser(textwrap.dedent(\ - '''\ + _('''\ %prog [options] Fetch book metadata from Nicebooks. You must specify one of title, author, ISBN, publisher or keywords. Will fetch a maximum of 20 matches, so you should make your query as specific as possible. It can also get covers if the option is activated. - ''' + ''') )) - parser.add_option('-t', '--title', help='Book title') - parser.add_option('-a', '--author', help='Book author(s)') - parser.add_option('-p', '--publisher', help='Book publisher') - parser.add_option('-i', '--isbn', help='Book ISBN') - parser.add_option('-k', '--keywords', help='Keywords') + parser.add_option('-t', '--title', help=_('Book title')) + parser.add_option('-a', '--author', help=_('Book author(s)')) + parser.add_option('-p', '--publisher', help=_('Book publisher')) + parser.add_option('-i', '--isbn', help=_('Book ISBN')) + parser.add_option('-k', '--keywords', help=_('Keywords')) parser.add_option('-c', '--covers', default=0, - help='Covers: 1-Check/ 2-Download') + help=_('Covers: 1-Check/ 2-Download')) parser.add_option('-p', '--coverspath', default='', - help='Covers files path') + help=_('Covers files path')) parser.add_option('-m', '--max-results', default=20, - help='Maximum number of results to fetch') + help=_('Maximum number of results to fetch')) parser.add_option('-v', '--verbose', default=0, action='count', - help='Be more verbose about errors') + help=_('Be more verbose about errors')) return parser def main(args=sys.argv): @@ -400,15 +387,15 @@ def main(args=sys.argv): parser.print_help() return 1 if results is None or len(results) == 0: - print 'No result found for this search!' + print _('No result found for this search!') return 0 for result in results: print unicode(result).encode(preferred_encoding, 'replace') covact = int(opts.covers) if covact == 1: - textcover = 'No cover found!' + textcover = _('No cover found!') if check_for_cover(result.isbn): - textcover = 'A cover was found for this book' + textcover = _('A cover was found for this book') print textcover elif covact == 2: cover_data, ext = cover_from_isbn(result.isbn) @@ -417,7 +404,7 @@ def main(args=sys.argv): cpath = os.path.normpath(opts.coverspath + '/' + result.isbn) oname = os.path.abspath(cpath+'.'+ext) open(oname, 'wb').write(cover_data) - print 'Cover saved to file ', oname + print _('Cover saved to file '), oname print if __name__ == '__main__': From b87a738ef25896e13e08c72fafb3e499a4a98759 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Sun, 5 Dec 2010 15:42:17 +0000 Subject: [PATCH 354/377] Add some comments to tag_categories.py to explain the structure of the stored user categories --- src/calibre/gui2/dialogs/tag_categories.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/calibre/gui2/dialogs/tag_categories.py b/src/calibre/gui2/dialogs/tag_categories.py index 210a2704bf..60092e4bd2 100644 --- a/src/calibre/gui2/dialogs/tag_categories.py +++ b/src/calibre/gui2/dialogs/tag_categories.py @@ -22,6 +22,15 @@ class Item: return 'name=%s, label=%s, index=%s, exists='%(self.name, self.label, self.index, self.exists) class TagCategories(QDialog, Ui_TagCategories): + ''' + The structure of user_categories stored in preferences is + {cat_name: [ [name, category, v], [], []}, cat_name [ [name, cat, v] ...} + where name is the item name, category is where it came from (series, etc), + and v is a scratch area that this editor uses to keep track of categories. + + If you add a category, it is permissible to set v to zero. If you delete + a category, ensure that both the name and the category match. + ''' category_labels_orig = ['', 'authors', 'series', 'publisher', 'tags'] def __init__(self, window, db, on_category=None): From 741073f1823208b63adf56e88f8b6558a1e49b3f Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Sun, 5 Dec 2010 17:12:21 +0000 Subject: [PATCH 355/377] Forgot to change two instances of strcmp to icu_strcmp --- src/calibre/devices/usbms/books.py | 4 ++-- src/calibre/gui2/library/models.py | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/calibre/devices/usbms/books.py b/src/calibre/devices/usbms/books.py index e5a67463e7..23ce1716af 100644 --- a/src/calibre/devices/usbms/books.py +++ b/src/calibre/devices/usbms/books.py @@ -13,7 +13,7 @@ from calibre.devices.interface import BookList as _BookList from calibre.constants import preferred_encoding from calibre import isbytestring from calibre.utils.config import prefs, tweaks -from calibre.utils.icu import sort_key +from calibre.utils.icu import sort_key, strcmp as icu_strcmp class Book(Metadata): def __init__(self, prefix, lpath, size=None, other=None): @@ -241,7 +241,7 @@ class CollectionsBookList(BookList): if y is None: return -1 if isinstance(x, (unicode, str)): - c = cmp(sort_key(x), sort_key(y)) + c = strcmp(x, y) else: c = cmp(x, y) if c != 0: diff --git a/src/calibre/gui2/library/models.py b/src/calibre/gui2/library/models.py index e854ffc1bc..311cbaf369 100644 --- a/src/calibre/gui2/library/models.py +++ b/src/calibre/gui2/library/models.py @@ -18,7 +18,7 @@ from calibre.ebooks.metadata import fmt_sidx, authors_to_string, string_to_autho from calibre.ptempfile import PersistentTemporaryFile from calibre.utils.config import tweaks, prefs from calibre.utils.date import dt_factory, qt_to_dt, isoformat -from calibre.utils.icu import sort_key +from calibre.utils.icu import sort_key, strcmp as icu_strcmp from calibre.ebooks.metadata.meta import set_metadata as _set_metadata from calibre.utils.search_query_parser import SearchQueryParser from calibre.library.caches import _match, CONTAINS_MATCH, EQUALS_MATCH, \ @@ -1023,8 +1023,8 @@ class DeviceBooksModel(BooksModel): # {{{ x = '' if y == None: y = '' - x, y = x.strip().lower(), y.strip().lower() - return cmp(x, y) + x, y = icu_lower(x.strip()), icu_lower(y.strip()) + return icu_strcmp(x, y) return _strcmp def datecmp(x, y): x = self.db[x].datetime From e610f16ca073fc0a4960143484c56031e8ac9069 Mon Sep 17 00:00:00 2001 From: Sengian <sengian1@gmail.com> Date: Sun, 5 Dec 2010 20:09:17 +0100 Subject: [PATCH 356/377] Update fictionwise.py (broken) --- src/calibre/ebooks/metadata/fictionwise.py | 146 +++++++++++++-------- 1 file changed, 93 insertions(+), 53 deletions(-) diff --git a/src/calibre/ebooks/metadata/fictionwise.py b/src/calibre/ebooks/metadata/fictionwise.py index 828ea31c3a..e56c697e3c 100644 --- a/src/calibre/ebooks/metadata/fictionwise.py +++ b/src/calibre/ebooks/metadata/fictionwise.py @@ -3,12 +3,11 @@ __license__ = 'GPL 3' __copyright__ = '2010, sengian <sengian1@gmail.com>' __docformat__ = 'restructuredtext en' -import sys, textwrap, re +import sys, textwrap, re, traceback, socket from urllib import urlencode -from lxml import html, etree -from lxml.html import soupparser -from lxml.etree import tostring +from lxml import html +from lxml.html import soupparser, tostring from calibre import browser, preferred_encoding from calibre.ebooks.chardet import xml_to_unicode @@ -18,6 +17,7 @@ from calibre.library.comments import sanitize_comments_html from calibre.ebooks.metadata.fetch import MetadataSource from calibre.utils.config import OptionParser from calibre.utils.date import parse_date, utcnow +from calibre.utils.cleantext import clean_ascii_char class Fictionwise(MetadataSource): # {{{ @@ -37,10 +37,11 @@ class Fictionwise(MetadataSource): # {{{ # }}} +class FictionwiseError(Exception): + pass def report(verbose): if verbose: - import traceback traceback.print_exc() class Query(object): @@ -86,18 +87,20 @@ class Query(object): q = q.encode('utf-8') self.urldata = urlencode(q) - def __call__(self, browser, verbose): + def __call__(self, browser, verbose, timeout = 5.): if verbose: - print 'Query:', self.BASE_URL+self.urldata + print _('Query: %s') % self.BASE_URL+self.urldata try: - raw = browser.open_novisit(self.BASE_URL, self.urldata).read() + raw = browser.open_novisit(self.BASE_URL, self.urldata, timeout=timeout).read() except Exception, e: report(verbose) if callable(getattr(e, 'getcode', None)) and \ e.getcode() == 404: return - raise + if isinstance(getattr(e, 'args', [None])[0], socket.timeout): + raise FictionwiseError(_('Fictionwise timed out. Try again later.')) + raise FictionwiseError(_('Fictionwise encountered an error.')) if '<title>404 - ' in raw: return raw = xml_to_unicode(raw, strip_encoding_pats=True, @@ -105,7 +108,11 @@ class Query(object): try: feed = soupparser.fromstring(raw) except: - return + try: + #remove ASCII invalid chars + feed = soupparser.fromstring(clean_ascii_char(raw)) + except: + return None # get list of results as links results = feed.xpath("//table[3]/tr/td[2]/table/tr/td/p/table[2]/tr[@valign]") @@ -139,12 +146,41 @@ class ResultList(list): self.reisbn = re.compile(r'.*ISBN\s*:\s*', re.I) def strip_tags_etree(self, etreeobj, invalid_tags): - for itag in invalid_tags: - for elt in etreeobj.getiterator(itag): - elt.drop_tag() - return etreeobj + for (itag, rmv) in invalid_tags.iteritems(): + if rmv: + for elts in etreeobj.getiterator(itag): + elts.drop_tree() + else: + for elts in etreeobj.getiterator(itag): + elts.drop_tag() - def clean_entry(self, entry, + def clean_entry(self, entry, invalid_tags = {'script': True}, + invalid_id = (), invalid_class=(), invalid_xpath = ()): + #invalid_tags: remove tag and keep content if False else remove + #remove tags + if invalid_tags: + self.strip_tags_etree(entry, invalid_tags) + #remove xpath + if invalid_xpath: + for eltid in invalid_xpath: + elt = entry.xpath(eltid) + for el in elt: + el.drop_tree() + #remove id + if invalid_id: + for eltid in invalid_id: + elt = entry.get_element_by_id(eltid) + if elt is not None: + elt.drop_tree() + #remove class + if invalid_class: + for eltclass in invalid_class: + elts = entry.find_class(eltclass) + if elts is not None: + for elt in elts: + elt.drop_tree() + + def clean_entry_dffdfbdjbf(self, entry, invalid_tags = ('font', 'strong', 'b', 'ul', 'span', 'a'), remove_tags_trees = ('script',)): for it in entry[0].iterchildren(tag='table'): @@ -170,7 +206,6 @@ class ResultList(list): authortext = entry.find('./br').tail if not self.rechkauth.search(authortext): return [] - #TODO: parse all tag if necessary authortext = self.rechkauth.sub('', authortext) return [a.strip() for a in authortext.split('&')] @@ -185,7 +220,7 @@ class ResultList(list): float(image.get('height', default=0))) \ for image in entrytable.getiterator('img')) #ratings as x/5 - return 1.25*sum(k*v for (k, v) in hval.iteritems())/sum(hval.itervalues()) + return float(1.25*sum(k*v for (k, v) in hval.iteritems())/sum(hval.itervalues())) def get_description(self, entry): description = self.output_entry(entry.find('./p'),htmlrm="") @@ -221,7 +256,6 @@ class ResultList(list): self.resplitbr.split(date)) if not len(date): return None - #TODO: parse all tag if necessary try: d = self.redate.sub('', date[0]) if d: @@ -279,9 +313,14 @@ class ResultList(list): return feed.xpath("//table[3]/tr/td[2]/table[1]/tr/td/font/table/tr/td") def populate(self, entries, browser, verbose=False): - for x in entries: + inv_tags ={'script': True, 'a': False, 'font': False, 'strong': False, 'b': False, + 'ul': False, 'span': False, 'table': True} + inv_xpath =('descendant-or-self::p[1]',) + #single entry + if len(entries) == 1 and not isinstance(entries[0], str): try: - entry = self.get_individual_metadata(browser, x, verbose) + entry = entries.xpath("//table[3]/tr/td[2]/table[1]/tr/td/font/table/tr/td") + self.clean_entry(entry, invalid_tags=inv_tags, invalid_xpath=inv_xpath) entry = self.clean_entry(entry) title = self.get_title(entry) #ratings: get table for rating then drop @@ -292,28 +331,29 @@ class ResultList(list): authors = self.get_authors(entry) except Exception, e: if verbose: - print 'Failed to get all details for an entry' + print _('Failed to get all details for an entry') print e - continue + return self.append(self.fill_MI(entry, title, authors, ratings, verbose)) - - def populate_single(self, feed, verbose=False): - try: - entry = feed.xpath("//table[3]/tr/td[2]/table[1]/tr/td/font/table/tr/td") - entry = self.clean_entry(entry) - title = self.get_title(entry) - #ratings: get table for rating then drop - for elt in entry.getiterator('table'): - ratings = self.get_rating(elt, verbose) - elt.getprevious().drop_tree() - elt.drop_tree() - authors = self.get_authors(entry) - except Exception, e: - if verbose: - print 'Failed to get all details for an entry' - print e - return - self.append(self.fill_MI(entry, title, authors, ratings, verbose)) + else: + #multiple entries + for x in entries: + try: + entry = self.get_individual_metadata(browser, x, verbose) + self.clean_entry(entry, invalid_tags=inv_tags, invalid_xpath=inv_xpath) + title = self.get_title(entry) + #ratings: get table for rating then drop + for elt in entry.getiterator('table'): + ratings = self.get_rating(elt, verbose) + elt.getprevious().drop_tree() + elt.drop_tree() + authors = self.get_authors(entry) + except Exception, e: + if verbose: + print _('Failed to get all details for an entry') + print e + continue + self.append(self.fill_MI(entry, title, authors, ratings, verbose)) def search(title=None, author=None, publisher=None, isbn=None, @@ -321,35 +361,32 @@ def search(title=None, author=None, publisher=None, isbn=None, keywords=None): br = browser() entries = Query(title=title, author=author, publisher=publisher, - keywords=keywords, max_results=max_results)(br, verbose) + keywords=keywords, max_results=max_results)(br, verbose, timeout = 10.) #List of entry ans = ResultList() - if len(entries) > 1: - ans.populate(entries, br, verbose) - else: - ans.populate_single(entries[0], verbose) + ans.populate(entries, br, verbose) return ans def option_parser(): parser = OptionParser(textwrap.dedent(\ - '''\ + _('''\ %prog [options] Fetch book metadata from Fictionwise. You must specify one of title, author, or keywords. No ISBN specification possible. Will fetch a maximum of 20 matches, so you should make your query as specific as possible. - ''' + ''') )) - parser.add_option('-t', '--title', help='Book title') - parser.add_option('-a', '--author', help='Book author(s)') - parser.add_option('-p', '--publisher', help='Book publisher') - parser.add_option('-k', '--keywords', help='Keywords') + parser.add_option('-t', '--title', help=_('Book title')) + parser.add_option('-a', '--author', help=_('Book author(s)')) + parser.add_option('-p', '--publisher', help=_('Book publisher')) + parser.add_option('-k', '--keywords', help=_('Keywords')) parser.add_option('-m', '--max-results', default=20, - help='Maximum number of results to fetch') + help=_('Maximum number of results to fetch')) parser.add_option('-v', '--verbose', default=0, action='count', - help='Be more verbose about errors') + help=_('Be more verbose about errors')) return parser def main(args=sys.argv): @@ -362,6 +399,9 @@ def main(args=sys.argv): report(True) parser.print_help() return 1 + if results is None or len(results) == 0: + print _('No result found for this search!') + return 0 for result in results: print unicode(result).encode(preferred_encoding, 'replace') print From 29f33524ffb3b9af36bc41fd9b14cd9b4e1f4aa0 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Sun, 5 Dec 2010 17:42:49 -0700 Subject: [PATCH 357/377] Fix #7810 (Updated recipe for The New Yorker) --- resources/recipes/new_yorker.recipe | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/resources/recipes/new_yorker.recipe b/resources/recipes/new_yorker.recipe index 1a2091cd52..0c95aa358d 100644 --- a/resources/recipes/new_yorker.recipe +++ b/resources/recipes/new_yorker.recipe @@ -22,8 +22,19 @@ class NewYorker(BasicNewsRecipe): masthead_url = 'http://www.newyorker.com/css/i/hed/logo.gif' extra_css = """ body {font-family: "Times New Roman",Times,serif} - .articleauthor{color: #9F9F9F; font-family: Arial, sans-serif; font-size: small; text-transform: uppercase} - .rubric{color: #CD0021; font-family: Arial, sans-serif; font-size: small; text-transform: uppercase} + .articleauthor{color: #9F9F9F; + font-family: Arial, sans-serif; + font-size: small; + text-transform: uppercase} + .rubric,.dd,h6#credit{color: #CD0021; + font-family: Arial, sans-serif; + font-size: small; + text-transform: uppercase} + .descender:first-letter{display: inline; font-size: xx-large; font-weight: bold} + .dd,h6#credit{color: gray} + .c{display: block} + .caption,h2#articleintro{font-style: italic} + .caption{font-size: small} """ conversion_options = { @@ -39,7 +50,7 @@ class NewYorker(BasicNewsRecipe): ] remove_tags = [ dict(name=['meta','iframe','base','link','embed','object']) - ,dict(attrs={'class':['utils','articleRailLinks','icons'] }) + ,dict(attrs={'class':['utils','socialUtils','articleRailLinks','icons'] }) ,dict(attrs={'id':['show-header','show-footer'] }) ] remove_attributes = ['lang'] @@ -59,3 +70,13 @@ class NewYorker(BasicNewsRecipe): cover_url = 'http://www.newyorker.com' + cover_item['src'].strip() return cover_url + def preprocess_html(self, soup): + for item in soup.findAll(style=True): + del item['style'] + auth = soup.find(attrs={'id':'articleauthor'}) + if auth: + alink = auth.find('a') + if alink and alink.string is not None: + txt = alink.string + alink.replaceWith(txt) + return soup From 57e0e1820a65af5a273bfe5080c8bd6ef17e871d Mon Sep 17 00:00:00 2001 From: Sengian <sengian1@gmail.com> Date: Mon, 6 Dec 2010 01:57:07 +0100 Subject: [PATCH 358/377] Update of fictionwise.py --- src/calibre/ebooks/metadata/fictionwise.py | 73 ++++++++-------------- 1 file changed, 27 insertions(+), 46 deletions(-) diff --git a/src/calibre/ebooks/metadata/fictionwise.py b/src/calibre/ebooks/metadata/fictionwise.py index e56c697e3c..c4a8597dde 100644 --- a/src/calibre/ebooks/metadata/fictionwise.py +++ b/src/calibre/ebooks/metadata/fictionwise.py @@ -53,7 +53,6 @@ class Query(object): assert (max_results < 21) self.max_results = int(max_results) - q = { 'template' : 'searchresults_adv.htm' , 'searchtitle' : '', 'searchauthor' : '', @@ -131,12 +130,11 @@ class ResultList(list): def __init__(self): self.retitle = re.compile(r'\[[^\[\]]+\]') self.rechkauth = re.compile(r'.*book\s*by', re.I) - self.redesc = re.compile(r'book\s*description\s*:\s*(<br[^>]+>)*(?P<desc>.*)' \ - + '<br[^>]+>.{,15}publisher\s*:', re.I) + self.redesc = re.compile(r'book\s*description\s*:\s*(<br[^>]+>)*(?P<desc>.*)<br[^>]*>.{,15}publisher\s*:', re.I) self.repub = re.compile(r'.*publisher\s*:\s*', re.I) self.redate = re.compile(r'.*release\s*date\s*:\s*', re.I) self.retag = re.compile(r'.*book\s*category\s*:\s*', re.I) - self.resplitbr = re.compile(r'<br[^>]+>', re.I) + self.resplitbr = re.compile(r'<br[^>]*>', re.I) self.recomment = re.compile(r'(?s)<!--.*?-->') self.reimg = re.compile(r'<img[^>]*>', re.I) self.resanitize = re.compile(r'\[HTML_REMOVED\]\s*', re.I) @@ -180,21 +178,9 @@ class ResultList(list): for elt in elts: elt.drop_tree() - def clean_entry_dffdfbdjbf(self, entry, - invalid_tags = ('font', 'strong', 'b', 'ul', 'span', 'a'), - remove_tags_trees = ('script',)): - for it in entry[0].iterchildren(tag='table'): - entry[0].remove(it) - entry[0].remove(entry[0].xpath( 'descendant-or-self::p[1]')[0]) - entry = entry[0] - cleantree = self.strip_tags_etree(entry, invalid_tags) - for itag in remove_tags_trees: - for elts in cleantree.getiterator(itag): - elts.drop_tree() - return cleantree - def output_entry(self, entry, prettyout = True, htmlrm="\d+"): out = tostring(entry, pretty_print=prettyout) + #try to work around tostring to remove this encoding for exemle reclean = re.compile('(\n+|\t+|\r+|&#'+htmlrm+';)') return reclean.sub('', out) @@ -223,18 +209,18 @@ class ResultList(list): return float(1.25*sum(k*v for (k, v) in hval.iteritems())/sum(hval.itervalues())) def get_description(self, entry): - description = self.output_entry(entry.find('./p'),htmlrm="") + description = self.output_entry(entry.xpath('./p')[1],htmlrm="") description = self.redesc.search(description) - if not description and not description.group("desc"): + if not description or not description.group("desc"): return None #remove invalid tags description = self.reimg.sub('', description.group("desc")) description = self.recomment.sub('', description) description = self.resanitize.sub('', sanitize_comments_html(description)) - return 'SUMMARY:\n' + re.sub(r'\n\s+</p>','\n</p>', description) + return _('SUMMARY:\n %s') % re.sub(r'\n\s+</p>','\n</p>', description) def get_publisher(self, entry): - publisher = self.output_entry(entry.find('./p')) + publisher = self.output_entry(entry.xpath('./p')[1]) publisher = filter(lambda x: self.repub.search(x) is not None, self.resplitbr.split(publisher)) if not len(publisher): @@ -243,7 +229,7 @@ class ResultList(list): return publisher.split(',')[0].strip() def get_tags(self, entry): - tag = self.output_entry(entry.find('./p')) + tag = self.output_entry(entry.xpath('./p')[1]) tag = filter(lambda x: self.retag.search(x) is not None, self.resplitbr.split(tag)) if not len(tag): @@ -251,7 +237,7 @@ class ResultList(list): return map(lambda x: x.strip(), self.retag.sub('', tag[0]).split('/')) def get_date(self, entry, verbose): - date = self.output_entry(entry.find('./p')) + date = self.output_entry(entry.xpath('./p')[1]) date = filter(lambda x: self.redate.search(x) is not None, self.resplitbr.split(date)) if not len(date): @@ -269,12 +255,11 @@ class ResultList(list): return d def get_ISBN(self, entry): - isbns = self.output_entry(entry.getchildren()[2]) + isbns = self.output_entry(entry.xpath('./p')[2]) isbns = filter(lambda x: self.reisbn.search(x) is not None, self.resplitbrdiv.split(isbns)) if not len(isbns): return None - #TODO: parse all tag if necessary isbns = [self.reisbn.sub('', x) for x in isbns if check_isbn(self.reisbn.sub('', x))] return sorted(isbns, cmp=lambda x,y:cmp(len(x), len(y)))[-1] @@ -287,7 +272,6 @@ class ResultList(list): mi.pubdate = self.get_date(entry, verbose) mi.isbn = self.get_ISBN(entry) mi.author_sort = authors_to_sort_string(authors) - # mi.language = self.get_language(x, verbose) return mi def get_individual_metadata(self, browser, linkdata, verbose): @@ -298,36 +282,35 @@ class ResultList(list): if callable(getattr(e, 'getcode', None)) and \ e.getcode() == 404: return - raise + if isinstance(getattr(e, 'args', [None])[0], socket.timeout): + raise FictionwiseError(_('Fictionwise timed out. Try again later.')) + raise FictionwiseError(_('Fictionwise encountered an error.')) if '<title>404 - ' in raw: report(verbose) return raw = xml_to_unicode(raw, strip_encoding_pats=True, resolve_entities=True)[0] try: - feed = soupparser.fromstring(raw) + return soupparser.fromstring(raw) except: - return - - # get results - return feed.xpath("//table[3]/tr/td[2]/table[1]/tr/td/font/table/tr/td") + try: + #remove ASCII invalid chars + return soupparser.fromstring(clean_ascii_char(raw)) + except: + return None def populate(self, entries, browser, verbose=False): inv_tags ={'script': True, 'a': False, 'font': False, 'strong': False, 'b': False, - 'ul': False, 'span': False, 'table': True} - inv_xpath =('descendant-or-self::p[1]',) + 'ul': False, 'span': False} + inv_xpath =('./table',) #single entry if len(entries) == 1 and not isinstance(entries[0], str): try: entry = entries.xpath("//table[3]/tr/td[2]/table[1]/tr/td/font/table/tr/td") self.clean_entry(entry, invalid_tags=inv_tags, invalid_xpath=inv_xpath) - entry = self.clean_entry(entry) title = self.get_title(entry) - #ratings: get table for rating then drop - for elt in entry.getiterator('table'): - ratings = self.get_rating(elt, verbose) - elt.getprevious().drop_tree() - elt.drop_tree() + #maybe strenghten the search + ratings = self.get_rating(entry.xpath("./p/table")[1], verbose) authors = self.get_authors(entry) except Exception, e: if verbose: @@ -340,13 +323,11 @@ class ResultList(list): for x in entries: try: entry = self.get_individual_metadata(browser, x, verbose) + entry = entry.xpath("//table[3]/tr/td[2]/table[1]/tr/td/font/table/tr/td")[0] self.clean_entry(entry, invalid_tags=inv_tags, invalid_xpath=inv_xpath) title = self.get_title(entry) - #ratings: get table for rating then drop - for elt in entry.getiterator('table'): - ratings = self.get_rating(elt, verbose) - elt.getprevious().drop_tree() - elt.drop_tree() + #maybe strenghten the search + ratings = self.get_rating(entry.xpath("./p/table")[1], verbose) authors = self.get_authors(entry) except Exception, e: if verbose: @@ -361,7 +342,7 @@ def search(title=None, author=None, publisher=None, isbn=None, keywords=None): br = browser() entries = Query(title=title, author=author, publisher=publisher, - keywords=keywords, max_results=max_results)(br, verbose, timeout = 10.) + keywords=keywords, max_results=max_results)(br, verbose, timeout = 15.) #List of entry ans = ResultList() From 7ff5842e713d50772e0e7b7a99138b802f9ac1c9 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Sun, 5 Dec 2010 18:04:26 -0700 Subject: [PATCH 359/377] Fix icu_collate sqlite function --- src/calibre/library/sqlite.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/calibre/library/sqlite.py b/src/calibre/library/sqlite.py index b4cad8061e..ca6b0fc178 100644 --- a/src/calibre/library/sqlite.py +++ b/src/calibre/library/sqlite.py @@ -18,8 +18,9 @@ from functools import partial from calibre.ebooks.metadata import title_sort, author_to_author_sort from calibre.utils.config import tweaks from calibre.utils.date import parse_date, isoformat -from calibre import isbytestring +from calibre import isbytestring, force_unicode from calibre.constants import iswindows, DEBUG +from calibre.utils.icu import strcmp global_lock = RLock() @@ -115,8 +116,8 @@ def pynocase(one, two, encoding='utf-8'): pass return cmp(one.lower(), two.lower()) -def icu_collator(s1, s2, func=None): - return cmp(func(unicode(s1)), func(unicode(s2))) +def icu_collator(s1, s2): + return strcmp(force_unicode(s1, 'utf-8'), force_unicode(s2, 'utf-8')) def load_c_extensions(conn, debug=DEBUG): try: @@ -169,8 +170,7 @@ class DBThread(Thread): self.conn.create_function('uuid4', 0, lambda : str(uuid.uuid4())) # Dummy functions for dynamically created filters self.conn.create_function('books_list_filter', 1, lambda x: 1) - from calibre.utils.icu import sort_key - self.conn.create_collation('icucollate', partial(icu_collator, func=sort_key)) + self.conn.create_collation('icucollate', icu_collator) def run(self): try: From 90fa43bf371bb65361c2d746986743cddb576e68 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Sun, 5 Dec 2010 22:03:42 -0700 Subject: [PATCH 360/377] Fix regression in 0.7.32 that broke opening formats in the ebook viewer from the edit metadata dialog --- src/calibre/gui2/actions/edit_metadata.py | 5 +++++ src/calibre/gui2/actions/view.py | 9 --------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/calibre/gui2/actions/edit_metadata.py b/src/calibre/gui2/actions/edit_metadata.py index 6e2a4054c8..4a527d94d8 100644 --- a/src/calibre/gui2/actions/edit_metadata.py +++ b/src/calibre/gui2/actions/edit_metadata.py @@ -147,8 +147,13 @@ class EditMetadataAction(InterfaceAction): d = MetadataSingleDialog(self.gui, row_list[current_row], db, prev=prev, next_=next_) + d.view_format.connect(lambda + fmt:self.gui.iactions['View'].view_format(row_list[current_row], + fmt)) if d.exec_() != d.Accepted: + d.view_format.disconnect() break + d.view_format.disconnect() changed.add(d.id) if d.row_delta == 0: break diff --git a/src/calibre/gui2/actions/view.py b/src/calibre/gui2/actions/view.py index 0a26653771..0910745ac9 100644 --- a/src/calibre/gui2/actions/view.py +++ b/src/calibre/gui2/actions/view.py @@ -26,7 +26,6 @@ class ViewAction(InterfaceAction): def genesis(self): self.persistent_files = [] - self.metadata_view_id = None self.qaction.triggered.connect(self.view_book) self.view_menu = QMenu() self.view_menu.addAction(_('View'), partial(self.view_book, False)) @@ -51,14 +50,6 @@ class ViewAction(InterfaceAction): if fmt_path: self._view_file(fmt_path) - def metadata_view_format(self, fmt): - fmt_path = self.gui.library_view.model().db.\ - format_abspath(self.metadata_view_id, - fmt, index_is_id=True) - if fmt_path: - self._view_file(fmt_path) - - def book_downloaded_for_viewing(self, job): if job.failed: self.gui.device_job_exception(job) From a42306248360bcb19c518fd8f8d3ad028e4538fe Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Mon, 6 Dec 2010 06:52:08 +0000 Subject: [PATCH 361/377] 1) Add icu capitalize 2) Fix strcmp to use icu lower 3) Add capitalize to tests 4) change formatter & title_case to use icu capitalize 5) add capitalize as a function to bulk metadata edit 6) get rid of redundant lower()s in models --- src/calibre/gui2/dialogs/metadata_bulk.py | 3 ++- src/calibre/gui2/library/models.py | 3 +-- src/calibre/utils/formatter.py | 3 ++- src/calibre/utils/icu.py | 18 +++++++++++++----- src/calibre/utils/titlecase.py | 7 ++----- 5 files changed, 20 insertions(+), 14 deletions(-) diff --git a/src/calibre/gui2/dialogs/metadata_bulk.py b/src/calibre/gui2/dialogs/metadata_bulk.py index 4a44b0cefa..a640c50fb8 100644 --- a/src/calibre/gui2/dialogs/metadata_bulk.py +++ b/src/calibre/gui2/dialogs/metadata_bulk.py @@ -17,7 +17,7 @@ from calibre.gui2 import error_dialog from calibre.gui2.progress_indicator import ProgressIndicator from calibre.utils.config import dynamic from calibre.utils.titlecase import titlecase -from calibre.utils.icu import sort_key +from calibre.utils.icu import sort_key, capitalize class MyBlockingBusy(QDialog): @@ -187,6 +187,7 @@ class MetadataBulkDialog(QDialog, Ui_MetadataBulkDialog): _('Lower Case') : lambda x: icu_lower(x), _('Upper Case') : lambda x: icu_upper(x), _('Title Case') : lambda x: titlecase(x), + _('Capitalize') : lambda x: capitalize(x), } s_r_match_modes = [ _('Character match'), diff --git a/src/calibre/gui2/library/models.py b/src/calibre/gui2/library/models.py index 311cbaf369..e82e1dddd4 100644 --- a/src/calibre/gui2/library/models.py +++ b/src/calibre/gui2/library/models.py @@ -1023,8 +1023,7 @@ class DeviceBooksModel(BooksModel): # {{{ x = '' if y == None: y = '' - x, y = icu_lower(x.strip()), icu_lower(y.strip()) - return icu_strcmp(x, y) + return icu_strcmp(x.strip(), y.strip()) return _strcmp def datecmp(x, y): x = self.db[x].datetime diff --git a/src/calibre/utils/formatter.py b/src/calibre/utils/formatter.py index 15534a9c8a..6c4ddce81f 100644 --- a/src/calibre/utils/formatter.py +++ b/src/calibre/utils/formatter.py @@ -8,6 +8,7 @@ import re, string, traceback from calibre.constants import DEBUG from calibre.utils.titlecase import titlecase +from calibre.utils.icu import capitalize class TemplateFormatter(string.Formatter): ''' @@ -86,7 +87,7 @@ class TemplateFormatter(string.Formatter): 'uppercase' : (0, lambda s,x: x.upper()), 'lowercase' : (0, lambda s,x: x.lower()), 'titlecase' : (0, lambda s,x: titlecase(x)), - 'capitalize' : (0, lambda s,x: x.capitalize()), + 'capitalize' : (0, lambda s,x: capitalize(x)), 'contains' : (3, _contains), 'ifempty' : (1, _ifempty), 'lookup' : (-1, _lookup), diff --git a/src/calibre/utils/icu.py b/src/calibre/utils/icu.py index d7760671c9..6ae7398fb4 100644 --- a/src/calibre/utils/icu.py +++ b/src/calibre/utils/icu.py @@ -69,7 +69,7 @@ def icu_case_sensitive_sort_key(collator, obj): return collator.sort_key(obj) def icu_strcmp(collator, a, b): - return collator.strcmp(a.lower(), b.lower()) + return collator.strcmp(lower(a), lower(b)) def py_strcmp(a, b): return cmp(a.lower(), b.lower()) @@ -104,6 +104,13 @@ lower = (lambda s: s.lower()) if _icu_not_ok else \ title_case = (lambda s: s.title()) if _icu_not_ok else \ partial(_icu.title, get_locale()) +def icu_capitalize(s): + s = lower(s) + return s.replace(s[0], upper(s[0])) + +capitalize = (lambda s: s.capitalize()) if _icu_not_ok else \ + (lambda s: icu_capitalize(s)) + ################################################################################ def test(): # {{{ @@ -215,14 +222,15 @@ pêché''' print '\t', x.encode('utf-8') if fs != create(french_good): print 'French failed (note that French fails with icu < 4.6 i.e. on windows and OS X)' - return + # return test_strcmp(german + french) print '\nTesting case transforms in current locale' for x in ('a', 'Alice\'s code'): - print 'Upper:', x, '->', 'py:', x.upper().encode('utf-8'), 'icu:', upper(x).encode('utf-8') - print 'Lower:', x, '->', 'py:', x.lower().encode('utf-8'), 'icu:', lower(x).encode('utf-8') - print 'Title:', x, '->', 'py:', x.title().encode('utf-8'), 'icu:', title_case(x).encode('utf-8') + print 'Upper: ', x, '->', 'py:', x.upper().encode('utf-8'), 'icu:', upper(x).encode('utf-8') + print 'Lower: ', x, '->', 'py:', x.lower().encode('utf-8'), 'icu:', lower(x).encode('utf-8') + print 'Title: ', x, '->', 'py:', x.title().encode('utf-8'), 'icu:', title_case(x).encode('utf-8') + print 'Capitalize:', x, '->', 'py:', x.capitalize().encode('utf-8'), 'icu:', capitalize(x).encode('utf-8') print # }}} diff --git a/src/calibre/utils/titlecase.py b/src/calibre/utils/titlecase.py index b85670f038..bbc4c26688 100755 --- a/src/calibre/utils/titlecase.py +++ b/src/calibre/utils/titlecase.py @@ -9,6 +9,8 @@ License: http://www.opensource.org/licenses/mit-license.php import re +from calibre.utils.icu import capitalize + __all__ = ['titlecase'] __version__ = '0.5' @@ -40,11 +42,6 @@ def titlecase(text): """ - def capitalize(w): - w = icu_lower(w) - w = w.replace(w[0], icu_upper(w[0])) - return w - all_caps = ALL_CAPS.match(text) words = re.split('\s', text) From e31735960bf42e443c59e1f5fec52d809dadb363 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Mon, 6 Dec 2010 00:33:37 -0700 Subject: [PATCH 362/377] Save to disk: Refactor to not open a database connection in the worker process. Also fix a bug that could lead to save failures not being reported. --- src/calibre/ebooks/metadata/worker.py | 91 ++++++++++++++++----- src/calibre/gui2/add.py | 13 +++ src/calibre/library/save_to_disk.py | 111 +++++++++++++++++--------- 3 files changed, 160 insertions(+), 55 deletions(-) diff --git a/src/calibre/ebooks/metadata/worker.py b/src/calibre/ebooks/metadata/worker.py index 247050856d..7dff988679 100644 --- a/src/calibre/ebooks/metadata/worker.py +++ b/src/calibre/ebooks/metadata/worker.py @@ -8,12 +8,12 @@ __docformat__ = 'restructuredtext en' from threading import Thread from Queue import Empty -import os, time, sys, shutil +import os, time, sys, shutil, json from calibre.utils.ipc.job import ParallelJob from calibre.utils.ipc.server import Server from calibre.ptempfile import PersistentTemporaryDirectory, TemporaryDirectory -from calibre import prints +from calibre import prints, isbytestring from calibre.constants import filesystem_encoding @@ -194,14 +194,44 @@ class SaveWorker(Thread): self.daemon = True self.path, self.opts = path, opts self.ids = ids - self.library_path = db.library_path + self.db = db self.canceled = False self.result_queue = result_queue self.error = None self.spare_server = spare_server self.start() + def collect_data(self, ids): + from calibre.ebooks.metadata.opf2 import metadata_to_opf + data = {} + for i in set(ids): + mi = self.db.get_metadata(i, index_is_id=True, get_cover=True) + opf = metadata_to_opf(mi) + if isbytestring(opf): + opf = opf.decode('utf-8') + cpath = None + if mi.cover: + cpath = mi.cover + if isbytestring(cpath): + cpath = cpath.decode(filesystem_encoding) + formats = {} + fmts = self.db.formats(i, index_is_id=True, verify_formats=False) + if fmts: + fmts = fmts.split(',') + for fmt in fmts: + fpath = self.db.format_abspath(i, fmt, index_is_id=True) + if fpath is not None: + if isbytestring(fpath): + fpath = fpath.decode(filesystem_encoding) + formats[fmt.lower()] = fpath + data[i] = [opf, cpath, formats] + return data + def run(self): + with TemporaryDirectory('save_to_disk_data') as tdir: + self._run(tdir) + + def _run(self, tdir): from calibre.library.save_to_disk import config server = Server() if self.spare_server is None else self.spare_server ids = set(self.ids) @@ -212,12 +242,19 @@ class SaveWorker(Thread): for pref in c.preferences: recs[pref.name] = getattr(self.opts, pref.name) + plugboards = self.db.prefs.get('plugboards', {}) + for i, task in enumerate(tasks): tids = [x[-1] for x in task] + data = self.collect_data(tids) + dpath = os.path.join(tdir, '%d.json'%i) + with open(dpath, 'wb') as f: + f.write(json.dumps(data, ensure_ascii=False).encode('utf-8')) + job = ParallelJob('save_book', 'Save books (%d of %d)'%(i, len(tasks)), lambda x,y:x, - args=[tids, self.library_path, self.path, recs]) + args=[tids, dpath, plugboards, self.path, recs]) jobs.add(job) server.add_job(job) @@ -226,21 +263,19 @@ class SaveWorker(Thread): time.sleep(0.2) running = False for job in jobs: - job.update(consume_notifications=False) - while True: - try: - id, title, ok, tb = job.notifications.get_nowait()[0] - if id in ids: - self.result_queue.put((id, title, ok, tb)) - ids.remove(id) - except Empty: - break + self.get_notifications(job, ids) if not job.is_finished: running = True if not running: break + for job in jobs: + for id_, title, ok, tb in job.result: + if id_ in ids: + self.result_queue.put((id_, title, ok, tb)) + ids.remove(id_) + server.close() time.sleep(1) @@ -257,21 +292,39 @@ class SaveWorker(Thread): except: pass + def get_notifications(self, job, ids): + job.update(consume_notifications=False) + while True: + try: + id, title, ok, tb = job.notifications.get_nowait()[0] + if id in ids: + self.result_queue.put((id, title, ok, tb)) + ids.remove(id) + except Empty: + break -def save_book(task, library_path, path, recs, notification=lambda x,y:x): - from calibre.library.database2 import LibraryDatabase2 - db = LibraryDatabase2(library_path) - from calibre.library.save_to_disk import config, save_to_disk + +def save_book(ids, dpath, plugboards, path, recs, notification=lambda x,y:x): + from calibre.library.save_to_disk import config, save_serialized_to_disk from calibre.customize.ui import apply_null_metadata opts = config().parse() for name in recs: setattr(opts, name, recs[name]) + results = [] def callback(id, title, failed, tb): + results.append((id, title, not failed, tb)) notification((id, title, not failed, tb)) return True - with apply_null_metadata: - save_to_disk(db, task, path, opts, callback) + data_ = json.loads(open(dpath, 'rb').read().decode('utf-8')) + data = {} + for k, v in data_.iteritems(): + data[int(k)] = v + + with apply_null_metadata: + save_serialized_to_disk(ids, data, plugboards, path, opts, callback) + + return results diff --git a/src/calibre/gui2/add.py b/src/calibre/gui2/add.py index 1339070446..d1af2a6f0c 100644 --- a/src/calibre/gui2/add.py +++ b/src/calibre/gui2/add.py @@ -427,11 +427,23 @@ class Saver(QObject): # {{{ if not self.ids or not self.worker.is_alive(): self.timer.stop() self.pd.hide() + while self.ids: + before = len(self.ids) + self.get_result() + if before == len(self.ids): + for i in list(self.ids): + self.failures.add(('id:%d'%i, 'Unknown error')) + self.ids.remove(i) + break if not self.callback_called: self.callback(self.worker.path, self.failures, self.worker.error) self.callback_called = True return + self.get_result() + + + def get_result(self): try: id, title, ok, tb = self.rq.get_nowait() except Empty: @@ -441,6 +453,7 @@ class Saver(QObject): # {{{ if not isinstance(title, unicode): title = str(title).decode(preferred_encoding, 'replace') self.pd.set_msg(_('Saved')+' '+title) + if not ok: self.failures.add((title, tb)) # }}} diff --git a/src/calibre/library/save_to_disk.py b/src/calibre/library/save_to_disk.py index c6cc12a978..af57d563ac 100644 --- a/src/calibre/library/save_to_disk.py +++ b/src/calibre/library/save_to_disk.py @@ -6,7 +6,7 @@ __license__ = 'GPL v3' __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>' __docformat__ = 'restructuredtext en' -import os, traceback, cStringIO, re +import os, traceback, cStringIO, re, shutil from calibre.constants import DEBUG from calibre.utils.config import Config, StringConfig, tweaks @@ -203,31 +203,49 @@ def get_components(template, mi, id, timefmt='%b %Y', length=250, return shorten_components_to(length, components) -def save_book_to_disk(id, db, root, opts, length): - mi = db.get_metadata(id, index_is_id=True) +def save_book_to_disk(id_, db, root, opts, length): + mi = db.get_metadata(id_, index_is_id=True) + cover = db.cover(id_, index_is_id=True, as_path=True) + plugboards = db.prefs.get('plugboards', {}) - available_formats = db.formats(id, index_is_id=True) + available_formats = db.formats(id_, index_is_id=True) if not available_formats: available_formats = [] else: available_formats = [x.lower().strip() for x in available_formats.split(',')] + formats = {} + fmts = db.formats(id_, index_is_id=True, verify_formats=False) + if fmts: + fmts = fmts.split(',') + for fmt in fmts: + fpath = db.format_abspath(id_, fmt, index_is_id=True) + if fpath is not None: + formats[fmt.lower()] = fpath + + return do_save_book_to_disk(id_, mi, cover, plugboards, + formats, root, opts, length) + + +def do_save_book_to_disk(id_, mi, cover, plugboards, + format_map, root, opts, length): + available_formats = [x.lower().strip() for x in format_map.keys()] if opts.formats == 'all': asked_formats = available_formats else: asked_formats = [x.lower().strip() for x in opts.formats.split(',')] formats = set(available_formats).intersection(set(asked_formats)) if not formats: - return True, id, mi.title + return True, id_, mi.title - components = get_components(opts.template, mi, id, opts.timefmt, length, + components = get_components(opts.template, mi, id_, opts.timefmt, length, ascii_filename if opts.asciiize else sanitize_file_name, to_lowercase=opts.to_lowercase, replace_whitespace=opts.replace_whitespace) base_path = os.path.join(root, *components) base_name = os.path.basename(base_path) dirpath = os.path.dirname(base_path) - # Don't test for existence first are the test could fail but + # Don't test for existence first as the test could fail but # another worker process could create the directory before # the call to makedirs try: @@ -236,29 +254,23 @@ def save_book_to_disk(id, db, root, opts, length): if not os.path.exists(dirpath): raise - cdata = db.cover(id, index_is_id=True) - if opts.save_cover: - if cdata is not None: - with open(base_path+'.jpg', 'wb') as f: - f.write(cdata) - mi.cover = base_name+'.jpg' - else: - mi.cover = None + if opts.save_cover and cover and os.access(cover, os.R_OK): + with open(base_path+'.jpg', 'wb') as f: + with open(cover, 'rb') as s: + shutil.copyfileobj(s, f) + mi.cover = base_name+'.jpg' + else: + mi.cover = None if opts.write_opf: opf = metadata_to_opf(mi) with open(base_path+'.opf', 'wb') as f: f.write(opf) - if cdata is not None: - mi.cover_data = ('jpg', cdata) - mi.cover = None - written = False for fmt in formats: global plugboard_save_to_disk_value, plugboard_any_format_value dev_name = plugboard_save_to_disk_value - plugboards = db.prefs.get('plugboards', {}) cpb = None if fmt in plugboards: cpb = plugboards[fmt] @@ -275,11 +287,12 @@ def save_book_to_disk(id, db, root, opts, length): # Leave this here for a while, in case problems arise. if cpb is not None: prints('Save-to-disk using plugboard:', fmt, cpb) - data = db.format(id, fmt, index_is_id=True) - if data is None: + fp = format_map.get(fmt, None) + if fp is None: continue - else: - written = True + with open(fp, 'rb') as f: + data = f.read() + written = True if opts.update_metadata: stream = cStringIO.StringIO() stream.write(data) @@ -300,9 +313,21 @@ def save_book_to_disk(id, db, root, opts, length): with open(fmt_path, 'wb') as f: f.write(data) - return not written, id, mi.title + return not written, id_, mi.title +def _sanitize_args(root, opts): + if opts is None: + opts = config().parse() + if isinstance(root, unicode): + root = root.encode(filesystem_encoding) + root = os.path.abspath(root) + opts.template = preprocess_template(opts.template) + length = 1000 if supports_long_names(root) else 250 + length -= len(root) + if length < 5: + raise ValueError('%r is too long.'%root) + return root, opts, length def save_to_disk(db, ids, root, opts=None, callback=None): ''' @@ -316,17 +341,7 @@ def save_to_disk(db, ids, root, opts=None, callback=None): :return: A list of failures. Each element of the list is a tuple (id, title, traceback) ''' - if opts is None: - opts = config().parse() - if isinstance(root, unicode): - root = root.encode(filesystem_encoding) - root = os.path.abspath(root) - - opts.template = preprocess_template(opts.template) - length = 1000 if supports_long_names(root) else 250 - length -= len(root) - if length < 5: - raise ValueError('%r is too long.'%root) + root, opts, length = _sanitize_args(root, opts) failures = [] for x in ids: tb = '' @@ -343,4 +358,28 @@ def save_to_disk(db, ids, root, opts=None, callback=None): break return failures +def save_serialized_to_disk(ids, data, plugboards, root, opts, callback): + from calibre.ebooks.metadata.opf2 import OPF + root, opts, length = _sanitize_args(root, opts) + failures = [] + for x in ids: + opf, cover, format_map = data[x] + if isinstance(opf, unicode): + opf = opf.encode('utf-8') + mi = OPF(cStringIO.StringIO(opf)).to_book_metadata() + tb = '' + try: + failed, id, title = do_save_book_to_disk(x, mi, cover, plugboards, + format_map, root, opts, length) + tb = _('Requested formats not available') + except: + failed, id, title = True, x, mi.title + tb = traceback.format_exc() + if failed: + failures.append((id, title, tb)) + if callable(callback): + if not callback(int(id), title, failed, tb): + break + + return failures From f9a861b3c884bcf1a4a940d38acd1efbf2ac6d47 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Mon, 6 Dec 2010 09:09:36 -0700 Subject: [PATCH 363/377] ... --- src/calibre/ebooks/metadata/worker.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/calibre/ebooks/metadata/worker.py b/src/calibre/ebooks/metadata/worker.py index 7dff988679..a7a8177176 100644 --- a/src/calibre/ebooks/metadata/worker.py +++ b/src/calibre/ebooks/metadata/worker.py @@ -271,6 +271,8 @@ class SaveWorker(Thread): break for job in jobs: + if not job.result: + continue for id_, title, ok, tb in job.result: if id_ in ids: self.result_queue.put((id_, title, ok, tb)) From f5b4029751afc18267b20794d14e3aa03c74aa08 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Mon, 6 Dec 2010 09:44:45 -0700 Subject: [PATCH 364/377] ... --- src/calibre/ebooks/metadata/worker.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/calibre/ebooks/metadata/worker.py b/src/calibre/ebooks/metadata/worker.py index a7a8177176..d059d7e34c 100644 --- a/src/calibre/ebooks/metadata/worker.py +++ b/src/calibre/ebooks/metadata/worker.py @@ -215,10 +215,8 @@ class SaveWorker(Thread): if isbytestring(cpath): cpath = cpath.decode(filesystem_encoding) formats = {} - fmts = self.db.formats(i, index_is_id=True, verify_formats=False) - if fmts: - fmts = fmts.split(',') - for fmt in fmts: + if mi.formats: + for fmt in mi.formats: fpath = self.db.format_abspath(i, fmt, index_is_id=True) if fpath is not None: if isbytestring(fpath): From 54c3ecced6c4fc86f656c18c183ad1d1464a4bf2 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Mon, 6 Dec 2010 10:00:25 -0700 Subject: [PATCH 365/377] ... --- src/calibre/gui2/add.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/calibre/gui2/add.py b/src/calibre/gui2/add.py index d1af2a6f0c..5f41f3a8e0 100644 --- a/src/calibre/gui2/add.py +++ b/src/calibre/gui2/add.py @@ -436,6 +436,10 @@ class Saver(QObject): # {{{ self.ids.remove(i) break if not self.callback_called: + try: + self.worker.join(1.5) + except: + pass # The worker was not yet started self.callback(self.worker.path, self.failures, self.worker.error) self.callback_called = True return From 2ee84bad3ad6e646a08a9bbca5712fa45d2b11a9 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Mon, 6 Dec 2010 10:08:18 -0700 Subject: [PATCH 366/377] ... --- src/calibre/utils/icu.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/utils/icu.py b/src/calibre/utils/icu.py index 6ae7398fb4..4b0f6d4821 100644 --- a/src/calibre/utils/icu.py +++ b/src/calibre/utils/icu.py @@ -56,7 +56,7 @@ def py_sort_key(obj): def icu_sort_key(collator, obj): if not obj: return _none2 - return collator.sort_key(obj.lower()) + return collator.sort_key(lower(obj)) def py_case_sensitive_sort_key(obj): if not obj: From 73f54f5e9dc2a6238f52aa352b2e198c5ed68cb4 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Mon, 6 Dec 2010 10:16:46 -0700 Subject: [PATCH 367/377] Fix #7812 (Bookmarks don't work.) --- src/calibre/utils/zipfile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/utils/zipfile.py b/src/calibre/utils/zipfile.py index dbcc125274..5c19444bd6 100644 --- a/src/calibre/utils/zipfile.py +++ b/src/calibre/utils/zipfile.py @@ -1227,7 +1227,7 @@ class ZipFile: self.fp.flush() if zinfo.flag_bits & 0x08: # Write CRC and file sizes after the file data - self.fp.write(struct.pack("<lLL", zinfo.CRC, zinfo.compress_size, + self.fp.write(struct.pack("<LLL", zinfo.CRC, zinfo.compress_size, zinfo.file_size)) self.filelist.append(zinfo) self.NameToInfo[zinfo.filename] = zinfo From 10dc583d4bfce7ceea71cb707257484e5981db94 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Mon, 6 Dec 2010 10:18:53 -0700 Subject: [PATCH 368/377] Fix #7815 (Device support for HTC Legend with Wordplayer) --- src/calibre/devices/android/driver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/devices/android/driver.py b/src/calibre/devices/android/driver.py index 0deef5eb92..46fad13a2a 100644 --- a/src/calibre/devices/android/driver.py +++ b/src/calibre/devices/android/driver.py @@ -21,7 +21,7 @@ class ANDROID(USBMS): # HTC 0x0bb4 : { 0x0c02 : [0x100, 0x0227, 0x0226], 0x0c01 : [0x100, 0x0227], 0x0ff9 : [0x0100, 0x0227, 0x0226], 0x0c87: [0x0100, 0x0227, 0x0226], - 0xc92 : [0x100]}, + 0xc92 : [0x100], 0xc97: [0x226]}, # Eken 0x040d : { 0x8510 : [0x0001] }, From c9510ba730224cc41f2acdd1dc343a40770d90c8 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Mon, 6 Dec 2010 10:20:41 -0700 Subject: [PATCH 369/377] Fix #7802 (Driver for Samsumg Epic?) --- src/calibre/devices/android/driver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/devices/android/driver.py b/src/calibre/devices/android/driver.py index 46fad13a2a..9c37b6ff59 100644 --- a/src/calibre/devices/android/driver.py +++ b/src/calibre/devices/android/driver.py @@ -63,7 +63,7 @@ class ANDROID(USBMS): WINDOWS_MAIN_MEM = ['ANDROID_PHONE', 'A855', 'A853', 'INC.NEXUS_ONE', '__UMS_COMPOSITE', '_MB200', 'MASS_STORAGE', '_-_CARD', 'SGH-I897', 'GT-I9000', 'FILE-STOR_GADGET', 'SGH-T959', 'SAMSUNG_ANDROID', - 'SCH-I500_CARD'] + 'SCH-I500_CARD', 'SPH-D700_CARD'] WINDOWS_CARD_A_MEM = ['ANDROID_PHONE', 'GT-I9000_CARD', 'SGH-I897', 'FILE-STOR_GADGET', 'SGH-T959', 'SAMSUNG_ANDROID'] From 51f48f0cb2923b41d6a69c46d803aabbd5b36cfc Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Mon, 6 Dec 2010 11:00:25 -0700 Subject: [PATCH 370/377] ... --- src/calibre/utils/icu.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/calibre/utils/icu.c b/src/calibre/utils/icu.c index 51d9ac25ba..38542a44c6 100644 --- a/src/calibre/utils/icu.c +++ b/src/calibre/utils/icu.c @@ -237,8 +237,6 @@ static PyTypeObject icu_CollatorType = { // {{{ // }} -// }}} - // }}} // Module initialization {{{ From 2ed1365eb16d028e58218635cc838fb3617452ea Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Mon, 6 Dec 2010 12:20:15 -0700 Subject: [PATCH 371/377] Edit metadata dialog: When trying to download metadata, if there are multiple matches indicate which matches have a cover and summary in the list. Also add an option to automatically download the cover of the selected match. --- src/calibre/gui2/__init__.py | 2 + src/calibre/gui2/dialogs/fetch_metadata.py | 22 +- src/calibre/gui2/dialogs/fetch_metadata.ui | 351 ++++++++++---------- src/calibre/gui2/dialogs/metadata_single.py | 11 +- 4 files changed, 206 insertions(+), 180 deletions(-) diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py index 57b914877d..57ca2a1880 100644 --- a/src/calibre/gui2/__init__.py +++ b/src/calibre/gui2/__init__.py @@ -123,6 +123,8 @@ def _config(): help=_('Download social metadata (tags/rating/etc.)')) c.add_opt('overwrite_author_title_metadata', default=True, help=_('Overwrite author and title with new metadata')) + c.add_opt('auto_download_cover', default=False, + help=_('Automatically download the cover, if available')) c.add_opt('enforce_cpu_limit', default=True, help=_('Limit max simultaneous jobs to number of CPUs')) c.add_opt('tag_browser_hidden_categories', default=set(), diff --git a/src/calibre/gui2/dialogs/fetch_metadata.py b/src/calibre/gui2/dialogs/fetch_metadata.py index 2c64219464..3da0e67e3d 100644 --- a/src/calibre/gui2/dialogs/fetch_metadata.py +++ b/src/calibre/gui2/dialogs/fetch_metadata.py @@ -9,7 +9,7 @@ from threading import Thread from PyQt4.QtCore import Qt, QObject, SIGNAL, QVariant, pyqtSignal, \ QAbstractTableModel, QCoreApplication, QTimer -from PyQt4.QtGui import QDialog, QItemSelectionModel +from PyQt4.QtGui import QDialog, QItemSelectionModel, QIcon from calibre.gui2.dialogs.fetch_metadata_ui import Ui_FetchMetadata from calibre.gui2 import error_dialog, NONE, info_dialog, config @@ -42,13 +42,14 @@ class Matches(QAbstractTableModel): def __init__(self, matches): self.matches = matches + self.yes_icon = QVariant(QIcon(I('ok.png'))) QAbstractTableModel.__init__(self) def rowCount(self, *args): return len(self.matches) def columnCount(self, *args): - return 6 + return 8 def headerData(self, section, orientation, role): if role != Qt.DisplayRole: @@ -61,6 +62,8 @@ class Matches(QAbstractTableModel): elif section == 3: text = _("Publisher") elif section == 4: text = _("ISBN") elif section == 5: text = _("Published") + elif section == 6: text = _("Has Cover") + elif section == 7: text = _("Has Summary") return QVariant(text) else: @@ -71,8 +74,8 @@ class Matches(QAbstractTableModel): def data(self, index, role): row, col = index.row(), index.column() + book = self.matches[row] if role == Qt.DisplayRole: - book = self.matches[row] res = None if col == 0: res = book.title @@ -90,6 +93,11 @@ class Matches(QAbstractTableModel): if not res: return NONE return QVariant(res) + elif role == Qt.DecorationRole: + if col == 6 and book.has_cover: + return self.yes_icon + if col == 7 and book.comments: + return self.yes_icon return NONE class FetchMetadata(QDialog, Ui_FetchMetadata): @@ -131,7 +139,7 @@ class FetchMetadata(QDialog, Ui_FetchMetadata): self.fetch_metadata() self.opt_get_social_metadata.setChecked(config['get_social_metadata']) self.opt_overwrite_author_title_metadata.setChecked(config['overwrite_author_title_metadata']) - + self.opt_auto_download_cover.setChecked(config['auto_download_cover']) def show_summary(self, current, *args): row = current.row() @@ -213,6 +221,12 @@ class FetchMetadata(QDialog, Ui_FetchMetadata): _hung_fetchers.add(self.fetcher) if hasattr(self, '_hangcheck') and self._hangcheck.isActive(): self._hangcheck.stop() + # Save value of auto_download_cover, since this is the only place it can + # be set. The values of the other options can be set in + # Preferences->Behavior and should not be set here as they affect bulk + # downloading as well. + if self.opt_auto_download_cover.isChecked() != config['auto_download_cover']: + config.set('auto_download_cover', self.opt_auto_download_cover.isChecked()) def __enter__(self, *args): return self diff --git a/src/calibre/gui2/dialogs/fetch_metadata.ui b/src/calibre/gui2/dialogs/fetch_metadata.ui index 03a362096c..b140fa158d 100644 --- a/src/calibre/gui2/dialogs/fetch_metadata.ui +++ b/src/calibre/gui2/dialogs/fetch_metadata.ui @@ -1,172 +1,179 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>FetchMetadata</class> - <widget class="QDialog" name="FetchMetadata"> - <property name="windowModality"> - <enum>Qt::WindowModal</enum> - </property> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>830</width> - <height>642</height> - </rect> - </property> - <property name="windowTitle"> - <string>Fetch metadata</string> - </property> - <property name="windowIcon"> - <iconset resource="../../../../resources/images.qrc"> - <normaloff>:/images/metadata.png</normaloff>:/images/metadata.png</iconset> - </property> - <layout class="QVBoxLayout"> - <item> - <widget class="QLabel" name="tlabel"> - <property name="text"> - <string><p>calibre can find metadata for your books from two locations: <b>Google Books</b> and <b>isbndb.com</b>. <p>To use isbndb.com you must sign up for a <a href="http://www.isbndb.com">free account</a> and enter your access key below.</string> - </property> - <property name="alignment"> - <set>Qt::AlignCenter</set> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - <property name="openExternalLinks"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <layout class="QHBoxLayout"> - <item> - <widget class="QLabel" name="label_2"> - <property name="text"> - <string>&Access Key:</string> - </property> - <property name="buddy"> - <cstring>key</cstring> - </property> - </widget> - </item> - <item> - <widget class="QLineEdit" name="key"/> - </item> - <item> - <widget class="QPushButton" name="fetch"> - <property name="text"> - <string>Fetch</string> - </property> - </widget> - </item> - </layout> - </item> - <item> - <widget class="QLabel" name="warning"> - <property name="text"> - <string/> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox"> - <property name="title"> - <string>Matches</string> - </property> - <layout class="QVBoxLayout"> - <item> - <widget class="QLabel" name="label_3"> - <property name="text"> - <string>Select the book that most closely matches your copy from the list below</string> - </property> - </widget> - </item> - <item> - <widget class="QTableView" name="matches"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>1</verstretch> - </sizepolicy> - </property> - <property name="alternatingRowColors"> - <bool>true</bool> - </property> - <property name="selectionMode"> - <enum>QAbstractItemView::SingleSelection</enum> - </property> - <property name="selectionBehavior"> - <enum>QAbstractItemView::SelectRows</enum> - </property> - </widget> - </item> - <item> - <widget class="QTextBrowser" name="summary"/> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QCheckBox" name="opt_get_social_metadata"> - <property name="text"> - <string>Download &social metadata (tags/rating/etc.) for the selected book</string> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="opt_overwrite_author_title_metadata"> - <property name="text"> - <string>Overwrite author and title with author and title of selected book</string> - </property> - </widget> - </item> - <item> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="standardButtons"> - <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> - </property> - </widget> - </item> - </layout> - </widget> - <resources> - <include location="../../../../resources/images.qrc"/> - </resources> - <connections> - <connection> - <sender>buttonBox</sender> - <signal>accepted()</signal> - <receiver>FetchMetadata</receiver> - <slot>accept()</slot> - <hints> - <hint type="sourcelabel"> - <x>460</x> - <y>599</y> - </hint> - <hint type="destinationlabel"> - <x>657</x> - <y>530</y> - </hint> - </hints> - </connection> - <connection> - <sender>buttonBox</sender> - <signal>rejected()</signal> - <receiver>FetchMetadata</receiver> - <slot>reject()</slot> - <hints> - <hint type="sourcelabel"> - <x>417</x> - <y>599</y> - </hint> - <hint type="destinationlabel"> - <x>0</x> - <y>491</y> - </hint> - </hints> - </connection> - </connections> -</ui> +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>FetchMetadata</class> + <widget class="QDialog" name="FetchMetadata"> + <property name="windowModality"> + <enum>Qt::WindowModal</enum> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>890</width> + <height>642</height> + </rect> + </property> + <property name="windowTitle"> + <string>Fetch metadata</string> + </property> + <property name="windowIcon"> + <iconset resource="../../../../resources/images.qrc"> + <normaloff>:/images/metadata.png</normaloff>:/images/metadata.png</iconset> + </property> + <layout class="QVBoxLayout"> + <item> + <widget class="QLabel" name="tlabel"> + <property name="text"> + <string><p>calibre can find metadata for your books from two locations: <b>Google Books</b> and <b>isbndb.com</b>. <p>To use isbndb.com you must sign up for a <a href="http://www.isbndb.com">free account</a> and enter your access key below.</string> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + <property name="openExternalLinks"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout"> + <item> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>&Access Key:</string> + </property> + <property name="buddy"> + <cstring>key</cstring> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="key"/> + </item> + <item> + <widget class="QPushButton" name="fetch"> + <property name="text"> + <string>Fetch</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QLabel" name="warning"> + <property name="text"> + <string/> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox"> + <property name="title"> + <string>Matches</string> + </property> + <layout class="QVBoxLayout"> + <item> + <widget class="QLabel" name="label_3"> + <property name="text"> + <string>Select the book that most closely matches your copy from the list below</string> + </property> + </widget> + </item> + <item> + <widget class="QTableView" name="matches"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>1</verstretch> + </sizepolicy> + </property> + <property name="alternatingRowColors"> + <bool>true</bool> + </property> + <property name="selectionMode"> + <enum>QAbstractItemView::SingleSelection</enum> + </property> + <property name="selectionBehavior"> + <enum>QAbstractItemView::SelectRows</enum> + </property> + </widget> + </item> + <item> + <widget class="QTextBrowser" name="summary"/> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QCheckBox" name="opt_overwrite_author_title_metadata"> + <property name="text"> + <string>Overwrite author and title with author and title of selected book</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="opt_get_social_metadata"> + <property name="text"> + <string>Download &social metadata (tags/rating/etc.) for the selected book</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="opt_auto_download_cover"> + <property name="text"> + <string>Automatically download the cover, if available</string> + </property> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="standardButtons"> + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <resources> + <include location="../../../../resources/images.qrc"/> + </resources> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>FetchMetadata</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>460</x> + <y>599</y> + </hint> + <hint type="destinationlabel"> + <x>657</x> + <y>530</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>FetchMetadata</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>417</x> + <y>599</y> + </hint> + <hint type="destinationlabel"> + <x>0</x> + <y>491</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/src/calibre/gui2/dialogs/metadata_single.py b/src/calibre/gui2/dialogs/metadata_single.py index 8f068075cf..fec58a74f6 100644 --- a/src/calibre/gui2/dialogs/metadata_single.py +++ b/src/calibre/gui2/dialogs/metadata_single.py @@ -760,8 +760,8 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): if book.publisher: self.publisher.setEditText(book.publisher) if book.isbn: self.isbn.setText(book.isbn) if book.pubdate: - d = book.pubdate - self.pubdate.setDate(QDate(d.year, d.month, d.day)) + dt = book.pubdate + self.pubdate.setDate(QDate(dt.year, dt.month, dt.day)) summ = book.comments if summ: prefix = unicode(self.comments.toPlainText()) @@ -777,8 +777,11 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): self.series.setText(book.series) if book.series_index is not None: self.series_index.setValue(book.series_index) - # Needed because of Qt focus bug on OS X - self.fetch_cover_button.setFocus(Qt.OtherFocusReason) + if book.has_cover: + if d.opt_auto_download_cover.isChecked() and book.has_cover: + self.fetch_cover() + else: + self.fetch_cover_button.setFocus(Qt.OtherFocusReason) else: error_dialog(self, _('Cannot fetch metadata'), _('You must specify at least one of ISBN, Title, ' From 0d52b87a558e2cde56705ef37a8490be33b958c6 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Mon, 6 Dec 2010 17:30:18 -0700 Subject: [PATCH 372/377] Fix #7786 (Feedback when installing new plugins) --- src/calibre/gui2/preferences/plugins.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/calibre/gui2/preferences/plugins.py b/src/calibre/gui2/preferences/plugins.py index 388227e438..d493b615b5 100644 --- a/src/calibre/gui2/preferences/plugins.py +++ b/src/calibre/gui2/preferences/plugins.py @@ -151,6 +151,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form): self._plugin_model.populate() self._plugin_model.reset() self.changed_signal.emit() + self.plugin_path.setText('') else: error_dialog(self, _('No valid plugin path'), _('%s is not a valid plugin path')%path).exec_() From dbff870b893a19515cbd3ad3f4004e11735e5893 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Mon, 6 Dec 2010 18:30:34 -0700 Subject: [PATCH 373/377] Fix #7716 (Edit meta Information - cover download crash - os x) --- src/calibre/gui2/dialogs/metadata_single.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/calibre/gui2/dialogs/metadata_single.py b/src/calibre/gui2/dialogs/metadata_single.py index fec58a74f6..3205b1d23c 100644 --- a/src/calibre/gui2/dialogs/metadata_single.py +++ b/src/calibre/gui2/dialogs/metadata_single.py @@ -8,8 +8,9 @@ add/remove formats import os, re, time, traceback, textwrap from functools import partial +from threading import Thread -from PyQt4.Qt import SIGNAL, QObject, Qt, QTimer, QThread, QDate, \ +from PyQt4.Qt import SIGNAL, QObject, Qt, QTimer, QDate, \ QPixmap, QListWidgetItem, QDialog, pyqtSignal, QMessageBox, QIcon, \ QPushButton @@ -34,9 +35,12 @@ from calibre.gui2.preferences.social import SocialMetadata from calibre.gui2.custom_column_widgets import populate_metadata_page from calibre import strftime -class CoverFetcher(QThread): # {{{ +class CoverFetcher(Thread): # {{{ def __init__(self, username, password, isbn, timeout, title, author): + Thread.__init__(self) + self.daemon = True + self.username = username.strip() if username else username self.password = password.strip() if password else password self.timeout = timeout @@ -44,8 +48,7 @@ class CoverFetcher(QThread): # {{{ self.title = title self.needs_isbn = False self.author = author - QThread.__init__(self) - self.exception = self.traceback = self.cover_data = None + self.exception = self.traceback = self.cover_data = self.errors = None def run(self): try: @@ -238,20 +241,20 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): self.timeout, title, author) self.cover_fetcher.start() self._hangcheck = QTimer(self) - self.connect(self._hangcheck, SIGNAL('timeout()'), self.hangcheck) + self._hangcheck.timeout.connect(self.hangcheck, + type=Qt.QueuedConnection) self.cf_start_time = time.time() self.pi.start(_('Downloading cover...')) self._hangcheck.start(100) def hangcheck(self): - if not self.cover_fetcher.isFinished() and \ + if self.cover_fetcher.is_alive() and \ time.time()-self.cf_start_time < self.COVER_FETCH_TIMEOUT: return self._hangcheck.stop() try: - if self.cover_fetcher.isRunning(): - self.cover_fetcher.terminate() + if self.cover_fetcher.is_alive(): error_dialog(self, _('Cannot fetch cover'), _('<b>Could not fetch cover.</b><br/>')+ _('The download timed out.')).exec_() From 1034e9a73d97ddec1582886137a80bb384717e26 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Tue, 7 Dec 2010 10:25:46 +0000 Subject: [PATCH 374/377] Make template formatting support numeric format specifications --- src/calibre/manual/template_lang.rst | 10 +++-- src/calibre/utils/formatter.py | 59 +++++++++++++++++++++------- 2 files changed, 50 insertions(+), 19 deletions(-) diff --git a/src/calibre/manual/template_lang.rst b/src/calibre/manual/template_lang.rst index 1bef32fbd6..b316850798 100644 --- a/src/calibre/manual/template_lang.rst +++ b/src/calibre/manual/template_lang.rst @@ -46,7 +46,6 @@ and if a book does not have a series:: (|app| automatically removes multiple slashes and leading or trailing spaces). - Advanced formatting ---------------------- @@ -80,6 +79,9 @@ For trailing zeros, use:: {series_index:0<3s} - Three digits with trailing zeros +If you use series indices with sub values (e.g., 1.1), you might want to ensure that the decimal points line up. For example, you might want the indices 1 and 2.5 to appear as 01.00 and 02.50 so that they will sort correctly. To do this, use:: + + {series_index:0<5.2f} - Five characters, consisting of two digits with leading zeros, a decimal point, then 2 digits after the decimal point If you want only the first two letters of the data, use:: @@ -115,15 +117,15 @@ The functions available are: * ``lowercase()`` -- return value of the field in lower case. * ``uppercase()`` -- return the value of the field in upper case. * ``titlecase()`` -- return the value of the field in title case. - * ``capitalize()`` -- return the value as capitalized. - * ``ifempty(text)`` -- if the field is not empty, return the value of the field. Otherwise return `text`. - * ``test(text if not empty, text if empty)`` -- return `text if not empty` if the field is not empty, otherwise return `text if empty`. + * ``capitalize()`` -- return the value with the first letter upper case and the rest lower case. * ``contains(pattern, text if match, text if not match`` -- checks if field contains matches for the regular expression `pattern`. Returns `text if match` if matches are found, otherwise it returns `text if no match`. * ``count(separator)`` -- interprets the value as a list of items separated by `separator`, returning the number of items in the list. Most lists use a comma as the separator, but authors uses an ampersand. Examples: `{tags:count(,)}`, `{authors:count(&)}` + * ``ifempty(text)`` -- if the field is not empty, return the value of the field. Otherwise return `text`. * ``lookup(pattern, field, pattern, field, ..., else_field)`` -- like switch, except the arguments are field (metadata) names, not text. The value of the appropriate field will be fetched and used. Note that because composite columns are fields, you can use this function in one composite field to use the value of some other composite field. This is extremely useful when constructing variable save paths (more later). * ``re(pattern, replacement)`` -- return the field after applying the regular expression. All instances of `pattern` are replaced with `replacement`. As in all of |app|, these are python-compatible regular expressions. * ``shorten(left chars, middle text, right chars)`` -- Return a shortened version of the field, consisting of `left chars` characters from the beginning of the field, followed by `middle text`, followed by `right chars` characters from the end of the string. `Left chars` and `right chars` must be integers. For example, assume the title of the book is `Ancient English Laws in the Times of Ivanhoe`, and you want it to fit in a space of at most 15 characters. If you use ``{title:shorten(9,-,5)}``, the result will be `Ancient E-nhoe`. If the field's length is less than ``left chars`` + ``right chars`` + the length of ``middle text``, then the field will be used intact. For example, the title `The Dome` would not be changed. * ``switch(pattern, value, pattern, value, ..., else_value)`` -- for each ``pattern, value`` pair, checks if the field matches the regular expression ``pattern`` and if so, returns that ``value``. If no ``pattern`` matches, then ``else_value`` is returned. You can have as many ``pattern, value`` pairs as you want. + * ``test(text if not empty, text if empty)`` -- return `text if not empty` if the field is not empty, otherwise return `text if empty`. Now, about using functions and formatting in the same field. Suppose you have an integer custom column called ``#myint`` that you want to see with leading zeros, as in ``003``. To do this, you would use a format of ``0>3s``. However, by default, if a number (integer or float) equals zero then the field produces the empty value, so zero values will produce nothing, not ``000``. If you really want to see ``000`` values, then you use both the format string and the ``ifempty`` function to change the empty value back to a zero. The field reference would be:: diff --git a/src/calibre/utils/formatter.py b/src/calibre/utils/formatter.py index 6c4ddce81f..a7fb3682aa 100644 --- a/src/calibre/utils/formatter.py +++ b/src/calibre/utils/formatter.py @@ -15,6 +15,8 @@ class TemplateFormatter(string.Formatter): Provides a format function that substitutes '' for any missing value ''' + _validation_string = 'This Is Some Text THAT SHOULD be LONG Enough.%^&*' + # Dict to do recursion detection. It is up the the individual get_value # method to use it. It is cleared when starting to format a template composite_values = {} @@ -98,19 +100,29 @@ class TemplateFormatter(string.Formatter): 'count' : (1, _count), } - format_string_re = re.compile(r'^(.*)\|(.*)\|(.*)$') - compress_spaces = re.compile(r'\s+') - backslash_comma_to_comma = re.compile(r'\\,') - - arg_parser = re.Scanner([ - (r',', lambda x,t: ''), - (r'.*?((?<!\\),)', lambda x,t: t[:-1]), - (r'.*?\)', lambda x,t: t[:-1]), - ]) - - def get_value(self, key, args, kwargs): - raise Exception('get_value must be implemented in the subclass') - + def _do_format(self, val, fmt): + if not fmt or not val: + return val + if val == self._validation_string: + val = '0' + typ = fmt[-1] + if typ == 's': + pass + elif 'bcdoxXn'.find(typ) >= 0: + try: + val = int(val) + except: + raise ValueError( + _('format: type {0} requires an integer value, got {1}').format(typ, val)) + elif 'eEfFgGn%'.find(typ) >= 0: + try: + val = float(val) + except: + raise ValueError( + _('format: type {0} requires a decimal (float) value, got {1}').format(typ, val)) + else: + raise ValueError(_('format: unknown format type letter {0}').format(typ)) + return unicode(('{0:'+fmt+'}').format(val)) def _explode_format_string(self, fmt): try: @@ -123,6 +135,21 @@ class TemplateFormatter(string.Formatter): traceback.print_exc() return fmt, '', '' + format_string_re = re.compile(r'^(.*)\|(.*)\|(.*)$') + compress_spaces = re.compile(r'\s+') + backslash_comma_to_comma = re.compile(r'\\,') + + arg_parser = re.Scanner([ + (r',', lambda x,t: ''), + (r'.*?((?<!\\),)', lambda x,t: t[:-1]), + (r'.*?\)', lambda x,t: t[:-1]), + ]) + + ################## Override parent classes methods ##################### + + def get_value(self, key, args, kwargs): + raise Exception('get_value must be implemented in the subclass') + def format_field(self, val, fmt): # Handle conditional text fmt, prefix, suffix = self._explode_format_string(fmt) @@ -156,7 +183,7 @@ class TemplateFormatter(string.Formatter): else: val = func[1](self, val, *args).strip() if val: - val = string.Formatter.format_field(self, val, dispfmt) + val = self._do_format(val, dispfmt) if not val: return '' return prefix + val + suffix @@ -165,6 +192,8 @@ class TemplateFormatter(string.Formatter): ans = string.Formatter.vformat(self, fmt, args, kwargs) return self.compress_spaces.sub(' ', ans).strip() + ########## a formatter guaranteed not to throw and exception ############ + def safe_format(self, fmt, kwargs, error_value, book): self.kwargs = kwargs self.book = book @@ -182,7 +211,7 @@ class ValidateFormat(TemplateFormatter): Provides a format function that substitutes '' for any missing value ''' def get_value(self, key, args, kwargs): - return 'this is some text that should be long enough' + return self._validation_string def validate(self, x): return self.vformat(x, [], {}) From 6cfb43a3e8e219a82994d6d1d381cf3d45c5e245 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Tue, 7 Dec 2010 08:37:30 -0700 Subject: [PATCH 375/377] St. Louis Post Dispatch by cisaak --- .../recipes/st_louis_post_dispatch.recipe | 70 +++++++++++++++++++ src/calibre/devices/android/driver.py | 2 +- 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 resources/recipes/st_louis_post_dispatch.recipe diff --git a/resources/recipes/st_louis_post_dispatch.recipe b/resources/recipes/st_louis_post_dispatch.recipe new file mode 100644 index 0000000000..3b7701cedc --- /dev/null +++ b/resources/recipes/st_louis_post_dispatch.recipe @@ -0,0 +1,70 @@ +from calibre.web.feeds.news import BasicNewsRecipe + +class AdvancedUserRecipe1282093204(BasicNewsRecipe): + title = u'St Louis Post-Dispatch' + __author__ = 'cisaak' + language = 'en' + + oldest_article = 1 + max_articles_per_feed = 15 + masthead_url = 'http://farm5.static.flickr.com/4118/4929686950_0e22e2c88a.jpg' + + feeds = [ + (u'News-Bill McClellan', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=news%2Flocal%2fcolumns%2Fbill-mclellan&f=rss&t=article'), + (u'News-Columns', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=news%2Flocal%2Fcolumns*&l=50&f=rss&t=article'), + (u'News-Crime & Courtshttp://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=news%2Flocal%2Fcrime-and-courts&l=50&f=rss&t=article'), + (u'News-Deb Peterson', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=news%2Flocal%2fcolumns%2Fdeb-peterson&f=rss&t=article'), + (u'News-Education', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=news%2Flocal%2feducation&f=rss&t=article'), + (u'News-Government & Politics', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=news%2Flocal%2fgovt-and-politics&f=rss&t=article'), + (u'News-Local', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=news%2Flocal&f=rss&t=article'), + (u'News-Metro', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=news%2Flocal%2fmetro&f=rss&t=article'), + (u'News-Metro East', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=news%2Flocal%2fillinois&f=rss&t=article'), + (u'News-Missouri Out State', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=news%2Fstate-and-regional%2FMissouri&l=50&f=rss&t=article'), + (u'Opinion-Colleen Carroll Campbell', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=news%2Fopinion%2fcolumns%2Fcolleen-carroll-campbell&f=rss&t=article'), + (u'Opinion-Editorial', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=news%2Fopinion%2feditorial&f=rss&t=article'), + (u'Opinion-Kevin Horrigan', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=news%2Fopinion%2fcolumns%2Fkevin-horrigan&f=rss&t=article'), + (u'Opinion-Mailbag', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=news%2Fopinion%2fmailbag&f=rss&t=article'), + (u'Business Columns-Savvy Consumer', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=business%2Fcolumns%2Fsavvy-consumer&l=100&f=rss&t=article'), + (u'Business Columns-Lager Heads', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=business%2Fcolumns%2Flager-heads&l=100&f=rss&t=article'), + (u'Business Columns-Job Watch', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=business%2Fcolumns%2Fjob-watch&l=100&f=rss&t=article'), + (u'Business Columns-Steve Geigerich', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=business%2Fcolumns%2Fsteve-giegerich&l=100&f=rss&t=article'), + (u'Business Columns-David Nicklaus', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=business%2Fcolumns%2Fdavid-nicklaus&l=100&f=rss&t=article'), + (u'Business Columns-Jim Gallagher', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=business%2Fcolumns%2Fjim-gallagher&l=100&f=rss&t=article'), + (u'Business Columns-Building Blocks', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=business%2Fcolumns%2Fbuilding-blocks&l=100&f=rss&t=article'), + (u'Business', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=business*l&l=100&f=rss&t=article'), + (u'Business-Technology', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=business%2Ftechnology&l=50&f=rss&t=article'), + (u'Business-National', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=business%2Fnational-and-international&l=50&f=rss&t=article'), + (u'Travel', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=travel*&l=100&f=rss&t=article'), + (u'Sports', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=sports*&f=rss&t=article'), + (u'Sports-Baseball', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=sports%2Fbaseball%2Fprofessional&l=100&f=rss&t=article'), + (u'Sports-Bernie Miklasz', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=sports%2Fcolumns%2Fbernie-miklasz&l=50&f=rss&t=article'), + (u'Sports-Bryan Burwell', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=sports%2Fcolumns%2Fbryan-burwell&l=50&f=rss&t=article'), + (u'Sports-College', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=sports%2Fcollege*&l=100&f=rss&t=article'), + (u'Sports-Dan Caesar', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=sports%2Fcolumns%2Fdan-caesar&l=50&f=rss&t=article'), + (u'Sports-Football', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=sports%2Ffootball%2Fprofessional&l=100&f=rss&t=article'), + (u'Sports-Hockey', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=sports%2Fhockey%2Fprofessional&l=100&f=rss&t=article'), + (u'Sports-Illini', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=sports%2Fcollege%2Fillini&l=100&f=rss&t=article'), + (u'Sports-Jeff Gordon', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=sports%2Fcolumns%2Fjeff-gordon&l=100&f=rss&t=article'), + (u'Life & Style', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=lifestyles&l=100&f=rss&t=article'), + (u'Life & Style-Debra Bass', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=lifestyles%2Ffashion-and-style%2Fdebra-bass&l=100&f=rss&t=article'), + (u'Life & Style-Food and Cooking', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=lifestyles%2Ffood-and-cooking&l=100&f=rss&t=article'), + (u'Life & Style-Health/Medicine/Fitness', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=lifestyles%2Fhealth-med-fit&l=100&f=rss&t=article'), + (u'Life & Style-Joe Holleman', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=lifestyles%2Fcolumns%2Fjoe-holleman&l=100&f=rss&t=article'), + (u'Life & Style-Steals-and-Deals', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=lifestyles%2Fcolumns%2Fsteals-and-deals&l=100&f=rss&t=article'), + (u'Life & Style-Tim Townsend', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=lifestyles%2Ffaith-and-values%2Ftim-townsend&l=100&f=rss&t=article'), + (u'Entertainment', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=entertainment&l=100&f=rss&t=article'), + (u'Entertainment-Arts & Theatre', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=entertainment%2Farts-and-theatre&l=100&f=rss&t=article'), + (u'Entertainment-Books & Literature', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=entertainment%2Fbooks-and-literature&l=100&f=rss&t=article'), + (u'Entertainment-Dining', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=sports%2Fhockey%2Fprofessional&l=100&f=rss&t=article'), + (u'Entertainment-Events Calendar', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=entertainment%2Fevents-calendar&l=100&f=rss&t=article'), + (u'Entertainment-Gail Pennington', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=entertainment%2Ftelevision%2Fgail-pennington&l=100&f=rss&t=article'), + (u'Entertainment-Hip Hops', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=entertainment%2Fdining%2Fbars-and-clubs-other%2Fhip-hops&l=100&f=rss&t=article'), + (u'Entertainment-House-O-Fun', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=entertainment%2Fhouse-o-fun&l=100&f=rss&t=article'), + (u'Entertainment-Kevin C. Johnson', u'http://www2.stltoday.com/search/?q=&d1=&d2=&s=start_time&sd=desc&c=entertainment%2Fmusic%2Fkevin-johnson&l=100&f=rss&t=article') + ] + remove_empty_feeds = True + remove_tags = [dict(name='div', attrs={'id':'blox-logo'}),dict(name='a')] + keep_only_tags = [dict(name='h1'), dict(name='p', attrs={'class':'byline'}), dict(name="div", attrs={'id':'blox-story-text'})] + extra_css = 'p {text-align: left;}' + + diff --git a/src/calibre/devices/android/driver.py b/src/calibre/devices/android/driver.py index 9c37b6ff59..8b30631528 100644 --- a/src/calibre/devices/android/driver.py +++ b/src/calibre/devices/android/driver.py @@ -63,7 +63,7 @@ class ANDROID(USBMS): WINDOWS_MAIN_MEM = ['ANDROID_PHONE', 'A855', 'A853', 'INC.NEXUS_ONE', '__UMS_COMPOSITE', '_MB200', 'MASS_STORAGE', '_-_CARD', 'SGH-I897', 'GT-I9000', 'FILE-STOR_GADGET', 'SGH-T959', 'SAMSUNG_ANDROID', - 'SCH-I500_CARD', 'SPH-D700_CARD'] + 'SCH-I500_CARD', 'SPH-D700_CARD', 'MB810'] WINDOWS_CARD_A_MEM = ['ANDROID_PHONE', 'GT-I9000_CARD', 'SGH-I897', 'FILE-STOR_GADGET', 'SGH-T959', 'SAMSUNG_ANDROID'] From b49f04c413775e8a92efa31cd87bc734b3451ee6 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Tue, 7 Dec 2010 16:02:39 +0000 Subject: [PATCH 376/377] Fix typo in manual --- src/calibre/manual/template_lang.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/manual/template_lang.rst b/src/calibre/manual/template_lang.rst index b316850798..b2d32f0767 100644 --- a/src/calibre/manual/template_lang.rst +++ b/src/calibre/manual/template_lang.rst @@ -81,7 +81,7 @@ For trailing zeros, use:: If you use series indices with sub values (e.g., 1.1), you might want to ensure that the decimal points line up. For example, you might want the indices 1 and 2.5 to appear as 01.00 and 02.50 so that they will sort correctly. To do this, use:: - {series_index:0<5.2f} - Five characters, consisting of two digits with leading zeros, a decimal point, then 2 digits after the decimal point + {series_index:0>5.2f} - Five characters, consisting of two digits with leading zeros, a decimal point, then 2 digits after the decimal point If you want only the first two letters of the data, use:: From d34894243661f3351bbf09745d97561f3e91f392 Mon Sep 17 00:00:00 2001 From: Kovid Goyal <kovid@kovidgoyal.net> Date: Tue, 7 Dec 2010 09:10:01 -0700 Subject: [PATCH 377/377] ... --- src/calibre/ebooks/oeb/reader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/ebooks/oeb/reader.py b/src/calibre/ebooks/oeb/reader.py index 0f61969373..8e11ac6498 100644 --- a/src/calibre/ebooks/oeb/reader.py +++ b/src/calibre/ebooks/oeb/reader.py @@ -544,7 +544,7 @@ class OEBReader(object): data = render_html_svg_workaround(path, self.logger) if not data: data = '' - id, href = self.oeb.manifest.generate('cover', 'cover.jpeg') + id, href = self.oeb.manifest.generate('cover', 'cover.jpg') item = self.oeb.manifest.add(id, href, JPEG_MIME, data=data) return item