Even better error message when loading .mo file fails

This commit is contained in:
Kovid Goyal 2019-06-13 10:38:52 +05:30
parent 98ec15b970
commit a38758ca68
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -136,13 +136,18 @@ def get_all_translators():
def get_single_translator(mpath, which='messages'): def get_single_translator(mpath, which='messages'):
from zipfile import ZipFile from zipfile import ZipFile
with ZipFile(P('localization/locales.zip', allow_user_override=False), 'r') as zf: 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: try:
return GNUTranslations(buf) return GNUTranslations(buf)
except Exception as e: except Exception as e:
import traceback import traceback
traceback.print_exc() 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): def get_iso639_translator(lang):