Umlaute umschreiben
Macht aus ä ein ae und aus é ein e — und auf Wunsch gleich eine saubere Adresszeile oder einen unbedenklichen Dateinamen.
Umlaute sind im Deutschen selbstverständlich und in der Technik bis heute eine Quelle von Ärger. Ein Dateiname mit „ä" kommt auf einem anderen Betriebssystem als „a?" an, eine Adresszeile mit Umlaut wird unleserlich lang, und in mancher alten Datenbank wird aus „Müller" ein „M??ller". Dieses Script schreibt solche Zeichen in eine unbedenkliche Form um — auf vier verschiedene Arten, je nachdem wofür ihr sie braucht.
Umlaute auflösen macht das, was der Duden für Notfälle vorsieht: ä wird zu ae, ö zu oe, ü zu ue, ß zu ss. „Müller" wird zu „Mueller" und bleibt für deutsche Leser sofort verständlich. Akzente entfernen geht weiter und behandelt auch fremdsprachige Zeichen: é, à, ñ, ç werden zu e, a, n, c. Adresszeile erzeugt daraus einen sogenannten Slug — Kleinbuchstaben, Bindestriche statt Leerzeichen, sonst nichts —, wie ihr ihn in der Adresse dieser Seite seht. Dateiname schließlich entfernt zusätzlich die Zeichen, die Betriebssysteme in Dateinamen verbieten.
Ein Hinweis zur Ehrlichkeit: Die Umschrift ist nicht umkehrbar. Aus „Masse" und „Maße" wird beides Mal „Masse", aus „Kuchen" und „Küchen" beides Mal „Kuchen" beziehungsweise „Kuechen" — nur letzteres bleibt unterscheidbar. Für Anzeigetexte solltet ihr Umlaute also stehen lassen; die Umschrift gehört an die Stellen, wo Technik im Weg steht.
Verwandtes: Die URL-Kodierung löst dasselbe Problem auf dem anderen Weg — sie schreibt Umlaute nicht um, sondern kodiert sie in die Prozentschreibweise. Suchen und Ersetzen ist das allgemeine Werkzeug für eigene Ersetzungen, und Klein- und Großschreibung ändert nur die Schreibweise.
Die Umschrift lässt sich nicht rückgängig machen — „Maße" und „Masse" werden beide zu „Masse".
So funktioniert das Script
Die vier Umschriften bauen aufeinander auf: Der Slug benutzt die Akzentbehandlung, und die benutzt die Umlautauflösung. Das ist Absicht — jede Funktion tut eine Sache, und die größeren setzen sich aus den kleineren zusammen.
.replace(/ä/g, "ae").replace(/ö/g, "oe").replace(/ü/g, "ue")
.replace(/Ä/g, "Ae").replace(/Ö/g, "Oe").replace(/Ü/g, "Ue")
.replace(/ß/g, "ss");
Die deutschen Umlaute werden ausdrücklich einzeln behandelt, und zwar vor allem anderen. Der Grund steckt in der nächsten Funktion: Ein automatisches Entfernen von Akzenten macht aus „ü" ein „u" und aus „Müller" folglich „Muller". Für französische Wörter ist das richtig, für deutsche falsch — die Umschrift lautet „ue". Deshalb die feste Reihenfolge: erst die deutschen Regeln, dann die allgemeinen. Beachtet auch die Großbuchstaben: „Ä" wird zu „Ae" und nicht zu „AE", weil es fast immer am Wortanfang steht.
.normalize("NFD")
.replace(/[̀-ͯ]/g, "");
Das ist der eleganteste Trick dieser Seite. Ein „é" lässt sich auf zwei Arten speichern: als ein einziges Zeichen oder als „e" gefolgt von einem eigenständigen Akzentzeichen. normalize("NFD") wählt immer die zweite Form — es zerlegt zusammengesetzte Zeichen in ihre Bestandteile. Danach genügt es, alle Akzentzeichen wegzuwerfen; die stehen in einem zusammenhängenden Nummernbereich, der hier als ̀ bis ͯ angegeben ist. Übrig bleibt der nackte Grundbuchstabe. Der Charme: Diese vier Zeilen behandeln sämtliche Akzente aller lateinischen Schriften, ohne dass man eine einzige Tabelle pflegen müsste.
.toLowerCase()
.replace(/[^a-z0-9]+/g, "-")
.replace(/^-+|-+$/g, "");
Der Slug entsteht in drei Schritten: alles klein, dann jede Folge von Zeichen, die weder Buchstabe noch Ziffer ist, durch einen einzigen Bindestrich ersetzen, dann Bindestriche an Anfang und Ende wegschneiden. Das Pluszeichen ist hier wichtig — es fasst mehrere Sonderzeichen hintereinander zu einem Bindestrich zusammen, sonst würde aus „Käse & Co." ein „kaese---co-". Das Muster /^-+|-+$/ liest sich als „Bindestriche am Anfang oder Bindestriche am Ende", wobei ^ für den Anfang und $ für das Ende steht.
.replace(/[<>:"/\\|?*\x00-\x1f]/g, "")
Für Dateinamen wird eine feste Liste verbotener Zeichen entfernt. Es sind genau die, die Windows nicht zulässt; da Linux und macOS weniger streng sind, ist man mit dieser Liste überall auf der sicheren Seite. \x00-\x1f deckt zusätzlich die unsichtbaren Steuerzeichen ab, die beim Kopieren aus PDF-Dateien gern mitkommen und später schwer zu finden sind.
Zum Anpassen: Andere Sprachen haben eigene Umschriftregeln, die vor der Akzentbehandlung stehen müssen — im Dänischen wird „ø" zu „oe", im Polnischen „ł" zu „l" (letzteres erkennt die Zerlegung nämlich nicht, weil der Strich Teil des Buchstabens ist). Wollt ihr im Slug den Unterstrich statt des Bindestrichs, ändert ihr das Ersatzzeichen in beiden betroffenen Zeilen.
Script für die eigene Homepage
Kopiert euch den kompletten Code und fügt ihn an der Stelle eurer Seite ein, an der das Script erscheinen soll. Er läuft ohne weitere Dateien und ohne fremde Server.
Mehr aus der Kategorie Texteffekte
-
Blindtext-Generator
-
Brailleschrift
-
Buchstabieralphabet
-
Definierbarer Countdown
-
Fantasiename erzeugen
-
Kleinschreibung / Großschreibung
-
Lauftext
-
Leetspeak-Wandler
-
Morsecode
-
Namen rückwärts gelesen
-
Palindrom prüfen
-
Schreibmaschinen-Effekt
-
Suchen und Ersetzen
-
Text auf dem Kopf
-
Text zu Binärcode
-
Zeilen sortieren