Slug je čitljivi kraj web adrese — ono my-first-post u example.com/blog/my-first-post. To je dio koji osoba može pročitati prije nego što odluči hoće li kliknuti, i dio koji pretraživači čitaju kao kratak opis onoga što stranica sadrži, zbog čega zaslužuje više pažnje od ID-ja u bazi podataka ili datuma. Ovaj besplatni generator pretvara bilo koji tekst u slug: zalijepite naslov u "Tekst za pretvaranje", pritisnite "Generiši", a rezultat će se pojaviti s dugmetom za kopiranje pored njega. Zadane postavke su one koje većina web stranica želi — mala slova, crtice između riječi, uklanjanje uobičajenih riječi, transliteracija ne-latiničnih slova — tako da je upotrebljiv slug udaljen samo jedan klik, a svaku od ovih odluka možete promijeniti jednim klikom.
Sve se odvija na vašem vlastitom uređaju. Stranica učitava mali JavaScript endžin (engine) i pokreće ga lokalno: vaši naslovi se nikada ne šalju na server, nikad se ne bilježe, a alat nastavlja raditi i ako prekinete internet vezu. To je ujedno i razlog zašto se rezultat osvježava onog trenutka kada promijenite neku postavku. Redoslijed rada je važno navesti jer on omogućava predvidljiv rezultat: zalijepljeni link se prvo skraćuje na svoj zadnji dio putanje, zatim se tekst pretvara u mala slova, onda se odbacuju stop-riječi, nakon toga se ne-latinični znakovi transliteriraju, onda se brojevi i specijalni znakovi uklanjaju ako ste to tražili, pa se sve što ostane spaja vašim separatorom, potom se rezultat skraćuje na maksimalnu dužinu, i na kraju ponovljeni slug dobija numerički sufiks. "Tekst za pretvaranje" prihvata do 500.000 znakova odjednom, što odgovara nekoliko hiljada naslova članaka.
Jedna linija na ulazu daje jedan slug na izlazu. Ako zalijepite cijelu listu naslova, svaka linija postaje vlastiti numerisani slug, sa originalnim naslovom iz kojeg je nastao prikazanim iznad u sivoj boji, tako da u seriji od pedeset stavki lako znate koji slug pripada kojem naslovu. Lista koja se već nalazi u datoteci ne mora ići preko međuspremnika (clipboard): dugme "Učitaj iz datoteke" pored polja za unos otvara običnu tekstualnu datoteku — .txt, .csv, .md, .json i slično — i prebacuje njen sadržaj u polje. Vaš pretraživač čita tu datoteku potpuno isto kao što čita ono što vi kucate, bez ikakvog učitavanja na server. "Podijeli unos po" odlučuje na koji način će se lista razdvojiti. Opcija "Automatski" je zadana: novi red uvijek odvaja stavke, dok ih zarez odvaja samo kada je unos u jednoj liniji, a njegovi dijelovi izgledaju kao nezavisne vrijednosti — tako da "cijena 3,5 KM" i "Poglavlje 5: rezultati, zaključci" ostaju cjeloviti umjesto da se raspadnu. Opcije "Novi red", "Zarez" i "Razmak" prisiljavaju alat na određeni izbor kad već unaprijed znate oblik vaših podataka. "Format rezultata" odlučuje kako se serija vraća kada je preuzimate — po jedan u svakoj liniji, "Odvojeno razmacima" ili "Odvojeno zarezima" — a opcije "Kopiraj sve" i "Sačuvaj u datoteku" prate to pravilo. "Historija" čuva vaših zadnjih 10 serija u vašem pretraživaču, tako da je lista koju ste obradili prije sat vremena još uvijek tu.
Ne-latinični tekst je dio koji većina generatora slugova uradi donekle tačno, a rijetko koji potpuno ispravno. URL je najsigurniji u običnom ASCII formatu, tako da se ćirilica, grčko pismo, arapsko, kinesko i evropska slova s akcentima moraju konvertovati, a jedino je pitanje prema kojem pravilu. Ova stranica na to odgovara kroz dva sloja. Opšti sloj pokriva sva pisma: to je biblioteka za transliteraciju koja daje logičan ASCII odgovor za gotovo svaki znak koji možete otkucati, i upravo to znači opcija "Automatski (bilo koji jezik)" u meniju "Transliteriraj iz". Specifični sloj je set ručno pravljenih tabela za jezike kod kojih opšti odgovor nije onaj koji se u tim zemljama zaista koristi; pomenuti meni nabraja jezike za koje trenutno postoji tabela, a taj set raste kako alat obuhvata više jezika koji ih trebaju. Ako odaberete jedan, njegova tabela se učitava u tabelu pod "Pravila transliteracije" gdje svaki znak postaje polje za tekst koje možete izmijeniti, a opcija "Vrati pravila na zadana" ih vraća u početno stanje. Ukrajinska tabela prati Rezoluciju Vijeća ministara br. 55 iz 2010. godine, što je standard koji se koristi u njihovim pasošima, uključujući i sitnice koje se lako mogu propustiti: зг postaje zgh umjesto zh kako bi ostalo jasno odvojeno od ж; є, ї, й, ю i я imaju jedan oblik na početku riječi a drugi u sredini; te se apostrof i meki znak izostavljaju a da ne započinju novu riječ, tako da Знам'янка postaje znamianka a ne znamyanka. Njemački jezik zadano proširuje slova u ä → ae, ö → oe, ü → ue, što se na njemačkim adresama zaista i koristi, s jednostavnijom varijantom ä → a ako vam je draža.
"Ukloni stop-riječi" je uključeno prema zadanim postavkama. Opcija odbacuje male vezne riječi — (na engleskom) a, the, and, of, for — koje produžuju slug bez dodavanja ikakvog značenja. Lista pod "Stop-riječi" je u potpunosti promjenjiva i stiže već popunjena: engleska lista plus lista za jezik stranice na kojoj se nalazite, tako da ukrajinska stranica prepoznaje в, на, та i і, a njemačka stranica der, die i das. Možete dodati vlastite riječi, obrisati one koje želite zadržati, ili potpuno ugasiti ovu funkciju, nakon čega će to polje postati sivo. Ovdje vrijede dvije iskrene napomene. Uklanjanje stop-riječi donosi malo više urednosti, a ne prednost u rangiranju — dobit ćete kraću i čišću adresu, ali ne nužno i bolju poziciju na pretraživačima. A ako se desi da su sve riječi u naslovu na toj listi, pošten ishod nije ništa, pa će vam alat to i reći umjesto da vam ponudi prazno polje.
Ostali prekidači odlučuju o obliku. "Separator u slugu" bira šta će stajati između riječi, a zadana crtica nije pitanje ukusa: Google čita crticu kao odvajač riječi, a donju crtu kao znak koji ih spaja, pa tako my_first_post do Googlebota dolazi kao jedna duga riječ, dok my-first-post dolazi kao tri riječi. "Donja crta (_)" je tu za sisteme koji to izričito zahtijevaju. "Mala slova" su uključena jer većina servera tretira web adrese tako da razlikuju velika i mala slova (case-sensitive), a njihovo miješanje je jednostavan put da završite sa dva URL-a za jednu stranicu. "Ukloni specijalne znakove" odbacuje sve što nije slovo, cifra, razmak, crtica ili donja crta, što znakove interpunkcije, navodnike i emojije drži van adrese — emojiji se uklanjaju prije same transliteracije, i to posebno zato da emoji rakete ne bi postao riječ rocket. "Ukloni brojeve" je isključeno, jer broj u naslovu obično predstavlja sastavni dio naslova. "Maksimalna dužina" se kreće od 10 do 200, pri čemu je zadanih 80; kada je slug duži od toga, alat se zaustavi na zadnjoj cijeloj riječi koja se uklapa u to umjesto da riječ siječe na pola. Broj pored svakog rezultata označava njegovu dužinu u znakovima, a pocrveni kada pređe 60 — to nije čvrsto ograničenje, već tačka nakon koje će slug na rezultatima pretrage biti skraćen, i kad ga postaje nezgodno zalijepiti u poruku.
Postoje još dva prekidača koji grupnu konverziju vraćaju u posao završen jednim klikom. "Učini slugove jedinstvenim" rješava situaciju kad se dva različita naslova pretvore u isti slug — "Top 10 savjeta" i "Top-10 savjeta" oboje postaju top-10-savjeta — tako što drugom doda -2, trećem -3, pri čemu se baza prvo skrati ako bi joj dodatak premašio postavljenu maksimalnu dužinu. Problem s dvije stranice na istoj adresi daleko je jeftiniji za prepoznati u ovoj listi nego u vašem CMS-u. "Preuzmi slug iz zalijepljenog URL-a" radi u suprotnom smjeru: zalijepite cijeli link i alat će izvući samo onaj zadnji dio putanje, odbaciti dodatne upite (query string) i završetke poput .html ili .php, te dekodirati procenat-kodiranje (percent-encoding), tako da se Wikipedia link koji se završava na %D0%9B%D1%8C%D0%B2%D1%96%D0%B2 vrati kao lviv umjesto niza heksadecimalnih znakova. Alat se pokreće jedino u slučaju kada cijela linija predstavlja samo link, dok se link ubačen u samu rečenicu tretira kao i svaki obični tekst.
Zašto odabrati ovaj generator slugova?
- Radi isključivo u pretraživaču: naslovi se ne šalju na server i stranica radi offline
- Grupna konverzija iz zalijepljenog teksta ili datoteke, sa izvornim naslovom iznad svakog sluga
- Pravi standardi transliteracije za svaki jezik, a ne jedna ista tabela za sve njih
- Ukrajinski po Rezoluciji br. 55 iz 2010. godine — pravopis iz njihovih pasoša
- Mogućnost prilagođavanja svakog pravila slovo po slovo, s jednim klikom za povratak
- Automatski sufiksi -2 i -3 tako da ni jedna dva sluga u seriji nisu potpuno ista
- Zalijepite link da biste iz njega dobili slug s dekodiranim procenat-kodiranjem
- Lista stop-riječi koju možete uređivati a koja dolazi popunjena za vaš jezik
- Sigurno skraćivanje na cijeloj riječi, s brojanjem znakova za svaki dobiveni rezultat
- Besplatno i neograničeno: nema registracije, limita, i ništa se ne čuva na našim serverima
Slugovi su potrebni gdje god web stranica mora nositi čitljivu adresu. Blog ili portal pretvara svaki naslov u slug, a alat je prvenstveno oblikovan u te svrhe: zalijepite ovosedmične naslove, dobit ćete ovosedmične URL-ove. Internet trgovine na isti način obrade nazive artikala i kategorija, uglavnom grupno nakon uvoza baze i često s jezika čija slova u adresi nisu dozvoljena. Dokumentacija i baze znanja iste principe koriste za sidra (anchors) i nazive datoteka. Osim za web adrese, isti čist format stringa će vam zatrebati za ime fajla koje neće pucati na drugom operativnom sistemu, za ključ u bazi podataka koji čovjek može pročitati u logu, za naziv grane, za naziv slike u medijskoj biblioteci, ili za identifikator neke sekcije u generatoru statičnih stranica. Gdje god naziv razumljiv čovjeku treba opstati nakon što ga smjestite u polje koje čita mašina, tu slug pripada.
Potrebno je poznavati nekoliko ograničenja prije nego što se oslonite na njega. Ovo je generator, a ne validator: on neće provjeravati je li slug već iskorišten na vašoj web stranici jer on nema blage veze o sadržaju na njoj — garantovana jedinstvenost odnosi se samo na onu seriju teksta koja se nalazi pred vama. Preusmjeravanja (redirects) su također vaš posao; izmjenom sluga na objavljenoj stranici narušit ćete staru adresu, a to je ipak odluka za vaš CMS, a ne za ovaj alat. "Sačuvaj u datoteku" piše u običnom tekstu, a ne u CSV-u ili JSON-u. Automatsko razdvajanje teksta donosi procjenu oko zareza koja je potpuno ispravna u gotovo svim situacijama, ali ne i u svakom slučaju, zbog čega opcija "Podijeli unos po" omogućava da vi imate završnu riječ. A transliteracija je pravilo, a ne prijevod — München postaje muenchen, a ne Munich — pa ukoliko neka stranica već posjeduje ustaljeno ime na ciljnom jeziku, to će ime zasigurno biti puno kvalitetniji slug negoli bilo kakva automatska konverzija onog originalnog.