I'm unsure how to do it specifically in .NET, but a solution is to store the text in a database, and select which language as the page is generated (ideally by either URL (like /en) or cookie setting). Any resources can be stored in "en" and "es" folders, which should use the same logic to select. Then, as long as you're consistent, your translators / graphics people can just look at the raw, un-translated files, translate, put in the proper folder / database location, and viola.
Any number of languages can be handled, easily extending in the future, and it can even handle most language-specific layouts if you do the same with your CSS files. You should be using CSS to do all layout / styling anyway, in part for reasons just like this.
No matter what, you need more than one of every kind of language-specific data, so you're best off using as much text as possible so your graphics people don't have to pull double-duty in addition to the translators. Using CSS to put the text over the image lets you use a single image for any number of languages, and you can do some pretty impressive stuff with just CSS styling of text. If you want to get tricky, and don't mind breaking the site for older browsers, consider rendering things with the <canvas>
. Just pull in the language-specific text & definition with Javascript.
In the meantime, there are a bunch of website widgets to do automatic translation, though they obviously don't touch images (another reason to stick with text wherever possible: anyone using a translation tool will be able to read it). I'm personally a fan of Google's: http://translate.google.com/translate_tools
None are perfect, but it's better than nothing.