Astro ile iki dilli site: hreflang'i doğru bağlamak

Semih2 dk okuma

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.

Kitapçıkta devamı

  1. 1 dk okuma

    Veritabanı olmadan site: Markdown ve Astro ile içerik yönetimi

    Bu site veritabanı kullanmıyor. Yazılar, projeler ve hizmetler Markdown dosyalarından üretiliyor. Neden bu yolu seçtiğimi ve nasıl çalıştığını anlatıyorum.

  2. 2 dk okuma

    GEO: yapay zeka yanıtlarında kaynak gösterilmek için içerik nasıl yazılır?

    Arama artık yalnızca on mavi bağlantı değil. ChatGPT, Perplexity ve Gemini gibi yanıt motorlarının anlayıp alıntıladığı içerik için yapı, dil ve teknik öneriler.

Şans

Aklında bir proje mi var? Kutuyu açalım: ne yapmak istediğini anlat, sana kapsamı ve yol haritasını içeren bir teklif hazırlayayım.

Teklif iste

ya da doğrudan yaz: merhaba@semih.fun