Hi Malcolm,
I'm in the process of updating Craig's code to change the parsing algorthims for international support. I don't have any ideas on how to update Craig's enhanced soundex() code for other languages.I can't help you with that. Soundex really is very different for each language and so there is no universal algorithm. Craig's not the first saying he "rolled his own". I'm sure there is some german soundex) version.
Concerning a german dictionary. There was a free german-english dictionary at
www.dict.cc, from which I extracted the german words. That is not any more available for some reasons (misuse), you may only download it for personal purposes, which makes it useless for a spellchecker class.
Cencerning my idea, here's a full example, that should work:
create cursor crsDictionary (cWord c(30))
index on cWord tag cWord
insert into crsDictionary values ("hello")
insert into crsDictionary values ("world")
create cursor crsTextblock (cWord c(30))
insert into crsTextblock values ("hello")
insert into crsTextblock values ("malcolm")
set relation to cWord into "crsDictionary"
copy to (addbs(getenv("temp"))+"tabMisspelled") for eof("crsDictionary")
select 0
use (addbs(getenv("temp"))+"tabMisspelled") in 0
browse
Displays only "malcolm" in tabMisspelled (as names usually are unknown in dictionaries).
The thing you may have got wrong is that your dictionary or your crsTextblock hasn't got lowercase words. It really works.
Bye, Olaf.