From b34fcc1daff680964796eddba488309f40daf822 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 19 Apr 2014 07:20:59 +0530 Subject: [PATCH] Fix import of dictionaries that define a locale with no country code --- src/calibre/spell/import_from.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/calibre/spell/import_from.py b/src/calibre/spell/import_from.py index 19f6ee73fa..39b81b6ef5 100644 --- a/src/calibre/spell/import_from.py +++ b/src/calibre/spell/import_from.py @@ -68,6 +68,7 @@ def import_from_libreoffice_source_tree(source_path): raise Exception('Failed to find dictionaries for some wanted locales: %s' % want_locales) def import_from_oxt(source_path, name, dest_dir=None, prefix='dic-'): + from calibre.spell.dictionary import parse_lang_code dest_dir = dest_dir or os.path.join(config_dir, 'dictionaries') if not os.path.exists(dest_dir): os.makedirs(dest_dir) @@ -79,6 +80,9 @@ def import_from_oxt(source_path, name, dest_dir=None, prefix='dic-'): for (dic, aff), locales in parse_xcu(zf.open(xcu).read(), origin='').iteritems(): dic, aff = dic.lstrip('/'), aff.lstrip('/') d = tempfile.mkdtemp(prefix=prefix, dir=dest_dir) + locales = [x for x in locales if parse_lang_code(x).countrycode] + if not locales: + continue metadata = [name] + locales with open(os.path.join(d, 'locales'), 'wb') as f: f.write(('\n'.join(metadata)).encode('utf-8'))