Thanks for the useful guide.
But I don't believe it's a requirement, I believe it is widely constrained not only by the location but also by the intended user and market for the application.
A good example of what I mean is Adobe Flash. This program uses many terms that are particularly hard to translate to, for example, Spanish in an industry dominated by anglicisms (Or words commonly spoken in English even though you are communicating in another language). What happens is the following: You learn how to use the terms or how to use an application in one language, but you have use it in another; and I'm not talking about little changes here, most of this words and their meanings change dramatically when you translate them. In this case you can think of the words frame to "fotograma" and tween to "Iteración automática de movimiento". This is a huge problem. Not only users have trouble adapting to the translated software, but it also creates great incompatibilities when we're working with a team from another country. Not a technical incompatibility of course, but a human one.
What I'm trying to point out is just that localization should not simply be "A requirement" that may cause you to even lose users. If you are going to give optional languages, try giving your users the option to set it, instead of forcing it into them.
Now there's a lot more to localization than just language managing, what about dynamic content based on location? Google implemented it and it's a non-opt-out pain in the ass. Each time it's harder to find the results I need because their localization forces mexican results into the front page instead of whatever international search I'm trying to do.
Bottom line, there is a lot to localization but you have to be very careful when and how you apply it. Our systems should give us more tools to customize our experience to our needs, not the needs someone else thinks we have. As developers we need to work to give our users this customization options.