Final cleanup / refactoring of i18n code

Have been running off of this for days, didn't realize it wasn't merged!