- Spracherkennung auf IP-Basis ist eine Funktion, die auf einer falschen Annahme beruht
- IP-Adressen verraten nur den Standort, spiegeln aber nicht die tatsächlichen Sprachpräferenzen der Nutzer wider
- Der Accept-Language-Header übermittelt Informationen zu Sprachpräferenzen präzise
- Die UI-Sprache sollte auf Basis eines vertrauenswürdigen Signals, nämlich des Browser-Headers, festgelegt werden
- Das wichtigste Prinzip ist, die Sprachwahl der Nutzer und ihre Erfahrung zu respektieren
Die Grenzen der per IP vermuteten Spracheinstellung
- Die Sprache anhand von IP-Geolokalisierung (GeoIP) zu bestimmen, beruht noch immer auf einer falschen Annahme
- Eine IP-Adresse liefert lediglich Informationen über den Ort der Anfrage
- Sie zeigt nicht, welche Sprache Nutzer tatsächlich bevorzugen oder verstehen
- In vielen Situationen scheitert dieser Ansatz regelmäßig, etwa bei VPNs, Auslandsreisen, Wohnsitz im Ausland oder in Ländern mit mehreren Amtssprachen
- Das ist nicht klug, sondern verursacht Unannehmlichkeiten und Verwirrung
Die Diskrepanz zwischen der Zahl offizieller Sprachen und der Realität
- Länder- und IP-Informationen lassen sich nicht 1:1 auf eine Sprache abbilden
- Belgien hat 3, die Schweiz 4, Indien 22 und Kanada offiziell 2 Amtssprachen; tatsächlich sind es alles mehrsprachige Länder
- Nutzer können dort leben, das Land besuchen oder ihr Traffic wird zufällig über dieses Land geroutet
- Allein auf Basis der Landesinformation eine einzige UI-Sprache zu erzwingen ist falsch
Ein Beispiel für schlechtes Engineering
- Sich auf falsche Daten zu verlassen, ist eine faule Art zu entwickeln
- Die Ausrede „Große Websites machen das auch so“ ist nicht stichhaltig
- Wenn man es nicht korrekt umsetzen kann, ist es besser, lieber gar nichts zu tun
Der Wert des Accept-Language-Headers
- Viele Nutzer machen die unangenehme Erfahrung, dass ihnen wegen VPN-Nutzung usw. plötzlich eine andere Sprache aufgezwungen wird
- Jeder Browser sendet einen Accept-Language-Header
- Die Sprachpräferenzen werden anhand der Betriebssystem- oder Browser-Einstellungen festgelegt
- Wenn Nutzer möchten, können sie diesen Wert selbst setzen oder ändern
- Beispiel:
Accept-Language: en-US,en;q=0.9,de;q=0.8
- Dieser Header ist präzise, kostenlos und bereits eingebaut; es braucht weder Lizenzen noch zusätzlichen Wartungsaufwand
So funktioniert korrekte Sprachbehandlung
- Wie bei Bildschirmauflösung oder Farben sollte auch bei Sprache die Umgebung der Nutzer respektiert werden
- Häufig werden dadurch absurde Sprachzuweisungen erzeugt: Englisch für englischsprachige Nutzer in Frankreich, Niederländisch für französischsprachige Nutzer in Brüssel oder Chinesisch für Nutzer mit Hongkong-VPN
- Das führt zu Beschwerden, Abwanderung und verzweifelten Versuchen, sich nach der UI-Navigation irgendwie zu behelfen
- Solche Fehler entstehen, weil unzuverlässige IP-Daten als Grundlage für Sprachentscheidungen verwendet werden
Praktische Lösung
- Accept-Language auslesen
- Diesen Wert respektieren
- Nutzern auf Wunsch erlauben, die Sprache selbst zu ändern (optional in Cookies oder URL-Parametern speichern)
- GeoIP-Informationen nur für Währung, Versand und rechtliche Aspekte verwenden und nicht für Sprache
Fazit
- Bei Software für Menschen sollte man Nutzerpräferenzen nicht erraten
- Entweder korrekt implementieren oder besser gar keine automatische Sprachzuweisung anbieten
1 Kommentare
Hacker-News-Kommentare
Ich finde Websites, die den
Accept-Language-Header ignorieren, wirklich extrem nervig. Mehrsprachige Websites übersetzen oft sogar den Sprachumschalter oder die Sprachliste in die aktuelle Sprache, was nur Verwirrung stiftet; in diesem Punkt halte ich Wikipedia für das Standardbeispiel. Wikipedia verwendet ein klares mehrsprachiges Symbol, eine Liste, in der jede Sprache in ihrer eigenen Sprache angezeigt wird, und zeigt ganz oben empfohlene Sprachen an. Man sollte nicht versuchen, die Sprache im Voraus zu erraten. So wie Wikipedia es macht, hilft es.Ich hasse es, wenn ich über eine Suchmaschine auf die gewünschte Seite gehe und plötzlich ein modales Popup erscheint, das mich auffordert, ein Land auszuwählen, und mich nach der Auswahl dann zwangsweise auf die Startseite der regionalen Website weiterleitet. Manche Websites haben einen Schließen-Button (X), viele aber nicht, und das ist unglaublich lästig.
Die Sprachliste von Wikipedia scheint nicht unbedingt streng „alphabetisch“ sortiert zu sein. Manchmal stehen zum Beispiel empfohlene Sprachen wie „中文“ oder „Italiano“ oben, und der Rest wirkt nach Geografie oder Schriftsystem gruppiert. Auch wenn es nicht die echte alphabetische Reihenfolge der jeweiligen Sprache ist, lokalisiert Wikipedia insgesamt sehr gut. Der wichtige Punkt ist, dass das Konzept einer „korrekten“ alphabetischen Sortierung komplex ist, wenn Sprachnamen in der jeweiligen Sprache angezeigt werden.
Wikipedia merkt sich die vom Nutzer zuvor gewählte Sprache und zeigt sie ganz oben an. Das ist eine echte User Experience.
Ich hatte schon den Fall, dass die YouTube-App plötzlich auf Amharisch umgestellt wurde. In den Google-Supportdokumenten wird dann zwar erklärt, welcher Button „English“ ist, aber wenn man Amharisch nicht lesen kann, ist diese Anleitung völlig nutzlos. Auch die iPhone-Übersetzungs-App konnte die Sprache nicht erkennen. Hätte es einfach ein universelles Mehrsprachen-Symbol gegeben, wäre das leicht zu lösen gewesen.
Ironischerweise verwendet auch der Universal Language Selector (U.S.L) am Ende hauptsächlich länderbezogene Informationen auf Basis der IP des Nutzers, um empfohlene Sprachen zu bestimmen. Das ist oft ungenau. Laut der FAQ von U.S.L wird zunächst anhand der IP das Herkunftsland bestimmt und daraus werden dann die wichtigsten Sprachkandidaten empfohlen.
Ich mag keine Designs, die davon ausgehen, dass alle nur eine einzige Sprache verwenden. Ich kann in vier Sprachen gut genug lesen und bevorzuge normalerweise das Original statt einer Übersetzung. Sprachvorhersagen auf Basis der IP liegen sehr oft falsch. Ich habe meine unterstützten Sprachen bereits eingestellt, also sollte das respektiert werden. Bei YouTube ist AI-Dubbing standardmäßig aktiv, sodass ich es oft erst halb anhören, dann zurückgehen und wieder ausschalten muss. Es kostet nicht viel Zeit, ist aber wirklich nervig.
YouTube-AI-Dubbing ist qualitativ wirklich furchtbar. Ich habe erst nach fünf Minuten mühsam gemerkt, dass die Stimme im Video eigentlich die synchronisierte Tonspur war. Ich hasse es auch, wenn der Videotitel übersetzt wird. Ich schaue ein Video, in dem Englisch gesprochen wird, aber der Titel steht in irgendeiner anderen Sprache.
Selbst wenn ich bei Google Spanisch als bevorzugte Sprache einstelle, übersetzt YouTube trotzdem alles automatisch ins Englische. Ich möchte Inhalte im Original sehen, um mein Spanisch zu verbessern, aber YouTube macht das unnötig schwierig.
Die Funktion von YouTube, Videotitel automatisch in meine eingestellte Sprache zu übersetzen, ist wirklich extrem nervig. Ich verstehe Englisch, also brauche ich diese Übersetzung überhaupt nicht.
Wenn ein Text in einer Sprache ist, die ich nicht verstehe, dann ist das Video wahrscheinlich ohnehin nicht für mich gedacht. Die meisten international gedachten Videos sind auf Englisch verfügbar, also hätte der ursprüngliche Autor es vermutlich selbst übersetzt, wenn er das gewollt hätte. Außerdem fehlt bei Videotiteln oft der Kontext, sodass sie sich sowieso nicht korrekt übersetzen lassen. Früher gab es einmal ein portugiesisches Video mit dem Titel „Vamos assistir uma conexão com o passado“, das in Wirklichkeit „Let's play A Link to the Past“ bedeutete; um den englischen Titel zu erraten, musste ich ihn erst zurückübersetzen. So eine Funktion kann zwar die Zugänglichkeit verbessern, aber man sollte sie zumindest deaktivieren können.
Der YouTube-Algorithmus scheint die Nutzung solcher Funktionen zu fördern und sie eventuell im Namen der Barrierefreiheit zu belohnen, aber ich ziehe englische Titel eindeutig hässlich maschinell übersetzten norwegischen Titeln vor. Nach meiner Erfahrung setze ich einen Kanal, wenn solche maschinell übersetzten Titel auftauchen, eher auf „nicht empfehlen“.
Mein Computer ist deutsch, aber auf Englisch eingestellt. Trotzdem spielt YouTube mir maschinell übersetzte Stimmen vor oder übersetzt deutsche Videos/Werbung merkwürdig ins Englische. Oft ist das wirklich seltsam und unbeholfen.
Das Problem betrifft nicht nur Titel, sondern auch Audiospuren. Wenn ein YouTuber, den ich häufig sehe, von Fans erstellte Audiospuren in mehreren Sprachen anbietet, muss ich immer wieder selbst zurück auf das Original umstellen. Durch maschinelle Übersetzung gehen Wortspiele oder kulturelle Anspielungen oft verloren. Manchmal muss man zum Wechseln der Sprachspur sogar zum Anfang des Videos zurück, und Konflikte mit Browser-Erweiterungen kommen noch dazu. Ich hätte gern ein Interface, bei dem solche Übersetzungen nicht Standard sind, sondern frei ein- und ausgeschaltet werden können.
Inzwischen werden auch bei Google, Kagi und anderen Reddit-Suchergebnisse übersetzt angezeigt. Ich dachte, die Antwort, die ich suchte, sei in meiner Sprache geschrieben worden, dabei war es in Wirklichkeit ein maschinell übersetzter englischer Beitrag.
Vor allem aber sollte man automatische Übersetzung niemals als Standard setzen. Es reicht völlig, die Liste der tatsächlich verfügbaren Übersetzungen klar anzuzeigen. Einen Übersetzen-Button gibt es im Browser ohnehin schon, also kann der Nutzer ihn selbst verwenden. Englisch ist weder meine erste noch meine zweite Sprache, aber ich kann es gut genug lesen. Ich möchte mir nicht erst durch einen Haufen automatischer Übersetzungen einen Button suchen müssen, um den englischen Originaltext zu finden. In anderen Locales kommt so etwas viel seltener vor; dieses Problem scheint besonders häufig Englisch zu betreffen. Wenn man maschinelle Übersetzung einsetzen will, sollte man sie wenigstens einmal selbst ausprobieren und prüfen, ob Absicht und Ergebnis überhaupt zusammenpassen.
Reddit zeigt Inhalte automatisch auf Französisch übersetzt an, aber der typische Reddit-Stil ist selbst mit menschlicher Übersetzung kaum gut übertragbar. Selbst wenn man gar kein Englisch kann, lohnt sich das Lesen solcher automatischen Übersetzungen kaum. Die Originalansicht oder die Sprachumschaltung ist je nach Gerät oder App außerdem schwer zu finden, und zusätzlich versucht Reddit ständig, einen zur Installation der App zu bewegen.
Maschinelle Übersetzung ist seit einigen Jahren wirklich deutlich besser geworden und inzwischen auf einem Niveau, bei dem selbst Muttersprachler manchmal nicht mehr merken, dass es eine Übersetzung ist.
Am unangenehmsten finde ich Google. Google weiß, wer ich bin, ob ich reise und welche Sprache ich bevorzuge (Englisch), und zeigt mir auf manchen Seiten trotzdem die Sprache auf Basis meiner Region an. So wie Google meine Daten zum Tracking nutzt, sollte es sie auch stärker zur Verbesserung der User Experience einsetzen.
Ich nutze Katalanisch, aber Spanisch war weder je in meinem Google-Konto noch als System- oder Browsersprache eingetragen, und trotzdem wird mir immer Spanisch aufgezwungen. Obwohl ich in den USA lebe, zeigt Google bei Suchen zu katalanischen Themen zuerst die spanische Wikipedia an. Dieses Verhalten von Suchmaschinen war schon immer schlecht. Es ist problematisch für Menschen wie meine Kinder, die kein Spanisch können, und auch für katalanischsprachige Regionen außerhalb Spaniens. Besonders Google Gemini betrachtet katalanische Inhalte als gefährlich und blockiert Gespräche darüber. Früher war Google bei Vielfalt wirklich sensibel, heute nicht mehr.
In letzter Zeit zeigt Google zum Beispiel bei Maps-Bewertungen die lokale Sprache einfach unverändert an, statt sie ins Englische zu übersetzen. Vermutlich geht Google davon aus, dass ich die Sprache des Landes kenne, wenn ich mich dort längere Zeit aufhalte, aber oft brauche ich genau dann Englisch, wenn ich sie eben nicht kann. Dasselbe gilt für Suchergebnisse. Nur weil man nach Informationen über eine Region sucht, heißt das nicht, dass man die lokale Sprache benutzt; Google bildet solche Nutzungsmuster nicht gut ab.
Ich habe diese Debatte sogar direkt mit einem Google-Entwickler geführt. Er sagte, Google könne auf der Hauptseite wegen eines doppelten Rendering-Prozesses die Nutzerdaten noch nicht verwenden und deshalb Sprachpräferenzen nicht berücksichtigen, aber das ergibt für mich keinen Sinn, weil der
Accept-Language-Header schon in der ersten Anfrage enthalten ist.Google weiß, dass ich in Großbritannien lebe und Englisch spreche. Wenn ich mich aber am Fernseher eines spanischen Hotels anmelde und englische YouTube-Videos anschaue, bekomme ich spanische Werbung. Es fühlt sich an, als würde Google das für Werbekunden absichtlich so machen, obwohl es weiß, dass ich die Sprache nicht verstehe.
Auf jedem neuen Gerät oder in jedem neuen Browser starten Google und seine Dienste bei mir auf Hebräisch. Ich habe es immer wieder auf Englisch umgestellt, aber ich muss es jedes Mal erneut tun, und obwohl ich es lesen kann, ist Englisch für mich die praktischere Universalsprache.
Alle Browser senden den
Accept-Language-Header, um die bevorzugten Sprachen des Nutzers mitzuteilen, und wenn es jemanden interessiert, kann er ihn auch selbst anpassen. AberAccept-Languagelöst nicht alles, weil die meisten mehrsprachigen Nutzer keine absolute Rangfolge von Sprachen haben, sondern Präferenzen je nach Thema. Man kann zum Beispiel fließend Französisch sprechen und trotzdem keine französische Übersetzung englischer Nachrichten wollen. Website-Betreiber sollten keine erzwungen komplizierten Funktionen bauen, sondern einfach eine klare und schnelle Oberfläche zum Sprachwechsel anbieten. Wikipedia macht das gut.Tatsächlich ist wichtiger als Features wie
Accept-Language, dass man keine halbgare automatische Übersetzung anbietet, sondern hochwertige Übersetzungen. Für die UI und eigene Inhalte sollte man offizielle Übersetzungen pflegen; nutzergenerierte Inhalte sollten dagegen niemals standardmäßig automatisch übersetzt werden, sondern nur optional über Browser-Übersetzung oder ähnliche Buttons sichtbar sein. Ich würde empfehlen,Accept-Languagefür die Vorauswahl zu nutzen und zusätzlich eine klare Sprachumschaltung anzubieten. Bei Wikipedia ist jede Sprachversion strukturell eine eigene Website, auf der Inhalte separat neu geschrieben werden.Accept-Languagekann auch Gewichtungen je Sprache (q value) festlegen. Websites sollten Nutzern erlauben, die vom Browser angefragte Sprache zu überschreiben, und Browser sollten pro Website Optionen wie „Website-Standard“, „Systemsprache“ oder „Englisch anfordern“ anbieten. Am besten wäre es, wenn Websites die unterstützten Sprachen klar etwa in einermanifest.jsonveröffentlichen und die Sprachwahl clientseitig behandeln würden.Die Annahme, dass Nutzer
Accept-Languagerealistisch auf die für sie bequemste Sprache einstellen, ist schwach. Die meisten Websites unterstützenAccept-Languageohnehin nicht ordentlich, daher ist es unwahrscheinlich, dass Nutzer bei dieser Einstellung eine große Strategie verfolgen.Bei einer Regierungswebsite habe ich für Mehrsprachigkeit und Barrierefreiheit ein Standardsystem entwickelt, das die Sprache per
Accept-Languageauswählt. Dann hat der PM diese Entscheidung ignoriert und einfach EN (Englisch) als festen Standard gesetzt. Der Accessibility-Auditor verlangte, dassAccept-Languageverwendet werden müsse, und als er merkte, dass die implementierte Lösung wieder zurückgedreht worden war, kritisierte er das deutlich. Am Ende hat mir so ein absurder Vorgang immerhin noch ein paar Wochen zusätzliche Vertragsarbeit eingebracht.Ich möchte auch meine eigene Sprachfrustration ansprechen. In meiner Familie gibt es jemanden, der nur Japanisch spricht. Mein Apple-Konto hat als Land Finland. Ich wollte mit der Familie The Martian schauen, aber weil nur die im Kontoland unterstützten Sprachen als Audiospuren angezeigt werden, konnte ich die japanische Synchronfassung nicht auswählen. Das Kontoland kann man nicht ändern, solange ein aktives Apple-TV-Abo besteht. Am Ende konnten wir den Film nicht gemeinsam sehen.
Vermutlich liegt das an regionalen Lizenzfragen. Wahrscheinlich ist die Synchronfassung in dieser Sprache nicht für die Nutzung in Finland lizenziert.
Bei Netflix gab es etwas Ähnliches. In Finland konnte man Kim's Convenience nur sehen, wenn die Kontosprache auf Englisch eingestellt war. Selbst wenn man englische Untertitel verwendet, ist der Zugriff auf diesen Inhalt in der finnischen UI nicht möglich.
Ich habe selbst einmal ein System gebaut, das auf Basis von
Accept-Languagedie am nächsten liegende Übersetzung für eine bessere Zugänglichkeit bereitstellt. Wenn etwa Portugiesisch (Portugal) nicht vorhanden war, wurde automatisch brasilianisches Portugiesisch geliefert. Technisch funktionierte das gut und die Umsetzung machte Spaß, aber in der Praxis wollten die meisten Nutzer unabhängig vonAccept-Languageeinfach Englisch, und die Sprachoption im Footer war nicht sichtbar genug. Deshalb frage ich Nutzer inzwischen direkt nach der Sprache, und die Zufriedenheit ist deutlich gestiegen.Bedeutet „direkt fragen“, dass jedes Mal, wenn man die Website ohne gespeichertes Cookie besucht, zwangsläufig ein Popup zur Sprachauswahl erscheint? Solche Popups sind inkonsistent, und man ist schon dankbar, wenn es wenigstens ein X zum Schließen gibt. In 95 von 100 Fällen reicht mir die Sprache der Seite, auf die ich geklickt habe; wenn nötig, genügt eine Sprachauswahl oben rechts oder im Footer völlig. Ich hätte lieber keine Popups oder Modals.
Es wäre besser,
Accept-Languageals Standard zu verwenden und dem Nutzer zusätzlich Wahlmöglichkeiten zu geben. Ich bin zwar dafür, im Sprachumschalter auf Symbole zu verzichten, finde es aber schade, wenn mehrere Regionen unter einer einzigen Sprache zusammengefasst werden.Die meisten Nutzer lassen einfach die Standardsprache des Betriebssystems so, wie sie ist, wissen gar nicht, wie man sie ändert, und haben sich daran gewöhnt.
Im Ausland ist dieses Problem besonders absurd, und sogar im eigenen Land unterscheiden sich lokalisierte Versionen von Programmierdokumentationen oft inhaltlich oder sind qualitativ schwächer übersetzt. Ideal wäre für mich meistens das englische Original. In letzter Zeit tauchen in Suchergebnissen immer mehr maschinell übersetzte Inhalte auf. Reddit hat dieses Modell ebenfalls kürzlich eingeführt. Wenn ich absichtlich nicht auf Englisch suche, dann weil ich Informationen finden möchte, die genau dieser Sprache eigen sind.
Das Reddit-Team scheint Funktionen gebaut zu haben, als ob nur Muttersprachler des jeweiligen Landes existierten. Weltweit verstehen Menschen mehrere Sprachen, also gibt es keinen Grund, das so zu machen.
Auch bei der MongoDB-Dokumentation hat mich die sprachbasierte automatische Umschaltung wütend gemacht. In den Suchergebnissen erscheint die Seite auf Englisch, aber sobald man sie öffnet, schaltet JavaScript auf brasilianisches Portugiesisch um. Wenn die Seite vollständig geladen ist, springt sie wieder auf Englisch zurück, aber die URL bleibt trotzdem
/pt-br/. Außerdem ist die Übersetzungsqualität offensichtlich automatisiert. Ich spreche Portugiesisch aus Portugal, daher fallen mir diese feinen Unterschiede noch stärker negativ auf.