It depends on the use case. When writing a LOB application, I use resource files, satellite assemblies etc. to be sure to keep the portions of the user interface that could be potential localization targets out of my code. You don't really want to hardcode your text into your source code.
In my case, most of the time it is not an issue, I'm doing mostly custom development for clients. It's a completely different story for mobile apps, though - you just upload them to the app store, not knowing who will buy and use them, so there, providing localization sure is an issue. Seeing as it's not really hard to do (i.e. the effort involved in loading strings etc. from resources vs. hardcoding them), the benefits outweigh the costs IMHO. I have no hard marketing facts about this, but I know by experience that translating an application to Chinese opened up a whole new market for us, whereas before we had thought English to be absolute sufficient - turned out we were wrong in that regard.
As for the DIY thing: Don't do it, unless you are very proficient in the language in question. It seems this is kinda obvious, but you always encounter poor translations in applications, and this really takes away th professional feel of the app. Just my 2 cent.