Here is what is done at most of the bigger groups at Microsoft and is thus our preferred way of internationalizing our products.
Write single binary code as the first step toward truly world-ready products.
Implementing a multilingual user interface that allows users to switch between all supported languages is the next logical step.
Write Unicode-aware code and create satellite DLLs for your language resources to make these goals much easier to achieve.