WordPress ve çok dilli siteler
Eklentisiz Çok Dilli WordPress: Multisite, Hreflang ve Doğru Seçim
Evet, WordPress çeviri eklentisi olmadan da birden fazla dilde çalışabilir. Multisite ile nasıl yapıldığını, test edilmiş bir hreflang kodunu ve nelerden vazgeçtiğinizi dürüstçe anlattık.
Yazar: AYM FlowYayın tarihi: 7 dk okuma
Eklentisiz çok dilli WordPress sitesi kurmak mümkündür ve bazı projelerde daha temiz bir seçimdir. WordPress çekirdeğinde yerleşik bir çeviri yönetimi yoktur, ama Multisite vardır: Tek bir kurulum üzerinde her dil için ayrı bir site çalıştırmanızı sağlar. Çevirileri birbirine bağlayan ve hreflang etiketlerini basan küçük bir kod eklediğinizde, araya üçüncü taraf bir çeviri katmanı koymadan çok dilli bir yapıya sahip olursunuz. Bu rehberde bunun nasıl çalıştığını anlatıyor, test edilmiş bir kod örneği veriyor, alternatifleri karşılaştırıyor ve bir çeviri eklentisinin maliyetinden fazlasını kazandırdığı durumları da açıkça söylüyoruz.
Eklentisiz çok dilli WordPress: neyi karşılamanız gerekir?
Yöntem seçmeden önce çok dilli bir sitenin gerçekte neye ihtiyaç duyduğunu listeleyin. Çeviri eklentileri bunları paket halinde sunar; eklentisiz ilerlemek, her birini kendiniz çözmek demektir:
- Her dil için ayrı URL: /de/ ve /en/ gibi, her sürümün dizine eklenebilmesi ve paylaşılabilmesi için.
- Çeviriler arasında bağlantı: Sistemin hangi Almanca sayfanın hangi Türkçe sayfaya karşılık geldiğini bilmesi için.
- Dil değiştirici: Diğer dilin ana sayfasına değil, çevrilmiş sayfaya götüren bir seçici.
- Hreflang işaretleri: Arama motorlarına hangi sürümün kime gösterileceğini söyleyen etiketler.
- Çevrilmiş menüler, bileşenler, tema metinleri ve kalıcı bağlantılar: Yalnızca yazı içeriği değil, sitenin tamamı.
- Editör iş akışı: Neyi kimin çevireceği ve eksik çevirilerin nasıl fark edileceği.
Bu altı maddeyi karşılayan her yöntem işe yarar. Asıl soru, her birinin kurulumunun ve bakımının ne kadar emek istediğidir. Aşağıda üç yolu bu gözle karşılaştırıyoruz.
1. yol: Her dil için bir site, WordPress Multisite
Multisite tek bir WordPress kurulumunu, aynı kodu, temaları ve eklentileri paylaşan ama içeriği, ayarları ve medyası ayrı olan sitelerden oluşan bir ağa dönüştürür. Her dile ayrı bir site vermek, çeviri eklentisi olmadan çok dilli olmanın en sağlam yoludur; çünkü her dilin menüsü, bileşenleri, kalıcı bağlantıları ve site dili ayarı yapısı gereği ayrıdır.
WordPress Multisite kurulumu adım adım
- Herhangi bir değişiklikten önce siteyi ve veritabanını yedekleyin.
- Resmi Create A Network (ağ oluşturma) rehberinde anlatıldığı gibi wp-config.php dosyasına define( 'WP_ALLOW_MULTISITE', true ); satırını ekleyin.
- Araçlar, Ağ Kurulumu ekranını açın ve alt dizin (example.com/de/) veya alt alan adı (de.example.com) yapısını seçin.
- WordPress'in gösterdiği yapılandırma satırlarını wp-config.php dosyasına, yönlendirme kurallarını .htaccess dosyasına kopyalayın ve yeniden giriş yapın.
- Her dil için bir site oluşturun ve Ayarlar, Genel altından site dilini seçin.
- Temayı ve her dilin ihtiyaç duyduğu eklentileri ağ genelinde etkinleştirin.
Alt dizin yapısı her şeyi tek alan adında tutar; bu genellikle SSL açısından ve arama motorlarının tek bir marka olarak anlaması açısından daha basittir. İçeriği ve trafiği olan mevcut bir siteyi dönüştürmek, her taşıma işi kadar özen ister; yönlendirmeleri ve izlemeyi site taşıma SEO kontrol listemizde ayrıntılı anlattık.
Ne kazanırsınız, neden vazgeçersiniz?
Kazandığınız şey temiz bir ayrımdır: Her dilin menüsü, yasal sayfaları, hatta ürünleri farklı olabilir ve bir editör diğer dile dokunmadan kendi dilinde çalışabilir. Vazgeçtiğiniz şey ise kolaylıktır: Yan yana çeviri ekranı yoktur, medya her siteye ayrı yüklenir ve eklentilerin Multisite ile uyumlu olması gerekir. Bazı paylaşımlı hosting paketleri Multisite'ı kısıtlar; başlamadan önce barındırma sağlayıcınızla kontrol edin.
Eklentisiz çevirileri bağlamak ve hreflang basmak
Multisite, Almanca bir yazının Türkçe bir yazının çevirisi olduğunu bilmez. En basit ve güvenilir bağlantı, özel bir alanda ortak bir değerdir: Bir yazının tüm çevirilerine aynı grup anahtarını verin, örneğin _acme_group adlı bir alanda. Aşağıdaki ağ eklentisi bu anahtarı okur, her dil sitesinde eşleşen yazıyı bulur ve ana siteyi gösteren bir x-default dahil hreflang bağlantılarını basar. Bu etiketlerin uyduğu kuralları Google'ın sayfalarınızın yerelleştirilmiş sürümleri belgesi anlatır.
<?php
/**
* Plugin Name: Acme Network Hreflang
* Description: Prints hreflang links between translated posts on a Multisite network with one site per language.
* Network: true
* License: GPL-2.0-or-later
*/
defined( 'ABSPATH' ) || exit;
// Translations of one article share the same value in the "_acme_group" post meta.
add_action( 'wp_head', function () {
if ( ! is_singular() ) {
return;
}
$group = get_post_meta( get_queried_object_id(), '_acme_group', true );
if ( '' === $group ) {
return;
}
$links = array();
$default = '';
foreach ( get_sites( array( 'public' => 1, 'number' => 20 ) ) as $site ) {
switch_to_blog( (int) $site->blog_id );
$ids = get_posts( array(
'post_type' => 'any',
'post_status' => 'publish',
'meta_key' => '_acme_group',
'meta_value' => $group,
'fields' => 'ids',
'posts_per_page' => 1,
'no_found_rows' => true,
) );
if ( $ids ) {
$locale = get_option( 'WPLANG' ) ?: 'en_US'; // empty WPLANG means English
$lang = strtolower( strtok( $locale, '_' ) );
$url = get_permalink( $ids[0] );
$links[ $lang ] = $url;
if ( is_main_site() ) {
$default = $url;
}
}
restore_current_blog();
}
if ( count( $links ) < 2 ) {
return; // one language needs no hreflang
}
foreach ( $links as $lang => $url ) {
printf( '<link rel="alternate" hreflang="%s" href="%s" />' . "\n", esc_attr( $lang ), esc_url( $url ) );
}
if ( $default ) {
printf( '<link rel="alternate" hreflang="x-default" href="%s" />' . "\n", esc_url( $default ) );
}
} );Bu dosyanın birebir aynısını php -l ile ve üç dilli bir ağı taklit eden bir test düzeneğiyle çalıştırdık: Her dili ve x-default'u basıyor, çevirisi olmayan dili atlıyor, tek dilli yazılarda ve arşiv sayfalarında hiçbir şey basmıyor ve her durumda özgün site bağlamına geri dönüyor. Dosyayı wp-content/mu-plugins klasörüne koyabilir veya eklenti olarak ağ genelinde etkinleştirebilirsiniz.
Üç pratik not. Birincisi, dil kodu her sitenin dil ayarından alınır; tr_TR tr olur. Aynı dilin iki bölgesel sürümünü, örneğin en-GB ve en-US'i sunuyorsanız kodu bölgeyi koruyacak şekilde genişletin. İkincisi, döngü her istekte siteler arasında geçiş yapar; birkaç dil için sorun değildir, büyük ağlarda sonucu önbelleğe alın. Üçüncüsü, dil değiştirici de aynı aramayı kullanarak doğrudan çevrilmiş sayfaya bağlantı verebilir.
2. ve 3. yol: Ayrı kurulumlar veya tek sitede özel kod
Ayrı WordPress kurulumları
Her dil, alt dizinde veya kendi alan adında tamamen bağımsız bir WordPress sitesi de olabilir. Bu en güçlü ayrımı sağlar ve her hostingde çalışır; ama güncellemeleri, yedekleri ve kullanıcı hesaplarını dil sayısıyla çarpar. Çevirileri bağlamak da elle tutulan bir eşleme listesi veya bir API gerektirir. Her ülke ekibinin kendi sitesini yönettiği kurumlara uygundur.
Tek sitede her dil için özel alanlar
Teoride tüm dilleri tek bir sitede, örneğin her dil için ek alanlar ve yönlendirme kurallarıyla yönetilen bir URL önekiyle saklayabilirsiniz. Pratikte bu hızla büyür: Menüler, bileşenler, site içi arama, kalıcı bağlantılar, site haritaları, tema metinleri ve mağaza verileri dilden haberdar olmalıdır. Düzgün çalışır hale geldiğinde kendi çeviri eklentinizi yazmış olursunuz; üstelik yerleşik bir eklentinin yıllarca biriktirdiği testler olmadan.
Menüler, tema metinleri ve dil değiştirici
Yazı içeriği, çevrilmiş bir sitenin yalnızca bir parçasıdır. Multisite ağında geri kalan kısım tek sitedeki kadar zor değildir, ama yine de bir plan ister:
- Menüler ve bileşenler site başına saklanır; her dil kendi çevrilmiş etiketleri ve bağlantılarıyla kendi menüsüne sahip olur.
- Tema ve eklenti metinleri, yani düğmeler, form etiketleri ve tarih biçimleri, dil dosyalarıyla (.po ve .mo) çevrilir. WordPress, tema bir çeviri dosyasıyla geldiği veya ona çeviri eklendiği sürece, her sitenin dil ayarına göre doğru dosyayı kendiliğinden yükler.
- Kalıcı bağlantılar (slug) yazı başına belirlenir; /de/leistungen/ gibi çevrilmiş adresler doğaldır ve özgün slug'ı kopyalamak yerine bunlar kullanılmalıdır.
- Dil değiştirici başlık şablonunda yer alır. Hreflang kodundaki grup anahtarı aramasını aynen kullanabilir ve yalnızca çeviri yoksa diğer dilin ana sayfasına yönlendirir.
Çevirisi olmayan sayfalarda dil değiştiricinin nasıl davranacağına baştan karar verin. Eşleşen sayfası olmayan dili gizlemek, ziyaretçiyi istemediği bir ana sayfaya göndermekten genellikle daha anlaşılırdır. Aynı karar site haritaları için de geçerlidir: Her dil sitesinin kendi site haritası olur ve yalnızca o dilde gerçekten var olan sayfaları içermelidir.
Editör iş akışı: çevirileri senkron tutmak
Eklenti olmadığında eskimiş çevirileri işaretleyen bir panel de yoktur; bu yüzden hafif bir rutin üzerinde anlaşın:
- Özgün yazı yayımlandığı anda, çevirisi henüz yokken bile grup anahtarını atayın.
- Grup anahtarlarını ve hangi dillerde karşılıkları olduğunu gösteren basit bir liste tutun; bir tablo veya küçük bir yönetim raporu yeterlidir.
- Özgün yazı değiştiğinde tarihi bu listeye not edin ki çevirmenler hangi sürümlerin gözden geçirilmesi gerektiğini bilsin.
- Başlıkları, açıklamaları ve slug'ları anadili o dil olan biri kontrol etsin; arama yapan kişinin ilk gördüğü bunlardır.
- Her güncellemeden sonra, özellikle tema ve eklenti güncellemelerinin ardından, birkaç sayfanın hreflang çıktısını kontrol edin.
Bu rutin yazı başına birkaç dakika sürer ve çok dilli sitelerin en yaygın sorununu önler: Diğer diller güncellenirken bir dilin sessizce geride kalması. Dil sayısı arttıkça bu listeyi bir yönetim raporuna dönüştürmek de kolaydır; grup anahtarı zaten her yazıda olduğu için ek bir veri modeli gerekmez.
Çeviri eklentisi ne zaman daha doğru seçimdir?
Eklentisiz yol; diller arasında içerik farklıysa, dilleri ayrı ekipler yönetiyorsa veya her URL üzerinde tam kontrol istiyorsanız iyi bir seçimdir. Aynı içerik birebir çevriliyorsa, editörler yan yana çeviri yapmak istiyorsa veya bir WooCommerce mağazasında ürünlerin, fiyatların ve ödeme adımlarının çevrilmesi gerekiyorsa genellikle eklenti daha doğru seçimdir. Kendi eklentimiz AYM Multilingual tam olarak bu ikinci grup için var; iki tür yapıyı da çok dilli WordPress hizmetimizde kuruyor ve bakımını yapıyoruz.
Hangi yolu seçerseniz seçin, arama motoru tarafı aynı şekilde çalışır: Ayrı URL'ler, karşılıklı hreflang ve tamamen çevrilmiş meta veriler. Bu kuralları ve en sık yapılan hataları hreflang nedir rehberimizde anlattık.
Sık sorulan sorular
WordPress hiç eklenti kullanmadan çok dilli olabilir mi?
Evet. Her dil için bir site kurulan WordPress Multisite, her dile ayrı URL, menü ve ayar sağlar. Çevirileri bağlamak ve hreflang basmak için yalnızca küçük bir koda, örneğin yukarıdaki gibi bir mu-plugin'e ihtiyaç duyarsınız.
Multisite SEO için uygun mu?
Uygun olabilir. Arama motorları her dil için net URL'lere, doğru ve karşılıklı hreflang'a ve gerçekten çevrilmiş içeriğe bakar. Multisite URL'leri sağlar; hreflang ve içerik kalitesi sizin uygulamanıza bağlıdır.
Mevcut bir siteyi Multisite'a dönüştürebilir miyim?
Evet, ama bunu bir taşıma gibi ele alın: Önce yedek alın, bir test kopyasında deneyin, mevcut URL'leri koruyun veya 301 ile yönlendirin ve kullandığınız her eklentinin Multisite'ı desteklediğini kontrol edin.
Bu yöntem WooCommerce ile çalışır mı?
Her dil sitesi kendi WooCommerce mağazasını çalıştırabilir, ancak ürünler, stok ve siparişler site başına ayrı olur. Birkaç dilde tek ve ortak bir katalog gerekiyorsa çeviri eklentisi genellikle daha basittir.
İlgili yazılar
WordPress ve çok dilli siteler
Yerelleştirme Nedir? Çeviriden Farkı ve Çok Dilli Sitede Uygulanması
Çeviri metni başka bir dile aktarır; yerelleştirme ise siteyi o pazarda yaşayan birine göre yeniden kurar. Farkı, kendi anahtar kelime araştırmamızdan örneklerle anlattık.
WordPress ve çok dilli siteler
WordPress Dil Ekleme: Mevcut Siteye İkinci Dili Adım Adım Eklemek
Mevcut WordPress sitenize İngilizce veya başka bir dil eklemek istiyorsunuz. Ayarlardaki “site dili” yetmez; doğru yapı, öncelik sırası ve SEO adımlarıyla nasıl ilerlenir?
WordPress ve çok dilli siteler
Dil Seçici Tasarımı: Kullanıcı Dostu, Erişilebilir ve SEO Uyumlu Dil Menüsü
Bayrak mı, dil adı mı? Sağ üst köşe mi, alt bilgi mi? Ziyaretçinin dilini bulup değiştirebildiği, erişilebilir ve arama motoru dostu bir dil seçicinin ilkeleri.
