murattunalı.

Türkçe karakterler ve URL slug'ları.

Türkçe karakterler adres satırında teknik olarak kullanılabilir ama pratikte kodlanarak okunmaz hâle geldikleri için sadeleştirilmiş sluglar tercih edilir.

Adres satırında Türkçe karakter kullanmak bugün teknik olarak mümkün: tarayıcılar bunları görüntülüyor ve arama motorları anlıyor. Ama kopyalanıp yapıştırıldığında adres yüzde işaretli uzun bir diziye dönüşüyor ve okunamaz hâle geliyor.

Bu, paylaşımı doğrudan etkiliyor: bir mesajda ya da belgede paylaşılan adres anlaşılmaz görünüyor, ve bazı sistemler kodlanmış adresleri kırıyor. Pratik sonuç, Türkçe karakterlerin sadeleştirilmesi.

Sadeleştirme kuralları

Dönüşüm göründüğü kadar basit değil çünkü iki harf özel dikkat gerektiriyor.

  1. ç → c, ğ → g, ş → s, ü → u, ö → o — düz karşılıklar.
  2. ı → i ve i → i — Türkçenin noktalı ve noktasız i'si tek harfe düşüyor.
  3. İ → i — büyük noktalı I, küçük noktalı i'ye.
  4. I → i — büyük noktasız I da küçük noktalı i'ye. Bu, Türkçe dışında yanlış olurdu.
  5. Boşluk → tire — alt çizgi değil; tire kelime ayracı sayılıyor.
  6. Noktalama silinir — tek istisna tire.

İkinci ve dördüncü maddeler Türkçeye özgü tuzak: çoğu programlama dilinin varsayılan büyük-küçük harf dönüşümü Türkçe kurallarını bilmiyor ve büyük I'yi noktalı i'ye çeviriyor — ki Türkçede yanlış. Sadeleştirme yapılırken dil bilinci olan bir dönüşüm kullanılmalı.

Aynı tuzak sıralama işlemlerinde de var: alfabetik sıralama Türkçe alfabeye göre yapılmazsa ç, ğ, ş gibi harfler yanlış yere düşüyor. Sözlük gibi alfabetik listeler taşıyan sayfalarda bu görünür bir kusur üretiyor.

Slug kalıcı olmalı

Bir slug yayımlandıktan sonra değiştirilmesi bir borç üretiyor: eski adres bir yerlerde kayıtlı ve o adres artık çalışmıyor. Yönlendirme kurulsa bile bir kayıp var ve zincir zamanla birikiyor.

Bu yüzden slug kararı yayından ÖNCE verilmeli ve mümkün olduğunca kalıcı seçilmeli. Pratik bir kural: slug içeriğin ne olduğunu anlatsın, ne zaman yazıldığını değil — tarih içeren sluglar içerik güncellendiğinde bayatlıyor.

İkinci kural: slug kısa ve tek konulu olsun. Uzun sluglar hem okunmuyor hem de kırılma noktalarında bozuluyor. Üç ile beş kelime pratik bir aralık.

Slug içeriğin ne olduğunu anlatmalı, ne zaman yazıldığını değil.

Dönüşümü otomatikleştirmek

Slug üretimi elle yapıldığında tutarsızlık kaçınılmaz: bir sayfada tire, diğerinde alt çizgi; bir yerde büyük harf, bir yerde küçük. Kalıcı çözüm dönüşümü bir fonksiyona bağlamak ve her slug'ı ondan geçirmek.

Fonksiyonun Türkçe bilmesi gerekiyor ve bu, varsayılan araçlarla sağlanmıyor. Çoğu dilin standart küçük harfe çevirme işlevi Türkçe kurallarını uygulamıyor — büyük noktasız I'yi noktalı i'ye çeviriyor ve bu Türkçede yanlış. Dil bilinci olan bir dönüşüm ya da elle yazılmış bir eşleme tablosu gerekiyor.

  1. Tek fonksiyondan geçir — her slug aynı kurallarla üretilsin.
  2. Türkçe harf eşlemesi elle tanımla — varsayılan dönüşüme güvenme.
  3. Ayraç tire olsun — alt çizgi kelime ayracı sayılmıyor.
  4. Küçük harfe indir — adresler büyük-küçük harfe duyarlı olabiliyor.
  5. Ardışık tireleri tekle — noktalama silindiğinde çift tire oluşabiliyor.
  6. Baş ve sondaki tireleri kırp.

Bu sitede sluglar içerik dosyalarında elle yazılıyor ama biçimleri tek tip: küçük harf, tire ayraçlı, Türkçe karakter sadeleştirilmiş. Kurallar içerik sözleşmesinde yazılı ve her yeni dosya onlara uyuyor.

Ve bir kalıcılık kuralı: yayımlanmış bir slug değiştirilmiyor. Değişmek zorundaysa eski adresten yenisine bir yönlendirme kuruluyor ve o yönlendirme kalıcı — çünkü eski adres bir yerlerde kayıtlı kalıyor ve o kayıtlar hiç temizlenmiyor.

Uluslararasılaştırılmış alan adları

Slug tarafındaki karar bir de alan adı tarafında karşımıza çıkıyor: alan adının kendisinde Türkçe karakter kullanılabilir mi? Teknik olarak evet — uluslararasılaştırılmış alan adları bunu mümkün kılıyor.

Ama aynı okunabilirlik sorunu burada daha sert: alan adı kodlandığında anlamsız bir dizeye dönüşüyor ve e-posta adreslerinde, basılı materyalde ve sözlü aktarımda sorun çıkarıyor. «Nokta com» demek kolay; kodlanmış bir alan adını telefonda tarif etmek değil.

Bir de güvenlik boyutu var: farklı alfabelerde benzer görünen karakterler, taklit alan adları üretmek için kullanılabiliyor. Tarayıcılar bu yüzden bazı durumlarda kodlanmış hâli gösteriyor ve alan adı kullanıcıya anlamsız görünüyor.

Pratik tavsiye: alan adında Türkçe karakter kullanmayın. Sadeleştirilmiş bir alan adı her yerde çalışıyor, her yerde okunuyor ve her yerde aynı görünüyor. Bu sitenin alan adı da öyle.

Kapanışta bir sınır: sadeleştirme bilgi kaybı üretiyor ve bu kabul edilmiş bir ödünleşim. «Şişli» ile «sisli» slug'da aynı görünüyor ve ayırt edilemiyor. Nadir bir durum ama çakışma ihtimali varsa slug elle ayrıştırılmalı — otomatik dönüşüme körü körüne güvenilmemeli.

Son bir kural: slug üretimi bir kez yapılıp içerik dosyasına yazılmalı, her render'da yeniden hesaplanmamalı. Dönüşüm fonksiyonu bir gün değişirse — bir harf eşlemesi düzeltilirse — yeniden hesaplanan sluglar da değişiyor ve tüm adresler kırılıyor.

Slug bir kez üretilip sabitlendiğinde bu risk ortadan kalkıyor: fonksiyon değişse bile yayındaki adresler değişmiyor. Bu sitede sluglar içerik dosyalarında elle yazılı ve değişmez sayılıyor.

Kapanışta bir pratik: slug kararı verilirken o slug'ın bir yıl sonra hâlâ doğru olup olmayacağı sorulmalı. İçerik yeniden yazıldığında, hizmet adı değiştiğinde ya da kapsam genişlediğinde slug bayatlıyor — ve bayat bir slug, yönlendirme borcuyla birlikte yaşamak demek.

Son bir kontrol: yayımlanmış tüm sluglar bir kez taranıp biçim tutarlılığı doğrulanmalı. Büyük harf, alt çizgi, çift tire ya da kodlanmış karakter içeren bir slug varsa, o muhtemelen elle yazılmış ve dönüşümden geçmemiş. Tarama birkaç satırlık bir betikle yapılıyor ve tüm siteyi bir kerede kapsıyor.

KAYNAKLAR