$q_config['language_name']['de'] is the variable in use, but its value is stored in your database, and can be changed on the edit specific language configuration page. Values from file are in use for initial configuration only. On a side note, yes, they should not be loaded on each request, it is one of the performance issues, which will be fixed one day.
However, to show language names in each language, we need to gather this information from translators, which has never been done, although it might be a good idea. We will also need to provide the ability to input each language name in all other languages on language configuration page, which is possible, just takes some work.
I guess, the original idea was that if anyone knows one of the languages listed, then it would not be a problem for such a user to understand where to click, otherwise there is no point to click anyway.
I guess, this qualifies as a new feature request, and we will keep it on the list, but it will probably have a low priority, unless some other people start complaining a lot.
If you understand PHP code, you are more than welcome to implement these options and submit pull request on GitHub.
thanks for your detailed explanation, helped a lot to understand how this is working. So this is apparently not as trivial to solve as I was hoping. I understand the original idea and that was the first thing I thought myself when looking at it and wondering why this is showing in the translated language instead of the one I’m looking at. If I can’t make any sense out of the language label, I probably won’t understand whats translated anyway. From the context, I can deduct that this must be some different language that I’m looking at, if I understand it or not.
In the case where there are several translations, it gets more obvious to the visitor what’s going on, but in a lot of cases, there will be just two languages and someone looking at it might just think: Why is that suddenly in a different language? Is that an error?
So an option to choose in which language the language should be shown would just give an implementer the possibility to adapt perfectly to his/her use case.
Anyway, it really is a minor annoyance and totally ok as a feature request with (very) low priority. I just wanted to mention it because it made me wonder as to why it is the way it is and I thought it might be helpful to someone else if I raise the question here.
I’m no programer, so unfortunately I can’t help with an actual solution, but I hope just discussing such questions might be beneficial as well.