Присоединяюсь, готовые решения самого интересуют.
Если бы сам делал, то можно использовать разные методы, например, использовать невозможности языков, например если человек вводит "аъ" то он уже ошибся, или сразу делать транслит и искать в базе на обоих языках, или на основе наиболее частых запросов составить небольшой список слов при обнаружении которых надо сменить раскладку. В английском например нет сочетания yf окружённого пробелами: " yf " а в русском это " на "