Bir web sitesini birden fazla dilde yürütmek, çeviriden çok yönetimle ilgilidir: neyin çevrileceğine karar vermek, her sürümü birbiriyle senkron tutmak, doğru ziyaretçiye doğru dili sunmak ve tüm bunları içerik girişini bir eziyete dönüştürmeden yapmak. Drupal bunu çekirdek seviyesinde çözer; devlet kurumlarının, uluslararası organizasyonların ve onlarca dilde yayın yapan üniversitelerin Drupal'ı tercih etmesinin sebeplerinden biri de budur.
Bu rehberde Drupal'da çok dilli yönetimin gerçekte nasıl işlediğini ele alıyoruz: dört çekirdek modül, üç farklı çeviri türü, dil ekleme ve yönetme, Drupal'ın hangi dili sunacağına nasıl karar verdiği, hangi çeviri iş akışının hangi ekibe uygun olduğu ve çok dilli bir projeyi en sık raydan çıkaran hatalar.
Çoklu Dil Neden Drupal Çekirdeğinde Yer Alır?
Çok dilli özellik, Drupal'a sonradan takılan bir eklenti değildir — Drupal 8'den bu yana çekirdeğin parçasıdır ve Drupal 9, 10 ve 11 bunun üzerine inşa etmeye devam etmiştir. Bu önemli bir ayrımdır. Çok dilliliğin üçüncü taraf bir eklentiyle geldiği platformlarda her büyük güncelleme, çeviri katmanı ile platformun uyumsuz düşmesi riskini taşır. Drupal'da dil katmanı çekirdekle birlikte gelir ve bakımı yapılır; sistem, kutudan çıktığı hâliyle 100'ün üzerinde dili destekler.
Pratik sonucu şudur: bir Drupal sitesi ilk günden çok dilli olacak şekilde planlanabilir, sonradan eklemek zorunda kalınmaz. Kurulum sırasında bir temel dil seçmeniz istenir; İngilizce dışında bir dil seçerseniz Drupal ilgili modülleri otomatik etkinleştirir ve en güncel arayüz çevirilerini indirir. Mevcut bir sitede ise aynı yetenek, farklı bir araç setine geçmek değil, birkaç modülü açmak meselesidir.
Dört Çekirdek Çok Dilli Modül
Drupal'ın çok dilli sistemi dört çekirdek modüle dayanır. Yalnızca ilki kesin zorunludur, ancak pratikte çoğu site dördünü birden etkinleştirir. Bunları Extend (admin/modules) altında, Multilingual bölümünde açarsınız.
- Language: Temeldir. Sitenin hangi dilleri sunduğunu tanımlar, varsayılan dili belirler ve Drupal'ın hangi dili göstereceğine nasıl karar vereceğini kontrol eder. Bu modül olmadan çok dilli katmanda hiçbir şey çalışmaz.
- Content Translation: Editörlerin içerik varlıklarını — sayfalar, makaleler, taksonomi terimleri, özel bloklar, menü bağlantıları ve daha fazlası — her dile çevirmesini sağlar. Her dil sürümü; kendi alanları, URL'si ve yayın durumu olan ayrı bir varlıktır.
- Interface Translation: Drupal'dan, modüllerden ve temalardan gelen yerleşik metinleri çevirir: butonlar, form etiketleri, hata mesajları ve sistem metinleri. Drupal çekirdeği 100'ü aşkın dile çevrilmiş hâlde geldiği için, bir dil eklediğiniz anda bunun büyük kısmı hazır gelir. (Eski sürümlerde bu modülün adı "Locale" idi; bazı eski eğitimlerin bu ismi kullanmasının sebebi budur.)
- Configuration Translation: İçeriği değil, yapılandırmayı çevirir — site adı, alan etiketleri, görünümler (views), menüler, blok başlıkları ve sözlükler (vocabulary). Bu modül olmadan, içerik tamamen çevrilmiş olsa bile sitenin iskeleti tek dilde kalır ve bu, kullanıcı deneyimini sessizce bozar.
Bu üçünü ayırmanın pratik bir yolu: içerik editörlerinizin yazdığıdır, yapılandırma sitenin nasıl kurulduğudur, arayüz ise Drupal ve modüllerinin sağladığı metindir. Bir sitenin yarım çevrilmiş değil gerçekten yerelleştirilmiş hissettirmesi için üçünün de çevrilmesi gerekir.
Üç Tür Çeviri: İçerik, Arayüz ve Yapılandırma
Drupal çok dilli projesinde en sık kafa karışıklığı yaratan şey teknik bir ayar değil, belirli bir metnin üç çeviri sisteminden hangisine ait olduğunu bilmemektir. Bu zihinsel modeli doğru kurmak, çeviri seçeneğini yanlış yerde arayarak saatler kaybetmeyi önler.
- İçerik çevirisi editörlerin oluşturduğu her şeyi kapsar: içerik gövdeleri, başlıklar, görseller, taksonomi terimleri, özel bloklar. Modern Drupal'da bu alan (field) seviyesindedir — bir içerik tipinde hangi alanların çevrilebilir olduğunu siz seçersiniz; böylece ortak bir alan (örneğin bir ürün kodu) tüm dillerde aynı kalırken açıklama çevrilebilir.
- Arayüz çevirisi yazılıma gömülü metni kapsar. Bunu nadiren elle çevirirsiniz; dil indirmesiyle birlikte gelir ve yalnızca belirli bir metni değiştirmek istediğinizde Configuration → Regional and language → User interface translation altında ince ayarlanır.
- Yapılandırma çevirisi Drupal'ın yapılandırma sisteminde saklanan yapısal metni kapsar. Bunu ilgili yapılandırma sayfasındaki Translate sekmesinden ya da toplu olarak Configuration → Regional and language → Configuration translation altından çevirirsiniz.
Erkenden bilinmesi gereken operasyonel bir ayrıntı: arayüz çevirileri standart .po dosyaları olarak dışa/içe aktarılabilir, ancak yapılandırma çevirileri yalnızca çekirdekle bu şekilde taşınamaz — bunun için bir contrib modül gerekir. Çevirilerin Drupal dışında hazırlandığı bir projede bu fark, teslim sürecinizi doğrudan şekillendirir.
Adım Adım Dil Ekleme ve Yönetme
Dört modül etkinleştirildikten sonra yeni bir dili devreye almak basittir. Genel akış, her modern Drupal sürümünde aynıdır:
- Dili ekleyin: Configuration → Region and language → Languages (admin/config/regional/language) sayfasına gidip Add language'e tıklayın. Dili seçin, Add'e basın ve Drupal arayüz çevirilerini indirirken bekleyin. Ardından dil listesinde kullanıma hazır görünür.
- Neyin çevrilebilir olduğuna karar verin: Her içerik tipi altında çeviriyi etkinleştirin ve hangi alanların çevrilebilir, hangilerinin ortak olacağını seçin. Bunu bilinçli yapın — doğru alanları şimdi ayarlamak, ileride sancılı yeniden çalışmayı önler.
- İçeriği çevirin: Herhangi bir çevrilebilir varlığı açıp Translations sekmesinden her dilde bir sürüm ekleyin. Her sürümün kendi URL'si vardır ve kendi takvimiyle yayınlanabilir.
- Yapılandırma ve arayüzü çevirin: Site adını, menüleri ve görünümleri Configuration translation üzerinden yerelleştirin; sistem metinlerini Interface translation üzerinden geçersiz kılın.
- Dil seçici ekleyin: Dil seçici bloğunu yerleştirin ki ziyaretçiler sürümler arasında geçebilsin. Bayrak yerine dil adı kullanın — bayrak bir ülkeyi temsil eder, dili değil; birden çok ülkede konuşulan dillerde kullanıcıyı yanıltır.
Deneyimli Drupal ekiplerinin ortak tavsiyesi: ana diliniz artı bir ikincil dille başlayın, çeviri iş akışını baştan sona çalışır hâle getirin ve ancak ondan sonra yeni diller ekleyin. Süreci iki dilde kanıtlamak, altı dilde yapısal bir sorunu keşfetmekten çok daha ucuzdur.
Dil Belirleme (Language Negotiation): Drupal Hangi Dili Sunacağına Nasıl Karar Verir?
Dil belirleme, bir ziyaretçinin hangi dili göreceğini belirleyen çekirdek özelliktir ve doğru yapılandırılması çok dilli yönetimin merkezindedir. Drupal, hedeflenen dili birkaç sinyalden algılayabilir ve bunları sizin kontrol ettiğiniz bir sırayla uygular: URL (/tr gibi bir yol öneki ya da domain), kullanıcının hesap tercihi, tarayıcının dil ayarları, oturum ya da sabit bir varsayılan.
Çoğu site için URL tabanlı algılama doğru birincil yöntemdir — her dil sürümüne ayrı, paylaşılabilir ve indexlenebilir bir adres verir ve davranışı öngörülebilir kılar. Dil belirleme, içerik ile yönetim arayüzü için ayrı ayrı da ayarlanabilir; birçok ekip halka açık siteyi tamamen yerelleştirirken yönetim panelini editörleri için tek bir çalışma dilinde bırakmayı böyle yapar. Bu algılama yöntemlerinin sırası önemlidir: en belirgin ve bilinçli sinyali (URL) daha yumuşak olanların (tarayıcı varsayılanı) üstüne koyun ki bilinçli bir tercih her zaman kazansın.
Çeviri İş Akışı Seçimi
Drupal'ın çekirdek çeviri arayüzü küçük bir site için yeterlidir; ancak içerik hacmi ve ekip büyüdükçe, çok dilli sitenin güncel kalıp kalmayacağını asıl belirleyen şey iş akışı olur. Üç genel yaklaşım vardır ve doğru olanı ölçeğe ve çevirinin nereden geldiğine bağlıdır.
- Drupal içinde manuel çeviri: Editörler ve çevirmenler oturum açıp doğrudan yerleşik arayüzden çevirir. Hacmin düşük olduğu ve herkesin Drupal içinde çalıştığı küçük siteler için idealdir — örneğin iki dilde 20-30 sayfalık bir site.
- Çeviri dosyalarıyla dışa/içe aktarma: İçerik dışa aktarılır (yaygın olarak XLIFF), çevirmenlere gönderilir ve geri içe aktarılır. Drupal kullanmayan dış çevirmenlerle çalışan ekipler ve öngörülebilir gruplar hâlinde güncellenen içerik için uygundur.
- TMGMT (Translation Management Tool): Çeviriyi Drupal içinde yönetilen bir sürece dönüştüren contrib modül — çeviri işleri oluşturma, bunları iç ekibe ya da dış sağlayıcılara atama, durum takibi ve servisler ile makine çevirisi motorlarıyla entegrasyon. Orta-büyük siteler ve yüksek içerik hacmi için standart tercihtir.
İki ekleme bu iş akışlarını daha sağlam kılar. Content Moderation, bir çevirinin taslaktan incelemeye ve yayına nasıl geçeceğini tanımlamanıza olanak tanır; böylece makine çevirisi yapılmış ya da yarım bir sürüm yanlışlıkla yayına çıkmaz. Translation Views ya da çeviri panelleri ise kapsamı izlemenizi sağlar — sitenin genelinde neyin çevrildiği, neyin sürdüğü ve neyin eksik olduğu. Çoğu orta-büyük proje için ideal nokta, TMGMT artı insan incelemesinden oluşan hibrit yaklaşımdır: hız için otomasyon, önemli sayfalarda kalite için bir insan.
Sık Yapılan Çok Dilli Hatalar ve Bunlardan Kaçınma Yolları
Drupal'da çok dilli sorunların çoğu, platform sınırlarından değil, önlenebilir birkaç karardan kaynaklanır:
- Alan çevrilebilirliğine çok geç karar vermek: Çeviriler zaten varken hangi alanların çevrilebilir olduğunu değiştirmek veri kaybına yol açabilir. Çevrilebilir ve ortak alanları, büyük ölçekli çeviri başlamadan önce modelleyin.
- İçeriği çevirip yapılandırmayı unutmak: Makaleleri tamamen çevrilmiş ama menüsü, site adı ya da görünümü çevrilmemiş bir site bozuk hissettirir. Yapılandırma çevirisini sonradan akla gelen bir iş değil, işin parçası olarak görün.
- Ham makine çevirisini yayınlamak: Otomatik çeviri iyi bir başlangıç noktasıdır ama bitiş çizgisi değil; incelenmemiş çıktı kötü okunabilir ve güveni zedeler. Önemli her şeyi insan incelemesinden geçirin.
- Diller için bayrak kullanmak: Bayrak bir ülke simgesidir, dil değil. Birden çok ülkede konuşulan bir dilin kullanıcılarını şaşırtmamak için seçiciyi dil adlarıyla etiketleyin.
- Eksik çeviri için yedek plan olmaması: Bir sayfanın çevirisi olmadığında ne olacağına karar verin — varsayılan dile düşsün ya da gizlensin — ki ziyaretçi boş veya bozuk bir sayfada kalmasın.
- Çeviri widget'larını dikkatsizce yeniden yapılandırmak: Paragraphs gibi yapılandırılmış içerikte, çeviriler varken asimetrik çeviriye geçmek veri kaybettirebilir. Yapısal değişiklikleri önce bir kopyada test edin.
İyi yapıldığında çok dilli yönetim büyük ölçüde disiplin işidir: içeriği bir kez modelleyin, üç katmanı da çevirin ve her dile öngörülebilir bir URL ile net bir iş akışı verin. Bunun SEO tarafını doğru kurmak — hreflang, URL yapısı ve pazar bazlı anahtar kelimeler — ilişkili ama ayrı bir disiplindir; bunu Drupal'da çok dilli SEO rehberimizde ele alıyoruz ve bu, Drupal SEO yazımızda anlatılan aynı çekirdek dil katmanının üzerine kurulur.
Drupal Çoklu Dil Yönetimi Hakkında Sıkça Sorulan Sorular
Contrib modül gerekir mi, yoksa çekirdek yeterli mi?
Çoğu site için dört çekirdek modül; dil eklemek ve içerik, arayüz, yapılandırmayı çevirmek için yeterlidir. İhtiyaçlar büyüdükçe contrib modüllere yönelirsiniz: yönetilen çeviri iş akışları ve sağlayıcı/makine çevirisi entegrasyonu için TMGMT, daha dostane bir seçici için dil seçici eklentisi ya da çevirilerin Drupal dışında hazırlandığı durumlar için yapılandırma çevirisi içe/dışa aktarma modülü. Çekirdekle başlayın, aracı yalnızca gerçek bir ihtiyaç belirdiğinde ekleyin.
Tek çok dilli site mi, multisite kurulumu mu kullanmalıyım?
Çoğu kurum için dil sürümleri olan tek bir Drupal kurulumu (örneğin /tr ve /en) daha doğru tercihtir: tek kod tabanı, ortak içerik yapıları ve merkezi güncellemeler. Multisite kurulumu ise esas olarak her pazarın gerçek operasyonel ayrışmaya ihtiyaç duyduğunda anlam kazanır — farklı ekipler, farklı içerik, farklı yönetişim. Tek site modeli yönetimi sadeleştirir ve otoriteyi tek noktada toplar; bu yüzden çoğu çok dilli proje için varsayılan öneri budur.
Yayın sonrası hangi alanların çevrilebilir olduğunu değiştirebilir miyim?
Değiştirebilirsiniz, ancak çeviriler zaten varsa bu risk taşır — bir alanın çevrilebilirliğini değiştirmek veri kaybına yol açabilir. Güvenli yaklaşım, çevrilebilir ve ortak alanlara içerik modelleme aşamasında, büyük ölçekli çeviriden önce karar vermektir. İleride kaçınılmaz bir değişiklik gerekirse, önce bir staging kopyasında test edip yedek alın; böylece üretime uygulamadan önce mevcut çevirilerin etkilenmediğini doğrulayabilirsiniz.