I've seen only 3 comments so far mention Unicode so I think it's a point worth saying - and repeating.
The reason English is the lingua-franca of programming is that most programming tools/languages in the past (and even present) simply didn't (don't) support Unicode. Heck, Unicode didn't even exist initially. So all those languages with their special characters simply couldn't be used, all you had was ASCII - and therefore English.
But there's nothing magical about English that makes it a better programming language in general. The lack of proper documentation is not a reason, it's an excuse - and a lousy one at that.
Yes, using a single language makes it easier to search for solutions, assuming they are even available to be searched. However the negative side of using English is that for non-English speakers it provides an additional overhead for sitting down and writing their ideas. It can also promote bad coding practices since for example you are much less likely to use meaningful variable names in a language you don't know well.
Unicode is slowly making inroads into programming languages and tools. What is stopping wide-spread adoption of non-English language programming in non-English countries is:
1. The prevalence of native-English programmers/businesses and the need to work with them, especially in this age of the global village.
2. Still patchy support of Unicode on older Linux systems still in wide use, e.g. RHEL4.
3. The large head-start English has as a programming language. People have already invented and popularized many programming terms in English. All of these will have to be re-invented for each language and over-come the inertia of people used to the equivalent English term.
Personally, I think English has enough of a head-start over other languages to make it very hard to unseat it as the preferred programming language even for non-native English speakers. But don't be fooled into thinking this makes English somehow better or special. It was just lucky to be first...