Another factor to consider is that if we write in language that has some constructs (e.g. C - if/then/else/while/return/int/double/class/void etc.) then writing:
if (znalezione) {
...
}
looks awkward.Also one has to consider popular libraries and functions/methods/classes in them are English based, so this would add even more awkwardness to the code:
zwierzęta.stream()
.filter(z -> z.kończyny().contains(noga))
.map(z -> z.toString())
.collect(Collectors.toList());I agree with you, but the example you gave is more common than you think. We tend to over-estimate people's language skills. (keep in mind, English is not my native tongue, I'm including myself in there and it's not meant as an attack, just something we need to deal with, and I would not outright exclude bilingual code)
That's why my startup uses language-neutral variable names like i, j, k and x, y, z.
Joke aside, for anyone curious: we use such i, j variables for abstract logic like a counter (e.g. i=0 at the beginning of a loop, and gets incremented by 1 each time the loop runs), or booleans maybe (e.g. P=0 or 1, true or false). But generally it is considered good practice to give names to variables that are self-explanatory (e.g. studentName or vehicle_age) for readability and ease of understanding. Even counters and booleans should be significant when possible (e.g. "hasResponded" or "day_num").
On topic, I think english or not doesn't matter theoretically. Its cultural and indeed 80% of computing/code happens in english on earth (no source, waddayathink!). What matters imho is that semantics are correct (both human and machine language...) and reasonably meaningful to a collaborator.
To anybody wanting to know better: read open-source code. Best school there is, actual practice.
If another developer comes on board, will their English be fluent enough to know those terms? There's also a huge risk in having a translation error. We're programmers, not translators.
For general variable names, I agree. On the other hand, in my experience, when the programmers aren't fluent enough in English, if English is imposed, they tend to choose really bad variable names and not comment their code properly. So I tend to impose clear names/doc over imposing a specific language.