From 1f65446f5e64772bbd9ac838e3b2594b1651dbf8 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 30 Jan 2016 11:58:17 +0530 Subject: [PATCH] Better error reporting when custom dict lookup fails --- src/calibre/gui2/viewer/main.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/calibre/gui2/viewer/main.py b/src/calibre/gui2/viewer/main.py index 92499df259..169d97cdb0 100644 --- a/src/calibre/gui2/viewer/main.py +++ b/src/calibre/gui2/viewer/main.py @@ -103,6 +103,7 @@ class EbookViewer(MainWindow): self.closed = False self.show_toc_on_open = False self.listener = listener + self.lookup_error_reported = {} if listener is not None: t = Thread(name='ConnListener', target=listen, args=(self,)) t.daemon = True @@ -352,11 +353,16 @@ class EbookViewer(MainWindow): def lookup(self, word): from urllib import quote word = quote(word.encode('utf-8')) + lang = canonicalize_lang(self.view.current_language) or get_lang() or 'en' try: - url = lookup_website(canonicalize_lang(self.view.current_language) or 'en').format(word=word) + url = lookup_website(lang).format(word=word) except Exception: - traceback.print_exc() - url = default_lookup_website(canonicalize_lang(self.view.current_language) or 'en').format(word=word) + if not self.lookup_error_reported.get(lang): + self.lookup_error_reported[lang] = True + error_dialog(self, _('Failed to use dictionary'), _( + 'Failed to use the custom dictionary for language: %s Falling back to default dictionary.') % lang, + det_msg=traceback.format_exc(), show=True) + url = default_lookup_website(lang).format(word=word) open_url(url) def print_book(self):