We use gettext for translations in our product, but have had a lot of problems with it:
On
The language switching on the Google Chrome browser is very neatly done. It's possible to switch between languages while the program is running. I don't know what system they use, but it may be worth investigating, since it's an open source browser.