X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FThesaurus.cpp;h=4f4ad64d14aba691df74e59eb45445e20e76f261;hb=d2ec79beac9a539770ddf5a7010621ab629eace6;hp=f8e8448979a5f1bad70b5c8db6dfc3a78e69636f;hpb=a7caeda68318e91b270de43cbf5a10c6d90f0962;p=lyx.git diff --git a/src/Thesaurus.cpp b/src/Thesaurus.cpp index f8e8448979..4f4ad64d14 100644 --- a/src/Thesaurus.cpp +++ b/src/Thesaurus.cpp @@ -107,6 +107,11 @@ pair Thesaurus::Private::getThesaurus(string const & path, docstr for (FileNameList::const_iterator it = idx_files.begin(); it != idx_files.end(); ++it) { basename = it->onlyFileNameWithoutExt(); if (contains(basename, to_ascii(lang))) { + // do not use more specific dicts. + if (contains(basename, '_') && !contains(lang, '_')) + continue; + if (contains(basename, '-') && !contains(lang, '-')) + continue; ifstream ifs(it->absFileName().c_str()); if (ifs) { // check for appropriate version of index file @@ -129,6 +134,20 @@ pair Thesaurus::Private::getThesaurus(string const & path, docstr } } if (idx.empty()) { + // try with a more general dictionary + docstring shortcode; + if (contains(lang, '_')) { + split(lang, shortcode, '_'); + LYXERR(Debug::FILES, "Did not find thesaurus for LANG code " + << lang << ". Trying with " << shortcode); + return getThesaurus(path, shortcode); + } + else if (contains(lang, '-')) { + split(lang, shortcode, '-'); + LYXERR(Debug::FILES, "Did not find thesaurus for LANG code " + << lang << ". Trying with " << shortcode); + return getThesaurus(path, shortcode); + } return make_pair(string(), string()); } for (support::FileNameList::const_iterator it = data_files.begin(); it != data_files.end(); ++it) { @@ -150,9 +169,8 @@ pair Thesaurus::Private::getThesaurus(docstring const & lang) if (thesaurusAvailable(lang)) return make_pair(string(), string()); - if (!thes_path.empty()) { + if (!thes_path.empty()) result = getThesaurus(thes_path, lang); - } if (result.first.empty() || result.second.empty()) { string const sys_path = external_path(addName(lyx::support::package().system_support().absFileName(),dataDirectory())) ; result = getThesaurus(sys_path, lang); @@ -271,7 +289,8 @@ Thesaurus::Meanings Thesaurus::lookup(WordLangTuple const & wl) } -Thesaurus::Thesaurus() : d(new Thesaurus::Private) +Thesaurus::Thesaurus() + : d(new Thesaurus::Private) { }