Lassen Sie die Clients den standardisierten Accept-Language
Header in Anforderungen senden , lokalisieren Sie ihn dann auf dem Server und fügen Sie einen Content-Language
Header in die Antworten ein. Weitere Informationen finden Sie in RFC 7231, Abschnitt 5.3.5 .
Die Lokalisierung auf der Serverseite führt zu weniger Roundtrips und Bandbreitenverbrauch als das Senden von Client-Lokalisierungsmetadaten. Ein Server kann jedoch nicht davon ausgehen, welche Sprache ein Client wünscht. Was ist, wenn dieser Client ein Proxy ist, der diese Sprache für einen anderen Benutzer bereitstellt? Was ist, wenn zwischen Client und Server eine Caching-Ebene besteht? Wie soll ein Server "nur herausfinden", welche Sprache für eine beliebige Anfrage verwendet werden soll?
Der Versuch, diese Fragen zu beantworten, ist kompliziert. Erfordern Sie stattdessen, dass die Anforderungen selbsterklärend sind und den Standardheader verwenden, damit die Kunden die gewünschte Sprache aushandeln können . Das nennt man Inhaltsverhandlung. Der Accept-Language
Header ist eine Form der proaktiven Inhaltsaushandlung, bei der ein Client einem Server die Einstellungen mitteilt und der Server anhand dieser Einstellungen entscheidet, mit welchen Einstellungen er reagiert. Bei der reaktiven Inhaltsverhandlung sendet ein Client eine Anfrage an den Server, in der er fragt, welche Art von Inhalt vorhanden ist, erhält normalerweise eine Antwort mit einer Liste von Links und wählt dann den gewünschten Link aus, indem er einen Link auswählt, dem er folgt.
Es ist eine Frage des persönlichen Geschmacks, aber wenn Sie Dinge clientseitig tun, sparen Sie Serverlast (vorausgesetzt, statische oder zwischengespeicherte Wörterbücher) und können sprachunabhängige Tools zum Testen des Dienstes verwenden.
quelle