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 : '';

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.


Anbieter: nmq​rstx-18­@yahoo.de, die Seite verwendet funktionsbedingt einen Session-Cookie und ist Bestandteil meines nach modernen Aspekten in Perl entwickelten Frameworks.