Text- und Alltagswerkzeuge · Text-Toolkit
Wie Slug-Generatoren Akzente falten: NFD-Zerlegung erklärt
· Wie es funktioniert
URL-Slugs Textkonvertierung Javascript
Erklärt, wie die kanonische Zerlegung von Unicode einen Grundbuchstaben von seinem Akzent trennt, sodass aus „Café Crème“ eher „cafe-creme“ als „caf-cr-me“ wird, und wo die Zerlegung allein nicht ausreicht.
caf-cr-me – der häufige Slug-Bug, der Namen verfälscht, und warum er auftritt
Eine schwache Slug-Routine kann `Café Crème` in `caf-cr-me` umwandeln, wenn sie jedes Zeichen außerhalb eines engen ASCII-Bereichs löscht. Die sichtbaren Akzente verschwinden, aber mit ihnen verschwinden auch die zugrunde liegenden Grundbuchstaben, sodass eine URL zurückbleibt, die nicht mehr dem Artikeltitel ähnelt. Besonders deutlich wird dieser Schaden bei Namen, Orten und wiederholten redaktionellen Kategorien.
ToolAcre geht in `slugify` einen anderen Weg. Es normalisiert zunächst die Eingabe und entfernt dann einen bestimmten Bereich von Kombinationsmarkierungen, während die resultierenden Buchstaben beibehalten werden. Erst danach werden die Text- und Formtrennzeichen kleingeschrieben. Die Reihenfolge ist der Grund dafür, dass `Café Crème` zu `cafe-creme` wird und nicht zu einem Fragment mit fehlenden Vokalen.
Ein Zeichen, zwei Darstellungen – wie é ein einzelner Codepunkt oder ein e gefolgt von einem kombinierenden akuten Akzent sein kann
Text, der identisch aussieht, kann unterschiedliche interne Sequenzen haben. Ein `é` kann als ein vorkomponiertes Zeichen oder als gewöhnliches `e` gefolgt von einem kombinierenden Akutzeichen eintreffen. Ein Inhaltseditor kann normalerweise nicht erkennen, welche Darstellung aus einem CMS, Dokument oder der Zwischenablage stammt, ein zeichenweiser Filter kann die beiden Eingaben jedoch unterschiedlich behandeln.
Dieser versteckte Unterschied ist wichtig, wenn eine Ersetzungsregel ein Formular erkennt, das andere jedoch nicht. ToolAcre vermeidet das Schreiben einer separaten Ersetzung für jede vorgefertigte Schreibweise. Durch die Normalisierung erhält die Slug-Pipeline eine konsistentere Zwischenform, sodass unterstützte Akzentzeichen in einem späteren Schritt entfernt werden können, während die Basisbuchstaben für die URL verfügbar bleiben.
Normalisierungsform D – wie die kanonische Zerlegung jeden Buchstaben mit Akzent in einen Grundbuchstaben plus Kombinationszeichen umschreibt
Die Implementierung ruft `.normalize("NFD")` auf, bevor Kleinbuchstaben oder Trennzeichen verwendet werden. Für Zeichen, die eine kanonische Zerlegung haben, die von der JavaScript-Laufzeit verwaltet wird, erzeugt dies ein Basiszeichen, gefolgt von einer oder mehreren Kombinationsmarkierungen. Die Funktion verwaltet keinen eigenen Katalog französischer oder spanischer Schreibweisen und prüft Wörter nicht semantisch.
In der Gliederung heißt es, dass NFD jeden Buchstaben mit Akzent neu schreibt, aber die Quelle unterstützt eine engere Aussage. Die Zerlegung hängt vom Zeichen ab und der folgende Entfernungsausdruck deckt Codepunkte von `U+0300` bis `U+036F` ab. Der Artikel sollte daher das vom Code gezeigte Verhalten beschreiben und nicht eine universelle Akzententfernung für jedes Skript oder jede Markierung versprechen.
NFD zerlegt unterstützte Zeichen; Die Implementierung verspricht nicht, dass jeder akzentuierte Buchstabe getrennt wird
Nach der Normalisierung wendet `slugify` `/[̀-ͯ]/g` an und ersetzt jede übereinstimmende Markierung durch eine leere Zeichenfolge. In der zerlegten Form von `é` stimmt `e` nicht mit diesem Bereich überein, während dies bei der akuten Markierung der Fall ist. Wenn nur die Markierung entfernt wird, verbleibt der lesbare Basisbuchstabe, der beim früheren Nur-ASCII-Ansatz verworfen worden wäre.
Dies ist eine Akzentfaltung, kein allgemeiner Textbereinigungsschritt. Der reguläre Ausdruck wird bewusst vor der Regel für Trennzeichen platziert, damit der Basisbuchstabe später als Buchstabe mitwirken kann. Wenn die Markierung entfernt wurde, nachdem nicht unterstützte Läufe bereits zusammengebrochen waren, könnte eine zersetzte Markierung die Platzierung des Separators beeinflussen und zu einem weniger originalgetreuen Block führen.
Der Rest der Slug-Pipeline – Kleinschreibung, Zusammenfassen nicht-alphanumerischer Läufe zu einzelnen Bindestrichen, Kürzen führender und nachfolgender Trennzeichen, Entfernen von Emojis
Die verbleibende Pipeline schreibt den normalisierten Text in Kleinbuchstaben um und ersetzt jeden Lauf, der kein Unicode-Buchstabe oder eine Unicode-Zahl ist, durch das konfigurierte Trennzeichen, das standardmäßig einen Bindestrich verwendet. Ein zweiter Ausdruck schneidet wiederholte Trennzeichen an beiden Enden ab. Emojis und Satzzeichen verschwinden daher als Inhalt, während benachbarte, nicht unterstützte Zeichen zu einer Grenze und nicht zu mehreren Bindestrichen werden.
Die Gliederung beschreibt eine nicht alphanumerische Kollapsfunktion, aber das eigentliche Muster verwendet Unicode-Eigenschafts-Escapezeichen und kein reines ASCII-Alphabet. Buchstaben aus nicht-lateinischen Schriften können nach der Kleinschreibung im Slug verbleiben. Die Konfiguration bestätigt, dass es keinen Transliterationsschritt gibt: Symbole werden entfernt, aber beibehaltene Buchstaben werden nicht automatisch in ungefähre lateinische Schreibweisen umgeschrieben.
Der Rest dieser Slug-Pipeline behält Buchstaben und Ziffern aus jedem Skript bei, während andere Läufe durch das gewählte Trennzeichen ersetzt werden
Folgen Sie `Café Crème & Co. — Été 2024!` durch die Implementierung. NFD trennt die unterstützten Akzentzeichen in Grundbuchstaben und Markierungen. Der Markierungsentfernungsausdruck hinterlässt `Cafe Creme & Co. — Ete 2024!` und die Kleinschreibung erzeugt `cafe creme & co. — ete 2024!`, bevor die Interpunktion verarbeitet wurde.
Die Nicht-Buchstaben- und Nicht-Zahlenläufe werden dann zu Bindestrichen, was die sinnvolle Sequenz `cafe-creme-co-ete-2024` ergibt, nachdem führende und nachfolgende Trennzeichen gekürzt wurden. Das kaufmännische Und, der Punkt, der Bindestrich und das Ausrufezeichen erhalten keine gesprochenen Namen oder benutzerdefinierten Ersetzungen. Sie dienen bei dieser Konvertierung lediglich als Grenzen zwischen Buchstaben- und Zahlenläufen.
Was die Zerlegung nicht kann – Buchstaben wie ø, ł, ß und æ haben keinen zu entfernenden Akzent und benötigen eine Transliterationstabelle
Zerlegung ist keine Transliteration. Zeichen wie `ø`, `ł`, `ß` und `æ` sind nach dieser Pipeline immer noch Unicode-Buchstaben, sodass der eigenschaftsbasierte Filter sie behält, anstatt eine Tabelle für `o`, `l`, `ss` oder zu konsultieren `ae`. Die Behauptung, dass Benutzer eine Transliterationstabelle benötigen, mag an anderer Stelle ein nützlicher Entwurfsratschlag sein, aber in diesem Tool gibt es keine solche Tabelle.
Diese Unterscheidung erklärt auch, warum das Ergebnis ein gültiger Projekt-Slug sein kann, ohne nur ASCII zu sein. Redakteure, deren Veröffentlichungssystem ASCII erfordert, sollten diese separate Systemeinschränkung überprüfen, bevor sie die Ausgabe verwenden. ToolAcre verspricht Akzentfaltung für den implementierten Zerlegungs- und Markierungsbereich; Es verspricht nicht für jeden Titel eine sprachbewusste Rechtschreibung, eine umkehrbare Konvertierung oder eine lateinische Ausgabe.
Zeichen ohne entfernbare Markierungen bleiben Buchstaben; Dieses Tool verfügt über keine Transliterationstabelle
Die zuverlässige Erkenntnis ist prozedural: Zuerst normalisieren, die unterstützten Kombinationsmarkierungen entfernen, Kleinbuchstaben schreiben, nicht unterstützte Läufe reduzieren und Trennzeichen kürzen. Jede Stufe hat eine sichtbare Verantwortung und ihre Reihenfolge behält die Grundbuchstaben bei, bevor die Interpunktion verworfen wird. Das reicht aus, um den häufigen Fehler `caf-cr-me` zu verhindern, ohne Sprachregeln zu erfinden, die die Quelle nicht enthält.
Fügen Sie den bearbeiteten Titel in den Text-Groß-/Kleinschreibung-Konverter ein und wählen Sie die Slug-Option aus, um das Endergebnis im selben Textfeld zu überprüfen. Wenn ein Titel Buchstaben außerhalb der gezeigten Akzentfälle enthält, überprüfen Sie die Ausgabe anhand der Zielplattform. Der Konverter liefert eine vorhersehbare browserseitige Transformation, während der Editor für die Routenkonventionen verantwortlich bleibt.