UI language decoupling

This branch decouples the language interface from the content interface. It's mostly complete but it needs some more testing and tweaking around which textdomain files get loaded on the front end.