From a38758ca682b7c0c0025ddab6ce408cdd7adb847 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 13 Jun 2019 10:38:52 +0530 Subject: [PATCH] Even better error message when loading .mo file fails --- src/calibre/utils/localization.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/calibre/utils/localization.py b/src/calibre/utils/localization.py index 051774e128..8261e716eb 100644 --- a/src/calibre/utils/localization.py +++ b/src/calibre/utils/localization.py @@ -136,13 +136,18 @@ def get_all_translators(): def get_single_translator(mpath, which='messages'): from zipfile import ZipFile with ZipFile(P('localization/locales.zip', allow_user_override=False), 'r') as zf: - buf = io.BytesIO(zf.read(mpath + '/%s.mo' % which)) + path = '{}/{}.mo'.format(mpath, which) + data = zf.read(path) + buf = io.BytesIO(data) try: return GNUTranslations(buf) except Exception as e: import traceback traceback.print_exc() - raise ValueError('Failed to load translations for: {} with error: {}'.format(mpath, e)) + import hashlib + sig = hashlib.sha1(data).hexdigest() + raise ValueError('Failed to load translations for: {} (size: {} and signature: {}) with error: {}'.format( + path, len(data), sig, e)) def get_iso639_translator(lang):