Ich bin auch über die Problematik der Sprachumstellung gestolpert.
Gefunden habe ich in conlib/session.inc die Variable: var $allowcache = "no"; ## "passive", "no", "private" or "public"
Sie steuert welche Werte für Cache-Control im Header übergeben werden.
Bei mir war als Standard "no" eingetragen, was dazu führt das der Proxy/Browser jedesmal alle Elemente der Seite neu angefordert hat. Die Seite war dementsprechend langsam.
Falls man aber eine andere Einstellung verwendet, die das cachen der Seite erlaubt, so kommt es zu den besagten Problemen bei der Sprachauswahl. Der Grund : nach der Umstellung z.B. von Deutsch auf English mit changelang hat der nächste Link dann normalerweise wieder das Format ".../front_content.php?idcat=4".
Der Proxy sagt: "Prima die URL habe ich im Cache" und liefert dann wieder die Seite in Deutsch aus dem Cache anstatt die Seite in Englisch neu vom Webserver zu holen.
Ich bin gerade dabei, die verschiedenen Möglichkeiten auszuprobieren. Wenn ich neue Infos habe, werde ich es hier reinsetzen.