Hreflang, aynı içeriğin farklı dil veya bölge sürümlerini arama motorlarına bildiren bir işarettir; doğru kurulduğunda Google, Almanya'daki kullanıcıya Almanca sayfanızı, Türkiye'deki kullanıcıya Türkçe sayfanızı gösterebilir. Kurulumun özü üç kuraldır: her sürüm diğer tüm sürümleri listeler, her sürüm kendini de listeler ve bu bağlantılar karşılıklıdır. Kurallardan biri bozulursa Google ilgili işaretleri yok sayabilir.
Bu yazı, Türkçe sitesine İngilizce, Almanca veya Arapça sürüm eklemek isteyen işletmeler için çok dilli yapının nasıl kurulacağını, hreflang'ın nasıl yazılacağını ve en sık yapılan hataları anlatıyor.
Hreflang tam olarak ne işe yarar?
Hreflang, bir sayfanın hangi dilde ve isteğe bağlı olarak hangi ülkedeki kullanıcılar için hazırlandığını belirten bir HTML özelliğidir (attribute). Sözlükteki hreflang tanımı da bunu kısaca özetler.
Ne yaptığını ve ne yapmadığını ayırmak önemli:
- Yapar: Arama sonuçlarında kullanıcının diline veya ülkesine uygun sürümün gösterilmesine yardımcı olur.
- Yapar: Benzer içerikli bölgesel sürümlerin (ör. İngiltere ve ABD için iki İngilizce sayfa) birbirinin kopyası gibi algılanmasını önlemeye yardım eder.
- Yapmaz: Sayfanızı sıralamada yükseltmez ve kullanıcıyı otomatik olarak bir sürüme yönlendirmez.
- Kesin bir komut değildir: Google, hreflang'ı bir işaret (signal) olarak değerlendirir; içerik ve diğer işaretlerle çelişirse farklı bir sürümü gösterebilir.
Bing gibi bazı arama motorlarının dil belirlemede farklı işaretlere ağırlık verdiğini de unutmayın; bu rehber Google'ın belgelediği kuralları esas alır.
Önce yapı: Çok dilli site için URL düzeni
Hreflang'dan önce, dil sürümlerinin hangi adreslerde duracağına karar verin. Üç yaygın seçenek vardır:
- Alt klasör (subdirectory): ornek.com/en/, ornek.com/de/. Kurulumu ve bakımı en kolay seçenektir; tüm sürümler aynı alan adının gücünü paylaşır. Küçük ve orta ölçekli siteler için çoğu zaman en mantıklı tercihtir.
- Alt alan adı (subdomain): en.ornek.com. Farklı ekipler veya farklı altyapılar gerekiyorsa kullanılır.
- Ülke kodlu alan adı (ccTLD): ornek.de, ornek.com.tr. Ülkeye güçlü bir yerellik işareti verir, ama her biri ayrı bir site gibi yönetilmelidir. Uzantı seçimini alan adı nasıl seçilir? yazısında anlattık.
Google, dili yalnızca adres parametresiyle (ornek.com/?lang=en) ayırmayı veya aynı adreste dili çerezle değiştirmeyi önermez; her dil sürümünün kendine ait, ayrı bir adresi olmalıdır.
Dil ve bölge kodları nasıl yazılır?
Hreflang değeri iki parçadan oluşur:
- Dil kodu (zorunlu): ISO 639-1 biçiminde iki harf. Türkçe için "tr", İngilizce için "en", Almanca için "de", Arapça için "ar".
- Bölge kodu (isteğe bağlı): ISO 3166-1 Alpha 2 biçiminde ülke kodu. Dil kodundan sonra tireyle eklenir: "en-GB", "de-AT", "tr-CY" gibi.
Sık yapılan kod hataları:
- Yalnızca ülke kodu yazmak: "de" Almancayı anlatır, Almanya'yı değil. Yalnızca bölge kodu (ör. sadece "GB") geçersizdir.
- Yanlış ülke kodu: Birleşik Krallık için doğru kod "GB"dir; "UK" geçersizdir.
- Bölgeye gerek yokken bölge eklemek: Tek bir İngilizce sürümünüz varsa "en" yeterlidir. Bölge kodunu ancak aynı dilde farklı ülkeler için gerçekten farklı içerik (fiyat, para birimi, kargo koşulları) sunuyorsanız kullanın.
Hreflang'ı eklemenin üç yolu
Google üç yöntemi destekler; birini seçin ve tutarlı kullanın:
- HTML başlığında (head) bağlantı etiketi: Her sayfanın head bölümüne, her dil sürümü için rel="alternate" ve hreflang özellikli bir link etiketi eklenir. Küçük sitelerde en anlaşılır yöntemdir; WordPress'te çok dilli eklentilerin çoğu bunu otomatik yapar.
- HTTP üst bilgisi (header): PDF gibi HTML olmayan dosyalar için kullanılır.
- XML site haritası: Her adres için diğer dil sürümleri site haritasında listelenir. Çok sayfalı sitelerde sayfa kodunu şişirmediği için tercih edilir. Site haritasının temelleri sitemap.xml rehberinde anlatılıyor.
Hangi yöntemi seçerseniz seçin, bağlantılarda her zaman tam adres (https:// ile başlayan) kullanın.
Üç altın kural: Kendine, karşılıklı ve eksiksiz
Hreflang hatalarının çoğu bu üç kuralın birinden kaynaklanır:
- Kendine bağlantı (self-reference): Türkçe sayfa, hreflang listesinde kendisini de "tr" olarak göstermelidir.
- Karşılıklılık (return link): Türkçe sayfa İngilizce sayfayı gösteriyorsa, İngilizce sayfa da Türkçe sayfayı göstermelidir. Google, karşılık verilmeyen bağlantıları yok sayabilir. Bu kural, başkasının sitenizi kendi sayfasının "çevirisi" gibi göstermesini de engeller.
- Eksiksiz küme: Üç dil sürümü varsa her sayfada üç satır bulunur; hepsi aynı listeyi taşır.
Somut bir örnek: Kapadokya'da bir butik otelin "odalar" sayfasının Türkçe, İngilizce ve Rusça sürümleri olsun. Üç sayfanın her birinde aynı üç hreflang satırı (tr, en, ru) ve isteğe bağlı bir x-default satırı yer alır. Biri eksik kalırsa, o dil için işaret zayıflar.
x-default: Hiçbir dile uymayan ziyaretçi için
x-default, kullanıcının diline veya bölgesine uyan bir sürüm olmadığında gösterilecek sayfayı belirten özel bir değerdir. Genellikle dil seçim sayfası veya en geniş kitleye hitap eden sürüm (çoğu zaman İngilizce) x-default olarak işaretlenir. Zorunlu değildir, ama Türkçe ve Almanca sürümü olan bir siteye Japonya'dan gelen bir kullanıcıyı düşündüğünüzde işe yarar.
Hreflang ve canonical birlikte nasıl çalışır?
En sık karıştırılan konu budur. Kural basit: her dil sürümünün canonical etiketi kendisini göstermelidir.
- Doğru: İngilizce sayfanın canonical'ı İngilizce sayfanın kendi adresidir.
- Yanlış: Tüm dil sürümlerinin canonical'ını Türkçe sayfaya vermek. Bu, Google'a "diğer sürümler bu sayfanın kopyası" demektir ve diğer dillerin dizinden çıkmasına yol açabilir.
Ayrıca hreflang ile listelediğiniz adresler, indekslenebilir ve 200 durum koduyla açılan asıl adresler olmalıdır; yönlendirilen, noindex etiketli veya 404 veren adresleri listelemeyin. Canonical mantığının tamamı için canonical etiketi nedir? yazısına bakın; yönlendirme zincirlerini yönlendirme testi ile kontrol edebilirsiniz.
Çeviri kalitesi ve kullanıcı deneyimi
Hreflang yalnızca teknik bir etikettir; asıl değeri içerik yaratır.
- Gerçek çeviri, gerçek yerelleştirme: Fiyat, para birimi, ölçü birimi, telefon biçimi ve kargo koşulları da dile ve ülkeye uygun olmalı. Denetimsiz makine çevirisi, okur için düşük kaliteli bir deneyim yaratır; Google'ın yönergeleri de kullanıcıya değer katmadan toplu üretilen içeriği spam kapsamında değerlendirebilir.
- Otomatik yönlendirme yapmayın: Ziyaretçiyi IP adresine göre zorla bir dile göndermek, hem kullanıcıyı (yurt dışındaki bir Türk'ü düşünün) hem de farklı konumlardan tarama yapan Googlebot'u şaşırtabilir. Bunun yerine görünür bir dil seçici ve isteğe bağlı bir öneri şeridi kullanın.
- Dil seçici her sayfada: Seçici, kullanıcıyı ana sayfaya değil, bulunduğu sayfanın diğer dildeki karşılığına götürmeli.
- Meta etiketleri de çevirin: Her sürümün title ve meta açıklaması kendi dilinde olmalı. Görünümü meta etiket testi ile kontrol edebilirsiniz.
Kurulumdan sonra kontrol
Yayından sonra şu kontrolleri yapın:
- Rastgele birkaç sayfanın kaynak kodunda hreflang satırlarının eksiksiz olduğunu görün.
- Her listelenen adresi tarayıcıda açın; yönlendirme veya hata olmadığından emin olun.
- Search Console'da ilgili dil klasörlerinin indekslendiğini ve ülke bazında gösterimlerin arttığını izleyin.
- Yeni sayfa eklediğinizde tüm dil sürümlerini birlikte yayınlayın veya çevrilmemiş sayfayı listeden çıkarın.
Çok dilli yapı, teknik sağlığın daha geniş bir parçasıdır. Platformdaki sitelerde en sık görülen teknik eksikleri organikhit.io'nun web sağlığı raporunda inceleyebilirsiniz. Konunun tamamı için teknik SEO ve site sağlığı rehberine bakın.
Sık sorulan sorular
Tek dilli sitede hreflang gerekir mi?
Hayır. Hreflang, aynı içeriğin birden fazla dil veya bölge sürümü varsa anlamlıdır. Yalnızca Türkçe içerik sunuyorsanız hreflang eklemenize gerek yoktur.
Hreflang hatası sitemi cezalandırır mı?
Google'ın açıklamalarına göre hatalı hreflang bir ceza nedeni değildir; hatalı satırlar genellikle yok sayılır. Ancak bu durumda yanlış dil sürümü gösterilebilir veya bazı sürümler beklenen ülkede görünmeyebilir.
Sayfanın sadece bir kısmını çevirdim, hreflang ekleyebilir miyim?
Hreflang, içeriği eşdeğer olan sayfalar için kullanılır. Ana içerik çevrilmemişse o sayfayı hreflang kümesine eklemek yerine çeviriyi tamamlayın; aksi hâlde kullanıcıya kendi dilinde olmayan bir sayfa gösterilebilir.