Türkçe ve İngilizce sayfaları arama motorlarına doğru tanıtmak için Astro'da adres yapısı, ortak içerik anahtarları ve hreflang etiketleri nasıl kurulur?
İki dilli bir site yapmak, metni çevirmekten ibaret değil. Arama motoruna “bu sayfanın İngilizcesi şu, Türkçesi bu” demezseniz, iki sayfa birbirinin rakibi gibi davranır ya da yanlış ülkedeki kullanıcıya yanlış dil gösterilir. Bu sitede kullandığım yapıyı adım adım anlatayım.
1. Adres yapısına karar verin
Üç yaygın seçenek var:
| Yapı | Örnek | Not |
|---|---|---|
| Alt dizin | site.com/en/ |
Kurulumu en kolay, tek alan adı otoritesi |
| Alt alan adı | en.site.com |
Ayrı site gibi davranır |
| Ayrı alan adı | site.co.uk |
Ülke hedeflemesi güçlü, bakım zor |
Bu sitede Türkçe kökte, İngilizce /en/ altında duruyor. Adresler de dile göre çevrili: /hakkimda/ ile /en/about/ aynı sayfanın iki dili.
2. Her içeriğe ortak bir anahtar verin
Çevrili adresler güzel ama bir sorun yaratır: sistem hangi sayfanın hangisinin karşılığı olduğunu adresten anlayamaz. Çözüm, iki dosyaya aynı key değerini vermek:
---
title: CRM mi ERP mi?
lang: tr
key: crm-vs-erp
---
İngilizce dosyada da key: crm-vs-erp yazar. Astro içerik koleksiyonlarında bu eşleşmeyi bulmak tek satır:
const twin = all.find((e) => e.data.key === entry.data.key && e.data.lang !== entry.data.lang);
3. hreflang etiketlerini her sayfaya yazın
Her sayfanın <head> bölümü, kendisinin ve karşılığının adresini söylemeli. Kendini de listelemek unutulan bir kuraldır:
<link rel="alternate" hreflang="tr" href="https://semih.fun/hakkimda/" />
<link rel="alternate" hreflang="en" href="https://semih.fun/en/about/" />
<link rel="alternate" hreflang="x-default" href="https://semih.fun/hakkimda/" />
x-default, dili eşleşmeyen ziyaretçilere hangi sürümün gösterileceğini söyler.
4. Site haritasında da aynı bağlantıları verin
Site haritası, hreflang bilgisini ikinci bir kanaldan iletir. Adresler çevrili olduğunda hazır eklentiler eşleşmeyi bulamayabilir; bu yüzden bu sitede site haritası, aynı key mantığıyla elle üretiliyor.
5. Dil düğmesi karşılığa gitsin
Dil düğmesine basan kullanıcıyı ana sayfaya atmak, iki dilli sitelerin en sık hatasıdır. Düğme, bulunduğu sayfanın karşılığına gitmeli; karşılık yoksa o dilin ilgili liste sayfasına.
Sık yapılan hatalar
- Karşılıklı olmayan hreflang: A, B’yi gösteriyor ama B, A’yı göstermiyor.
- Dil kodu yerine ülke kodu yazmak (
hreflang="tr"doğru,hreflang="tu"yanlış). - Çeviriyi makineye bırakıp sayfa başlığını ve açıklamasını çevirmeyi unutmak.
Bu yapının tamamı, Veritabanı olmadan site yazısında anlattığım Markdown düzeniyle birlikte çalışıyor.