I'm not sure when I did the switch myself! Maybe as late as my first professional experience, or maybe a bit later in my studies
Another issue, even for other speakers of your language, we don't all translate english words the same, some words are just not translatable and some words look the same but mean different things, how can they tell if it was meant to be English or not?
For example in Spanish, "default" translates to "por omisión", two words, there's no single word for it, a lot of people translate it to "defecto" because it's similar but that means flaw, defect. It's so used, people say "por defecto" instead of "por omisión" now and some dictionaries added it as a translation already.
Another example, "cache", I know its meaning in computer lingo, the times I've had to use it is in the context of computers, so I have no idea what its translation to Spanish is or if there's even a word for it. If someone used the translation in code I would have no idea what I'd be looking at.
One more, "library" translates to "biblioteca" but some people use "libreria" (bookshop) because it sounds similar. You can find usages of both in documentation. People will probably understand both but it hurts searchability.
I don't know anything about the Portuguese script. But your example seems to be made entirely of regular Latin alphabets. Now imagine another language where that isn't the case. Just switching the layout even on a programmable keyboard is going to be a major annoyance. I can touch type on two layouts (English Qwerty and Malayalam Poorna Inscript, in case you're wondering). Occasionally switching between the two layouts is the biggest distraction while typing prose - even with convenient layer switchers programmed in. Programming is going to be hell if the keywords and identifiers are in different scripts. I reckon that it would slow me down to about one-third of my full speed.
There are genuine reasons why identifiers could be in another language - like programming for linguistics (spelling and grammar checkers, morphology analyzers, etc) or while dealing with regional concepts. But even in those cases, programmers simply transliterate it into Latin script, rather than use the original script. Their sound roughly the same. But full fidelity is not possible (there are sounds that you may not have even imagined before). Even so, it's easier to just compromise on fidelity rather than do constant layout switching.
And then there is the reality that many language scripts are simply unusable for programming. My own language is agglutinative - meaning that multiple words fuse into one (even 4 words combining is not unusual). The same thing can be written in a dozen different ways. This isn't a big issue if you're reading or listening. It won't confuse you. But the moment you start applying formal rules like in a computer, it's a dozen different ways to type it wrong! I like my script for anything other than programming. It's very expressive. But the anemic simplicity of the Latin script is actually a big advantage when it comes to things like programming and mathematics. I believe that you will find many such peculiarities and nuances with other scripts if you go searching.
Writing programmes in Malayalam is something I've always wanted to do. I know that programming is primarily the language of mathematics, and it's just expressed in English. However, I've felt that seeing it in Malayalam would help in understanding things a bit more easily. At the very least, the documentation would be easier to read. There's no need to use Malayalam script for writing the programme; writing it in Manglish using Latin script would suffice. Only the description needs to be in Malayalam. That way, the problem of changing keyboards would be solved.
Best of luck with your projects. May god bless you all.
Portuguese is a direct descendant of Latin. But it has quite a bit of punctuation, OP just ignored that as the programming language, C, does not support it. In Common Lisp you can happily go:
(when verificação (print “pessoa é maior de idade”))
You could even go all the way: (defmacro quando (cond corpo) ‘(when ,cond ,@corpo)
(defun imprime (x) (print x))
; now we can do this
(quando verificação (imprime “pessoa é maior de idade”))I have a single key shortcut to switch between them.
Accents work as if I was using a native keyboard, so they're not too bad (unless you're on mobile, there it sucks), except the keys do not show the right symbols. If you don't know the mappings by heart, you can get your OS to show you the layout... maybe leave that on the side and look up when you forget something.
Now when syntax highlighting is everywhere language separation doesn't give much benefit.
There is nothing mandating you have to write things in English. It’s often but not always the de facto common languages between foreigners but it’s just a language.
If you read the code of Chinese projects, it’s very often in Chinese for exemple. They don’t really care about English speakers.