Hallo,
Haben wir einen URL-Parameter "lang" mit einer Sprachangabe, die wir unterstützen?
Ja: Sprache übernehmen und in Session speichern
Nein: Existiert ein Eintrag "lang" in der Session?
Ja: Sprache aus Session übernehmen
Nein: Wünscht sich der Client im Accept-Language-Header eine Sprache, die
wir unterstützen?
Ja: Sprache aus Header übernehmen
Nein: Festgelegte Default-Sprachvariante nehmen
Hier sehe ich eine Problematik, wenn verschiedene Seiten (PHP-Programme) unterschiedliche Sprachen anbieten. Etwa, wenn ein Projekt 5-sprachig, zusätzliche Seiten aber 6-sprachig sind. Die 6. Sprache sei spanisch.
Der Spanier ruft eine beliebige Seite über Google auf, die NICHT spanisch enthält. Nach deinem Entscheidungsbaum wird dann die Default-Sprache festgelegt, also deutsch.
Nun wechselt er auf eine Seite, die "es" zur Verfügung hätte, er wird aber weiterhin deutsch bedient.
Ich reiche die ursprüngliche Sprache immer weiter als GET- oder POST-Parameter (habe keine Sessions). Sie kann jederzeit durch manuelle Wahl geändert werden und wird dann weitergereicht. Ansonsten kann ich dein Beispiel nachvollziehen.
Eine "Default"-Sprache brauche ich nur, wenn jemand sprachlos daherkommt wie etwa die Suchmaschinen. Die werden dann auf deutsch (bei .de Domains) oder english (bei .eu oder .org) bedient.