Better i18n

An attempt to somewhat improve i18n. 

Main reason for this change is to make translation less error-prone and conveniently fall back to English whenever needed, instead of breaking horribly. The language file format is open to discussion.

ui_strings.h was removed and a new file with a different name (ui_i18n.h) is created and used instead, so any merge with a translation using old conventions should reliably fail.