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

Reply via email to