Çok Dilli Sitede Open Graph ve Twitter Card Dil Yönetimi

Çok dilli sitede Open Graph ve Twitter Card dil yönetimini temsil eden editoryal blog görseli

Bir yazı Facebook'ta, LinkedIn'de veya WhatsApp'ta paylaşıldığında görünen kart, hreflang setinden tamamen bağımsız bir mekanizmayla üretilir. Bu kartı oluşturan crawler; Facebook'un harici olarak, Twitter/X'in kendi tarafında; sayfanın <head> bölümündeki Open Graph ve Twitter Card meta etiketlerini okur, hreflang bağlantılarını görmezden gelir. Çok dilli bir sitede İngilizce sayfa paylaşıldığında Türkçe başlık, ya da Türkçe sayfa paylaşıldığında yanlış dilde bir görsel çıkması, teknik SEO kurulumu tamamen doğru olsa bile mümkündür.

Bu kopukluk çoğu zaman fark edilmez, çünkü GSC raporlarında görünmez; sosyal paylaşım önizlemesi kontrol edilmediği sürece sorun sessiz kalır. Marka bir kampanya için İngilizce sayfayı paylaştığında kartın Türkçe göründüğü fark edildiğinde ise düzeltme genellikle acele ve dağınık yapılır.

og:locale ve hreflang aynı dil sinyalini mi taşır?

og:locale etiketi, o anda görüntülenen sayfanın hangi dil ve bölgede olduğunu Facebook'un Open Graph protokolüne bildirir; format tr_TR, en_US gibi alt çizgi ile ayrılmış BCP 47 benzeri bir yapıdır (hreflang'daki tire kullanımından farklı). Her dil sürümünün kendi og:locale değerini kendi sayfasında taşıması gerekir; bu, yapısal verinin dil sürümüne göre ayrılması ile aynı disiplindir: Türkçe sayfada tr_TR, İngilizce sayfada en_US ya da en_GB.

Bu etiket hreflang ile aynı bilgiyi taşısa da farklı bir tüketiciye hitap eder. Hreflang, Googlebot'a dil sürümlerini karşılıklı olarak bildirerek arama sonucunda hangi sürümün gösterileceğine karar verir. og:locale ise sosyal platform crawler'ına, kartın hangi dilde render edileceğine dair bir ipucu verir; ama crawler bu ipucunu her zaman kart dilini belirlemek için kullanmaz, çoğu zaman sadece meta veri olarak saklar. Kartın gerçek dili, og:title ve og:description içindeki metnin kendisidir. Bu yüzden og:locale tek başına yeterli değildir; her sayfanın kendi dilindeki başlık ve açıklamayla eşleşmesi asıl garantidir.

og:locale:alternate ne zaman gereklidir, ne zaman gereksizdir?

og:locale:alternate, bir sayfanın hangi diğer dillerde de mevcut olduğunu bildiren tekrarlanabilir bir etiketir. Türkçe sayfada <meta property="og:locale:alternate" content="en_US"> gibi bir satır, Facebook'a bu içeriğin İngilizce sürümünün de var olduğunu söyler. Ayrı URL yapısı kullanan bir çok dilli sitede bu etiketin pratik faydası sınırlıdır; çünkü her dil zaten kendi URL'inde, kendi meta setiyle yaşar ve paylaşım her zaman o spesifik URL üzerinden yapılır.

Etiketin asıl değeri, aynı URL'nin birden fazla dile hizmet ettiği (locale-adaptive) kurulumlarda ortaya çıkar; bu senaryoda Facebook, kullanıcının kendi dil ayarına göre hangi alternate locale'in gösterileceğine karar verirken bu listeyi kullanabilir. Ayrı URL yapısı olan bir sitede og:locale:alternate eklemek zarar vermez ama zorunlu da değildir; eklenecekse her dil sayfası kendi harici URL'sine değil kendi og:url'una sahip kalmalı, alternate listesi sadece bilgilendirme amaçlı kalmalıdır. Pratik faydası sınırlıdır.

Paylaşım görseli her dil sürümünde aynı mı olmalı?

Kapak görseli metin içeriyorsa (başlık, etiket, illüstrasyon üzerine yazılmış kelime), her dil versiyonunun kendi dilinde bir görsele sahip olması gerekir. Türkçe metin içeren bir görselin İngilizce sayfada og:image olarak kullanılması, paylaşım kartında okunmayan veya yanlış dilde bir görsel gösterir; bu durum kullanıcı güvenini doğrudan etkiler.

Metin içermeyen, tamamen editoryal ve dil bağımsız illüstrasyonlar (bu sitenin kapak görselleri gibi) için aynı görselin tüm dil versiyonlarında kullanılması sorun oluşturmaz; çünkü görsel zaten dilden bağımsız bir kavramı temsil eder. Ayrım noktası görselin içeriğidir, dosya adı veya konumu değil. Görsel boyutu her sayfada sabit kalmalı (1200x630 gibi standart Open Graph oranı); dil değişse de teknik boyut aynı kalmalı, aksi halde platformlar arası önizleme tutarsız kırpma üretebilir.

Twitter Card meta alanları OG'den bağımsız mı çalışır?

Twitter/X, Open Graph etiketlerini kısmen tanır ama kendi twitter: öneki ile ayrı bir meta seti önerir: twitter:card, twitter:title, twitter:description, twitter:image. Bu alanlar boş bırakılırsa Twitter genellikle karşılık gelen og: etiketlerine geri düşer (fallback). Garanti değildir. Platform güncellemeleriyle değişir. Çok dilli bir sitede her dil sayfasının kendi twitter:title ve twitter:description değerini kendi og: karşılığıyla aynı dilde ve senkron tutması, fallback'e güvenmekten daha güvenilirdir.

Uygulamada sık görülen hata, twitter: etiketlerinin şablonda sabit (hardcoded) tek bir dilde tutulup her sayfanın değişken içeriğinin sadece og: tarafına yazılmasıdır. Bu durumda Türkçe bir sayfa Twitter'da hâlâ İngilizce başlıkla paylaşılabilir; hata fark edilmediği sürece haftalarca sürebilir. Şablon üzerinde her iki meta setinin de aynı değişkenden (sayfanın kendi başlığı ve açıklaması) beslendiğini doğrulamak, bu hatayı kalıcı olarak önler.

Facebook ve LinkedIn crawler'ı hangi dili gösterir: URL mü, meta mı belirler?

Bu crawler'lar bir bağlantı paylaşıldığında o anki URL'e istek gönderir ve dönen HTML'in <head> bölümünü okur; kullanıcının tarayıcı dili, konum bilgisi veya hesap dili bu okumayı etkilemez. Paylaşılan URL Türkçe sayfaysa kart her zaman o sayfanın meta etiketlerinden üretilir, paylaşımı yapan veya gören kişinin dil tercihi kartın dilini değiştirmez.

Bu netlik, çok dilli sitelerde asıl SEO kararının paylaşım öncesinde verilmesi gerektiği anlamına gelir: hangi dil sayfası paylaşılıyorsa kart o dilde çıkar, başka bir çözüm yolu yoktur. Bir kampanya birden fazla dile aynı anda yayılacaksa, her dil için ayrı bağlantı paylaşılmalı, tek bir URL'in "otomatik" olarak doğru dilde kart üreteceği varsayılmamalıdır. Facebook'un Sharing Debugger aracı ve LinkedIn Post Inspector, hangi meta setinin gerçekte okunduğunu doğrulamak için devreye girer; crawler'ın cache'lediği eski bir önizleme, meta etiketler güncellendikten sonra da bir süre değişmeden kalabilir.

Başlık ve açıklama meta'ları hreflang setiyle nasıl senkron kalır?

og:title ve og:description genellikle sayfanın <title> ve meta description'ıyla aynı veya çok yakın metni taşır; bu iki alanın farklı dillerde tutulması (örneğin sayfa Türkçe ama og etiketleri şablon hatasıyla İngilizce kalmış) hem SEO hem sosyal paylaşım açısından tutarsızlık üretir. Her yeni dil sayfası yayına alınırken kontrol edilecek nokta, bu dört alanın (title, description, og:title, og:description) aynı dilde ve birbiriyle anlamca örtüşür halde olmasıdır.

Hreflang setinin kendisi Open Graph etiketlerini doğrudan etkilemez, ama dolaylı bir ilişki vardır: hreflang doğru kurulmuşsa her dil sürümü kendi self-canonical URL'ine ve meta setine sahiptir; bu da her dilin kendi Open Graph etiketlerini taşıyabilmesinin ön koşuludur. Tek URL'in birden fazla dile hizmet ettiği locale-adaptive mimaride ise Open Graph etiketleri de tek bir dile kilitlenir, çünkü URL sabittir ve crawler her zaman aynı isteği aynı meta setiyle karşılar; bu, Worker tabanlı dil değişiminin sosyal paylaşım tarafında yarattığı ek bir kısıtlamadır.

Yayın öncesi ve sonrası doğrulama: hangi araçlarla test edilir?

Yeni bir dil sayfası veya şablon değişikliği yayına alınmadan önce doğrulanacak sıra şu şekilde kurulabilir: önce sayfanın kaynak kodunda og:locale, og:title, og:description, og:image ve karşılık gelen twitter: alanlarının doğru dilde ve dolu olduğu görsel olarak kontrol edilir. Ardından Facebook Sharing Debugger'a URL girilip "Scrape Again" ile crawler'ın cache'i tazelenir ve önizlemenin gerçekten beklenen dilde çıktığı doğrulanır.

LinkedIn Post Inspector benzer bir tazeleme ve önizleme sağlar; Twitter/X için resmi bir doğrulama aracı artık herkese açık değildir, bu yüzden gerçek bir paylaşım (taslak veya kısıtlı görünürlükte) ile manuel kontrol yapılması pratikte daha güvenilir kalır. Her iki araçta da görselin doğru boyutta yüklendiği, başlığın kırpılmadığı ve açıklamanın sayfanın gerçek dilinde olduğu tek tek teyit edilmelidir; şablon seviyesinde yapılan bir düzeltme tek bir sayfada test edilip diğer tüm dil sürümlerine sirayet ettiği varsayılmamalı; temsili bir URL'yi her dilden doğrulayan kontrol protokolü daha güvenilirdir.

Open Graph ve Twitter Card etiketleri, hreflang setinin gölgesinde kalan ama sosyal trafik açısından arama trafiğiyle eşdeğer önemde bir katmandır. Bir sayfa Google'da mükemmel şekilde doğru dilde indekslenirken WhatsApp'ta paylaşıldığında yanlış dilde bir kart göstermesi, iki farklı sinyal sisteminin (arama motoru tarafı ve sosyal crawler tarafı) birbirinden habersiz kurulduğunun göstergesidir. Biri diğerini otomatik olarak kapsamaz. İki sistemin ayrı kurulması, her birinin bağımsız test edilmesi gerektiği anlamına da gelir.

Her yeni dil eklendiğinde bu kontrolün şablon seviyesinde bir kere yapılıp sonra unutulması yaygın bir alışkanlıktır; oysa CMS güncellemeleri, tema değişiklikleri veya yeni bir sayfa tipi eklenmesi bu meta alanlarını sessizce bozabilir. Sosyal paylaşım önizlemesini periyodik olarak, özellikle büyük bir kampanya öncesinde, gözden geçirmek küçük bir maliyetle büyük bir marka hatasını önler.