Actually, translations are something I want to support. In fact, maybe I should make that a high priority, given your optimism about widespread adoption
The easiest way I can think of, would be to offload basically every string/message in the program, to a dictionary in a separate file (i.e. msgWarnDeleteWallet['en']="..."). Then users can replace the file with translated versions, which can be bundled with the program and selected through command-line options.
Is there an "official" way to do/support this? Or is my theoretical technique sufficient?
For translations work I recommend the crowdin.net platform which is:
+ free for open source projects
+ really easy to use
+ manages all the 'I have just added X number of new terms' merging
+ has automated suggestions from Microsoft and Google translate
+ you get excellent project management abilities for notifying people, track work etc.
You can CNAME your crowdin.net project URL into your site and brand it - see
http://translate.multibit.orgYou are free to reuse the MultiBit translation work as that is all MIT licence. There are about 20 languages and it would get you going for the terms that are common between the two programs. (The format is UTF in Java properties format. Or you can also just cut and paste from the translate.multibit.org project if that is a problem).
Some of the things I found when localising (not all of which are fixed yet!)
+ Europeans use "," rather than "." as a decimal separator (and conversely "." instead of "," as a thousands separator.)
+ Date formats are different in pretty much every language.
+ Right-to-left languages mean your complete layout needs to be able to switch horizontally. (Arabic, Hebrew, Persian)
+ Never concantenate strings (e.g. amount + " BTC") as the order is different in right-to-lefts.
You have some big chunks of text on your dialogs - I would recommend putting them into your localisation files as, say, separate paragraphs. This makes it a bit easier on the localisers when you change one sentence as only a small amount of text is marked as changed (and hence needs relocalising).
Have a look at the
http://translate.multibit.org project - it makes localising as straightforward as can be.
Also, whilst it is not strictly localisation : people using different writing systems tend to prefer their own fonts (e.g. Chinese characters look nicer in SimSun font) so when you start localising give people the option somewhere to specify what font to render the app in - or pick it up from their system settings.