+ return addSpeller(lang);
+}
+
+
+string const AspellChecker::Private::spellerID(Language const * lang)
+{
+ return lang->code() + "-" + lang->variety();
+}
+
+
+SpellChecker::Result AspellChecker::Private::check(
+ AspellSpeller * m, string const & word)
+ const
+{
+ int const word_ok = aspell_speller_check(m, word.c_str(), -1);
+ LASSERT(word_ok != -1, /**/);
+ return (word_ok) ? WORD_OK : UNKNOWN_WORD;
+}
+
+void AspellChecker::Private::accept(Speller & speller, WordLangTuple const & word)
+{
+ speller.ignored_words_.push_back(word.word());
+}
+
+
+/// personal word list interface
+void AspellChecker::Private::remove(WordLangTuple const & word)
+{
+ PersonalWordList * pd = personal_[word.lang()->lang()];
+ if (!pd)
+ return;
+ pd->remove(word.word());
+ Spellers::iterator it = spellers_.find(spellerID(word.lang()));
+ if (it != spellers_.end()) {
+ initSessionDictionary(it->second, pd);
+ }