+ }
+ return make_pair(idx, data);
+}
+
+
+pair<string,string> Thesaurus::Private::getThesaurus(docstring const & lang)
+{
+ string const thes_path = external_path(lyxrc.thesaurusdir_path);
+ pair<string,string> result ;
+
+ if (thesaurusAvailable(lang))
+ return make_pair(string(), string());
+
+ 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);
+ }
+ if (result.first.empty() || result.second.empty()) {
+ string const user_path = external_path(addName(lyx::support::package().user_support().absFileName(),dataDirectory())) ;
+ result = getThesaurus(user_path, lang);
+ }
+ return result;
+}
+
+
+bool Thesaurus::Private::addThesaurus(docstring const & lang)
+{
+ if (thesaurusAvailable(lang))
+ return true;
+
+ ThesFiles files = getThesaurus(lang);
+ string const idx = files.first;
+ string const data = files.second;