Tüm makaleler

Slugify: rastgele bir metni URL'ye dönüştürme

Türkçeye özgü harfler — ş, ğ, ç, ö, ü ve noktasız ı — bir slug'a dönüştürülürken genellikle en yakın ASCII karşılığına indirgenir (ş→s, ğ→g, ü→u), ama bu indirgeme bazen anlamı belirsizleştirir: "gül" (çiçek) ile "gul" arasında Türkçe konuşan biri için hâlâ bir fark sezilir, oysa slug'da ikisi de aynı harflere döner. Yumuşak g (ğ) ise çoğu zaman tamamen sessiz kabul edilip harf çevirisinde bile bırakılabilir, çünkü çoğu kelimede zaten telaffuz edilmez.

Slug dönüşümü ne yapar

  • Tüm harfleri küçük harfe çevirir.
  • Boşlukları ve noktalama işaretlerini tirelerle değiştirir.
  • Türkçeye özgü harfler dahil, temel Latin alfabesi dışındaki karakterleri en yakın ASCII karşılığına çevirir veya kaldırır.
  • Tekrarlanan tireleri sıkıştırır ve başındaki ve sonundaki tireleri kaldırır.

Örneğin, "Merhaba, Dünya! Nasılsın?" başlığı, merhaba-dunya-nasilsin gibi bir şeye dönüşür.

Basit URL-encode neden yeterli değil

Percent-encoding (örneğin "ş" için %C5%9F) bir URL'de teknik olarak geçerlidir, ancak bir insan için okunamaz ve bir adres çubuğunda veya bir bağlantı paylaşılırken güvenilmez görünür. Bir slug, yalnızca teknik geçerliliği değil, tam olarak okunabilirlik sorununu çözer.

Buna neden ihtiyaç duyulur

  • Türkçe bir blog yazısının URL'sini başlığından otomatik olarak oluşturmak.
  • Bir çevrimiçi mağaza için bir ürün adından okunabilir bir tanımlayıcı oluşturmak.
  • Yasak karakterlerden kaçınarak rastgele bir metinden bir dosya adı veya CSS sınıfı oluşturmak.

Çakışmalar: farklı başlıklar aynı slug'ı verdiğinde

"Merhaba, dünya!" ve "merhaba dünya" başlıkları, normalleştirmeden (küçük harfe çevirme, noktalama işaretlerinin kaldırılması) sonra kaynak metinler farklı olsa da aynı merhaba-dunya slug'ına dönüşür. Slug benzersiz bir tanımlayıcı olarak kullanılıyorsa (örneğin bir makale URL'sinde), bu tür bir çakışma ayrıca ele alınmalıdır — tipik olarak yinelenene sayısal bir sonek veya id eklenerek.

Aracı dene