[WIP] Add language picker

This also contains the changes in #1912, so the diff should simplify a bit once that's merged.

Some commentary inline on the remaining rough spots.
do we have a link we can point to here?