The parameter setlang should use [[Post/Redirect/Get]].
The "parameter" cannot use anything, since the user can type it in himself as well.
Redirect introduces latency, and the usual reasons (avoiding double forms submission) don't seem to apply here.
POST instead of GET for setlang
setlang changes a setting so it should use POST instead of GET.
A simple POST without redirect would also be possible. See patch.
But with a simple POST the problems described in [[Post/Redirect/Get]] still exist.
@Tgr ULS no longer uses setlang itself, so for that reason I consider this fixed. There are probably links with setlang sprinkled everywhere in many wikis, and we do not want to break them, so setlang itself is still recognized and supported.
I am not sure whether redirecting GET to POST and that back to GET is worth it. Do you have an opinion on that? If yes, can we use a new bug for that?