Quote Originally Posted by Michael Mullan View Post
You can by all means, replace all the language constants, and define new ones for all the stuff in the other translated packages, and replace them with a hashtable lookup of some type. This would allow you to take control of everything except runtime generated error messages
We actually do something similar to this. We change all the constants to global variables, and set their values to the English texts. Then when the application starts, we check the current language and changes the variables to match. Then once a user logs in, we check if he has a different language and if so sets the variables again.

There are a few gotchas, but on the whole it works very well.