Kennzeichnung von Text mit keiner Sprache

Zielgruppe: HTML- und XML-Entwickler (die Editoren oder Scripte verwenden), Script-Entwickler (PHP, JSP u.a.), Schema-Entwickler (DTDs, XML Schema, RelaxNG u.a.), und alle, die wissen möchten, wie man Inhalte mit Sprachinformation auszeichnet, wenn keine Sprache zutrifft

Übersetzung aktualisiert am

Frage

Was für Markup sollte ich zur Sprachkennzeichnung von Inhalten in HTML oder XML verwenden, wenn ich die Sprache nicht kenne oder der Inhalt nicht linguistisch ist?

Man sollte immer die natürliche Sprache des Textes (sofern bekannt) in HTML oder einem XML-basierten Format angeben, damit Anwendungen wie Sprachbrowser, Stylesheets usw. den Text bestmöglich verarbeiten können. In XML-basierten Formaten verwendet man dazu das xml:lang-Attribut und in HTML das lang-Attribut. (Siehe Umgang mit Sprachangaben in HTML zu Details der Sprachkennzeichnung in HTML.)

Angenommen, man hat Text, der in keiner Sprache ist, wie bspw. Blindtexte, Artikelnummern, bildliche Darstellungen von Zahlendaten usw. Wie würde man sagen, dass dieser in keiner bestimmten Sprache ist? Und wie in dem Fall, wenn man Text aus einer Datenbank holt und keine Sprachinformation zu diesem vorliegt?

Antwort

Die obige Frage hat zwei Aspekte: Was tut man, wenn der Text nicht linguistisch ist; und was, wenn die Sprache unbestimmt ist?

Wenn der Text nicht linguistisch ist

Verwenden Sie das Sprachkürzel zxx, wenn bekannt ist, dass der Text in keiner Sprache ist.

Das betrifft solche Texte wie bspw. Blindtexte, Artikelnummern, bildliche Darstellungen von Zahlendaten usw. Die Definition von zxx im IANA-Register für Sprachkürzel ist „no linguistic content“ (kein linguistischer Inhalt).

Zum Beispiel:

<p>Hier ist eine Liste von Artikelnummern: <span lang="zxx">9RUI34 8XOS12 3TYY85</span>.</p>

Wenn die Sprache unbestimmt ist

In HTML verwenden Sie lang="". In XML verwenden Sie xml:lang="", wenn das verwendete Format es unterstützt, andernfalls xml:lang="und".

Diese Werte zeigen an, dass aus irgendeinem Grund unbestimmt ist, welches die richtige Sprachinformation wäre oder ob der Text linguistisch ist oder nicht. Verwenden Sie den leeren Wert für das Sprachattribut bspw., wenn Text aus einer Datenbank in ein Dokument eingefügt wird, die Datenbank aber keine Sprachinformation bereithält und man nicht sicher sein kann, in welcher Sprache der Text ist. Dadurch wird eine Sprachinformation, die für ein Element weiter oben in der Elementhierarchie des Dokuments angegeben wurde, nicht mehr auf den eingefügten Text bezogen.

Man sollte Text jedoch nur dann als unbestimmt kennzeichnen, wenn man ihn nicht so belassen kann, wie er ist. In der Praxis heißt das, dieses Markup nur dann zu verwenden, wenn der unbestimmte Text in einen Kontext eingebettet ist, wo die Sprache schon angegeben wurde, oder wenn die Verwendung für das Dokument von dem verwendeten Format verlangt wird.

Weiteres

Was heißt das für XHTML 1.0?

Bei alten Seiten, die noch XHTML 1.0 verwenden und nicht auf HTML5 oder XHTML5 geupdatet werden können, sollten Sie xml:lang="und" verwenden um auszudrücken, dass ein im Dokument eingebetteter Text unbestimmter Natur ist, denn xml:lang="" ist dort nicht erlaubt. In dem sehr seltenen Fall, dass das gesamte Dokument in einer unbestimmten Sprache ist, ist es besser, die Sprache des Dokuments gar nicht anzugeben.

Was haben XML-Schemas damit zu tun?

xml:lang="" geht nur, wenn das Schema, welches das Format des Dokuments beschreibt, einen Leerstring als Wert für xml:lang zulässt. Weil bspw. die XHTML-1.0-DTDs xml:lang so definieren, dass ein Leerstring als Wert für das xml:lang-Attribut nicht erlaubt ist, kann man den Leerstring in XHTML 1.0 nicht verwenden.

Für diejenigen, die sich mit DTDs und anderen Schemas auskennen: Das xml:lang-Attribut hat NMTOKEN-Werte im XML-Schema; diese dürfen nicht leer sein. Deklarieren Sie xml:lang in Ihrer XML-DTD möglichst als CDATA, damit ein leerer Wert erlaubt ist. Bei XML-Schema halten Sie sich an das XML-Schema für den XML-Namensraum.

Martin Dürst verwies darauf, dass man das XHTML-Format innerhalb des Dokuments umdefinieren kann, um eine XHTML-Seite zu erzeugen, die trotz Verwendung von lang="" oder xml:lang="" valide ist. Das empfiehlt sich aber nicht für den allgemeinen Gebrauch, denn dadurch wäre ein Dokument nicht mehr streng konform im Sinne von XHTML 1.0.

Übrigens

Dies ist eine Zusammenfassung einer Diskussion in einem Thread auf www-international@w3.org und einer späteren Wiederaufnahme dieser Gedanken, wozu mehrere Leute beigetragen haben.