Türkçe aramalara özel tuzaklar: ekler, çoğul ve yazım farkları

İngilizce kaynaklardan öğrendiğimiz anahtar kelime yöntemleri Türkçeye birebir uymuyor. Eklemeli bir dil olduğumuz için tek bir kelime onlarca biçimde aranıyor, insanların bir kısmı Türkçe karakter kullanmadan yazıyor, bir kısmı İngilizce terimi tercih ediyor. Araçların verdiği listeler de bu varyasyonları ayrı satırlar olarak gösterince tablo gereğinden karışık görünüyor.

İşin bir de kod tarafı var: Türkçedeki İ ve ı harfleri, programlama dillerinin varsayılan küçük-büyük harf dönüşümlerinde sorun çıkarıyor. Slug üretirken, veri eşleştirirken ya da sorgu gruplarken bu hatalar sessizce yanlış sonuç veriyor.

Ekler: aynı kelimenin onlarca hâli

"Ayakkabı" kelimesi arama kutusunda "ayakkabılar", "ayakkabısı", "ayakkabıları", "ayakkabıda", "ayakkabının" gibi biçimlerde karşınıza çıkar. Google, yazıyı yazdığım sırada, bu tür ekli biçimleri kök kelimeyle ilişkilendirmekte oldukça başarılı. Yani bir sayfada "ayakkabı" geçiyorsa, "ayakkabıları" sorgusunda da görünebilir.

Bu, her eki ayrı ayrı sayfaya serpiştirmeniz gerektiği anlamına gelmiyor. Metni doğal Türkçeyle yazın; ekler cümlenin gereğine göre zaten çeşitlenir. Anahtar kelime listesinde ise ekli varyasyonları ayrı iş kalemi olarak değil, tek bir grubun parçası olarak görün.

Ama "Google anlıyor" demek, "Google aynı sonuçları gösteriyor" demek değildir. İyelik eki niyeti değiştirebilir: "nike ayakkabısı" tek bir ürün arayan birinin sorgusu olabilirken, "nike ayakkabıları" bir koleksiyon ya da kategori beklentisini gösterebilir. Hangisinin hangi sayfa türünü getirdiğine ancak sonuç sayfasına bakarak karar verebilirsiniz.

Tekil ve çoğul: niyet farkı

Tekil ve çoğul sorgular bazen farklı niyet taşır. Genel eğilim şöyle: çoğul sorgu ("kedi mamaları", "hosting firmaları") liste, kategori ya da karşılaştırma beklentisine; tekil sorgu ("kedi maması nedir", "hosting") tanıma ya da tek bir seçeneğe daha yakın olabilir. Bu bir kural değil, kontrol etmeniz gereken bir ihtimal.

Benim yöntemim basit: önemli bir sorgunun tekil ve çoğul hâlini ayrı ayrı gizli pencerede arıyorum ve ilk 10 sonucu karşılaştırıyorum. Sonuçlar büyük ölçüde aynıysa tek sayfa yeterli. Belirgin şekilde farklıysa, iki farklı sayfa türü gerekebilir. Bu karşılaştırmanın mantığını arama niyeti yazısında anlattım.

Türkçe karakterli ve karaktersiz yazım

Kullanıcıların bir kısmı telefon klavyesinde ya da alışkanlıkla Türkçe karakter kullanmadan yazar: "şişme havuz" yerine "sisme havuz", "ılık su" yerine "ilik su", "çiçek" yerine "cicek". Google bu tür yazımları çoğu zaman doğru kelimeyle eşleştirir ve sonuç sayfasında Türkçe karakterli hâli kalın gösterir.

Yine de iki şeye dikkat ediyorum:

  • Anlam çakışması. Karaktersiz yazım başka bir kelimeye denk gelebilir. "sisme" ile "şişme" kolay eşleşir, ama "ilik" hem "ılık" hem de "ilik" (kemik iliği) olabilir. Bu tür sorgularda Google'ın hangi anlamı seçtiğini sonuç sayfasında görürsünüz.
  • Sayfa metnine karaktersiz yazımı eklememek. Bazı siteler "sisme havuz" gibi hatalı yazımları metne gizlice serpiştiriyor. Bu okuyucuya kötü görünür ve gereksizdir. Sayfayı doğru Türkçeyle yazın.

Kesme işareti ve özel isimler

Özel isimlere gelen ekler kesme işaretiyle ayrılır: "Google'ın", "İstanbul'da", "WordPress'e". Kullanıcılar ise arama kutusuna çoğu zaman kesmesiz yazar: "istanbulda kiralık daire", "googlein yeni güncellemesi". Google genellikle bu biçimleri eşleştirebiliyor. Başlık ve metinde doğru yazımı kullanın; kesmesiz biçimi başlığa koymak anahtar kelime avantajı sağlamaz ama okuyucuya özensiz görünür.

Bitişik ve ayrı yazım

Bazı kavramlar birden fazla biçimde yazılır: "web sitesi" ve "website", "e-ticaret", "eticaret" ve "e ticaret", "arka plan" ve "arkaplan". Bu varyasyonların hacmi birbirinden çok farklı olabilir ve bazen sonuç sayfaları da ayrışır.

Burada Google Trends'teki karşılaştırma işime yarıyor: hangi biçimin daha yaygın olduğunu göreli olarak gösteriyor. Ana başlıkta en yaygın ve doğru kabul edilen biçimi kullanıyorum; diğer biçim metinde doğal olarak geçiyorsa geçiyor, zorlamıyorum.

İngilizce terimler ve Türkçe karşılıkları

Teknik konularda aynı şey hem İngilizce hem Türkçe aranır: "SEO uyumlu" ve "seo friendly", "backlink" ve "geri bağlantı", "hosting" ve "barındırma". Genellikle sektörde yerleşmiş terim daha çok aranır, ama bu hedef kitleye göre değişir. Teknik bir kitle İngilizce terimi yazarken, küçük işletme sahibi Türkçe karşılığı yazabilir.

İki biçimi de aynı sayfada doğal olarak kullanmak çoğu zaman yeterli: "SEO uyumlu (seo friendly) tema" gibi bir ilk kullanım, iki kitleyi de karşılar.

Kodda İ ve ı: sessiz hatalar

Programlama dillerinin varsayılan küçük harf dönüşümü Türkçeyi bilmez. İngilizcede "I" harfinin küçüğü "i"dir; Türkçede ise "I" harfinin küçüğü "ı", "İ" harfinin küçüğü "i"dir. Anahtar kelime listelerini normalleştirirken ya da slug üretirken bu fark yanlış eşleşmelere yol açar.

JavaScript

"IĞDIR".toLowerCase();              // "iğdir"  (yanlış, "ığdır" olmalı)
"İSTANBUL".toLowerCase();           // "i̇stanbul" (i + birleşik nokta, 9 karakter)
"İSTANBUL".toLocaleLowerCase("tr"); // "istanbul"
"IĞDIR".toLocaleLowerCase("tr");    // "ığdır"
"istanbul".toLocaleUpperCase("tr"); // "İSTANBUL"

toLowerCase() "İ" harfini "i" artı görünmez bir birleşik nokta karakterine çeviriyor. Ekranda aynı görünen iki kelime, karşılaştırmada eşit çıkmıyor. Türkçe metinde toLocaleLowerCase("tr") kullanın. Ama tersine bir tuzak da var: kullanıcı "ISTANBUL" diye Türkçe karaktersiz büyük harfle yazdıysa, Türkçe dönüşüm bunu "ıstanbul" yapar. Kaynak verinin nasıl yazıldığını bilmeden tek bir kural seçmeyin.

PHP

<?php
// PHP 8.2+ strtolower yalnızca ASCII harfleri dönüştürür
var_dump(strtolower("IĞDIR İSTANBUL"));    // "iĞdir İstanbul"

// mb_strtolower Unicode kurallarını uygular, Türkçe kuralını bilmez
var_dump(mb_strtolower("IĞDIR İSTANBUL")); // "iğdir i̇stanbul"

// Türkçe için önce I ve İ harflerini elle çevirin
function trKucuk(string $s): string {
    return mb_strtolower(str_replace(['I', 'İ'], ['ı', 'i'], $s), 'UTF-8');
}
var_dump(trKucuk("IĞDIR İSTANBUL"));       // "ığdır istanbul"

PHP 8.2'den önce strtolower setlocale ayarına bağlıydı ve tek baytlık bir yerel ayarda UTF-8 metni bozabiliyordu. 8.2 ile yerel ayardan bağımsız hâle geldi ve yalnızca ASCII harflere dokunuyor. mb_strtolower ise yerel ayar parametresi almıyor. Bu yüzden Türkçe metin için yukarıdaki gibi küçük bir yardımcı fonksiyon kullanıyorum.

Türkçe karakterli slug

URL'de Türkçe karakter kullanmak teknik olarak mümkün; tarayıcı ve Google UTF-8 karakterli yolları işleyebilir. Ancak bu karakterler paylaşıldığında %C5%9F gibi yüzde kodlamasına dönüşür ve bağlantı okunmaz hâle gelir. Ben slug'larda Türkçe karakterleri ASCII karşılıklarına çeviriyorum.

function slugYap(metin) {
  const harita = { ç: "c", ğ: "g", ı: "i", ö: "o", ş: "s", ü: "u" };
  return metin
    .toLocaleLowerCase("tr")
    .replace(/[çğıöşü]/g, (h) => harita[h])
    .normalize("NFKD")
    .replace(/[̀-ͯ]/g, "") // kalan aksanları temizle
    .replace(/[^a-z0-9]+/g, "-")
    .replace(/^-+|-+$/g, "");
}
slugYap("Google'ın Türkçe Arama Sonuçları");
// "google-in-turkce-arama-sonuclari"

Kesme işareti tireye dönüşüyor; isterseniz öncesinde kesme işaretini tamamen silebilirsiniz. Önemli olan, sitede tek bir kuralın tutarlı uygulanması. Elle denemek için slug oluşturucu aracını kullanabilirsiniz.

Alan adında Türkçe karakter ise ayrı bir konu. "örnek.com" gibi bir alan adı DNS düzeyinde xn--rnek-4qa.com biçimindeki Punycode karşılığıyla çalışır. Sunucu yapılandırmasında, yönlendirmelerde ve Search Console mülkünde hangi biçimi kullandığınızı kontrol etmek için Punycode dönüştürücü işinize yarar.

Kontrol listesi

  • Ekli varyasyonları ayrı anahtar kelime değil, aynı grubun parçası olarak ele alıyorum.
  • Önemli sorguların tekil ve çoğul hâllerini ayrı ayrı arayıp sonuçları karşılaştırdım.
  • Türkçe karaktersiz yazımda anlam çakışması olup olmadığını kontrol ettim.
  • Başlık ve metinde doğru yazımı kullanıyorum; hatalı yazımları metne serpiştirmiyorum.
  • Bitişik/ayrı ve İngilizce/Türkçe varyasyonlar için Trends ve sonuç sayfasına baktım.
  • Kodda küçük harf dönüşümü için Türkçe kurallarını uyguluyorum.
  • Slug kuralım tek ve tutarlı; Türkçe karakterler ASCII karşılıklarına çevriliyor.

Comments / questions

If you have a question about any topic or wish to contact me: Telegram or send an email to [email protected] Thanks!

Related pages