When I've heard programmers criticised for the "ugly american" behavior it is not about the use of english as a technical lingua franca. The ugly american programmer is one who embeds english chauvinism into the user experience of their software. This includes lack of unicode support, and support for locales and internationalization.
To my knowledge, this is a subject that is rarely if ever covered in US schools (I don't recall seeing anything related to software internationalization listed at my university). I'd suggest that those who want to promote translatable software start by encouraging schools to teach their students how to externalize strings, deal with wide characters, etc.
I disagree. How to do localization is usually pretty straightforward, so why teach the APIs? There's barely enough time to communicate a basic understanding of complex systems to students, teaching them localization is a sideshow.
Anybody who wants their program to be used in another country needs to localize it, and that point, a simple Google search is enough.