Rolf B: Frage zum Wiki-Artikel „language“

Beitrag lesen

problematische Seite

Hallo KateTe,

vielleicht verstehe ich dein Problem ja nicht, aber…

das Attribut navigator.language sollte genau eine Sprache enthalten. Ich habe gerade mein Chrome auf UI-Sprache englisch gestellt (Browser-UI), aber die Sprachpräferenz auf Deutsch gelegt. Daraufhin liefert mir google ein deutsches UI, mit lang="de" im <html> Element, und navigator.language ist "de-DE".

Was im Accept-Language Header steht, ist - mutmaßlich - von navigator.languages abgeleitet. Woher die Gewichte kommen, ist Sache des Browsers. Mein Chrome hat 4 Sprachen in languages (de-DE, de, en-US, en) und gibt denen jeweils 0.1 weniger Gewicht.

Die UI-Sprache des Browsers ist eine ganz andere Sache. Ich kann Chrome sagen, er soll mir sein UI in deutsch anzeigen (das Browser-UI), aber trotzdem Englisch an Stelle 1 haben.

Der Accept-Language Header sollte vom Server ausgewertet werden, um eine Sprache für die gelieferte Seite auszuwählen. Welche das ist, soll der Server im lang-Attribut des html-Elements vermerken. Das hat dann Einfluss auf sprachspezifische Eigenheiten der Darstellung (Rechtschreibprüfung, Silbentrennung, etc). Ein JavaScript kann das auch abfragen, und sich daran orientieren.

Heißt also: je nach dem, ob wir vom Server oder vom Browser reden, stellen sich unterschiedliche Fragen. Der Server muss an Hand von Accept-Language entscheiden, welche der möglichen Sprachen er ausgeben soll. Und ein JavaScript im Browser muss prüfen, was der Server denn nun wirklich geliefert hat. Dazu kann es das lang-Attribut im html Element verwenden, oder navigator.language. Was passiert, wenn der Server ein lang-Attribut liefert, für das im Browser keine Sprache angegeben ist, musst Du ausprobieren.

Rolf

--
sumpsi - posui - clusi