L'italiano ha poche lettere accentate rispetto ad altre lingue romanze — praticamente solo le vocali finali di parola come à, è, ì, ò, ù — ma proprio per questo l'accento porta spesso un significato grammaticale preciso: «è» (verbo essere) contro «e» (congiunzione), oppure «perché» contro un ipotetico «perche» che in italiano corretto semplicemente non esiste. Uno slug che rimuove l'accento su «perché» lo trasforma in una sequenza che un madrelingua legge comunque, ma che tecnicamente non è più una parola italiana corretta.
Cosa fa la conversione in slug
- Converte tutte le lettere in minuscolo.
- Sostituisce spazi e punteggiatura con trattini.
- Traslittera le vocali accentate italiane nella forma senza accento o rimuove altri caratteri fuori dal latino di base.
- Comprime i trattini ripetuti e rimuove i trattini all'inizio e alla fine.
Ad esempio, il titolo "Ciao, Mondo! Come stai?" diventa qualcosa come ciao-mondo-come-stai.
Perché un semplice URL-encode non basta
Il percent-encoding (ad esempio %C3%A8 per "è") è tecnicamente valido in un URL, ma illeggibile per una persona e appare inaffidabile nella barra degli indirizzi o quando si condivide un link. Uno slug risolve proprio il problema della leggibilità, non solo la validità tecnica.
A cosa serve
- Generare automaticamente l'URL di un articolo del blog italiano dal suo titolo.
- Creare un identificatore leggibile dal nome di un prodotto per un negozio online.
- Formare un nome file o una classe CSS da un testo qualsiasi, evitando caratteri non consentiti.
Collisioni: quando titoli diversi generano lo stesso slug
I titoli "Ciao, mondo!" e "ciao mondo" dopo la normalizzazione (minuscolo, rimozione della punteggiatura) si trasformano nello stesso slug ciao-mondo, anche se i testi originali sono diversi. Se lo slug viene usato come identificatore univoco (ad esempio nell'URL di un articolo), questa collisione deve essere risolta separatamente — tipicamente aggiungendo un suffisso numerico o un ID al duplicato.