If you're using Visual Source Safe as your source control (hopefully you're not), whatever you do, do not add Japanese text inside your source code itself. Although Visual Studio can handle unicode source files, VSS does not handle them well.
I worked on an application that translated itself into Japanese, and the inclusion of Japanese within the source code itself (for calls to a MessageBox-like function) corrupted the files, and because VSS is diff-based, the files were corrupted all the way back to the original checked-in versions. This corruption took the form of most of the code files being turned into Japanese character-based gibberish, and occurred because VSS shifted portions of the unicode-based CS files (which used two bytes per character) off by one byte.
Fixing these files required a great deal of manual work, with my boss peering over my shoulder and screaming about how doomed we were, so just don't do this.
Also, here are a couple of other StackOverflow questions on this topic:
http://stackoverflow.com/questions/373388/best-way-to-implement-multi-language-globalization-in-large-net-project
http://stackoverflow.com/questions/119568/best-practice-to-make-a-multi-language-application-in-cwinforms
Personally, I prefer a simpler method. Create a list in Excel or something of every piece of English text in the application that you need to translate (control Text properties, strings to use in MessageBox functions etc.) and send the spreadsheets to your translators. In your application, call a method in the Load event of each of your forms that iterates through all the controls on the form and changes their Text properties to the translated values. Replace all calls to MessageBox with calls to an intermediate function that translates the text to be displayed, and then calls MessageBox with the translated text.
Using the built-in globalization methods is a lot of work, because you have to manually create each globalized form and then manually replace all the text with the translations, and this task pretty much requires the programmer to be fluent. The method I mention is done programatically, and doesn't require the programmer to be fluent in the translated languages.