I don't think the phone analogy is a good one to the case here. You can write software that serves people in other languages without ever speaking those languages in a way you could never communicate over the phone. Mobile apps are a good example -- it does largely depend on the product and the target audience though but most things should aim to be international. It's not massive effort either in most cases just include a LocalizedStrings.h or whatnot. Not every language has to be supported but simply have the abstraction of two languages usually means more can be added later quite easily.