I initially considered your proposed approach too, however I noticed that `setupSuggestionsWorker` which is called from `activate` (cf. [latin.js#L173](https://github.com/mozilla-b2g/gaia/blob/master/apps/keyboard/js/imes/latin/latin.js#L173)) posts a `setLanguage` command to the worker with the new language. The worker then takes care of loading the appropriate dictionary and setting up the prediction engine.

With this in mind, I thought `deactivate()` will not be necessary (also since it has an idleTimer of 30s), and calling activate with the new language will appropriately set the relevant dictionary through `setLanguage` cmd.

Having noticed that keyboard layouts that don't have a suggestions dictionary have a `needsCandidatePanel` attribute set to `true` (in `layout.js`), I considered checking for it will be sufficient to figure if suggestions are needed or not from the input method. If the keyboard layout doesn't need suggestions (and auto-correction), the inputMethod's `suggesting` and `correcting` need to be set to false so that no auto-correction is performed (cf. [latin.js#L752](https://github.com/mozilla-b2g/gaia/blob/master/apps/keyboard/js/imes/latin/latin.js#L752)) -- `deactivate()` cannot substitute this in its current form since it has the idleTimer, as detailed in my previous comments.

@davidflanagan, should I follow-up with your suggestion of adding a `setLanguage()` method to the input method, or do you think the one in the worker should work fine? Also, should I change the `deactivate()` method to bypass the idleTimer if called when switching keyboards (thus avoiding the `disableAutoCorrection()` method that I introduced)?