Çok dilli web sitesi kurmak: hreflang, i18n mimarisi ve içerik yönetimi
İkinci dili eklemek çeviri işi değil mimari karardır. URL stratejisi, hreflang kurulumu, çeviri borcunu önleme ve çok dilli sitede SEO'yu bozan yedi hata.
İkinci dili eklemek çoğu ekipte "metinleri çevirtelim" işi olarak başlar ve altı ay sonra senkronize olmayan iki site hâline gelir. Oysa çok dillilik bir mimari karardır: URL yapısı, yönlendirme, içerik modeli ve yayın süreci baştan buna göre kurulmazsa, çeviri borcu birikir.
Bu yazıda üç dilli bir siteyi ayakta tutan kararları — bu sitenin kendi kurulumu dahil — adım adım anlatıyoruz.
Özet
- Çok dillilik çeviri işi değil, URL ve içerik mimarisi kararıdır.
- Kurumsal sitelerin çoğunda doğru URL stratejisi alt dizindir (site.com/tr/).
- hreflang üç kuralla çalışır: karşılıklılık, kendini içerme, x-default.
- Karşılığı olmayan bir sayfa için o dili hreflang'de listelemek hatadır.
- Çeviri borcunu önleyen tek şey, eksikleri build'de hata veren otomatik kontroldür.
Önce karar: hangi diller ve neden
Dil eklemek bedava değildir. Her yeni dil; çeviri, editör kontrolü, güncelleme senkronizasyonu ve ölçüm yükü getirir. Bu yüzden liste "olsa iyi olur" ile değil, veriyle kurulmalıdır.
| Sinyal | Nereden bakılır | Ne anlatır |
|---|---|---|
| Mevcut trafiğin dil dağılımı | Analitik — tarayıcı dili, ülke | Zaten gelen ama anlamayan kitle |
| Arama hacmi | Hedef dildeki anahtar terimler | Pazar var mı |
| Satış kaynağı | CRM / gelen talepler | Para hangi dilden geliyor |
| Rakip durumu | Rakiplerin dil sayısı | Boşluk veya zorunluluk |
| Operasyonel kapasite | O dilde cevap verecek kişi var mı | Talebi karşılayabilir misiniz |
Son satır en çok atlanan ve en pahalıya patlayan. Rusça sayfa açıp gelen talebe Rusça cevap veremiyorsanız, kazandığınız şey hayal kırıklığıdır.
URL stratejisi: üç seçenek, tek doğru cevap
| Strateji | Örnek | Artı | Eksi |
|---|---|---|---|
| Alt dizin | site.com/tr/hizmetler | Tek alan adında otorite, en basit kurulum | Coğrafi hedefleme daha zayıf |
| Alt alan adı | tr.site.com/hizmetler | Ayrı barındırma mümkün | Otorite bölünür, kurulum karmaşık |
| Ayrı alan adı | site.com.tr | Güçlü yerel sinyal | Her alan adı sıfırdan otorite kurar |
| Parametre | site.com?lang=tr | — | Taranabilirlik sorunlu, kullanmayın |
Kurumsal sitelerin büyük çoğunluğu için cevap alt dizindir. Ayrı alan adı, yalnızca her ülkede ayrı tüzel kişilik, ayrı fiyat listesi ve ayrı ekip varsa gerekçelendirilebilir.
Slug'ları da çevirmek
Alt dizin seçtiyseniz bir karar daha var: yol adları da çevrilsin mi? Bu sitede çevriliyor —
/tr/hizmetler, /en/services, /ru/services — çünkü Türkçe arayan bir kullanıcı için Türkçe URL
hem daha okunur hem hafif bir alaka sinyalidir.
// next-intl ile yol adı eşlemesi — dil değiştirici doğru karşılığa gider
'/services': { tr: '/hizmetler', en: '/services', ru: '/services' },
'/projects': { tr: '/projeler', en: '/projects', ru: '/projects' },Dikkat: proje veya hizmet slug'ını çevirmek genelde gereksiz karmaşıklıktır. Segment adı
(/hizmetler) çevrilir, kayıt kimliği (/seo-geo) sabit kalır.
hreflang: üç kural
hreflang, arama motoruna "bu sayfanın şu dillerde karşılığı var" der. Yanlış kurulduğunda ya hiç çalışmaz ya da yanlış dili öne çıkarır. Üç kural yeterli:
- Karşılıklılık. A sayfası B'yi gösteriyorsa B de A'yı göstermelidir. Tek yönlü etiket yok sayılır.
- Kendini içerme. Her sayfa kendi dilini de listelemelidir.
- x-default. Eşleşme bulunamadığında gidilecek sürüm belirtilmelidir.
<link rel="alternate" hrefLang="tr" href="https://site.com/tr/hizmetler" />
<link rel="alternate" hrefLang="en" href="https://site.com/en/services" />
<link rel="alternate" hrefLang="ru" href="https://site.com/ru/services" />
<link rel="alternate" hrefLang="x-default" href="https://site.com/tr/hizmetler" />Bu sitede blog yazıları translationKey alanıyla eşleşiyor ve hreflang yalnızca gerçekten var
olan diller için üretiliyor. Aynı mantığın SEO tarafındaki karşılığını
SEO'dan GEO'ya yazısında anlattık.
Çeviri borcu: asıl maliyet burada
Çok dilli sitelerin gerçek sorunu ilk çeviri değil, ikinci yıldır. Türkçe sayfa güncellenir, İngilizce kalır; yeni hizmet eklenir, Rusçası unutulur. Altı ay sonra üç farklı site olursunuz.
Çözüm karmaşık değil: eksik çeviriyi yayına çıkmadan yakalayan bir kontrol. Bu sitede
pnpm content:check tam olarak bunu yapıyor — 210 içerik alanını üç dilde karşılaştırıyor ve eksik
varsa çıkış kodu 1 veriyor. İlk çalıştırıldığında iki eksik çeviriyi bulan şey bu betikti.
$ pnpm content:check
tr: works 49/49, stories 6/6, servicesList 15/15 ✓
en: works 49/49, stories 6/6, servicesList 15/15 ✓
ru: works 49/49, stories 6/6, servicesList 15/15 ✓
Toplam kontrol edilen: 210 — Sorunlu: 0İçerik modeli: neyi çevirmeli
Her şeyi çevirmek gerekmez ve genelde doğru da değildir.
Blog tarafında dikkat edilecek nokta şu: bir yazının her dilde karşılığı olmak zorunda değil, ama
olan karşılıkların birbirinin çevirisi olması gerekir. Farklı içerikleri aynı translationKey
altında eşleştirmek, hreflang'i yanlış bilgilendirir.
Sık yapılan yedi hata
- Otomatik dil yönlendirmesi. Tarayıcı diline göre zorla yönlendirme, tarayıcıların ve kullanıcıların işini bozar. Dil seçimini önerin, dayatmayın.
- Bayrak ikonuyla dil göstermek. Bayrak ülkeyi temsil eder, dili değil. Almanca konuşan bir Avusturyalı Alman bayrağına tıklamak zorunda kalmamalı.
- Yalnızca ana sayfayı çevirmek. İç sayfaları çevrilmemiş bir site, o dilde aramada görünmez.
langözniteliğini güncellememek.<html lang="tr">her dilde değişmelidir — erişilebilirlik ve ekran okuyucular buna bakar.- Meta veriyi çevirmeyi unutmak. Başlık ve açıklama Türkçe kalmışsa, sayfa İngilizce olsa bile arama sonucunda Türkçe görünür.
- Tarih, para birimi ve sayı biçimini sabitlemek.
1.500,00 ₺ile€1,500.00aynı sayı değildir; biçimlendirme dile göre yapılmalıdır. - Dil değiştiricinin ana sayfaya atması. Bir hizmet sayfasındayken dil değiştiren kullanıcı, aynı hizmetin diğer dildeki sayfasına gitmelidir.
Yedincisi teknik olarak yol adı eşlemesi gerektirir — bu sitede hizmet sayfaları arasında dil değiştirdiğinizde aynı sayfada kalırsınız.
Ölçüm: dil bazında ayrı bakın
Toplam trafik, çok dilli bir sitede yanıltıcı bir metriktir. Her dil ayrı bir pazardır ve ayrı raporlanmalıdır.
Search Console'da her dil için ayrı filtre kurun, analitikte dil boyutunu birincil segment yapın. Bir dilin dönüşüm oranı diğerinin yarısıysa sorun çeviri kalitesinde ya da o dildeki teklif uyumundadır — toplamda bakarken bu görünmez.
Bir örnek
Nexos Investment projesinde çok dillilik sonradan eklenen bir
katman değil, mimarinin parçasıydı: next-intl ile yönlendirme, ilan verisinden çok dilli otomatik
teklif üretimi ve dile göre içerik yönetimi aynı sistemde kurgulandı.
Homes in Mediterranean ve
Arslan Estates gibi uluslararası kitleye hitap eden emlak
projelerinde de aynı ihtiyaç öne çıkıyor.
Sonuç
Çok dilli site kurmanın zor kısmı çeviri değil, çevirinin zamanla senkron kalması. Doğru URL stratejisi, kurallara uygun hreflang ve eksik çeviriyi build'de yakalayan bir kontrol — bu üçü kurulduğunda ikinci ve üçüncü dil bakım yükü değil, ek pazar olur.
Kaç dille başlamanız gerektiğini konuşmak isterseniz bize yazın; teknik tarafı SEO ve GEO hizmetimiz kapsamında ele alıyoruz.
Sikca sorulan sorular
- Alt dizin mi, alt alan adı mı, ayrı alan adı mı?
- Çoğu kurumsal site için alt dizin (site.com/tr/, site.com/en/) doğru seçimdir: tek alan adında otorite biriktirir, kurulumu en basittir ve hreflang'i en az hataya açık şekilde çalıştırır. Ayrı alan adları yalnızca her ülkede ayrı tüzel kişilik, ayrı fiyatlandırma ve ayrı ekip varsa mantıklıdır.
- Otomatik çeviri kullanabilir miyim?
- Ham makine çevirisini doğrudan yayınlamak, o dildeki görünürlüğünüze zarar verir; hem arama motorları hem dil modelleri düşük kaliteli çeviriyi ayırt eder. İşe yarayan model, makine çevirisini taslak olarak kullanıp anadil konuşuru bir editörden geçirmektir — maliyeti sıfırdan çeviriye göre belirgin düşüktür.
- Her sayfayı her dile çevirmek zorunda mıyım?
- Hayır ve çoğu zaman gerekmez. Hizmet, referans ve iletişim sayfaları her dilde olmalıdır; blog içeriği ise dile göre farklılaşabilir. Önemli olan, karşılığı olmayan sayfa için hreflang'de o dili listelememektir — var olmayan bir çeviriye işaret eden etiket hatadır.
- hreflang'i yanlış kurduğumu nasıl anlarım?
- Üç klasik belirti: Search Console'da dil hedefleme hataları, yanlış dildeki sayfanın aranan dilde listelenmesi ve iki dilin birbirini kanibalize etmesi. Teknik kontrol basittir — her sayfa kendisi dahil tüm dilleri listelemeli, etiketler karşılıklı olmalı ve bir x-default bulunmalıdır.
- Çok dilli site bakımı ne kadar yük getirir?
- Asıl yük çeviri değil, senkronizasyondur: bir dilde yapılan değişikliğin diğerlerine yansımaması zamanla çeviri borcu yaratır. Bunu önlemenin en ucuz yolu, eksik çevirileri build sırasında hata olarak raporlayan bir kontrol betiğidir.
