Generally this is handled by multiple language sub-folders on the site then when the user selects the language that subfolder is used:
http://www.mysite.com/en/http://www.mysite.com/fr/et cetera
ASP.NET has themes which could be customized per language and flipped in or out on the fly. I've written multi-language applications that dynamically load different resource DLLs with ALL my strings in the DLL's instead of in code.