On a non-UI level, we need to create the underpinnings that will allow us to set the app to use multiple languages simultaneously. We should also do this in such a way that the *current* state of the app (using a single language) becomes a special case of the multilingual functionality.
Once this is completed, it will let us work on the various UI bits in parallel.
These underpinnings might turn out to be simpler than we think:
- We have a preference string that contains the language code for the app.
- We also have a preference string that contains a comma-separated list of MRU (most-recently used) language codes. I can easily imagine repurposing this preference to contain the actual "new" list of languages that the user chooses for the app.
- There is already a class called AppLanguageState that abstracts away the selection and persistence of languages.