Content Negotiation, Language Negotiation

Grundlagen hierzu und die Lösung für das Framework

Ein Browser sendet beispielsweise diesen Header im Request:

Accept-Language: de,en-US;q=0.7,en;q=0.3

Zum Aushandeln der Sprache sind nur die ersten beiden Buchstaben vor dem Komma von Interesse, im Beispiel also de. Serverseitig setzt der Webserver eine Umgebungsvariable anhand des Request-Headers und zum Ermitteln der bevorzugten Sprache genüg ein einfacher regulärer Ausdruck:

my $lang =
    $ENV{HTTP_ACCEPT_LANGUAGE} =~ /^(\w+)/ ? $1 : '';

Ihr Browser möchte als Sprache: de

Aufgrunddessen, dass in meinem Framework jeder konfigurierte URL an eine Klasse gebunden ist, beschränkt sich das Aushandeln der Sprache für die Antwortseite auf einen Austausch der an den URL gebundenen Klasse. Genauer gesagt, wird für die vom Browser bevorzugte Sprache das Response-Objekt als Instanz einer der Sprache gleichnamigen Subklasse erstellt.

Beispielsweise sei im Default die Sprache de und die Klasse sei Foo, so wird das Response-Objekt als Instanz der Klasse Foo erstellt. Sofern vorhanden, wird zum Ausliefern einer englischen Antwort-Seite hingegen der URL an die Klasse Foo::en gebunden.


Die rein persönlichen Zwecken dienende Seite verwendet funktionsbedingt einen Session-Cookie. Datenschutzerklärung: Auf den für diese Domäne installierten Seiten werden grundsätzlich keine personenbezogenen Daten erhoben. Das Loggen der Zugriffe mit Ihrer Remote Adresse erfolgt beim Provider soweit das technisch erforderlich ist. @: Rolf Rost, Am Stadtgaben 27, 55276 Oppenheim, nmq​rstx-18­@yahoo.de