The multilingual spell checking might not be that difficult to implement with ispell. I suggest creating two new classes, UT_SpellChecker, and UT_SpellCheckerCollection. The first class would represent a single-language spellchecker, with public member functions corresponding to those found in sp_spell.h plus a function const char * getLanguage(). The second class would hold a collection of pointers to UT_SpellChecker and would provide public functions SpellCheckNWord16(const char* lang, ...) and SpellCheckSuggestNWord16(const char * lang, ...) The call to SpellCheckInit() we do during start up would be removed, instead an empty UT_SpellChecker collection would be created and this would attempt to create a UT_SpellChecker the first time a given language is encountered (thus, if the user does not use background checking, we would not load the dictionary until s/he runs the spellchecker). The code in other/spell would require some modification, so that each instance of UT_SpellChecker would have its own hash and related variables; I think we should just move the ispell code directly into the UT_SpellChecker class. (I realise that such a move would make any future updating toward a newer version of ispell harder, but then the sources have been modified so extensively, that this is unlikely to make things much worse than they already are). Any obvious problems with such an approach? If not, I will wait until Dom tags 0.7.14 and start working on it. Tomas
