HTML5 ist seit einiger Zeit in aller Munde und jeder hat so seine eigene Vorstellung davon, was es eigentlich bedeutet. Sicher ist nur: HTML5 wird das, was man unter einem Webbrowser versteht, gründlich verändern und es wird mit Sicherheit kommen –Alternativen wie XHTML 2 sind aus dem Rennen. Vieles an HTML5 ist etwas komplizierter, als man von Webstandards gewohnt ist. So gibt es nicht eine HTML5-Spezifikation, sondern gleich zwei, die auch nicht identisch sind und von unterschiedlichen Arbeitsgruppen geschrieben werden. Und weil selbst das noch viel zu einfach wäre, wird ein großer Haufen sonstiger Technologien, die eigentlich nichts mit den beiden HTML5-Spezifikationen zu haben, ebenfalls gerne zu HTML5 gerechnet.
Neben der Kardinalfrage „Was kann HTML5?“ ist vor allem interessant, ab wann HTML5 einsatzbereit ist und wie es zu der schon beschriebenen, etwas chaotischen Konstellation kommen konnte. Dieser Artikel ist der Auftakt zu einer kleinen Serie, die diese Fragen erkunden soll. Was einzelne Teile von HTML5 leisten können, werden wir in den Beiträgen, die im Laufe der nächsten zwei Wochen erscheinen, erfahren. Die Frage nach einem Termin für HTML5 lässt sich hingegen in einem Satz beantworten: HTML5 ist genau genommen schon längst da und mit dem Erscheinen des Internet Explorer 9 werden alle Browser HTML5 (in unterschiedlichem Umfang) unterstützen. Die Frage nach der etwas unübersichtlichen Gesamtsituation beantwortet sich schließlich aus der Entstehungsgeschichte von HTML5, denn ein geplantes Kind ist es nicht.
HTML, SGML, XHTML, WTF?
Was viele nicht wissen, ist, dass kein Browser der letzten 20 Jahre jemals HTML so unterstützt hat, wie es eigentlich in den Standards steht. Tim-Bernes Lee hatte seine Web-Auszeichnungssprache seinerzeit als eine SGML-Anwendung konzipiert und das Verhältnis zwischen SGML und HTML muss man sich so vorstellen, wie das zwischen XML und XHTML – ersteres ist eine allgemeineren Auszeichnungssprache, mithilfe derer eine spezialisiertere Auszeichnungssprache umgesetzt wird. Doch die Kombattanten des Browserkrieges hatten besseres zu tun, als korrekte SGML-Parser zu schreiben (z.B.
Kurze Durchsage: Die E-Book-Version des HTML5-Buchs ist wegen der großen Nachfrage schon jetzt zu haben. Das Ganze kommt als PDF daher, andere Formate (EPUB etc.) wird es wohl erst ab der nächsten Auflage geben – hierfür muss das ganze Markup der Texte umgebaut werden und dafür war diesmal noch keine Zeit. Fragen zum Inhalt des HTML5-Buchs beantwortet die Website zum Buch, wo es auch eine Leseprobe und das komplette Inhaltsverzeichnis zum Download gibt.
Möchte man eine mehrsprachige Website mit MODx (dem bekanntermaßen besten CMS der Welt) umsetzen, geht das ganz einfach mit mehreren Kontexten – das hatten wir schon mal besprochen. In jenem Artikel habe ich auch ein Snippet gezeigt, das Inhalt je nach gewähltem Kontext ausgibt. Das ist besonders praktisch, wenn man gewisse Chunks oder Snippets je nach Kontext unterschiedlich einbinden möchte, doch auch wenn man einfach nur eine kleine Zeichenkette in z.B. einem Template übersetzen möchte, kann man dieses Snippet verwenden. Im Sinne des Erfinders ist das freilich nicht, denn mit dem sogenannten Lexikon und einem entsprechenden Template-Tag hat MODx bereits ein sehr fähiges Übersetzungstool an Bord.
Legt man einen neuen Kontext an, so verpasst man diesem in seinen Einstellungen sinnvollerweise einen sogenannten Culture Key, der die Sprache des Kontexts festlegt; man legt zum Beispiel für den Kontext für die englische Seite eine neue Einstellung namens cultureKey an, trägt als Wert en ein und schon ist der Kontext als englischsprachig markiert. Das sollte man eigentlich immer machen, doch für die Verwendung des Lexikons und seiner Übersetzerfähigkeiten, ist ein ordnungsgemäßer Culture Key Voraussetzung. Die Kontext-Einstellungen findet man unter System → Kontexte.
Das Lexikon ist eine Sammlung von Zeichenketten, zu finden unter System → Lexikon-Verwaltung. Diese Zeichenketten sind Name-Wert-Paare und sind nach Namensräumen getrennt, damit es zum Beispiel keine Kollisionen zwischen den Zeichenketten für den MODx-Manager und denen für die verschiedenen Plugins und Snippets gibt. Außerdem gibt es noch als Unterscheidungsmerkmal ein Thema und – für uns interessant – Sprache! Es ist uns also möglich, unter dem gleiche Schlüssel im gleichen Namensraum mehrere Zeichenketten anzulegen und diese nur anhand der Sprache zu trennen. Möchte man zum Beispiel erreichen, dass im Template einer Seite ein Text im deutschen Kontext als „Allgemeine Geschäftsbedingungen“ und im englischen als „Terms & Conditions“ auftaucht, legt man einfach zwei entsprechende Zeichenketten unter dem gleichen Schlüssel an; einmal für deutsch, einmal für englisch.
Auf diesem Screenshot wird also gerade der der englische Text „Terms & Conditions“ unter dem Schlüssel agb_text für die englische Sprache eingetragen. Es ist sinnvoll, vorher einen eigenen Namensraum anzulegen (System → Namensräume). Hat man den deutschen wie auch den englischen Text unter dem gleichen Schlüssel eingetragen, ist es ein leichtes diesem in einem Template oder Chunk zu verwenden:
<p>
Sonstiges HTML
<br>
agb_text
<br>
Sonstiges HTML
</p>
Der -Tag erlaubt den praktischen Direktzugriff auf das Lexikon, so dass man nur den Schlüssel unserer Einträge, agb_text anzugeben braucht und als Parameter den Namespace übergibt, aus dem die Zeichenketten zu beziehen sind. Falls man auch ein Thema verwendet, so kann man dieses über den Parameter &topic=`meinThema` angeben und falls man es mal gezielt auf eine bestimmte Sprache abgesehen hat, geht dies mit &language=`en`.
Der Schlüssel zur erfolgreichen Übersetzung ist, dass die vom Kontext vorgegebenen Standardwerte benutzt werden, wenn man Parameter auslässt! So erbt beim gezeigten Beispiel der language-Parameter seinen Wert von der Culture-Key-Einstellung unseres Kontexts und für topic gilt default, was der systemweiten Standardeinstellung entspricht. Und wir haben uns eine bequeme Möglichkeit geschaffen, einzelne Zeichenketten in Templates und Chunks zu übersetzen. Culture Key für Kontexte eintragen, einen Namensraum anlegen, Lexikon-Einträge schreiben, -Tag verwenden, fertig! Auch in Snippet-Code kann man das Lexikon natürlich nutzen – wie das geht, erklärt die MODx-Dokumentation.
Ich muss mich entschuldigen – dieser Blogpost kommt viel zu spät, aber ich war leider die letzten Tage echt ekelhaft krank und damit außer Betrieb. Aber wer aufmerksam mittwittert, der weiß bereits seit einiger Zeit: Die zweite Auflage des HTML5-Buchs ist fertig, bereits vorbestellbar und wird am 28. Februar erscheinen. Sie enthält 194 neue Seiten und vier neue Kapitel (insgesamt 592 Seiten, 14 Kapitel) auf dem Stand vom Anfang Februar 2011 – also inklusive Internet Explorer 9 und Firefox 4. Fast alles, was nicht völlig neu ist, wurde aktualisiert, erweitert oder mit zusätzlichen begleitenden Infos (Links, Polyfills) ausgestattet. Es ist ein neues Buch geworden.
Was steht Neues drin?
Es gibt 194 Seiten mit neuem Stoff, wobei eins der vier neuen Kapitel nur entstanden ist, weil ein altes Kapitel wegen überbordender Länge gesplittet werden musste. Auch in den alten Kapiteln hat sich einiges getan. Insgesamt gibt es folgende größere Neuheiten:
Neue Kapitel über Web Workers, die File API sowie Erkennung und Nachrüsten von HTML5-Features
Aktualisierte Browser-Kompatibilitätstabellen für Internet Explorer 9 und Firefox 4
Enthält alle jüngeren Entwicklungen vom Streit und Multimedia-Codecs bis hin zur Zukunft der Webstandards
Überarbeiteter Einstieg, zusätzliche Beispiele und neue Techniken für semantisches HTML5
Erweiterter Anhang mit zusätzlichen Codebeispielen, detaillierteren Tabellen sowie neuen Listen, Links und Polyfills
Alle übrigen Kapitel wurden aktualisiert und teilweise erheblich erweitert oder umstrukturiert. Sämtliche sonstigen Infos zum Buch (also auch all das, was schon vorher drin stand) sind zusammen mit Code-Downloads, dem kompletten Inhaltsverzeichnis und einer aktualisierten Leseprobe auf dem überarbeiteten html5-buch.de zu finden.
FAQ
Ich hab schon die erste Auflage. Sollte mich die zweite Auflage interessieren?
Nur wenig von dem, was in der ersten Auflage steht, hat im Jahr 2011 noch uneingeschränkte Gültigkeit. Fast alles hat sich in irgendwelchen Details geändert, und das betrifft auch nicht nur die nerdigen JS-APIs –zum Beispiel sind ein paar weitere semantische HTML-Tags hinzugekommen und fast keiner hat es gemerkt. Ich würde die erste Auflage echt nur noch mit größter Vorsicht aufschlagen, denn das Teil ist einfach veraltet.
Gibt es ein preisgünstigeres Upgrade für Besitzer der ersten Auflage?
Leider nein. Der Hauptgrund dafür ist, dass sich mehr als nur die neuen Seiten und Kapitel geändert haben. Bis auf wenige Abschnitte, in denen es in den letzten 12 Monaten keine umwälzenden Entwicklungen gab (Canvas, Drag&Drop), hat sich auf so ziemlich jedem Kapitel etwas getan. Veraltete Informationen wurden entfernt, neue Tricks und Hinweise eingefügt, Erklärungen ausgeweitet, Fehler korrigiert und so weiter. Da wäre ein Upgrade auch nur 50 Seiten weniger dünn als das komplette Buch.
Warum ist das Buch teurer geworden?
Daran sind einfach die zusammen mit der Seitenanzahl angestiegenen Material- und Transportkosten schuld.
Ich möchte das Buch in meinem Blog/Podcast/Magazin besprechen oder verlosen!
Einfach bei peter[AT]peterkroener[DOT]de melden. Postadresse und Link zu Blog/Podcast/Magazin nicht vergessen
Was kommt in der dritten Auflage?
Falls es auch in Zukunft noch Interesse am Thema gibt, würde ich ganz gerne Kapitel über barrierefreies HTML5 und Web Sockets schreiben. Außerdem wird es Zeit, die Passagen über die Internet Explorer 6 bis 8 so langsam irgendwie auf das Abstellgleis zu schieben … sie vielleicht noch nicht löschen, aber irgendwie in einen Extra-Anhang auslagern oder so. Die stören sonst nur bei der Arbeit. Und ich bin natürlich für Vorschläge offen!
PS.: Sobald ich die letzten Reste meiner Bazillen losgeworden bin, werde ich auch wieder bloggen wie früher™. Versprochen!