Мне кажется самая дурацкая система локализации это PO (или gettext), это на самом деле напоминает костыльную систему, когда исходники на си нужно было срочно локализовать ее и придумали.
Самая простая система, это взять за основу английский язык, и завести файлы перевода английских фраз на другие языки, многие так делают. Завести одну функцию, которая будет переводить фразу, и везде где вы вставляете текст, его просто нужно обрамлять функцией.
С PO можно работать также. то что можно переводить все resourcestring разом просто дополнительная плюшка.
Добавлено спустя 2 часа 1 минуту 24 секунды:Получается 2 проблемы:
1) как добавить все неопределенные в программе строки в PO
2) как отследить и удалить в PO строки которые потеряли актуальность и не используются программой?
первую планирую решить ключом командной строки, при обнаружении которого программа в случае не нахождения в po текста будет его туда добавлять с последующим сохранением файла.
вторую видимо придется решать руками, т.к. некоторые строки будут использоваться редко, их можно ошибочно вычистить, а через недельку они понадобятся.