Yesterday one of our writers discovered the WordPress spellchecker was not working properly—namely that it started always saying there were no errors (creating false-negatives). After quite a bit of research, it came down to the following: WordPress packages TinyMCE as WYSIWYG editor including their PHP spellcheck plugin. This plugin uses the Google Spellcheck RPC by default (although it does have other options). Further, the TinyMCE/PHP spellcheck plugin does no error handling, so if it doesn't get a response it likes, it returns the message that no errors were found.
It seems that the Google integration, dates back to 2004, was developed in part by Automattic (of WP fame) and relied upon non-public, undocumented Google features, specifically making a call to https://www.google.com/tbproxy/spell?lang=en&hl=en. Google appears to have discontinued access to this feature without notice (which is within their rights on a non-public, free feature).
This is a big WordPress issue, not only the error, but the false negatives. It is also a TinyMCE issue, and there are some other libraries relying on this feature including jQuery Spellchecker.
The most confusing part has been the silence on this. I have to have one of the first tweets on the subject and a WP Hackers Post that is still un-answered. It's taken a full day for anything to surface on the boards, even so, it's scant. I assume this is primarily because TinyMCE is still happily telling you there are no spelling errors! This should be a reminder to us all to handle errors properly.
Now, here is how to make WordPress work again. Luckily the TinyMCE devs were smart enough to include options in the spellcheck plugin, including a config file where you can set alternate options (although, please note, that while this is a config file, it's out of the main config directory, so it is something you will consciously have to migrate with every WordPress update). In this config file is an option to use PSpell which is a PHP wrapper for aspell, the main unix spellcheck application. Unfortunately none of these are installed by default on most production servers.
So, first you'll have to install pspell. In CentOS, you can do so like so:
yum install php-pspell
(this should bring aspell along as well)
Then you'll need an ASpell dictionary. I chose the english one
So now I did something like:
wget ftp://ftp.gnu.org/gnu/aspell/dict/en/aspell6-en-7.1-0.tar.bz2 tar xvjf aspell6-en-7.1-0.tar.bz2 cd aspell6-en-7.1-0.tar.bz2 ./configure make sudo make install
But I recommend you follow your heart and your system admin if you don't know what any of those commands mean.