Oskar Welzl: Weblog zur Homepage

XHTML 2.0: Ersatz für @hreflang?

XHTML 2 sieht zwar weiterhin ein Attribut "hreflang" vor (so wie HTML 4.01 und XHTML), allerdings in einer völlig veränderten Bedeutung, die es eigentlich überflüssig macht. Die ursprüngliche Bedeutung wird sich über das META-Element wieder ausdrücken lassen. Ein vollwertiger Ersatz wird dies jedoch höchstwahrscheinlich nicht.

Schon 2003 ist mir im damals aktuellen Public Working Draft des W3C für XHTML 2 aufgefallen, daß das aus HTML 4.01 und XHTML 1.0 bekannte hreflang-Attribut fehlte. Obwohl selten benutzt, hatte es doch einigen Charme: Man konnte als Autor von HTML-Dokumenten auf ein externes Dokument verweisen und dem Leser gleichzeitig die Information mitgeben, in welcher Sprache dieses externe Dokument verfaßt war.

Beispiel: Auf einer deutschsprachigen Homepage verweise ich auf eine türkische Seite. Mit dem Zusatz hreflang="tr" kann ich diesen Link als türkischsprachig markieren. Sofern diese Meta-Information dem Leser vom Browser (oder durch ein Stylesheet, Script ...) in irgendeiner Weise angezeigt wird, spart er sich den Klick und die Wartezeit, sofern er nicht türkisch spricht. Nicht lebensnotwendig, aber praktisch.

In XHTML 2 war dieses Attribut zunächst nicht mehr vorgesehen, rutschte dann aber - vielleicht auch aufgrund der relativ umfangreichen Diskussion nach meiner Anfrage in der Mailing-List - wieder hinein. Leider mit einer völlig veränderten Bedeutung, die mit der ursprünglichen Intention als Meta-Information gar nichts mehr zu tun hat. Ein Auszug aus dem aktuellen Public Working Draft:
The user agent must use this list as the field value of the accept-language request header when requesting the resource using HTTP.
Im Klartext: Das Attribut ist keine Meta-Information mehr. Es beeinflußt nun, welches von mehreren verfügbaren Zieldokumenten der Browser anfordern soll.

Beispiel: http://members.aon.at/neumair steht in 2 Sprachversionen zur Verfügung. Wenn der Leser die Seite mit einem auf Deutsch eingestellten Browser aufruft, erhält er das deutsche Dokument, ansonsten das englische. (In Wahrheit stehen dahinter 2 Seiten, .../neumair/index_de.htm und .../neumair/index_en.htm - der Webserver entscheidet, welche der beiden Seiten ausgeliefert wird.) Wenn ich nun in Zukunft mit XHTML 2.0 von meiner Website auf http://members.aon.at/neumair/ verlinke, kann ich die Browser meiner Leser durch die Angabe von hreflang="en" zwingen, die englische Version zu holen - auch dann, wenn der Leser seinen Browser auf "Deutsch" eingestellt hat. Das mag insofern brauchbar erscheinen, als man damit gezielt auf die einzelnen Versionen verlinken kann. In Wahrheit ist es selbstverständlich überflüssig:

Die Angabe
href="http://members.aon.at/neumair/" hreflang="en"
ist absolut gleichbedeutend mit
href="http://members.aon.at/neumair/index_en.htm"

Kurz gefaßt: Das Attribut hreflang hat seine ursprüngliche Bedeutung als Meta-Info verloren, der Sinn seiner neuen Bedeutung erschließt sich mir zumindest auf den ersten Blick nicht.

Nun scheint es aber so, als ob die alte Bedeutung von hreflang in XHTML 2 zumindest auf Umwegen wieder Einzug gehalten hätte:

Die Meta-Informationen sind der Schlüssel. Was in HTML 4.01 und XHTML 1.0 noch sehr einfach mit

<a href="http://members.aon.at/neumair/index_de.htm" hreflang="de">... </a>

auszudrücken war, ist nach dem aktuellen Entwurf in XHTML 2 zwar komplizierter, aber möglich:

<meta about="http://members.aon.at/neumair/index_de.htm" property="dc:language" content="de"/ >
<a href="http://members.aon.at/neumair/index_de.htm">... </a>


Die Art der Notation ist umständlich und im Vergleich zur jetzigen Handhabung wenig elegant, die Bedeutung jedoch die gleiche. Gleichwertig sind die beiden Varianten dennoch nicht: Mit HTML 4.01 bzw. XHTML 1 ist es einfach, CSS-Formatierungen an den Inhalt eines hreflang-Attributes zu knüpfen und so zB vor/nach jedem Link den Sprachencode oder ein Flaggensymbol einzufügen. Dieser Mechanismus läßt sich mit dem Meta-Element aus XHTML 2.0 nicht umsetzen. Die Information bleibt also im Dokument erhalten, wird aber de facto nicht mehr darstellbar.