Most of my clients require only one language, and in fact specify that one language. Therefore, we don't spend time localizing the application. However, that doesn't mean we can completely ignore other languages. So we stick with the basics:
- Use Unicode everywhere. It's 2k10, there's no excuse not to.
- Design for some elasticity in the layout. Even with all English, different fonts have very different screen footprints at the same point size.
- Keep application functions/data modeling out of the view layer
Personally, when a potential localization language is fundamentally different from the one the application was designed in there's alot more going on than the simple selection of text. While text replacement helps and will allow a company to get a "quick and dirty" implementation in a new location comparatively earlier--it doesn't solve the fundamental differences in the way users in the other language think.
I've studied Japanese, and while I can only consider myself a rank beginner in that language, I know enough that there are some concepts that there isn't a direct translation for. There are different ideas of what makes something useable. While the big major concepts might be similar, it's the details that really makes a difference with users.
In order to truly address the needs of a very different culture, you need a whole new face for your application. That's why Model/View/Controller separation becomes even more important. As long as the application functions the same way, the view portion can be completely replaced. When that happens, someone is planning on paying some real money to tackle the problem properly.