Okay, ich habe es jetzt folgendermaßen implementiert...
Ausgangspunkt ist eine Seitenhierarchie wie diese:
en (versteckt)
|-- Welcome
|-- English page 2
de (versteckt)
|-- Willkommen
|-- Deutsche Seite 2
...usw.
Erster wichtiger Hinweis: SM2 (show_menu2) kommt nicht damit klar, wenn die Seiten auf der untersten Ebene versteckt sind. Das Menü ist dann leer. Die Menüfunktionen in BC 1.2 sollten damit klarkommen, das verifiziere ich noch.
Gibt der Besucher nun explizit eine Sprache an - etwa indem er eine über das Flaggensymbol verknüpfte Seite aufruft -, wechselt er den Sprachkontext. Die gewählte Sprache wird in der Session gespeichert. Anders gesagt, das passiert immer dann, wenn auf irgendeine Weise der Parameter
lang=XY übergeben wird (das kann ein Link sein oder auch ein Formular).
Zweiter wichtiger Hinweis: Der Wechsel in eine andere Sprache ist nur möglich, wenn es auch wirklich Seiten in dieser Sprache gibt. Existieren keine, bleibt die global eingestellte Standardsprache die aktuelle Sprache. Ansonsten würde der Besucher in einer Sackgasse landen.
Gelangt selbiger Besucher nun auf eine Seite in einer anderen Sprache, OHNE dass der Parameter
lang=XY übergeben wird - etwa über einen "internen Link" wie er in einer WYSIWYG-Sektion eingetragen wird -, bekommt er brav die Seite in der "falschen" Sprache angezeigt (keine Fehlermeldung mehr),
er wechselt aber nicht den Kontext. Das heißt, seine eingestellte Sprache bleibt seine eingestellte Sprache.
Er behält also auch das Menü passend zu seiner Sprache.
Möchte man mit einem internen Link explizit den Sprachkontext ändern, muß man (derzeit _manuell_) den Parameter
lang=XY anhängen.
Ich denke, das ist die sinnvollste Umsetzung.
Letzter wichtiger Hinweis: Gibt es zu einer Seite keine verknüpfte Seite, wird künftig dennoch das Flaggensymbol angezeigt. Statt der verknüpften Seite wird aber auf die "Standardseite" der jeweiligen Sprache verlinkt, also üblicherweise die erste sichtbare Seite im Baum. Auf diese Weise kann der Besucher immer den Kontext wechseln, auch wenn er sich auf einer Seite befindet, zu der es für seine Sprache keine Übersetzung gibt.
Das dürft Ihr dann im Betatest ausgiebig testen.